From 0b88298dc83df079f7d0681dc7e0fc7753aeefb4 Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Wed, 21 May 2025 13:07:43 +0200 Subject: [PATCH 1/2] Close mobile menu on link click --- src/app/conf/2025/components/navbar.tsx | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/app/conf/2025/components/navbar.tsx b/src/app/conf/2025/components/navbar.tsx index 3e2dccf059..aac9b33571 100644 --- a/src/app/conf/2025/components/navbar.tsx +++ b/src/app/conf/2025/components/navbar.tsx @@ -10,6 +10,7 @@ import { Badge } from "../../_components/badge" import MenuIcon from "../pixelarticons/menu.svg?svgr" import CloseIcon from "../pixelarticons/close.svg?svgr" import { GraphQLConfLogoLink } from "./graphql-conf-logo-link" +import { Anchor } from "../../_design-system/anchor" export interface NavbarProps { links: { href: string; children: React.ReactNode; "aria-disabled"?: true }[] @@ -79,19 +80,19 @@ export function Navbar({ links, year }: NavbarProps): ReactElement {
{links.map( ({ "aria-disabled": isDisabled, children, ...link }) => ( - { + if (mobileDrawerOpen) { + setMobileDrawerOpen(false) + } + }} > {children} {isDisabled && ( @@ -99,7 +100,7 @@ export function Navbar({ links, year }: NavbarProps): ReactElement { Soon )} - + ), )}
From 525ce67338636782c9a2a685e562e01aa2b74500 Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Wed, 21 May 2025 13:09:37 +0200 Subject: [PATCH 2/2] Close navbar menu on escape --- src/app/conf/2025/components/navbar.tsx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/app/conf/2025/components/navbar.tsx b/src/app/conf/2025/components/navbar.tsx index aac9b33571..2edbacc0a0 100644 --- a/src/app/conf/2025/components/navbar.tsx +++ b/src/app/conf/2025/components/navbar.tsx @@ -31,6 +31,15 @@ export function Navbar({ links, year }: NavbarProps): ReactElement { useEffect(() => { document.body.style.overflow = mobileDrawerOpen ? "hidden" : "auto" + if (mobileDrawerOpen) { + const closeOnEscape = (event: KeyboardEvent) => { + if (event.key === "Escape") setMobileDrawerOpen(false) + } + document.addEventListener("keydown", closeOnEscape) + return () => { + document.removeEventListener("keydown", closeOnEscape) + } + } }, [mobileDrawerOpen]) return (