summaryrefslogtreecommitdiffstats
path: root/theme/javascript/core/search.js
diff options
context:
space:
mode:
Diffstat (limited to 'theme/javascript/core/search.js')
-rw-r--r--theme/javascript/core/search.js46
1 files changed, 44 insertions, 2 deletions
diff --git a/theme/javascript/core/search.js b/theme/javascript/core/search.js
index f38e86f..9202f04 100644
--- a/theme/javascript/core/search.js
+++ b/theme/javascript/core/search.js
@@ -2,8 +2,11 @@ define([
"jQuery",
"lodash",
"lunr",
-], function($, _, lunr) {
+ "core/state",
+ "core/sidebar"
+], function($, _, lunr, state, sidebar) {
var index = null;
+ var $searchInput = sidebar.$el.find(".book-search input");
// Load complete index
var loadIndex = function() {
@@ -29,13 +32,52 @@ define([
return results;
};
+ // Toggle search bar
+ var toggleSearch = function(_state) {
+ if (state != null && isSearchOpen() == _state) return;
+
+
+ sidebar.$el.toggleClass("with-search", _state);
+
+ // If search bar is open: focus input
+ if (isSearchOpen()) {
+ $searchInput.focus();
+ } else {
+ $searchInput.blur();
+ }
+ };
+
+ // Return true if search bar is open
+ var isSearchOpen = function() {
+ return sidebar.$el.hasClass("with-search");
+ };
+
var init = function() {
loadIndex();
+
+ // Toggle search
+ state.$book.find(".book-header .toggle-search").click(function(e) {
+ e.preventDefault();
+ toggleSearch();
+ });
+
+ $searchInput.keyup(function(e) {
+ var key = (e.keyCode ? e.keyCode : e.which);
+ var q = $(this).val();
+
+ if (key == 27) {
+ e.preventDefault();
+ toggleSearch(false);
+ return;
+ }
+ console.log("search", q);
+ });
};
return {
init: init,
- search: search
+ search: search,
+ toggle: toggleSearch
};
}); \ No newline at end of file