diff --git a/src/layouts/address-lookup/address-lookup.vue b/src/layouts/address-lookup/address-lookup.vue index 4e6dc08df..faae41388 100644 --- a/src/layouts/address-lookup/address-lookup.vue +++ b/src/layouts/address-lookup/address-lookup.vue @@ -1,27 +1,34 @@ diff --git a/src/layouts/estimate/estimate.vue b/src/layouts/estimate/estimate.vue index 1b16345ce..d6308f444 100644 --- a/src/layouts/estimate/estimate.vue +++ b/src/layouts/estimate/estimate.vue @@ -8,81 +8,79 @@
-
 
+
 
+ cmsWidgetName="VinLookupMethod" + :answers="answersFromCms" + groupName="vinLookupMethodOption" + buttonTypeString="listButton" + v-model="selectedVinLookupMethod" + isRequired + validationRules="option-required" + :logDisplayedValuesEvent="true" /> + cmsWidgetName="FunnelFooterWidget" + ref="navbar" + :isForwardActionDisabled="!meta.valid" + @back-clicked="backButtonAction" + @ForwardClicked="forwardButtonAction" />
+ class="my-4" + :cmsWidgetName="alertInfo" + alertClass="alert-info" + v-bind:isDismissible="false" /> + cmsWidgetName="ServiceZipQuestionWidget" + v-model="serviceZipCode" + inputId="serviceZipCode" + mask="#####" + isRequired + validationRules="zip-required|zip-format" /> - + cmsWidgetName="EmailAddressQuestionWidget" + v-model="emailAddress" + inputId="emailAddress" + isRequired + disableAutoFill + validationRules="email-address-required|email-address-format" /> + + ref="alertInvalidZip" + v-if="displayInvalidZipAlert" + class="my-4" + cmsWidgetName="AlertInvalidZipWidget" + alertClass="alert-danger" + v-bind:isDismissible="false" /> + class="my-4" + :manualHeadline="AlertNonServiceableZipHeader" + :manualCopy="AlertNonServiceableZipBody" + v-model="customAlertData" + v-if="displayNonServiceableZipAlert" + alertClass="alert-danger" /> + cmsWidgetName="FunnelFooterWidget" + ref="navbar" + :isForwardActionDisabled="!meta.valid" + @back-clicked="backButtonAction" + @ForwardClicked="forwardButtonAction" />
-
 
+
 
