diff --git a/src/digital-components/date-picker/date-picker.vue b/src/digital-components/date-picker/date-picker.vue index 08a803b89..1dd262796 100644 --- a/src/digital-components/date-picker/date-picker.vue +++ b/src/digital-components/date-picker/date-picker.vue @@ -142,12 +142,13 @@ overnightDropOffCmsWidgetName="OvernightDropOffTimeSlotModal" dropOffOrPickATimeQuestionCmsWidgetName="DropOffOrPickATimeQuestionWidget" :selectedDate="selectedDate" - :appointmentType="appointmentType" + :appointmentType="appointmentTypeForTimeSlotQuestion" :premiumAppointmentFee="premiumAppointmentFee" :displayWaitList="displayWaitList" :timeSlotsForSelectedDate="timeSlotsForSelectedDate" :estimatedServiceMinutesMinimum="estimatedServiceMinutesMinimum" :estimatedServiceMinutesMaximum="estimatedServiceMinutesMaximum" + @appointmentTypeUpdated="updateAppointmentType" @waitListRequested="handleWaitListRequested" @time-slot-modal-closed="timeSlotModalClosed" /> @@ -224,7 +225,7 @@ export default { pricingByDayUpcharge: Number, isPricingByDayExperiment: Boolean, timeSlotsForSelectedDate: Object, - appointmentType: String, + appointmentTypeForTimeSlotQuestion: String, premiumAppointmentFee: Object, estimatedServiceMinutesMinimum: Number, estimatedServiceMinutesMaximum: Number, @@ -876,6 +877,9 @@ export default { handleWaitListRequested(value) { this.$emit("waitListRequested", value); }, + updateAppointmentType(type) { + this.$emit("appointmentTypeUpdated", type); + } }, watch: { modelValue(newValue) { diff --git a/src/layouts/schedule/schedule.vue b/src/layouts/schedule/schedule.vue index edd305f92..c31adb995 100644 --- a/src/layouts/schedule/schedule.vue +++ b/src/layouts/schedule/schedule.vue @@ -66,7 +66,7 @@
0) { preSelectedDate = preSelectedSlot.date; - if (selectedAppointmentType === AppointmentTypeStrings.MOBILE) { + if (appointmentType === AppointmentTypeStrings.MOBILE) { preSelectedDate += "-mobile"; } @@ -607,7 +609,7 @@ export default { vm.pricingByDayUpcharge = pricingByDayUpcharge; vm.showPricingByDay = showPricingByDay; - vm.selectedAppointmentType = selectedAppointmentType; + vm.appointmentType = appointmentType; vm.setData( resultMap.zipCodeData, resultMap.serviceabilityDetails, @@ -661,7 +663,7 @@ export default { set: function (newValue) { if (newValue.zipCode !== this.zipCode) { this.resetMobileLocation(); - this.selectedAppointmentType = null; + this.appointmentType = null; this.selectedProvider = new Provider(); } @@ -673,7 +675,7 @@ export default { }, }, isMobileSelected() { - return this.selectedAppointmentType == AppointmentTypeStrings.MOBILE; + return this.appointmentType == AppointmentTypeStrings.MOBILE; }, isServiceableMobile() { if (this.isRecalibrationServiceableMobile !== null) { @@ -752,8 +754,8 @@ export default { }, isShopQuestionDisplayed() { return ( - this.selectedAppointmentType === "Inshop" || - this.selectedAppointmentType === "Dropoff" + this.appointmentType === "Inshop" || + this.appointmentType === "Dropoff" ); }, isAppointmentTypeDisplayed() { @@ -816,7 +818,7 @@ export default { availabilityRatingCallback: getAvailabilityRating, startDate: formattedStartDate, endDate: formattedEndDate, - shopAppointmentType: this.selectedAppointmentType, + shopAppointmentType: this.appointmentType, }; }, selectedShopAnswer() { @@ -1035,7 +1037,7 @@ export default { getIsVehicleProtectedFromStore() { return store.getters.order.serviceLocation.isVehicleProtected; }, - getSelectedAppointmentType() { + getAppointmentType() { return store.getters.order.serviceLocation.appointmentType; }, getSelectedProvider() { @@ -1068,7 +1070,7 @@ export default { updateAndSaveIsMSRFeeApplicable() { const isMSRFeeApplicable = this.isMobileStaticRecalibrationApplicable && - this.selectedAppointmentType == "Mobile"; + this.appointmentType == "Mobile"; this.dispatchStoreAction( this.storeActions.SAVE_IS_MSR_FEE_APPLICABLE, isMSRFeeApplicable @@ -1104,7 +1106,7 @@ export default { } // if we have a mobile fee, then save/update supporting items - if (this.selectedAppointmentType == "Mobile") { + if (this.appointmentType == "Mobile") { const mobileFeeIndex = supportingItems.findIndex( (item) => item.partType == MOBILE_FEE_PART_TYPE ); @@ -1241,7 +1243,7 @@ export default { getSelectedDate() { let isMobileSelected = this.isMobileSelected; if (isMobileSelected === undefined) { - isMobileSelected = this.selectedAppointmentType === AppointmentTypeStrings.MOBILE; + isMobileSelected = this.appointmentType === AppointmentTypeStrings.MOBILE; } let storedDate = store.getters.order.schedule.date; if (isMobileSelected) storedDate += "-mobile"; @@ -1277,7 +1279,7 @@ export default { timeSlotInfo.timeSlot.date )}`; - if (this.selectedAppointmentType === AppointmentTypeStrings.IN_SHOP_OR_DROP_OFF) { + if (this.appointmentType === AppointmentTypeStrings.IN_SHOP || this.appointmentType === AppointmentTypeStrings.DROP_OFF) { if ( !timeSlotInfo.timeSlot.routeCode.includes(RouteCodeFlags.ALL_DAY_DROP_OFF) ) { @@ -1286,7 +1288,7 @@ export default { )}`; } } else if ( - this.selectedAppointmentType === AppointmentTypeStrings.MOBILE && + this.appointmentType === AppointmentTypeStrings.MOBILE && !timeSlotInfo.isPremiumAppointment ) { navbarButtonText += ` at ${this.getDisplayTextForMilitaryTime( @@ -1341,7 +1343,7 @@ export default { this.navigatingForward = true; var ctu = this.zipCodeCtu; if ( - this.selectedAppointmentType == AppointmentTypeStrings.MOBILE && + this.appointmentType == AppointmentTypeStrings.MOBILE && this.selectedProvider && this.selectedProvider.address ) { @@ -1366,7 +1368,7 @@ export default { state: this.state, zipCode: this.zipCode, zipCodeCtu: ctu, - appointmentType: this.selectedAppointmentType, + appointmentType: this.appointmentType, isVehicleProtected: this.isVehicleProtected, provider: { providerNumber: this.selectedProvider?.providerNumber, @@ -1451,7 +1453,7 @@ export default { ); } - if (this.selectedAppointmentType == AppointmentTypeStrings.MOBILE) { + if (this.appointmentType == AppointmentTypeStrings.MOBILE) { //navigate to mobile details page this.$router.navigateWithSaving( this.navigationScenarios.CLICKED_FORWARD_WITH_MOBILE_SERVICE, @@ -1526,7 +1528,7 @@ export default { // if we have a premium fee(early bird), then save/update supporting items if ( - this.selectedAppointmentType === AppointmentTypeStrings.MOBILE && + this.appointmentType === AppointmentTypeStrings.MOBILE && this.selectedTimeSlotInfo?.isPremiumAppointment ) { const premiumFeeIndex = supportingItems.findIndex( @@ -1578,6 +1580,9 @@ export default { updateTimeSlot(timeSlot) { this.selectedTimeSlotInfo = timeSlot; }, + updateAppointmentType(type) { + this.appointmentType = type; + } }, watch: { zipCode: { @@ -1585,7 +1590,7 @@ export default { if (!this.navigatingForward) { getShopProviderData(this.zipCode).then(async (result) => { this.shopProviderData = result.data; - if (this.selectedAppointmentType === "Mobile") { + if (this.appointmentType === "Mobile") { this.selectedProvider = new Provider( this.shopProviderData.mobileProviderNumber ); @@ -1596,9 +1601,9 @@ export default { } }, }, - selectedAppointmentType: { + appointmentType: { handler(newValue, oldValue) { - if (newValue === "Mobile") { + if (newValue === AppointmentTypeStrings.MOBILE) { this.selectedProvider = new Provider( this.shopProviderData.mobileProviderNumber ); @@ -1609,6 +1614,16 @@ export default { }, }, + appointmentTypeFromAppointmentTypeQuestion: { + handler(newValue, oldValue) { + if (newValue === AppointmentTypeStrings.MOBILE) { + this.appointmentType = AppointmentTypeStrings.MOBILE; + } else { + this.appointmentType = AppointmentTypeStrings.IN_SHOP_OR_DROP_OFF; + } + }, + }, + selectedDate(newValue, oldValue) { // Clear time slot selection if date selected changes if (newValue !== oldValue) { diff --git a/src/layouts/schedule/time-slot-question/time-slot-question.vue b/src/layouts/schedule/time-slot-question/time-slot-question.vue index 80d22cae5..d21db67a2 100644 --- a/src/layouts/schedule/time-slot-question/time-slot-question.vue +++ b/src/layouts/schedule/time-slot-question/time-slot-question.vue @@ -1,6 +1,5 @@