diff --git a/rsconcept/frontend/src/components/dropdown/use-dropdown.ts b/rsconcept/frontend/src/components/dropdown/use-dropdown.ts index 4a2d8d81..52854df8 100644 --- a/rsconcept/frontend/src/components/dropdown/use-dropdown.ts +++ b/rsconcept/frontend/src/components/dropdown/use-dropdown.ts @@ -7,7 +7,16 @@ export function useDropdown() { const ref = useRef(null); function handleBlur(event: React.FocusEvent) { - if (ref.current?.contains(event.relatedTarget as Node)) { + const nextTarget = event.relatedTarget as Node | null; + if (nextTarget && ref.current?.contains(nextTarget)) { + return; + } + + // Keep open when focus moves into a popover (e.g., ComboBox menu rendered via portal) + if ( + nextTarget instanceof Element && + (nextTarget.closest("[data-slot='popover-content']") || nextTarget.closest("[data-slot='popover-trigger']")) + ) { return; } setIsOpen(false);