From 1858aa10c957e14d006944518d27015989fd8141 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Mon, 2 Mar 2026 13:55:48 -0500 Subject: [PATCH 1/8] service-packages defects --- .../service-package-question.vue | 11 +++-- .../service-packages/service-packages.vue | 41 ++++++++++++++----- 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/src/layouts/service-packages/service-package-question/service-package-question.vue b/src/layouts/service-packages/service-package-question/service-package-question.vue index 8c62c893..0dddc248 100644 --- a/src/layouts/service-packages/service-package-question/service-package-question.vue +++ b/src/layouts/service-packages/service-package-question/service-package-question.vue @@ -31,8 +31,6 @@ const packageNames = { TIER_THREE: 'TierThree' }; -const store = useMainStore(); - export default { name: 'service-package-question', components: { @@ -48,6 +46,10 @@ export default { default: () => [] } }, + setup() { + const mainStore = useMainStore(); + return { mainStore }; + }, emits: ['vapsItemsSelected'], data() { return { @@ -97,7 +99,7 @@ export default { return modifiedAnswers; }, isRecalibrationOnOrder() { - return this.lineItemsContainsPartType(partTypeStrings.RECALIBRATION); + return this.mainStore.hasRecalibrationPart; }, frontWipersApplicableForTierTwo() { const frontWipersAreAvailable = this.lineItemsContainsPartType(partTypeStrings.FRONT_WIPER); @@ -262,7 +264,7 @@ export default { }, glassToReplaceContainsGlassLocation(glassLocation) { const glassLocationMatches = - store.order.damage.glassToReplace?.filter((glassToReplace) => glassToReplace.glassLocation === glassLocation) ?? []; + this.mainStore.order.damage.glassToReplace?.filter((glassToReplace) => glassToReplace.glassLocation === glassLocation) ?? []; return !!glassLocationMatches.length; } } @@ -278,6 +280,7 @@ export default { @include media-breakpoint-up(md) { :deep(.package-main) { + justify-content: center; padding: 0 1.5rem 0 1.5rem; .package-wrapper:nth-child(2) { margin-left: 0.5rem; diff --git a/src/layouts/service-packages/service-packages.vue b/src/layouts/service-packages/service-packages.vue index 3b76c75b..cfd4fad0 100644 --- a/src/layouts/service-packages/service-packages.vue +++ b/src/layouts/service-packages/service-packages.vue @@ -10,11 +10,15 @@
- +
+
+
-
@@ -89,7 +89,6 @@ export default { components: { siteHeader, siteFooter, - siteSubHeader, Form, servicePackageQuestion, loadingModal, @@ -182,6 +181,20 @@ export default { computed: { PriceDisclaimerText() { return this.getCmsContent('PriceDisclaimerWidget', 'Text'); + }, + vehicleMake() { + return store.order.vehicle.make.toUpperCase(); + }, + vehicleModel() { + return store.order.vehicle.model.toUpperCase(); + }, + servicePackagesSubHeader() { + return this.getCmsContent('SiteSubHeaderWidget', 'SubHeaderText') + .replace('{custom:vehicleMake}', this.vehicleMake) + .replace('{custom:vehicleModel}', this.vehicleModel); + }, + secondaryText() { + return this.getCmsContent('SiteSubHeaderWidget', 'SecondaryText'); } }, methods: { @@ -244,7 +257,7 @@ export default { padding-left: .9375rem; padding-right: .9375rem; display: block; - margin: 0 auto; + margin: 1.5rem auto; :deep(.subheader-primary) { display: block; } @@ -274,4 +287,10 @@ export default { .back-link { margin-left: 1rem; } + +.sub-header { + text-align: center; + color: $black; + line-height: 2rem; +} From 152f5f81ddf6b55b08b5ba9688182fa8ade3e299 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Tue, 3 Mar 2026 12:24:06 -0500 Subject: [PATCH 2/8] save package to store / pre-select --- .../service-package-question.vue | 19 +++++++++++++++---- .../service-packages/service-packages.vue | 6 ++++++ src/store/index.js | 5 +++++ 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/layouts/service-packages/service-package-question/service-package-question.vue b/src/layouts/service-packages/service-package-question/service-package-question.vue index 0dddc248..c8dd5f66 100644 --- a/src/layouts/service-packages/service-package-question/service-package-question.vue +++ b/src/layouts/service-packages/service-package-question/service-package-question.vue @@ -22,6 +22,7 @@ import servicePackageRadio from '@/layouts/service-packages/service-package-ques import partTypeStrings from '@/constants/part-type-strings'; import { useMainStore } from '@/store'; import { getPriceOfLineItem } from '@/helpers/price-calculator'; +import { shallowRef } from 'vue'; const glassLocations = damageLocationsSelected; @@ -44,16 +45,16 @@ export default { availableLineItems: { type: Array, default: () => [] - } + }, }, setup() { const mainStore = useMainStore(); return { mainStore }; }, - emits: ['vapsItemsSelected'], + emits: ['vapsItemsSelected', 'packageSelected', 'update:modelValue'], data() { return { - servicePackageRadio, + servicePackageRadio: shallowRef(servicePackageRadio), selectedPackageName: '', questionText: 'Select an option:' }; @@ -149,7 +150,11 @@ export default { selectedPackageName(newValue) { const VapsProductsInSelectedPackage = this.getVapsLineItemsForSelectedPackage(newValue); this.$emit('vapsItemsSelected', VapsProductsInSelectedPackage); - } + this.$emit('packageSelected', newValue); + }, + availableLineItems() { + this.preselectPackage(); + }, }, methods: { processIfStatements, @@ -266,6 +271,12 @@ export default { const glassLocationMatches = this.mainStore.order.damage.glassToReplace?.filter((glassToReplace) => glassToReplace.glassLocation === glassLocation) ?? []; return !!glassLocationMatches.length; + }, + preselectPackage() { + if (this.mainStore.order.servicePackage) { + this.selectedPackageName = this.mainStore.order.servicePackage; + return; + } } } }; diff --git a/src/layouts/service-packages/service-packages.vue b/src/layouts/service-packages/service-packages.vue index cfd4fad0..55873656 100644 --- a/src/layouts/service-packages/service-packages.vue +++ b/src/layouts/service-packages/service-packages.vue @@ -27,6 +27,7 @@ :validationRules="rules.optionRequired" isRequired @vapsItemsSelected="vapsItemsSelectedAction" + @packageSelected="packageSelectedAction" @link-event="openModalAction" />
({ vaps: null, serverData: null }, + servicePackage: null, insuranceCoverage: { coverageStatus: coverageStatuses.PENDING, coverageType: coverageType.NONE, @@ -1948,6 +1949,10 @@ export const useMainStore = defineStore({ this.order.lineItems.vaps = partsData; }, + updateServicePackage(packageName) { + this.order.servicePackage = packageName; + }, + updateMobileFee(fee) { const isMobileFeeHidden = getExperimentSettingValue(this.experimentSettings, experimentSettings.ISS_FEATURE_TOGGLE_IS_MOBILE_FEE_HIDDEN) === 'true'; // Mobile Fee is only added for NO COMP or ITAC and is NOT hidden From 105fc97d5d45b25d1a08a320064ca1c35e44b501 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Tue, 3 Mar 2026 14:13:05 -0500 Subject: [PATCH 3/8] unneeded stuff --- .../service-package-question/service-package-question.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/layouts/service-packages/service-package-question/service-package-question.vue b/src/layouts/service-packages/service-package-question/service-package-question.vue index c8dd5f66..1c040c69 100644 --- a/src/layouts/service-packages/service-package-question/service-package-question.vue +++ b/src/layouts/service-packages/service-package-question/service-package-question.vue @@ -45,13 +45,13 @@ export default { availableLineItems: { type: Array, default: () => [] - }, + } }, setup() { const mainStore = useMainStore(); return { mainStore }; }, - emits: ['vapsItemsSelected', 'packageSelected', 'update:modelValue'], + emits: ['vapsItemsSelected', 'packageSelected'], data() { return { servicePackageRadio: shallowRef(servicePackageRadio), From b4144dbf63cf90a9cafa04fa6c31c5156176e1f4 Mon Sep 17 00:00:00 2001 From: katiekroell <100247286+katiekroell@users.noreply.github.com> Date: Tue, 3 Mar 2026 14:32:01 -0500 Subject: [PATCH 4/8] Update src/layouts/service-packages/service-packages.vue Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/layouts/service-packages/service-packages.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/layouts/service-packages/service-packages.vue b/src/layouts/service-packages/service-packages.vue index 55873656..a1d35bcd 100644 --- a/src/layouts/service-packages/service-packages.vue +++ b/src/layouts/service-packages/service-packages.vue @@ -185,10 +185,10 @@ export default { return this.getCmsContent('PriceDisclaimerWidget', 'Text'); }, vehicleMake() { - return store.order.vehicle.make.toUpperCase(); + return (store.order.vehicle.make ?? '').toUpperCase(); }, vehicleModel() { - return store.order.vehicle.model.toUpperCase(); + return (store.order.vehicle.model ?? '').toUpperCase(); }, servicePackagesSubHeader() { return this.getCmsContent('SiteSubHeaderWidget', 'SubHeaderText') From 262df86e82a6ac559ad8578f1e4378c2d9176df6 Mon Sep 17 00:00:00 2001 From: katiekroell <100247286+katiekroell@users.noreply.github.com> Date: Tue, 3 Mar 2026 14:32:18 -0500 Subject: [PATCH 5/8] Update src/layouts/service-packages/service-packages.vue Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/layouts/service-packages/service-packages.vue | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/layouts/service-packages/service-packages.vue b/src/layouts/service-packages/service-packages.vue index a1d35bcd..52d48db9 100644 --- a/src/layouts/service-packages/service-packages.vue +++ b/src/layouts/service-packages/service-packages.vue @@ -11,11 +11,9 @@
From 246aea7edc2c84e9885f7bff81dfac0c71d5b200 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Tue, 3 Mar 2026 14:36:43 -0500 Subject: [PATCH 6/8] reset service package --- src/store/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/store/index.js b/src/store/index.js index 6272f957..a87b2662 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -2029,6 +2029,7 @@ export const useMainStore = defineStore({ this.updateSupportingItems(null); this.updateVaps(null); + this.updateServicePackage(null); }, updateVehicleCoverage(coverage) { @@ -2073,6 +2074,7 @@ export const useMainStore = defineStore({ this.order.loadedFromDupeCheck = null; this.order.loadedSessionClearedPreviousData = null; this.order.availableVaps = null; + this.order.servicePackage = null; this.order.carrierPhoneNumber = null; this.order.customerPortalLoginToken = null; this.order.loadedFromCookie = false; @@ -2358,6 +2360,7 @@ export const useMainStore = defineStore({ this.updateCapabilityQuestionAnswers(null); this.updateSupportingItems(null); this.updateVaps(null); + this.updateServicePackage(null); this.updatePageData({ page: issPageValues.VEHICLE_PARTS, data: null }); this.updatePageData({ page: issPageValues.MOLDING_QUESTIONS, data: null }); @@ -2826,17 +2829,20 @@ export const useMainStore = defineStore({ this.resetRegistrationState(); this.resetGlassPartsState(); this.updateVaps(null); + this.updateServicePackage(null); }, resetDamageAndDependencies() { this.resetDamageState(); this.resetGlassPartsState(); this.updateVaps(null); + this.updateServicePackage(null); }, resetPartsAndDependencies() { this.resetGlassPartsState(); this.updateVaps(null); + this.updateServicePackage(null); this.resetServiceLocationAndDependencies(); }, From 503c946207a7ba3ed21fc7dc8c9129ff5273554e Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Tue, 3 Mar 2026 14:44:31 -0500 Subject: [PATCH 7/8] check if package is available before pre-selecting --- .../service-package-question.vue | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/layouts/service-packages/service-package-question/service-package-question.vue b/src/layouts/service-packages/service-package-question/service-package-question.vue index 1c040c69..73e29932 100644 --- a/src/layouts/service-packages/service-package-question/service-package-question.vue +++ b/src/layouts/service-packages/service-package-question/service-package-question.vue @@ -273,10 +273,15 @@ export default { return !!glassLocationMatches.length; }, preselectPackage() { - if (this.mainStore.order.servicePackage) { - this.selectedPackageName = this.mainStore.order.servicePackage; + const savedPackage = this.mainStore.order.servicePackage; + + if (savedPackage && this.servicePackageAnswers.some((answer) => answer.value === savedPackage)) { + this.selectedPackageName = savedPackage; return; } + else { + this.selectedPackageName = ''; + } } } }; From 1880479154f25a43407581e8338943643849624c Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Wed, 4 Mar 2026 10:04:44 -0500 Subject: [PATCH 8/8] reset service package if vaps are removed from cart --- src/iss-components/cart-dropdown/cart-dropdown.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/src/iss-components/cart-dropdown/cart-dropdown.vue b/src/iss-components/cart-dropdown/cart-dropdown.vue index 83aca443..0d661c09 100644 --- a/src/iss-components/cart-dropdown/cart-dropdown.vue +++ b/src/iss-components/cart-dropdown/cart-dropdown.vue @@ -366,6 +366,7 @@ export default { removeVap(partType) { const newVaps = useMainStore().lineItems.vaps?.filter((vap) => vap?.partType !== partType) ?? []; useMainStore().updateVaps(newVaps); + useMainStore().updateServicePackage(null); }, getCmsContentForVapsType(vapsPartType) { const vapsItemDescriptions = this.getCmsContent(