@@ -43,7 +43,7 @@ function Figure(props) {
4343 < figure className = "figure" >
4444 < FigBody { ...props } >
4545 < FigureLabels labels = { props . labels } >
46- < img src = { props . thumbnail_url } { ...props . listeners } { ...props . attributes } />
46+ < img src = { props . thumbnail_url } { ...props . listeners } { ...props . attributes } aria-selected = { props . isSelected } />
4747 </ FigureLabels >
4848 </ FigBody >
4949 < figcaption >
@@ -71,14 +71,16 @@ function ScrollSpy(props) {
7171
7272
7373const FilesList = memo ( ( props : any ) => {
74- const { structure, setDirty, selectFile, webAudio} = props ;
74+ const { structure, setDirty, selectFile, selectedFileId , webAudio} = props ;
7575
7676 return (
7777 < ul className = "files-browser" > {
7878 structure . files . length === 0 ?
7979 < li className = "status" > { gettext ( "Empty folder" ) } </ li > : (
8080 < > { structure . files . map ( file => (
81- < li key = { file . id } onClick = { ( ) => selectFile ( file ) } > < Figure { ...file } webAudio = { webAudio } /> </ li >
81+ < li key = { file . id } onClick = { ( ) => selectFile ( file ) } >
82+ < Figure { ...file } webAudio = { webAudio } isSelected = { file . id === selectedFileId } />
83+ </ li >
8284 ) ) }
8385 { structure . offset !== null && < ScrollSpy key = { structure . offset } setDirty = { setDirty } /> }
8486 </ >
@@ -189,8 +191,10 @@ const FileSelectDialog = forwardRef((props: any, forwardedRef) => {
189191 }
190192
191193 async function initializeStructure ( ) {
194+ const params = new URLSearchParams ( ) ;
195+ mimeTypes ?. forEach ( type => params . append ( 'mimetypes' , type ) ) ;
192196 setDirty ( false ) ;
193- const response = await fetch ( `${ baseUrl } structure/${ realm } ` ) ;
197+ const response = await fetch ( `${ baseUrl } structure/${ realm } ${ params . size === 0 ? '' : `? ${ params . toString ( ) } ` } ` ) ;
194198 if ( response . ok ) {
195199 setStructure ( await response . json ( ) ) ;
196200 } else {
@@ -244,10 +248,11 @@ const FileSelectDialog = forwardRef((props: any, forwardedRef) => {
244248 } , [ ] ) ;
245249
246250 const selectFolder = useCallback ( folder => {
247- setCurrentFolderId ( folder . id ) ;
248251 if ( props . selectFolder ) {
249252 props . selectFolder ( folder ) ;
250253 props . dialogRef . current . close ( ) ;
254+ } else if ( structure . last_folder !== folder . id ) {
255+ setCurrentFolderId ( folder . id ) ;
251256 }
252257 } , [ structure . last_folder ] ) ;
253258
@@ -299,19 +304,20 @@ const FileSelectDialog = forwardRef((props: any, forwardedRef) => {
299304 />
300305 < div className = "browser-body" >
301306 < nav className = "folder-structure" >
302- < ul role = "navigation" >
303- { structure . root_folder && < FolderStructure
307+ < ul role = "navigation" > {
308+ structure . root_folder && < FolderStructure
304309 baseUrl = { baseUrl }
305310 folder = { structure . root_folder }
306311 lastFolderId = { structure . last_folder }
307312 selectFolder = { selectFolder }
313+ selectedFolderId = { props . selectedFolderId }
308314 toggleRecursive = { toggleRecursive }
309315 refreshStructure = { ( ) => setStructure ( { ...structure } ) }
310316 isListed = { structure . recursive ? false : null }
311317 setCurrentFolderId = { setCurrentFolderId }
312318 setCurrentFolderElement = { setCurrentFolderElement }
313- /> }
314- </ ul >
319+ />
320+ } </ ul >
315321 </ nav >
316322 < FileUploader
317323 folderId = { structure . last_folder }
@@ -325,6 +331,7 @@ const FileSelectDialog = forwardRef((props: any, forwardedRef) => {
325331 structure = { structure }
326332 setDirty = { setDirty }
327333 selectFile = { selectFile }
334+ selectedFileId = { props . selectedFileId }
328335 webAudio = { webAudio }
329336 />
330337 } </ FileUploader >
0 commit comments