summaryrefslogtreecommitdiffstats
path: root/packages/gitbook-plugin-sharing/src/components/ShareButton.js
blob: cd55169b885409db6a292e68f0e94ed60084eec4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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.Item onClick={() => onShare(SITES[id])} key={id}>
                                {SITES[id].label}
                            </Dropdown.Item>
                        ))}
                    </Dropdown.Menu>) : null}
            </Dropdown.Container>
        );
    }
});

module.exports = ShareButton;