30 lines
925 B
JavaScript
Executable File
30 lines
925 B
JavaScript
Executable File
(() => {
|
|
const layout = document.querySelector('.layout-body');
|
|
if (!layout) return;
|
|
|
|
const enabled = layout.dataset.sidebarEnabled === '1';
|
|
const collapsible = layout.dataset.sidebarCollapsible === '1';
|
|
const defaultState = layout.dataset.sidebarDefault || 'collapsed';
|
|
|
|
const toggles = document.querySelectorAll('[data-sidebar-toggle]');
|
|
if (!enabled || !collapsible) {
|
|
toggles.forEach((t) => t.remove());
|
|
return;
|
|
}
|
|
|
|
const saved = localStorage.getItem('sidebar-state');
|
|
const initial = saved || defaultState;
|
|
if (initial === 'open') {
|
|
layout.classList.add('sidebar-open');
|
|
} else {
|
|
layout.classList.remove('sidebar-open');
|
|
}
|
|
|
|
toggles.forEach((toggle) => {
|
|
toggle.addEventListener('click', () => {
|
|
layout.classList.toggle('sidebar-open');
|
|
localStorage.setItem('sidebar-state', layout.classList.contains('sidebar-open') ? 'open' : 'collapsed');
|
|
});
|
|
});
|
|
})();
|