1 import DropZone from "dropzone";
2 import { fadeOut } from "../../services/animations";
5 <div class="dropzone-container">
6 <div class="dz-message">{{placeholder}}</div>
10 const props = ['placeholder', 'uploadUrl', 'uploadedTo'];
13 const container = this.$el;
15 this._dz = new DropZone(container, {
17 dictRemoveFile: trans('components.image_upload_remove'),
18 timeout: Number(window.uploadTimeout) || 60000,
19 maxFilesize: Number(window.uploadLimit) || 256,
21 return _this.uploadUrl;
26 dz.on('sending', function (file, xhr, data) {
27 const token = window.document.querySelector('meta[name=token]').getAttribute('content');
28 data.append('_token', token);
29 const uploadedTo = typeof _this.uploadedTo === 'undefined' ? 0 : _this.uploadedTo;
30 data.append('uploaded_to', uploadedTo);
32 xhr.ontimeout = function (e) {
33 dz.emit('complete', file);
34 dz.emit('error', file, trans('errors.file_upload_timeout'));
38 dz.on('success', function (file, data) {
39 _this.$emit('success', {file, data});
40 fadeOut(file.previewElement, 800, () => {
45 dz.on('error', function (file, errorMessage, xhr) {
46 _this.$emit('error', {file, errorMessage, xhr});
48 function setMessage(message) {
49 const messsageEl = file.previewElement.querySelector('[data-dz-errormessage]');
50 messsageEl.textContent = message;
53 if (xhr && xhr.status === 413) {
54 setMessage(trans('errors.server_upload_limit'))
55 } else if (errorMessage.file) {
56 setMessage(errorMessage.file);
69 onClose: function () {
70 this._dz.removeAllFiles(true);