From c42b5798e15d825152089978b985b199c130b2bc Mon Sep 17 00:00:00 2001 From: Angelo Date: Wed, 9 Sep 2026 20:03:59 +0700 Subject: [PATCH 1/2] fix(upload/createDropzone): correct event handler for drags --- packages/upload/src/createDropzone.ts | 21 +++------------------ packages/upload/src/types.ts | 3 --- 2 files changed, 3 insertions(+), 21 deletions(-) diff --git a/packages/upload/src/createDropzone.ts b/packages/upload/src/createDropzone.ts index 18f17694c..d888ecffd 100644 --- a/packages/upload/src/createDropzone.ts +++ b/packages/upload/src/createDropzone.ts @@ -48,32 +48,23 @@ function createDropzone( ref = r; }; - const onDragStart: JSX.EventHandler = event => { - setIsDragging(true); - Promise.resolve(options?.onDragStart?.(transformFiles(event.dataTransfer?.files || null))); - }; - const onDragEnd: JSX.EventHandler = event => { - setIsDragging(false); - Promise.resolve(options?.onDragEnd?.(transformFiles(event.dataTransfer?.files || null))); - }; - const onDragEnter: JSX.EventHandler = event => { + setIsDragging(true); Promise.resolve(options?.onDragEnter?.(transformFiles(event.dataTransfer?.files || null))); }; const onDragLeave: JSX.EventHandler = event => { + setIsDragging(false); Promise.resolve(options?.onDragLeave?.(transformFiles(event.dataTransfer?.files || null))); }; const onDragOver: JSX.EventHandler = event => { event.preventDefault(); Promise.resolve(options?.onDragOver?.(transformFiles(event.dataTransfer?.files || null))); }; - const onDrag: JSX.EventHandler = event => { - Promise.resolve(options?.onDrag?.(transformFiles(event.dataTransfer?.files || null))); - }; const onDrop: JSX.EventHandler = event => { event.preventDefault(); + setIsDragging(false) const parsedFiles = transformFiles(event.dataTransfer?.files || null); setFiles(parsedFiles); @@ -84,21 +75,15 @@ function createDropzone( if (!ref) return; // TODO: Should event.stopPropagation() or event.preventDefault() in handlers below? - ref.addEventListener("dragstart", onDragStart as any); ref.addEventListener("dragenter", onDragEnter as any); - ref.addEventListener("dragend", onDragEnd as any); ref.addEventListener("dragleave", onDragLeave as any); ref.addEventListener("dragover", onDragOver as any); - ref.addEventListener("drag", onDrag as any); ref.addEventListener("drop", onDrop as any); onCleanup(() => { - ref?.removeEventListener("dragstart", onDragStart as any); ref?.removeEventListener("dragenter", onDragEnter as any); - ref?.removeEventListener("dragend", onDragEnd as any); ref?.removeEventListener("dragleave", onDragLeave as any); ref?.removeEventListener("dragover", onDragOver as any); - ref?.removeEventListener("drag", onDrag as any); ref?.removeEventListener("drop", onDrop as any); }); }); diff --git a/packages/upload/src/types.ts b/packages/upload/src/types.ts index a1b235f29..f3a7d0d15 100644 --- a/packages/upload/src/types.ts +++ b/packages/upload/src/types.ts @@ -48,10 +48,7 @@ export interface Dropzone { */ export interface DropzoneOptions { onDrop?: UserCallback; - onDragStart?: UserCallback; onDragEnter?: UserCallback; - onDragEnd?: UserCallback; onDragLeave?: UserCallback; onDragOver?: UserCallback; - onDrag?: UserCallback; } From fc58170d91c1e576b134bc563501f8e754904a93 Mon Sep 17 00:00:00 2001 From: Angelo Date: Wed, 9 Sep 2026 20:03:59 +0700 Subject: [PATCH 2/2] chore(upload): added changeset for changelogs --- .changeset/afraid-mails-cry.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/afraid-mails-cry.md diff --git a/.changeset/afraid-mails-cry.md b/.changeset/afraid-mails-cry.md new file mode 100644 index 000000000..8e3c186b0 --- /dev/null +++ b/.changeset/afraid-mails-cry.md @@ -0,0 +1,5 @@ +--- +"@solid-primitives/upload": minor +--- + +`createDropzone`: corrected `isDragging` signal & removed unnecessary props