docs: fix mobile menu not closing when clicking a link (#13618)
This commit is contained in:
@@ -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}
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|||||||
Reference in New Issue
Block a user