From 55f7dcf0fb25c39028cacd2458062d8be954da85 Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Wed, 14 Jan 2026 09:17:58 -0500 Subject: [PATCH 01/36] INSR-6047 - New elements and functionality Page is functional and has all necessary elements No styling done --- .../provider-preference.vue | 111 +++++++++++------- 1 file changed, 68 insertions(+), 43 deletions(-) diff --git a/src/layouts/provider-preference/provider-preference.vue b/src/layouts/provider-preference/provider-preference.vue index eac2c575..145b1cf7 100644 --- a/src/layouts/provider-preference/provider-preference.vue +++ b/src/layouts/provider-preference/provider-preference.vue @@ -15,16 +15,26 @@ id="sub-header" cmsWidgetName="SiteSubHeader" class="mb-0 mt-4 text-center" /> - +
+ +
+ + @@ -80,6 +91,8 @@ import globalRules from '@/constants/global-rules'; import bailoutMessage from '@/constants/bailoutMessage'; import contentGroupModal from '@/iss-components/content-group-modal/content-group-modal.vue'; import showIssLoadingModal from '@/helpers/loading-modal-helper'; +import textLink from '@/ux-components/text-link/text-link.vue'; +import buttonMain from '@/ux-components/button-main/button-main.vue'; const options = { SAFELITE: 'SafeliteOption', TPA: 'TPAOption' }; const RECAL_MODAL_REF_NAME = 'RecalModal'; @@ -97,10 +110,12 @@ export default { // eslint-disable-next-line vue/no-reserved-component-names Form, buttonQuestion, + buttonMain, steeringModal, shopPreferenceModal, tpaRecalModal, - contentGroupModal + contentGroupModal, + textLink }, mixins: [baseFormMixin], async beforeRouteEnter(to, from, next) { @@ -176,6 +191,15 @@ export default { }, ackError() { return errorMessages.ACKNOWLEDGEMENT_REQUIRED; + }, + scheduleWithSafeliteText() { + return this.getCmsContent('ScheduleWithSafeliteText', 'BodyText'); + }, + scheduleWithOtherText() { + return this.getCmsContent('ScheduleWithOtherText', 'BodyText'); + }, + options() { + return options; } }, watch: { @@ -223,41 +247,42 @@ export default { showIssLoadingModal(true); this.navigateForward(this.navigationScenarios.CLICKED_FORWARD_WITH_TPA_ENABLED); }, - forwardButtonAction() { - if (this.selectedProvider) { - let scenario = null; - switch (this.selectedProvider) { - case options.SAFELITE: - this.mainStore.updateIsSafeliteProvider(true); + forwardButtonAction(selectedProvider) { + console.log('forwardButtonAction', selectedProvider); + let scenario = null; + switch (selectedProvider) { + case options.SAFELITE: + this.mainStore.updateIsSafeliteProvider(true); + scenario = + this.navigationScenarios + .CLICKED_FORWARD_WITH_SAFELITE; + break; + case options.TPA: + this.mainStore.updateIsSafeliteProvider(false); + console.log('enableTPAFlow', this.mainStore.issConfig.enableTPAFlow); + if (this.mainStore.issConfig.enableTPAFlow) { + console.log('hasRecalibrationPart', this.mainStore.hasRecalibrationPart); + if (this.mainStore.hasRecalibrationPart) { + this.$refs[TPA_RECAL_MODAL_REF_NAME].openModal(); + return; + } scenario = this.navigationScenarios - .CLICKED_FORWARD_WITH_SAFELITE; - break; - case options.TPA: - this.mainStore.updateIsSafeliteProvider(false); - if (this.mainStore.issConfig.enableTPAFlow) { - if (this.mainStore.hasRecalibrationPart) { - this.$refs[TPA_RECAL_MODAL_REF_NAME].openModal(); - return; - } - scenario = - this.navigationScenarios - .CLICKED_FORWARD_WITH_TPA_ENABLED; - } else { - this.mainStore.setBailout(bailoutMessage.TPANotEnabled()); - scenario = - this.navigationScenarios - .CLICKED_FORWARD_WITH_TPA_DISABLED; - } - break; - default: - } - this.navigateForward(scenario); - this.mainStore.saveProviderPreferenceData({ - selectedProvider: this.selectedProvider, - tpaAcknowledgement: this.tpaAcknowledgement - }); + .CLICKED_FORWARD_WITH_TPA_ENABLED; + } else { + this.mainStore.setBailout(bailoutMessage.TPANotEnabled()); + scenario = + this.navigationScenarios + .CLICKED_FORWARD_WITH_TPA_DISABLED; + } + break; + default: } + this.navigateForward(scenario); + this.mainStore.saveProviderPreferenceData({ + selectedProvider: selectedProvider, + tpaAcknowledgement: this.tpaAcknowledgement + }); }, openStateSteeringModal() { this.$refs[STEERING_MODAL_REF_NAME].openModal(); From 9d63dc09d2673d0e842b8bed130aebe6ba96583d Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Wed, 14 Jan 2026 09:20:48 -0500 Subject: [PATCH 02/36] Remove continue button, add loader --- src/layouts/provider-preference/provider-preference.vue | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/layouts/provider-preference/provider-preference.vue b/src/layouts/provider-preference/provider-preference.vue index 145b1cf7..1e0a47c5 100644 --- a/src/layouts/provider-preference/provider-preference.vue +++ b/src/layouts/provider-preference/provider-preference.vue @@ -16,7 +16,6 @@ cmsWidgetName="SiteSubHeader" class="mb-0 mt-4 text-center" />
@@ -77,6 +74,7 @@ import settleAllPromises from '@/helpers/layout-helper'; import errorMessages from '@/constants/error-messages'; import buttonQuestion from '@/digital-components/button-question/button-question.vue'; import issPageValues from '@/router/router-constants/issPage-values'; +import showIssLoadingModal from '@/helpers/loading-modal-helper'; // Import Component import baseFormMixin from '@/mixins/base-form-mixin'; @@ -90,7 +88,6 @@ import tpaRecalModal from '@/layouts/provider-preference/tpa-recal-modal/tpa-rec import globalRules from '@/constants/global-rules'; import bailoutMessage from '@/constants/bailoutMessage'; import contentGroupModal from '@/iss-components/content-group-modal/content-group-modal.vue'; -import showIssLoadingModal from '@/helpers/loading-modal-helper'; import textLink from '@/ux-components/text-link/text-link.vue'; import buttonMain from '@/ux-components/button-main/button-main.vue'; @@ -279,6 +276,7 @@ export default { default: } this.navigateForward(scenario); + showIssLoadingModal(true); this.mainStore.saveProviderPreferenceData({ selectedProvider: selectedProvider, tpaAcknowledgement: this.tpaAcknowledgement From ea231c8ac1512c377fcf6a8da70147d60f308b3c Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Wed, 14 Jan 2026 09:27:31 -0500 Subject: [PATCH 03/36] Remove recal modal --- .../provider-preference.vue | 21 +------------------ 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/src/layouts/provider-preference/provider-preference.vue b/src/layouts/provider-preference/provider-preference.vue index 1e0a47c5..bf114007 100644 --- a/src/layouts/provider-preference/provider-preference.vue +++ b/src/layouts/provider-preference/provider-preference.vue @@ -21,10 +21,6 @@ ref="buttonMain" variant="navigation" buttonText="Schedule now" - :class=" - (disableForwardAction || isForwardActionDisabled) && - 'form-test-invalid' - " @clickEvent="forwardButtonAction(options.SAFELITE)" />
@@ -38,16 +34,10 @@ class="mt-5" cmsWidgetName="SiteFooterWidget" :isForwardButtonHidden="true" - @backClicked="navigateBack" - @forwardClicked="forwardButtonAction" /> - + @backClicked="navigateBack" /> - @@ -92,7 +82,6 @@ import textLink from '@/ux-components/text-link/text-link.vue'; import buttonMain from '@/ux-components/button-main/button-main.vue'; const options = { SAFELITE: 'SafeliteOption', TPA: 'TPAOption' }; -const RECAL_MODAL_REF_NAME = 'RecalModal'; const STEERING_MODAL_REF_NAME = 'StateSteeringModal'; const SHOP_PREFERENCE_MODAL_REF_NAME = 'ShopPreferenceDrawer'; const TPA_RECAL_MODAL_REF_NAME = 'TPARecalModal'; @@ -142,7 +131,6 @@ export default { rules: { optionRequired: globalRules.OPTION_REQUIRED }, - RECAL_MODAL_REF_NAME, STEERING_MODAL_REF_NAME, SHOP_PREFERENCE_MODAL_REF_NAME, TPA_RECAL_MODAL_REF_NAME, @@ -199,13 +187,6 @@ export default { return options; } }, - watch: { - prefAnswers(newValue, oldValue) { - if (newValue !== oldValue) { - setupModalLink(this, RECAL_MODAL_REF_NAME); - } - } - }, mounted() { setupModalLinks(this); const pageData = this.mainStore.pageData(issPageValues.PROVIDER_PREFERENCE); From c7984ca111663c13880264bd225f082701f20351 Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Wed, 14 Jan 2026 09:34:34 -0500 Subject: [PATCH 04/36] Remove shop-preference-modal Removed files entirely --- .../provider-preference.vue | 14 +-- .../shop-preference-modal.spec.js | 59 ---------- .../shop-preference-modal.vue | 111 ------------------ 3 files changed, 1 insertion(+), 183 deletions(-) delete mode 100644 src/layouts/provider-preference/shop-preference-modal/shop-preference-modal.spec.js delete mode 100644 src/layouts/provider-preference/shop-preference-modal/shop-preference-modal.vue diff --git a/src/layouts/provider-preference/provider-preference.vue b/src/layouts/provider-preference/provider-preference.vue index bf114007..ef852e0a 100644 --- a/src/layouts/provider-preference/provider-preference.vue +++ b/src/layouts/provider-preference/provider-preference.vue @@ -41,11 +41,6 @@ - { vm.setCmsContent(resultMap.cmsContent); - - vm.showSteeringLink = !!vm.$refs[STEERING_MODAL_REF_NAME].ModalBodyText; - if (vm.showSteeringLink) { + if (!!vm.$refs[STEERING_MODAL_REF_NAME].ModalBodyText) { vm.openStateSteeringModal(); } }); @@ -126,13 +116,11 @@ export default { data() { return { selectedProvider: null, - showSteeringLink: false, tpaAcknowledgement: false, rules: { optionRequired: globalRules.OPTION_REQUIRED }, STEERING_MODAL_REF_NAME, - SHOP_PREFERENCE_MODAL_REF_NAME, TPA_RECAL_MODAL_REF_NAME, SITE_FOOTER_REF_NAME }; diff --git a/src/layouts/provider-preference/shop-preference-modal/shop-preference-modal.spec.js b/src/layouts/provider-preference/shop-preference-modal/shop-preference-modal.spec.js deleted file mode 100644 index 226d60bd..00000000 --- a/src/layouts/provider-preference/shop-preference-modal/shop-preference-modal.spec.js +++ /dev/null @@ -1,59 +0,0 @@ -import { shallowMount } from '@vue/test-utils'; -import settleAllPromises from '@/helpers/layout-helper.js'; -import { fetchCmsContentForPage } from '@/helpers/cms-content-helper'; -import { getMountOptions } from '@/helpers/unit-test-helper.js'; -import shopPreferenceModal from '@/layouts/provider-preference/shop-preference-modal/shop-preference-modal.vue'; - -// Mock our module for promises. -jest.mock('@/helpers/layout-helper.js', () => jest.fn()); - -// Mock fetchCmsContentForPage -jest.mock('@/helpers/cms-content-helper', () => ({ - fetchCmsContentForPage: jest.fn(), - setupModalLinks: jest.fn() -})); - -/** @ignore */ -function setupMocks(propsData) { - const mountOptions = getMountOptions({ - router: { - navigate: jest.fn() - } - }); - - mountOptions.propsData = propsData; - - const wrapper = shallowMount( - shopPreferenceModal, - mountOptions - ); - - const apiResponses = {}; - - settleAllPromises.mockImplementation(() => apiResponses); - fetchCmsContentForPage.mockImplementation(() => { }); - - return { wrapper }; -} - -describe('provider-preference.vue', () => { - test('Should display state specific steering modal link when in state with steering language', async () => { - // Arrange - const { wrapper } = setupMocks({ showSteeringLink: true }); - - // Act - - // Test - expect(wrapper.vm.showSteeringLink).toBeTruthy(); - }); - - test('Should not display state specific steering modal link when not in state with steering language', async () => { - // Arrange - const { wrapper } = setupMocks({ showSteeringLink: false }); - - // Act - - // Test - expect(wrapper.vm.showSteeringLink).toBeFalsy(); - }); -}); diff --git a/src/layouts/provider-preference/shop-preference-modal/shop-preference-modal.vue b/src/layouts/provider-preference/shop-preference-modal/shop-preference-modal.vue deleted file mode 100644 index 882c7fb4..00000000 --- a/src/layouts/provider-preference/shop-preference-modal/shop-preference-modal.vue +++ /dev/null @@ -1,111 +0,0 @@ - - - - - From b5d75d68bc1879da6e55b426d260e6f404b4d952 Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Wed, 14 Jan 2026 10:08:45 -0500 Subject: [PATCH 05/36] Removed selectedProvider data member It's not necessary to remember as there is no button logic on the page anymore --- .../provider-preference/provider-preference.vue | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/src/layouts/provider-preference/provider-preference.vue b/src/layouts/provider-preference/provider-preference.vue index ef852e0a..c631810b 100644 --- a/src/layouts/provider-preference/provider-preference.vue +++ b/src/layouts/provider-preference/provider-preference.vue @@ -108,6 +108,8 @@ export default { const resultMap = await settleAllPromises(promiseResultMap); next((vm) => { vm.setCmsContent(resultMap.cmsContent); + // open steering modal if it has body text, the state is defined in the CMS content and doesn't + // populate if the state is not listed in the CMS content if (!!vm.$refs[STEERING_MODAL_REF_NAME].ModalBodyText) { vm.openStateSteeringModal(); } @@ -115,7 +117,6 @@ export default { }, data() { return { - selectedProvider: null, tpaAcknowledgement: false, rules: { optionRequired: globalRules.OPTION_REQUIRED @@ -126,12 +127,6 @@ export default { }; }, computed: { - isForwardActionDisabled() { - return this.selectedProvider === null; - }, - isForwardNavigationDisabled() { - return this.selectedProvider === options.TPA && !this.tpaAcknowledgement; - }, prefAnswers() { const cmsAnswersContent = [ { @@ -178,9 +173,6 @@ export default { mounted() { setupModalLinks(this); const pageData = this.mainStore.pageData(issPageValues.PROVIDER_PREFERENCE); - this.selectedProvider = pageData?.selectedProvider - ? pageData.selectedProvider - : null; this.tpaAcknowledgement = pageData?.tpaAcknowledgement ? pageData.tpaAcknowledgement : false; @@ -207,7 +199,7 @@ export default { }, navigateWithTPAAck() { this.mainStore.saveProviderPreferenceData({ - selectedProvider: this.selectedProvider, + selectedProvider: options.TPA, tpaAcknowledgement: this.tpaAcknowledgement }); showIssLoadingModal(true); From cdd967e222c2bf93e95773dec09885be2686c79e Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Wed, 14 Jan 2026 10:13:44 -0500 Subject: [PATCH 06/36] Remove all pageData Nothing on the page needs to be remembered anymore --- .../provider-preference/provider-preference.vue | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/src/layouts/provider-preference/provider-preference.vue b/src/layouts/provider-preference/provider-preference.vue index c631810b..6eac50d7 100644 --- a/src/layouts/provider-preference/provider-preference.vue +++ b/src/layouts/provider-preference/provider-preference.vue @@ -117,7 +117,6 @@ export default { }, data() { return { - tpaAcknowledgement: false, rules: { optionRequired: globalRules.OPTION_REQUIRED }, @@ -172,10 +171,6 @@ export default { }, mounted() { setupModalLinks(this); - const pageData = this.mainStore.pageData(issPageValues.PROVIDER_PREFERENCE); - this.tpaAcknowledgement = pageData?.tpaAcknowledgement - ? pageData.tpaAcknowledgement - : false; }, methods: { getHeaderTextFromCms(cmsWidgetName) { @@ -195,14 +190,10 @@ export default { return true; }, navigateForward(scenario) { + showIssLoadingModal(true); this.$router.navigate(scenario, this.$route); }, navigateWithTPAAck() { - this.mainStore.saveProviderPreferenceData({ - selectedProvider: options.TPA, - tpaAcknowledgement: this.tpaAcknowledgement - }); - showIssLoadingModal(true); this.navigateForward(this.navigationScenarios.CLICKED_FORWARD_WITH_TPA_ENABLED); }, forwardButtonAction(selectedProvider) { @@ -237,11 +228,6 @@ export default { default: } this.navigateForward(scenario); - showIssLoadingModal(true); - this.mainStore.saveProviderPreferenceData({ - selectedProvider: selectedProvider, - tpaAcknowledgement: this.tpaAcknowledgement - }); }, openStateSteeringModal() { this.$refs[STEERING_MODAL_REF_NAME].openModal(); From 1c6105af53ae7136d552a96f132cf6582ff6f9ff Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Wed, 14 Jan 2026 10:15:08 -0500 Subject: [PATCH 07/36] Remove rules Not needed, no button question --- src/layouts/provider-preference/provider-preference.vue | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/layouts/provider-preference/provider-preference.vue b/src/layouts/provider-preference/provider-preference.vue index 6eac50d7..95b103de 100644 --- a/src/layouts/provider-preference/provider-preference.vue +++ b/src/layouts/provider-preference/provider-preference.vue @@ -52,13 +52,11 @@ // Import Supporting Files import { fetchCmsContentForPage, - setupModalLink, setupModalLinks } from '@/helpers/cms-content-helper'; import settleAllPromises from '@/helpers/layout-helper'; import errorMessages from '@/constants/error-messages'; import buttonQuestion from '@/digital-components/button-question/button-question.vue'; -import issPageValues from '@/router/router-constants/issPage-values'; import showIssLoadingModal from '@/helpers/loading-modal-helper'; // Import Component @@ -69,7 +67,6 @@ import siteHeader from '@/iss-components/site-header/site-header.vue'; import siteSubHeader from '@/iss-components/site-sub-header/site-sub-header.vue'; import steeringModal from '@/layouts/provider-preference/steering-modal/steering-modal.vue'; import tpaRecalModal from '@/layouts/provider-preference/tpa-recal-modal/tpa-recal-modal.vue'; -import globalRules from '@/constants/global-rules'; import bailoutMessage from '@/constants/bailoutMessage'; import contentGroupModal from '@/iss-components/content-group-modal/content-group-modal.vue'; import textLink from '@/ux-components/text-link/text-link.vue'; @@ -117,9 +114,6 @@ export default { }, data() { return { - rules: { - optionRequired: globalRules.OPTION_REQUIRED - }, STEERING_MODAL_REF_NAME, TPA_RECAL_MODAL_REF_NAME, SITE_FOOTER_REF_NAME From 508aa58c423d56abd6c888da84d2d054c1916b16 Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Wed, 14 Jan 2026 10:17:37 -0500 Subject: [PATCH 08/36] Remove unused button-question code Also remove console log, now ready for styling --- .../provider-preference.vue | 34 +------------------ 1 file changed, 1 insertion(+), 33 deletions(-) diff --git a/src/layouts/provider-preference/provider-preference.vue b/src/layouts/provider-preference/provider-preference.vue index 95b103de..17db245d 100644 --- a/src/layouts/provider-preference/provider-preference.vue +++ b/src/layouts/provider-preference/provider-preference.vue @@ -120,36 +120,6 @@ export default { }; }, computed: { - prefAnswers() { - const cmsAnswersContent = [ - { - cmsWidgetName: options.SAFELITE - }, - { - cmsWidgetName: options.TPA - } - ]; - // if cms content has not yet loaded, skip - if ( - !this.getCmsContent( - cmsAnswersContent[0].cmsWidgetName, - 'HeaderText' - ) - || this.getCmsContent( - cmsAnswersContent[0].cmsWidgetName, - 'HeaderText' - ) === '' - ) { - return {}; - } - const modifiedAnswers = cmsAnswersContent.map((answer) => ({ - value: answer.cmsWidgetName, - buttonLabel: this.getHeaderTextFromCms(answer.cmsWidgetName), - buttonLabelSubCopy: this.getSubheaderTextFromCms(answer.cmsWidgetName), - buttonBodyCopy: this.getBodyTextFromCms(answer.cmsWidgetName) - })); - return modifiedAnswers; - }, ackError() { return errorMessages.ACKNOWLEDGEMENT_REQUIRED; }, @@ -159,6 +129,7 @@ export default { scheduleWithOtherText() { return this.getCmsContent('ScheduleWithOtherText', 'BodyText'); }, + // Expose options for use in the template options() { return options; } @@ -191,7 +162,6 @@ export default { this.navigateForward(this.navigationScenarios.CLICKED_FORWARD_WITH_TPA_ENABLED); }, forwardButtonAction(selectedProvider) { - console.log('forwardButtonAction', selectedProvider); let scenario = null; switch (selectedProvider) { case options.SAFELITE: @@ -202,9 +172,7 @@ export default { break; case options.TPA: this.mainStore.updateIsSafeliteProvider(false); - console.log('enableTPAFlow', this.mainStore.issConfig.enableTPAFlow); if (this.mainStore.issConfig.enableTPAFlow) { - console.log('hasRecalibrationPart', this.mainStore.hasRecalibrationPart); if (this.mainStore.hasRecalibrationPart) { this.$refs[TPA_RECAL_MODAL_REF_NAME].openModal(); return; From 34199fba0c9214cf7b06e81df37408e7166812a9 Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Wed, 14 Jan 2026 10:19:56 -0500 Subject: [PATCH 09/36] Remove unused styling and references --- .../provider-preference/provider-preference.vue | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/src/layouts/provider-preference/provider-preference.vue b/src/layouts/provider-preference/provider-preference.vue index 17db245d..352a8a1b 100644 --- a/src/layouts/provider-preference/provider-preference.vue +++ b/src/layouts/provider-preference/provider-preference.vue @@ -58,17 +58,16 @@ import settleAllPromises from '@/helpers/layout-helper'; import errorMessages from '@/constants/error-messages'; import buttonQuestion from '@/digital-components/button-question/button-question.vue'; import showIssLoadingModal from '@/helpers/loading-modal-helper'; +import bailoutMessage from '@/constants/bailoutMessage'; +import baseFormMixin from '@/mixins/base-form-mixin'; // Import Component -import baseFormMixin from '@/mixins/base-form-mixin'; import { Form } from 'vee-validate'; import siteFooter from '@/iss-components/site-footer/site-footer.vue'; import siteHeader from '@/iss-components/site-header/site-header.vue'; import siteSubHeader from '@/iss-components/site-sub-header/site-sub-header.vue'; import steeringModal from '@/layouts/provider-preference/steering-modal/steering-modal.vue'; import tpaRecalModal from '@/layouts/provider-preference/tpa-recal-modal/tpa-recal-modal.vue'; -import bailoutMessage from '@/constants/bailoutMessage'; -import contentGroupModal from '@/iss-components/content-group-modal/content-group-modal.vue'; import textLink from '@/ux-components/text-link/text-link.vue'; import buttonMain from '@/ux-components/button-main/button-main.vue'; @@ -89,7 +88,6 @@ export default { buttonMain, steeringModal, tpaRecalModal, - contentGroupModal, textLink }, mixins: [baseFormMixin], @@ -211,13 +209,6 @@ export default { #sub-header span { color: $black; } - .question-text { - margin-top: 0; - margin-bottom: 0.5rem; - & > span { - text-align: left; - } - } :deep(.safeliteLogo) { background-image: url(~@/assets/img/icons/logo.svg); background-repeat: no-repeat; From 155ba5b1dfd28e7805ffa8ea98507844b69e6091 Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Wed, 14 Jan 2026 10:24:12 -0500 Subject: [PATCH 10/36] Move data members to computeds Data members should be used for data that cannot be derived from other constants/logic --- .../provider-preference.vue | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/layouts/provider-preference/provider-preference.vue b/src/layouts/provider-preference/provider-preference.vue index 352a8a1b..11d3792c 100644 --- a/src/layouts/provider-preference/provider-preference.vue +++ b/src/layouts/provider-preference/provider-preference.vue @@ -30,7 +30,7 @@ href="#" @clickEvent="forwardButtonAction(options.TPA)" /> @@ -111,11 +111,7 @@ export default { }); }, data() { - return { - STEERING_MODAL_REF_NAME, - TPA_RECAL_MODAL_REF_NAME, - SITE_FOOTER_REF_NAME - }; + }, computed: { ackError() { @@ -130,6 +126,14 @@ export default { // Expose options for use in the template options() { return options; + }, + // Expose component refs for use in the template + componentRefs() { + return { + STEERING_MODAL_REF_NAME, + TPA_RECAL_MODAL_REF_NAME, + SITE_FOOTER_REF_NAME + }; } }, mounted() { From cecb1f537a9f3a94f32fa41b5e4a69e01292b48e Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Wed, 14 Jan 2026 10:39:21 -0500 Subject: [PATCH 11/36] Finished styling --- .../provider-preference/provider-preference.vue | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/layouts/provider-preference/provider-preference.vue b/src/layouts/provider-preference/provider-preference.vue index 11d3792c..5b419319 100644 --- a/src/layouts/provider-preference/provider-preference.vue +++ b/src/layouts/provider-preference/provider-preference.vue @@ -16,22 +16,26 @@ cmsWidgetName="SiteSubHeader" class="mb-0 mt-4 text-center" />
@@ -213,6 +217,12 @@ export default { #sub-header span { color: $black; } + .full-width-button { + width: 100%; + } + .underlined-text { + text-decoration: underline; + } :deep(.safeliteLogo) { background-image: url(~@/assets/img/icons/logo.svg); background-repeat: no-repeat; From a39e786eca2882e524bd4382dbffe79df5b4941d Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Wed, 14 Jan 2026 11:22:45 -0500 Subject: [PATCH 12/36] Remove page data save from the store --- src/store/index.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/store/index.js b/src/store/index.js index 1d6e44b7..3441021d 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -2393,9 +2393,6 @@ export const useMainStore = defineStore({ return retPricedLineItems; }, - saveProviderPreferenceData(data) { - this.updatePageData({ page: issPageValues.PROVIDER_PREFERENCE, data }); - }, addEventToBus(event) { this.applicationUser.eventBus.push(event); }, From bfccc340a14106a8cfd723296f0267d3dfc69d00 Mon Sep 17 00:00:00 2001 From: scottkiener-at-safelite Date: Wed, 14 Jan 2026 13:50:48 -0500 Subject: [PATCH 13/36] Rework TPA Recal Modal Move things to constants Add button question Rework navigation now that it can change inside modal Add error message --- src/constants/error-messages.js | 1 + src/constants/provider-preference.js | 6 ++ .../provider-preference.vue | 96 +++++++++---------- .../tpa-recal-modal/tpa-recal-modal.vue | 67 ++++++++++--- 4 files changed, 109 insertions(+), 61 deletions(-) create mode 100644 src/constants/provider-preference.js diff --git a/src/constants/error-messages.js b/src/constants/error-messages.js index e1d23731..5be37825 100644 --- a/src/constants/error-messages.js +++ b/src/constants/error-messages.js @@ -52,6 +52,7 @@ const errorMessages = Object.freeze({ POLICYHOLDER_FIRST_NAME_REQUIRED: 'First name is required.', POLICYHOLDER_LAST_NAME_REQUIRED: 'Last name is required.', ACKNOWLEDGEMENT_REQUIRED: 'You must agree to the terms to continue', + NO_SELECTION_REQUIRED: 'Please select an option', YEAR_REQUIRED: 'Vehicle year is required.', MAKE_REQUIRED: 'Vehicle make is required.', diff --git a/src/constants/provider-preference.js b/src/constants/provider-preference.js new file mode 100644 index 00000000..291aaf97 --- /dev/null +++ b/src/constants/provider-preference.js @@ -0,0 +1,6 @@ +const PROVIDER_PREFERENCE_OPTIONS = Object.freeze({ + SAFELITE: 'SafeliteOption', + TPA: 'TPAOption' +}); + +export default PROVIDER_PREFERENCE_OPTIONS; \ No newline at end of file diff --git a/src/layouts/provider-preference/provider-preference.vue b/src/layouts/provider-preference/provider-preference.vue index 5b419319..95a66d96 100644 --- a/src/layouts/provider-preference/provider-preference.vue +++ b/src/layouts/provider-preference/provider-preference.vue @@ -23,7 +23,7 @@ class="full-width-button" variant="navigation" buttonText="Schedule now" - @clickEvent="forwardButtonAction(options.SAFELITE)" /> + @clickEvent="scheduleWithSafelite" />
@@ -32,9 +32,9 @@ linkType="navigation" text="Find another shop" href="#" - @clickEvent="forwardButtonAction(options.TPA)" /> + @clickEvent="findAnotherShopClicked" /> + :noSelectionError="noSelectionError" + @buttonClick="navigateWithTPARecalAnswer"/>