Extract case detail breadcrumb routes into shared renderer factory
This commit is contained in:
+31
-38
@@ -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,9 +240,30 @@ 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);
|
||||
@@ -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()}
|
||||
|
||||
@@ -17,7 +17,8 @@ export const createSimpleRouteRenderers = ({
|
||||
"/viewall": () =>
|
||||
renderMyPortalSectionCrumbs(t("common:breadcrumb-your-cases")),
|
||||
"/myportal/dnsapplications": () =>
|
||||
renderMyPortalSectionCrumbs(t("dnsCommon:service-name"))
|
||||
renderMyPortalSectionCrumbs(t("dnsCommon:service-name")),
|
||||
"/dnsapplications": () => renderTextCrumb(t("dnsCommon:service-name"))
|
||||
});
|
||||
|
||||
export const createSimpleLinkTextPairRenderers = ({
|
||||
@@ -105,3 +106,133 @@ export const createSimpleMyPortalRouteRenderers = ({
|
||||
</>
|
||||
)
|
||||
});
|
||||
|
||||
export const createCaseDetailRouteRenderers = ({
|
||||
t,
|
||||
router,
|
||||
isWelsh,
|
||||
caseResultsHref,
|
||||
breadcrumbLabel,
|
||||
fallbackSearchTitle,
|
||||
caseReferenceDisplay,
|
||||
getViewAllLabel,
|
||||
renderLinkCrumb,
|
||||
renderCaseReferenceCrumb,
|
||||
renderMyPortalCrumb
|
||||
}) => ({
|
||||
"/case/[ticketnumber]": () => {
|
||||
const { ads, adv, va, key } = router.query;
|
||||
|
||||
if (ads === "true") {
|
||||
return (
|
||||
<>
|
||||
{renderLinkCrumb(
|
||||
isWelsh
|
||||
? `/${router.locale}/chwiliadcyfeiriadau`
|
||||
: "/addresssearch",
|
||||
t("common:breadcrumb-address-search")
|
||||
)}
|
||||
{renderLinkCrumb(
|
||||
caseResultsHref,
|
||||
t("common:breadcrumb-address-search-results")
|
||||
)}
|
||||
{renderCaseReferenceCrumb(fallbackSearchTitle)}
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
if (adv === "true") {
|
||||
return (
|
||||
<>
|
||||
{renderLinkCrumb(
|
||||
isWelsh
|
||||
? `/${router.locale}/advancedsearch`
|
||||
: "/advancedsearch",
|
||||
t("common:breadcrumb-advanced-search")
|
||||
)}
|
||||
{renderLinkCrumb(
|
||||
caseResultsHref,
|
||||
t("common:breadcrumb-advanced-search-results")
|
||||
)}
|
||||
{renderCaseReferenceCrumb(fallbackSearchTitle)}
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
if (va === "true") {
|
||||
return (
|
||||
<>
|
||||
{renderLinkCrumb("/myportal/viewall", getViewAllLabel(key))}
|
||||
{renderCaseReferenceCrumb(fallbackSearchTitle)}
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
{renderLinkCrumb(caseResultsHref, breadcrumbLabel)}
|
||||
{renderCaseReferenceCrumb(fallbackSearchTitle)}
|
||||
</>
|
||||
);
|
||||
},
|
||||
|
||||
"/myportal/case/[ticketnumber]": () => {
|
||||
const { ads, adv, va, key } = router.query;
|
||||
|
||||
if (ads === "true") {
|
||||
return (
|
||||
<>
|
||||
{renderMyPortalCrumb()}
|
||||
{renderLinkCrumb(
|
||||
isWelsh
|
||||
? `/${router.locale}/fymhorth/chwiliadcyfeiriadau`
|
||||
: "/myportal/addresssearch",
|
||||
t("common:breadcrumb-address-search")
|
||||
)}
|
||||
{renderLinkCrumb(
|
||||
caseResultsHref,
|
||||
t("common:breadcrumb-address-search-results")
|
||||
)}
|
||||
{renderCaseReferenceCrumb(caseReferenceDisplay)}
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
if (adv === "true") {
|
||||
return (
|
||||
<>
|
||||
{renderMyPortalCrumb()}
|
||||
{renderLinkCrumb(
|
||||
isWelsh
|
||||
? `/${router.locale}/myportal/advancedsearch`
|
||||
: "/myportal/advancedsearch",
|
||||
t("common:breadcrumb-advanced-search")
|
||||
)}
|
||||
{renderLinkCrumb(
|
||||
caseResultsHref,
|
||||
t("common:breadcrumb-advanced-search-results")
|
||||
)}
|
||||
{renderCaseReferenceCrumb(caseReferenceDisplay)}
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
if (va === "true") {
|
||||
return (
|
||||
<>
|
||||
{renderMyPortalCrumb()}
|
||||
{renderLinkCrumb("/myportal/viewall", getViewAllLabel(key))}
|
||||
{renderCaseReferenceCrumb(caseReferenceDisplay)}
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
{renderMyPortalCrumb()}
|
||||
{renderLinkCrumb(caseResultsHref, breadcrumbLabel)}
|
||||
{renderCaseReferenceCrumb(caseReferenceDisplay)}
|
||||
</>
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -15,11 +15,13 @@ const resolveMappedRouteRenderer = (path, routeRendererMaps = []) => {
|
||||
const buildBreadcrumbRendererMaps = ({
|
||||
simpleRouteRenderersByPath,
|
||||
simpleLinkTextPairRenderersByPath,
|
||||
simpleMyPortalRouteRenderersByPath
|
||||
simpleMyPortalRouteRenderersByPath,
|
||||
caseDetailRouteRenderersByPath
|
||||
}) => [
|
||||
simpleRouteRenderersByPath,
|
||||
simpleLinkTextPairRenderersByPath,
|
||||
simpleMyPortalRouteRenderersByPath
|
||||
simpleMyPortalRouteRenderersByPath,
|
||||
caseDetailRouteRenderersByPath
|
||||
];
|
||||
|
||||
module.exports = {
|
||||
|
||||
Reference in New Issue
Block a user