@@ -2,9 +2,10 @@ package asset
22
33const mainJs = `
44(function () {
5+ var strUndef = 'undefined';
56var classNone = 'none';
67var classHeader = 'header';
7- var leavingEvent = typeof window.onpagehide !== 'undefined' ? 'pagehide' : 'beforeunload';
8+ var leavingEvent = typeof window.onpagehide !== strUndef ? 'pagehide' : 'beforeunload';
89var Enter = 'Enter';
910var Escape = 'Escape';
1011var Esc = 'Esc';
@@ -420,7 +421,7 @@ e.target.click();
420421break;
421422}
422423}
423- if (typeof fileInput.webkitdirectory === 'undefined' ) {
424+ if (typeof fileInput.webkitdirectory === strUndef ) {
424425addClass(uploadType, classNone);
425426return;
426427}
@@ -515,19 +516,27 @@ function enableUploadProgress() { // also fix Safari upload filename has no path
515516if (!FormData) {
516517return;
517518}
518- var btnSubmit = form.querySelector('.submit');
519+ var btnSubmit = form.querySelector('.submit') || form.querySelector('input[type=submit]') ;
519520if (!btnSubmit) {
520521return;
521522}
523+ var elProgress = btnSubmit.querySelector('.progress');
522524function onComplete() {
525+ if (elProgress) {
526+ elProgress.style.width = '';
527+ }
523528btnSubmit.disabled = false;
524529}
525530function onLoad() {
526531location.reload();
527532}
528- form.addEventListener('submit', function (e) {
529- e.stopPropagation();
530- e.preventDefault();
533+ function onProgress(e) {
534+ if (e.lengthComputable) {
535+ var percent = 100 * e.loaded / e.total;
536+ elProgress.style.width = percent + '%';
537+ }
538+ }
539+ function uploadProgressively() {
531540var files = Array.prototype.slice.call(fileInput.files);
532541if (!files.length) {
533542return;
@@ -542,12 +551,21 @@ parts.append(formName, file);
542551}
543552});
544553var xhr = new XMLHttpRequest();
545- xhr.addEventListener('error', onComplete);
546- xhr.addEventListener('load', onComplete);
547- xhr.addEventListener('load', onLoad);
554+ xhr.upload.addEventListener('error', onComplete);
555+ xhr.upload.addEventListener('abort', onComplete);
556+ xhr.upload.addEventListener('load', onComplete);
557+ xhr.upload.addEventListener('load', onLoad);
558+ if (elProgress) {
559+ xhr.upload.addEventListener('progress', onProgress);
560+ }
548561xhr.open(form.method, form.action);
549562xhr.send(parts);
550563btnSubmit.disabled = true;
564+ }
565+ form.addEventListener('submit', function (e) {
566+ e.stopPropagation();
567+ e.preventDefault();
568+ uploadProgressively();
551569});
552570}
553571enableAddDir();
0 commit comments