From c579d8f16111560bb9919ee41864c613e1935f04 Mon Sep 17 00:00:00 2001 From: mDuo13 Date: Fri, 5 Aug 2022 13:25:02 -0700 Subject: [PATCH] Fix top nav on mobile --- _components/LayoutWrapper.tsx | 2 +- _override/NavBar.tsx | 18 +++++-- package.json | 5 +- static/css/fixes.css | 97 +++++++++++++++++++++++++++++++++-- static/js/jump-to-top.js | 10 +--- yarn.lock | 5 ++ 6 files changed, 119 insertions(+), 18 deletions(-) diff --git a/_components/LayoutWrapper.tsx b/_components/LayoutWrapper.tsx index aea0ed8..8525995 100644 --- a/_components/LayoutWrapper.tsx +++ b/_components/LayoutWrapper.tsx @@ -6,7 +6,7 @@ import navbar from '../top-nav.yaml'; * top navbar regardless of whether the top nav has an alert banner active. */ export default function LayoutWrapper(props) { - const topmargin = navbar.alertbanner.show ? {"margin-top": "126px"} : {"margin-top": "80px"}; + const topmargin = navbar.alertbanner.show ? {"marginTop": "126px"} : {"marginTop": "80px"}; return (
{props.children} {} diff --git a/_override/NavBar.tsx b/_override/NavBar.tsx index a02b1d0..f4692d4 100644 --- a/_override/NavBar.tsx +++ b/_override/NavBar.tsx @@ -24,6 +24,20 @@ export default function CustomNavBar(props: NavBarProps) { } }); + React.useEffect(() => { + // Turns out jQuery is necessary for firing events on Bootstrap v4 + // dropdowns. These events set classes so that the search bar and other + // submenus collapse on mobile when you expand one submenu. + const dds = $("#topnav-pages .dropdown"); + const top_main_nav = document.querySelector("#top-main-nav"); + dds.on("show.bs.dropdown", (evt) => { + top_main_nav.classList.add("submenu-expanded"); + }); + dds.on("hidden.bs.dropdown", (evt) => { + top_main_nav.classList.remove("submenu-expanded"); + }); + }) + return ( <>
@@ -143,7 +155,7 @@ export function NavDropdown(props) { export function NavWrapper(props) { return ( -