diff options
author | Samy Pessé <samypesse@gmail.com> | 2016-12-22 10:18:38 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-22 10:18:38 +0100 |
commit | 194ebc3da9641ff96f083f9d8ab43c2d27944f9a (patch) | |
tree | c50988f32ccf18df93ae7ab40be78e9459642818 /packages/gitbook-plugin-sharing/src/components/ShareButton.js | |
parent | 64ccb6b00b4b63fa0e516d4e35351275b34f8c07 (diff) | |
parent | 16af264360e48e8a833e9efa9ab8d194574dbc70 (diff) | |
download | gitbook-194ebc3da9641ff96f083f9d8ab43c2d27944f9a.zip gitbook-194ebc3da9641ff96f083f9d8ab43c2d27944f9a.tar.gz gitbook-194ebc3da9641ff96f083f9d8ab43c2d27944f9a.tar.bz2 |
Merge pull request #1543 from GitbookIO/dream
React for rendering website with plugins
Diffstat (limited to 'packages/gitbook-plugin-sharing/src/components/ShareButton.js')
-rw-r--r-- | packages/gitbook-plugin-sharing/src/components/ShareButton.js | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/packages/gitbook-plugin-sharing/src/components/ShareButton.js b/packages/gitbook-plugin-sharing/src/components/ShareButton.js new file mode 100644 index 0000000..8983423 --- /dev/null +++ b/packages/gitbook-plugin-sharing/src/components/ShareButton.js @@ -0,0 +1,47 @@ +const GitBook = require('gitbook-core'); +const { React, Dropdown, Backdrop } = GitBook; + +const SITES = require('../SITES'); + +// Share button with dropdown list of sites +const ShareButton = React.createClass({ + propTypes: { + siteIds: React.PropTypes.arrayOf(React.PropTypes.string).isRequired, + onShare: React.PropTypes.func.isRequired + }, + + getInitialState() { + return { open: false }; + }, + + onToggle() { + const { open } = this.state; + this.setState({ open: !open }); + }, + + render() { + const { siteIds, onShare } = this.props; + const { open } = this.state; + + return ( + <Dropdown.Container> + {open ? <Backdrop onClose={this.onToggle} /> : null} + + <GitBook.Button onClick={this.onToggle}> + <GitBook.Icon id="share-alt" /> + </GitBook.Button> + + {open ? ( + <Dropdown.Menu> + {siteIds.map((id) => ( + <Dropdown.ItemLink onClick={() => onShare(SITES[id])} key={id}> + {SITES[id].label} + </Dropdown.ItemLink> + ))} + </Dropdown.Menu>) : null} + </Dropdown.Container> + ); + } +}); + +module.exports = ShareButton; |