From a0a6a8ab0df095cc7a7d68b1d96a1344a70cd568 Mon Sep 17 00:00:00 2001 From: Bill Richardson Date: Tue, 2 Dec 2025 12:31:57 -0500 Subject: [PATCH 01/16] Initial Updates for INSR-7740 Also includes INSR-7741 footer menu Known issues: OneTrust not set up on click. Header updates need to be done on each page. Committing welcome-page.vue only for those. --- package-lock.json | 2 +- src/App.vue | 13 +- .../img/powered-by-safelite-solutions.svg | 26 ++++ .../footer-menu/footer-menu.vue | 143 ++++++++++++++++++ .../site-footer/footer-image/footer-image.vue | 40 ----- .../site-footer/site-footer.vue | 36 +---- .../site-header/site-header.vue | 40 +++-- .../site-sub-header/site-sub-header.vue | 23 ++- src/layouts/welcome-page/welcome-page.vue | 31 ++-- src/styles/common-styles.scss | 33 ++++ 10 files changed, 274 insertions(+), 113 deletions(-) create mode 100644 src/assets/img/powered-by-safelite-solutions.svg create mode 100644 src/iss-components/footer-menu/footer-menu.vue delete mode 100644 src/iss-components/site-footer/footer-image/footer-image.vue diff --git a/package-lock.json b/package-lock.json index 07bc00f7..7d879e6c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -67,7 +67,7 @@ "typescript-eslint": "^8.11.0", "vite": "^6.4.1", "vitest": "^3.2.4", - "volar-service-vetur": "*", + "volar-service-vetur": "latest", "wait-on": "^8.0.2" } }, diff --git a/src/App.vue b/src/App.vue index 3f54962a..81e59a4e 100644 --- a/src/App.vue +++ b/src/App.vue @@ -7,6 +7,7 @@ + import loadingModal from '@/iss-components/loading-modal/loading-modal.vue'; import showIssLoadingModal from '@/helpers/loading-modal-helper.js'; +import footerMenu from '@/iss-components/footer-menu/footer-menu.vue'; export default { name: 'app', components: { + footerMenu, loadingModal }, setup() { @@ -45,15 +48,15 @@ window.onerror = (msg, url, line, col, error) => { // Note that col & error are new to the HTML 5 spec and may not be // supported in every browser. It worked for me in Chrome. global.$logger.logError(msg, { - url: url, - line: line, - column: col ?? "", - error: error ?? "", + url, + line, + column: col ?? '', + error: error ?? '' }); // If you return true, then error alerts (like in older versions of // Internet Explorer) will be suppressed. - var suppressErrorAlert = true; + const suppressErrorAlert = true; return suppressErrorAlert; }; diff --git a/src/assets/img/powered-by-safelite-solutions.svg b/src/assets/img/powered-by-safelite-solutions.svg new file mode 100644 index 00000000..ec8d5554 --- /dev/null +++ b/src/assets/img/powered-by-safelite-solutions.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/iss-components/footer-menu/footer-menu.vue b/src/iss-components/footer-menu/footer-menu.vue new file mode 100644 index 00000000..738c0507 --- /dev/null +++ b/src/iss-components/footer-menu/footer-menu.vue @@ -0,0 +1,143 @@ + + + + diff --git a/src/iss-components/site-footer/footer-image/footer-image.vue b/src/iss-components/site-footer/footer-image/footer-image.vue deleted file mode 100644 index f1ddaf89..00000000 --- a/src/iss-components/site-footer/footer-image/footer-image.vue +++ /dev/null @@ -1,40 +0,0 @@ - - - - diff --git a/src/iss-components/site-footer/site-footer.vue b/src/iss-components/site-footer/site-footer.vue index fd41ea76..1cf0f21e 100644 --- a/src/iss-components/site-footer/site-footer.vue +++ b/src/iss-components/site-footer/site-footer.vue @@ -49,7 +49,6 @@ diff --git a/src/iss-components/site-sub-header/site-sub-header.vue b/src/iss-components/site-sub-header/site-sub-header.vue index 34b4bbd8..b58be168 100644 --- a/src/iss-components/site-sub-header/site-sub-header.vue +++ b/src/iss-components/site-sub-header/site-sub-header.vue @@ -1,10 +1,10 @@ @@ -163,7 +157,6 @@ import textboxQuestion from '@/digital-components/textbox-question/textbox-quest import buttonQuestion from '@/digital-components/button-question/button-question.vue'; import dropdownQuestion from '@/digital-components/dropdown-question/dropdown-question.vue'; import textBlock from '@/digital-components/text-block/text-block.vue'; -import footerImage from '@/iss-components/site-footer/footer-image/footer-image.vue'; // Supporting files import { @@ -196,7 +189,6 @@ export default { components: { siteHeader, siteSubHeader, - footerImage, alert, buttonQuestion, continueModal, @@ -482,13 +474,22 @@ export default { From 940b7d295f306bfda6c83fcfe31e237437ed0ad0 Mon Sep 17 00:00:00 2001 From: Bill Richardson Date: Tue, 2 Dec 2025 16:07:34 -0500 Subject: [PATCH 03/16] updates to lookup and damage. --- src/layouts/vehicle-damage/vehicle-damage.vue | 174 +++++++++--------- src/layouts/vehicle-lookup/vehicle-lookup.vue | 71 +++---- src/styles/common-styles.scss | 12 ++ 3 files changed, 134 insertions(+), 123 deletions(-) diff --git a/src/layouts/vehicle-damage/vehicle-damage.vue b/src/layouts/vehicle-damage/vehicle-damage.vue index a86fe4ca..8578a90d 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.vue +++ b/src/layouts/vehicle-damage/vehicle-damage.vue @@ -4,20 +4,15 @@ v-slot="{ meta }" @submit="onSubmit" @invalidSubmit="onInvalidSubmit"> -
-
-
- -
+
+
+
-
-
- - +
+
+ -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
- +
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
@@ -100,7 +95,6 @@ // Components import siteHeader from '@/iss-components/site-header/site-header.vue'; import siteFooter from '@/iss-components/site-footer/site-footer.vue'; -import vehicleBanner from '@/iss-components/vehicle-banner/vehicle-banner.vue'; import siteSubHeader from '@/iss-components/site-sub-header/site-sub-header.vue'; import sideDoorOptions from '@/layouts/vehicle-damage/side-door-options/side-door-options.vue'; import damageLocationQuestion from '@/layouts/vehicle-damage/damage-location-question/damage-location-question.vue'; @@ -133,7 +127,6 @@ export default { components: { siteHeader, siteFooter, - vehicleBanner, siteSubHeader, sideDoorOptions, damageLocationQuestion, @@ -500,18 +493,21 @@ export default { diff --git a/src/styles/common-styles.scss b/src/styles/common-styles.scss index df754d5f..2aa71a2e 100644 --- a/src/styles/common-styles.scss +++ b/src/styles/common-styles.scss @@ -128,6 +128,18 @@ body { } #app { + display: flex; + flex-direction: column; + height: 100dvh; + + >form { + flex: 1 0 auto; + } + + >.footer-menu-container { + flex: 0 0 auto; + } + @include media-breakpoint-up(xs) { overflow: auto; } From e5f80409d4dee3b2c85c44e2b6890c6ddd919244 Mon Sep 17 00:00:00 2001 From: Bill Richardson Date: Wed, 3 Dec 2025 08:42:11 -0500 Subject: [PATCH 04/16] Update Vin Lookup upped max-len to 160 from 140 on eslint --- .eslintrc.js | 2 +- src/layouts/vin-lookup/vin-lookup.vue | 34 ++++++++++++++------------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 7187e7e5..3ced6a6d 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -23,7 +23,7 @@ module.exports = { 'implicit-arrow-linebreak': ['off'], 'comma-dangle': ['error', 'never'], indent: ['error', 4, { SwitchCase: 1 }], - 'max-len': ['error', { code: 140 }], + 'max-len': ['error', { code: 160 }], 'no-plusplus': ['error', { allowForLoopAfterthoughts: true }], 'vue/html-indent': 'off', 'vue/html-closing-bracket-newline': ['error', { diff --git a/src/layouts/vin-lookup/vin-lookup.vue b/src/layouts/vin-lookup/vin-lookup.vue index 90209f94..15831aca 100644 --- a/src/layouts/vin-lookup/vin-lookup.vue +++ b/src/layouts/vin-lookup/vin-lookup.vue @@ -4,21 +4,16 @@ v-slot="{ meta }" @submit="onSubmit" @invalidSubmit="onInvalidSubmit"> -
-
-
- -
+
+
+
-
-
+
+
- + + + From 95ed1c5b35ebbc9410025c59e933e0da43c39a77 Mon Sep 17 00:00:00 2001 From: Bill Richardson Date: Wed, 3 Dec 2025 09:29:11 -0500 Subject: [PATCH 05/16] more updates policy-endorsements (formatting) license-plate-lookup coverage-statement --- .../coverage-statement/coverage-statement.vue | 42 ++++++++++------- .../license-plate-lookup.vue | 29 ++++++------ .../policy-endorsements.vue | 46 ++++++++----------- 3 files changed, 60 insertions(+), 57 deletions(-) diff --git a/src/layouts/coverage-statement/coverage-statement.vue b/src/layouts/coverage-statement/coverage-statement.vue index 170d2454..19059edb 100644 --- a/src/layouts/coverage-statement/coverage-statement.vue +++ b/src/layouts/coverage-statement/coverage-statement.vue @@ -5,27 +5,25 @@ v-slot="{ meta }" @submit="onSubmit" @invalidSubmit="onInvalidSubmit"> -
-
-
- -
+
+
+
-
-
+
+
+ From c1d14593af9926a4cc9a68427679728d3ec312e1 Mon Sep 17 00:00:00 2001 From: Bill Richardson Date: Wed, 3 Dec 2025 11:30:58 -0500 Subject: [PATCH 06/16] more updates several more pages --- src/layouts/bailout-page/bailout-page.vue | 25 +++++---- .../contact-confirmation.vue | 38 ++++++++------ .../contact-details/contact-details.vue | 25 +++++---- .../provider-preference.vue | 35 +++++++------ src/layouts/schedule-page/schedule-page.vue | 25 +++++---- .../service-location/service-location.vue | 51 ++++++++++--------- src/styles/client-customizations.scss | 4 -- 7 files changed, 114 insertions(+), 89 deletions(-) diff --git a/src/layouts/bailout-page/bailout-page.vue b/src/layouts/bailout-page/bailout-page.vue index 692837e1..a84f0dfe 100644 --- a/src/layouts/bailout-page/bailout-page.vue +++ b/src/layouts/bailout-page/bailout-page.vue @@ -4,16 +4,14 @@ v-slot="{ meta }" @submit="onSubmit" @invalidSubmit="onInvalidSubmit"> -
-
-
- -
+
+
+
-
-
+
+
@import '@/styles/bailout-common.scss'; + +.iss-heritage-container-width { + .bailout-page-container { + position: relative; + min-height: 1px; + padding-left: .9375rem; + padding-right: .9375rem; + } +} diff --git a/src/layouts/contact-confirmation/contact-confirmation.vue b/src/layouts/contact-confirmation/contact-confirmation.vue index 9496fb30..29c52745 100644 --- a/src/layouts/contact-confirmation/contact-confirmation.vue +++ b/src/layouts/contact-confirmation/contact-confirmation.vue @@ -1,19 +1,19 @@ diff --git a/src/layouts/contact-details/contact-details.vue b/src/layouts/contact-details/contact-details.vue index bd710d18..7e0b22f1 100644 --- a/src/layouts/contact-details/contact-details.vue +++ b/src/layouts/contact-details/contact-details.vue @@ -4,16 +4,14 @@ v-slot="{ meta }" @submit="onSubmit" @invalidSubmit="onInvalidSubmit"> -
-
-
- -
+
+
+
-
-
+
+
diff --git a/src/layouts/address-vehicles/address-vehicles.vue b/src/layouts/address-vehicles/address-vehicles.vue index 6f57e98a..0510ad5f 100644 --- a/src/layouts/address-vehicles/address-vehicles.vue +++ b/src/layouts/address-vehicles/address-vehicles.vue @@ -4,19 +4,15 @@ v-slot="{ meta }" @submit="onSubmit" @invalidSubmit="onInvalidSubmit"> -
-
-
- -
+
+
+
-
-
- - +
+
+ - From 581674a3228ebd09b98dad83530c68f881d7c429 Mon Sep 17 00:00:00 2001 From: Bill Richardson Date: Wed, 3 Dec 2025 15:18:18 -0500 Subject: [PATCH 14/16] remove vehicle banner component --- .../vehicle-banner/vehicle-banner.spec.js | 114 ------------------ .../vehicle-banner/vehicle-banner.vue | 84 ------------- 2 files changed, 198 deletions(-) delete mode 100644 src/iss-components/vehicle-banner/vehicle-banner.spec.js delete mode 100644 src/iss-components/vehicle-banner/vehicle-banner.vue diff --git a/src/iss-components/vehicle-banner/vehicle-banner.spec.js b/src/iss-components/vehicle-banner/vehicle-banner.spec.js deleted file mode 100644 index 1eac7cf3..00000000 --- a/src/iss-components/vehicle-banner/vehicle-banner.spec.js +++ /dev/null @@ -1,114 +0,0 @@ -import { shallowMount } from '@vue/test-utils'; -import vehicleCategories from '@/constants/vehicle-categories.js'; -import { useMainStore } from '@/store'; -import { createApp } from 'vue'; -import { createPinia, mapStores } from 'pinia'; - -import App from '@/App.vue'; -import vehicleBanner from '@/iss-components/vehicle-banner/vehicle-banner.vue'; - -const cmsData = { VehicleBannerWidget: - { - GenericVehicleImage: 'blurred-image.jpg', - GenericVehicleImageFilePath: 'images/default-source/default-album/blurred-image.jpg', - CarUnmatchedVehicleIcon: 'car-placeholder.jpg', - TruckUnmatchedVehicleIcon: 'truck-placeholder.jpg', - VanUnmatchedVehicleIcon: 'van-placeholder.jpg', - CommercialVanUnmatchedVehicleIcon: 'commercial-placeholder.jpg', - SuvUnmatchedVehicleIcon: 'suv-placeholder.jpg' - } }; - -const vueApp = createApp(App); -const pinia = createPinia(); -vueApp.use(pinia); -const store = useMainStore(); - -const mockMixin = { - - methods: { - getCmsContent(widgetName, fieldName) { - return cmsData[widgetName][fieldName]; - } - }, - computed: { - ...mapStores(useMainStore), - vehicleCategories() { - return vehicleCategories; - } - } -}; - -describe('vehicleBanner', () => { - test('renders the blurrycar image when displayGenericVehicleImage is true', async () => { - const wrapper = shallowMount(vehicleBanner, { - propsData: { - displayGenericVehicleImage: true, - cmsWidgetName: 'VehicleBannerWidget' - }, - mixins: [mockMixin] - }); - - expect(wrapper.vm.vehicleImageToDisplay).toEqual(wrapper.vm.genericVehicleImage); - expect(wrapper.find('img').attributes('class')).toContain('vehicle-image'); - wrapper.unmount(); - }); - - test('renders expected vehicle image', async () => { - store.order.vehicle.imageUrl = 'url_to_vehicle_image'; - - const wrapper = shallowMount(vehicleBanner, { - propsData: { - displayGenericVehicleImage: false, - cmsWidgetName: 'VehicleBannerWidget' - }, - mixins: [mockMixin] - }); - - expect(wrapper.vm.vehicleImageToDisplay).toEqual('url_to_vehicle_image'); - expect(wrapper.find('img').attributes('class')).toContain('vehicle-image'); - wrapper.unmount(); - }); - - test('should render default car icon when imageUrl is null and category is default', async () => { - store.order.vehicle.imageUrl = null; - - const wrapper = shallowMount(vehicleBanner, { - propsData: { - displayGenericVehicleImage: false, - cmsWidgetName: 'VehicleBannerWidget' - }, - mixins: [mockMixin] - }); - - const iconUrl = wrapper.vm.vehicleImageToDisplay; - - expect(iconUrl).toEqual('car-placeholder.jpg'); - wrapper.unmount(); - }); - - const params = [['CAR', 'car-placeholder.jpg'], - ['TRUCK', 'truck-placeholder.jpg'], - ['VAN', 'van-placeholder.jpg'], - ['COMMERCIAL VAN', 'commercial-placeholder.jpg'], - ['SUV', 'suv-placeholder.jpg'], - ['OTHER', 'car-placeholder.jpg']]; - - test.each(params)('renders correct icon when imageUrl is not populated for %s and %s', async (category, expectedIcon) => { - store.order.vehicle.imageUrl = null; - store.order.vehicle.category = category; - - const wrapper = shallowMount(vehicleBanner, { - propsData: { - displayGenericVehicleImage: false, - cmsWidgetName: 'VehicleBannerWidget' - }, - mixins: [mockMixin] - }); - - const vehicleIcon = wrapper.vm.getUnmatchedVehicleIcon(); - - expect(vehicleIcon).toEqual(expectedIcon); - expect(wrapper.find('img').attributes('class')).toContain('vehicle-image'); - wrapper.unmount(); - }); -}); diff --git a/src/iss-components/vehicle-banner/vehicle-banner.vue b/src/iss-components/vehicle-banner/vehicle-banner.vue deleted file mode 100644 index 6a17a3b7..00000000 --- a/src/iss-components/vehicle-banner/vehicle-banner.vue +++ /dev/null @@ -1,84 +0,0 @@ - - - - - From 33ed8e68fb13100940a049c82f9586dd293abb12 Mon Sep 17 00:00:00 2001 From: Bill Richardson Date: Wed, 3 Dec 2025 15:46:42 -0500 Subject: [PATCH 15/16] access denied footer/css --- src/layouts/access-denied/access-denied.vue | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/layouts/access-denied/access-denied.vue b/src/layouts/access-denied/access-denied.vue index f43d786f..d329343b 100644 --- a/src/layouts/access-denied/access-denied.vue +++ b/src/layouts/access-denied/access-denied.vue @@ -1,4 +1,5 @@