@@ -161,8 +159,8 @@ export default { } const zip = lowerCaseParams.get(queryStrings.ZIP_CODE) - ? lowerCaseParams.get(queryStrings.ZIP_CODE) - : store.getters.order.serviceLocation.zipCode; + ? lowerCaseParams.get(queryStrings.ZIP_CODE) + : store.getters.order.serviceLocation.zipCode; var vinByAddressPromise; if (zip) { @@ -180,10 +178,10 @@ export default { promise: cmsContentPromise, }, zip != null && - zip != undefined && { - resultKey: "vinByAddress", - promise: vinByAddressPromise, - }, + zip != undefined && { + resultKey: "vinByAddress", + promise: vinByAddressPromise, + }, ]; const resultMap = await settleAllPromises(promiseResultMap); @@ -195,13 +193,13 @@ export default { vm.skipVinNotRepair = skipVinNotRepair; if (resultMap.cmsContent.FunnelFooterWidget.ForwardButtonText.includes("|")) { const forwardTextOption = - resultMap.cmsContent.FunnelFooterWidget.ForwardButtonText.split("|"); + resultMap.cmsContent.FunnelFooterWidget.ForwardButtonText.split("|"); if (skipVin) { resultMap.cmsContent.FunnelFooterWidget.ForwardButtonText = - forwardTextOption[1]; + forwardTextOption[1]; } else { resultMap.cmsContent.FunnelFooterWidget.ForwardButtonText = - forwardTextOption[0]; + forwardTextOption[0]; } } @@ -259,7 +257,7 @@ export default { const payment = this.$store.getters.payment; const vehicleChangedDuringPolicyLookupInHeritage = - payment.isInsurance && payment.insuranceCoverage.coverageStatus; + payment.isInsurance && payment.insuranceCoverage.coverageStatus; if (vehicleChangedDuringPolicyLookupInHeritage) { navigateToHeritageFunnel({ shouldSaveSession: true, diff --git a/src/layouts/license-plate-lookup/license-plate-lookup.vue b/src/layouts/license-plate-lookup/license-plate-lookup.vue index 49d91a337..c9e3d248e 100644 --- a/src/layouts/license-plate-lookup/license-plate-lookup.vue +++ b/src/layouts/license-plate-lookup/license-plate-lookup.vue @@ -7,90 +7,87 @@
-
 
+
 
+ cmsWidgetName="VehicleBannerWidget" + :displayGenericVehicleImage="false" /> + cmsWidgetName="LicensePlateNumberQuestionWidget" + v-model="licensePlate" + isRequired + customInputId="licensePlate" + validationRules="license-plate-required" /> + cmsWidgetName="RegistrationZipQuestionWidget" + v-model="registrationZipCode" + customInputId="zip" + mask="#####" + validationRules="registration-zip-required|zip-format" /> + cmsWidgetName="EmailAddressQuestionWidget" + v-model="email" + customInputId="email" + validationRules="email-address-required|email-address-format" /> + v-if="displayInvalidZipAlert" + class="my-3" + cmsWidgetName="AlertInvalidZipWidget" + alertClass="alert-danger" + v-bind:isDismissible="false" /> + v-if="displayNonServiceableZipAlert" + class="my-3" + :manualHeadline="AlertNonServiceableZipHeader" + :manualCopy="AlertNonServiceableZipBody" + alertClass="alert-danger" + v-bind:isDismissible="false" />
- + cmsWidgetName="ServiceZipQuestionWidget" + v-model="serviceZipCode" + inputId="serviceZipCode" + validationRules="zip-required|zip-format" + mask="#####" />
- + v-if="displayVinNotFoundAlert" + class="my-3" + cmsWidgetName="AlertVinNotFoundWidget" + alertClass="alert-danger" + v-bind:isDismissible="false" /> + + v-if="displayMatchedDifferentVehicleAlert" + class="my-3" + :manualHeadline="AlertMatchedDifferentVehicleHeader" + :manualCopy="AlertMatchedDifferentVehicleBody" + alertClass="alert-warning" + v-bind:isDismissible="false" /> - + ref="navbar" + cmsWidgetName="FunnelFooterWidget" + :isForwardActionDisabled="!meta.valid" + @back-clicked="backButtonAction" + @ForwardClicked="forwardButtonAction" />
-
 
+
 
- @@ -220,10 +217,10 @@ export default { // If serviceZipCode is not set, then sets the response to the registrationZipValidationResponse. Calls VALIDATE_ZIP if the serviceZipCode is set. resultKey: "serviceZipValidationResponse", promise: this.serviceZipCode - ? this.dispatchStoreAction(storeActions.VALIDATE_ZIP, { - zip: this.serviceZipCode, - }) - : registrationZipValidationResponse, + ? this.dispatchStoreAction(storeActions.VALIDATE_ZIP, { + zip: this.serviceZipCode, + }) + : registrationZipValidationResponse, }, ]; @@ -253,7 +250,7 @@ export default { // Check if the CarId has changed. this.isCarIdDifferent = - vinLookup.data.vehicle.carId !== this.$store.getters.vehicle.carId; + vinLookup.data.vehicle.carId !== this.$store.getters.vehicle.carId; // Handle changing car if ( @@ -365,10 +362,10 @@ export default { }, AlertMatchedDifferentVehicleBody() { return this.getCmsContent("AlertMatchedDifferentVehicleWidget", "BodyText") - .replaceAll("{custom:damage}", getDamageString()) - .replaceAll("{custom:plateLookupYear}", this.customAlertData?.vehicleInfo?.year) - .replaceAll("{custom:plateLookupMake}", this.customAlertData?.vehicleInfo?.make) - .replaceAll("{custom:plateLookupModel}", this.customAlertData?.vehicleInfo?.model); + .replaceAll("{custom:damage}", getDamageString()) + .replaceAll("{custom:plateLookupYear}", this.customAlertData?.vehicleInfo?.year) + .replaceAll("{custom:plateLookupMake}", this.customAlertData?.vehicleInfo?.make) + .replaceAll("{custom:plateLookupModel}", this.customAlertData?.vehicleInfo?.model); }, }, watch: { diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index 792a6123b..357bd7c14 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -8,37 +8,37 @@
-
 
+
 
+ cmsWidgetName="VehicleBannerWidget" + :displayGenericVehicleImage="false" /> + ref="cashOrInsurance" + cmsWidgetName="CashOrInsuranceQuestionWidget" + v-model="isInsuranceSelected" + groupName="CashOrInsuranceQuestion" /> + ref="servicePackage" + cashCmsWidgetName="CashServicePackageQuestionWidget" + insuranceCmsWidgetName="InsuranceServicePackageQuestionWidget" + groupName="ServicePackageQuestion" + :availableLineItems="availableLineItems" + :isInsuranceSelected="isInsuranceSelected" + @vapsItemsSelected="vapsItemsSelectedAction" + v-on="{ 'buttonEvent.openModal': openModalAction }" + validationRules="option-required" + isRequired /> + cmsWidgetName="quoteDisclaimer" + justifyText="left" + typeStyle="caption" + class="mt-4" /> @@ -46,13 +46,13 @@ + cmsWidgetName="FunnelFooterWidget" + :isForwardActionDisabled="!meta.valid" + :isBackButtonHidden="shouldHideBackButton" + @back-clicked="backButtonAction" + @ForwardClicked="forwardButtonAction" />
-
 
+
 
@@ -117,8 +117,8 @@ export default { const resultMap = await settleAllPromises(promiseResultMap); const clonedGlassParts = store.getters.order.lineItems.glassParts - ? JSON.parse(JSON.stringify(store.getters.order.lineItems.glassParts)) - : []; + ? JSON.parse(JSON.stringify(store.getters.order.lineItems.glassParts)) + : []; const availableLineItems = [ resultMap.rainDefense, ...resultMap.supportingItems, @@ -169,101 +169,101 @@ export default { (store.getters.order.damage.isRepair || (store.getters.order.lineItems?.glassParts != null && store.getters.order.lineItems.glassParts.length > 0)) && - store.getters.order.referralNumber?.length !== 6 - ); - }, - getDefaultIsInsuranceSelectedValue(availableLineItems) { - const serviceLocationState = store.getters.order.serviceLocation.state; - // Override if coming back from QuoteDetails. Remove override after Quote release - const isInsuranceOverrideValue = this.$route.query?.isInsurance; + store.getters.order.referralNumber?.length !== 6 + ); + }, + getDefaultIsInsuranceSelectedValue(availableLineItems) { + const serviceLocationState = store.getters.order.serviceLocation.state; + // Override if coming back from QuoteDetails. Remove override after Quote release + const isInsuranceOverrideValue = this.$route.query?.isInsurance; - const defaultIsInsuranceSelectedValue = this.$store.getters.order.payment.isInsurance; - //Default to Insurance Tab if user Service zip is from certain States - if ( - serviceLocationState != null && - payWithInsuranceStates.find((item) => item === serviceLocationState) - ) - return true; - else if (isInsuranceOverrideValue != null) { - return isInsuranceOverrideValue == "true"; - } else if (defaultIsInsuranceSelectedValue != null) { - return defaultIsInsuranceSelectedValue; - } else { - return availableLineItems - ? baseMixin.methods.getTierOnePackagePrice( - baseMixin.methods.filterOutFees(availableLineItems) - ) > 300 - : null; - } - }, - vapsItemsSelectedAction(vapsItemsSelected) { - this.selectedVaps = vapsItemsSelected; - }, - backButtonAction() { - vehicleQuestionsMixin.methods.navigateBack(this); - }, - forwardButtonAction() { - this.dispatchStoreAction( - this.storeActions.SAVE_PAYMENT_TYPE, - this.isInsuranceSelected, - false - ); + const defaultIsInsuranceSelectedValue = this.$store.getters.order.payment.isInsurance; + //Default to Insurance Tab if user Service zip is from certain States + if ( + serviceLocationState != null && + payWithInsuranceStates.find((item) => item === serviceLocationState) + ) + return true; + else if (isInsuranceOverrideValue != null) { + return isInsuranceOverrideValue == "true"; + } else if (defaultIsInsuranceSelectedValue != null) { + return defaultIsInsuranceSelectedValue; + } else { + return availableLineItems + ? baseMixin.methods.getTierOnePackagePrice( + baseMixin.methods.filterOutFees(availableLineItems) + ) > 300 + : null; + } + }, + vapsItemsSelectedAction(vapsItemsSelected) { + this.selectedVaps = vapsItemsSelected; + }, + backButtonAction() { + vehicleQuestionsMixin.methods.navigateBack(this); + }, + forwardButtonAction() { + this.dispatchStoreAction( + this.storeActions.SAVE_PAYMENT_TYPE, + this.isInsuranceSelected, + false + ); - if (!this.isInsuranceSelected) { - this.dispatchStoreAction( - this.storeActions.SAVE_PARENT_ACCOUNT_NUMBER, - applicationConfig.CASH_PARENT_ACCOUNT_NUMBER, - false - ); - } + if (!this.isInsuranceSelected) { + this.dispatchStoreAction( + this.storeActions.SAVE_PARENT_ACCOUNT_NUMBER, + applicationConfig.CASH_PARENT_ACCOUNT_NUMBER, + false + ); + } - if ( - this.$store.getters.order.payment.parentAccountNumber != - applicationConfig.CASH_PARENT_ACCOUNT_NUMBER - ) { - this.supportingItems = this.filterOutFees(this.supportingItems); - } + if ( + this.$store.getters.order.payment.parentAccountNumber != + applicationConfig.CASH_PARENT_ACCOUNT_NUMBER + ) { + this.supportingItems = this.filterOutFees(this.supportingItems); + } - if (this.pricedGlassParts.length > 0) { - this.dispatchStoreAction( - this.storeActions.SAVE_GLASS_PART_PRICES, - this.pricedGlassParts, - false - ); - } + if (this.pricedGlassParts.length > 0) { + this.dispatchStoreAction( + this.storeActions.SAVE_GLASS_PART_PRICES, + this.pricedGlassParts, + false + ); + } - this.dispatchStoreAction(this.storeActions.SAVE_VAPS, this.selectedVaps, false); + this.dispatchStoreAction(this.storeActions.SAVE_VAPS, this.selectedVaps, false); - const payment = this.$store.getters.payment; - if (payment.isInsurance) { - navigateToHeritageFunnel({ - shouldSaveSession: true, - loadingModal: this.$refs.loadingModal, - }); - } else { - this.$router.navigateWithSaving( - this.navigationScenarios.CLICKED_FORWARD_WITH_CASH, - this.$route - ); - } - }, - }, - components: { - funnelHeader, - navbar, - vehicleBanner, - funnelSubHeader, - Form, - textBlock, - cashOrInsuranceQuestion, - servicePackageQuestion, - contentGroupModal, - loadingModal, - }, - }; - - + const payment = this.$store.getters.payment; + if (payment.isInsurance) { + navigateToHeritageFunnel({ + shouldSaveSession: true, + loadingModal: this.$refs.loadingModal, + }); + } else { + this.$router.navigateWithSaving( + this.navigationScenarios.CLICKED_FORWARD_WITH_CASH, + this.$route + ); + } + }, + }, + components: { + funnelHeader, + navbar, + vehicleBanner, + funnelSubHeader, + Form, + textBlock, + cashOrInsuranceQuestion, + servicePackageQuestion, + contentGroupModal, + loadingModal, + }, +}; + + diff --git a/src/layouts/review/review.vue b/src/layouts/review/review.vue index 592654db1..c7112fb00 100644 --- a/src/layouts/review/review.vue +++ b/src/layouts/review/review.vue @@ -8,7 +8,7 @@
-
 
+
 
- -
-
 
+
 
+ diff --git a/src/layouts/schedule/schedule.vue b/src/layouts/schedule/schedule.vue index 23564a4c7..59d8e932a 100644 --- a/src/layouts/schedule/schedule.vue +++ b/src/layouts/schedule/schedule.vue @@ -1,63 +1,66 @@ diff --git a/src/layouts/service-location/service-location.vue b/src/layouts/service-location/service-location.vue index b5ceb81dd..aed00e644 100644 --- a/src/layouts/service-location/service-location.vue +++ b/src/layouts/service-location/service-location.vue @@ -8,101 +8,100 @@
-
 
+
 
+ v-model="serviceZipCodeQuestion" + ref="serviceZipCodeQuestion" + :mobileFeePart="mobileFeePart" + @updated-mobile-fee-part="setMobileFeePart" + @updated-serviceability="setServiceabilityDetails" + @updated-contains-military-base="setContainsMilitaryBase" + linkWidgetName="ServiceZipLinkWidget" + modalWidgetName="ServiceZipModalWidget" + :onZipUpdateCallback="reloadShopData" /> + ref="alertMilitaryBaseZip" + class="my-5" + cmsWidgetName="AlertMilitaryBaseZipWidget" + v-if="displayMilitaryZipAlert" + alertClass="alert-warning" /> + ref="alertMobileOnly" + class="my-5" + cmsWidgetName="AlertMobileOnlyWidget" + v-if="displayServiceableMobileOnly" + alertClass="alert-warning" /> + ref="alertRecalNoMobile" + class="my-5" + cmsWidgetName="AlertRecalNoMobileWidget" + v-if="displayRecalibrationWarning" + @text-link-clicked="openModalAction" + alertClass="alert-warning" /> + ref="alertInshopOnly" + class="my-5" + cmsWidgetName="AlertInshopOnlyWidget" + v-if="displayServiceableInshopOnly" + alertClass="alert-warning" /> + ref="alertNoShops" + class="my-5" + cmsWidgetName="AlertNoShopsWidget" + v-if="displayNoShopsAlert" + alertClass="alert-warning" /> + v-model="selectedAppointmentType" + v-show="isAppointmentTypeDisplayed" + :isServiceableMobile="isServiceableMobile" + :isServiceableInshop="isServiceableInshop" + :isDisplayed="isAppointmentTypeDisplayed" + ref="appointmentTypeQuestion" + groupName="appointmentTypeQuestion" + cmsWidgetName="AppointmentTypeQuestionWidget" + validationRules="option-required" /> + customComponentId="mobileLocationQuestions" + v-if="selectedAppointmentType === 'Mobile'" + v-model="mobileLocationQuestions" + :mobileFeePart="mobileFeePart" + @updated-mobile-fee-part="setMobileFeePart" + @updated-serviceability="setServiceabilityDetails" + @updated-contains-military-base="setContainsMilitaryBase" + validationRules="mobile-location-required" + ref="mobileLocationQuestions" + linkWidgetName="MobileLocationLinkWidget" + modalWidgetName="MobileLocationModalWidget" + :onZipUpdateCallback="reloadShopData" /> + ref="shopQuestion" + v-show="isShopQuestionDisplayed" + v-model="selectedProvider" + :selectedAppointmentType="selectedAppointmentType" + :isDisplayed="isShopQuestionDisplayed" + cmsWidgetName="ShopQuestionWidget" /> - + cmsWidgetName="FunnelFooterWidget" + ref="navbar" + :isForwardActionDisabled="!meta.valid || displayNoShopsAlert" + @back-clicked="backButtonAction" + @ForwardClicked="forwardButtonAction" />
-
 
+
 
@@ -262,7 +261,7 @@ export default { set: function (newValue) { this.streetAddress = newValue.addressQuestions.streetAddress; this.apartmentNumberOrBusinessName = - newValue.addressQuestions.apartmentNumberOrBusinessName; + newValue.addressQuestions.apartmentNumberOrBusinessName; this.city = newValue.addressQuestions.city; this.state = newValue.addressQuestions.state; this.zipCode = newValue.addressQuestions.zipCode; @@ -391,10 +390,10 @@ export default { setServiceabilityDetails(serviceabilityDetails) { this.isGlassServiceableInshop = serviceabilityDetails.isGlassServiceableInshop; this.isRecalibrationServiceableInshop = - serviceabilityDetails.isRecalibrationServiceableInshop; + serviceabilityDetails.isRecalibrationServiceableInshop; this.isGlassServiceableMobile = serviceabilityDetails.isGlassServiceableMobile; this.isRecalibrationServiceableMobile = - serviceabilityDetails.isRecalibrationServiceableMobile; + serviceabilityDetails.isRecalibrationServiceableMobile; }, backButtonAction() { this.$router.navigateWithoutSaving(this.navigationScenarios.CLICKED_BACK, this.$route); diff --git a/src/layouts/vehicle-damage/vehicle-damage.vue b/src/layouts/vehicle-damage/vehicle-damage.vue index e27d398a4..9670ec48c 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.vue +++ b/src/layouts/vehicle-damage/vehicle-damage.vue @@ -6,16 +6,16 @@ -
-
 
-
- +
 
+
+ - + - - - - - - - -
-
 
+
 
+ @@ -235,7 +235,7 @@ export default { }) ) { windShieldOptions.selectedWindshieldDamageType = - damageLocationsSelected.REPLACE; + damageLocationsSelected.REPLACE; windShieldOptions.selectedWindshieldReplaceOptions.push( damageLocationsSelected.SINGLE ); @@ -250,7 +250,7 @@ export default { }) ) { windShieldOptions.selectedWindshieldDamageType = - damageLocationsSelected.REPLACE; + damageLocationsSelected.REPLACE; windShieldOptions.selectedWindshieldReplaceOptions.push( damageLocationsSelected.DRIVER ); @@ -265,7 +265,7 @@ export default { }) ) { windShieldOptions.selectedWindshieldDamageType = - damageLocationsSelected.REPLACE; + damageLocationsSelected.REPLACE; windShieldOptions.selectedWindshieldReplaceOptions.push( damageLocationsSelected.PASSENGER ); @@ -335,7 +335,7 @@ export default { isWindshieldRepair: this.isWindshieldRepair, selectedGlassToReplace: this.selectedGlassToReplace(), selectedWindshieldChipCount: - this.selectedWindshieldOptions.selectedWindshieldChipCount, + this.selectedWindshieldOptions.selectedWindshieldChipCount, }, false ); @@ -358,9 +358,9 @@ export default { const payment = this.$store.getters.payment; const vehicleChangedDuringPolicyLookupInHeritage = - payment.isInsurance && - payment.insuranceCoverage.coverageStatus && - payment.insuranceCoverage.coverageStatus !== ""; + payment.isInsurance && + payment.insuranceCoverage.coverageStatus && + payment.insuranceCoverage.coverageStatus !== ""; if (vehicleChangedDuringPolicyLookupInHeritage) { if (store.getters.damage.isRepair) { this.$router.navigateWithSaving( @@ -370,7 +370,7 @@ export default { } else { this.$router.navigateWithSaving( this.navigationScenarios - .CLICKED_FORWARD_WITH_REPLACE_AND_VERIFIED_INSURANCE, + .CLICKED_FORWARD_WITH_REPLACE_AND_VERIFIED_INSURANCE, this.$route ); } @@ -452,7 +452,7 @@ export default { return ( this.isWindshieldDamageLocation && this.selectedWindshieldOptions.selectedWindshieldDamageType === - damageLocationsSelected.REPAIR + damageLocationsSelected.REPAIR ); }, isDriverSideReplace() { @@ -480,10 +480,10 @@ export default { if ( !this.selectedDamageLocations?.includes("Windshield") || this.selectedWindshieldOptions.selectedWindshieldDamageType === - damageLocationsSelected.REPAIR || + damageLocationsSelected.REPAIR || !this.selectedWindshieldOptions.selectedWindshieldReplaceOptions ) - return false; + return false; return ( this.selectedWindshieldOptions.selectedWindshieldReplaceOptions?.some( @@ -502,14 +502,14 @@ export default { ); } ) || - this.selectedWindshieldOptions.selectedWindshieldReplaceOptions?.some( - (selectedPassengerWindshield) => { - return ( - selectedPassengerWindshield.toUpperCase() === - damageLocationsSelected.PASSENGER.toUpperCase() - ); - } - )) + this.selectedWindshieldOptions.selectedWindshieldReplaceOptions?.some( + (selectedPassengerWindshield) => { + return ( + selectedPassengerWindshield.toUpperCase() === + damageLocationsSelected.PASSENGER.toUpperCase() + ); + } + )) ); }, shouldDisplayVehicleChangeAlert() { diff --git a/src/layouts/vehicle-parts/vehicle-parts.vue b/src/layouts/vehicle-parts/vehicle-parts.vue index c34223b88..5ad44d3e0 100644 --- a/src/layouts/vehicle-parts/vehicle-parts.vue +++ b/src/layouts/vehicle-parts/vehicle-parts.vue @@ -9,44 +9,48 @@
-
 
+
 
- -
-
-
- -
+ +
+
+
+
-
- -
- -
- +
+
+ +
+ +
+
-
 
+
 
diff --git a/src/layouts/vehicle/vehicle.vue b/src/layouts/vehicle/vehicle.vue index 92f1e7ea6..8743ef284 100644 --- a/src/layouts/vehicle/vehicle.vue +++ b/src/layouts/vehicle/vehicle.vue @@ -7,7 +7,7 @@
-
 
+
 
-
 
+
 
diff --git a/src/layouts/vin-lookup/vin-lookup.vue b/src/layouts/vin-lookup/vin-lookup.vue index dfb254dc9..fe25fa403 100644 --- a/src/layouts/vin-lookup/vin-lookup.vue +++ b/src/layouts/vin-lookup/vin-lookup.vue @@ -8,126 +8,122 @@
-
 
+
 
+ cmsWidgetName="VehicleBannerWidget" + :displayGenericVehicleImage="false" /> + cmsWidgetName="VinNumberQuestionWidget" + v-model="vin" + customInputId="vin" + isRequired + :validationRules="!vinPopulatedOnPageLoad ? 'vin-required|vin-format' : ''" + :isDisabled="vinPopulatedOnPageLoad" + maxLength="17" + :mask="vinMask" + includeImageQuestion + :imageQuestionSubmitHandler="getVinFromImage" + :maxFileSize="imageUploadMaxFileSize" + @image-lookup-error="displayVinScanAlert" + @image-validity-error="displayVinScanAlert" + data-test="vin-lookup-field" + ref="vinLookupQuestion" /> + cmsWidgetName="AlertVinScanFailed" + v-if="displayVinScanFailedAlert" + alertClass="alert-danger" /> + cmsWidgetName="ServiceZipQuestionWidget" + v-model="serviceZipCode" + customInputId="serviceZipCode" + mask="#####" + isRequired + validationRules="zip-required|zip-format" /> + cmsWidgetName="EmailAddressQuestionWidget" + v-model="emailAddress" + customInputId="emailAddress" + isRequired + validationRules="email-address-required|email-address-format" /> + ref="alertInvalidZip" + v-if="displayInvalidZipAlert" + class="my-4" + cmsWidgetName="AlertInvalidZipWidget" + alertClass="alert-danger" + v-bind:isDismissible="false" /> + class="my-4" + :manualHeadline="AlertPerfectMatchInsuranceVerifiedHeader" + :manualCopy="AlertPerfectMatchInsuranceVerifiedBody" + v-model="customAlertData" + v-if=" + vinPopulatedOnPageLoad && + isInsuranceVerified && + !displayInvalidZipAlert && + !displayNonServiceableZipAlert + " + alertClass="alert-success" /> + class="my-4" + :manualHeadline="AlertMatchedDifferentVehicleHeader" + :manualCopy="AlertMatchedDifferentVehicleBody" + v-model="customAlertData" + v-if="displayMatchedDifferentVehicleAlert" + alertClass="alert-warning" /> + class="my-4" + :manualHeadline="AlertNonServiceableZipHeader" + :manualCopy="AlertNonServiceableZipBody" + v-model="customAlertData" + v-if="displayNonServiceableZipAlert" + alertClass="alert-danger" /> + class="my-4" + v-model="customAlertData" + v-if="displayVinNotFoundAlert" + alertClass="alert-danger" + cmsWidgetName="AlertVinNotFoundWidget" /> + class="my-4" + :manualHeadline="AlertPerfectMatchInsuranceNotVerifiedHeader" + :manualCopy="AlertPerfectMatchInsuranceNotVerifiedBody" + v-model="customAlertData" + v-if=" + vinPopulatedOnPageLoad && + !isInsuranceVerified && + !displayInvalidZipAlert && + !displayNonServiceableZipAlert + " + alertClass="alert-success" /> - + cmsWidgetName="FunnelFooterWidget" + ref="navbar" + :isForwardActionDisabled="!meta.valid" + @back-clicked="backButtonAction" + @ForwardClicked="forwardButtonAction" />
-
 
+
 
- @@ -300,7 +296,7 @@ export default { // Check if the CarId is different from the lookup vs what is in state currently. this.isCarIdDifferent = - resultMap.vehicleLookupResponse.carId !== this.$store.getters.vehicle.carId; + resultMap.vehicleLookupResponse.carId !== this.$store.getters.vehicle.carId; if ( this.isCarIdDifferent && @@ -400,16 +396,16 @@ export default { getVinFromImage(image) { return new Promise((resolve, reject) => { this.dispatchStoreAction(storeActions.LOOKUP_VIN_BY_IMAGE, image) - .then((response) => { - if (response.data.length > 0) { - resolve(response.data[0]); - } else { - reject("No VINs detected."); - } - }) - .catch(() => { - reject("An error occurred during the lookup."); - }); + .then((response) => { + if (response.data.length > 0) { + resolve(response.data[0]); + } else { + reject("No VINs detected."); + } + }) + .catch(() => { + reject("An error occurred during the lookup."); + }); }); }, resetAlerts() { @@ -432,10 +428,10 @@ export default { }, AlertMatchedDifferentVehicleBody() { return this.getCmsContent("AlertMatchedDifferentVehicleWidget", "BodyText") - .replaceAll("{custom:damage}", getDamageString()) - .replaceAll("{custom:vinlookupYear}", this.customAlertData?.vehicleInfo?.year) - .replaceAll("{custom:vinlookupMake}", this.customAlertData?.vehicleInfo?.make) - .replaceAll("{custom:vinlookupModel}", this.customAlertData?.vehicleInfo?.model); + .replaceAll("{custom:damage}", getDamageString()) + .replaceAll("{custom:vinlookupYear}", this.customAlertData?.vehicleInfo?.year) + .replaceAll("{custom:vinlookupMake}", this.customAlertData?.vehicleInfo?.make) + .replaceAll("{custom:vinlookupModel}", this.customAlertData?.vehicleInfo?.model); }, AlertNonServiceableZipHeader() { return this.getCmsContent("AlertNonServiceableZipWidget", "HeadlineText").replaceAll(