Skip to content

Commit acc355c

Browse files
committed
fix: πŸ› track "over" state better in useDrop hook
1 parent 6e415cf commit acc355c

File tree

1 file changed

+17
-18
lines changed

1 file changed

+17
-18
lines changed

β€Žsrc/useDrop.ts

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ const createProcess = (options: DropAreaOptions, mounted: React.RefObject<boolea
5151
}
5252
};
5353

54-
const useDrop = (options: DropAreaOptions = {}): DropAreaState => {
54+
const useDrop = (options: DropAreaOptions = {}, args = []): DropAreaState => {
5555
const {onFiles, onText, onUri} = options;
5656
const mounted = useRefMounted();
5757
const [over, setOverRaw] = useState<boolean>(false);
@@ -61,6 +61,7 @@ const useDrop = (options: DropAreaOptions = {}): DropAreaState => {
6161
useEffect(() => {
6262
const onDragOver = (event) => {
6363
event.preventDefault();
64+
setOver(true);
6465
};
6566

6667
const onDragEnter = (event) => {
@@ -69,7 +70,7 @@ const useDrop = (options: DropAreaOptions = {}): DropAreaState => {
6970
};
7071

7172
const onDragLeave = () => {
72-
setOver(true);
73+
setOver(false);
7374
};
7475

7576
const onDragExit = () => {
@@ -86,25 +87,23 @@ const useDrop = (options: DropAreaOptions = {}): DropAreaState => {
8687
process(event.clipboardData, event);
8788
};
8889

89-
window.addEventListener('dragover', onDragOver);
90-
window.addEventListener('dragenter', onDragEnter);
91-
window.addEventListener('dragleave', onDragLeave);
92-
window.addEventListener('dragexit', onDragExit);
93-
window.addEventListener('drop', onDrop);
94-
95-
if (onText) {
96-
window.addEventListener('paste', onPaste);
97-
}
90+
document.addEventListener('dragover', onDragOver);
91+
document.addEventListener('dragenter', onDragEnter);
92+
document.addEventListener('dragleave', onDragLeave);
93+
document.addEventListener('dragexit', onDragExit);
94+
document.addEventListener('drop', onDrop);
95+
if (onText)
96+
document.addEventListener('paste', onPaste);
9897

9998
return () => {
100-
window.removeEventListener('dragover', onDragOver);
101-
window.removeEventListener('dragenter', onDragEnter);
102-
window.removeEventListener('dragleave', onDragLeave);
103-
window.removeEventListener('dragexit', onDragExit);
104-
window.removeEventListener('drop', onDrop);
105-
window.removeEventListener('paste', onPaste);
99+
document.removeEventListener('dragover', onDragOver);
100+
document.removeEventListener('dragenter', onDragEnter);
101+
document.removeEventListener('dragleave', onDragLeave);
102+
document.removeEventListener('dragexit', onDragExit);
103+
document.removeEventListener('drop', onDrop);
104+
document.removeEventListener('paste', onPaste);
106105
};
107-
}, [process]);
106+
}, [process, ...args]);
108107

109108
return {over};
110109
};

0 commit comments

Comments
Β (0)