AdminLTE/ts/sidebar-overlay.ts

80 lines
2.1 KiB
TypeScript
Raw Normal View History

2021-05-08 16:43:00 +00:00
/**
* --------------------------------------------
* AdminLTE treeview.ts
* License MIT
* --------------------------------------------
*/
import {
domReady
} from './util/index'
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
const CLASS_NAME_SIDEBAR_COLLAPSE = 'sidebar-collapse'
const CLASS_NAME_SIDEBAR_CLOSE = 'sidebar-close'
const CLASS_NAME_SIDEBAR_OPEN = 'sidebar-open'
2021-05-13 01:17:47 +00:00
const CLASS_NAME_LAYOUT_MOBILE = 'layout-mobile'
2021-05-08 16:43:00 +00:00
2021-05-13 01:17:47 +00:00
const SELECTOR_SIDEBAR_SM = `.${CLASS_NAME_LAYOUT_MOBILE}`
const SELECTOR_CONTENT_WRAPPER = '.content-wrapper'
2021-05-08 16:43:00 +00:00
2021-05-13 01:17:47 +00:00
const Defaults = {
onLayouMobile: 768
}
2021-05-08 16:43:00 +00:00
class SidebarOverlay {
addSidebaBreakPoint(): void {
const bodyClass = document.body.classList
const widthOutput: number = window.innerWidth
2021-05-13 01:17:47 +00:00
if (widthOutput > Defaults.onLayouMobile) {
bodyClass.remove(CLASS_NAME_LAYOUT_MOBILE)
2021-05-08 16:43:00 +00:00
} else {
2021-05-13 01:17:47 +00:00
bodyClass.add(CLASS_NAME_LAYOUT_MOBILE)
2021-05-08 16:43:00 +00:00
}
}
removeOverlaySidebar(): void {
const bodyClass = document.body.classList
2021-05-13 01:17:47 +00:00
if (bodyClass.contains(CLASS_NAME_LAYOUT_MOBILE)) {
2021-05-08 16:43:00 +00:00
bodyClass.remove(CLASS_NAME_SIDEBAR_OPEN)
bodyClass.remove(CLASS_NAME_SIDEBAR_COLLAPSE)
bodyClass.add(CLASS_NAME_SIDEBAR_CLOSE)
}
}
2021-05-13 01:17:47 +00:00
closeSidebar(): void {
const widthOutput: number = window.innerWidth
if (widthOutput < Defaults.onLayouMobile) {
document.body.classList.add(CLASS_NAME_SIDEBAR_CLOSE)
}
}
2021-05-08 16:43:00 +00:00
init(): void {
const selSidebarSm = document.querySelector(SELECTOR_SIDEBAR_SM)
const selContentWrapper = selSidebarSm?.querySelector(SELECTOR_CONTENT_WRAPPER)
2021-05-08 16:43:00 +00:00
selContentWrapper?.addEventListener('touchstart', this.removeOverlaySidebar)
selContentWrapper?.addEventListener('click', this.removeOverlaySidebar)
}
}
domReady(() => {
const data = new SidebarOverlay()
data.addSidebaBreakPoint()
data.init()
2021-05-13 01:17:47 +00:00
data.closeSidebar()
2021-05-08 16:43:00 +00:00
window.addEventListener('resize', () => {
data.addSidebaBreakPoint()
data.init()
})
})
export default SidebarOverlay