Skip to content

Commit d419dc3

Browse files
committed
fix: replace selected file if multiple false
1 parent 50dc031 commit d419dc3

File tree

1 file changed

+27
-3
lines changed

1 file changed

+27
-3
lines changed

src/client.js

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,12 +108,21 @@ async function init(elements) {
108108

109109
async function fileEvent(event) {
110110
try {
111-
const input = event.target;
111+
const input = event.currentTarget;
112+
let multiple = input.multiple
113+
if (!multiple) {
114+
multiple = input.getAttribute('multiple');
115+
if (multiple !== null && multiple !== "false") {
116+
multiple = true;
117+
} else {
118+
multiple = false;
119+
}
120+
}
121+
112122
let selected = inputs.get(input) || new Map()
113123
let files = input.files;
114124
if (!files || !files.length) {
115125
event.preventDefault()
116-
const multiple = input.multiple
117126
if (input.hasAttribute('directory')) {
118127
let handle = await window.showDirectoryPicker();
119128
let file = {
@@ -130,6 +139,14 @@ async function fileEvent(event) {
130139
}
131140

132141
file.handle = handle
142+
143+
if (!multiple) {
144+
for (let [id] of selected) {
145+
Files.delete(id);
146+
}
147+
selected.clear();
148+
}
149+
133150
selected.set(file.id, file)
134151
Files.set(file.id, file)
135152

@@ -169,6 +186,13 @@ async function fileEvent(event) {
169186
console.log('Duplicate file has been selected. This could be in error as the browser does not provide a clear way of checking duplictaes')
170187
}
171188

189+
if (!multiple) {
190+
for (let [id] of selected) {
191+
Files.delete(id);
192+
}
193+
selected.clear();
194+
}
195+
172196
selected.set(files[i].id, files[i])
173197
Files.set(files[i].id, files[i])
174198
}
@@ -892,7 +916,7 @@ Observer.init({
892916

893917
Actions.init([
894918
{
895-
name: ["upload", "download", "saveLocally", "import", "export"],
919+
name: ["upload", "download", "saveLocally", "asveAs", "import", "export"],
896920
callback: (action) => {
897921
if (action.name === 'upload')
898922
upload(action.element)

0 commit comments

Comments
 (0)