forked from FrontendMatter/bootstrap-layout
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsidebar-toggle.js
More file actions
45 lines (38 loc) · 1.08 KB
/
Copy pathsidebar-toggle.js
File metadata and controls
45 lines (38 loc) · 1.08 KB
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
import { Sidebar } from './sidebar'
const SIDEBAR_TOGGLE_SELECTOR = '[data-toggle="sidebar"]'
export class SidebarToggle {
/**
* SidebarToggle constructor
* @return {SidebarToggle} The SidebarToggle instance
*/
constructor () {
this.sidebar = new Sidebar()
jQuery(SIDEBAR_TOGGLE_SELECTOR).each((index, el) => this.init(el))
}
/**
* Get a jQuery element
* @param {String|jQuery} elementOrSelector jQuery element or DOM selector
* @return {jQuery} A jQuery element
*/
_element (elementOrSelector) {
return elementOrSelector instanceof jQuery ? elementOrSelector : jQuery(elementOrSelector)
}
/**
* Click event listener
* @param {MouseEvent} e The Mouse Event
*/
_onClick (e) {
e.stopPropagation()
const sidebar = jQuery(e.currentTarget).data('target')
this.sidebar.toggle(sidebar)
}
/**
* Initialize a sidebar toggle element
* @param {String|jQuery} el jQuery element or DOM selector
*/
init (el) {
this._element(el).on('click', e => this._onClick(e))
}
}
// export instance
export let sidebarToggle = new SidebarToggle()