summaryrefslogtreecommitdiffstats
path: root/theme/javascript/sidebar.js
diff options
context:
space:
mode:
Diffstat (limited to 'theme/javascript/sidebar.js')
-rw-r--r--theme/javascript/sidebar.js51
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
+};