Skip to content

Commit c56ac70

Browse files
committed
fix: improved handeling of multiple
1 parent f1ef237 commit c56ac70

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

src/client.js

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -111,13 +111,12 @@ async function fileEvent(event) {
111111
try {
112112
let input = event.currentTarget;
113113
let multiple = input.multiple;
114-
if (!multiple) {
114+
115+
// If 'multiple' is not explicitly set, check the attribute.
116+
if (multiple !== true && multiple !== false) {
115117
multiple = input.getAttribute("multiple");
116-
if (multiple !== null && multiple !== "false") {
117-
multiple = true;
118-
} else {
119-
multiple = false;
120-
}
118+
multiple = multiple !== null && multiple !== "false";
119+
input.multiple = multiple;
121120
}
122121

123122
let selected = inputs.get(input) || new Map();
@@ -347,12 +346,20 @@ function setFiles(element, files) {
347346
else if (!files.length) return;
348347

349348
let selected = inputs.get(element) || new Map();
349+
350+
if (!element.multiple) {
351+
for (let key of selected.keys()) {
352+
selected.delete(key); // Remove the entry from the selected map
353+
Files.delete(key); // Remove the corresponding entry from the Files map
354+
}
355+
}
350356
for (let i = 0; i < files.length; i++) {
351357
if (!files[i].id) files[i].id = files[i].pathname;
352358
files[i].input = element;
353359
selected.set(files[i].id, files[i]);
354360
Files.set(files[i].id, files[i]);
355361
}
362+
356363
inputs.set(element, selected);
357364
if (element.renderValue)
358365
render({

0 commit comments

Comments
 (0)