@@ -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