diff options
author | Samy Pessé <samypesse@gmail.com> | 2015-10-06 09:42:49 +0200 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2015-10-06 09:42:49 +0200 |
commit | ce1e0e187339976fc3cae7ef70bcfdd0eaf68981 (patch) | |
tree | c71ab2b8badd7a54759790bde083cab721796d92 /theme/javascript/sidebar.js | |
parent | bcb224d1cb0add4285538f03956f6f6a1574e49a (diff) | |
parent | c2775b3b63e92a7047f019a9d56851ce4fdd6c02 (diff) | |
download | gitbook-ce1e0e187339976fc3cae7ef70bcfdd0eaf68981.zip gitbook-ce1e0e187339976fc3cae7ef70bcfdd0eaf68981.tar.gz gitbook-ce1e0e187339976fc3cae7ef70bcfdd0eaf68981.tar.bz2 |
Merge pull request #964 from GitbookIO/features/plugin_api
Better APIs for Plugins
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 +}; |