@@ -269,37 +269,32 @@ class UploadCollectionItem extends ListItem {
269
269
constructor ( ) {
270
270
super ( ) ;
271
271
this . i18nFioriBundle = getI18nBundle ( "@ui5/webcomponents-fiori" ) ;
272
-
273
- this . _editPressed = false ; // indicates if the edit btn has been pressed
274
- this . doNotCloseInput = false ; // Indicates whether the input should be closed when using keybord for navigation
275
- this . isEnter = false ;
276
- }
277
-
278
- onAfterRendering ( ) {
279
- if ( this . _editPressed ) {
280
- this . _editing = true ;
281
- this . _editPressed = false ;
282
- this . focusAndSelectText ( ) ;
283
- }
284
272
}
285
273
286
- async focusAndSelectText ( ) {
287
- await this . focus ( ) ;
274
+ async _initInputField ( ) {
275
+ await renderFinished ( ) ;
288
276
289
277
const inp = this . shadowRoot . getElementById ( "ui5-uci-edit-input" ) ;
278
+ inp . value = this . _fileNameWithoutExtension ;
290
279
291
280
await renderFinished ( ) ;
292
- if ( inp . getFocusDomRef ( ) ) {
293
- inp . getFocusDomRef ( ) . setSelectionRange ( 0 , this . _fileNameWithoutExtension . length ) ;
281
+
282
+ const inpFocusDomRef = inp . getFocusDomRef ( ) ;
283
+
284
+ if ( inpFocusDomRef ) {
285
+ inpFocusDomRef . focus ( ) ;
286
+ inpFocusDomRef . setSelectionRange ( 0 , this . _fileNameWithoutExtension . length ) ;
294
287
}
295
288
}
296
289
297
290
/**
298
291
* @override
299
292
*/
300
- onDetailClick ( event ) {
293
+ async onDetailClick ( event ) {
301
294
super . onDetailClick ( event ) ;
302
295
this . _editing = true ;
296
+
297
+ await this . _initInputField ( ) ;
303
298
}
304
299
305
300
_onDetailKeyup ( event ) {
@@ -308,79 +303,51 @@ class UploadCollectionItem extends ListItem {
308
303
}
309
304
}
310
305
311
- /**
312
- * @override
313
- */
314
- _onfocusout ( event ) {
315
- super . _onfocusout ( event ) ;
316
-
317
- const path = event . path || ( event . composedPath && event . composedPath ( ) ) ;
318
-
319
- this . _editPressed = this . isDetailPressed ( event ) ;
320
-
321
- if ( ! this . _editPressed && path . indexOf ( this ) > - 1 ) {
322
- this . _editing = false ;
323
- }
324
- }
325
-
326
- _onInputKeydown ( event ) {
327
- this . isEnter = isEnter ( event ) ;
328
- this . isEscape = isEscape ( event ) ;
306
+ _onInputFocusin ( event ) {
307
+ // prevent focusing the whole upload collection item.
308
+ event . stopPropagation ( ) ;
329
309
}
330
310
331
- _onInputKeyUp ( event ) {
332
- this . doNotCloseInput = true ;
333
- this . tempValue = event . target . value + this . _fileExtension ;
334
-
335
- if ( this . isEscape ) {
336
- [ this . fileName , this . tempValue ] = [ this . tempValue , this . fileName ] ;
337
- return this . _onRenameCancel ( ) ;
311
+ _onInputKeyDown ( event ) {
312
+ if ( isEscape ( event ) ) {
313
+ this . _onRenameCancel ( event ) ;
314
+ } else if ( isEnter ( event ) ) {
315
+ this . _onRename ( ) ;
316
+ } else if ( isSpace ( event ) ) {
317
+ event . stopImmediatePropagation ( ) ;
338
318
}
339
319
}
340
320
341
- isDetailPressed ( event ) {
342
- const path = event . path || ( event . composedPath && event . composedPath ( ) ) ;
321
+ _onRename ( event ) {
322
+ const inp = this . shadowRoot . getElementById ( "ui5-uci-edit-input" ) ;
323
+ this . fileName = inp . value + this . _fileExtension ;
324
+ this . fireEvent ( "rename" ) ;
343
325
344
- return path . some ( e => {
345
- return e . classList && e . classList . contains ( "ui5-uci-edit" ) ;
346
- } ) ;
326
+ this . _editing = false ;
327
+ this . _focus ( ) ;
347
328
}
348
329
349
- _onInputChange ( event ) {
350
- if ( this . shadowRoot . getElementById ( "ui5-uci-edit-cancel" ) . active ) {
351
- return ;
352
- }
353
-
354
- if ( ( ! this . isEnter && this . doNotCloseInput ) || this . isEscape ) {
355
- [ this . fileName , this . tempValue ] = [ this . tempValue , this . fileName ] ;
356
- this . isEscape = false ;
357
- return ;
330
+ _onRenameKeyup ( event ) {
331
+ if ( isSpace ( event ) ) {
332
+ this . _onRename ( event ) ;
358
333
}
334
+ }
359
335
336
+ async _onRenameCancel ( event ) {
360
337
this . _editing = false ;
361
- this . fileName = event . target . value + this . _fileExtension ;
362
- this . fireEvent ( "rename" ) ;
363
338
364
- if ( this . isEnter ) {
339
+ if ( isEscape ( event ) ) {
340
+ await renderFinished ( ) ;
341
+ this . shadowRoot . getElementById ( `${ this . _id } -editing-button` ) . focus ( ) ;
342
+ } else {
365
343
this . _focus ( ) ;
366
344
}
367
345
}
368
346
369
- _onRename ( event ) {
370
- this . doNotCloseInput = false ;
371
- this . _editing = false ;
372
- this . _focus ( ) ;
373
- }
374
-
375
- _onRenameCancel ( event ) {
376
- if ( ! this . isEscape ) {
377
- [ this . fileName , this . tempValue ] = [ this . tempValue , this . fileName ] ;
347
+ _onRenameCancelKeyup ( event ) {
348
+ if ( isSpace ( event ) ) {
349
+ this . _onRenameCancel ( event ) ;
378
350
}
379
-
380
- this . _editing = false ;
381
- this . doNotCloseInput = false ;
382
-
383
- this . _focus ( ) ;
384
351
}
385
352
386
353
_focus ( ) {
@@ -395,10 +362,26 @@ class UploadCollectionItem extends ListItem {
395
362
this . fireEvent ( "retry" ) ;
396
363
}
397
364
365
+ _onRetryKeyup ( event ) {
366
+ if ( isSpace ( event ) ) {
367
+ this . _onRetry ( event ) ;
368
+ }
369
+ }
370
+
398
371
_onTerminate ( event ) {
399
372
this . fireEvent ( "terminate" ) ;
400
373
}
401
374
375
+ _onTerminateKeyup ( event ) {
376
+ if ( isSpace ( event ) ) {
377
+ this . _onTerminate ( event ) ;
378
+ }
379
+ }
380
+
381
+ getFocusDomRef ( ) {
382
+ return this . getDomRef ( ) ;
383
+ }
384
+
402
385
get list ( ) {
403
386
return this . assignedSlot . parentElement ;
404
387
}
0 commit comments