Clicking on menu button toggles it

This is an affordance for mobile (and how we got here)
This commit is contained in:
Justin Edmund 2022-12-27 17:08:50 -08:00
parent 0b0af6f4cd
commit 45c4e29f08
3 changed files with 17 additions and 3 deletions

View file

@ -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);

View file

@ -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}

View file

@ -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>