67 lines
1.6 KiB
JavaScript
67 lines
1.6 KiB
JavaScript
class KTLayout {
|
|
static _isSidebarCollapse() {
|
|
return document.body.classList.contains('sidebar-collapse');
|
|
}
|
|
|
|
static _handleMegaMenu() {
|
|
const megaMenuEl = document.querySelector('#mega_menu');
|
|
if (!megaMenuEl) return;
|
|
|
|
const menu = KTMenu.getInstance(megaMenuEl);
|
|
menu.disable();
|
|
|
|
setTimeout(() => {
|
|
menu.enable();
|
|
}, 500);
|
|
}
|
|
|
|
static _handleSidebar() {
|
|
const sidebarToggle = KTToggle.getInstance(this.sidebarToggleEl);
|
|
sidebarToggle?.on('toggle', () => {
|
|
this.sidebarEl.classList.add('animating');
|
|
|
|
this._handleMegaMenu();
|
|
|
|
KTDom.transitionEnd(this.sidebarEl, () => {
|
|
this.sidebarEl.classList.remove('animating');
|
|
});
|
|
});
|
|
}
|
|
|
|
static _handleSidebarMenu() {
|
|
const menuEl = document.querySelector('#sidebar_menu');
|
|
const scrollableEl = document.querySelector('#sidebar_scrollable');
|
|
const menuActiveItemEl = menuEl.querySelector(".menu-item.active");
|
|
|
|
if (!menuActiveItemEl || KTDom.isVisibleInParent(menuActiveItemEl, scrollableEl)) {
|
|
return;
|
|
}
|
|
|
|
scrollableEl.scroll({
|
|
top: KTDom.getRelativeTopPosition(menuActiveItemEl, scrollableEl) - 100,
|
|
behavior: 'instant'
|
|
});
|
|
}
|
|
|
|
static init() {
|
|
this.sidebarEl = document.querySelector('#sidebar');
|
|
this.sidebarWrapperEl = document.querySelector('#sidebar_wrapper');
|
|
this.headerEl = document.querySelector('#header');
|
|
this.sidebarToggleEl = document.querySelector('#sidebar_toggle');
|
|
|
|
if (this.sidebarEl && this.sidebarToggleEl) {
|
|
this._handleSidebar();
|
|
this._handleSidebarMenu();
|
|
}
|
|
}
|
|
|
|
static isSidebarCollapse() {
|
|
return this._isSidebarCollapse();
|
|
}
|
|
}
|
|
|
|
KTDom.ready(() => {
|
|
KTLayout.init();
|
|
});
|
|
|
|
export default KTLayout; |