Extract case detail breadcrumb routes into shared renderer factory

This commit is contained in:
2026-04-09 13:16:56 +01:00
parent 062cd23463
commit c264830934
3 changed files with 167 additions and 41 deletions
+31 -38
View File
@@ -20,7 +20,8 @@ import {
import {
createSimpleRouteRenderers,
createSimpleLinkTextPairRenderers,
createSimpleMyPortalRouteRenderers
createSimpleMyPortalRouteRenderers,
createCaseDetailRouteRenderers
} from "../lib/routing/breadcrumbRendererFactories";
const Breadcrumbs = (props) => {
@@ -90,12 +91,11 @@ const Breadcrumbs = (props) => {
const getViewAllLabel = (viewKey) => {
const labelsByKey = {
awaitingSubmissionDetails: t(
"myportal:awatitingsubmission-card-title"
),
watchedCases: t("myportal:watchedcases-card-title"),
myCases: t("myportal:mycases-card-title"),
myRepresentations: t("myportal:myrepresentations-card-title"),
awaitingSubmissionDetails: () =>
t("myportal:awatitingsubmission-card-title"),
watchedCases: () => t("myportal:watchedcases-card-title"),
myCases: () => t("myportal:mycases-card-title"),
myRepresentations: () => t("myportal:myrepresentations-card-title"),
mySubmittedReps: "Submitted representations"
};
@@ -107,7 +107,6 @@ const Breadcrumbs = (props) => {
"/account/register": () =>
t("account:register-new-account-heading"),
"/dns": () => t("dnsCommon:service-name"),
"/dnsapplications": () => t("dnsCommon:service-name"),
"/dns/application-process": () => "Guidance",
"/dns/help": () => "Help",
"/dns/contact-us": () => t("common:footer-contact-us-link-label"),
@@ -227,12 +226,6 @@ const Breadcrumbs = (props) => {
renderMyPortalSectionCrumbs
});
const mappedRouteRendererMaps = buildBreadcrumbRendererMaps({
simpleRouteRenderersByPath,
simpleLinkTextPairRenderersByPath,
simpleMyPortalRouteRenderersByPath
});
const resolveMappedRouteRenderer = (path) => {
return resolveMappedRouteRendererByMaps(path, mappedRouteRendererMaps);
};
@@ -247,11 +240,32 @@ const Breadcrumbs = (props) => {
query: router.query,
hasSession: Boolean(session),
getViewAllLabel,
advancedLabel: t("common:breadcrumb-advanced-search-results"),
addressLabel: t("common:breadcrumb-address-search-results"),
defaultLabel: t("common:breadcrumb-search-results")
advancedLabel: () => t("common:breadcrumb-advanced-search-results"),
addressLabel: () => t("common:breadcrumb-address-search-results"),
defaultLabel: () => t("common:breadcrumb-search-results")
});
const caseDetailRouteRenderersByPath = createCaseDetailRouteRenderers({
t,
router,
isWelsh,
caseResultsHref,
breadcrumbLabel,
fallbackSearchTitle,
caseReferenceDisplay,
getViewAllLabel,
renderLinkCrumb,
renderCaseReferenceCrumb,
renderMyPortalCrumb
});
const mappedRouteRendererMaps = buildBreadcrumbRendererMaps({
simpleRouteRenderersByPath,
simpleLinkTextPairRenderersByPath,
simpleMyPortalRouteRenderersByPath,
caseDetailRouteRenderersByPath
});
const staticTextCrumbLabel = getStaticTextCrumbLabel(pathname);
return (
@@ -340,16 +354,6 @@ const Breadcrumbs = (props) => {
</>
)}
{isPath("/case/[ticketnumber]") && (
<>
{renderLinkCrumb(
caseResultsHref,
breadcrumbLabel
)}
{renderCaseReferenceCrumb(fallbackSearchTitle)}
</>
)}
{isPath("/case/id/[incident]") && (
<>
{renderLinkCrumb(
@@ -394,17 +398,6 @@ const Breadcrumbs = (props) => {
</>
)}
{isPath("/myportal/case/[ticketnumber]") && (
<>
{renderMyPortalCrumb()}
{renderLinkCrumb(
breadcrumbHref,
breadcrumbLabel
)}
{renderCaseReferenceCrumb(caseReferenceDisplay)}
</>
)}
{isPath("/myportal/dnsdetails") && (
<>
{renderMyPortalCrumb()}