diff options
Diffstat (limited to 'theme/javascript/sidebar.js')
-rw-r--r-- | theme/javascript/sidebar.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/theme/javascript/sidebar.js b/theme/javascript/sidebar.js new file mode 100644 index 0000000..d381822 --- /dev/null +++ b/theme/javascript/sidebar.js @@ -0,0 +1,51 @@ +var $ = require('jquery'); +var _ = require('lodash'); + +var storage = require('./storage'); +var platform = require('./platform'); +var state = require('./state'); + + +// Toggle sidebar with or withour animation +function toggleSidebar(_state, animation) { + if (state != null && isOpen() == _state) return; + if (animation == null) animation = true; + + state.$book.toggleClass('without-animation', !animation); + state.$book.toggleClass('with-summary', _state); + + storage.set('sidebar', isOpen()); +} + +// Return true if sidebar is open +function isOpen() { + return state.$book.hasClass('with-summary'); +} + +// Prepare sidebar: state and toggle button +function init() { + // Init last state if not mobile + if (!platform.isMobile) { + toggleSidebar(storage.get('sidebar', true), false); + } +} + +// Filter summary with a list of path +function filterSummary(paths) { + var $summary = $('.book-summary'); + + $summary.find('li').each(function() { + var path = $(this).data('path'); + var st = paths == null || _.contains(paths, path); + + $(this).toggle(st); + if (st) $(this).parents('li').show(); + }); +} + +module.exports = { + init: init, + isOpen: isOpen, + toggle: toggleSidebar, + filter: filterSummary +}; |