diff --git a/src/mantine-dropzone/src/DropzoneFullScreen.tsx b/src/mantine-dropzone/src/DropzoneFullScreen.tsx index 07290a76265..1c5d72c06f6 100644 --- a/src/mantine-dropzone/src/DropzoneFullScreen.tsx +++ b/src/mantine-dropzone/src/DropzoneFullScreen.tsx @@ -61,6 +61,7 @@ export const DropzoneFullScreen = forwardRef { + setCounter((prev) => prev + 1); + open(); + }; + + const handleDragLeave = () => { + setCounter((prev) => prev - 1); + }; + useEffect(() => { - if (active) { - document.addEventListener('dragover', open, false); - return () => document.removeEventListener('dragover', open, false); - } + counter === 0 && close(); + }, [counter]); - return undefined; - }, [active]); + useEffect(() => { + if (!active) return undefined; + document.addEventListener('dragenter', handleDragEnter, false); + document.addEventListener('dragleave', handleDragLeave, false); + + return () => { + document.removeEventListener('dragover', handleDragEnter, false); + document.removeEventListener('dragleave', handleDragLeave, false); + }; + }, [active]); return ( { onDragLeave?.(event); - close(); }} />