summaryrefslogtreecommitdiffstats
path: root/packages/gitbook-plugin-search
diff options
context:
space:
mode:
Diffstat (limited to 'packages/gitbook-plugin-search')
-rw-r--r--packages/gitbook-plugin-search/src/actions/search.js15
-rw-r--r--packages/gitbook-plugin-search/src/index.js13
2 files changed, 25 insertions, 3 deletions
diff --git a/packages/gitbook-plugin-search/src/actions/search.js b/packages/gitbook-plugin-search/src/actions/search.js
index 7d42917..b4f811e 100644
--- a/packages/gitbook-plugin-search/src/actions/search.js
+++ b/packages/gitbook-plugin-search/src/actions/search.js
@@ -8,14 +8,24 @@ const TYPES = require('./types');
* @return {Action}
*/
function query(q) {
+ return (dispatch, getState, { Navigation }) => {
+ dispatch(Navigation.updateQuery({ q }));
+ };
+}
+
+
+/**
+ * Update results for a query
+ * @param {String} q
+ * @return {Action}
+ */
+function handleQuery(q) {
if (!q) {
return clear();
}
return (dispatch, getState, { Navigation }) => {
const { handlers } = getState().search;
-
- dispatch(Navigation.updateQuery({ q }));
dispatch({ type: TYPES.START, query: q });
return Promise.reduce(
@@ -64,6 +74,7 @@ function unregisterHandler(name) {
module.exports = {
clear,
query,
+ handleQuery,
registerHandler,
unregisterHandler
};
diff --git a/packages/gitbook-plugin-search/src/index.js b/packages/gitbook-plugin-search/src/index.js
index f08d5d6..05c2056 100644
--- a/packages/gitbook-plugin-search/src/index.js
+++ b/packages/gitbook-plugin-search/src/index.js
@@ -5,8 +5,19 @@ const SearchResults = require('./components/Results');
const reducers = require('./reducers');
const Search = require('./actions/search');
+const onLocationChange = (location, dispatch) => {
+ const { query } = location;
+ const q = query.get('q');
+
+ dispatch(Search.handleQuery(q));
+};
+
module.exports = GitBook.createPlugin({
- init: (dispatch, getState, { Components }) => {
+ init: (dispatch, getState, { Navigation, Components }) => {
+ // Register the navigation handler
+ dispatch(Navigation.listen(onLocationChange));
+
+ // Register components
dispatch(Components.registerComponent(SearchInput, { role: 'search:input' }));
dispatch(Components.registerComponent(SearchResults, { role: 'search:results' }));
},