From 9084bf4f1a1a679da16379e1054b90d580b7a168 Mon Sep 17 00:00:00 2001 From: joostdecock Date: Sun, 16 Jul 2023 08:25:08 +0200 Subject: [PATCH] fix(dev): Make slug available in header for modal menu --- sites/dev/components/header/index.mjs | 25 +++++++---- .../dev/components/navigation/modal-menu.mjs | 7 +--- .../shared/components/navigation/sitenav.mjs | 42 +++++++++++-------- sites/shared/components/wrappers/layout.mjs | 3 +- 4 files changed, 44 insertions(+), 33 deletions(-) diff --git a/sites/dev/components/header/index.mjs b/sites/dev/components/header/index.mjs index 520a082df67..c83ff41ab31 100644 --- a/sites/dev/components/header/index.mjs +++ b/sites/dev/components/header/index.mjs @@ -23,13 +23,17 @@ import { NavButton, NavSpacer, colors } from 'shared/components/header.mjs' export const ns = ['header', 'sections', ...themeNs] -const NavIcons = ({ setModal }) => { +const NavIcons = ({ setModal, slug }) => { const { t } = useTranslation(['header']) const iconSize = 'h-6 w-6 lg:h-12 lg:w-12' return ( <> - setModal()} label={t('header:menu')} color={colors[0]}> + setModal()} + label={t('header:menu')} + color={colors[0]} + > @@ -80,24 +84,29 @@ const NavIcons = ({ setModal }) => { ) } -export const Header = (props) => { +export const Header = ({ + show = true, // Whether or not to show the header + slug, // Slug of the current page +}) => { const { setModal } = useContext(ModalContext) || {} - return ( - + const headerIcons = + + return show ? ( +
{/* Non-mobile content */}
- + {headerIcons}
{/* Mobile content */}
- + {headerIcons}
- ) + ) : null } diff --git a/sites/dev/components/navigation/modal-menu.mjs b/sites/dev/components/navigation/modal-menu.mjs index 8c21d6f6f45..c69afdcc76f 100644 --- a/sites/dev/components/navigation/modal-menu.mjs +++ b/sites/dev/components/navigation/modal-menu.mjs @@ -1,9 +1,5 @@ -// Dependencies -import { useContext } from 'react' // Hooks import { useNavigation } from 'site/hooks/use-navigation.mjs' -// Contenxt -import { NavigationContext } from 'shared/context/navigation-context.mjs' // Components import { SectionsMenu, ns as sectionsNs } from 'site/components/navigation/sections-menu.mjs' import { ModalWrapper } from 'shared/components/wrappers/modal.mjs' @@ -14,8 +10,7 @@ import { NavLinks, Breadcrumbs } from 'shared/components/navigation/sitenav.mjs' export const ns = nsMerge(sectionsNs) -export const ModalMenu = () => { - const { slug } = useContext(NavigationContext) +export const ModalMenu = ({ slug }) => { const { siteNav } = useNavigation() return ( diff --git a/sites/shared/components/navigation/sitenav.mjs b/sites/shared/components/navigation/sitenav.mjs index a65a13966c5..45864de9145 100644 --- a/sites/shared/components/navigation/sitenav.mjs +++ b/sites/shared/components/navigation/sitenav.mjs @@ -132,6 +132,10 @@ const MainLink = ({ * @param siteNav {object} - The site navigation object as returned by the useNavigation hook */ export const Breadcrumbs = ({ slug, siteNav }) => { + if (!slug) { + console.log('No slug passed to Breadcrumbs') + return null + } // Start with the home crumb const crumbs = [
  • @@ -144,25 +148,27 @@ export const Breadcrumbs = ({ slug, siteNav }) => { const chunks = slug.split('/') for (let i = 1; i <= chunks.length; i++) { const page = get(siteNav, chunks.slice(0, i)) - crumbs.push( -
  • - -
  • , - i === chunks.length ? ( -
  • - {page.t} -
  • - ) : ( -
  • - -
  • + if (page) { + crumbs.push( +
  • + +
  • , + i === chunks.length ? ( +
  • + {page.t} +
  • + ) : ( +
  • + +
  • + ) ) - ) + } } return
      {crumbs}
    diff --git a/sites/shared/components/wrappers/layout.mjs b/sites/shared/components/wrappers/layout.mjs index cd11979c0e6..f5cffb2db98 100644 --- a/sites/shared/components/wrappers/layout.mjs +++ b/sites/shared/components/wrappers/layout.mjs @@ -13,6 +13,7 @@ export const LayoutWrapper = ({ noSearch = false, header = false, footer = true, + slug, }) => { const ChosenHeader = header ? header : Header @@ -46,7 +47,7 @@ export const LayoutWrapper = ({ - +