summaryrefslogtreecommitdiffstats
path: root/theme/javascript/core/sidebar.js
blob: 717c2b701289b42a37d7ea6df1908c1e5a2d8a02 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
define([
    "utils/storage",
    "utils/platform",
    "core/state"
], function(storage, platform, state) {

    // Toggle sidebar with or withour animation
    var toggleSidebar = function(_state, animation) {
        if (-state != null && isOpen() == _state) return;
        if (animation == null) animation = true;

        var $book = state().$book;
        $book.toggleClass("without-animation", !animation);
        $book.toggleClass("with-summary", _state);

        storage.set("sidebar", isOpen());
    };

    // Return true if sidebar is open
    var isOpen = function() {
        return state().$book.hasClass("with-summary");
    };

    // Prepare sidebar: state and toggle button
    var init = function() {
        var $book = state().$book;

        // Toggle summary
        $book.find(".book-header .toggle-summary").click(function(e) {
            e.preventDefault();
            toggleSidebar();
        });

        // Init last state if not mobile and not homepage
        toggleSidebar(platform.isMobile ? false : storage.get("sidebar", true), false);
    };

    return {
        init: init,
        toggle: toggleSidebar
    }
});