From 9e6fef78d107d71d0c943c53292d562d58555a11 Mon Sep 17 00:00:00 2001 From: scanner <280983584+hivecommons-hive[bot]@users.noreply.github.com> Date: Mon, 26 Oct 2026 00:58:30 -0400 Subject: [PATCH] fix(navbar): clear pending hide timer before rescheduling in useNavDropdowns Signed-off-by: scanner <280983584+hivecommons-hive[bot]@users.noreply.github.com> --- changelog.d/fixed-475.md | 1 + src/components/navbar/useNavDropdowns.ts | 5 +++++ 2 files changed, 6 insertions(+) create mode 100644 changelog.d/fixed-475.md diff --git a/changelog.d/fixed-475.md b/changelog.d/fixed-475.md new file mode 100644 index 0000000..a737388 --- /dev/null +++ b/changelog.d/fixed-475.md @@ -0,0 +1 @@ +- fix(navbar): clear the pending hide timer before rescheduling in useNavDropdowns so leaving via the menu and re-entering no longer closes the dropdown (#475). diff --git a/src/components/navbar/useNavDropdowns.ts b/src/components/navbar/useNavDropdowns.ts index 06eb1ae..3e31a39 100644 --- a/src/components/navbar/useNavDropdowns.ts +++ b/src/components/navbar/useNavDropdowns.ts @@ -76,6 +76,7 @@ export function useNavDropdowns() { }; const hideMenu = () => { + clearHideTimeout(); timeoutRef.current = setTimeout(() => { menu.style.display = "none"; menu.style.opacity = "0"; @@ -179,6 +180,10 @@ export function useNavDropdowns() { }; const handleMouseLeave = () => { + if (timeoutRef.current) { + clearTimeout(timeoutRef.current); + timeoutRef.current = null; + } timeoutRef.current = setTimeout(() => { const langButton = langSwitcher.querySelector("button"); const dropdown = document.querySelector('[role="listbox"]');