@@ -17,21 +17,35 @@ const FileExplorerRowEditing = ({ item, view, columnIndex }: FileExplorerRowEdit
17
17
const inputRef = useRef < any > ( null )
18
18
const [ itemName , setItemName ] = useState ( item . name )
19
19
20
- const onSetItemName = async ( event : any ) => {
21
- event . preventDefault ( )
22
- event . stopPropagation ( )
20
+ const onSaveItemName = async ( name : string , event ?: any ) => {
21
+ if ( event ) {
22
+ event . preventDefault ( )
23
+ event . stopPropagation ( )
24
+ }
25
+
23
26
if ( item . type === STORAGE_ROW_TYPES . FILE ) {
24
- await renameFile ( item , itemName , columnIndex )
27
+ await renameFile ( item , name , columnIndex )
25
28
} else if ( has ( item , 'id' ) ) {
26
29
const itemWithColumnIndex = { ...item , columnIndex }
27
- renameFolder ( itemWithColumnIndex , itemName , columnIndex )
30
+ renameFolder ( itemWithColumnIndex , name , columnIndex )
28
31
} else {
29
- addNewFolder ( itemName , columnIndex )
32
+ addNewFolder ( name , columnIndex )
30
33
}
31
34
}
32
35
33
36
useEffect ( ( ) => {
34
37
if ( inputRef . current ) inputRef . current . select ( )
38
+
39
+ // [Joshen] Esc should revert changes
40
+ const handleEsc = ( event : KeyboardEvent ) => {
41
+ if ( event . key === 'Escape' ) {
42
+ if ( item ?. id !== undefined ) onSaveItemName ( item . name )
43
+ else addNewFolder ( '' , columnIndex )
44
+ }
45
+ }
46
+
47
+ window . addEventListener ( 'keydown' , handleEsc )
48
+ return ( ) => window . removeEventListener ( 'keydown' , handleEsc )
35
49
} , [ ] )
36
50
37
51
return (
@@ -45,17 +59,21 @@ const FileExplorerRowEditing = ({ item, view, columnIndex }: FileExplorerRowEdit
45
59
mimeType = { item . metadata ?. mimetype }
46
60
/>
47
61
</ div >
48
- < form className = "h-9" onSubmit = { onSetItemName } >
62
+ < form className = "h-9" onSubmit = { ( event ) => onSaveItemName ( itemName , event ) } >
49
63
< input
50
64
autoFocus
51
65
ref = { inputRef }
52
66
className = "storage-row-input ml-3 h-full bg-inherit p-0 px-1 text-sm"
53
67
type = "text"
54
68
value = { itemName }
55
69
onChange = { ( event ) => setItemName ( event . target . value ) }
56
- onBlur = { onSetItemName }
70
+ onBlur = { ( event ) => onSaveItemName ( itemName , event ) }
71
+ />
72
+ < button
73
+ className = "hidden"
74
+ type = "submit"
75
+ onClick = { ( event ) => onSaveItemName ( itemName , event ) }
57
76
/>
58
- < button className = "hidden" type = "submit" onClick = { onSetItemName } />
59
77
</ form >
60
78
</ div >
61
79
</ div >
0 commit comments