diff options
author | Samy Pessé <samypesse@gmail.com> | 2015-10-05 16:47:19 +0200 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2015-10-05 16:47:19 +0200 |
commit | 3d1f057373836092623766809bbe0551b56b50b6 (patch) | |
tree | fa6ccf99f6c7611e0b9ecbdf045a280f68795dd6 /theme/javascript/sidebar.js | |
parent | 0679807517f2b53954b24434bbf7a847fe833c01 (diff) | |
download | gitbook-3d1f057373836092623766809bbe0551b56b50b6.zip gitbook-3d1f057373836092623766809bbe0551b56b50b6.tar.gz gitbook-3d1f057373836092623766809bbe0551b56b50b6.tar.bz2 |
Switch to gulp/browserify
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 +}; |