diff --git a/src/components/inputs/Dropzone/Dropzone.story.tsx b/src/components/inputs/Dropzone/Dropzone.story.tsx index 01f817022..72e4bbeab 100644 --- a/src/components/inputs/Dropzone/Dropzone.story.tsx +++ b/src/components/inputs/Dropzone/Dropzone.story.tsx @@ -26,11 +26,26 @@ const onChange = (event: DropChangeEvent) => { ); }; +const onDragEnter = (event: DragEvent) => { + console.log('Drag enter', event); +}; + +const onDragLeave = (event: DragEvent) => { + console.log('Drag leave', event); +}; + +const onDragOver = (event: DragEvent) => { + console.log('Drag over', event); +}; + const Template: Story = (args) => { return (
Drag files here
diff --git a/src/components/inputs/Dropzone/Dropzone.tsx b/src/components/inputs/Dropzone/Dropzone.tsx index f247164cc..c41f5f5a9 100644 --- a/src/components/inputs/Dropzone/Dropzone.tsx +++ b/src/components/inputs/Dropzone/Dropzone.tsx @@ -20,13 +20,26 @@ function DropzoneComponent({ forwardRef, multiple, onChange, + onDragEnter, + onDragLeave, + onDragOver, ...props }: Props) { const ref = useForwardRef(forwardRef); const [drag, dragSet] = useState(false); - const onDragOver = stopPrevent(() => dragSet(true)); - const onDragLeave = stopPrevent(() => dragSet(false)); + const handleDragOver = stopPrevent( + (e: DragEvent) => { + onDragOver?.(e); + dragSet(true); + } + ); + const handleDragLeave = stopPrevent( + (e: DragEvent) => { + onDragLeave?.(e); + dragSet(false); + } + ); const onDrop = stopPrevent( (event: DragEvent & DropChangeEvent) => { @@ -39,8 +52,9 @@ function DropzoneComponent({ diff --git a/src/components/inputs/Dropzone/Dropzone.types.ts b/src/components/inputs/Dropzone/Dropzone.types.ts index ebd9b174b..563f79534 100644 --- a/src/components/inputs/Dropzone/Dropzone.types.ts +++ b/src/components/inputs/Dropzone/Dropzone.types.ts @@ -1,4 +1,4 @@ -import { ChangeEvent, ReactNode } from 'react'; +import { ChangeEvent, DragEventHandler, ReactNode } from 'react'; import { IrisInputProps } from '../../../utils'; export type DropChangeEvent = ChangeEvent & { @@ -22,4 +22,7 @@ export type Props = IrisInputProps<{ */ format?: 'primary' | 'secondary'; onChange?: (event: DropChangeEvent) => void; + onDragEnter?: DragEventHandler; + onDragLeave?: DragEventHandler; + onDragOver?: DragEventHandler; }>;