Extract case detail breadcrumb routes into shared renderer factory
This commit is contained in:
+31
-38
@@ -20,7 +20,8 @@ import {
|
|||||||
import {
|
import {
|
||||||
createSimpleRouteRenderers,
|
createSimpleRouteRenderers,
|
||||||
createSimpleLinkTextPairRenderers,
|
createSimpleLinkTextPairRenderers,
|
||||||
createSimpleMyPortalRouteRenderers
|
createSimpleMyPortalRouteRenderers,
|
||||||
|
createCaseDetailRouteRenderers
|
||||||
} from "../lib/routing/breadcrumbRendererFactories";
|
} from "../lib/routing/breadcrumbRendererFactories";
|
||||||
|
|
||||||
const Breadcrumbs = (props) => {
|
const Breadcrumbs = (props) => {
|
||||||
@@ -90,12 +91,11 @@ const Breadcrumbs = (props) => {
|
|||||||
|
|
||||||
const getViewAllLabel = (viewKey) => {
|
const getViewAllLabel = (viewKey) => {
|
||||||
const labelsByKey = {
|
const labelsByKey = {
|
||||||
awaitingSubmissionDetails: t(
|
awaitingSubmissionDetails: () =>
|
||||||
"myportal:awatitingsubmission-card-title"
|
t("myportal:awatitingsubmission-card-title"),
|
||||||
),
|
watchedCases: () => t("myportal:watchedcases-card-title"),
|
||||||
watchedCases: t("myportal:watchedcases-card-title"),
|
myCases: () => t("myportal:mycases-card-title"),
|
||||||
myCases: t("myportal:mycases-card-title"),
|
myRepresentations: () => t("myportal:myrepresentations-card-title"),
|
||||||
myRepresentations: t("myportal:myrepresentations-card-title"),
|
|
||||||
mySubmittedReps: "Submitted representations"
|
mySubmittedReps: "Submitted representations"
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -107,7 +107,6 @@ const Breadcrumbs = (props) => {
|
|||||||
"/account/register": () =>
|
"/account/register": () =>
|
||||||
t("account:register-new-account-heading"),
|
t("account:register-new-account-heading"),
|
||||||
"/dns": () => t("dnsCommon:service-name"),
|
"/dns": () => t("dnsCommon:service-name"),
|
||||||
"/dnsapplications": () => t("dnsCommon:service-name"),
|
|
||||||
"/dns/application-process": () => "Guidance",
|
"/dns/application-process": () => "Guidance",
|
||||||
"/dns/help": () => "Help",
|
"/dns/help": () => "Help",
|
||||||
"/dns/contact-us": () => t("common:footer-contact-us-link-label"),
|
"/dns/contact-us": () => t("common:footer-contact-us-link-label"),
|
||||||
@@ -227,12 +226,6 @@ const Breadcrumbs = (props) => {
|
|||||||
renderMyPortalSectionCrumbs
|
renderMyPortalSectionCrumbs
|
||||||
});
|
});
|
||||||
|
|
||||||
const mappedRouteRendererMaps = buildBreadcrumbRendererMaps({
|
|
||||||
simpleRouteRenderersByPath,
|
|
||||||
simpleLinkTextPairRenderersByPath,
|
|
||||||
simpleMyPortalRouteRenderersByPath
|
|
||||||
});
|
|
||||||
|
|
||||||
const resolveMappedRouteRenderer = (path) => {
|
const resolveMappedRouteRenderer = (path) => {
|
||||||
return resolveMappedRouteRendererByMaps(path, mappedRouteRendererMaps);
|
return resolveMappedRouteRendererByMaps(path, mappedRouteRendererMaps);
|
||||||
};
|
};
|
||||||
@@ -247,11 +240,32 @@ const Breadcrumbs = (props) => {
|
|||||||
query: router.query,
|
query: router.query,
|
||||||
hasSession: Boolean(session),
|
hasSession: Boolean(session),
|
||||||
getViewAllLabel,
|
getViewAllLabel,
|
||||||
advancedLabel: t("common:breadcrumb-advanced-search-results"),
|
advancedLabel: () => t("common:breadcrumb-advanced-search-results"),
|
||||||
addressLabel: t("common:breadcrumb-address-search-results"),
|
addressLabel: () => t("common:breadcrumb-address-search-results"),
|
||||||
defaultLabel: t("common:breadcrumb-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);
|
const staticTextCrumbLabel = getStaticTextCrumbLabel(pathname);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -340,16 +354,6 @@ const Breadcrumbs = (props) => {
|
|||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{isPath("/case/[ticketnumber]") && (
|
|
||||||
<>
|
|
||||||
{renderLinkCrumb(
|
|
||||||
caseResultsHref,
|
|
||||||
breadcrumbLabel
|
|
||||||
)}
|
|
||||||
{renderCaseReferenceCrumb(fallbackSearchTitle)}
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{isPath("/case/id/[incident]") && (
|
{isPath("/case/id/[incident]") && (
|
||||||
<>
|
<>
|
||||||
{renderLinkCrumb(
|
{renderLinkCrumb(
|
||||||
@@ -394,17 +398,6 @@ const Breadcrumbs = (props) => {
|
|||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{isPath("/myportal/case/[ticketnumber]") && (
|
|
||||||
<>
|
|
||||||
{renderMyPortalCrumb()}
|
|
||||||
{renderLinkCrumb(
|
|
||||||
breadcrumbHref,
|
|
||||||
breadcrumbLabel
|
|
||||||
)}
|
|
||||||
{renderCaseReferenceCrumb(caseReferenceDisplay)}
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{isPath("/myportal/dnsdetails") && (
|
{isPath("/myportal/dnsdetails") && (
|
||||||
<>
|
<>
|
||||||
{renderMyPortalCrumb()}
|
{renderMyPortalCrumb()}
|
||||||
|
|||||||
@@ -17,7 +17,8 @@ export const createSimpleRouteRenderers = ({
|
|||||||
"/viewall": () =>
|
"/viewall": () =>
|
||||||
renderMyPortalSectionCrumbs(t("common:breadcrumb-your-cases")),
|
renderMyPortalSectionCrumbs(t("common:breadcrumb-your-cases")),
|
||||||
"/myportal/dnsapplications": () =>
|
"/myportal/dnsapplications": () =>
|
||||||
renderMyPortalSectionCrumbs(t("dnsCommon:service-name"))
|
renderMyPortalSectionCrumbs(t("dnsCommon:service-name")),
|
||||||
|
"/dnsapplications": () => renderTextCrumb(t("dnsCommon:service-name"))
|
||||||
});
|
});
|
||||||
|
|
||||||
export const createSimpleLinkTextPairRenderers = ({
|
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 = ({
|
const buildBreadcrumbRendererMaps = ({
|
||||||
simpleRouteRenderersByPath,
|
simpleRouteRenderersByPath,
|
||||||
simpleLinkTextPairRenderersByPath,
|
simpleLinkTextPairRenderersByPath,
|
||||||
simpleMyPortalRouteRenderersByPath
|
simpleMyPortalRouteRenderersByPath,
|
||||||
|
caseDetailRouteRenderersByPath
|
||||||
}) => [
|
}) => [
|
||||||
simpleRouteRenderersByPath,
|
simpleRouteRenderersByPath,
|
||||||
simpleLinkTextPairRenderersByPath,
|
simpleLinkTextPairRenderersByPath,
|
||||||
simpleMyPortalRouteRenderersByPath
|
simpleMyPortalRouteRenderersByPath,
|
||||||
|
caseDetailRouteRenderersByPath
|
||||||
];
|
];
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|||||||
Reference in New Issue
Block a user