Skip to content

Commit 2558663

Browse files
committed
feat: 更新拖动上传脚本
1 parent 35f8b1d commit 2558663

File tree

1 file changed

+28
-6
lines changed

1 file changed

+28
-6
lines changed

src/BootstrapBlazor/wwwroot/modules/upload.js

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ export function init(id) {
77
return
88
}
99
const preventHandler = e => e.preventDefault()
10-
const upload = { el, preventHandler }
10+
const body = el.querySelector('.upload-drop-body');
11+
const upload = { el, body, preventHandler }
1112
Data.set(id, upload)
1213

1314
const inputFile = el.querySelector('[type="file"]')
@@ -20,7 +21,20 @@ export function init(id) {
2021
EventHandler.on(document, 'dragenter', preventHandler)
2122
EventHandler.on(document, 'dragover', preventHandler)
2223

23-
EventHandler.on(el, 'drop', e => {
24+
EventHandler.on(body, 'dragenter', e => {
25+
el.classList.add('dropping');
26+
})
27+
28+
EventHandler.on(body, 'dragleave', e => {
29+
el.classList.remove('dropping');
30+
});
31+
32+
EventHandler.on(body, 'drop', e => {
33+
el.classList.remove('dropping');
34+
35+
if (el.classList.contains('disabled')) {
36+
return;
37+
}
2438
try {
2539
const fileList = e.dataTransfer.files
2640
if (fileList.length === 0) {
@@ -36,6 +50,10 @@ export function init(id) {
3650
})
3751

3852
EventHandler.on(el, 'paste', e => {
53+
if (el.classList.contains('disabled')) {
54+
return;
55+
}
56+
3957
inputFile.files = e.clipboardData.files
4058
const event = new Event('change', { bubbles: true })
4159
inputFile.dispatchEvent(event)
@@ -66,14 +84,18 @@ export function dispose(id) {
6684
Data.remove(id)
6785

6886
if (upload) {
69-
const { el, preventHandler } = upload;
87+
const { el, body, preventHandler } = upload;
7088

71-
EventHandler.off(el, 'click')
72-
EventHandler.off(el, 'drop')
73-
EventHandler.off(el, 'paste')
7489
EventHandler.off(document, 'dragleave', preventHandler)
7590
EventHandler.off(document, 'drop', preventHandler)
7691
EventHandler.off(document, 'dragenter', preventHandler)
7792
EventHandler.off(document, 'dragover', preventHandler)
93+
94+
EventHandler.off(el, 'click')
95+
EventHandler.off(el, 'drop')
96+
EventHandler.off(el, 'paste')
97+
EventHandler.off(body, 'dragleave')
98+
EventHandler.off(body, 'drop')
99+
EventHandler.off(body, 'dragenter')
78100
}
79101
}

0 commit comments

Comments
 (0)