From 774907c00e0fcf64784ce40c2489342a4a7b252a Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Wed, 4 Feb 2026 10:22:32 -0500 Subject: [PATCH 01/10] UI updates --- src/layouts/bailout-page/bailout-page.vue | 52 ++++++++++++++--------- 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/src/layouts/bailout-page/bailout-page.vue b/src/layouts/bailout-page/bailout-page.vue index a84f0dfe..3c430d64 100644 --- a/src/layouts/bailout-page/bailout-page.vue +++ b/src/layouts/bailout-page/bailout-page.vue @@ -20,24 +20,29 @@ :subContentProperty="subContentProperty" class="sub-header-content mt-2 mb-5" justification="left" /> - - +
+
+ +
+
+ +
+
+ @@ -77,6 +86,7 @@ import siteHeader from '@/iss-components/site-header/site-header.vue'; import siteSubHeader from '@/iss-components/site-sub-header/site-sub-header.vue'; import siteFooter from '@/iss-components/site-footer/site-footer.vue'; import textboxQuestion from '@/digital-components/textbox-question/textbox-question.vue'; +import textBlock from '@/digital-components/text-block/text-block.vue'; // Supporting files import BaseFormMixin from '@/mixins/base-form-mixin.js'; import { fetchCmsContentForPage } from '@/helpers/cms-content-helper'; @@ -99,7 +109,8 @@ export default { siteFooter, textboxQuestion, // eslint-disable-next-line vue/no-reserved-component-names - Form + Form, + textBlock }, mixins: [BaseFormMixin], async beforeRouteEnter(to, from, next) { @@ -130,7 +141,8 @@ export default { widget: { defaultSiteHeader: 'SiteSubHeaderWidget', noTpa: 'ContentGroupNoTPAWidget', - notSeeingPreferredShop: 'ContentGroupNotSeeingPreferredShop' + notSeeingPreferredShop: 'ContentGroupNotSeeingPreferredShop', + disclaimerText: 'DisclaimerWidget' }, rules: { firstName: globalRules.FIRST_NAME_REQUIRED, From 86c1661197cf05098cb1e223f407dc083fce230d Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Wed, 4 Feb 2026 10:26:51 -0500 Subject: [PATCH 02/10] unit test updates --- .../__snapshots__/bailout-page.spec.js.snap | 1 + src/layouts/bailout-page/bailout-page.spec.js | 10 ++++++++++ src/layouts/bailout-page/bailout-page.vue | 1 + 3 files changed, 12 insertions(+) diff --git a/src/layouts/bailout-page/__snapshots__/bailout-page.spec.js.snap b/src/layouts/bailout-page/__snapshots__/bailout-page.spec.js.snap index 62f2829b..c08f315b 100644 --- a/src/layouts/bailout-page/__snapshots__/bailout-page.spec.js.snap +++ b/src/layouts/bailout-page/__snapshots__/bailout-page.spec.js.snap @@ -19,6 +19,7 @@ Object { }, "widget": Object { "defaultSiteHeader": "SiteSubHeaderWidget", + "disclaimerText": "DisclaimerWidget", "noTpa": "ContentGroupNoTPAWidget", "notSeeingPreferredShop": "ContentGroupNotSeeingPreferredShop", }, diff --git a/src/layouts/bailout-page/bailout-page.spec.js b/src/layouts/bailout-page/bailout-page.spec.js index 5b0c68ee..3ccd149b 100644 --- a/src/layouts/bailout-page/bailout-page.spec.js +++ b/src/layouts/bailout-page/bailout-page.spec.js @@ -156,6 +156,16 @@ describe('Bailout page', () => { // Assert expect(siteFooter.exists()).toBeTruthy(); }); + test('disclaimer text block', () => { + // Arrange + const wrapper = shallowMount(bailoutPage, getMountOptions()); + + // Act + const disclaimerText = wrapper.findComponent({ ref: 'disclaimerText' }); + + // Assert + expect(disclaimerText.exists()).toBeTruthy(); + }); }); describe('computed', () => { describe('subHeaderCmsWidgetName', () => { diff --git a/src/layouts/bailout-page/bailout-page.vue b/src/layouts/bailout-page/bailout-page.vue index 3c430d64..7f137ac9 100644 --- a/src/layouts/bailout-page/bailout-page.vue +++ b/src/layouts/bailout-page/bailout-page.vue @@ -71,6 +71,7 @@ @backClicked="backButtonAction" @ForwardClicked="forwardButtonAction" /> From 0196f41d786a10d0cd5130853eb5a4d66302dd57 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Wed, 4 Feb 2026 11:46:57 -0500 Subject: [PATCH 03/10] error message updates --- src/constants/error-messages.js | 4 +++- src/constants/global-rules.js | 4 +++- src/helpers/global-rule-definer.js | 2 ++ src/layouts/bailout-page/bailout-page.vue | 8 ++++---- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/constants/error-messages.js b/src/constants/error-messages.js index 81f0fad0..224c6e30 100644 --- a/src/constants/error-messages.js +++ b/src/constants/error-messages.js @@ -65,7 +65,9 @@ const errorMessages = Object.freeze({ STYLE_REQUIRED: 'Vehicle style is required.', MOBILE_LOCATION_REQUIRED: 'Please enter your service address', DATE_REQUIRED: 'Please select a date', - TIME_REQUIRED: 'Please select an appointment time.' + TIME_REQUIRED: 'Please select an appointment time.', + PRIMARY_PHONE_REQUIRED: 'Primary phone number is required.', + BAILOUT_EMAIL_ADDRESS_REQUIRED: 'Email address is required.' }); export default errorMessages; diff --git a/src/constants/global-rules.js b/src/constants/global-rules.js index e82b118a..878b7a27 100644 --- a/src/constants/global-rules.js +++ b/src/constants/global-rules.js @@ -26,7 +26,9 @@ const globalRules = Object.freeze({ EXTENSION_FORMAT: 'extension-format', ZIP_CODE_REQUIRED: 'zip-code-required', ZIP_CODE_SEARCH_FORMAT: 'zip-code-search-format', - OPTION_REQUIRED: 'option-required' + OPTION_REQUIRED: 'option-required', + PRIMARY_PHONE_REQUIRED: 'primary-phone-required', + BAILOUT_EMAIL_ADDRESS_REQUIRED: 'bailout-email-address-required' }); export default globalRules; diff --git a/src/helpers/global-rule-definer.js b/src/helpers/global-rule-definer.js index 5aca4f66..b91f3dc0 100644 --- a/src/helpers/global-rule-definer.js +++ b/src/helpers/global-rule-definer.js @@ -24,6 +24,7 @@ function defineGlobalNameRules() { */ function defineGlobalEmailRules() { defineRule(globalRules.EMAIL_ADDRESS_REQUIRED, required(errorMessages.EMAIL_ADDRESS_REQUIRED)); + defineRule(globalRules.BAILOUT_EMAIL_ADDRESS_REQUIRED, required(errorMessages.BAILOUT_EMAIL_ADDRESS_REQUIRED)); defineRule( globalRules.EMAIL_ADDRESS_FORMAT, regex( @@ -71,6 +72,7 @@ function defineGlobalDateOfLossRules() { */ function defineGlobalPhoneNumberRules() { defineRule(globalRules.PHONE_NUMBER_REQUIRED, required(errorMessages.PHONE_NUMBER_REQUIRED)); + defineRule(globalRules.PRIMARY_PHONE_REQUIRED, required(errorMessages.PRIMARY_PHONE_REQUIRED)); defineRule( globalRules.PHONE_NUMBER_FORMAT, regex( diff --git a/src/layouts/bailout-page/bailout-page.vue b/src/layouts/bailout-page/bailout-page.vue index 7f137ac9..38aa202a 100644 --- a/src/layouts/bailout-page/bailout-page.vue +++ b/src/layouts/bailout-page/bailout-page.vue @@ -146,10 +146,10 @@ export default { disclaimerText: 'DisclaimerWidget' }, rules: { - firstName: globalRules.FIRST_NAME_REQUIRED, - lastName: globalRules.LAST_NAME_REQUIRED, - phoneNumber: `${globalRules.PHONE_NUMBER_REQUIRED}|${globalRules.PHONE_NUMBER_FORMAT}`, - email: `${globalRules.EMAIL_ADDRESS_REQUIRED}|${globalRules.EMAIL_ADDRESS_FORMAT}` + firstName: globalRules.POLICYHOLDER_FIRST_NAME_REQUIRED, + lastName: globalRules.POLICYHOLDER_LAST_NAME_REQUIRED, + phoneNumber: globalRules.PRIMARY_PHONE_REQUIRED, + email: globalRules.BAILOUT_EMAIL_ADDRESS_REQUIRED } }; }, From c7ffbfa6cfaceef82848e83bff34931aa27f4ac1 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Wed, 4 Feb 2026 11:49:50 -0500 Subject: [PATCH 04/10] unit test fix --- .../bailout-page/__snapshots__/bailout-page.spec.js.snap | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/layouts/bailout-page/__snapshots__/bailout-page.spec.js.snap b/src/layouts/bailout-page/__snapshots__/bailout-page.spec.js.snap index c08f315b..b28b6895 100644 --- a/src/layouts/bailout-page/__snapshots__/bailout-page.spec.js.snap +++ b/src/layouts/bailout-page/__snapshots__/bailout-page.spec.js.snap @@ -12,10 +12,10 @@ Object { "phoneNumber": "6145550909", }, "rules": Object { - "email": "email-required|email-address-format", - "firstName": "first-name-required", - "lastName": "last-name-required", - "phoneNumber": "phone-number-required|phone-number-format", + "email": "bailout-email-address-required", + "firstName": "policyholder-first-name-required", + "lastName": "policyholder-last-name-required", + "phoneNumber": "primary-phone-required", }, "widget": Object { "defaultSiteHeader": "SiteSubHeaderWidget", From 4a876543628c2803da1c6b0528f6f6b524ee0a84 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Wed, 4 Feb 2026 11:59:54 -0500 Subject: [PATCH 05/10] switch bailout --- src/helpers/bailout-helper.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/helpers/bailout-helper.js b/src/helpers/bailout-helper.js index 0191755d..b0d364c5 100644 --- a/src/helpers/bailout-helper.js +++ b/src/helpers/bailout-helper.js @@ -10,7 +10,7 @@ function canBailoutNavigateBack() { switch (code) { case BailoutCode.VehicleNotFound: - case BailoutCode.DoNotSeeMyShop: + case BailoutCode.RequestCallback: case BailoutCode.TPANotEnabled: return true; From 4ecd7d76b4aa90ecc381172f2c3f31c819521238 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Wed, 4 Feb 2026 14:57:33 -0500 Subject: [PATCH 06/10] change bailout to requestcallback --- src/layouts/tpa-search/tpa-search.vue | 4 ++-- src/router/router-constants/navigation-scenarios.js | 2 +- src/router/router-constants/routing-table.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/layouts/tpa-search/tpa-search.vue b/src/layouts/tpa-search/tpa-search.vue index 9476a7ad..83d211c1 100644 --- a/src/layouts/tpa-search/tpa-search.vue +++ b/src/layouts/tpa-search/tpa-search.vue @@ -389,9 +389,9 @@ export default { return getTpaProvidersResult?.data?.shopProviders ?? []; }, doNotSeeMyShopLinkClick() { - this.mainStore.setBailout(bailoutMessage.doNotSeeMyShop()); + this.mainStore.setBailout(bailoutMessage.RequestCallback()); this.$router.navigate( - this.navigationScenarios.CLICKED_DO_NOT_SEE_MY_SHOP_LINK, + this.navigationScenarios.CLICKED_NEED_HELP, this.$route ); }, diff --git a/src/router/router-constants/navigation-scenarios.js b/src/router/router-constants/navigation-scenarios.js index 24a0ffb9..d1c0df1e 100644 --- a/src/router/router-constants/navigation-scenarios.js +++ b/src/router/router-constants/navigation-scenarios.js @@ -73,7 +73,7 @@ const navigationScenarios = Object.freeze({ PRICING_LOOKUP_ERROR: 'PRICING_LOOKUP_ERROR', // TPA Search - CLICKED_DO_NOT_SEE_MY_SHOP_LINK: 'CLICKED_DO_NOT_SEE_MY_SHOP_LINK', + CLICKED_NEED_HELP: 'CLICKED_NEED_HELP', CLICKED_FORWARD_WITH_SAFELITE_SHOP: 'CLICKED_FORWARD_WITH_SAFELITE_SHOP', CLICKED_FORWARD_WITH_NON_SAFELITE_SHOP: 'CLICKED_FORWARD_WITH_NON_SAFELITE_SHOP', diff --git a/src/router/router-constants/routing-table.js b/src/router/router-constants/routing-table.js index a23699d8..3df9cb06 100644 --- a/src/router/router-constants/routing-table.js +++ b/src/router/router-constants/routing-table.js @@ -740,7 +740,7 @@ const routingTable = () => [ destinationIssPageValue: issPageValues.TPA_SUBMIT }, { - scenario: navigationScenarios.CLICKED_DO_NOT_SEE_MY_SHOP_LINK, + scenario: navigationScenarios.CLICKED_NEED_HELP, destinationIssPageValue: issPageValues.BAILOUT_PAGE } ] From 62c4418059bffc87c2c3a72e37f69c9cf3937903 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Wed, 4 Feb 2026 15:51:00 -0500 Subject: [PATCH 07/10] styling updates --- src/layouts/bailout-page/bailout-page.vue | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/layouts/bailout-page/bailout-page.vue b/src/layouts/bailout-page/bailout-page.vue index 38aa202a..1284c4e0 100644 --- a/src/layouts/bailout-page/bailout-page.vue +++ b/src/layouts/bailout-page/bailout-page.vue @@ -35,7 +35,7 @@ + cmsWidgetName="DisclaimerWidget" /> @@ -234,9 +232,7 @@ export default { }; - From 8e0f81728005e2ffc3b153ed41c6660f53bacd32 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Thu, 5 Feb 2026 12:15:42 -0500 Subject: [PATCH 08/10] hide modal --- src/layouts/contact-confirmation/contact-confirmation.vue | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/layouts/contact-confirmation/contact-confirmation.vue b/src/layouts/contact-confirmation/contact-confirmation.vue index 29c52745..2819efd6 100644 --- a/src/layouts/contact-confirmation/contact-confirmation.vue +++ b/src/layouts/contact-confirmation/contact-confirmation.vue @@ -24,6 +24,7 @@ import { fetchCmsContentForPage } from '@/helpers/cms-content-helper'; import issPageValues from '@/router/router-constants/issPage-values.js'; import settleAllPromises from '@/helpers/layout-helper'; import { useMainStore } from '@/store'; +import showIssLoadingModal from '@/helpers/loading-modal-helper'; export default { name: 'contact-confirmation', @@ -47,6 +48,7 @@ export default { next((vm) => { vm.setCmsContent(resultMap.cmsContent); }); + showIssLoadingModal(false); }, setup() { const mainStore = useMainStore(); From 19fc5046d67f0c32ed4d50fe69bc7ff0e1c04267 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Thu, 5 Feb 2026 13:25:24 -0500 Subject: [PATCH 09/10] copilot styling suggestion --- src/layouts/bailout-page/bailout-page.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/src/layouts/bailout-page/bailout-page.vue b/src/layouts/bailout-page/bailout-page.vue index 1284c4e0..f1678e93 100644 --- a/src/layouts/bailout-page/bailout-page.vue +++ b/src/layouts/bailout-page/bailout-page.vue @@ -25,6 +25,7 @@ Date: Thu, 5 Feb 2026 13:54:25 -0500 Subject: [PATCH 10/10] add phone/email validation --- .../bailout-page/__snapshots__/bailout-page.spec.js.snap | 4 ++-- src/layouts/bailout-page/bailout-page.vue | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/layouts/bailout-page/__snapshots__/bailout-page.spec.js.snap b/src/layouts/bailout-page/__snapshots__/bailout-page.spec.js.snap index b28b6895..b191b402 100644 --- a/src/layouts/bailout-page/__snapshots__/bailout-page.spec.js.snap +++ b/src/layouts/bailout-page/__snapshots__/bailout-page.spec.js.snap @@ -12,10 +12,10 @@ Object { "phoneNumber": "6145550909", }, "rules": Object { - "email": "bailout-email-address-required", + "email": "bailout-email-address-required|email-address-format", "firstName": "policyholder-first-name-required", "lastName": "policyholder-last-name-required", - "phoneNumber": "primary-phone-required", + "phoneNumber": "primary-phone-required|phone-number-format", }, "widget": Object { "defaultSiteHeader": "SiteSubHeaderWidget", diff --git a/src/layouts/bailout-page/bailout-page.vue b/src/layouts/bailout-page/bailout-page.vue index f1678e93..db6aa074 100644 --- a/src/layouts/bailout-page/bailout-page.vue +++ b/src/layouts/bailout-page/bailout-page.vue @@ -147,8 +147,8 @@ export default { rules: { firstName: globalRules.POLICYHOLDER_FIRST_NAME_REQUIRED, lastName: globalRules.POLICYHOLDER_LAST_NAME_REQUIRED, - phoneNumber: globalRules.PRIMARY_PHONE_REQUIRED, - email: globalRules.BAILOUT_EMAIL_ADDRESS_REQUIRED + phoneNumber: `${globalRules.PRIMARY_PHONE_REQUIRED}|${globalRules.PHONE_NUMBER_FORMAT}`, + email: `${globalRules.BAILOUT_EMAIL_ADDRESS_REQUIRED}|${globalRules.EMAIL_ADDRESS_FORMAT}` } }; },