Files
2026-07-28 14:11:59 +01:00

49 lines
1.7 KiB
JavaScript

(() => {
const initialise = () => {
document.querySelectorAll('[data-saasland-header]').forEach((header) => {
const toggle = header.querySelector('[data-saasland-menu-toggle]');
const menu = document.querySelector('[data-saasland-mobile-nav]');
if (!toggle || !menu || toggle.dataset.initialised === 'true') {
return;
}
const setOpen = (open) => {
toggle.setAttribute('aria-expanded', String(open));
toggle.setAttribute('aria-label', open ? 'Close navigation' : 'Open navigation');
toggle.classList.toggle('is-open', open);
menu.hidden = !open;
menu.classList.toggle('is-open', open);
document.documentElement.classList.toggle('saasland-menu-open', open);
};
toggle.addEventListener('click', () => {
setOpen(toggle.getAttribute('aria-expanded') !== 'true');
});
menu.querySelectorAll('a').forEach((link) => {
link.addEventListener('click', () => setOpen(false));
});
document.addEventListener('keydown', (event) => {
if (event.key === 'Escape') setOpen(false);
});
window.addEventListener('resize', () => {
if (window.innerWidth > 980) setOpen(false);
});
toggle.dataset.initialised = 'true';
setOpen(false);
});
};
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initialise);
} else {
initialise();
}
document.addEventListener('livewire:navigated', initialise);
})();