From 6ebc85c9df72922949f46af60b9feefa1710861e Mon Sep 17 00:00:00 2001 From: Vasily Zubarev Date: Wed, 9 Apr 2025 13:01:21 +0200 Subject: [PATCH] fix #14: drag n drop must react only on files --- components/files/screen-drop-area.tsx | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/components/files/screen-drop-area.tsx b/components/files/screen-drop-area.tsx index 6f76d18..9dc49d1 100644 --- a/components/files/screen-drop-area.tsx +++ b/components/files/screen-drop-area.tsx @@ -19,8 +19,21 @@ export default function ScreenDropArea({ children }: { children: React.ReactNode const handleDragEnter = (e: React.DragEvent) => { e.preventDefault() e.stopPropagation() - dragCounter.current++ + // Check if the dragged items are files + const items = e.dataTransfer.items + if (!items) return + + let hasFiles = false + for (const item of items) { + if (item.kind === "file") { + hasFiles = true + break + } + } + if (!hasFiles) return + + dragCounter.current++ if (dragCounter.current === 1) { setIsDragging(true) } @@ -48,11 +61,12 @@ export default function ScreenDropArea({ children }: { children: React.ReactNode // Reset counter and dragging state dragCounter.current = 0 setIsDragging(false) - setIsUploading(true) - setUploadError("") const files = e.dataTransfer.files if (files && files.length > 0) { + setIsUploading(true) + setUploadError("") + try { const formData = new FormData() if (transactionId) {