summaryrefslogtreecommitdiffstats
path: root/packages/gitbook-plugin-search/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'packages/gitbook-plugin-search/src/components')
-rw-r--r--packages/gitbook-plugin-search/src/components/Input.js36
-rw-r--r--packages/gitbook-plugin-search/src/components/Results.js30
2 files changed, 31 insertions, 35 deletions
diff --git a/packages/gitbook-plugin-search/src/components/Input.js b/packages/gitbook-plugin-search/src/components/Input.js
index c4d1288..71f8813 100644
--- a/packages/gitbook-plugin-search/src/components/Input.js
+++ b/packages/gitbook-plugin-search/src/components/Input.js
@@ -3,45 +3,33 @@ const { React } = GitBook;
const search = require('../actions/search');
-const DEBOUNCE_MS = 600;
-
const SearchInput = React.createClass({
propTypes: {
+ query: React.PropTypes.string,
dispatch: React.PropTypes.func
},
- onUpdateQuery(q) {
+ onChange(event) {
const { dispatch } = this.props;
-
- dispatch(search.query(q));
- },
-
- onKeyDown(event) {
const { value } = event.currentTarget;
- if (this.debouncedSearch) {
- clearTimeout(this.debouncedSearch);
- }
-
- this.debouncedSearch = setTimeout(() => {
- this.debouncedSearch = null;
- this.onUpdateQuery(value);
- }, DEBOUNCE_MS);
- },
-
- componentWillUnmount() {
- if (this.debouncedSearch) {
- clearTimeout(this.debouncedSearch);
- }
+ dispatch(search.query(value));
},
render() {
+ const { query } = this.props;
+
return (
<div className="Search/Input">
- <input type="text" placeholder="" onKeyDown={this.onKeyDown} />
+ <input type="text" value={query} onChange={this.onChange} />
</div>
);
}
});
-module.exports = GitBook.connect(SearchInput);
+const mapStateToProps = state => {
+ const { query } = state.search;
+ return { query };
+};
+
+module.exports = GitBook.connect(SearchInput, mapStateToProps);
diff --git a/packages/gitbook-plugin-search/src/components/Results.js b/packages/gitbook-plugin-search/src/components/Results.js
index 3f53741..dd2bb9c 100644
--- a/packages/gitbook-plugin-search/src/components/Results.js
+++ b/packages/gitbook-plugin-search/src/components/Results.js
@@ -20,26 +20,34 @@ const Result = React.createClass({
const SearchResults = React.createClass({
propTypes: {
- results: GitBook.Shapes.list
+ query: React.PropTypes.string,
+ results: GitBook.Shapes.list,
+ children: React.PropTypes.node
},
render() {
- const { results } = this.props;
+ const { query, results, children } = this.props;
+
+ if (!query) {
+ return React.Children.only(children);
+ }
return (
- <div className="Search/Results">
- {results.map((result, i) => {
- return <Result key={i} result={result} />;
- })}
+ <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>
);
}
});
-function mapStateToProps(state) {
- return {
- results: state.search.results
- };
-}
+const mapStateToProps = (state) => {
+ const { results, query } = state.search;
+ return { results, query };
+};
module.exports = GitBook.connect(SearchResults, mapStateToProps);