Files
pedwfrontend/lib/routing/breadcrumbRendererFactories.js
T

569 lines
16 KiB
JavaScript

import React from "react";
export const createSimpleRouteRenderers = ({
t,
renderTextCrumb,
renderMyPortalSectionCrumbs
}) => ({
"/myportal": () => renderTextCrumb(t("myportal:page-title")),
"/searchresults": () =>
renderTextCrumb(t("common:breadcrumb-search-results")),
"/advancedsearch": () =>
renderTextCrumb(t("common:breadcrumb-advanced-search")),
"/addresssearch": () =>
renderTextCrumb(t("common:breadcrumb-address-search")),
"/contactus": () =>
renderTextCrumb(t("common:footer-contact-us-link-label")),
"/viewall": () =>
renderMyPortalSectionCrumbs(t("common:breadcrumb-your-cases")),
"/myportal/dnsapplications": () =>
renderMyPortalSectionCrumbs(t("dnsCommon:service-name")),
"/dnsapplications": () => renderTextCrumb(t("dnsCommon:service-name"))
});
export const createSimpleLinkTextPairRenderers = ({
t,
router,
isWelsh,
renderLinkCrumb,
renderTextCrumb
}) => ({
"/addresssearchresults": () => (
<>
{renderLinkCrumb(
isWelsh
? `/${router.locale}/chwiliadcyfeiriadau`
: "/addresssearch",
t("common:breadcrumb-address-search")
)}
{renderTextCrumb(t("common:breadcrumb-address-search-results"))}
</>
),
"/advancedsearchresults": () => (
<>
{renderLinkCrumb(
isWelsh
? `/${router.locale}/advancedsearch`
: "/advancedsearch",
t("common:breadcrumb-advanced-search")
)}
{renderTextCrumb(t("common:breadcrumb-advanced-search-results"))}
</>
)
});
export const createSimpleMyPortalRouteRenderers = ({
t,
router,
isWelsh,
myPortalHref,
currentViewState,
getViewAllLabel,
renderAnchorCrumb,
renderLinkCrumb,
renderTextCrumb,
renderMyPortalCrumb,
renderMyPortalSectionCrumbs
}) => ({
"/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)
),
"/myportal/advancedsearchresults": () => (
<>
{renderMyPortalCrumb()}
{renderLinkCrumb(
isWelsh
? `/${router.locale}/myportal/advancedsearch`
: "/myportal/advancedsearch",
t("common:breadcrumb-advanced-search")
)}
{renderTextCrumb(t("common:breadcrumb-advanced-search-results"))}
</>
),
"/myportal/addresssearchresults": () => (
<>
{renderMyPortalCrumb()}
{renderLinkCrumb(
isWelsh
? `/${router.locale}/fymhorth/chwiliadcyfeiriadau`
: "/myportal/addresssearch",
t("common:breadcrumb-address-search")
)}
{renderTextCrumb(t("common:breadcrumb-address-search-results"))}
</>
)
});
export const createNewAppealRouteRenderers = ({
t,
myPortalHref,
renderLinkCrumb,
renderTextCrumb
}) => ({
"/newappeal/selectappeal": () => (
<>
{renderLinkCrumb(myPortalHref, t("newappeal:parent-page-title"))}
{renderLinkCrumb(myPortalHref, t("newappeal:page-title"))}
{renderTextCrumb("Select Appeal")}
</>
)
});
export const createCallbackRouteRenderers = ({
t,
router,
isWelsh,
nestedSearchString,
currentReference,
renderMyPortalCrumb,
renderLinkCrumb,
renderCaseReferenceCrumb,
onBack
}) => ({
"/myportal/case/id/[incident]": () => (
<>
{renderMyPortalCrumb()}
{renderLinkCrumb(
isWelsh
? `/${router.locale}/fymhorth/chwiliadcyfeiriadau`
: "/myportal/addresssearch",
t("common:breadcrumb-address-search")
)}
{renderLinkCrumb(
isWelsh
? `/${router.locale}/fymhorth/canlyniadaucyfeiriadau?${nestedSearchString}`
: `/myportal/addresssearchresults?${nestedSearchString}`,
t("common:breadcrumb-address-search-results"),
onBack
)}
{renderCaseReferenceCrumb(currentReference)}
</>
),
"/case": () => (
<>
{renderLinkCrumb(
isWelsh
? `${router.locale}/searchresults?q=${router.query.q}&page=${router.query.page}`
: `/searchresults?q=${router.query.q}&page=${router.query.page}`,
t("common:breadcrumb-search-results"),
onBack
)}
{renderCaseReferenceCrumb(currentReference)}
</>
)
});
export const createStepBackRouteRenderers = ({
t,
currentSection,
onStepBack,
onStepBackWithInlineClass,
renderLinkCrumb,
renderBackCrumb
}) => ({
"/newappeal/[appealtypes]": () => {
if (currentSection <= 1) {
return null;
}
if (currentSection === 9999) {
return renderLinkCrumb("/", t("common:service-name-breadcrumb"));
}
return renderBackCrumb(
onStepBackWithInlineClass,
"govuk-breadcrumbs__link-item"
);
},
"/myportal/[appealtypes]": () => {
if (currentSection <= 1) {
return null;
}
if (currentSection === 9999) {
return renderLinkCrumb("/", t("common:service-name-breadcrumb"));
}
return renderBackCrumb(onStepBack);
}
});
export const createCaseDetailRouteRenderers = ({
t,
router,
isWelsh,
currentReference,
nestedSearchString,
caseResultsHref,
breadcrumbLabel,
fallbackSearchTitle,
caseReferenceDisplay,
getViewAllLabel,
renderLinkCrumb,
renderCaseReferenceCrumb,
renderMyPortalCrumb
}) => ({
"/myportal/case": () => (
<>
{renderLinkCrumb(
isWelsh ? `/${router.locale}/fymhorth` : "/myportal",
t("common:breadcrumb-my-portal")
)}
{renderCaseReferenceCrumb(currentReference)}
</>
),
"/case/id/[incident]": () => (
<>
{renderLinkCrumb(
isWelsh
? `/${router.locale}/chwiliadcyfeiriadau`
: "/addresssearch",
t("common:breadcrumb-address-search")
)}
{renderLinkCrumb(
isWelsh
? `/${router.locale}/canlyniadaucyfeiriadau?${nestedSearchString}`
: `/addresssearchresults?${nestedSearchString}`,
t("common:breadcrumb-address-search-results")
)}
{renderCaseReferenceCrumb(currentReference)}
</>
),
"/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)}
</>
);
}
});
export const createDetailAndAccountRouteRenderers = ({
t,
router,
isWelsh,
cyMyPortalHref,
currentReference,
caseReferenceDisplay,
renderMyPortalCrumb,
renderLinkCrumb,
renderCaseReferenceCrumb,
renderDnsCaseReferenceCrumbs
}) => ({
"/myportal/dnsdetails": () => (
<>
{renderMyPortalCrumb()}
{renderLinkCrumb(
"/myportal/dnsapplications",
t("dnsCommon:service-name")
)}
{renderCaseReferenceCrumb(currentReference)}
</>
),
"/myportal/dns/[developmentName]": () => (
<>
{renderMyPortalCrumb()}
{renderLinkCrumb(
"/myportal/dnsapplications",
t("dnsCommon:service-name")
)}
{renderCaseReferenceCrumb(caseReferenceDisplay)}
</>
),
"/dnsdetails": () => renderDnsCaseReferenceCrumbs(currentReference),
"/dns/[developmentName]": () =>
renderDnsCaseReferenceCrumbs(caseReferenceDisplay),
"/dns/application-view": () => (
<>
{renderLinkCrumb(
isWelsh
? `/${router.locale}/dns/applications`
: "/dns/applications",
t("dnsApplicationView:page-parent-title")
)}
{renderLinkCrumb(
isWelsh
? `/${router.locale}/dnsapplications`
: "/dnsapplications",
t("dnsCommon:service-name")
)}
{renderCaseReferenceCrumb("TWA - Morlais Demonstration Zone")}
</>
),
"/account/personaldetails": () => (
<>
{renderLinkCrumb(cyMyPortalHref, t("common:breadcrumb-my-portal"))}
<li className="govuk-breadcrumbs__list-item">
{t("account:account-title")}
</li>
</>
),
"/account/changepassword": () => (
<>
{renderLinkCrumb(cyMyPortalHref, t("common:breadcrumb-my-portal"))}
<li className="govuk-breadcrumbs__list-item">
Update your password
</li>
</>
)
});
export const createMappedRouteRendererGroups = ({
t,
router,
isWelsh,
myPortalHref,
cyMyPortalHref,
currentViewState,
getViewAllLabel,
caseResultsHref,
breadcrumbLabel,
fallbackSearchTitle,
currentReference,
nestedSearchString,
caseReferenceDisplay,
onBack,
currentSection,
onStepBack,
onStepBackWithInlineClass,
renderAnchorCrumb,
renderLinkCrumb,
renderTextCrumb,
renderCaseReferenceCrumb,
renderMyPortalCrumb,
renderMyPortalSectionCrumbs,
renderDnsCaseReferenceCrumbs,
renderBackCrumb
}) => {
const simpleRouteRenderersByPath = createSimpleRouteRenderers({
t,
renderTextCrumb,
renderMyPortalSectionCrumbs
});
const simpleLinkTextPairRenderersByPath = createSimpleLinkTextPairRenderers(
{
t,
router,
isWelsh,
renderLinkCrumb,
renderTextCrumb
}
);
const simpleMyPortalRouteRenderersByPath =
createSimpleMyPortalRouteRenderers({
t,
router,
isWelsh,
myPortalHref,
currentViewState,
getViewAllLabel,
renderAnchorCrumb,
renderLinkCrumb,
renderTextCrumb,
renderMyPortalCrumb,
renderMyPortalSectionCrumbs
});
const newAppealRouteRenderersByPath = createNewAppealRouteRenderers({
t,
myPortalHref,
renderLinkCrumb,
renderTextCrumb
});
const callbackRouteRenderersByPath = createCallbackRouteRenderers({
t,
router,
isWelsh,
nestedSearchString,
currentReference,
renderMyPortalCrumb,
renderLinkCrumb,
renderCaseReferenceCrumb,
onBack
});
const stepBackRouteRenderersByPath = createStepBackRouteRenderers({
t,
currentSection,
onStepBack,
onStepBackWithInlineClass,
renderLinkCrumb,
renderBackCrumb
});
const caseDetailRouteRenderersByPath = createCaseDetailRouteRenderers({
t,
router,
isWelsh,
currentReference,
nestedSearchString,
caseResultsHref,
breadcrumbLabel,
fallbackSearchTitle,
caseReferenceDisplay,
getViewAllLabel,
renderLinkCrumb,
renderCaseReferenceCrumb,
renderMyPortalCrumb
});
const detailAndAccountRouteRenderersByPath =
createDetailAndAccountRouteRenderers({
t,
router,
isWelsh,
cyMyPortalHref,
currentReference,
caseReferenceDisplay,
renderMyPortalCrumb,
renderLinkCrumb,
renderCaseReferenceCrumb,
renderDnsCaseReferenceCrumbs
});
return {
simpleRouteRenderersByPath,
simpleLinkTextPairRenderersByPath,
simpleMyPortalRouteRenderersByPath,
newAppealRouteRenderersByPath,
callbackRouteRenderersByPath,
stepBackRouteRenderersByPath,
caseDetailRouteRenderersByPath,
detailAndAccountRouteRenderersByPath
};
};