diff options
-rw-r--r-- | packages/gitbook-core/src/components/Link.js | 1 | ||||
-rw-r--r-- | packages/gitbook-core/src/models/File.js | 12 | ||||
-rw-r--r-- | packages/gitbook-core/src/models/Readme.js | 21 | ||||
-rw-r--r-- | packages/gitbook-core/src/reducers/readme.js | 20 | ||||
-rw-r--r-- | packages/gitbook-core/src/shapes/Readme.js | 11 | ||||
-rw-r--r-- | packages/gitbook-core/src/shapes/index.js | 1 | ||||
-rw-r--r-- | packages/gitbook-plugin-search/src/actions/search.js | 1 | ||||
-rw-r--r-- | packages/gitbook-plugin-theme-default/less/Toolbar.less | 24 | ||||
-rw-r--r-- | packages/gitbook-plugin-theme-default/src/components/Body.js | 7 | ||||
-rw-r--r-- | packages/gitbook-plugin-theme-default/src/components/Theme.js | 9 | ||||
-rw-r--r-- | packages/gitbook-plugin-theme-default/src/components/Toolbar.js | 33 |
11 files changed, 100 insertions, 40 deletions
diff --git a/packages/gitbook-core/src/components/Link.js b/packages/gitbook-core/src/components/Link.js index 145486e..65f4eb5 100644 --- a/packages/gitbook-core/src/components/Link.js +++ b/packages/gitbook-core/src/components/Link.js @@ -28,7 +28,6 @@ const Link = React.createClass({ } href = currentFile.relative(href); - return <a href={href} {...props}>{children}</a>; } }); diff --git a/packages/gitbook-core/src/models/File.js b/packages/gitbook-core/src/models/File.js index 88138c3..3ec6130 100644 --- a/packages/gitbook-core/src/models/File.js +++ b/packages/gitbook-core/src/models/File.js @@ -32,12 +32,22 @@ class File extends Record(DEFAULTS) { ); } + /** + * Return true if file is an instance of File + * @param {Mixed} file + * @return {Boolean} + */ static is(file) { return (file instanceof File); } + /** + * Create a file instance + * @param {Mixed|File} file + * @return {File} + */ static create(file) { - return file instanceof File ? + return File.is(file) ? file : new File(file); } } diff --git a/packages/gitbook-core/src/models/Readme.js b/packages/gitbook-core/src/models/Readme.js new file mode 100644 index 0000000..f275ca2 --- /dev/null +++ b/packages/gitbook-core/src/models/Readme.js @@ -0,0 +1,21 @@ +const { Record } = require('immutable'); +const File = require('./File'); + +const DEFAULTS = { + file: new File() +}; + +class Readme extends Record(DEFAULTS) { + constructor(state = {}) { + super({ + file: File.create(state.file) + }); + } + + static create(state) { + return state instanceof Readme ? + state : new Readme(state); + } +} + +module.exports = Readme; diff --git a/packages/gitbook-core/src/reducers/readme.js b/packages/gitbook-core/src/reducers/readme.js index d88f9ec..9e8656a 100644 --- a/packages/gitbook-core/src/reducers/readme.js +++ b/packages/gitbook-core/src/reducers/readme.js @@ -1,21 +1,5 @@ -const { Record } = require('immutable'); -const File = require('../models/file'); - -class ReadmeState extends Record({ - file: new File() -}) { - constructor(state = {}) { - super({ - file: new File(state.file) - }); - } - - static create(state) { - return state instanceof ReadmeState ? - state : new ReadmeState(state); - } -} +const Readme = require('../models/Readme'); module.exports = (state, action) => { - return ReadmeState.create(state); + return Readme.create(state); }; diff --git a/packages/gitbook-core/src/shapes/Readme.js b/packages/gitbook-core/src/shapes/Readme.js new file mode 100644 index 0000000..8414f05 --- /dev/null +++ b/packages/gitbook-core/src/shapes/Readme.js @@ -0,0 +1,11 @@ +const React = require('react'); + +const { + shape +} = React.PropTypes; + +const File = require('./File'); + +module.exports = shape({ + file: File.isRequired +}); diff --git a/packages/gitbook-core/src/shapes/index.js b/packages/gitbook-core/src/shapes/index.js index c372c25..b019756 100644 --- a/packages/gitbook-core/src/shapes/index.js +++ b/packages/gitbook-core/src/shapes/index.js @@ -8,6 +8,7 @@ module.exports = { Context: require('./Context'), Page: require('./Page'), File: require('./File'), + Readme: require('./Readme'), Summary: require('./Summary'), SummaryPart: require('./SummaryPart'), SummaryArticle: require('./SummaryArticle') diff --git a/packages/gitbook-plugin-search/src/actions/search.js b/packages/gitbook-plugin-search/src/actions/search.js index 6cea419..861db84 100644 --- a/packages/gitbook-plugin-search/src/actions/search.js +++ b/packages/gitbook-plugin-search/src/actions/search.js @@ -73,7 +73,6 @@ function handleQuery(q) { function refresh() { return (dispatch, getState) => { const q = getState().search.query; - console.log('refresh search with', q); if (q) { dispatch(handleQuery(q)); } diff --git a/packages/gitbook-plugin-theme-default/less/Toolbar.less b/packages/gitbook-plugin-theme-default/less/Toolbar.less index b396300..8c59d96 100644 --- a/packages/gitbook-plugin-theme-default/less/Toolbar.less +++ b/packages/gitbook-plugin-theme-default/less/Toolbar.less @@ -1,3 +1,27 @@ .Toolbar { + .Toolbar-Title { + padding: 0px 20px; + margin: 0; + font-size: 20px; + font-weight: 200; + text-align: center; + line-height: 50px; + opacity: 0; + .transition(~"opacity ease .2s"); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + color: @button-hover-color; + a, a:hover { + text-decoration: none; + color: inherit; + } + } + + &:hover { + .Toolbar-Title { + opacity: 1; + } + } } diff --git a/packages/gitbook-plugin-theme-default/src/components/Body.js b/packages/gitbook-plugin-theme-default/src/components/Body.js index b4d9fe6..4f51f0f 100644 --- a/packages/gitbook-plugin-theme-default/src/components/Body.js +++ b/packages/gitbook-plugin-theme-default/src/components/Body.js @@ -6,15 +6,16 @@ const Toolbar = require('./Toolbar'); const Body = React.createClass({ propTypes: { - page: GitBook.Shapes.Page + page: GitBook.Shapes.Page, + readme: GitBook.Shapes.Readme }, render() { - const { page } = this.props; + const { page, readme } = this.props; return ( <div className="Body page-wrapper"> - <Toolbar /> + <Toolbar title={page.title} readme={readme} /> <Page page={page} /> </div> ); diff --git a/packages/gitbook-plugin-theme-default/src/components/Theme.js b/packages/gitbook-plugin-theme-default/src/components/Theme.js index 25f8e1d..bf00502 100644 --- a/packages/gitbook-plugin-theme-default/src/components/Theme.js +++ b/packages/gitbook-plugin-theme-default/src/components/Theme.js @@ -9,13 +9,14 @@ const Theme = React.createClass({ // State page: GitBook.Shapes.Page, summary: GitBook.Shapes.Summary, + readme: GitBook.Shapes.Readme, sidebar: React.PropTypes.object, // Other props children: React.PropTypes.node }, render() { - const { page, summary, children, sidebar } = this.props; + const { page, summary, children, sidebar, readme } = this.props; return ( <GitBook.FlexLayout column className="GitBook book"> @@ -32,7 +33,7 @@ const Theme = React.createClass({ </GitBook.FlexBox> ) : null} <GitBook.FlexBox col={sidebar.open ? 9 : 12}> - <Body page={page} /> + <Body page={page} readme={readme} /> </GitBook.FlexBox> </GitBook.FlexLayout> </GitBook.FlexBox> @@ -42,6 +43,6 @@ const Theme = React.createClass({ } }); -module.exports = GitBook.connect(Theme, ({page, summary, sidebar}) => { - return { page, summary, sidebar }; +module.exports = GitBook.connect(Theme, ({page, summary, sidebar, readme}) => { + return { page, summary, sidebar, readme }; }); diff --git a/packages/gitbook-plugin-theme-default/src/components/Toolbar.js b/packages/gitbook-plugin-theme-default/src/components/Toolbar.js index ca6b7f3..cb90549 100644 --- a/packages/gitbook-plugin-theme-default/src/components/Toolbar.js +++ b/packages/gitbook-plugin-theme-default/src/components/Toolbar.js @@ -5,7 +5,9 @@ const sidebar = require('../actions/sidebar'); const Toolbar = React.createClass({ propTypes: { - dispatch: React.PropTypes.func + title: React.PropTypes.string.isRequired, + dispatch: React.PropTypes.func, + readme: GitBook.Shapes.Readme }, onToggle() { @@ -14,18 +16,25 @@ const Toolbar = React.createClass({ }, render() { + const { title, readme } = this.props; + return ( - <div className="Toolbar book-toolbar"> - <GitBook.Button onClick={this.onToggle}> - <GitBook.Icon id="align-justify" /> - </GitBook.Button> - <div className="Toolbar-left"> - <GitBook.InjectedComponentSet matching={{ role: 'toolbar:buttons:left' }} /> - </div> - <div className="Toolbar-right"> - <GitBook.InjectedComponentSet matching={{ role: 'toolbar:buttons:right' }} /> - </div> - </div> + <GitBook.FlexLayout className="Toolbar"> + <GitBook.FlexBox className="Toolbar-left"> + <GitBook.Button onClick={this.onToggle}> + <GitBook.Icon id="align-justify" /> + </GitBook.Button> + <GitBook.InjectedComponentSet align="flex-start" matching={{ role: 'toolbar:buttons:left' }} /> + </GitBook.FlexBox> + <GitBook.FlexBox auto> + <h1 className="Toolbar-Title"> + <GitBook.Link to={readme.file}>{title}</GitBook.Link> + </h1> + </GitBook.FlexBox> + <GitBook.FlexBox className="Toolbar-right"> + <GitBook.InjectedComponentSet align="flex-end" matching={{ role: 'toolbar:buttons:right' }} /> + </GitBook.FlexBox> + </GitBook.FlexLayout> ); } }); |