@@ -108,12 +108,21 @@ async function init(elements) {
108108
109109async 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
893917Actions . 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