From ae050d2119c63bf1f74b623ce9808b53c0c4e4ac Mon Sep 17 00:00:00 2001 From: Hiren Kangad Date: Tue, 10 Mar 2026 11:22:36 +0530 Subject: [PATCH] fix(refboard): restore drag-drop with fallback + React event handlers - Add onDragOver/onDrop preventDefault on container div (React level) to always block browser default file-open behavior - Add DOM fallback in useCanvasSetup if ref is somehow null - setupDragDrop's native listeners handle the actual upload logic --- frontend/src/hooks/useCanvasSetup.ts | 7 ++++++- frontend/src/pages/Editor.tsx | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/frontend/src/hooks/useCanvasSetup.ts b/frontend/src/hooks/useCanvasSetup.ts index 8367fec..abeb9fc 100644 --- a/frontend/src/hooks/useCanvasSetup.ts +++ b/frontend/src/hooks/useCanvasSetup.ts @@ -253,7 +253,12 @@ export function useCanvasSetup(deps: CanvasSetupDeps) { // Setup drag/drop and paste if (!isPublicView || user) { - const dropTarget = canvasContainerRef.current; + // Use the ref first, fall back to DOM query for the canvas parent + let dropTarget: HTMLElement | null = canvasContainerRef.current; + if (!dropTarget) { + const canvasEl = document.querySelector('canvas'); + dropTarget = canvasEl?.parentElement ?? null; + } if (dropTarget) { dropCleanupRef.current = setupDragDrop(dropTarget, viewport, scene, resolvedBoardId, onCanvasChange); } diff --git a/frontend/src/pages/Editor.tsx b/frontend/src/pages/Editor.tsx index dacdd9d..65b79d2 100644 --- a/frontend/src/pages/Editor.tsx +++ b/frontend/src/pages/Editor.tsx @@ -474,7 +474,7 @@ export default function Editor({ isPublicView }: EditorProps) { />} {/* Canvas */} -
+
e.preventDefault()} onDrop={(e) => e.preventDefault()}> {/* Dot grid — behind transparent canvas */} {showGrid && (() => { const scale = canvasTransform[0] || 1;