B: Do not close dropdown on click on interactive child
Some checks failed
Frontend CI / build (22.x) (push) Has been cancelled
Frontend CI / notify-failure (push) Has been cancelled

This commit is contained in:
Ivan 2025-08-26 14:01:10 +03:00
parent 99312f25ee
commit 1e17a671da

View File

@ -7,7 +7,16 @@ export function useDropdown() {
const ref = useRef<HTMLDivElement>(null);
function handleBlur(event: React.FocusEvent<HTMLDivElement>) {
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);