Skip to content

Commit fdf3002

Browse files
committed
feat(tpl/upload): ignore dropped files if is uploading
1 parent 8cc67b2 commit fdf3002

File tree

4 files changed

+44
-14
lines changed

4 files changed

+44
-14
lines changed

src/tpl/asset/main.css

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,10 @@ em {
188188
display: block;
189189
}
190190

191+
.upload.uploading.dragging::before {
192+
background: transparent;
193+
}
194+
191195
.upload input,
192196
.upload button {
193197
display: block;

src/tpl/asset/main.css.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,9 @@ background: #c9c;
157157
.upload.dragging::before {
158158
display: block;
159159
}
160+
.upload.uploading.dragging::before {
161+
background: transparent;
162+
}
160163
.upload input,
161164
.upload button {
162165
display: block;

src/tpl/asset/main.js

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,8 @@
411411
return;
412412
}
413413

414+
var classUploading = 'uploading';
415+
414416
var file = 'file';
415417
var dirFile = 'dirfile';
416418
var innerDirFile = 'innerdirfile';
@@ -428,6 +430,10 @@
428430
ele && ele.classList.remove(className);
429431
}
430432

433+
function hasClass(ele, className) {
434+
return ele && ele.classList.contains(className);
435+
}
436+
431437
function enableAddDir() {
432438
var classHidden = 'hidden';
433439
var classActive = 'active';
@@ -557,6 +563,7 @@
557563
}
558564
fileInput.disabled = false;
559565
btnSubmit.disabled = false;
566+
removeClass(upload, classUploading);
560567
}
561568

562569
function onLoad() {
@@ -601,6 +608,7 @@
601608

602609
xhr.open(form.method, form.action);
603610
xhr.send(parts);
611+
addClass(upload, classUploading);
604612
fileInput.disabled = true;
605613
btnSubmit.disabled = true;
606614
}
@@ -621,15 +629,17 @@
621629
}
622630

623631
function enableAddDragDrop(uploadProgressively) {
632+
var classDragging = 'dragging';
633+
624634
function onDragEnterOver(e) {
625635
e.stopPropagation();
626636
e.preventDefault();
627-
addClass(e.currentTarget, 'dragging');
637+
addClass(e.currentTarget, classDragging);
628638
}
629639

630640
function onDragLeave(e) {
631641
if (e.target === e.currentTarget) {
632-
removeClass(e.currentTarget, 'dragging');
642+
removeClass(e.currentTarget, classDragging);
633643
}
634644
}
635645

@@ -688,7 +698,10 @@
688698
function onDrop(e) {
689699
e.stopPropagation();
690700
e.preventDefault();
691-
removeClass(e.currentTarget, 'dragging');
701+
removeClass(e.currentTarget, classDragging);
702+
if (hasClass(e.currentTarget, classUploading)) {
703+
return;
704+
}
692705
fileInput.value = '';
693706

694707
if (!e.dataTransfer || !e.dataTransfer.files || !e.dataTransfer.files.length) {
@@ -746,10 +759,10 @@
746759
}
747760
}
748761

749-
upload.addEventListener('dragenter', onDragEnterOver, false);
750-
upload.addEventListener('dragover', onDragEnterOver, false);
751-
upload.addEventListener('dragleave', onDragLeave, false);
752-
upload.addEventListener('drop', onDrop, false);
762+
upload.addEventListener('dragenter', onDragEnterOver);
763+
upload.addEventListener('dragover', onDragEnterOver);
764+
upload.addEventListener('dragleave', onDragLeave);
765+
upload.addEventListener('drop', onDrop);
753766
}
754767

755768
enableAddDir();

src/tpl/asset/main.js.go

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,7 @@ var uploadType = document.body.querySelector('.upload-type');
369369
if (!uploadType) {
370370
return;
371371
}
372+
var classUploading = 'uploading';
372373
var file = 'file';
373374
var dirFile = 'dirfile';
374375
var innerDirFile = 'innerdirfile';
@@ -382,6 +383,9 @@ ele && ele.classList.add(className);
382383
function removeClass(ele, className) {
383384
ele && ele.classList.remove(className);
384385
}
386+
function hasClass(ele, className) {
387+
return ele && ele.classList.contains(className);
388+
}
385389
function enableAddDir() {
386390
var classHidden = 'hidden';
387391
var classActive = 'active';
@@ -494,6 +498,7 @@ elProgress.style.width = '';
494498
}
495499
fileInput.disabled = false;
496500
btnSubmit.disabled = false;
501+
removeClass(upload, classUploading);
497502
}
498503
function onLoad() {
499504
location.reload();
@@ -531,6 +536,7 @@ xhr.upload.addEventListener('progress', onProgress);
531536
}
532537
xhr.open(form.method, form.action);
533538
xhr.send(parts);
539+
addClass(upload, classUploading);
534540
fileInput.disabled = true;
535541
btnSubmit.disabled = true;
536542
}
@@ -547,14 +553,15 @@ uploadProgressively(files);
547553
return uploadProgressively;
548554
}
549555
function enableAddDragDrop(uploadProgressively) {
556+
var classDragging = 'dragging';
550557
function onDragEnterOver(e) {
551558
e.stopPropagation();
552559
e.preventDefault();
553-
addClass(e.currentTarget, 'dragging');
560+
addClass(e.currentTarget, classDragging);
554561
}
555562
function onDragLeave(e) {
556563
if (e.target === e.currentTarget) {
557-
removeClass(e.currentTarget, 'dragging');
564+
removeClass(e.currentTarget, classDragging);
558565
}
559566
}
560567
function getFilesFromEntries(entries, onDone) {
@@ -607,7 +614,10 @@ getFilesFromEntries(entries, onDone);
607614
function onDrop(e) {
608615
e.stopPropagation();
609616
e.preventDefault();
610-
removeClass(e.currentTarget, 'dragging');
617+
removeClass(e.currentTarget, classDragging);
618+
if (hasClass(e.currentTarget, classUploading)) {
619+
return;
620+
}
611621
fileInput.value = '';
612622
if (!e.dataTransfer || !e.dataTransfer.files || !e.dataTransfer.files.length) {
613623
return;
@@ -660,10 +670,10 @@ form.submit();
660670
}
661671
}
662672
}
663-
upload.addEventListener('dragenter', onDragEnterOver, false);
664-
upload.addEventListener('dragover', onDragEnterOver, false);
665-
upload.addEventListener('dragleave', onDragLeave, false);
666-
upload.addEventListener('drop', onDrop, false);
673+
upload.addEventListener('dragenter', onDragEnterOver);
674+
upload.addEventListener('dragover', onDragEnterOver);
675+
upload.addEventListener('dragleave', onDragLeave);
676+
upload.addEventListener('drop', onDrop);
667677
}
668678
enableAddDir();
669679
var uploadProgressively = enableUploadProgress();

0 commit comments

Comments
 (0)