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) <noreply@anthropic.com>
This commit is contained in:
Ullrich Schäfer 2026-04-03 10:56:22 +01:00
parent 721ec9e5e5
commit 87251ea366
No known key found for this signature in database
GPG key ID: A32FF691A0F752D9

View file

@ -47,14 +47,14 @@ export function ExportButton({ yjs }: { yjs: YjsState }) {
const [open, setOpen] = useState(false);
const ref = useRef<HTMLDivElement>(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(() => {