@@ -53,6 +53,7 @@ import {
5353} from '@patternfly/react-core' ;
5454import RhUiEllipsisVerticalFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-ellipsis-vertical-fill-icon' ;
5555import RhUiQuestionMarkCircleFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-question-mark-circle-fill-icon' ;
56+ import RhUiSettingsFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-settings-fill-icon' ;
5657import RhUiAddCircleFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-add-circle-fill-icon' ;
5758import RhUiTrashFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-trash-fill-icon' ;
5859import RhUiThumbnailViewSmallFillIcon from '@patternfly/react-icons/dist/esm/icons/rh-ui-thumbnail-view-small-fill-icon' ;
@@ -82,6 +83,18 @@ export const PagePlain: React.FunctionComponent = () => {
8283 const [ openCardMenu , setOpenCardMenu ] = useState < number | null > ( null ) ;
8384 const mainContainerId = 'main-content-page-demo-plain' ;
8485
86+ const onApplicationLauncher = ( ) => {
87+ setIsToolbarMenuOpen ( false ) ;
88+ } ;
89+
90+ const onSettings = ( ) => {
91+ setIsToolbarMenuOpen ( false ) ;
92+ } ;
93+
94+ const onHelp = ( ) => {
95+ setIsToolbarMenuOpen ( false ) ;
96+ } ;
97+
8598 const toolbar = (
8699 < Toolbar id = "page-demo-plain-docked-toolbar" isStatic >
87100 < ToolbarContent >
@@ -96,23 +109,50 @@ export const PagePlain: React.FunctionComponent = () => {
96109 aria-label = "Application launcher"
97110 variant = { ButtonVariant . plain }
98111 icon = { < RhUiThumbnailViewSmallFillIcon /> }
112+ onClick = { onApplicationLauncher }
99113 />
100114 </ ToolbarItem >
101115 < ToolbarItem >
102- < Button aria-label = "Settings" isSettings variant = { ButtonVariant . plain } />
116+ < Button aria-label = "Settings" isSettings variant = { ButtonVariant . plain } onClick = { onSettings } />
103117 </ ToolbarItem >
104118 < ToolbarItem >
105- < Button aria-label = "Help" variant = { ButtonVariant . plain } icon = { < RhUiQuestionMarkCircleFillIcon /> } />
119+ < Button
120+ aria-label = "Help"
121+ variant = { ButtonVariant . plain }
122+ icon = { < RhUiQuestionMarkCircleFillIcon /> }
123+ onClick = { onHelp }
124+ />
106125 </ ToolbarItem >
107126 </ ToolbarGroup >
108127 < ToolbarItem visibility = { { default : 'hidden' , md : 'visible' , lg : 'hidden' } } >
109- < MenuToggle
110- variant = "plain"
111- aria-label = "Actions"
112- isExpanded = { isToolbarMenuOpen }
113- onClick = { ( ) => setIsToolbarMenuOpen ( ! isToolbarMenuOpen ) }
114- icon = { < RhUiEllipsisVerticalFillIcon /> }
115- />
128+ < Dropdown
129+ isOpen = { isToolbarMenuOpen }
130+ onSelect = { ( ) => setIsToolbarMenuOpen ( false ) }
131+ onOpenChange = { ( isOpen : boolean ) => setIsToolbarMenuOpen ( isOpen ) }
132+ popperProps = { { position : 'right' } }
133+ toggle = { ( toggleRef : React . Ref < MenuToggleElement > ) => (
134+ < MenuToggle
135+ ref = { toggleRef }
136+ variant = "plain"
137+ aria-label = "Actions"
138+ isExpanded = { isToolbarMenuOpen }
139+ onClick = { ( ) => setIsToolbarMenuOpen ( ! isToolbarMenuOpen ) }
140+ icon = { < RhUiEllipsisVerticalFillIcon /> }
141+ />
142+ ) }
143+ >
144+ < DropdownList >
145+ < DropdownItem onClick = { onApplicationLauncher } icon = { < RhUiThumbnailViewSmallFillIcon /> } >
146+ Application launcher
147+ </ DropdownItem >
148+ < DropdownItem onClick = { onSettings } icon = { < RhUiSettingsFillIcon /> } >
149+ Settings
150+ </ DropdownItem >
151+ < DropdownItem onClick = { onHelp } icon = { < RhUiQuestionMarkCircleFillIcon /> } >
152+ Help
153+ </ DropdownItem >
154+ </ DropdownList >
155+ </ Dropdown >
116156 </ ToolbarItem >
117157 </ ToolbarGroup >
118158 </ ToolbarContent >
@@ -350,13 +390,20 @@ export const PagePlain: React.FunctionComponent = () => {
350390 </ Card >
351391 ) ;
352392
393+ const footer = (
394+ < PageFooter >
395+ < PageBody > custom footer</ PageBody >
396+ </ PageFooter >
397+ ) ;
398+
353399 return (
354400 < Page
355401 id = "page-demo-plain"
356402 isPlain
357403 masthead = { masthead }
358404 skipToContent = { < SkipToContent href = { `#${ mainContainerId } ` } > Skip to content</ SkipToContent > }
359405 mainContainerId = { mainContainerId }
406+ footer = { footer }
360407 >
361408 < PageSection isPlain padding = { { default : 'noPadding' } } >
362409 < Panel isGlass variant = "bordered" >
@@ -394,9 +441,6 @@ export const PagePlain: React.FunctionComponent = () => {
394441 { cards }
395442 </ Gallery >
396443 </ PageSection >
397- < PageFooter >
398- < PageBody > custom footer</ PageBody >
399- </ PageFooter >
400444 </ Page >
401445 ) ;
402446} ;
0 commit comments