31 lines
1.2 KiB
JavaScript
31 lines
1.2 KiB
JavaScript
import './bootstrap';
|
||
|
||
const menuButton = document.querySelector('[data-menu-toggle]');
|
||
const menuPanel = document.querySelector('[data-menu-panel]');
|
||
|
||
menuButton?.addEventListener('click', () => {
|
||
const open = menuPanel?.classList.toggle('open') ?? false;
|
||
menuButton.setAttribute('aria-expanded', String(open));
|
||
menuButton.textContent = open ? '×' : '☰';
|
||
});
|
||
|
||
document.querySelectorAll('[data-menu-panel] a').forEach((link) => {
|
||
link.addEventListener('click', () => {
|
||
menuPanel?.classList.remove('open');
|
||
menuButton?.setAttribute('aria-expanded', 'false');
|
||
if (menuButton) menuButton.textContent = '☰';
|
||
});
|
||
});
|
||
|
||
const adminSidebar = document.querySelector('#adminSidebar');
|
||
const adminOverlay = document.querySelector('[data-admin-overlay]');
|
||
const setAdminMenu = (open) => {
|
||
adminSidebar?.classList.toggle('open', open);
|
||
adminOverlay?.classList.toggle('open', open);
|
||
document.body.classList.toggle('admin-menu-open', open);
|
||
};
|
||
|
||
document.querySelector('[data-admin-open]')?.addEventListener('click', () => setAdminMenu(true));
|
||
document.querySelector('[data-admin-close]')?.addEventListener('click', () => setAdminMenu(false));
|
||
adminOverlay?.addEventListener('click', () => setAdminMenu(false));
|