Merge branch 'release/2026.01.08' into nation/CASH-2037

This commit is contained in:
CarlNation 2025-12-17 05:53:12 -05:00 committed by GitHub
commit 3ef82bc5f6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 40 additions and 30 deletions

View file

@ -24,6 +24,7 @@
<appointmentTypeQuestion <appointmentTypeQuestion
v-model="appointmentTypeFromAppointmentTypeQuestion" v-model="appointmentTypeFromAppointmentTypeQuestion"
v-show="isAppointmentTypeDisplayed" v-show="isAppointmentTypeDisplayed"
@handle-appointment-type-change="handleAppointmentTypeChange"
:isServiceableMobile="isServiceableMobile" :isServiceableMobile="isServiceableMobile"
:isServiceableInshop="isServiceableInshop" :isServiceableInshop="isServiceableInshop"
:isDisplayed="isAppointmentTypeDisplayed" :isDisplayed="isAppointmentTypeDisplayed"
@ -438,8 +439,8 @@ export default {
pricingByDayBasePrice: null, pricingByDayBasePrice: null,
pricingByDayUpcharge: null, pricingByDayUpcharge: null,
showPricingByDay: null, showPricingByDay: null,
selectableDatesInshop: [], selectableDatesInshop: null,
selectableDatesMobile: [], selectableDatesMobile: null,
preSelectedDate: null, preSelectedDate: null,
streetAddress: this.getServiceAddressFromStore(), streetAddress: this.getServiceAddressFromStore(),
apartmentNumberOrBusinessName: this.getServiceAddress2FromStore(), apartmentNumberOrBusinessName: this.getServiceAddress2FromStore(),
@ -602,6 +603,7 @@ export default {
); );
vm.initializeDatePicker().then(() => { vm.initializeDatePicker().then(() => {
vm.showMobileFirstModal(); vm.showMobileFirstModal();
vm.setSelectedDateToFirstAvailable();
}); });
}); });
}, },
@ -827,13 +829,13 @@ export default {
}, },
estimatedServiceMinutesMinimum() { estimatedServiceMinutesMinimum() {
return this.isMobileSelected return this.isMobileSelected
? this.selectableDatesMobile.estimatedServiceMinutesMinimum ? this.selectableDatesMobile?.estimatedServiceMinutesMinimum
: this.selectableDatesInshop.estimatedServiceMinutesMinimum; : this.selectableDatesInshop?.estimatedServiceMinutesMinimum;
}, },
estimatedServiceMinutesMaximum() { estimatedServiceMinutesMaximum() {
return this.isMobileSelected return this.isMobileSelected
? this.selectableDatesMobile.estimatedServiceMinutesMaximum ? this.selectableDatesMobile?.estimatedServiceMinutesMaximum
: this.selectableDatesInshop.estimatedServiceMinutesMaximum; : this.selectableDatesInshop?.estimatedServiceMinutesMaximum;
}, },
timeSlotsForSelectedDate() { timeSlotsForSelectedDate() {
if (!this.selectedDate) return null; if (!this.selectedDate) return null;
@ -841,11 +843,11 @@ export default {
if (this.isMobileSelected) { if (this.isMobileSelected) {
const selectedDateString = selectedDate.replace("-mobile", ""); const selectedDateString = selectedDate.replace("-mobile", "");
return this.selectableDatesMobile.days?.find( return this.selectableDatesMobile?.days?.find(
(selectableDate) => selectableDate.date === selectedDateString (selectableDate) => selectableDate.date === selectedDateString
); );
} else { } else {
return this.selectableDatesInshop.days?.find( return this.selectableDatesInshop?.days?.find(
(selectableDate) => selectableDate.date === this.selectedDate (selectableDate) => selectableDate.date === this.selectedDate
); );
} }
@ -863,7 +865,7 @@ export default {
); );
}, },
isMobileFirstModalOpen() { isMobileFirstModalOpen() {
return this.selectableDatesMobile.days return this.selectableDatesMobile?.days
? this.$refs.mobileFirstModal?.getIsModalOpen() ? this.$refs.mobileFirstModal?.getIsModalOpen()
: false; : false;
}, },
@ -1015,7 +1017,9 @@ export default {
return store.getters.order.serviceLocation.isVehicleProtected; return store.getters.order.serviceLocation.isVehicleProtected;
}, },
getAppointmentTypeFromStore() { getAppointmentTypeFromStore() {
return store.getters.order.serviceLocation.appointmentType; const appointmentTypeFromStore = store.getters.order.serviceLocation.appointmentType;
this.handleAppointmentTypeChange(appointmentTypeFromStore);
return appointmentTypeFromStore;
}, },
getSelectedProviderFromStore() { getSelectedProviderFromStore() {
return store.getters.order.serviceLocation.provider; return store.getters.order.serviceLocation.provider;
@ -1036,6 +1040,7 @@ export default {
this.appointmentType = null; this.appointmentType = null;
this.selectedProvider = null; this.selectedProvider = null;
this.appointmentTypeFromAppointmentTypeQuestion = null; this.appointmentTypeFromAppointmentTypeQuestion = null;
this.handleAppointmentTypeChange();
this.preSelectedDate = null; this.preSelectedDate = null;
}, },
setServiceabilityDetails(serviceabilityDetails) { setServiceabilityDetails(serviceabilityDetails) {
@ -1288,7 +1293,7 @@ export default {
} }
} }
*/ */
this.$refs.navbar.updateButtonText(navbarButtonText); this.$refs.navbar?.updateButtonText(navbarButtonText);
}, },
convertSelectedDateToShortMonthAndDay(selectedDate) { convertSelectedDateToShortMonthAndDay(selectedDate) {
// This conversion ensures we don't get get GMT induced date changes // This conversion ensures we don't get get GMT induced date changes
@ -1463,9 +1468,12 @@ export default {
this.showLoadingModal(); this.showLoadingModal();
}, },
setDisplayWaitList() { setDisplayWaitList() {
const dateString = this.isMobileSelected let dateString;
? this.selectableDatesMobile?.days[0]?.date if (this.isMobileSelected && this.selectableDatesMobile?.days?.length) {
: this.selectableDatesInshop?.days[0]?.date; dateString = this.selectableDatesMobile.days[0].date;
} else if (this.selectableDatesInshop?.days?.length) {
dateString = this.selectableDatesInshop.days[0].date;
}
if ( if (
experimentMixin.methods.hasSettingEqualTo( experimentMixin.methods.hasSettingEqualTo(
experimentSettings.DISPLAY_WAITLIST, experimentSettings.DISPLAY_WAITLIST,
@ -1634,9 +1642,9 @@ export default {
}, },
getFirstAvailableDate() { getFirstAvailableDate() {
let dateToSelect; let dateToSelect;
if (this.isMobileSelected) { if (this.isMobileSelected && this.selectableDatesMobile?.days?.length) {
dateToSelect = returnFirstDate(this.selectableDatesMobile); dateToSelect = returnFirstDate(this.selectableDatesMobile);
} else { } else if (this.selectableDatesInshop?.days?.length) {
dateToSelect = returnFirstDate(this.selectableDatesInshop); dateToSelect = returnFirstDate(this.selectableDatesInshop);
} }
if (!dateToSelect) return null; if (!dateToSelect) return null;
@ -1790,18 +1798,26 @@ export default {
} }
if (this.isShowMobileFirstAppt) { if (this.isShowMobileFirstAppt) {
if (firstMobilePMDate && numberOfDaysToFirstMobilePMDate <= pmMobileDays) { if (pmMobileDays == 0) {
// Selects the first available time slot
preSelectedMobileAppointment =
numberOfDaysToFirstMobileAMDate < numberOfDaysToFirstMobilePMDate
? firstMobileAMAppt
: firstMobilePMAppt;
} else if (
firstMobilePMDate &&
numberOfDaysToFirstMobilePMDate <= pmMobileDays
) {
// Selects the first available PM time slot
preSelectedMobileAppointment = firstMobilePMAppt; preSelectedMobileAppointment = firstMobilePMAppt;
} else if ( } else if (
(firstMobilePMDate && firstMobilePMDate &&
numberOfDaysToFirstMobilePMDate >= noPMMobileDays) || numberOfDaysToFirstMobilePMDate >= noPMMobileDays
pmMobileDays == 0
) { ) {
// Selects the first available AM time slot. If none, selects the first available PM time slot
preSelectedMobileAppointment = firstMobileAMAppt preSelectedMobileAppointment = firstMobileAMAppt
? firstMobileAMAppt ? firstMobileAMAppt
: null; : firstMobilePMAppt;
!preSelectedMobileAppointment &&
(preSelectedMobileAppointment = firstMobilePMAppt);
} }
if (preSelectedMobileAppointment) { if (preSelectedMobileAppointment) {
@ -1849,13 +1865,6 @@ export default {
this.forwardButtonAction(); this.forwardButtonAction();
}, },
}, },
watch: {
appointmentTypeFromAppointmentTypeQuestion: {
handler(newValue, oldValue) {
this.handleAppointmentTypeChange(newValue);
},
},
},
components: { components: {
funnelHeader, funnelHeader,
navbar, navbar,

View file

@ -80,6 +80,7 @@ export default {
}, },
set: function (newValue) { set: function (newValue) {
this.$emit("update:modelValue", newValue); this.$emit("update:modelValue", newValue);
this.$emit("handle-appointment-type-change", newValue);
}, },
}, },
isMobileOnly() { isMobileOnly() {