added ability for auto collapse sidebar option

This commit is contained in:
REJack
2019-06-05 14:02:11 +02:00
parent 42568b9b8d
commit 9c640e0f6f
7 changed files with 85 additions and 22 deletions

View File

@@ -22,6 +22,7 @@ const PushMenu = (($) => {
}
const Default = {
autoCollapseSize: false,
screenCollapseSize: 768
}
@@ -51,6 +52,8 @@ const PushMenu = (($) => {
this._element = element
this._options = $.extend({}, Default, options)
this._init()
if (!$(Selector.OVERLAY).length) {
this._addOverlay()
}
@@ -72,23 +75,48 @@ const PushMenu = (($) => {
$(this._element).trigger(collapsedEvent)
}
toggle() {
let isShown
isShown() {
if ($(window).width() >= this._options.screenCollapseSize) {
isShown = !$(Selector.BODY).hasClass(ClassName.COLLAPSED)
return !$(Selector.BODY).hasClass(ClassName.COLLAPSED)
} else {
isShown = $(Selector.BODY).hasClass(ClassName.OPEN)
return $(Selector.BODY).hasClass(ClassName.OPEN)
}
if (isShown) {
}
toggle() {
if (this.isShown()) {
this.collapse()
} else {
this.show()
}
}
autoCollapse() {
console.log(this._options)
if (this._options.autoCollapseSize) {
if ($(window).width() <= this._options.autoCollapseSize) {
if (this.isShown()) {
this.toggle()
}
} else {
if (!this.isShown()) {
this.toggle()
}
}
}
}
// Private
_init() {
this.autoCollapse()
$(window).resize(() => {
this.autoCollapse()
})
}
_addOverlay() {
const overlay = $('<div />', {
id: 'sidebar-overlay'
@@ -113,7 +141,7 @@ const PushMenu = (($) => {
$(this).data(DATA_KEY, data)
}
if (operation) {
if (operation === 'init') {
data[operation]()
}
})
@@ -137,6 +165,10 @@ const PushMenu = (($) => {
PushMenu._jQueryInterface.call($(button), 'toggle')
})
$(window).on('load', () => {
PushMenu._jQueryInterface.call($(Selector.TOGGLE_BUTTON))
})
/**
* jQuery API
* ====================================================