From a15b027e963bb65cd29d59778f90b32017af29a8 Mon Sep 17 00:00:00 2001 From: Till JS Date: Fri, 3 Apr 2026 13:15:53 +0200 Subject: [PATCH] fix(shared-ui): block click event after drag to prevent detail view opening After a successful drag-and-drop, the browser fires a click event on the source element. This was opening the detail view overlay instead of completing the drop. Now a one-time click blocker is added after drag ends to swallow the spurious click. Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/shared-ui/src/dnd/drag-source.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/shared-ui/src/dnd/drag-source.ts b/packages/shared-ui/src/dnd/drag-source.ts index 5a806130a..4e5b903eb 100644 --- a/packages/shared-ui/src/dnd/drag-source.ts +++ b/packages/shared-ui/src/dnd/drag-source.ts @@ -108,6 +108,15 @@ export function dragSource(node: HTMLElement, options: DragSourceOptions) { }) ); endDrag(); + // Block the click event that fires after pointerup — prevents + // opening detail views when dropping an item. + const blocker = (ev: Event) => { + ev.stopPropagation(); + ev.preventDefault(); + }; + node.addEventListener('click', blocker, { capture: true, once: true }); + // Safety: remove blocker after a tick in case click doesn't fire + setTimeout(() => node.removeEventListener('click', blocker, { capture: true }), 0); } cleanup(); }