@@ -92,16 +92,16 @@ const FlexibleMenu: React.FC <{
92
92
const [ loadZulipOpen , setLoadZulipOpen ] = useState ( false )
93
93
94
94
const loadFileFromDisk = ( event : React . ChangeEvent < HTMLInputElement > ) => {
95
- console . log ( 'Triggered loading ')
95
+ console . debug ( 'Loading file from disk ')
96
96
const fileToLoad = event . target . files ! [ 0 ]
97
97
var fileReader = new FileReader ( ) ;
98
98
fileReader . onload = ( fileLoadedEvent ) => {
99
99
var textFromFileLoaded = fileLoadedEvent . target ! . result as string ;
100
- console . log ( `Loaded file! Content: ${ textFromFileLoaded } ` )
101
100
setContent ( textFromFileLoaded )
102
101
}
103
102
fileReader . readAsText ( fileToLoad , "UTF-8" )
104
- setOpenNav ( false )
103
+ // Manually close the menu as we prevent it closing below.
104
+ setOpenLoad ( false )
105
105
}
106
106
107
107
return < >
@@ -121,12 +121,14 @@ const FlexibleMenu: React.FC <{
121
121
< Dropdown open = { openLoad } setOpen = { setOpenLoad } icon = { faUpload } text = "Load"
122
122
useOverlay = { isInDropdown }
123
123
onClick = { ( ) => { setOpenExample ( false ) ; ( ! isInDropdown && setOpenNav ( false ) ) } } >
124
- < label htmlFor = "file-upload" className = "nav-link" >
124
+ < input id = "file-upload" type = "file" onChange = { loadFileFromDisk } onClick = { ( ev ) => ev . stopPropagation ( ) } />
125
+ { /* Need `ev.stopPropagation` to prevent closing until the file is loaded.
126
+ Otherwise the file-upload is destroyed too early. */ }
127
+ < label htmlFor = "file-upload" className = "nav-link" onClick = { ( ev ) => ev . stopPropagation ( ) } >
125
128
< FontAwesomeIcon icon = { faUpload } /> Load file from disk
126
129
</ label >
127
130
< NavButton icon = { faCloudArrowUp } text = "Load from URL" onClick = { ( ) => { setLoadUrlOpen ( true ) } } />
128
131
< NavButton iconElement = { < ZulipIcon /> } text = "Load Zulip Message" onClick = { ( ) => { setLoadZulipOpen ( true ) } } />
129
- < input id = "file-upload" type = "file" onChange = { loadFileFromDisk } />
130
132
</ Dropdown >
131
133
{ /* {restart && <NavButton icon={faArrowRotateRight} text="Restart server" onClick={restart} /> } */ }
132
134
< LoadUrlPopup open = { loadUrlOpen } handleClose = { ( ) => setLoadUrlOpen ( false ) } loadFromUrl = { loadFromUrl } />
0 commit comments