diff --git a/changelog.d/fixed-475.md b/changelog.d/fixed-475.md new file mode 100644 index 00000000..a7373883 --- /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 06eb1aed..3e31a397 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"]');