Refactor breadcrumbs to use factory-based route renderers
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
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"))
|
||||
});
|
||||
|
||||
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"))}
|
||||
</>
|
||||
)
|
||||
});
|
||||
@@ -21,8 +21,16 @@ export const resolveSearchResultsHref = ({
|
||||
const routeState = normalizeRouteStateQuery(query);
|
||||
const { viewAll, advanced, address, key } = routeState;
|
||||
const base = hasSession ? "/myportal" : "";
|
||||
const hasSearchQuery =
|
||||
typeof query?.q === "string" && query.q.trim().length > 0;
|
||||
|
||||
if (fallbackToMyPortalWhenNoFlags && !viewAll && !advanced && !address) {
|
||||
if (hasSearchQuery) {
|
||||
return {
|
||||
pathname: `${base}/searchresults`,
|
||||
query
|
||||
};
|
||||
}
|
||||
return {
|
||||
pathname: "/myportal"
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user