22541 unify breadcrumb mapped-route resolver and widen route-map coverage

This commit is contained in:
2026-04-09 10:02:02 +01:00
parent 04dc8fd2b9
commit 786f906ab8
3 changed files with 130 additions and 48 deletions
+57 -48
View File
@@ -166,6 +166,62 @@ const Breadcrumbs = (props) => {
return simpleLinkTextPairRenderersByPath[path] || null;
};
const getSimpleMyPortalRouteRenderer = (path) => {
const simpleMyPortalRouteRenderersByPath = {
"/myportal/searchresults": () => (
<>
{renderAnchorCrumb(
myPortalHref,
t("common:breadcrumb-my-portal")
)}
{renderTextCrumb(t("common:breadcrumb-search-results"))}
</>
),
"/myportal/addresssearch": () =>
renderMyPortalSectionCrumbs(
t("common:breadcrumb-address-search")
),
"/myportal/advancedsearch": () =>
renderMyPortalSectionCrumbs(
t("common:breadcrumb-advanced-search")
),
"/myportal/contactus": () =>
renderMyPortalSectionCrumbs(
t("common:footer-contact-us-link-label")
),
"/myportal/viewall": () =>
renderMyPortalSectionCrumbs(
getViewAllLabel(
currentViewState.viewKey || router.query.key
)
)
};
return simpleMyPortalRouteRenderersByPath[path] || null;
};
const resolveMappedRouteRenderer = (path) => {
const mappedResolvers = [
getSimpleRouteRenderer,
getSimpleLinkTextPairRenderer,
getSimpleMyPortalRouteRenderer
];
for (const resolveRenderer of mappedResolvers) {
const routeRenderer = resolveRenderer(path);
if (routeRenderer) {
return routeRenderer;
}
}
return null;
};
const renderMappedRoute = (path, resolver = resolveMappedRouteRenderer) => {
const routeRenderer = resolver(path);
return routeRenderer ? routeRenderer() : null;
};
const renderMyPortalCrumb = () => (
<li className="govuk-breadcrumbs__list-item">
<Link href={myPortalHref} className="govuk-breadcrumbs__link">
@@ -261,43 +317,7 @@ const Breadcrumbs = (props) => {
t("common:service-name-breadcrumb")
)}
{(() => {
const renderSimpleRoute =
getSimpleRouteRenderer(pathname);
return renderSimpleRoute
? renderSimpleRoute()
: null;
})()}
{(() => {
const renderSimpleLinkTextPair =
getSimpleLinkTextPairRenderer(pathname);
return renderSimpleLinkTextPair
? renderSimpleLinkTextPair()
: null;
})()}
{isPath("/myportal/searchresults") && (
<>
{renderAnchorCrumb(
myPortalHref,
t("common:breadcrumb-my-portal")
)}
<li className="govuk-breadcrumbs__list-item">
{t("common:breadcrumb-search-results")}
</li>
</>
)}
{isPath("/myportal/addresssearch") &&
renderMyPortalSectionCrumbs(
t("common:breadcrumb-address-search")
)}
{isPath("/myportal/advancedsearch") &&
renderMyPortalSectionCrumbs(
t("common:breadcrumb-advanced-search")
)}
{isPath("/myportal/contactus") &&
renderMyPortalSectionCrumbs(
t("common:footer-contact-us-link-label")
)}
{renderMappedRoute(pathname)}
{isPath("/myportal/advancedsearchresults") && (
<>
{renderMyPortalCrumb()}
@@ -386,17 +406,6 @@ const Breadcrumbs = (props) => {
</li>
</>
)}
{isPath("/myportal/viewall") && (
<>
{renderMyPortalCrumb()}
<li className="govuk-breadcrumbs__list-item">
{getViewAllLabel(
currentViewState.viewKey ||
router.query.key
)}
</li>
</>
)}
{isPath("/myportal/case") && (
<>
{renderLinkCrumb(