docs: fix mobile menu not closing when clicking a link (#13618)

This commit is contained in:
Shahed Nasser
2025-09-29 15:23:50 +03:00
committed by GitHub
parent 97cc8fdc15
commit 4bbec480a9
3 changed files with 23 additions and 3 deletions
@@ -9,10 +9,12 @@ import { SelectedMenu } from ".."
type MainNavMobileMainMenu = { type MainNavMobileMainMenu = {
setSelectedMenus: React.Dispatch<React.SetStateAction<SelectedMenu>> setSelectedMenus: React.Dispatch<React.SetStateAction<SelectedMenu>>
onOpenLink?: () => void
} }
export const MainNavMobileMainMenu = ({ export const MainNavMobileMainMenu = ({
setSelectedMenus: setSelectedMenu, setSelectedMenus: setSelectedMenu,
onOpenLink,
}: MainNavMobileMainMenu) => { }: MainNavMobileMainMenu) => {
const { navItems } = useMainNav() const { navItems } = useMainNav()
@@ -44,7 +46,11 @@ export const MainNavMobileMainMenu = ({
}} }}
> >
{item.type === "link" && ( {item.type === "link" && (
<Link href={item.link} className="block w-full"> <Link
href={item.link}
className="block w-full"
onClick={() => onOpenLink?.()}
>
{item.title} {item.title}
</Link> </Link>
)} )}
@@ -11,12 +11,14 @@ type MainNavMobileSubMenuProps = {
menu: MenuItem[] menu: MenuItem[]
title: string title: string
setSelectedMenus: React.Dispatch<React.SetStateAction<SelectedMenu>> setSelectedMenus: React.Dispatch<React.SetStateAction<SelectedMenu>>
onOpenLink?: () => void
} }
export const MainNavMobileSubMenu = ({ export const MainNavMobileSubMenu = ({
menu, menu,
title, title,
setSelectedMenus, setSelectedMenus,
onOpenLink,
}: MainNavMobileSubMenuProps) => { }: MainNavMobileSubMenuProps) => {
const filteredItems: (MenuItemLink | MenuItemSubMenu)[] = useMemo(() => { const filteredItems: (MenuItemLink | MenuItemSubMenu)[] = useMemo(() => {
return menu.filter( return menu.filter(
@@ -38,7 +40,11 @@ export const MainNavMobileSubMenu = ({
)} )}
> >
{item.type === "link" && ( {item.type === "link" && (
<Link href={item.link} className="block w-full"> <Link
href={item.link}
className="block w-full"
onClick={() => onOpenLink?.()}
>
{item.title} {item.title}
</Link> </Link>
)} )}
@@ -20,6 +20,10 @@ export const MainNavMobileMenu = () => {
const [selectedMenus, setSelectedMenus] = useState<SelectedMenu>([]) const [selectedMenus, setSelectedMenus] = useState<SelectedMenu>([])
const ref = useRef(null) const ref = useRef(null)
const handleOpenLink = () => {
setIsOpen(false)
}
return ( return (
<div className="flex lg:hidden justify-center items-center"> <div className="flex lg:hidden justify-center items-center">
<Button <Button
@@ -57,7 +61,10 @@ export const MainNavMobileMenu = () => {
className="w-full px-docs_1.5 h-3/4 flex flex-col justify-center" className="w-full px-docs_1.5 h-3/4 flex flex-col justify-center"
> >
{selectedMenus.length === 0 && ( {selectedMenus.length === 0 && (
<MainNavMobileMainMenu setSelectedMenus={setSelectedMenus} /> <MainNavMobileMainMenu
setSelectedMenus={setSelectedMenus}
onOpenLink={handleOpenLink}
/>
)} )}
{selectedMenus.length > 0 && ( {selectedMenus.length > 0 && (
<> <>
@@ -82,6 +89,7 @@ export const MainNavMobileMenu = () => {
<MainNavMobileSubMenu <MainNavMobileSubMenu
{...selectedMenus[selectedMenus.length - 1]} {...selectedMenus[selectedMenus.length - 1]}
setSelectedMenus={setSelectedMenus} setSelectedMenus={setSelectedMenus}
onOpenLink={handleOpenLink}
/> />
</> </>
)} )}