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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
define([
"utils/storage",
"utils/platform",
"core/state",
"core/search"
], function(storage, platform, state, search) {
var $summary = state.$book.find(".book-summary");
var $searchInput = $summary.find(".book-search input")
// Toggle sidebar with or withour animation
var toggleSidebar = function(_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());
};
// Toggle search
var toggleSearch = function(_state) {
if (state != null && isSearchOpen() == _state) return;
$summary.toggleClass("with-search", _state);
// If search bar is open: focus input
if (isSearchOpen()) {
$searchInput.focus();
} else {
}
};
// Return true if sidebar is open
var isOpen = function() {
return state.$book.hasClass("with-summary");
};
// Return true if search bar is open
var isSearchOpen = function() {
return $summary.hasClass("with-search");
};
// Prepare sidebar: state and toggle button
var init = function() {
// Toggle summary
state.$book.find(".book-header .toggle-summary").click(function(e) {
e.preventDefault();
toggleSidebar();
});
// Init last state if not mobile
if (!platform.isMobile) {
toggleSidebar(storage.get("sidebar", true), false);
}
// Toggle search
state.$book.find(".book-header .toggle-search").click(function(e) {
e.preventDefault();
toggleSearch();
});
$searchInput.keyup(function(e) {
var key = (e.keyCode ? e.keyCode : e.which);
var q = $(this).val();
if (key == 27) {
e.preventDefault();
toggleSearch(false);
return;
}
console.log("search", q);
});
};
return {
init: init,
toggle: toggleSidebar,
toggleSearch: toggleSearch
}
});
|