Likely something that worked via dropzone before.
This adds support for our custom dropzone file handling.
Related to #4241
this.uploadLimitMessage = this.$opts.uploadLimitMessage;
this.zoneText = this.$opts.zoneText;
this.fileAcceptTypes = this.$opts.fileAccept;
+ this.allowMultiple = this.$opts.allowMultiple === 'true';
this.setupListeners();
}
}
manualSelectHandler() {
- const input = elem('input', {type: 'file', style: 'left: -400px; visibility: hidden; position: fixed;', accept: this.fileAcceptTypes});
+ const input = elem('input', {
+ type: 'file',
+ style: 'left: -400px; visibility: hidden; position: fixed;',
+ accept: this.fileAcceptTypes,
+ multiple: this.allowMultiple ? '' : null,
+ });
this.container.append(input);
input.click();
input.addEventListener('change', () => {
const el = document.createElement(tagName);
for (const [key, val] of Object.entries(attrs)) {
- el.setAttribute(key, val);
+ if (val === null) {
+ el.removeAttribute(key);
+ } else {
+ el.setAttribute(key, val);
+ }
}
for (const child of children) {
option:dropzone:upload-limit-message="{{ trans('errors.server_upload_limit') }}"
option:dropzone:zone-text="{{ trans('entities.attachments_dropzone') }}"
option:dropzone:file-accept="*"
+ option:dropzone:allow-multiple="true"
class="px-l files">
<div refs="attachments@list-container dropzone@drop-target" class="relative">
option:dropzone:upload-limit-message="{{ trans('errors.server_upload_limit') }}"
option:dropzone:zone-text="{{ trans('components.image_dropzone_drop') }}"
option:dropzone:file-accept="image/*"
+ option:dropzone:allow-multiple="true"
option:image-manager:uploaded-to="{{ $uploaded_to ?? 0 }}"
class="image-manager">