@@ -17,15 +17,19 @@ import {
1717 Dropdown ,
1818 DropdownItem ,
1919 DropdownList ,
20- MenuFooter
20+ MenuFooter ,
21+ OverflowMenu ,
22+ OverflowMenuContent ,
23+ OverflowMenuControl ,
24+ OverflowMenuDropdownItem ,
25+ OverflowMenuItem
2126} from '@patternfly/react-core' ;
2227import { DashboardWrapper } from '@patternfly/react-core/dist/js/demos/DashboardWrapper' ;
2328import RhUiPauseFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-pause-fill-icon' ;
2429import RhUiPlayFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-play-fill-icon' ;
2530import RhUiExpandIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-expand-icon' ;
26- import RhMicronsExternalLinkIcon from '@patternfly/react-icons/dist/esm/icons/rh-microns-external-link-icon' ;
2731import RhMicronsSearchIcon from '@patternfly/react-icons/dist/esm/icons/rh-microns-search-icon' ;
28- import RhUiDownloadIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-download -icon' ;
32+ import RhUiEllipsisVerticalFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-ellipsis-vertical-fill -icon' ;
2933
3034export const ConsoleLogViewerToolbar : React . FC = ( ) => {
3135 const firstOptions = {
@@ -46,9 +50,8 @@ export const ConsoleLogViewerToolbar: React.FC = () => {
4650 const [ searchResultsCount , setSearchResultsCount ] = useState ( 3 ) ;
4751 const [ currentSearchResult , setCurrentSearchResult ] = useState ( 1 ) ;
4852 const [ externalExpanded , setExternalExpanded ] = useState ( false ) ;
49- const [ externalExpandedMobile , setExternalExpandedMobile ] = useState ( false ) ;
5053 const [ downloadExpanded , setDownloadExpanded ] = useState ( false ) ;
51- const [ downloadExpandedMobile , setDownloadExpandedMobile ] = useState ( false ) ;
54+ const [ overflowExpanded , setOverflowExpanded ] = useState ( false ) ;
5255 const [ mobileView , setMobileView ] = useState ( window . innerWidth >= 1450 ? false : true ) ;
5356
5457 const onContainerToggle = ( ) => {
@@ -85,32 +88,24 @@ export const ConsoleLogViewerToolbar: React.FC = () => {
8588 setExternalExpanded ( ( prevState ) => ! prevState ) ;
8689 } ;
8790
88- const onExternalToggleMobile = ( ) => {
89- setExternalExpandedMobile ( ( prevState ) => ! prevState ) ;
90- } ;
91-
9291 const onExternalSelect = ( ) => {
9392 setExternalExpanded ( false ) ;
9493 } ;
9594
96- const onExternalSelectMobile = ( ) => {
97- setExternalExpandedMobile ( false ) ;
98- } ;
99-
10095 const onDownloadToggle = ( ) => {
10196 setDownloadExpanded ( ( prevState ) => ! prevState ) ;
10297 } ;
10398
104- const onDownloadToggleMobile = ( ) => {
105- setDownloadExpandedMobile ( ( prevState ) => ! prevState ) ;
106- } ;
107-
10899 const onDownloadSelect = ( ) => {
109100 setDownloadExpanded ( false ) ;
110101 } ;
111102
112- const onDownloadSelectMobile = ( ) => {
113- setDownloadExpandedMobile ( false ) ;
103+ const onOverflowToggle = ( ) => {
104+ setOverflowExpanded ( ( prevState ) => ! prevState ) ;
105+ } ;
106+
107+ const onOverflowSelect = ( ) => {
108+ setOverflowExpanded ( false ) ;
114109 } ;
115110
116111 const onExternalClick = ( _event : React . MouseEvent < HTMLButtonElement > ) => {
@@ -209,6 +204,26 @@ export const ConsoleLogViewerToolbar: React.FC = () => {
209204 </ >
210205 ) ;
211206
207+ const overflowDropdownItems = (
208+ < >
209+ < OverflowMenuDropdownItem itemId = "external-1" onClick = { onExternalClick } >
210+ External logs 1
211+ </ OverflowMenuDropdownItem >
212+ < OverflowMenuDropdownItem itemId = "external-2" onClick = { onExternalClick } >
213+ External logs 2
214+ </ OverflowMenuDropdownItem >
215+ < OverflowMenuDropdownItem itemId = "external-3" onClick = { onExternalClick } >
216+ External logs 3
217+ </ OverflowMenuDropdownItem >
218+ < OverflowMenuDropdownItem itemId = "download-current" onClick = { onDownloadClick } >
219+ Current container logs
220+ </ OverflowMenuDropdownItem >
221+ < OverflowMenuDropdownItem itemId = "download-all" onClick = { onDownloadClick } >
222+ All container logs
223+ </ OverflowMenuDropdownItem >
224+ </ >
225+ ) ;
226+
212227 const optionSelectItems = (
213228 < >
214229 < SelectOption key = "switch-1" hasCheckbox isSelected = { firstSwitchChecked } onClick = { handleFirstSwitchChange } >
@@ -384,90 +399,65 @@ export const ConsoleLogViewerToolbar: React.FC = () => {
384399 </ Fragment >
385400 ) ;
386401
387- const rightAlignedItemsDesktop = (
388- < Fragment >
389- < ToolbarItem visibility = { { default : 'hidden' , '2xl' : 'visible' } } >
390- < Dropdown
391- isOpen = { externalExpanded }
392- onOpenChange = { ( isOpen ) => setExternalExpanded ( isOpen ) }
393- onSelect = { onExternalSelect }
394- toggle = { ( toggleRef ) => (
395- < MenuToggle ref = { toggleRef } isExpanded = { externalExpanded } onClick = { onExternalToggle } >
396- External logs
397- </ MenuToggle >
398- ) }
399- >
400- < DropdownList > { externalDropdownItems } </ DropdownList >
401- </ Dropdown >
402- </ ToolbarItem >
403- < ToolbarItem visibility = { { default : 'hidden' , '2xl' : 'visible' } } >
404- < Dropdown
405- isOpen = { downloadExpanded }
406- onOpenChange = { ( isOpen ) => setDownloadExpanded ( isOpen ) }
407- onSelect = { onDownloadSelect }
408- toggle = { ( toggleRef ) => (
409- < MenuToggle ref = { toggleRef } isExpanded = { downloadExpanded } onClick = { onDownloadToggle } >
410- Download
411- </ MenuToggle >
412- ) }
413- >
414- < DropdownList > { downloadDropdownItems } </ DropdownList >
415- </ Dropdown >
416- </ ToolbarItem >
417- </ Fragment >
418- ) ;
419-
420- const rightAlignedItemsMobile = (
421- < Fragment >
422- < ToolbarItem visibility = { { default : 'visible' , '2xl' : 'hidden' } } >
423- < Tooltip position = "top" content = { < div > External logs</ div > } >
402+ const overflowMenu = (
403+ < OverflowMenu breakpoint = "2xl" >
404+ < OverflowMenuContent >
405+ < OverflowMenuItem >
424406 < Dropdown
425- isOpen = { externalExpandedMobile }
426- onOpenChange = { ( isOpen ) => setExternalExpandedMobile ( isOpen ) }
427- onSelect = { onExternalSelectMobile }
407+ isOpen = { externalExpanded }
408+ onOpenChange = { ( isOpen ) => setExternalExpanded ( isOpen ) }
409+ onSelect = { onExternalSelect }
428410 toggle = { ( toggleRef ) => (
429- < MenuToggle
430- ref = { toggleRef }
431- isExpanded = { externalExpandedMobile }
432- onClick = { onExternalToggleMobile }
433- icon = { < RhMicronsExternalLinkIcon /> }
434- aria-label = "External logs"
435- />
411+ < MenuToggle ref = { toggleRef } isExpanded = { externalExpanded } onClick = { onExternalToggle } >
412+ External logs
413+ </ MenuToggle >
436414 ) }
437415 >
438416 < DropdownList > { externalDropdownItems } </ DropdownList >
439417 </ Dropdown >
440- </ Tooltip >
441- </ ToolbarItem >
442- < ToolbarItem visibility = { { default : 'visible' , '2xl' : 'hidden' } } >
443- < Tooltip position = "top" content = { < div > Download</ div > } >
418+ </ OverflowMenuItem >
419+ < OverflowMenuItem >
444420 < Dropdown
445- isOpen = { downloadExpandedMobile }
446- onOpenChange = { ( isOpen ) => setDownloadExpandedMobile ( isOpen ) }
447- onSelect = { onDownloadSelectMobile }
448- popperProps = { { position : 'right' } }
421+ isOpen = { downloadExpanded }
422+ onOpenChange = { ( isOpen ) => setDownloadExpanded ( isOpen ) }
423+ onSelect = { onDownloadSelect }
449424 toggle = { ( toggleRef ) => (
450- < MenuToggle
451- ref = { toggleRef }
452- isExpanded = { downloadExpandedMobile }
453- onClick = { onDownloadToggleMobile }
454- icon = { < RhUiDownloadIcon /> }
455- aria-label = "Download"
456- />
425+ < MenuToggle ref = { toggleRef } isExpanded = { downloadExpanded } onClick = { onDownloadToggle } >
426+ Download
427+ </ MenuToggle >
457428 ) }
458429 >
459430 < DropdownList > { downloadDropdownItems } </ DropdownList >
460431 </ Dropdown >
461- </ Tooltip >
462- </ ToolbarItem >
463- </ Fragment >
432+ </ OverflowMenuItem >
433+ </ OverflowMenuContent >
434+ < OverflowMenuControl >
435+ < Dropdown
436+ isOpen = { overflowExpanded }
437+ onOpenChange = { ( isOpen ) => setOverflowExpanded ( isOpen ) }
438+ onSelect = { onOverflowSelect }
439+ popperProps = { { position : 'right' } }
440+ toggle = { ( toggleRef ) => (
441+ < MenuToggle
442+ ref = { toggleRef }
443+ aria-label = "Log viewer actions"
444+ variant = "plain"
445+ onClick = { onOverflowToggle }
446+ isExpanded = { overflowExpanded }
447+ icon = { < RhUiEllipsisVerticalFillIcon /> }
448+ />
449+ ) }
450+ >
451+ < DropdownList > { overflowDropdownItems } </ DropdownList >
452+ </ Dropdown >
453+ </ OverflowMenuControl >
454+ </ OverflowMenu >
464455 ) ;
465456
466457 const rightAlignedItems = (
467458 < Fragment >
468459 < ToolbarItem > { LogsSearchInput } </ ToolbarItem >
469- { rightAlignedItemsDesktop }
470- { rightAlignedItemsMobile }
460+ < ToolbarItem > { overflowMenu } </ ToolbarItem >
471461 < ToolbarItem >
472462 < Tooltip position = "top" content = { < div > Expand</ div > } >
473463 < Button variant = "plain" aria-label = "expand" icon = { < RhUiExpandIcon /> } />
0 commit comments