summaryrefslogtreecommitdiffstats
path: root/packages/gitbook-plugin-search/src/components/Results.js
blob: dd2bb9c6c90cd1940b8d75f75086a79a59394103 (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
48
49
50
51
52
53
const GitBook = require('gitbook-core');
const { React } = GitBook;

const Result = React.createClass({
    propTypes: {
        result: React.PropTypes.object
    },

    render() {
        const { result } = this.props;

        return (
            <div className="Search/Result">
                <h3>{result.title}</h3>
                <p>{result.body}</p>
            </div>
        );
    }
});

const SearchResults = React.createClass({
    propTypes: {
        query:    React.PropTypes.string,
        results:  GitBook.Shapes.list,
        children: React.PropTypes.node
    },

    render() {
        const { query, results, children } = this.props;

        if (!query) {
            return React.Children.only(children);
        }

        return (
            <div className="Search/ResultsContainer">
                <h1>Results for "{query}"</h1>
                <div className="Search/Results">
                    {results.map((result, i) => {
                        return <Result key={i} result={result} />;
                    })}
                </div>
            </div>
        );
    }
});

const mapStateToProps = (state) => {
    const { results, query } = state.search;
    return { results, query };
};

module.exports = GitBook.connect(SearchResults, mapStateToProps);