diff --git a/src/layouts/address-lookup/customer-questions/customer-questions.vue b/src/layouts/address-lookup/customer-questions/customer-questions.vue
index 2bb20d286..e8a1ab4d6 100644
--- a/src/layouts/address-lookup/customer-questions/customer-questions.vue
+++ b/src/layouts/address-lookup/customer-questions/customer-questions.vue
@@ -27,7 +27,7 @@
v-model="customerModel.emailAddress"
ref="emailAddress"
customInputId="emailAddress"
- validationRules="email-address-format" />
+ validationRules="email-address-required|email-address-format" />
diff --git a/src/layouts/license-plate-lookup/license-plate-lookup.vue b/src/layouts/license-plate-lookup/license-plate-lookup.vue
index e1ff79cdc..cffe8248f 100644
--- a/src/layouts/license-plate-lookup/license-plate-lookup.vue
+++ b/src/layouts/license-plate-lookup/license-plate-lookup.vue
@@ -33,7 +33,7 @@
cmsWidgetName="EmailAddressQuestionWidget"
v-model="email"
customInputId="email"
- validationRules="email-address-format" />
+ validationRules="email-address-required|email-address-format" />
diff --git a/src/layouts/schedule/time-slot-modal-question/time-slot-modal-question.vue b/src/layouts/schedule/time-slot-modal-question/time-slot-modal-question.vue
index 159994079..c4fbd4b50 100644
--- a/src/layouts/schedule/time-slot-modal-question/time-slot-modal-question.vue
+++ b/src/layouts/schedule/time-slot-modal-question/time-slot-modal-question.vue
@@ -55,6 +55,13 @@ import {
PREMIUM_FEE_PART_TYPE,
RouteCodeFlags,
} from "@/constants/schedule-constants";
+const cmsWidgetFieldMappings = {
+ MODAL_CLOSE_BUTTON: "FooterText",
+ SUPPLEMENTAL_INFORMATION: "BodyText",
+ TIME_SLOT_BUTTON: "HeaderText",
+ DISCLAIMER: "FooterText",
+ DURATION: "SubheaderText",
+};
// Validation for the modal button
defineRule("time-slot-required", required(errorMessages.OPTION_REQUIRED));
@@ -124,30 +131,60 @@ export default {
);
}
}
- return this.getCmsContent(appointmentTypeCmsWidgetName, "BodyText");
+ return this.getCmsContent(
+ appointmentTypeCmsWidgetName,
+ cmsWidgetFieldMappings.SUPPLEMENTAL_INFORMATION
+ );
},
footerCloseButtonText() {
- return this.getCmsContent(this.cmsWidgetName, "FooterText");
+ return this.getCmsContent(
+ this.cmsWidgetName,
+ cmsWidgetFieldMappings.MODAL_CLOSE_BUTTON
+ );
},
premiumAppointmentButtonText() {
- return this.getCmsContent(this.mobilePremiumCmsWidgetName, "HeaderText");
+ return this.getCmsContent(
+ this.mobilePremiumCmsWidgetName,
+ cmsWidgetFieldMappings.TIME_SLOT_BUTTON
+ );
},
dropoffButtonText() {
- return this.getCmsContent(this.dropoffCmsWidgetName, "HeaderText");
+ return this.getCmsContent(
+ this.dropoffCmsWidgetName,
+ cmsWidgetFieldMappings.TIME_SLOT_BUTTON
+ );
+ },
+ sameDayDropoffButtonText() {
+ return this.getCmsContent(
+ this.sameDayDropOffCmsWidgetName,
+ cmsWidgetFieldMappings.TIME_SLOT_BUTTON
+ );
},
overnightDropoffButtonText() {
- return this.getCmsContent(this.overnightDropOffCmsWidgetName, "HeaderText");
+ return this.getCmsContent(
+ this.overnightDropOffCmsWidgetName,
+ cmsWidgetFieldMappings.TIME_SLOT_BUTTON
+ );
},
dropoffDisclaimerText() {
- return this.getCmsContent(this.dropoffCmsWidgetName, "FooterText");
+ return this.getCmsContent(this.dropoffCmsWidgetName, cmsWidgetFieldMappings.DISCLAIMER);
+ },
+ sameDayDropOffDisclaimerText() {
+ return this.getCmsContent(
+ this.sameDayDropOffCmsWidgetName,
+ cmsWidgetFieldMappings.DISCLAIMER
+ );
},
overnightDropOffDisclaimerText() {
- return this.getCmsContent(this.overnightDropOffCmsWidgetName, "FooterText");
+ return this.getCmsContent(
+ this.overnightDropOffCmsWidgetName,
+ cmsWidgetFieldMappings.DISCLAIMER
+ );
},
disclaimerTextBlockCopy() {
if (this.appointmentType === AppointmentTypeStrings.DROP_OFF) {
if (this.isSameDay) {
- return null;
+ return this.sameDayDropOffDisclaimerText;
} else if (this.selectedTimeSlotId?.includes(RouteCodeFlags.ALL_DAY_DROP_OFF)) {
return this.dropoffDisclaimerText;
} else if (this.selectedTimeSlotId?.includes(RouteCodeFlags.OVERNIGHT_DROP_OFF)) {
@@ -160,15 +197,24 @@ export default {
}
},
dropOffDurationText() {
- return this.getCmsContent(this.dropoffCmsWidgetName, "SubheaderText");
+ return this.getCmsContent(this.dropoffCmsWidgetName, cmsWidgetFieldMappings.DURATION);
+ },
+ sameDayDropoffDurationText() {
+ return this.getCmsContent(
+ this.sameDayDropOffCmsWidgetName,
+ cmsWidgetFieldMappings.DURATION
+ );
},
overnightDropoffDurationText() {
- return this.getCmsContent(this.overnightDropOffCmsWidgetName, "SubheaderText");
+ return this.getCmsContent(
+ this.overnightDropOffCmsWidgetName,
+ cmsWidgetFieldMappings.DURATION
+ );
},
inshopDurationText() {
const inshopDurationTextWithoutTime = this.getCmsContent(
this.cmsWidgetName,
- "SubheaderText"
+ cmsWidgetFieldMappings.DURATION
);
const inshopDurationTime = this.getDisplayTextForDurationLength(
this.estimatedServiceMinutesMinimum,
@@ -185,15 +231,16 @@ export default {
if (this.selectedTimeSlotId?.includes(RouteCodeFlags.OVERNIGHT_DROP_OFF)) {
return this.overnightDropoffDurationText;
} else if (this.selectedTimeSlotId?.includes(RouteCodeFlags.ALL_DAY_DROP_OFF)) {
- return this.dropOffDurationText;
+ if (this.isSameDay) {
+ return this.sameDayDropoffDurationText;
+ } else {
+ return this.dropOffDurationText;
+ }
} else {
return null;
}
}
},
- shouldShowDropoffDisclaimerText() {
- return this.appointmentType === AppointmentTypeStrings.DROP_OFF && !this.isSameDay;
- },
isSameDay() {
if (!this.dateAndTimeSlotData) {
return false;
@@ -202,7 +249,6 @@ export default {
const todaysDate = new Date().toISOString().split("T")[0];
return selectedDate === todaysDate;
},
-
dateSelectedReadableDate() {
if (!this.dateAndTimeSlotData) {
return null;
@@ -303,9 +349,14 @@ export default {
},
getAvailableTimeSlotsForDropOff(timeSlotsForSelectedDate) {
const availableTimeSlots = timeSlotsForSelectedDate.map((timeSlot) => {
- const buttonLabelValue = timeSlot.id.includes(RouteCodeFlags.OVERNIGHT_DROP_OFF)
- ? this.overnightDropoffButtonText
- : this.dropoffButtonText;
+ let buttonLabelValue;
+ if (timeSlot.id.includes(RouteCodeFlags.OVERNIGHT_DROP_OFF)) {
+ buttonLabelValue = this.overnightDropoffButtonText;
+ } else if (this.isSameDay) {
+ buttonLabelValue = this.sameDayDropoffButtonText;
+ } else {
+ buttonLabelValue = this.dropoffButtonText;
+ }
return {
value: timeSlot.id,
buttonLabel: buttonLabelValue,
diff --git a/src/layouts/service-location/shop-question/shop-question.vue b/src/layouts/service-location/shop-question/shop-question.vue
index 929c779af..f588f6422 100644
--- a/src/layouts/service-location/shop-question/shop-question.vue
+++ b/src/layouts/service-location/shop-question/shop-question.vue
@@ -108,7 +108,7 @@ export default {
additionalButtonData() {
const startDate = new Date();
const endDate = new Date();
- endDate.setDate(startDate.getDate() + 7);
+ endDate.setDate(startDate.getDate() + 6);
const formattedStartDate = startDate.toISOString().split("T")[0];
const formattedEndDate = endDate.toISOString().split("T")[0];
diff --git a/src/layouts/vin-lookup/vin-lookup.vue b/src/layouts/vin-lookup/vin-lookup.vue
index 36acfeeab..709029459 100644
--- a/src/layouts/vin-lookup/vin-lookup.vue
+++ b/src/layouts/vin-lookup/vin-lookup.vue
@@ -59,7 +59,7 @@
v-model="emailAddress"
customInputId="emailAddress"
isRequired
- validationRules="email-address-format" />
+ validationRules="email-address-required|email-address-format" />
@@ -79,7 +79,7 @@
:manualHeadline="AlertPerfectMatchInsuranceVerifiedHeader"
:manualCopy="AlertPerfectMatchInsuranceVerifiedBody"
v-model="customAlertData"
- v-if="vinPopulatedOnPageLoad && isInsuranceVerified"
+ v-if="vinPopulatedOnPageLoad && isInsuranceVerified && !displayInvalidZipAlert"
alertClass="alert-success" />