Merge pull request #3202 from Safelite/nation/CASH-632

CASH-632 add endorsements copy to page
This commit is contained in:
CarlNation 2026-06-02 08:40:05 -04:00 committed by GitHub
commit 3f0af1c5f7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 276 additions and 21 deletions

View file

@ -1,6 +1,10 @@
<template> <template>
<Form @submit="onSubmit" @invalid-submit="onInvalidSubmit" ref="theForm" v-slot="{ meta }"> <Form @submit="onSubmit" @invalid-submit="onInvalidSubmit" ref="theForm" v-slot="{ meta }">
<funnelHeader cmsWidgetName="FunnelHeaderWidget" ref="funnelHeader" /> <funnelHeader
cmsWidgetName="FunnelHeaderWidget"
ref="funnelHeader"
:overrideImageSrc="clientLogoImageSrc" />
<div class="page-gradient"></div>
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12 col-md-10 col-lg-8 col-xl-7"> <div class="col-12 col-md-10 col-lg-8 col-xl-7">
@ -81,7 +85,7 @@ import afterpayBreakout from "../payment-method/afterpay-breakout/afterpay-break
import modal from "@/digital-components/modal/modal"; import modal from "@/digital-components/modal/modal";
import contentGroupModal from "@/fmg-components/content-group-modal/content-group-modal.vue"; import contentGroupModal from "@/fmg-components/content-group-modal/content-group-modal.vue";
import textBlock from "@/digital-components/text-block/text-block.vue"; import textBlock from "@/digital-components/text-block/text-block.vue";
import { debugLog } from "@/helpers/debug-log-helper";
export default { export default {
name: "coverage-statement", name: "coverage-statement",
mixins: [], mixins: [],
@ -89,6 +93,7 @@ export default {
return { return {
isClaimAndCoverage: this.isClaimAndCoverageFromStore(), isClaimAndCoverage: this.isClaimAndCoverageFromStore(),
isRecalibrationOnOrder: this.isRecalibrationOnOrderFromStore(), isRecalibrationOnOrder: this.isRecalibrationOnOrderFromStore(),
clientConfig: {},
}; };
}, },
components: { components: {
@ -107,15 +112,26 @@ export default {
async beforeRouteEnter(to, from, next) { async beforeRouteEnter(to, from, next) {
const pageName = to.name; const pageName = to.name;
const cmsContentPromise = fetchCmsContentForPage(pageName); const cmsContentPromise = fetchCmsContentForPage(pageName);
const clientConfigPageName = `client_${store.getters.order.payment.parentAccountNumber}`;
const clientConfigPromise = fetchCmsContentForPage(clientConfigPageName);
const promiseResultMap = [ const promiseResultMap = [
{ {
resultKey: "cmsContent", resultKey: "cmsContent",
promise: cmsContentPromise, promise: cmsContentPromise,
}, },
{
resultKey: "clientConfig",
promise: clientConfigPromise,
},
]; ];
const resultMap = await settleAllPromises(promiseResultMap); const resultMap = await settleAllPromises(promiseResultMap);
next((vm) => { next((vm) => {
vm.setCmsContent(resultMap.cmsContent); vm.setCmsContent(resultMap.cmsContent);
vm.clientConfig = resultMap.clientConfig;
debugLog(
`coverage-statement clientConfig::${clientConfigPageName}`,
JSON.stringify(vm.clientConfig)
);
}); });
}, },
@ -162,6 +178,9 @@ export default {
}, },
}, },
computed: { computed: {
clientLogoImageSrc() {
return this.clientConfig?.ClientLogoWidget?.Image || "";
},
deductibleAmount() { deductibleAmount() {
return this.$store.getters.order.policy.currentDeductible; return this.$store.getters.order.policy.currentDeductible;
}, },

View file

@ -1,6 +1,10 @@
<template> <template>
<Form @submit="onSubmit" @invalid-submit="onInvalidSubmit" ref="theForm" v-slot="{ meta }"> <Form @submit="onSubmit" @invalid-submit="onInvalidSubmit" ref="theForm" v-slot="{ meta }">
<funnelHeader cmsWidgetName="FunnelHeaderWidget" ref="funnelHeader" /> <funnelHeader
cmsWidgetName="FunnelHeaderWidget"
ref="funnelHeader"
:overrideImageSrc="clientLogoImageSrc" />
<div class="page-gradient"></div>
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12 col-md-10 col-lg-8 col-xl-7"> <div class="col-12 col-md-10 col-lg-8 col-xl-7">
@ -61,12 +65,16 @@ import { Form } from "vee-validate";
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper"; import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
import { settleAllPromises } from "@/helpers/layout-helper"; import { settleAllPromises } from "@/helpers/layout-helper";
import store from "@/store";
import { debugLog } from "@/helpers/debug-log-helper";
export default { export default {
name: "duplicate-check", name: "duplicate-check",
mixins: [], mixins: [],
data() { data() {
return {}; return {
clientConfig: {},
};
}, },
components: { components: {
Form, Form,
@ -78,6 +86,9 @@ export default {
}, },
// Ensure CMS content is fetched during route navigation without depending on `to`/`from` // Ensure CMS content is fetched during route navigation without depending on `to`/`from`
async beforeRouteEnter(to, from, next) { async beforeRouteEnter(to, from, next) {
const clientConfigPageName = `client_${store.getters.order.payment.parentAccountNumber}`;
const clientConfigPromise = fetchCmsContentForPage(clientConfigPageName);
const pageName = to.name; const pageName = to.name;
const cmsContentPromise = fetchCmsContentForPage(pageName); const cmsContentPromise = fetchCmsContentForPage(pageName);
const promiseResultMap = [ const promiseResultMap = [
@ -85,13 +96,25 @@ export default {
resultKey: "cmsContent", resultKey: "cmsContent",
promise: cmsContentPromise, promise: cmsContentPromise,
}, },
{
resultKey: "clientConfig",
promise: clientConfigPromise,
},
]; ];
const resultMap = await settleAllPromises(promiseResultMap); const resultMap = await settleAllPromises(promiseResultMap);
next((vm) => { next((vm) => {
vm.setCmsContent(resultMap.cmsContent); vm.setCmsContent(resultMap.cmsContent);
vm.clientConfig = resultMap.clientConfig;
debugLog(
`duplicate-check clientConfig::${clientConfigPageName}`,
JSON.stringify(vm.clientConfig)
);
}); });
}, },
computed: { computed: {
clientLogoImageSrc() {
return this.clientConfig?.ClientLogoWidget?.Image || "";
},
pageTitleText() { pageTitleText() {
return this.getCmsContent("DupCheckPageTitleWidget", "Text"); return this.getCmsContent("DupCheckPageTitleWidget", "Text");
}, },

View file

@ -55,13 +55,23 @@ function setupMocks() {
fetchCmsContentForPage.mockResolvedValue(mockCmsContent); fetchCmsContentForPage.mockResolvedValue(mockCmsContent);
settleAllPromises.mockResolvedValue({ cmsContent: mockCmsContent }); settleAllPromises.mockResolvedValue({ cmsContent: mockCmsContent });
const mockMixin = {
methods: {
getCmsContent: jest.fn((widgetName, fieldName) => {
return mockCmsContent?.[widgetName]?.[fieldName] ?? "";
}),
setCmsContent: jest.fn(),
},
};
const mountOptions = getMountOptions({ const mountOptions = getMountOptions({
route: { name: "duplicate-check", query: {}, params: {} }, route: { name: "endorsements", query: {}, params: {} },
router: { router: {
navigate: jest.fn(), navigate: jest.fn(),
navigateWithSaving: jest.fn(), navigateWithSaving: jest.fn(),
navigateWithoutSaving: jest.fn(), navigateWithoutSaving: jest.fn(),
}, },
mixins: [mockMixin],
}); });
const wrapper = shallowMount(endorsements, mountOptions); const wrapper = shallowMount(endorsements, mountOptions);

View file

@ -1,13 +1,45 @@
<template> <template>
<Form @submit="onSubmit" @invalid-submit="onInvalidSubmit" ref="theForm" v-slot="{ meta }"> <Form @submit="onSubmit" @invalid-submit="onInvalidSubmit" ref="theForm" v-slot="{ meta }">
<funnelHeader cmsWidgetName="FunnelHeaderWidget" ref="funnelHeader" /> <funnelHeader
cmsWidgetName="FunnelHeaderWidget"
ref="funnelHeader"
:overrideImageSrc="clientLogoImageSrc" />
<div class="page-gradient"></div>
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12 col-md-10 col-lg-8 col-xl-7"> <div class="col-12 col-md-10 col-lg-8 col-xl-7">
<funnelSubHeader class="pb-4" cmsWidgetName="FunnelSubHeaderWidget" /> <funnelSubHeader class="pb-4" cmsWidgetName="FunnelSubHeaderWidget" />
<!--
... Page code goes here. <textBlock
--> cmsWidgetName="EndorsementsPageAdditionalInfoWidget"
typeStyle="h1"
:customText="endorsementHeading"
class="mb-5 text-left text-md-left page-title" />
<textBlock
cmsWidgetName="MoreDetailsWidget"
typeStyle="body"
:customText="moreDetailsText"
class="mb-5 text-left text-md-left page-instructions" />
<buttonQuestion
:questionText="schoolEndorsementQuestionText"
:answers="schoolEndorsementAnswers"
class="mb-4"
groupName="schoolEndorsementQuestion"
buttonTypeString="listButton"
isRequired
v-model="schoolEndorsementSelectedValue" />
<buttonQuestion
:questionText="parkingLotEndorsementQuestionText"
:answers="parkingLotEndorsementAnswers"
class="mb-4"
groupName="parkingLotEndorsementQuestion"
buttonTypeString="listButton"
isRequired
v-model="parkingLotEndorsementSelectedValue" />
<navbar <navbar
cmsWidgetName="FunnelFooterWidget" cmsWidgetName="FunnelFooterWidget"
ref="navbar" ref="navbar"
@ -28,35 +60,78 @@ import { Form } from "vee-validate";
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper"; import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
import { settleAllPromises } from "@/helpers/layout-helper"; import { settleAllPromises } from "@/helpers/layout-helper";
import store from "@/store";
import { debugLog } from "@/helpers/debug-log-helper";
import buttonQuestion from "@/digital-components/button-question/button-question";
import textBlock from "@/digital-components/text-block/text-block";
export default { export default {
name: "endorsements", name: "endorsements",
mixins: [], mixins: [],
data() { data() {
return {}; return {
clientConfig: {},
};
}, },
components: { components: {
Form, Form,
funnelHeader, funnelHeader,
navbar, navbar,
funnelSubHeader, funnelSubHeader,
buttonQuestion,
textBlock,
}, },
// Ensure CMS content is fetched during route navigation without depending on `to`/`from` // Ensure CMS content is fetched during route navigation without depending on `to`/`from`
async beforeRouteEnter(to, from, next) { async beforeRouteEnter(to, from, next) {
const pageName = to.name; const pageName = to.name;
const cmsContentPromise = fetchCmsContentForPage(pageName); const cmsContentPromise = fetchCmsContentForPage(pageName);
const clientConfigPageName = `client_${store.getters.order.payment.parentAccountNumber}`;
const clientConfigPromise = fetchCmsContentForPage(clientConfigPageName);
const promiseResultMap = [ const promiseResultMap = [
{ {
resultKey: "cmsContent", resultKey: "cmsContent",
promise: cmsContentPromise, promise: cmsContentPromise,
}, },
{
resultKey: "clientConfig",
promise: clientConfigPromise,
},
]; ];
const resultMap = await settleAllPromises(promiseResultMap); const resultMap = await settleAllPromises(promiseResultMap);
next((vm) => { next((vm) => {
vm.setCmsContent(resultMap.cmsContent); vm.setCmsContent(resultMap.cmsContent);
vm.clientConfig = resultMap.clientConfig;
debugLog(
`endorsements clientConfig::${clientConfigPageName}`,
JSON.stringify(vm.clientConfig)
);
}); });
}, },
computed: {
clientLogoImageSrc() {
return this.clientConfig?.ClientLogoWidget?.Image || "";
},
endorsementHeading() {
return this.getCmsContent("EndorsementsPageAdditionalInfoWidget", "Text");
},
moreDetailsText() {
return this.getCmsContent("MoreDetailsWidget", "Text");
},
schoolEndorsementQuestionText() {
return this.getCmsContent("SchoolEndorsmentQuestionWidget", "QuestionText");
},
schoolEndorsementAnswers() {
return this.getCmsContent("SchoolEndorsmentQuestionWidget", "Answers");
},
parkingLotEndorsementQuestionText() {
return this.getCmsContent("ParkingLotQuestionWidget", "QuestionText");
},
parkingLotEndorsementAnswers() {
return this.getCmsContent("ParkingLotQuestionWidget", "Answers");
},
},
methods: { methods: {
backButtonAction() { backButtonAction() {
this.$router.navigateWithoutSaving( this.$router.navigateWithoutSaving(
@ -76,3 +151,18 @@ export default {
}, },
}; };
</script> </script>
<style lang="scss">
.page-title {
font-size: 20px !important;
line-height: 1.325;
font-weight: 300;
color: $black;
}
.page-instructions {
font-size: 16px !important;
font-weight: 400;
color: $gray-600;
line-height: 1.625;
}
</style>

View file

@ -1,6 +1,10 @@
<template> <template>
<Form @submit="onSubmit" @invalid-submit="onInvalidSubmit" ref="theForm" v-slot="{ meta }"> <Form @submit="onSubmit" @invalid-submit="onInvalidSubmit" ref="theForm" v-slot="{ meta }">
<funnelHeader cmsWidgetName="FunnelHeaderWidget" ref="funnelHeader" /> <funnelHeader
cmsWidgetName="FunnelHeaderWidget"
ref="funnelHeader"
:overrideImageSrc="clientLogoImageSrc" />
<div class="page-gradient"></div>
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12 col-md-10 col-lg-8 col-xl-7"> <div class="col-12 col-md-10 col-lg-8 col-xl-7">
@ -28,12 +32,16 @@ import { Form } from "vee-validate";
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper"; import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
import { settleAllPromises } from "@/helpers/layout-helper"; import { settleAllPromises } from "@/helpers/layout-helper";
import store from "@/store";
import { debugLog } from "@/helpers/debug-log-helper";
export default { export default {
name: "policy-driver", name: "policy-driver",
mixins: [], mixins: [],
data() { data() {
return {}; return {
clientConfig: {},
};
}, },
components: { components: {
Form, Form,
@ -45,18 +53,35 @@ export default {
async beforeRouteEnter(to, from, next) { async beforeRouteEnter(to, from, next) {
const pageName = to.name; const pageName = to.name;
const cmsContentPromise = fetchCmsContentForPage(pageName); const cmsContentPromise = fetchCmsContentForPage(pageName);
const clientConfigPageName = `client_${store.getters.order.payment.parentAccountNumber}`;
const clientConfigPromise = fetchCmsContentForPage(clientConfigPageName);
const promiseResultMap = [ const promiseResultMap = [
{ {
resultKey: "cmsContent", resultKey: "cmsContent",
promise: cmsContentPromise, promise: cmsContentPromise,
}, },
{
resultKey: "clientConfig",
promise: clientConfigPromise,
},
]; ];
const resultMap = await settleAllPromises(promiseResultMap); const resultMap = await settleAllPromises(promiseResultMap);
next((vm) => { next((vm) => {
vm.setCmsContent(resultMap.cmsContent); vm.setCmsContent(resultMap.cmsContent);
vm.clientConfig = resultMap.clientConfig;
debugLog(
`policy-driver clientConfig::${clientConfigPageName}`,
JSON.stringify(vm.clientConfig)
);
}); });
}, },
computed: {
clientLogoImageSrc() {
return this.clientConfig?.ClientLogoWidget?.Image || "";
},
},
methods: { methods: {
backButtonAction() { backButtonAction() {
this.$router.navigateWithoutSaving( this.$router.navigateWithoutSaving(

View file

@ -1,6 +1,10 @@
<template> <template>
<Form @submit="onSubmit" @invalid-submit="onInvalidSubmit" ref="theForm" v-slot="{ meta }"> <Form @submit="onSubmit" @invalid-submit="onInvalidSubmit" ref="theForm" v-slot="{ meta }">
<funnelHeader cmsWidgetName="FunnelHeaderWidget" ref="funnelHeader" /> <funnelHeader
cmsWidgetName="FunnelHeaderWidget"
ref="funnelHeader"
:overrideImageSrc="clientLogoImageSrc" />
<div class="page-gradient"></div>
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12 col-md-10 col-lg-8 col-xl-7"> <div class="col-12 col-md-10 col-lg-8 col-xl-7">
@ -28,12 +32,16 @@ import { Form } from "vee-validate";
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper"; import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
import { settleAllPromises } from "@/helpers/layout-helper"; import { settleAllPromises } from "@/helpers/layout-helper";
import store from "@/store";
import { debugLog } from "@/helpers/debug-log-helper";
export default { export default {
name: "policy-info-submitted", name: "policy-info-submitted",
mixins: [], mixins: [],
data() { data() {
return {}; return {
clientConfig: {},
};
}, },
components: { components: {
Form, Form,
@ -45,18 +53,35 @@ export default {
async beforeRouteEnter(to, from, next) { async beforeRouteEnter(to, from, next) {
const pageName = to.name; const pageName = to.name;
const cmsContentPromise = fetchCmsContentForPage(pageName); const cmsContentPromise = fetchCmsContentForPage(pageName);
const clientConfigPageName = `client_${store.getters.order.payment.parentAccountNumber}`;
const clientConfigPromise = fetchCmsContentForPage(clientConfigPageName);
const promiseResultMap = [ const promiseResultMap = [
{ {
resultKey: "cmsContent", resultKey: "cmsContent",
promise: cmsContentPromise, promise: cmsContentPromise,
}, },
{
resultKey: "clientConfig",
promise: clientConfigPromise,
},
]; ];
const resultMap = await settleAllPromises(promiseResultMap); const resultMap = await settleAllPromises(promiseResultMap);
next((vm) => { next((vm) => {
vm.setCmsContent(resultMap.cmsContent); vm.setCmsContent(resultMap.cmsContent);
vm.clientConfig = resultMap.clientConfig;
debugLog(
`policy-info-submitted clientConfig::${clientConfigPageName}`,
JSON.stringify(vm.clientConfig)
);
}); });
}, },
computed: {
clientLogoImageSrc() {
return this.clientConfig?.ClientLogoWidget?.Image || "";
},
},
methods: { methods: {
backButtonAction() { backButtonAction() {
this.$router.navigateWithoutSaving( this.$router.navigateWithoutSaving(

View file

@ -4,6 +4,7 @@
cmsWidgetName="FunnelHeaderWidget" cmsWidgetName="FunnelHeaderWidget"
ref="funnelHeader" ref="funnelHeader"
:overrideImageSrc="clientLogoImageSrc" /> :overrideImageSrc="clientLogoImageSrc" />
<div class="page-gradient"></div>
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12 col-md-10 col-lg-8 col-xl-7"> <div class="col-12 col-md-10 col-lg-8 col-xl-7">
@ -424,7 +425,10 @@ export default {
next((vm) => { next((vm) => {
vm.setCmsContent(resultMap.cmsContent); vm.setCmsContent(resultMap.cmsContent);
vm.clientConfig = resultMap.clientConfig; vm.clientConfig = resultMap.clientConfig;
debugLog(`clientConfig::${clientConfigPageName}`, JSON.stringify(vm.clientConfig)); debugLog(
`policy-infoclientConfig::${clientConfigPageName}`,
JSON.stringify(vm.clientConfig)
);
}); });
}, },

View file

@ -1,6 +1,10 @@
<template> <template>
<Form @submit="onSubmit" @invalid-submit="onInvalidSubmit" ref="theForm" v-slot="{ meta }"> <Form @submit="onSubmit" @invalid-submit="onInvalidSubmit" ref="theForm" v-slot="{ meta }">
<funnelHeader cmsWidgetName="FunnelHeaderWidget" ref="funnelHeader" /> <funnelHeader
cmsWidgetName="FunnelHeaderWidget"
ref="funnelHeader"
:overrideImageSrc="clientLogoImageSrc" />
<div class="page-gradient"></div>
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12 col-md-10 col-lg-8 col-xl-7"> <div class="col-12 col-md-10 col-lg-8 col-xl-7">
@ -43,6 +47,7 @@ import store from "@/store";
import buttonMain from "@/ux-components/button-main/button-main"; import buttonMain from "@/ux-components/button-main/button-main";
import textLink from "@/ux-components/text-link/text-link.vue"; import textLink from "@/ux-components/text-link/text-link.vue";
import { parentAccountNumbers } from "@/constants/insurance"; import { parentAccountNumbers } from "@/constants/insurance";
import { debugLog } from "@/helpers/debug-log-helper";
import { Form } from "vee-validate"; import { Form } from "vee-validate";
@ -53,7 +58,9 @@ export default {
name: "policy-vehicle", name: "policy-vehicle",
mixins: [], mixins: [],
data() { data() {
return {}; return {
clientConfig: {},
};
}, },
components: { components: {
Form, Form,
@ -67,19 +74,33 @@ export default {
async beforeRouteEnter(to, from, next) { async beforeRouteEnter(to, from, next) {
const pageName = to.name; const pageName = to.name;
const cmsContentPromise = fetchCmsContentForPage(pageName); const cmsContentPromise = fetchCmsContentForPage(pageName);
const clientConfigPageName = `client_${store.getters.order.payment.parentAccountNumber}`;
const clientConfigPromise = fetchCmsContentForPage(clientConfigPageName);
const promiseResultMap = [ const promiseResultMap = [
{ {
resultKey: "cmsContent", resultKey: "cmsContent",
promise: cmsContentPromise, promise: cmsContentPromise,
}, },
{
resultKey: "clientConfig",
promise: clientConfigPromise,
},
]; ];
const resultMap = await settleAllPromises(promiseResultMap); const resultMap = await settleAllPromises(promiseResultMap);
next((vm) => { next((vm) => {
vm.setCmsContent(resultMap.cmsContent); vm.setCmsContent(resultMap.cmsContent);
vm.clientConfig = resultMap.clientConfig;
debugLog(
`policy-vehicle clientConfig::${clientConfigPageName}`,
JSON.stringify(vm.clientConfig)
);
}); });
}, },
computed: { computed: {
clientLogoImageSrc() {
return this.clientConfig?.ClientLogoWidget?.Image || "";
},
vehicleNotListedQuestionText() { vehicleNotListedQuestionText() {
return this.getCmsContent("VehicleNotListedWidget", "Text"); return this.getCmsContent("VehicleNotListedWidget", "Text");
}, },

View file

@ -1,6 +1,10 @@
<template> <template>
<Form @submit="onSubmit" @invalid-submit="onInvalidSubmit" ref="theForm" v-slot="{ meta }"> <Form @submit="onSubmit" @invalid-submit="onInvalidSubmit" ref="theForm" v-slot="{ meta }">
<funnelHeader cmsWidgetName="FunnelHeaderWidget" ref="funnelHeader" /> <funnelHeader
cmsWidgetName="FunnelHeaderWidget"
ref="funnelHeader"
:overrideImageSrc="clientLogoImageSrc" />
<div class="page-gradient"></div>
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12 col-md-10 col-lg-8 col-xl-7"> <div class="col-12 col-md-10 col-lg-8 col-xl-7">
@ -28,12 +32,15 @@ import { Form } from "vee-validate";
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper"; import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
import { settleAllPromises } from "@/helpers/layout-helper"; import { settleAllPromises } from "@/helpers/layout-helper";
import store from "@/store";
import { debugLog } from "@/helpers/debug-log-helper";
export default { export default {
name: "recalibration-info", name: "recalibration-info",
mixins: [], mixins: [],
data() { data() {
return {}; return {
clientConfig: {},
};
}, },
components: { components: {
Form, Form,
@ -45,18 +52,35 @@ export default {
async beforeRouteEnter(to, from, next) { async beforeRouteEnter(to, from, next) {
const pageName = to.name; const pageName = to.name;
const cmsContentPromise = fetchCmsContentForPage(pageName); const cmsContentPromise = fetchCmsContentForPage(pageName);
const clientConfigPageName = `client_${store.getters.order.payment.parentAccountNumber}`;
const clientConfigPromise = fetchCmsContentForPage(clientConfigPageName);
const promiseResultMap = [ const promiseResultMap = [
{ {
resultKey: "cmsContent", resultKey: "cmsContent",
promise: cmsContentPromise, promise: cmsContentPromise,
}, },
{
resultKey: "clientConfig",
promise: clientConfigPromise,
},
]; ];
const resultMap = await settleAllPromises(promiseResultMap); const resultMap = await settleAllPromises(promiseResultMap);
next((vm) => { next((vm) => {
vm.setCmsContent(resultMap.cmsContent); vm.setCmsContent(resultMap.cmsContent);
vm.clientConfig = resultMap.clientConfig;
debugLog(
`recalibration-info clientConfig::${clientConfigPageName}`,
JSON.stringify(vm.clientConfig)
);
}); });
}, },
computed: {
clientLogoImageSrc() {
return this.clientConfig?.ClientLogoWidget?.Image || "";
},
},
methods: { methods: {
backButtonAction() { backButtonAction() {
this.$router.navigateWithoutSaving( this.$router.navigateWithoutSaving(

View file

@ -1,6 +1,9 @@
<template> <template>
<Form @submit="onSubmit" @invalid-submit="onInvalidSubmit" ref="theForm" v-slot="{ meta }"> <Form @submit="onSubmit" @invalid-submit="onInvalidSubmit" ref="theForm" v-slot="{ meta }">
<funnelHeader cmsWidgetName="FunnelHeaderWidget" ref="funnelHeader" /> <funnelHeader
cmsWidgetName="FunnelHeaderWidget"
ref="funnelHeader"
:overrideImageSrc="clientLogoImageSrc" />
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12 col-md-10 col-lg-8 col-xl-7"> <div class="col-12 col-md-10 col-lg-8 col-xl-7">
@ -57,6 +60,12 @@ export default {
}); });
}, },
computed: {
clientLogoImageSrc() {
return this.clientConfig?.ClientLogoWidget?.Image || "";
},
},
methods: { methods: {
backButtonAction() { backButtonAction() {
this.$router.navigateWithoutSaving( this.$router.navigateWithoutSaving(

View file

@ -102,3 +102,8 @@ option,
.btn { .btn {
letter-spacing: 0.03rem; letter-spacing: 0.03rem;
} }
.page-gradient {
height: 12px;
background: linear-gradient(to bottom, rgba(0, 0, 0, 0.08), rgba(0, 0, 0, 0));
}