From 2d124e69fead741615eb605c989d90357a80aa93 Mon Sep 17 00:00:00 2001 From: Marco Allegretti Date: Thu, 5 Feb 2026 09:18:04 +0100 Subject: [PATCH] fix: typecheck public nav open state --- frontend/src/layouts/PublicLayout.astro | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/frontend/src/layouts/PublicLayout.astro b/frontend/src/layouts/PublicLayout.astro index 9ea961b..6c54e1e 100644 --- a/frontend/src/layouts/PublicLayout.astro +++ b/frontend/src/layouts/PublicLayout.astro @@ -152,28 +152,38 @@ const defaultTheme = DEFAULT_THEME; const nav = document.getElementById('public-nav'); const toggle = document.getElementById('public-nav-toggle'); - function setOpen(open) { + function openNav() { if (!nav || !toggle) return; - nav.classList.toggle('is-open', open); - toggle.setAttribute('aria-expanded', open ? 'true' : 'false'); + nav.classList.add('is-open'); + toggle.setAttribute('aria-expanded', 'true'); + } + + function closeNav() { + if (!nav || !toggle) return; + nav.classList.remove('is-open'); + toggle.setAttribute('aria-expanded', 'false'); } if (nav && toggle) { toggle.addEventListener('click', () => { - setOpen(!nav.classList.contains('is-open')); + if (nav.classList.contains('is-open')) { + closeNav(); + } else { + openNav(); + } }); nav.querySelectorAll('a').forEach((link) => { link.addEventListener('click', () => { if (window.matchMedia('(max-width: 768px)').matches) { - setOpen(false); + closeNav(); } }); }); window.addEventListener('resize', () => { if (window.innerWidth > 768) { - setOpen(false); + closeNav(); } }); }