From f9bbbc7ebfdc8c4e340784e524497ff1e3519857 Mon Sep 17 00:00:00 2001 From: Philipinho <16838612+Philipinho@users.noreply.github.com> Date: Sat, 18 Apr 2026 23:31:53 +0100 Subject: [PATCH] fix(base): ignore nested listbox and portal clicks so select doesnt close toolbar popover --- apps/client/src/features/base/components/base-toolbar.tsx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/apps/client/src/features/base/components/base-toolbar.tsx b/apps/client/src/features/base/components/base-toolbar.tsx index 0153bb3a..9c99b9b7 100644 --- a/apps/client/src/features/base/components/base-toolbar.tsx +++ b/apps/client/src/features/base/components/base-toolbar.tsx @@ -67,7 +67,15 @@ export function BaseToolbar({ const target = e.target as HTMLElement | null; if (!target) return; if (toolbarRightRef.current?.contains(target)) return; + // Ignore clicks that land inside any Mantine popover dropdown + // (role=dialog), any Select/Combobox dropdown (role=listbox, the + // container; option elements have role=option), or anything + // rendered into Mantine's shared portal node. Without these, a + // nested Select inside the popover would close the parent. if (target.closest('[role="dialog"]')) return; + if (target.closest('[role="listbox"]')) return; + if (target.closest('[role="option"]')) return; + if (target.closest("[data-mantine-shared-portal-node]")) return; closeAll(); }; const keyHandler = (e: KeyboardEvent) => {