From 87251ea366febb7e4dddb9acd001bede46557c4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ullrich=20Sch=C3=A4fer?= Date: Fri, 3 Apr 2026 10:56:22 +0100 Subject: [PATCH] Fix dropdown race: use mousedown for outside-click handler The document click handler registered on open could catch the same click event that opened the dropdown, immediately closing it. Using mousedown avoids the race since it fires before click. Co-Authored-By: Claude Opus 4.6 (1M context) --- apps/planner/app/components/ExportButton.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/planner/app/components/ExportButton.tsx b/apps/planner/app/components/ExportButton.tsx index 3e44a70..af784d8 100644 --- a/apps/planner/app/components/ExportButton.tsx +++ b/apps/planner/app/components/ExportButton.tsx @@ -47,14 +47,14 @@ export function ExportButton({ yjs }: { yjs: YjsState }) { const [open, setOpen] = useState(false); const ref = useRef(null); - // Close dropdown on outside click + // Close dropdown on outside mousedown useEffect(() => { if (!open) return; const handler = (e: MouseEvent) => { if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false); }; - document.addEventListener("click", handler); - return () => document.removeEventListener("click", handler); + document.addEventListener("mousedown", handler); + return () => document.removeEventListener("mousedown", handler); }, [open]); const handleExportRoute = useCallback(() => {