@@ -6,12 +6,11 @@ import { useNavigate } from "react-router-dom";
66import {
77 Avatar ,
88 Brand ,
9- Button ,
10- ButtonVariant ,
119 Divider ,
1210 Dropdown ,
1311 DropdownItem ,
1412 DropdownList ,
13+ Icon ,
1514 Masthead ,
1615 MastheadBrand ,
1716 MastheadContent ,
@@ -30,6 +29,7 @@ import {
3029import EllipsisVIcon from "@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon" ;
3130import HelpIcon from "@patternfly/react-icons/dist/esm/icons/help-icon" ;
3231import BarsIcon from "@patternfly/react-icons/dist/js/icons/bars-icon" ;
32+ import ExternalLinkAltIcon from "@patternfly/react-icons/dist/js/icons/external-link-alt-icon" ;
3333
3434import { isAuthRequired } from "@app/Constants" ;
3535import useBranding from "@app/hooks/useBranding" ;
@@ -39,22 +39,26 @@ import { AboutApp } from "./about";
3939
4040export const HeaderApp : React . FC = ( ) => {
4141 const {
42- masthead : { leftBrand, leftTitle, rightBrand } ,
42+ masthead : { leftBrand, leftTitle, rightBrand, supportUrl } ,
4343 } = useBranding ( ) ;
4444
4545 const auth = ( isAuthRequired && useAuth ( ) ) || undefined ;
4646
4747 const navigate = useNavigate ( ) ;
4848
49- const [ isAboutOpen , toggleIsAboutOpen ] = useReducer ( ( state ) => ! state , false ) ;
49+ const [ isAboutModalOpen , toggleIsAboutModalOpen ] = useReducer (
50+ ( state ) => ! state ,
51+ false ,
52+ ) ;
53+ const [ isHelpDropdownOpen , setIsHelpDropdownOpen ] = useState ( false ) ;
5054 const [ isKebabDropdownOpen , setIsKebabDropdownOpen ] = useState ( false ) ;
5155 const [ isUserDropdownOpen , setIsUserDropdownOpen ] = useState ( false ) ;
5256
53- const onKebabDropdownToggle = ( ) => {
54- setIsKebabDropdownOpen ( ! isKebabDropdownOpen ) ;
57+ const onHelpDropdownToggle = ( ) => {
58+ setIsHelpDropdownOpen ( ! isHelpDropdownOpen ) ;
5559 } ;
5660
57- const onKebabDropdownSelect = ( ) => {
61+ const onKebabDropdownToggle = ( ) => {
5862 setIsKebabDropdownOpen ( ! isKebabDropdownOpen ) ;
5963 } ;
6064
@@ -70,7 +74,7 @@ export const HeaderApp: React.FC = () => {
7074
7175 return (
7276 < >
73- < AboutApp isOpen = { isAboutOpen } onClose = { toggleIsAboutOpen } />
77+ < AboutApp isOpen = { isAboutModalOpen } onClose = { toggleIsAboutModalOpen } />
7478
7579 < Masthead >
7680 < MastheadToggle >
@@ -122,14 +126,48 @@ export const HeaderApp: React.FC = () => {
122126 } }
123127 >
124128 < ToolbarItem >
125- < Button
126- id = "about-button"
127- aria-label = "about button"
128- variant = { ButtonVariant . plain }
129- onClick = { toggleIsAboutOpen }
129+ < Dropdown
130+ isOpen = { isHelpDropdownOpen }
131+ onSelect = { onHelpDropdownToggle }
132+ onOpenChange = { ( isOpen : boolean ) =>
133+ setIsHelpDropdownOpen ( isOpen )
134+ }
135+ popperProps = { { position : "right" } }
136+ toggle = { ( toggleRef : React . Ref < MenuToggleElement > ) => (
137+ < MenuToggle
138+ ref = { toggleRef }
139+ onClick = { onHelpDropdownToggle }
140+ isExpanded = { isHelpDropdownOpen }
141+ variant = "plain"
142+ aria-label = "About"
143+ >
144+ < HelpIcon />
145+ </ MenuToggle >
146+ ) }
130147 >
131- < HelpIcon />
132- </ Button >
148+ < DropdownList >
149+ { supportUrl && (
150+ < DropdownItem
151+ key = "support"
152+ component = "a"
153+ to = { supportUrl }
154+ target = "_blank"
155+ rel = "noopener noreferrer"
156+ >
157+ Support{ " " }
158+ < Icon isInline iconSize = "sm" >
159+ < ExternalLinkAltIcon />
160+ </ Icon >
161+ </ DropdownItem >
162+ ) }
163+ < DropdownItem
164+ key = "about"
165+ onClick = { toggleIsAboutModalOpen }
166+ >
167+ About
168+ </ DropdownItem >
169+ </ DropdownList >
170+ </ Dropdown >
133171 </ ToolbarItem >
134172 </ ToolbarGroup >
135173
@@ -143,7 +181,7 @@ export const HeaderApp: React.FC = () => {
143181 < ToolbarItem >
144182 < Dropdown
145183 isOpen = { isKebabDropdownOpen }
146- onSelect = { onKebabDropdownSelect }
184+ onSelect = { onKebabDropdownToggle }
147185 onOpenChange = { ( isOpen : boolean ) =>
148186 setIsKebabDropdownOpen ( isOpen )
149187 }
@@ -156,7 +194,7 @@ export const HeaderApp: React.FC = () => {
156194 variant = "plain"
157195 aria-label = "About"
158196 >
159- < EllipsisVIcon aria-hidden = "true" />
197+ < EllipsisVIcon />
160198 </ MenuToggle >
161199 ) }
162200 >
@@ -167,8 +205,25 @@ export const HeaderApp: React.FC = () => {
167205 </ DropdownItem >
168206 ) }
169207 < Divider key = "separator" component = "li" />
170- < DropdownItem key = "about" onClick = { toggleIsAboutOpen } >
171- < HelpIcon /> About
208+ { supportUrl && (
209+ < DropdownItem
210+ key = "support"
211+ component = "a"
212+ to = { supportUrl }
213+ target = "_blank"
214+ rel = "noopener noreferrer"
215+ >
216+ Support{ " " }
217+ < Icon isInline iconSize = "sm" >
218+ < ExternalLinkAltIcon />
219+ </ Icon >
220+ </ DropdownItem >
221+ ) }
222+ < DropdownItem
223+ key = "about"
224+ onClick = { toggleIsAboutModalOpen }
225+ >
226+ About
172227 </ DropdownItem >
173228 </ DropdownList >
174229 </ Dropdown >
0 commit comments