CASH-376 fix for error message appearing when address modal is open

This commit is contained in:
Matt Caimi 2025-05-07 10:15:45 -04:00
parent d304710d8c
commit dd1852d4c3
4 changed files with 20 additions and 9 deletions

View file

@ -119,12 +119,14 @@ export default {
}, },
onModalOpened() { onModalOpened() {
this.onModalOpenedCallback?.(); this.onModalOpenedCallback?.();
this.$emit("isModalOpened", true);
}, },
onModalClosed() { onModalClosed() {
this.resetButtonStyle(); this.resetButtonStyle();
this.onModalClosedCallback?.(); this.onModalClosedCallback?.();
if (this.suppressPageScroll) if (this.suppressPageScroll)
document.querySelector("body").classList.remove("prevent-modal-scroll"); document.querySelector("body").classList.remove("prevent-modal-scroll");
this.$emit("isModalOpened", false);
}, },
openModal() { openModal() {
if (this.suppressPageScroll) if (this.suppressPageScroll)

View file

@ -97,6 +97,7 @@ export default {
"updated-contains-military-base", "updated-contains-military-base",
"updated-bill-to-account-number", "updated-bill-to-account-number",
"setMobileLocationAndProceed", "setMobileLocationAndProceed",
"updated-modal-opened",
], ],
data() { data() {
return { return {
@ -228,6 +229,7 @@ export default {
}, },
setModalStatus(isOpened) { setModalStatus(isOpened) {
this.isModalOpened = isOpened; this.isModalOpened = isOpened;
this.$emit("updated-modal-opened", isOpened);
}, },
closeModal() { closeModal() {
this.modal.closeModal(); this.modal.closeModal();

View file

@ -343,7 +343,7 @@ describe("service-location.vue", () => {
zipCode: "43054", zipCode: "43054",
}, },
isVehicleProtected: true, isVehicleProtected: true,
isMobileSelected: true, isMobileSelectedAndModalClosed: true,
}; };
wrapper.vm.mobileLocationQuestions = mobileLocationQuestions; wrapper.vm.mobileLocationQuestions = mobileLocationQuestions;
@ -356,7 +356,7 @@ describe("service-location.vue", () => {
zipCode: "61606", zipCode: "61606",
}, },
isVehicleProtected: null, isVehicleProtected: null,
isMobileSelected: false, isMobileSelectedAndModalClosed: false,
}; };
// Act // Act
@ -459,7 +459,7 @@ describe("service-location.vue", () => {
zipCode: "", zipCode: "",
}, },
isVehicleProtected: null, isVehicleProtected: null,
isMobileSelected: false, isMobileSelectedAndModalClosed: false,
}; };
wrapper.vm.mobileLocationQuestions = mobileLocationQuestions; wrapper.vm.mobileLocationQuestions = mobileLocationQuestions;
const newMobileLocationQuestions = { const newMobileLocationQuestions = {
@ -471,7 +471,7 @@ describe("service-location.vue", () => {
zipCode: "43054", zipCode: "43054",
}, },
isVehicleProtected: true, isVehicleProtected: true,
isMobileSelected: true, isMobileSelectedAndModalClosed: true,
}; };
wrapper.vm.closeModalAction = jest.fn(); wrapper.vm.closeModalAction = jest.fn();
@ -521,7 +521,7 @@ describe("service-location.vue", () => {
zipCode: "", zipCode: "",
}, },
isVehicleProtected: null, isVehicleProtected: null,
isMobileSelected: false, isMobileSelectedAndModalClosed: false,
mobileFeePart: null, mobileFeePart: null,
}; };
wrapper.vm.mobileLocationQuestions = mobileLocationQuestions; wrapper.vm.mobileLocationQuestions = mobileLocationQuestions;
@ -535,7 +535,7 @@ describe("service-location.vue", () => {
zipCode: "43081", zipCode: "43081",
}, },
isVehicleProtected: true, isVehicleProtected: true,
isMobileSelected: true, isMobileSelectedAndModalClosed: true,
mobileFeePart: null, mobileFeePart: null,
}; };
@ -599,7 +599,7 @@ describe("service-location.vue", () => {
zipCode: "43081", zipCode: "43081",
}, },
isVehicleProtected: "YesAnswer", isVehicleProtected: "YesAnswer",
isMobileSelected: true, isMobileSelectedAndModalClosed: true,
}; };
wrapper.vm.closeModalAction = jest.fn(); wrapper.vm.closeModalAction = jest.fn();

View file

@ -98,6 +98,7 @@
@updated-serviceability="setServiceabilityDetails" @updated-serviceability="setServiceabilityDetails"
@updated-contains-military-base="setContainsMilitaryBase" @updated-contains-military-base="setContainsMilitaryBase"
@updated-mobile-ctu="setCtuForMobile" @updated-mobile-ctu="setCtuForMobile"
@updated-modal-opened="setMobileLocationModalOpened"
validationRules="mobile-location-required" validationRules="mobile-location-required"
ref="mobileLocationQuestions" ref="mobileLocationQuestions"
linkWidgetName="MobileLocationLinkWidget" linkWidgetName="MobileLocationLinkWidget"
@ -172,7 +173,7 @@ const MOBILE_FEE_PART_TYPE = "MOBILE FEE";
// DEFINE VALIDATION RULES // DEFINE VALIDATION RULES
defineRule("mobile-location-required", (value) => { defineRule("mobile-location-required", (value) => {
if ( if (
value.isMobileSelected && value.isMobileSelectedAndModalClosed &&
(!value.addressQuestions.streetAddress || (!value.addressQuestions.streetAddress ||
!value.addressQuestions.city || !value.addressQuestions.city ||
!value.addressQuestions.state || !value.addressQuestions.state ||
@ -211,6 +212,7 @@ export default {
billToAccountNumber: null, billToAccountNumber: null,
shopProviderData: null, shopProviderData: null,
navigatingForward: false, navigatingForward: false,
mobileLocationModalOpened: false,
}; };
}, },
async beforeRouteEnter(to, from, next) { async beforeRouteEnter(to, from, next) {
@ -301,7 +303,9 @@ export default {
zipCode: this.zipCode, zipCode: this.zipCode,
}, },
isVehicleProtected: this.isVehicleProtected, isVehicleProtected: this.isVehicleProtected,
isMobileSelected: this.selectedAppointmentType === "Mobile", isMobileSelectedAndModalClosed:
this.selectedAppointmentType === "Mobile" &&
!this.mobileLocationModalOpened,
}; };
}, },
}, },
@ -502,6 +506,9 @@ export default {
setRecycleFeePart(recycleFeePart) { setRecycleFeePart(recycleFeePart) {
this.recycleFeePart = recycleFeePart; this.recycleFeePart = recycleFeePart;
}, },
setMobileLocationModalOpened(isModalOpened) {
this.mobileLocationModalOpened = isModalOpened;
},
//creating async function as the computed property can not directly handle asynchronous operations or promises. //creating async function as the computed property can not directly handle asynchronous operations or promises.
async setMobileLocationQuestions(newValue) { async setMobileLocationQuestions(newValue) {
var newZipCode = newValue.addressQuestions.zipCode; var newZipCode = newValue.addressQuestions.zipCode;