@@ -15,6 +15,7 @@ import dividerStyles from '@patternfly/react-styles/css/components/Divider/divid
1515import { css } from '@patternfly/react-styles' ;
1616import { NavContext , NavSelectClickHandler } from './Nav' ;
1717import { PageSidebarContext } from '../Page/PageSidebar' ;
18+ import { PageContext } from '../Page/PageContext' ;
1819import { useOUIAProps , OUIAProps } from '../../helpers' ;
1920import { Popper } from '../../helpers/Popper/Popper' ;
2021import AngleRightIcon from '@patternfly/react-icons/dist/esm/icons/angle-right-icon' ;
@@ -81,6 +82,7 @@ const NavItemBase: React.FunctionComponent<NavItemProps> = ({
8182} : NavItemProps ) => {
8283 const { flyoutRef, setFlyoutRef, navRef } = useContext ( NavContext ) ;
8384 const { isSidebarOpen } = useContext ( PageSidebarContext ) ;
85+ const { isManagedSidebar, isMobile, onSidebarToggle } = useContext ( PageContext ) ;
8486 const [ flyoutTarget , setFlyoutTarget ] = useState ( null ) ;
8587 const [ isHovered , setIsHovered ] = useState ( false ) ;
8688 const _ref = useRef < HTMLLIElement > ( undefined ) ;
@@ -193,13 +195,21 @@ const NavItemBase: React.FunctionComponent<NavItemProps> = ({
193195
194196 const tabIndex = isSidebarOpen ? null : - 1 ;
195197
198+ const handleNavItemClick = ( event : any , context : any , preventLinkDefault : boolean ) => {
199+ context . onSelect ( event , groupId , itemId , to , preventLinkDefault , onClick ) ;
200+
201+ if ( isManagedSidebar && isMobile && isSidebarOpen ) {
202+ onSidebarToggle ( ) ;
203+ }
204+ } ;
205+
196206 const renderDefaultLink = ( context : any ) : React . ReactNode => {
197207 const preventLinkDefault = preventDefault || ! to ;
198208 return (
199209 < Component
200210 ref = { anchorRef }
201211 href = { to }
202- onClick = { ( e : any ) => context . onSelect ( e , groupId , itemId , to , preventLinkDefault , onClick ) }
212+ onClick = { ( e : any ) => handleNavItemClick ( e , context , preventLinkDefault ) }
203213 className = { css (
204214 styles . navLink ,
205215 isActive && styles . modifiers . current ,
@@ -220,7 +230,7 @@ const NavItemBase: React.FunctionComponent<NavItemProps> = ({
220230
221231 const renderClonedChild = ( context : any , child : React . ReactElement < any > ) : React . ReactNode =>
222232 cloneElement ( child , {
223- onClick : ( e : MouseEvent ) => context . onSelect ( e , groupId , itemId , to , preventDefault , onClick ) ,
233+ onClick : ( e : MouseEvent ) => handleNavItemClick ( e , context , preventDefault ) ,
224234 'aria-current' : isActive ? 'page' : null ,
225235 ...( styleChildren && {
226236 className : css ( styles . navLink , isActive && styles . modifiers . current , child . props && child . props . className )
0 commit comments