Clicking on menu button toggles it
This is an affordance for mobile (and how we got here)
This commit is contained in:
parent
0b0af6f4cd
commit
45c4e29f08
3 changed files with 17 additions and 3 deletions
|
|
@ -10,7 +10,8 @@
|
||||||
gap: 6px;
|
gap: 6px;
|
||||||
|
|
||||||
&:hover,
|
&:hover,
|
||||||
&.Blended:hover {
|
&.Blended:hover,
|
||||||
|
&.Blended.Active {
|
||||||
background: var(--button-bg-hover);
|
background: var(--button-bg-hover);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
color: var(--button-text-hover);
|
color: var(--button-text-hover);
|
||||||
|
|
|
||||||
|
|
@ -29,11 +29,16 @@ const Header = () => {
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
|
|
||||||
// State management
|
// State management
|
||||||
|
const [open, setOpen] = useState(false)
|
||||||
|
|
||||||
// Snapshots
|
// Snapshots
|
||||||
const { account } = useSnapshot(accountState)
|
const { account } = useSnapshot(accountState)
|
||||||
const { party } = useSnapshot(appState)
|
const { party } = useSnapshot(appState)
|
||||||
|
|
||||||
|
function menuButtonClicked() {
|
||||||
|
setOpen(!open)
|
||||||
|
}
|
||||||
|
|
||||||
function onClickOutsideMenu() {
|
function onClickOutsideMenu() {
|
||||||
setOpen(!open)
|
setOpen(!open)
|
||||||
}
|
}
|
||||||
|
|
@ -124,6 +129,7 @@ const Header = () => {
|
||||||
/>
|
/>
|
||||||
<HeaderMenu
|
<HeaderMenu
|
||||||
authenticated={account.authorized}
|
authenticated={account.authorized}
|
||||||
|
open={open}
|
||||||
username={account.user?.username}
|
username={account.user?.username}
|
||||||
onClickOutside={onClickOutsideMenu}
|
onClickOutside={onClickOutsideMenu}
|
||||||
logout={logout}
|
logout={logout}
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ import { accountState } from '~utils/accountState'
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
authenticated: boolean
|
authenticated: boolean
|
||||||
|
open: boolean
|
||||||
username?: string
|
username?: string
|
||||||
logout?: () => void
|
logout?: () => void
|
||||||
}
|
}
|
||||||
|
|
@ -51,10 +52,15 @@ const HeaderMenu = (props: Props) => {
|
||||||
router.push(router.asPath, undefined, { locale: language })
|
router.push(router.asPath, undefined, { locale: language })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const menuClasses = classNames({
|
||||||
|
Menu: true,
|
||||||
|
auth: props.authenticated,
|
||||||
|
open: props.open,
|
||||||
|
})
|
||||||
|
|
||||||
function authItems() {
|
function authItems() {
|
||||||
return (
|
return (
|
||||||
<nav>
|
<nav>
|
||||||
<ul className="Menu auth">
|
|
||||||
<div className="MenuGroup">
|
<div className="MenuGroup">
|
||||||
<li className="MenuItem profile">
|
<li className="MenuItem profile">
|
||||||
<Link href={`/${accountData.username}` || ''} passHref>
|
<Link href={`/${accountData.username}` || ''} passHref>
|
||||||
|
|
@ -80,6 +86,7 @@ const HeaderMenu = (props: Props) => {
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li className="MenuItem disabled">
|
<li className="MenuItem disabled">
|
||||||
|
<ul className={menuClasses}>
|
||||||
<div>
|
<div>
|
||||||
<span>{t('menu.guides')}</span>
|
<span>{t('menu.guides')}</span>
|
||||||
<i className="tag">{t('coming_soon')}</i>
|
<i className="tag">{t('coming_soon')}</i>
|
||||||
|
|
@ -110,7 +117,7 @@ const HeaderMenu = (props: Props) => {
|
||||||
|
|
||||||
function unauthItems() {
|
function unauthItems() {
|
||||||
return (
|
return (
|
||||||
<ul className="Menu unauth">
|
<ul className={menuClasses}>
|
||||||
<div className="MenuGroup">
|
<div className="MenuGroup">
|
||||||
<li className="MenuItem language">
|
<li className="MenuItem language">
|
||||||
<span>{t('menu.language')}</span>
|
<span>{t('menu.language')}</span>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue