Fix mobile nav hiding behavior when navigating
This commit is contained in:
@@ -8,10 +8,11 @@ import {
|
|||||||
Text,
|
Text,
|
||||||
Box,
|
Box,
|
||||||
IconButton,
|
IconButton,
|
||||||
|
Link,
|
||||||
} from '@theme-ui/components'
|
} from '@theme-ui/components'
|
||||||
import NextLink from 'next/link'
|
import NextLink from 'next/link'
|
||||||
import { useRouter } from 'next/router'
|
import { useRouter } from 'next/router'
|
||||||
import { useEffect, useState } from 'react'
|
import { useCallback, useState } from 'react'
|
||||||
import { useTranslation } from '../../lib/i18n'
|
import { useTranslation } from '../../lib/i18n'
|
||||||
import PageLink from '../atoms/PageLink'
|
import PageLink from '../atoms/PageLink'
|
||||||
import SquareImageBox from '../atoms/SquareImageBox'
|
import SquareImageBox from '../atoms/SquareImageBox'
|
||||||
@@ -23,9 +24,9 @@ const Honkai3rdNavigator = () => {
|
|||||||
|
|
||||||
const [hiddenMobileNav, setHiddenMobileNav] = useState(true)
|
const [hiddenMobileNav, setHiddenMobileNav] = useState(true)
|
||||||
|
|
||||||
useEffect(() => {
|
const close = useCallback(() => {
|
||||||
setHiddenMobileNav(true)
|
setHiddenMobileNav(true)
|
||||||
}, [router.pathname])
|
}, [])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Flex
|
<Flex
|
||||||
@@ -91,17 +92,18 @@ const Honkai3rdNavigator = () => {
|
|||||||
</Flex>
|
</Flex>
|
||||||
|
|
||||||
<Box>
|
<Box>
|
||||||
<NavMobileItem href='/' label='Abyss Lab Home' />
|
<NavMobileItem href='/' label='Abyss Lab Home' close={close} />
|
||||||
<NavMobileItem
|
<NavMobileItem
|
||||||
href='/honkai3rd'
|
href='/honkai3rd'
|
||||||
label={`${t('nav.honkai-3rd')} Home`}
|
label={`${t('nav.honkai-3rd')} Home`}
|
||||||
|
close={close}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<Honkai3rdNavMobileItem target='versions' />
|
<Honkai3rdNavMobileItem target='versions' close={close} />
|
||||||
<Honkai3rdNavMobileItem target='battlesuits' />
|
<Honkai3rdNavMobileItem target='battlesuits' close={close} />
|
||||||
<Honkai3rdNavMobileItem target='weapons' />
|
<Honkai3rdNavMobileItem target='weapons' close={close} />
|
||||||
<Honkai3rdNavMobileItem target='stigmata' />
|
<Honkai3rdNavMobileItem target='stigmata' close={close} />
|
||||||
<Honkai3rdNavMobileItem target='elfs' />
|
<Honkai3rdNavMobileItem target='elfs' close={close} />
|
||||||
</Box>
|
</Box>
|
||||||
</Box>
|
</Box>
|
||||||
<Flex
|
<Flex
|
||||||
@@ -192,11 +194,21 @@ const NavItem = ({ target }: NavItemProps) => {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const Honkai3rdNavMobileItem = ({ target }: NavItemProps) => {
|
interface Honkai3rdNavMobileItemProps {
|
||||||
|
target: 'versions' | 'battlesuits' | 'stigmata' | 'weapons' | 'elfs'
|
||||||
|
close: () => void
|
||||||
|
}
|
||||||
|
|
||||||
|
const Honkai3rdNavMobileItem = ({
|
||||||
|
target,
|
||||||
|
close,
|
||||||
|
}: Honkai3rdNavMobileItemProps) => {
|
||||||
|
const { push } = useRouter()
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
|
const href = `/honkai3rd/${target}`
|
||||||
return (
|
return (
|
||||||
<PageLink
|
<PageLink
|
||||||
href={`/honkai3rd/${target}`}
|
href={href}
|
||||||
sx={{
|
sx={{
|
||||||
fontFamily: 'monospace',
|
fontFamily: 'monospace',
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
@@ -204,6 +216,11 @@ const Honkai3rdNavMobileItem = ({ target }: NavItemProps) => {
|
|||||||
overflow: 'hidden',
|
overflow: 'hidden',
|
||||||
mb: 2,
|
mb: 2,
|
||||||
}}
|
}}
|
||||||
|
onClick={(event) => {
|
||||||
|
event.preventDefault()
|
||||||
|
close()
|
||||||
|
push(href)
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<SquareImageBox
|
<SquareImageBox
|
||||||
size={40}
|
size={40}
|
||||||
@@ -227,11 +244,13 @@ const Honkai3rdNavMobileItem = ({ target }: NavItemProps) => {
|
|||||||
interface NavMobileItemProps {
|
interface NavMobileItemProps {
|
||||||
href: string
|
href: string
|
||||||
label: string
|
label: string
|
||||||
|
close: () => void
|
||||||
}
|
}
|
||||||
|
|
||||||
const NavMobileItem = ({ href, label }: NavMobileItemProps) => {
|
const NavMobileItem = ({ href, label, close }: NavMobileItemProps) => {
|
||||||
|
const { push } = useRouter()
|
||||||
return (
|
return (
|
||||||
<PageLink
|
<Link
|
||||||
href={href}
|
href={href}
|
||||||
sx={{
|
sx={{
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
@@ -241,6 +260,11 @@ const NavMobileItem = ({ href, label }: NavMobileItemProps) => {
|
|||||||
fontSize: 3,
|
fontSize: 3,
|
||||||
mb: 2,
|
mb: 2,
|
||||||
}}
|
}}
|
||||||
|
onClick={(event) => {
|
||||||
|
event.preventDefault()
|
||||||
|
close()
|
||||||
|
push(href)
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<Flex
|
<Flex
|
||||||
sx={{
|
sx={{
|
||||||
@@ -254,6 +278,6 @@ const NavMobileItem = ({ href, label }: NavMobileItemProps) => {
|
|||||||
<Icon path={mdiMenuRight} size={'30px'} />
|
<Icon path={mdiMenuRight} size={'30px'} />
|
||||||
</Flex>
|
</Flex>
|
||||||
<Text>{label}</Text>
|
<Text>{label}</Text>
|
||||||
</PageLink>
|
</Link>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user