From ae5bb850de9eec85afa8028992cdff4d7cba194d Mon Sep 17 00:00:00 2001 From: Antoine M Date: Fri, 30 Jan 2026 10:16:45 +0100 Subject: [PATCH] FEATURE Improve submenu handling and accessibility in header navigation --- resources/js/header.js | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/resources/js/header.js b/resources/js/header.js index e64b668..49abf3a 100644 --- a/resources/js/header.js +++ b/resources/js/header.js @@ -5,7 +5,12 @@ export default function menuInit() { const burgerMenuToggle = header.querySelector('#burger-menu-toggle'); const submenuToggles = header.querySelectorAll('.menu-item__submenu-toggle'); - console.log(submenuToggles); + function closeSubmenus(e) { + submenuToggles.forEach((button) => { + button.setAttribute('aria-expanded', false); + button.parentElement.querySelector('.sub-menu').classList.remove('sub-menu-open'); + }); + } // #### Open/close burger nav // burgerMenuToggle.addEventListener('click', function (e) { @@ -41,9 +46,18 @@ export default function menuInit() { submenuToggles.forEach((button) => { button.addEventListener('click', function (e) { let isExpanded = button.getAttribute('aria-expanded') === 'true'; - button.setAttribute('aria-expanded', !isExpanded); - button.parentElement.querySelector('.sub-menu').classList.toggle('sub-menu-open'); + closeSubmenus(e); + if (!isExpanded) { + button.setAttribute('aria-expanded', true); + button.parentElement.querySelector('.sub-menu').classList.add('sub-menu-open'); + } }); }); + + document.addEventListener('keydown', function (e) { + if (e.key === 'Escape') { + closeSubmenus(e); + } + }); }