@@ -108,12 +108,21 @@ async function init(elements) {
108
108
109
109
async function fileEvent ( event ) {
110
110
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
+
112
122
let selected = inputs . get ( input ) || new Map ( )
113
123
let files = input . files ;
114
124
if ( ! files || ! files . length ) {
115
125
event . preventDefault ( )
116
- const multiple = input . multiple
117
126
if ( input . hasAttribute ( 'directory' ) ) {
118
127
let handle = await window . showDirectoryPicker ( ) ;
119
128
let file = {
@@ -130,6 +139,14 @@ async function fileEvent(event) {
130
139
}
131
140
132
141
file . handle = handle
142
+
143
+ if ( ! multiple ) {
144
+ for ( let [ id ] of selected ) {
145
+ Files . delete ( id ) ;
146
+ }
147
+ selected . clear ( ) ;
148
+ }
149
+
133
150
selected . set ( file . id , file )
134
151
Files . set ( file . id , file )
135
152
@@ -169,6 +186,13 @@ async function fileEvent(event) {
169
186
console . log ( 'Duplicate file has been selected. This could be in error as the browser does not provide a clear way of checking duplictaes' )
170
187
}
171
188
189
+ if ( ! multiple ) {
190
+ for ( let [ id ] of selected ) {
191
+ Files . delete ( id ) ;
192
+ }
193
+ selected . clear ( ) ;
194
+ }
195
+
172
196
selected . set ( files [ i ] . id , files [ i ] )
173
197
Files . set ( files [ i ] . id , files [ i ] )
174
198
}
@@ -892,7 +916,7 @@ Observer.init({
892
916
893
917
Actions . init ( [
894
918
{
895
- name : [ "upload" , "download" , "saveLocally" , "import" , "export" ] ,
919
+ name : [ "upload" , "download" , "saveLocally" , "asveAs" , " import", "export" ] ,
896
920
callback : ( action ) => {
897
921
if ( action . name === 'upload' )
898
922
upload ( action . element )
0 commit comments