From 9f5b53be731d5b85640d1976298dbd9a17ddb92a Mon Sep 17 00:00:00 2001 From: Joshua Laymon Date: Wed, 20 Aug 2025 01:56:17 +0000 Subject: [PATCH] Update web/templates/base.html --- web/templates/base.html | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/web/templates/base.html b/web/templates/base.html index 36d43a8..b57ae54 100644 --- a/web/templates/base.html +++ b/web/templates/base.html @@ -89,6 +89,9 @@ border-radius:12px; box-shadow:0 8px 30px rgba(0,0,0,.08); min-width: 160px; padding:6px; display:grid; gap:4px; z-index:60; } + /* KEY FIX: ensure [hidden] actually hides despite display:grid above */ + .user-menu[hidden]{ display:none !important; } + .user-menu .menu-item{ display:block; width:100%; text-align:left; padding:10px 12px; border-radius:10px; @@ -204,12 +207,22 @@ if (userBtn && userMenu) { const open = () => { userMenu.hidden = false; userBtn.setAttribute('aria-expanded','true'); }; const close = () => { userMenu.hidden = true; userBtn.setAttribute('aria-expanded','false'); }; + userBtn.addEventListener('click', (e) => { e.stopPropagation(); userMenu.hidden ? open() : close(); }); + + // Close on outside click / Escape / tab away document.addEventListener('click', (e) => { if (userMenu.hidden) return; if (!userMenu.contains(e.target) && !userBtn.contains(e.target)) close(); }); document.addEventListener('keydown', (e) => { if (e.key === 'Escape') close(); }); + + // NEW: close when clicking any item inside the menu + userMenu.addEventListener('click', (e) => { + const el = e.target; + if (el.closest('a') || el.closest('button')) close(); + }); + window.addEventListener('blur', close); } })();