Skip to content

Commit 8d58b89

Browse files
committed
fix: preventDefault logic
1 parent c4e191c commit 8d58b89

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

src/AjaxUploader.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,16 @@ class AjaxUploader extends Component<UploadProps> {
6666
}
6767
};
6868

69-
onDataTransferFiles = async (dataTransfer: DataTransfer) => {
69+
onDataTransferFiles = async (dataTransfer: DataTransfer, existFileCallback?: () => void) => {
7070
const { multiple, accept, directory } = this.props;
7171

7272
const items: DataTransferItem[] = [...(dataTransfer.items || [])];
7373
let files: File[] = [...(dataTransfer.files || [])];
7474

75+
if (files.length > 0 || items.some(item => item.kind === 'file')) {
76+
existFileCallback?.();
77+
}
78+
7579
if (directory) {
7680
files = await traverseFileTree(Array.prototype.slice.call(items), (_file: RcFile) =>
7781
attrAccept(_file, this.props.accept),
@@ -97,7 +101,9 @@ class AjaxUploader extends Component<UploadProps> {
97101

98102
if (e.type === 'paste') {
99103
const clipboardData = (e as ClipboardEvent).clipboardData;
100-
return this.onDataTransferFiles(clipboardData);
104+
return this.onDataTransferFiles(clipboardData, () => {
105+
e.preventDefault();
106+
});
101107
}
102108
};
103109

tests/uploader.spec.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -735,6 +735,12 @@ describe('uploader', () => {
735735
},
736736
],
737737
};
738+
739+
const preventDefaultSpy = jest.spyOn(Event.prototype, 'preventDefault');
740+
741+
fireEvent.dragOver(input);
742+
expect(preventDefaultSpy).toHaveBeenCalledTimes(1);
743+
738744
fireEvent.drop(input, { dataTransfer: { items: [makeDataTransferItemAsync(files)] } });
739745
const mockStart = jest.fn();
740746
handlers.onStart = mockStart;
@@ -743,6 +749,8 @@ describe('uploader', () => {
743749
expect(mockStart.mock.calls.length).toBe(1);
744750
done();
745751
}, 1000);
752+
753+
preventDefaultSpy.mockRestore();
746754
});
747755

748756
it('unaccepted type files to upload will not trigger onStart when select directory', done => {

0 commit comments

Comments
 (0)