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( 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..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 @@ -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; @@ -31,8 +32,6 @@ const packageNames = { TIER_THREE: 'TierThree' }; -const store = useMainStore(); - export default { name: 'service-package-question', components: { @@ -48,10 +47,14 @@ export default { default: () => [] } }, - emits: ['vapsItemsSelected'], + setup() { + const mainStore = useMainStore(); + return { mainStore }; + }, + emits: ['vapsItemsSelected', 'packageSelected'], data() { return { - servicePackageRadio, + servicePackageRadio: shallowRef(servicePackageRadio), selectedPackageName: '', questionText: 'Select an option:' }; @@ -97,7 +100,7 @@ export default { return modifiedAnswers; }, isRecalibrationOnOrder() { - return this.lineItemsContainsPartType(partTypeStrings.RECALIBRATION); + return this.mainStore.hasRecalibrationPart; }, frontWipersApplicableForTierTwo() { const frontWipersAreAvailable = this.lineItemsContainsPartType(partTypeStrings.FRONT_WIPER); @@ -147,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, @@ -262,8 +269,19 @@ 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; + }, + preselectPackage() { + const savedPackage = this.mainStore.order.servicePackage; + + if (savedPackage && this.servicePackageAnswers.some((answer) => answer.value === savedPackage)) { + this.selectedPackageName = savedPackage; + return; + } + else { + this.selectedPackageName = ''; + } } } }; @@ -278,6 +296,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..52d48db9 100644 --- a/src/layouts/service-packages/service-packages.vue +++ b/src/layouts/service-packages/service-packages.vue @@ -10,11 +10,13 @@