From 6f8ebf91e8b4d373528060e2d9f9855ace3551a6 Mon Sep 17 00:00:00 2001 From: Sevan Nerse Date: Sun, 17 Jan 2021 21:20:40 +0300 Subject: [PATCH] DropzoneFileUpload.vue component is adjusted --- .../components/Inputs/DropzoneFileUpload.vue | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/resources/assets/js/components/Inputs/DropzoneFileUpload.vue b/resources/assets/js/components/Inputs/DropzoneFileUpload.vue index 9cdeed312..d5d04f023 100644 --- a/resources/assets/js/components/Inputs/DropzoneFileUpload.vue +++ b/resources/assets/js/components/Inputs/DropzoneFileUpload.vue @@ -81,6 +81,7 @@ Dropzone.autoDiscover = false let preview = this.isPreviewSingle ? this.$refs.previewSingle : this.$refs.previewMultiple; let self = this + let finalOptions = { ...this.options, url: this.url, @@ -88,29 +89,41 @@ thumbnailHeight: null, previewsContainer: preview, previewTemplate: preview.innerHTML, - maxFiles: (!this.multiple) ? 1 : null, init: function () { this.on("addedfile", function (file) { - self.currentFile = file; + self.files.push(file) + + if (self.options.maxFiles == 1) { + self.$emit('change', file) + } else { + self.$emit('change', this.files) + } + }), + this.on("maxfilesexceeded", function(file) { + this.removeAllFiles('notCancel') + this.addFile(file) }) } } + this.dropzone = new Dropzone(this.$el, finalOptions) preview.innerHTML = '' let evtList = ['drop', 'dragstart', 'dragend', 'dragenter', 'dragover', 'addedfile', 'removedfile', 'thumbnail', 'error', 'processing', 'uploadprogress', 'sending', 'success', 'complete', 'canceled', 'maxfilesreached', 'maxfilesexceeded', 'processingmultiple', 'sendingmultiple', 'successmultiple', 'completemultiple', 'canceledmultiple', 'totaluploadprogress', 'reset', 'queuecomplete'] + evtList.forEach(evt => { this.dropzone.on(evt, (data) => { this.$emit(evt, data); - if (evt === 'addedfile') { - this.files.push(data) - this.$emit('change', this.files); - } else if (evt === 'removedfile') { + if (evt === 'removedfile') { + let index = this.files.findIndex(f => f.upload.uuid === data.upload.uuid) + if (index !== -1) { this.files.splice(index, 1); } + this.$emit('change', this.files); + } }) })