@@ -6,13 +6,13 @@ import React, {
66 useEffect ,
77 useImperativeHandle ,
88 useMemo ,
9- useRef ,
109 useState ,
1110} from 'react' ;
1211import SearchField from './SearchField' ;
1312import DropDownMenu from '../common/DropDownMenu' ;
1413import FilterByLabel from '../common/FilterByLabel' ;
1514import SortingOptions from '../common/SortingOptions' ;
15+ import { Tooltip , TooltipContent , TooltipTrigger } from '../common/Tooltip' ;
1616import MoreVerticalIcon from '../icons/more-vertical.svg' ;
1717import CopyIcon from '../icons/copy.svg' ;
1818import TilesIcon from '../icons/tiles.svg' ;
@@ -130,6 +130,23 @@ function ExtraMenu(props) {
130130}
131131
132132
133+ function MenuItem ( props ) {
134+ const { children, tooltip} = props ;
135+ const itemProps = Object . fromEntries ( Object . entries ( props ) . filter ( ( [ key ] ) => ! [ 'children' , 'tooltip' ] . includes ( key ) ) ) ;
136+
137+ return (
138+ < Tooltip >
139+ < TooltipTrigger >
140+ < li { ...itemProps } role = "menuitem" >
141+ { children }
142+ </ li >
143+ </ TooltipTrigger >
144+ < TooltipContent > { tooltip } </ TooltipContent >
145+ </ Tooltip >
146+ ) ;
147+ }
148+
149+
133150const MenuBar = forwardRef ( ( props : any , forwardedRef ) => {
134151 const {
135152 currentFolderId,
@@ -335,48 +352,37 @@ const MenuBar = forwardRef((props: any, forwardedRef) => {
335352 < li className = "search-field" role = "menuitem" style = { { marginRight : 'auto' } } >
336353 < SearchField columnRefs = { columnRefs } setSearchResult = { setSearchResult } settings = { settings } />
337354 </ li >
338- < li aria-selected = { layout === 'tiles' } onClick = { ( ) => setLayout ( 'tiles' ) }
339- role = "menuitem" data-tooltip-id = "django-finder-tooltip" data-tooltip-content = { gettext ( "Tiles view" ) } >
355+ < MenuItem aria-selected = { layout === 'tiles' } onClick = { ( ) => setLayout ( 'tiles' ) } tooltip = { gettext ( "Tiles view" ) } >
340356 < TilesIcon />
341- </ li >
342- < li aria-selected = { layout === 'mosaic' } onClick = { ( ) => setLayout ( 'mosaic' ) }
343- role = "menuitem" data-tooltip-id = "django-finder-tooltip" data-tooltip-content = { gettext ( "Mosaic view" ) } > < MosaicIcon />
344- </ li >
345- < li aria-selected = { layout === 'list' } onClick = { ( ) => setLayout ( 'list' ) }
346- role = "menuitem" data-tooltip-id = "django-finder-tooltip" data-tooltip-content = { gettext ( "List view" ) } > < ListIcon />
347- </ li >
348- < li aria-selected = { layout === 'columns' } onClick = { ( ) => setLayout ( 'columns' ) }
349- role = "menuitem" data-tooltip-id = "django-finder-tooltip" data-tooltip-content = { gettext ( "Columns view" ) } >
357+ </ MenuItem >
358+ < MenuItem aria-selected = { layout === 'mosaic' } onClick = { ( ) => setLayout ( 'mosaic' ) } tooltip = { gettext ( "Mosaic view" ) } >
359+ < MosaicIcon />
360+ </ MenuItem >
361+ < MenuItem aria-selected = { layout === 'list' } onClick = { ( ) => setLayout ( 'list' ) } tooltip = { gettext ( "List view" ) } >
362+ < ListIcon />
363+ </ MenuItem >
364+ < MenuItem aria-selected = { layout === 'columns' } onClick = { ( ) => setLayout ( 'columns' ) } tooltip = { gettext ( "Columns view" ) } >
350365 < ColumnsIcon />
351- </ li >
366+ </ MenuItem >
352367 < SortingOptions refreshFilesList = { refreshColumns } />
353368 { settings . labels && < FilterByLabel refreshFilesList = { refreshColumns } labels = { settings . labels } /> }
354- < li aria-disabled = { numSelectedInodes === 0 } onClick = { cutInodes }
355- role = "menuitem" data-tooltip-id = "django-finder-tooltip"
356- data-tooltip-content = { gettext ( "Cut selected to clipboard" ) } >
369+ < MenuItem aria-disabled = { numSelectedInodes === 0 } onClick = { cutInodes } tooltip = { gettext ( "Cut selected to clipboard" ) } >
357370 < CutIcon />
358- </ li >
371+ </ MenuItem >
359372 { settings . is_trash ? ( < >
360- < li aria-disabled = { numSelectedInodes === 0 } onClick = { undoDiscardInodes }
361- role = "menuitem" data-tooltip-id = "django-finder-tooltip"
362- data-tooltip-content = { gettext ( "Undo discarding files/folders" ) } >
363- < UndoIcon />
364- </ li >
365- < li className = "erase" onClick = { confirmEraseTrashFolder } data-tooltip-id = "django-finder-tooltip"
366- role = "menuitem" data-tooltip-content = { gettext ( "Empty trash folder" ) } >
367- < EraseIcon />
368- </ li >
373+ < MenuItem aria-disabled = { numSelectedInodes === 0 } onClick = { undoDiscardInodes } tooltip = { gettext ( "Undo discarding files/folders" ) } >
374+ < UndoIcon />
375+ </ MenuItem >
376+ < MenuItem className = "erase" onClick = { confirmEraseTrashFolder } tooltip = { gettext ( "Empty trash folder" ) } >
377+ < EraseIcon />
378+ </ MenuItem >
369379 </ > ) : ( < >
370- < li aria-disabled = { clipboard . length === 0 } onClick = { pasteInodes }
371- role = "menuitem" data-tooltip-id = "django-finder-tooltip"
372- data-tooltip-content = { gettext ( "Paste from clipboard" ) } >
380+ < MenuItem aria-disabled = { clipboard . length === 0 } onClick = { pasteInodes } tooltip = { gettext ( "Paste from clipboard" ) } >
373381 < PasteIcon />
374- </ li >
375- < li aria-disabled = { numSelectedInodes === 0 } onClick = { deleteInodes }
376- role = "menuitem" data-tooltip-id = "django-finder-tooltip"
377- data-tooltip-content = { gettext ( "Move selected to trash folder" ) } >
382+ </ MenuItem >
383+ < MenuItem aria-disabled = { numSelectedInodes === 0 } onClick = { deleteInodes } tooltip = { gettext ( "Move selected to trash folder" ) } >
378384 < TrashIcon />
379- </ li >
385+ </ MenuItem >
380386 < ExtraMenu
381387 numSelectedFiles = { numSelectedFiles }
382388 numSelectedInodes = { numSelectedInodes }
0 commit comments