@@ -2,7 +2,7 @@ import { useEffect, useRef, useState, FC } from "react";
22import { NavLink , useNavigate } from "react-router-dom" ;
33import { AppBar , Box , Grid , IconButton , Menu , MenuItem } from "@mui/material" ;
44import MenuIcon from "@mui/icons-material/Menu" ;
5- import { Button , Link } from "@atoms" ;
5+ import { Button , Link , FakeLink } from "@atoms" ;
66import { ICONS , IMAGES , PATHS , NAV_ITEMS , NavMenuItem } from "@consts" ;
77import { useCardano , useFeatureFlag , useModal } from "@context" ;
88import { useScreenDimension , useTranslation } from "@hooks" ;
@@ -48,6 +48,10 @@ export const TopNav = ({ isConnectButton = true }) => {
4848 openModal ( { type : "chooseWallet" } ) ;
4949 } ;
5050
51+ const closeDrawer = ( ) => {
52+ setIsDrawerOpen ( false ) ;
53+ } ;
54+
5155 const renderDesktopNav = ( ) => (
5256 < nav
5357 style = { { display : "flex" , alignItems : "center" , justifyContent : "end" } }
@@ -62,10 +66,7 @@ export const TopNav = ({ isConnectButton = true }) => {
6266 if ( isNavMenuItem ( navItem ) ) {
6367 return (
6468 < Grid item key = { navItem . label } >
65- < MenuNavItem
66- navItem = { navItem }
67- closeDrawer = { ( ) => setIsDrawerOpen ( false ) }
68- />
69+ < MenuNavItem navItem = { navItem } closeDrawer = { closeDrawer } />
6970 </ Grid >
7071 ) ;
7172 }
@@ -75,7 +76,8 @@ export const TopNav = ({ isConnectButton = true }) => {
7576 { ...navItem }
7677 isConnectWallet = { isConnectButton }
7778 onClick = { ( ) => {
78- setIsDrawerOpen ( false ) ;
79+ if ( navItem . newTabLink ) openInNewTab ( navItem . newTabLink ) ;
80+ closeDrawer ( ) ;
7981 } }
8082 />
8183 </ Grid >
@@ -197,17 +199,17 @@ const MenuNavItem: FC<{
197199 navItem : NavMenuItem ;
198200 closeDrawer : ( ) => void ;
199201} > = ( { closeDrawer, navItem } ) => {
200- const [ anchorEl , setAnchorEl ] = useState < HTMLAnchorElement | null > ( null ) ;
202+ const [ anchorEl , setAnchorEl ] = useState < HTMLElement | null > ( null ) ;
201203 const {
202204 isProposalDiscussionForumEnabled,
203205 isGovernanceOutcomesPillarEnabled,
204206 } = useFeatureFlag ( ) ;
205207
206208 // Create a ref array for child links to manage cliking within MenuItem but outside of Link
207- const linkRefs = useRef < Array < HTMLAnchorElement | null > > ( [ ] ) ;
209+ const linkRefs = useRef < Array < HTMLElement | null > > ( [ ] ) ;
208210
209211 const open = Boolean ( anchorEl ) ;
210- const handleClick = ( event : React . MouseEvent < HTMLAnchorElement > ) => {
212+ const handleClick = ( event : React . MouseEvent < HTMLElement > ) => {
211213 setAnchorEl ( event . currentTarget ) ;
212214 } ;
213215 const handleClose = ( ) => {
@@ -234,12 +236,8 @@ const MenuNavItem: FC<{
234236 } ;
235237 return (
236238 < >
237- < Link
238- navTo = ""
239- data-testid = { navItem . dataTestId }
240- aria-controls = { open ? "basic-menu" : undefined }
241- aria-haspopup = "true"
242- aria-expanded = { open ? "true" : undefined }
239+ < FakeLink
240+ dataTestId = { navItem . dataTestId }
243241 onClick = { handleClick }
244242 label = {
245243 < span
@@ -286,14 +284,14 @@ const MenuNavItem: FC<{
286284 { filterChildNavItems ( ) ?. map ( ( childNavItem , idx ) => (
287285 < MenuItem
288286 key = { childNavItem . label }
289- data-testid = { childNavItem . dataTestId }
290287 sx = { { minWidth : 160 } }
291288 onClick = { ( ) => {
292289 linkRefs . current [ idx ] ?. click ( ) ;
293290 } }
294291 >
295292 < Link
296- { ...childNavItem }
293+ dataTestId = { childNavItem . dataTestId }
294+ navTo = { childNavItem . navTo }
297295 ref = { ( el ) => {
298296 linkRefs . current [ idx ] = el ;
299297 } }
0 commit comments