From 1e17a671da3f9cf66fd6ebc92efab6684ceb6551 Mon Sep 17 00:00:00 2001 From: Ivan <8611739+IRBorisov@users.noreply.github.com> Date: Tue, 26 Aug 2025 14:01:10 +0300 Subject: [PATCH] B: Do not close dropdown on click on interactive child --- .../frontend/src/components/dropdown/use-dropdown.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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);