From 07112f9140a9e59b2b7848e800a8d1404cc47104 Mon Sep 17 00:00:00 2001 From: dougfabris Date: Tue, 29 Apr 2025 20:04:08 -0300 Subject: [PATCH] fix: navbar list closing when clicking on it --- .../client/NavBarV2/NavBarSearch/NavBarSearch.tsx | 3 +++ .../NavBarV2/NavBarSearch/hooks/useSearchClick.ts | 14 ++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 apps/meteor/client/NavBarV2/NavBarSearch/hooks/useSearchClick.ts diff --git a/apps/meteor/client/NavBarV2/NavBarSearch/NavBarSearch.tsx b/apps/meteor/client/NavBarV2/NavBarSearch/NavBarSearch.tsx index eab5c43c16015..23b7493789b76 100644 --- a/apps/meteor/client/NavBarV2/NavBarSearch/NavBarSearch.tsx +++ b/apps/meteor/client/NavBarV2/NavBarSearch/NavBarSearch.tsx @@ -9,6 +9,7 @@ import tinykeys from 'tinykeys'; import NavBarSearchListBox from './NavBarSearchListbox'; import { getShortcutLabel } from './getShortcutLabel'; +import { useSearchClick } from './hooks/useSearchClick'; import { useSearchFocus } from './hooks/useSearchFocus'; import { useSearchInputNavigation } from './hooks/useSearchNavigation'; @@ -38,6 +39,7 @@ const NavBarSearch = () => { const handleKeyDown = useSearchInputNavigation(state); const handleFocus = useSearchFocus(state); + const handleClick = useSearchClick(state); const handleEscSearch = useCallback(() => { resetField('filterText'); @@ -78,6 +80,7 @@ const NavBarSearch = () => { {...triggerProps} onFocus={handleFocus} onKeyDown={handleKeyDown} + onClick={handleClick} autoComplete='off' placeholder={placeholder} ref={mergedRefs} diff --git a/apps/meteor/client/NavBarV2/NavBarSearch/hooks/useSearchClick.ts b/apps/meteor/client/NavBarV2/NavBarSearch/hooks/useSearchClick.ts new file mode 100644 index 0000000000000..887d41bf27294 --- /dev/null +++ b/apps/meteor/client/NavBarV2/NavBarSearch/hooks/useSearchClick.ts @@ -0,0 +1,14 @@ +import { useCallback } from 'react'; +import type { OverlayTriggerState } from 'react-stately'; + +export const useSearchClick = (state: OverlayTriggerState) => { + const handleClick = useCallback(() => { + if (state.isOpen) { + return; + } + + state.setOpen(true); + }, [state]); + + return handleClick; +};