diff options
Diffstat (limited to 'theme/javascript/core/search.js')
-rw-r--r-- | theme/javascript/core/search.js | 46 |
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 |