From 7f659817ee59db38e71c28e599c88b5c6b038e0c Mon Sep 17 00:00:00 2001 From: Shni Date: Wed, 15 Oct 2025 03:13:20 -0500 Subject: [PATCH] =?UTF-8?q?feat:=20Cerrar=20men=C3=BAs=20anteriores=20al?= =?UTF-8?q?=20abrir=20nuevos=20en=20la=20navegaci=C3=B3n=20del=20panel=20d?= =?UTF-8?q?e=20control=20para=20mejorar=20la=20usabilidad?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/views/partials/dashboard_nav.ejs | 31 +++++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/src/server/views/partials/dashboard_nav.ejs b/src/server/views/partials/dashboard_nav.ejs index 694d4b2..b08ea74 100644 --- a/src/server/views/partials/dashboard_nav.ejs +++ b/src/server/views/partials/dashboard_nav.ejs @@ -69,6 +69,21 @@ const list = document.getElementById('miniGuildList'); const userBtn = document.getElementById('userBtn'); const userMenu = document.getElementById('userMenu'); + const cardUserMenu = document.getElementById('cardUserMenu'); + const mobileGuildModal = document.getElementById('mobileGuildModal'); + const mobileUserSheet = document.getElementById('mobileUserSheet'); + + function closeAllMenus() { + try { + if (list) list.classList.add('hidden'); + if (userMenu) userMenu.classList.add('hidden'); + if (cardUserMenu) cardUserMenu.classList.add('hidden'); + if (mobileGuildModal) mobileGuildModal.classList.add('hidden'); + if (mobileUserSheet) mobileUserSheet.classList.add('hidden'); + if (btn) btn.setAttribute('aria-expanded','false'); + if (userBtn) userBtn.setAttribute('aria-expanded','false'); + } catch(e){} + } function openDropdown(el, container) { if (!el || !container) return; container.classList.remove('hidden'); @@ -94,7 +109,11 @@ btn.addEventListener('click', (e)=>{ e.stopPropagation(); const expanded = btn.getAttribute('aria-expanded') === 'true'; - if (expanded) closeDropdown(btn, list); else openDropdown(btn, list); + if (expanded) closeDropdown(btn, list); else { + // close other menus first + closeAllMenus(); + openDropdown(btn, list); + } }); Array.from(list.querySelectorAll('.guild-item')).forEach(it=>{ it.addEventListener('click', ()=>{ @@ -114,7 +133,11 @@ userBtn.addEventListener('click', (e)=>{ e.stopPropagation(); const expanded = userBtn.getAttribute('aria-expanded') === 'true'; - if (expanded) closeDropdown(userBtn, userMenu); else openDropdown(userBtn, userMenu); + if (expanded) closeDropdown(userBtn, userMenu); else { + // ensure other menus are closed + closeAllMenus(); + openDropdown(userBtn, userMenu); + } }); } // close on outside click or Escape @@ -191,6 +214,8 @@ miniBtn.addEventListener('click', (e)=>{ if (isMobile()) { e.stopPropagation(); + // close other menus before opening the mobile guild modal + closeAllMenus(); mobileGuildModal.classList.remove('hidden'); } }); @@ -206,7 +231,7 @@ // user menu mobile const userBtnMobile = document.getElementById('userBtn'); - if (userBtnMobile) userBtnMobile.addEventListener('click', (e)=>{ if (isMobile()) { e.stopPropagation(); mobileUserSheet.classList.remove('hidden'); } }); + if (userBtnMobile) userBtnMobile.addEventListener('click', (e)=>{ if (isMobile()) { e.stopPropagation(); closeAllMenus(); mobileUserSheet.classList.remove('hidden'); } }); mobileUserClose?.addEventListener('click', ()=> mobileUserSheet.classList.add('hidden')); mobileUserSheet?.addEventListener('click',(e)=>{ if (e.target === mobileUserSheet) mobileUserSheet.classList.add('hidden'); }); })();