Procházet zdrojové kódy

Fix #1514: Enhancements to duplicate file selection

Kartik Visweswaran před 5 roky
rodič
revize
ff74cad650
3 změnil soubory, kde provedl 15 přidání a 6 odebrání
  1. 4 0
      CHANGE.md
  2. 11 6
      js/fileinput.js
  3. 0 0
      js/fileinput.min.js

+ 4 - 0
CHANGE.md

@@ -5,6 +5,10 @@ Change Log: `bootstrap-fileinput`
 
 
 **Date:** _under development_
 **Date:** _under development_
 
 
+- (enh #1514): Enhancements to duplicate file selection.
+    - New event `fileduplicateerror` will be triggered after every duplicate file detected.
+    - Duplicate error container can be closed by clicking the `close` icon.
+    - New property `fadeDelay` used in fade out / fade in animations of error containers.    
 - (bug #1510): Lock browse button correctly when disable method is called.
 - (bug #1510): Lock browse button correctly when disable method is called.
 - (bug #1508): Correct file caption after files are uploaded.
 - (bug #1508): Correct file caption after files are uploaded.
 - (bug #1499, #1502): Correct duplicate file check error rendering.
 - (bug #1499, #1502): Correct duplicate file check error rendering.

+ 11 - 6
js/fileinput.js

@@ -2021,7 +2021,7 @@
             msg = self.msgFoldersNotAllowed.replace('{n}', folders);
             msg = self.msgFoldersNotAllowed.replace('{n}', folders);
             self._addError(msg);
             self._addError(msg);
             self._setValidationError();
             self._setValidationError();
-            $error.fadeIn(800);
+            $error.fadeIn(self.fadeDelay);
             self._raise('filefoldererror', [folders, msg]);
             self._raise('filefoldererror', [folders, msg]);
         },
         },
         _showFileError: function (msg, params, event) {
         _showFileError: function (msg, params, event) {
@@ -2034,7 +2034,7 @@
             } else {
             } else {
                 $error.find('ul').append(e);
                 $error.find('ul').append(e);
             }
             }
-            $error.fadeIn(800);
+            $error.fadeIn(self.fadeDelay);
             self._raise(ev, [params, msg]);
             self._raise(ev, [params, msg]);
             self._setValidationError('file-input-new');
             self._setValidationError('file-input-new');
             return true;
             return true;
@@ -2044,7 +2044,7 @@
             params = params || {};
             params = params || {};
             params.reader = self.reader;
             params.reader = self.reader;
             self._addError(msg);
             self._addError(msg);
-            $error.fadeIn(800);
+            $error.fadeIn(self.fadeDelay);
             self._raise(ev, [params, msg]);
             self._raise(ev, [params, msg]);
             if (!self.isAjaxUpload) {
             if (!self.isAjaxUpload) {
                 self._clearFileInput();
                 self._clearFileInput();
@@ -2060,7 +2060,7 @@
             self._addError(msg);
             self._addError(msg);
             self.isError = true;
             self.isError = true;
             self._updateFileDetails(0);
             self._updateFileDetails(0);
-            $error.fadeIn(800);
+            $error.fadeIn(self.fadeDelay);
             self._raise('fileerror', [params, msg]);
             self._raise('fileerror', [params, msg]);
             self._clearFileInput();
             self._clearFileInput();
             self._setValidationError();
             self._setValidationError();
@@ -4824,11 +4824,14 @@
                     if (self.duplicateErrors.length) {
                     if (self.duplicateErrors.length) {
                         errors = '<li>' + self.duplicateErrors.join('</li><li>') + '</li>';
                         errors = '<li>' + self.duplicateErrors.join('</li><li>') + '</li>';
                         if ($error.find('ul').length === 0) {
                         if ($error.find('ul').length === 0) {
-                            $error.html('<ul>' + errors + '</ul>');
+                            $error.html(self.errorCloseButton + '<ul>' + errors + '</ul>');
                         } else {
                         } else {
                             $error.find('ul').append(errors);
                             $error.find('ul').append(errors);
                         }
                         }
-                        $error.fadeIn(800);
+                        $error.fadeIn(self.fadeDelay);
+                        self._handler($error.find('.kv-error-close'), 'click', function() {
+                            $error.fadeOut(self.fadeDelay);
+                        });
                         self.duplicateErrors = [];
                         self.duplicateErrors = [];
                     }
                     }
                     if (self.isAjaxUpload && self.fileManager.count() > 0) {
                     if (self.isAjaxUpload && self.fileManager.count() > 0) {
@@ -4890,6 +4893,7 @@
                     if (self.isAjaxUpload) {
                     if (self.isAjaxUpload) {
                         setTimeout(function () {
                         setTimeout(function () {
                             self.duplicateErrors.push(msg);
                             self.duplicateErrors.push(msg);
+                            self._raise('fileduplicateerror', [file, fileId, caption, fSizeKB, previewId, i]);
                             readFile(i + 1);
                             readFile(i + 1);
                             self._updateFileDetails(numFiles);
                             self._updateFileDetails(numFiles);
                         }, self.processDelay);
                         }, self.processDelay);
@@ -5527,6 +5531,7 @@
             retryCount: 'retryCount'
             retryCount: 'retryCount'
         },
         },
         maxAjaxThreads: 5,
         maxAjaxThreads: 5,
+        fadeDelay: 800,
         processDelay: 100,
         processDelay: 100,
         queueDelay: 10, // must be lesser than process delay
         queueDelay: 10, // must be lesser than process delay
         progressDelay: 0, // must be lesser than process delay
         progressDelay: 0, // must be lesser than process delay

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
js/fileinput.min.js


Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů