this.dropTarget = this.$refs.dropTarget;
this.selectButtons = this.$manyRefs.selectButton || [];
+ this.isActive = true;
+
this.url = this.$opts.url;
this.successMessage = this.$opts.successMessage;
this.errorMessage = this.$opts.errorMessage;
this.setupListeners();
}
+ /**
+ * Public method to allow external disabling/enabling of this drag+drop dropzone.
+ * @param {Boolean} active
+ */
+ toggleActive(active) {
+ this.isActive = active;
+ }
+
setupListeners() {
onSelect(this.selectButtons, this.manualSelectHandler.bind(this));
this.setupDropTargetHandlers();
event.preventDefault();
depth += 1;
- if (depth === 1) {
+ if (depth === 1 && this.isActive) {
this.showOverlay();
}
});
this.dropTarget.addEventListener('drop', event => {
event.preventDefault();
reset();
+
+ if (!this.isActive) {
+ return;
+ }
+
const clipboard = new Clipboard(event.dataTransfer);
const files = clipboard.getFiles();
for (const file of files) {
} else if (this.readyState === XMLHttpRequest.DONE && this.status >= 400) {
const content = this.responseText;
const data = content.startsWith('{') ? JSON.parse(content) : {message: content};
- const message = data?.message || content;
+ const message = data?.message || data?.error || content;
upload.markError(message);
}
},