Merge branch 'release/2026.01.08' into nation/CASH-2037
This commit is contained in:
commit
3ef82bc5f6
2 changed files with 40 additions and 30 deletions
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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() {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue