From 9811d0155ede0aca83c8ceadc806f98dd8f2d520 Mon Sep 17 00:00:00 2001 From: Ivan <8611739+IRBorisov@users.noreply.github.com> Date: Tue, 26 Aug 2025 14:00:23 +0300 Subject: [PATCH] F: Do not close dropdown when clicking 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);