Skip to content

Commit f222244

Browse files
author
Carlos Hernández
committed
Refactor dropzone controller to support multiple files, improve test coverage, and adjust styles.
# Conflicts: # src/Dropzone/assets/dist/controller.js # src/Dropzone/assets/src/controller.ts # src/Dropzone/assets/test/unit/controller.test.ts # src/Dropzone/assets/test/vitest.setup.js # src/Dropzone/assets/vitest.config.mjs
1 parent 644b2a1 commit f222244

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

src/Dropzone/assets/src/controller.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* file that was distributed with this source code.
88
*/
99

10-
import { Controller } from '@hotwired/stimulus';
10+
import {Controller} from '@hotwired/stimulus';
1111

1212
export default class extends Controller {
1313
declare readonly inputTarget: HTMLInputElement;
@@ -66,13 +66,13 @@ export default class extends Controller {
6666
}
6767
}
6868
if (!this.inputTarget || !this.inputTarget.files || this.inputTarget?.files?.length === 0) {
69-
this.placeholderTarget.style.display = 'block';
69+
this.placeholderTarget.style.display = "block";
7070
if (!this.isMultiple) {
71-
this.inputTarget.style.display = 'block';
71+
this.inputTarget.style.display = "block";
7272
}
7373
}
7474

75-
this.dispatchEvent('clear');
75+
this.dispatchEvent("clear");
7676
}
7777

7878
onInputChange() {
@@ -83,14 +83,14 @@ export default class extends Controller {
8383
}
8484

8585
if (!this.isMultiple && this.files.size > 0) {
86-
this.inputTarget.style.display = 'none';
86+
this.inputTarget.style.display = "none";
8787
}
8888

8989
const selectedFiles = this.isMultiple ? Array.from(files) : Array.from(files).slice(0, 1);
9090
this.addFiles(selectedFiles);
9191
this.updateFileInput();
9292
this.renderPreview();
93-
this.dispatchEvent('change', files);
93+
this.dispatchEvent("change", files);
9494
}
9595

9696
private renderPreview() {
@@ -114,7 +114,7 @@ export default class extends Controller {
114114

115115
private clearPreviewContainer() {
116116
const previews = this.previewTargets;
117-
previews.slice(1).forEach((el) => el.remove());
117+
previews.slice(1).forEach(el => el.remove());
118118
}
119119

120120
private buildPreview(file: File, element?: HTMLElement): HTMLElement {
@@ -125,7 +125,7 @@ export default class extends Controller {
125125

126126
const fileName = element.querySelector('.dropzone-preview-filename');
127127
if (fileName) {
128-
fileName.textContent = file.name;
128+
fileName.textContent = file.name
129129
}
130130

131131
const button = element.querySelector('.dropzone-preview-button');
@@ -184,6 +184,6 @@ export default class extends Controller {
184184
}
185185

186186
private dispatchEvent(name: string, payload: any = {}) {
187-
this.dispatch(name, { detail: payload, prefix: 'dropzone' });
187+
this.dispatch(name, {detail: payload, prefix: 'dropzone'});
188188
}
189189
}

0 commit comments

Comments
 (0)