Skip to content

Commit

Permalink
[@mantine/dropzone] Fix Dropzone.Fullscreen not disappearing correctl…
Browse files Browse the repository at this point in the history
…y after first file drop (mantinedev#4580)
  • Loading branch information
esheliko authored Jul 27, 2023
1 parent cf0f85f commit 0f2ecba
Showing 1 changed file with 7 additions and 9 deletions.
16 changes: 7 additions & 9 deletions src/mantine-dropzone/src/DropzoneFullScreen.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
getDefaultZIndex,
PortalProps,
} from '@mantine/core';
import { useDisclosure } from '@mantine/hooks';
import { useDisclosure, useCounter } from '@mantine/hooks';
import { DropzoneStylesNames, DropzoneProps, _Dropzone } from './Dropzone';
import useFullScreenStyles from './DropzoneFullScreen.styles';

Expand Down Expand Up @@ -64,7 +64,7 @@ export function DropzoneFullScreen(props: DropzoneFullScreenProps) {
...others
} = useComponentDefaultProps('DropzoneFullScreen', fullScreenDefaultProps, props);

const [counter, setCounter] = React.useState(0);
const [counter, counterHandlers] = useCounter(0);
const [visible, { open, close }] = useDisclosure(false);
const { classes, cx } = useFullScreenStyles(null, {
name: 'DropzoneFullScreen',
Expand All @@ -75,15 +75,11 @@ export function DropzoneFullScreen(props: DropzoneFullScreenProps) {

const handleDragEnter = (event: DragEvent) => {
if (event.dataTransfer.types.includes('Files')) {
setCounter((prev) => prev + 1);
counterHandlers.increment();
open();
}
};

const handleDragLeave = () => {
setCounter((prev) => prev - 1);
};

useEffect(() => {
counter === 0 && close();
}, [counter]);
Expand All @@ -92,11 +88,11 @@ export function DropzoneFullScreen(props: DropzoneFullScreenProps) {
if (!active) return undefined;

document.addEventListener('dragenter', handleDragEnter, false);
document.addEventListener('dragleave', handleDragLeave, false);
document.addEventListener('dragleave', counterHandlers.decrement, false);

return () => {
document.removeEventListener('dragenter', handleDragEnter, false);
document.removeEventListener('dragleave', handleDragLeave, false);
document.removeEventListener('dragleave', counterHandlers.decrement, false);
};
}, [active]);

Expand All @@ -121,10 +117,12 @@ export function DropzoneFullScreen(props: DropzoneFullScreenProps) {
onDrop={(files: any) => {
onDrop?.(files);
close();
counterHandlers.reset();
}}
onReject={(files: any) => {
onReject?.(files);
close();
counterHandlers.reset();
}}
/>
</Box>
Expand Down

0 comments on commit 0f2ecba

Please sign in to comment.