fix: typecheck public nav open state

This commit is contained in:
Marco Allegretti 2026-02-05 09:18:04 +01:00
parent 6f9b5949ad
commit 2d124e69fe

View file

@ -152,28 +152,38 @@ const defaultTheme = DEFAULT_THEME;
const nav = document.getElementById('public-nav'); const nav = document.getElementById('public-nav');
const toggle = document.getElementById('public-nav-toggle'); const toggle = document.getElementById('public-nav-toggle');
function setOpen(open) { function openNav() {
if (!nav || !toggle) return; if (!nav || !toggle) return;
nav.classList.toggle('is-open', open); nav.classList.add('is-open');
toggle.setAttribute('aria-expanded', open ? 'true' : 'false'); toggle.setAttribute('aria-expanded', 'true');
}
function closeNav() {
if (!nav || !toggle) return;
nav.classList.remove('is-open');
toggle.setAttribute('aria-expanded', 'false');
} }
if (nav && toggle) { if (nav && toggle) {
toggle.addEventListener('click', () => { toggle.addEventListener('click', () => {
setOpen(!nav.classList.contains('is-open')); if (nav.classList.contains('is-open')) {
closeNav();
} else {
openNav();
}
}); });
nav.querySelectorAll('a').forEach((link) => { nav.querySelectorAll('a').forEach((link) => {
link.addEventListener('click', () => { link.addEventListener('click', () => {
if (window.matchMedia('(max-width: 768px)').matches) { if (window.matchMedia('(max-width: 768px)').matches) {
setOpen(false); closeNav();
} }
}); });
}); });
window.addEventListener('resize', () => { window.addEventListener('resize', () => {
if (window.innerWidth > 768) { if (window.innerWidth > 768) {
setOpen(false); closeNav();
} }
}); });
} }