22541 unify breadcrumb mapped-route resolver and widen route-map coverage
This commit is contained in:
+57
-48
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user