@@ -111,13 +111,12 @@ async function fileEvent(event) {
111
111
try {
112
112
let input = event . currentTarget ;
113
113
let multiple = input . multiple ;
114
- if ( ! multiple ) {
114
+
115
+ // If 'multiple' is not explicitly set, check the attribute.
116
+ if ( multiple !== true && multiple !== false ) {
115
117
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 ;
121
120
}
122
121
123
122
let selected = inputs . get ( input ) || new Map ( ) ;
@@ -347,12 +346,20 @@ function setFiles(element, files) {
347
346
else if ( ! files . length ) return ;
348
347
349
348
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
+ }
350
356
for ( let i = 0 ; i < files . length ; i ++ ) {
351
357
if ( ! files [ i ] . id ) files [ i ] . id = files [ i ] . pathname ;
352
358
files [ i ] . input = element ;
353
359
selected . set ( files [ i ] . id , files [ i ] ) ;
354
360
Files . set ( files [ i ] . id , files [ i ] ) ;
355
361
}
362
+
356
363
inputs . set ( element , selected ) ;
357
364
if ( element . renderValue )
358
365
render ( {
0 commit comments