Merge branch 'release/2025.02.27' into feature/CASH-151
This commit is contained in:
commit
86812eefe2
29 changed files with 1332 additions and 153 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
{
|
{
|
||||||
"tabWidth": 4,
|
"tabWidth": 4,
|
||||||
|
"htmlWhitespaceSensitivity": "ignore",
|
||||||
"bracketSameLine": true,
|
"bracketSameLine": true,
|
||||||
"printWidth": 100,
|
"printWidth": 100,
|
||||||
"trailingComma" : "es5"
|
"trailingComma" : "es5"
|
||||||
|
|
|
||||||
|
|
@ -16,8 +16,6 @@ const storeMutations = {
|
||||||
UPDATE_VEHICLE_IMAGE_COLOR: "updateVehicleImageColor",
|
UPDATE_VEHICLE_IMAGE_COLOR: "updateVehicleImageColor",
|
||||||
UPDATE_VEHICLE_VIN: "updateVehicleVin",
|
UPDATE_VEHICLE_VIN: "updateVehicleVin",
|
||||||
UPDATE_VEHICLE: "updateVehicle",
|
UPDATE_VEHICLE: "updateVehicle",
|
||||||
UPDATE_VEHICLE_MOBILE_STATIC_RECALIBRATION_APPLICABLE:
|
|
||||||
"updateIsMobileStaticRecalibrationApplicable",
|
|
||||||
|
|
||||||
UPDATE_IS_REPAIR: "updateIsRepair",
|
UPDATE_IS_REPAIR: "updateIsRepair",
|
||||||
UPDATE_NUMBER_OF_CHIPS: "updateNumberOfChips",
|
UPDATE_NUMBER_OF_CHIPS: "updateNumberOfChips",
|
||||||
|
|
|
||||||
1071
src/digital-components/date-picker/date-picker-2.vue
Normal file
1071
src/digital-components/date-picker/date-picker-2.vue
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -17,18 +17,40 @@
|
||||||
<div
|
<div
|
||||||
v-if="calendarViewDirection === 'future'"
|
v-if="calendarViewDirection === 'future'"
|
||||||
class="legend caption d-flex align-items-center justify-content-end">
|
class="legend caption d-flex align-items-center justify-content-end">
|
||||||
<span class="legend-circle me-1"></span> = Available
|
<span class="legend-circle me-1"></span>
|
||||||
|
= Available
|
||||||
</div>
|
</div>
|
||||||
<div class="separator-line"></div>
|
<div class="separator-line"></div>
|
||||||
<div class="nav-back ps-3"><button></button></div>
|
<div class="nav-back ps-3"><button></button></div>
|
||||||
<div class="nav-forward pe-3"><button></button></div>
|
<div class="nav-forward pe-3"><button></button></div>
|
||||||
<div class="grid-item caption"><span class="sr-only">Sunday</span>S</div>
|
<div class="grid-item caption">
|
||||||
<div class="grid-item caption"><span class="sr-only">Monday</span>M</div>
|
<span class="sr-only">Sunday</span>
|
||||||
<div class="grid-item caption"><span class="sr-only">Tuesday</span>T</div>
|
S
|
||||||
<div class="grid-item caption"><span class="sr-only">Wednesday</span>W</div>
|
</div>
|
||||||
<div class="grid-item caption"><span class="sr-only">Thursday</span>T</div>
|
<div class="grid-item caption">
|
||||||
<div class="grid-item caption"><span class="sr-only">Friday</span>F</div>
|
<span class="sr-only">Monday</span>
|
||||||
<div class="grid-item caption"><span class="sr-only">Saturday</span>S</div>
|
M
|
||||||
|
</div>
|
||||||
|
<div class="grid-item caption">
|
||||||
|
<span class="sr-only">Tuesday</span>
|
||||||
|
T
|
||||||
|
</div>
|
||||||
|
<div class="grid-item caption">
|
||||||
|
<span class="sr-only">Wednesday</span>
|
||||||
|
W
|
||||||
|
</div>
|
||||||
|
<div class="grid-item caption">
|
||||||
|
<span class="sr-only">Thursday</span>
|
||||||
|
T
|
||||||
|
</div>
|
||||||
|
<div class="grid-item caption">
|
||||||
|
<span class="sr-only">Friday</span>
|
||||||
|
F
|
||||||
|
</div>
|
||||||
|
<div class="grid-item caption">
|
||||||
|
<span class="sr-only">Saturday</span>
|
||||||
|
S
|
||||||
|
</div>
|
||||||
<div
|
<div
|
||||||
v-for="date in month.dates"
|
v-for="date in month.dates"
|
||||||
:key="date.inputValue"
|
:key="date.inputValue"
|
||||||
|
|
|
||||||
|
|
@ -16,8 +16,7 @@
|
||||||
:maxlength="maxLength"
|
:maxlength="maxLength"
|
||||||
role="textbox"
|
role="textbox"
|
||||||
aria-multiline="true"
|
aria-multiline="true"
|
||||||
:aria-required="isRequired">
|
:aria-required="isRequired"></textarea>
|
||||||
</textarea>
|
|
||||||
<p
|
<p
|
||||||
tabindex="-1"
|
tabindex="-1"
|
||||||
class="caption mt-2 mb-0 w-100"
|
class="caption mt-2 mb-0 w-100"
|
||||||
|
|
|
||||||
|
|
@ -75,9 +75,9 @@
|
||||||
class="d-inline-flex small mt-1"
|
class="d-inline-flex small mt-1"
|
||||||
aria-atomic="true"
|
aria-atomic="true"
|
||||||
aria-live="polite"
|
aria-live="polite"
|
||||||
:class="[centerErrorMessage ? 'center-error-message' : '']"
|
:class="[centerErrorMessage ? 'center-error-message' : '']">
|
||||||
>{{ errorMessage }}</span
|
{{ errorMessage }}
|
||||||
>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,9 @@
|
||||||
href="javascript:void(0)"
|
href="javascript:void(0)"
|
||||||
class="col d-flex justify-content-between py-0">
|
class="col d-flex justify-content-between py-0">
|
||||||
<span class="label">{{ OrderDetailsText }}</span>
|
<span class="label">{{ OrderDetailsText }}</span>
|
||||||
<span class="label amount-due">{{
|
<span class="label amount-due">
|
||||||
getLineItemAmount(amountDue, showCoverageAsPending)
|
{{ getLineItemAmount(amountDue, showCoverageAsPending) }}
|
||||||
}}</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="cart-panel">
|
<div class="cart-panel">
|
||||||
|
|
@ -48,11 +48,11 @@
|
||||||
v-for="(cartItem, i) in packageCartItems"
|
v-for="(cartItem, i) in packageCartItems"
|
||||||
:key="i"
|
:key="i"
|
||||||
class="packaged-cart-item">
|
class="packaged-cart-item">
|
||||||
<span
|
<span>
|
||||||
><span :class="cartItem.category === 'promos' ? 'promo' : ''">{{
|
<span :class="cartItem.category === 'promos' ? 'promo' : ''">
|
||||||
cartItem.name
|
{{ cartItem.name }}
|
||||||
}}</span></span
|
</span>
|
||||||
>
|
</span>
|
||||||
<textLink
|
<textLink
|
||||||
v-if="allowItemRemoval"
|
v-if="allowItemRemoval"
|
||||||
ref="removeLink"
|
ref="removeLink"
|
||||||
|
|
@ -99,11 +99,9 @@
|
||||||
!showCoverageAsVerified ||
|
!showCoverageAsVerified ||
|
||||||
cartItem.name === 'Recycling' ||
|
cartItem.name === 'Recycling' ||
|
||||||
(showCoverageAsVerified && !cartItem.isCoveredByInsurance)
|
(showCoverageAsVerified && !cartItem.isCoveredByInsurance)
|
||||||
"
|
">
|
||||||
>{{
|
{{ getLineItemAmount(cartItem.subTotal, null, cartItem.category) }}
|
||||||
getLineItemAmount(cartItem.subTotal, null, cartItem.category)
|
</span>
|
||||||
}}</span
|
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Sub total, sales tax, total columns -->
|
<!-- Sub total, sales tax, total columns -->
|
||||||
|
|
@ -143,8 +141,10 @@
|
||||||
class="my-2 lh-1 applied-promo-tag"
|
class="my-2 lh-1 applied-promo-tag"
|
||||||
v-for="(promoCode, i) in getPromoCodeList"
|
v-for="(promoCode, i) in getPromoCodeList"
|
||||||
:key="i">
|
:key="i">
|
||||||
<span class="caption"
|
<span class="caption">
|
||||||
>Promo code <span class="promo-code">{{ promoCode }}</span> applied
|
Promo code
|
||||||
|
<span class="promo-code">{{ promoCode }}</span>
|
||||||
|
applied
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<contentGroupModal ref="RecycleModal" cmsWidgetName="RecycleModal">
|
<contentGroupModal ref="RecycleModal" cmsWidgetName="RecycleModal">
|
||||||
|
|
|
||||||
|
|
@ -54,8 +54,10 @@
|
||||||
class="mt-4 d-flex align-items-center justify-content-between"
|
class="mt-4 d-flex align-items-center justify-content-between"
|
||||||
v-for="(promoCode, i) in this.getPromoCodeList()"
|
v-for="(promoCode, i) in this.getPromoCodeList()"
|
||||||
:key="i">
|
:key="i">
|
||||||
<span class="applied-promo"
|
<span class="applied-promo">
|
||||||
>Promo code <span class="promo-code">{{ promoCode }}</span> applied
|
Promo code
|
||||||
|
<span class="promo-code">{{ promoCode }}</span>
|
||||||
|
applied
|
||||||
</span>
|
</span>
|
||||||
<textLink
|
<textLink
|
||||||
ref="removeLink"
|
ref="removeLink"
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,8 @@
|
||||||
<button v-on:click="openCalendarModal">
|
<button v-on:click="openCalendarModal">
|
||||||
<span class="add-to-calendar-span">
|
<span class="add-to-calendar-span">
|
||||||
<img src="@/assets/img/icons/add-to-calendar.svg" class="add-to-calendar-img" />
|
<img src="@/assets/img/icons/add-to-calendar.svg" class="add-to-calendar-img" />
|
||||||
<span class="add-to-calendar-text">Add to calendar</span></span
|
<span class="add-to-calendar-text">Add to calendar</span>
|
||||||
>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<calendarModalQuestion
|
<calendarModalQuestion
|
||||||
|
|
@ -14,8 +14,7 @@
|
||||||
cmsWidgetName="CalendarModalQuestion"
|
cmsWidgetName="CalendarModalQuestion"
|
||||||
@calendar-modal-closed="calendarModalClosed"
|
@calendar-modal-closed="calendarModalClosed"
|
||||||
:calendarOptionsData="calendarValues"
|
:calendarOptionsData="calendarValues"
|
||||||
v-model="selectedCalendarOption">
|
v-model="selectedCalendarOption"></calendarModalQuestion>
|
||||||
</calendarModalQuestion>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,13 @@
|
||||||
v-model="parentAccountNumber"
|
v-model="parentAccountNumber"
|
||||||
:originalList="originalList" />
|
:originalList="originalList" />
|
||||||
</div>
|
</div>
|
||||||
|
<textLink
|
||||||
|
id="payOnMyOwnBackButton"
|
||||||
|
useLoadingModal
|
||||||
|
linkType="text"
|
||||||
|
:text="payWithCashButtonCopy"
|
||||||
|
href="javascript:void(0)"
|
||||||
|
@click-event="backButtonAction((foreceCashSelectionOnQuote = true))" />
|
||||||
|
|
||||||
<navbar
|
<navbar
|
||||||
cmsWidgetName="FunnelFooterWidget"
|
cmsWidgetName="FunnelFooterWidget"
|
||||||
|
|
@ -36,6 +43,7 @@ import navbar from "@/fmg-components/nav-bar/nav-bar";
|
||||||
import funnelSubHeader from "@/fmg-components/funnel-sub-header/funnel-sub-header";
|
import funnelSubHeader from "@/fmg-components/funnel-sub-header/funnel-sub-header";
|
||||||
import loadingModal from "@/fmg-components/loading-modal/loading-modal.vue";
|
import loadingModal from "@/fmg-components/loading-modal/loading-modal.vue";
|
||||||
import insuranceCompanyQuestion from "@/layouts/insurance-company/insurance-company-question";
|
import insuranceCompanyQuestion from "@/layouts/insurance-company/insurance-company-question";
|
||||||
|
import textLink from "../../ux-components/text-link/text-link.vue";
|
||||||
|
|
||||||
// Supporting files
|
// Supporting files
|
||||||
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
||||||
|
|
@ -92,6 +100,9 @@ export default {
|
||||||
isParentAccountNumber() {
|
isParentAccountNumber() {
|
||||||
return !!this.parentAccountNumber;
|
return !!this.parentAccountNumber;
|
||||||
},
|
},
|
||||||
|
payWithCashButtonCopy() {
|
||||||
|
return this.getCmsContent("PayWithCashWidget", "Text");
|
||||||
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
isCashParentAccountNumber() {
|
isCashParentAccountNumber() {
|
||||||
|
|
@ -109,8 +120,17 @@ export default {
|
||||||
arePagePrerequisitesValid() {
|
arePagePrerequisitesValid() {
|
||||||
return store.getters.order.payment.isInsurance === true;
|
return store.getters.order.payment.isInsurance === true;
|
||||||
},
|
},
|
||||||
backButtonAction() {
|
backButtonAction(forceCashSelectionOnQuote) {
|
||||||
// Go back to Quote page
|
// Go back to Quote page
|
||||||
|
if (forceCashSelectionOnQuote) {
|
||||||
|
this.$router.navigateWithoutSaving(
|
||||||
|
this.navigationScenarios.CLICKED_BACK,
|
||||||
|
this.$route,
|
||||||
|
{ isCashSelected: true }
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
this.$router.navigateWithoutSaving(this.navigationScenarios.CLICKED_BACK, this.$route);
|
this.$router.navigateWithoutSaving(this.navigationScenarios.CLICKED_BACK, this.$route);
|
||||||
},
|
},
|
||||||
async forwardButtonAction() {
|
async forwardButtonAction() {
|
||||||
|
|
@ -157,6 +177,7 @@ export default {
|
||||||
Form,
|
Form,
|
||||||
loadingModal,
|
loadingModal,
|
||||||
insuranceCompanyQuestion,
|
insuranceCompanyQuestion,
|
||||||
|
textLink,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,20 @@ export default {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (store.getters.externalParameterCustomer?.phoneNumber) {
|
||||||
|
await baseMixin.methods.dispatchStoreAction(
|
||||||
|
storeActions.SAVE_PHONE_NUMBER,
|
||||||
|
store.getters.externalParameterCustomer.phoneNumber,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
|
await baseMixin.methods.dispatchStoreAction(
|
||||||
|
storeActions.SAVE_IS_SMS_OPT_IN,
|
||||||
|
true,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
baseMixin.methods.ResetExternalParamsAndHideModal();
|
baseMixin.methods.ResetExternalParamsAndHideModal();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,21 @@ export default {
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (store.getters.externalParameterCustomer?.phoneNumber) {
|
||||||
|
await baseMixin.methods.dispatchStoreAction(
|
||||||
|
storeActions.SAVE_PHONE_NUMBER,
|
||||||
|
store.getters.externalParameterCustomer.phoneNumber,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
|
await baseMixin.methods.dispatchStoreAction(
|
||||||
|
storeActions.SAVE_IS_SMS_OPT_IN,
|
||||||
|
true,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
baseMixin.methods.ResetExternalParamsAndHideModal();
|
baseMixin.methods.ResetExternalParamsAndHideModal();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
v-if="hasImage"
|
v-if="hasImage"
|
||||||
:src="buttonImage"
|
:src="buttonImage"
|
||||||
:alt="getInlineAltText(token)" />
|
:alt="getInlineAltText(token)" />
|
||||||
<span v-else> {{ getInlineAltText(token) }}</span>
|
<span v-else>{{ getInlineAltText(token) }}</span>
|
||||||
</span>
|
</span>
|
||||||
<span v-else>
|
<span v-else>
|
||||||
{{ token }}
|
{{ token }}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
class="ms-2"
|
class="ms-2"
|
||||||
:src="buttonImage"
|
:src="buttonImage"
|
||||||
:alt="getInlineAltText(token)" />
|
:alt="getInlineAltText(token)" />
|
||||||
<span v-else> {{ getInlineAltText(token) }}</span>
|
<span v-else>{{ getInlineAltText(token) }}</span>
|
||||||
</span>
|
</span>
|
||||||
<span v-else>
|
<span v-else>
|
||||||
{{ token }}
|
{{ token }}
|
||||||
|
|
|
||||||
|
|
@ -41,8 +41,7 @@
|
||||||
id="card-frame"
|
id="card-frame"
|
||||||
seamless
|
seamless
|
||||||
scrolling="no"
|
scrolling="no"
|
||||||
allow="payment *; microphone *; geolocation *;">
|
allow="payment *; microphone *; geolocation *;"></iframe>
|
||||||
</iframe>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|
|
||||||
|
|
@ -577,6 +577,52 @@ describe("quote.vue", () => {
|
||||||
//Assert
|
//Assert
|
||||||
expect(wrapper.vm.isInsuranceSelected).toBe(false);
|
expect(wrapper.vm.isInsuranceSelected).toBe(false);
|
||||||
});
|
});
|
||||||
|
test("should default to cash if isCashSelected is true, despite all other checks pointing to insurance selection", async () => {
|
||||||
|
// Also needs no query parameter or previous selection in store to be present
|
||||||
|
//Arrange
|
||||||
|
|
||||||
|
store.getters = {
|
||||||
|
lineItems: {
|
||||||
|
glassParts: ["item", "item2"],
|
||||||
|
},
|
||||||
|
applicationUser: {
|
||||||
|
experiments: [],
|
||||||
|
},
|
||||||
|
order: {
|
||||||
|
lineItems: {
|
||||||
|
glassParts: ["item", "item2"],
|
||||||
|
},
|
||||||
|
payment: {
|
||||||
|
isInsurance: true,
|
||||||
|
},
|
||||||
|
customer: {
|
||||||
|
emailAddress: "test@test.com",
|
||||||
|
},
|
||||||
|
serviceLocation: {
|
||||||
|
state: null,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
vehicle: {
|
||||||
|
cardId: "123",
|
||||||
|
},
|
||||||
|
experimentSettings: {
|
||||||
|
settingName: "SERVICE_PACKAGE_DISCOUNT",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
mockTierOnePrice = 505;
|
||||||
|
const { wrapper } = setupMocks({});
|
||||||
|
|
||||||
|
//Act
|
||||||
|
await quote.beforeRouteEnter.call(
|
||||||
|
wrapper.vm,
|
||||||
|
{ query: { fmgPage: "quote", isInsuranceSelected: true, isCashSelected: true } },
|
||||||
|
undefined,
|
||||||
|
(c) => c(wrapper.vm)
|
||||||
|
);
|
||||||
|
|
||||||
|
//Assert
|
||||||
|
expect(wrapper.vm.isInsuranceSelected).toBe(false);
|
||||||
|
});
|
||||||
test("should default to insurance if total economy package price is over $500", async () => {
|
test("should default to insurance if total economy package price is over $500", async () => {
|
||||||
// Also needs no query parameter or previous selection in store to be present
|
// Also needs no query parameter or previous selection in store to be present
|
||||||
//Arrange
|
//Arrange
|
||||||
|
|
|
||||||
|
|
@ -328,6 +328,10 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
const getIsInsuranceSelectedValue = (availableLineItems, insuranceThreshold) => {
|
const getIsInsuranceSelectedValue = (availableLineItems, insuranceThreshold) => {
|
||||||
|
// query param checked here is set on insurance-selection "Pay on my own" link click
|
||||||
|
if (to.query?.isCashSelected || to.query?.iscashselected) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
const serviceLocationState = store.getters.order.serviceLocation.state;
|
const serviceLocationState = store.getters.order.serviceLocation.state;
|
||||||
|
|
||||||
// usually true when returning from heritage but can be false when returning from heritage on a save quote
|
// usually true when returning from heritage but can be false when returning from heritage on a save quote
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
<div class="alert-heading">
|
<div class="alert-heading">
|
||||||
<span>
|
<span>
|
||||||
<img v-if="hasImage" :src="imageUrl" />
|
<img v-if="hasImage" :src="imageUrl" />
|
||||||
<span class="px-2"> {{ recalHeaderText }}</span>
|
<span class="px-2">{{ recalHeaderText }}</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
|
|
|
||||||
|
|
@ -27,9 +27,10 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6 col-xl-4 start-over">
|
<div class="col-md-6 col-xl-4 start-over">
|
||||||
<a @click="startOver" alt="Start Over Button"
|
<a @click="startOver" alt="Start Over Button">
|
||||||
><img v-bind:src="startOverImage" />{{ startOverText }}</a
|
<img v-bind:src="startOverImage" />
|
||||||
>
|
{{ startOverText }}
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@
|
||||||
marginTopSizeOverride="1" />
|
marginTopSizeOverride="1" />
|
||||||
</template>
|
</template>
|
||||||
<locationAlerts cmsWidgetPrefix="LocationAlert-" ref="locationAlerts" />
|
<locationAlerts cmsWidgetPrefix="LocationAlert-" ref="locationAlerts" />
|
||||||
<datePicker
|
<datePicker2
|
||||||
customComponentId="dateQuestion"
|
customComponentId="dateQuestion"
|
||||||
selectableDatesSetting="custom"
|
selectableDatesSetting="custom"
|
||||||
ref="datePicker"
|
ref="datePicker"
|
||||||
|
|
@ -69,7 +69,7 @@ import navbar from "@/fmg-components/nav-bar/nav-bar";
|
||||||
import funnelSubHeader from "@/fmg-components/funnel-sub-header/funnel-sub-header";
|
import funnelSubHeader from "@/fmg-components/funnel-sub-header/funnel-sub-header";
|
||||||
import loadingModal from "@/fmg-components/loading-modal/loading-modal.vue";
|
import loadingModal from "@/fmg-components/loading-modal/loading-modal.vue";
|
||||||
import { Form, defineRule } from "vee-validate";
|
import { Form, defineRule } from "vee-validate";
|
||||||
import datePicker from "@/digital-components/date-picker/date-picker";
|
import datePicker2 from "@/digital-components/date-picker/date-picker-2";
|
||||||
import locationAlerts from "@/layouts/schedule/location-alerts/location-alerts";
|
import locationAlerts from "@/layouts/schedule/location-alerts/location-alerts";
|
||||||
import timeSlotModalQuestion from "./time-slot-modal-question/time-slot-modal-question";
|
import timeSlotModalQuestion from "./time-slot-modal-question/time-slot-modal-question";
|
||||||
import textBlock from "@/digital-components/text-block/text-block";
|
import textBlock from "@/digital-components/text-block/text-block";
|
||||||
|
|
@ -213,7 +213,7 @@ export default {
|
||||||
preSelectedDate = null;
|
preSelectedDate = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
const datePickerInitialDataPromise = await datePicker.methods.loadInitialData({
|
const datePickerInitialDataPromise = await datePicker2.methods.loadInitialData({
|
||||||
// setup config options for date-picker
|
// setup config options for date-picker
|
||||||
selectableDatesSetting: "custom",
|
selectableDatesSetting: "custom",
|
||||||
initialViewRowsToShow: 5,
|
initialViewRowsToShow: 5,
|
||||||
|
|
@ -537,7 +537,7 @@ export default {
|
||||||
funnelSubHeader,
|
funnelSubHeader,
|
||||||
Form,
|
Form,
|
||||||
loadingModal,
|
loadingModal,
|
||||||
datePicker,
|
datePicker2,
|
||||||
locationAlerts,
|
locationAlerts,
|
||||||
timeSlotModalQuestion,
|
timeSlotModalQuestion,
|
||||||
textBlock,
|
textBlock,
|
||||||
|
|
|
||||||
|
|
@ -182,9 +182,6 @@ beforeEach(() => {
|
||||||
zipCode: "43235",
|
zipCode: "43235",
|
||||||
state: "OH",
|
state: "OH",
|
||||||
},
|
},
|
||||||
vehicle: {
|
|
||||||
isMobileStaticRecalibrationApplicable: true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
damage: {
|
damage: {
|
||||||
isRepair: false,
|
isRepair: false,
|
||||||
|
|
|
||||||
|
|
@ -192,8 +192,6 @@ export default {
|
||||||
isRecalibrationServiceableInshop: null,
|
isRecalibrationServiceableInshop: null,
|
||||||
isGlassServiceableMobile: null,
|
isGlassServiceableMobile: null,
|
||||||
isRecalibrationServiceableMobile: null,
|
isRecalibrationServiceableMobile: null,
|
||||||
isVehicleMobileStaticRecalibrationApplicable:
|
|
||||||
this.getIsVehicleMobileStaticRecalibrationApplicableFromStore(),
|
|
||||||
selectedAppointmentType: this.getSelectedAppointmentType(),
|
selectedAppointmentType: this.getSelectedAppointmentType(),
|
||||||
selectedProvider: this.getSelectedProvider(),
|
selectedProvider: this.getSelectedProvider(),
|
||||||
mobileFeePart: null,
|
mobileFeePart: null,
|
||||||
|
|
@ -324,9 +322,8 @@ export default {
|
||||||
isMobileStaticRecalibrationApplicable() {
|
isMobileStaticRecalibrationApplicable() {
|
||||||
return (
|
return (
|
||||||
this.displayMSR &&
|
this.displayMSR &&
|
||||||
this.isVehicleMobileStaticRecalibrationApplicable &&
|
|
||||||
this.mobileFeePart?.partNumber == partNumberStrings.MOBILE_STATIC_RECAL_FEE &&
|
this.mobileFeePart?.partNumber == partNumberStrings.MOBILE_STATIC_RECAL_FEE &&
|
||||||
(this.isInsurance ? this.mobileFeePart?.isInsurable : true)
|
(this.isInsurance && !this.isITAC ? this.mobileFeePart?.isInsurable : true)
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
displayMSR() {
|
displayMSR() {
|
||||||
|
|
@ -403,6 +400,9 @@ export default {
|
||||||
isInsurance() {
|
isInsurance() {
|
||||||
return store.getters.payment.isInsurance;
|
return store.getters.payment.isInsurance;
|
||||||
},
|
},
|
||||||
|
isITAC() {
|
||||||
|
return store.getters.order.policy.isItac;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
arePagePrerequisitesValid() {
|
arePagePrerequisitesValid() {
|
||||||
|
|
@ -515,9 +515,6 @@ export default {
|
||||||
getSelectedProvider() {
|
getSelectedProvider() {
|
||||||
return store.getters.order.serviceLocation.provider;
|
return store.getters.order.serviceLocation.provider;
|
||||||
},
|
},
|
||||||
getIsVehicleMobileStaticRecalibrationApplicableFromStore() {
|
|
||||||
return store.getters.order.vehicle.isMobileStaticRecalibrationApplicable;
|
|
||||||
},
|
|
||||||
resetMobileLocation() {
|
resetMobileLocation() {
|
||||||
this.streetAddress = "";
|
this.streetAddress = "";
|
||||||
this.apartmentNumberOrBusinessName = "";
|
this.apartmentNumberOrBusinessName = "";
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
href="#!"
|
href="#!"
|
||||||
@click-event="openModal">
|
@click-event="openModal">
|
||||||
<template v-slot:after-text v-if="editScreenReaderTextCmsWidgetName">
|
<template v-slot:after-text v-if="editScreenReaderTextCmsWidgetName">
|
||||||
<span class="sr-only"> {{ screenReaderOnlyText }} </span>
|
<span class="sr-only">{{ screenReaderOnlyText }}</span>
|
||||||
</template>
|
</template>
|
||||||
</textLink>
|
</textLink>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -8,12 +8,12 @@
|
||||||
:aria-label="buttonLabel"
|
:aria-label="buttonLabel"
|
||||||
class="button-content list-button-content d-flex flex-column justify-content-center py-3 px-4">
|
class="button-content list-button-content d-flex flex-column justify-content-center py-3 px-4">
|
||||||
<div class="row-one">
|
<div class="row-one">
|
||||||
<span class="m-0 button-label-copy text-truncate" :class="textPosition">{{
|
<span class="m-0 button-label-copy text-truncate" :class="textPosition">
|
||||||
buttonLabel
|
{{ buttonLabel }}
|
||||||
}}</span>
|
</span>
|
||||||
<span class="m-0 caption mx-1 text-nowrap" :class="textPosition">{{
|
<span class="m-0 caption mx-1 text-nowrap" :class="textPosition">
|
||||||
buttonLabelSubCopy
|
{{ buttonLabelSubCopy }}
|
||||||
}}</span>
|
</span>
|
||||||
<div
|
<div
|
||||||
v-if="displayAvailabilityIndicators"
|
v-if="displayAvailabilityIndicators"
|
||||||
class="availability-indicator rounded-pill text-nowrap"
|
class="availability-indicator rounded-pill text-nowrap"
|
||||||
|
|
@ -22,9 +22,9 @@
|
||||||
v-if="!isLoaderDisplayed"
|
v-if="!isLoaderDisplayed"
|
||||||
class="availability-badge"
|
class="availability-badge"
|
||||||
:class="availabilityRating == 'high' ? 'green' : 'orange'"></div>
|
:class="availabilityRating == 'high' ? 'green' : 'orange'"></div>
|
||||||
<span v-if="!isLoaderDisplayed" class="m-0 button-auxillary-copy">{{
|
<span v-if="!isLoaderDisplayed" class="m-0 button-auxillary-copy">
|
||||||
badgeText
|
{{ badgeText }}
|
||||||
}}</span>
|
</span>
|
||||||
<loader
|
<loader
|
||||||
v-if="isLoaderDisplayed"
|
v-if="isLoaderDisplayed"
|
||||||
:loaderPosition="left"
|
:loaderPosition="left"
|
||||||
|
|
|
||||||
|
|
@ -133,36 +133,36 @@ export default {
|
||||||
vm.setCmsContent(resultMap.cmsContent);
|
vm.setCmsContent(resultMap.cmsContent);
|
||||||
|
|
||||||
if (store.getters.externalParameterState?.isExternalParameter) {
|
if (store.getters.externalParameterState?.isExternalParameter) {
|
||||||
|
if (store.getters.externalParameterServiceZip.zipCode) {
|
||||||
|
await baseMixin.methods.dispatchStoreAction(
|
||||||
|
storeActions.SAVE_SERVICE_ZIP_CODE_INFO,
|
||||||
|
{
|
||||||
|
zipCode: store.getters.externalParameterServiceZip.zipCode,
|
||||||
|
state: null,
|
||||||
|
zipCodeCtu: null,
|
||||||
|
},
|
||||||
|
false
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (store.getters.externalParameterCustomer?.phoneNumber) {
|
||||||
|
await baseMixin.methods.dispatchStoreAction(
|
||||||
|
storeActions.SAVE_PHONE_NUMBER,
|
||||||
|
store.getters.externalParameterCustomer.phoneNumber,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
|
await baseMixin.methods.dispatchStoreAction(
|
||||||
|
storeActions.SAVE_IS_SMS_OPT_IN,
|
||||||
|
true,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const isValid = await baseMixin.methods.isFormValid(vm.$refs.theForm);
|
const isValid = await baseMixin.methods.isFormValid(vm.$refs.theForm);
|
||||||
if (isValid) {
|
if (isValid) {
|
||||||
vm.forwardButtonAction();
|
vm.forwardButtonAction();
|
||||||
} else {
|
} else {
|
||||||
if (store.getters.externalParameterServiceZip.zipCode) {
|
|
||||||
await baseMixin.methods.dispatchStoreAction(
|
|
||||||
storeActions.SAVE_SERVICE_ZIP_CODE_INFO,
|
|
||||||
{
|
|
||||||
zipCode: store.getters.externalParameterServiceZip.zipCode,
|
|
||||||
state: null,
|
|
||||||
zipCodeCtu: null,
|
|
||||||
},
|
|
||||||
false
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (store.getters.externalParameterCustomer?.phoneNumber) {
|
|
||||||
await baseMixin.methods.dispatchStoreAction(
|
|
||||||
storeActions.SAVE_PHONE_NUMBER,
|
|
||||||
store.getters.externalParameterCustomer.phoneNumber,
|
|
||||||
false
|
|
||||||
);
|
|
||||||
|
|
||||||
await baseMixin.methods.dispatchStoreAction(
|
|
||||||
storeActions.SAVE_IS_SMS_OPT_IN,
|
|
||||||
true,
|
|
||||||
false
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
baseMixin.methods.ResetExternalParamsAndHideModal();
|
baseMixin.methods.ResetExternalParamsAndHideModal();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -202,11 +202,17 @@ export default {
|
||||||
async forwardButtonAction() {
|
async forwardButtonAction() {
|
||||||
const zipCodeData = await this.getZipCodeData(this.serviceZipCode);
|
const zipCodeData = await this.getZipCodeData(this.serviceZipCode);
|
||||||
|
|
||||||
if (vinPagesMixin.methods.isPhoneNumber(this.emailOrSms)) {
|
// if no value due to field being optional, blank both phone and email address
|
||||||
const phone = this.emailOrSms.replace(/[()]/g, "");
|
if (!this.emailOrSms) {
|
||||||
await this.dispatchStoreAction(storeActions.SAVE_PHONE_NUMBER, phone, false);
|
await this.dispatchStoreAction(storeActions.SAVE_PHONE_NUMBER, "", false);
|
||||||
|
await this.dispatchStoreAction(storeActions.SAVE_EMAIL, "", false);
|
||||||
} else {
|
} else {
|
||||||
await this.dispatchStoreAction(storeActions.SAVE_EMAIL, this.emailOrSms, false);
|
if (vinPagesMixin.methods.isPhoneNumber(this.emailOrSms)) {
|
||||||
|
const phone = this.emailOrSms.replace(/[()]/g, "");
|
||||||
|
await this.dispatchStoreAction(storeActions.SAVE_PHONE_NUMBER, phone, false);
|
||||||
|
} else {
|
||||||
|
await this.dispatchStoreAction(storeActions.SAVE_EMAIL, this.emailOrSms, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await this.dispatchStoreAction(
|
await this.dispatchStoreAction(
|
||||||
|
|
|
||||||
|
|
@ -152,6 +152,20 @@ export default {
|
||||||
if (isValid) {
|
if (isValid) {
|
||||||
vm.forwardButtonAction();
|
vm.forwardButtonAction();
|
||||||
} else {
|
} else {
|
||||||
|
if (store.getters.externalParameterCustomer?.phoneNumber) {
|
||||||
|
await baseMixin.methods.dispatchStoreAction(
|
||||||
|
storeActions.SAVE_PHONE_NUMBER,
|
||||||
|
store.getters.externalParameterCustomer.phoneNumber,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
|
await baseMixin.methods.dispatchStoreAction(
|
||||||
|
storeActions.SAVE_IS_SMS_OPT_IN,
|
||||||
|
true,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
if (store.getters.externalParameterServiceZip.zipCode) {
|
if (store.getters.externalParameterServiceZip.zipCode) {
|
||||||
await baseMixin.methods.dispatchStoreAction(
|
await baseMixin.methods.dispatchStoreAction(
|
||||||
storeActions.SAVE_SERVICE_ZIP_CODE_INFO,
|
storeActions.SAVE_SERVICE_ZIP_CODE_INFO,
|
||||||
|
|
|
||||||
|
|
@ -121,7 +121,6 @@ export default {
|
||||||
modelOptions: [],
|
modelOptions: [],
|
||||||
styleOptions: [],
|
styleOptions: [],
|
||||||
displayNoServiceAlert: false,
|
displayNoServiceAlert: false,
|
||||||
isMobileStaticRecalibrationApplicable: this.getIsMobileStaticRecalibrationApplicable(),
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -444,8 +443,6 @@ export default {
|
||||||
this.imageVifNumber = result?.data.imageVifNumber;
|
this.imageVifNumber = result?.data.imageVifNumber;
|
||||||
this.imageVifColor = result?.data.imageVifColor;
|
this.imageVifColor = result?.data.imageVifColor;
|
||||||
this.displayNoServiceAlert = !result?.data.canSafeliteService;
|
this.displayNoServiceAlert = !result?.data.canSafeliteService;
|
||||||
this.isMobileStaticRecalibrationApplicable =
|
|
||||||
result?.data.isMobileStaticRecalibrationApplicable;
|
|
||||||
},
|
},
|
||||||
resetAlert() {
|
resetAlert() {
|
||||||
this.displayNoServiceAlert = false;
|
this.displayNoServiceAlert = false;
|
||||||
|
|
@ -464,8 +461,6 @@ export default {
|
||||||
imageUrl: this.imageUrl,
|
imageUrl: this.imageUrl,
|
||||||
imageVifNumber: this.imageVifNumber,
|
imageVifNumber: this.imageVifNumber,
|
||||||
imageVifColor: this.imageVifColor,
|
imageVifColor: this.imageVifColor,
|
||||||
isMobileStaticRecalibrationApplicable:
|
|
||||||
this.isMobileStaticRecalibrationApplicable,
|
|
||||||
},
|
},
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
@ -541,9 +536,6 @@ export default {
|
||||||
getImageVifColorfromStore() {
|
getImageVifColorfromStore() {
|
||||||
return store.getters.vehicle.imageVifColor;
|
return store.getters.vehicle.imageVifColor;
|
||||||
},
|
},
|
||||||
getIsMobileStaticRecalibrationApplicable() {
|
|
||||||
return store.getters.vehicle.isMobileStaticRecalibrationApplicable;
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
components: {
|
components: {
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,6 @@ const getDefaultState = () => {
|
||||||
registration: {
|
registration: {
|
||||||
licensePlate: null,
|
licensePlate: null,
|
||||||
},
|
},
|
||||||
isMobileStaticRecalibrationApplicable: false,
|
|
||||||
},
|
},
|
||||||
serviceLocation: {
|
serviceLocation: {
|
||||||
address: null,
|
address: null,
|
||||||
|
|
@ -226,10 +225,6 @@ export const mutations = {
|
||||||
updateVehicleVin(state, vin) {
|
updateVehicleVin(state, vin) {
|
||||||
state.order.vehicle.vin = vin;
|
state.order.vehicle.vin = vin;
|
||||||
},
|
},
|
||||||
updateIsMobileStaticRecalibrationApplicable(state, isMobileStaticRecalibrationApplicable) {
|
|
||||||
state.order.vehicle.isMobileStaticRecalibrationApplicable =
|
|
||||||
isMobileStaticRecalibrationApplicable;
|
|
||||||
},
|
|
||||||
updateIsRepair(state, isRepair) {
|
updateIsRepair(state, isRepair) {
|
||||||
state.order.damage.isRepair = isRepair;
|
state.order.damage.isRepair = isRepair;
|
||||||
},
|
},
|
||||||
|
|
@ -361,8 +356,6 @@ export const mutations = {
|
||||||
state.order.vehicle.imageUrl = vehicleInfo.imageUrl;
|
state.order.vehicle.imageUrl = vehicleInfo.imageUrl;
|
||||||
state.order.vehicle.imageVifNumber = vehicleInfo.imageVifNumber;
|
state.order.vehicle.imageVifNumber = vehicleInfo.imageVifNumber;
|
||||||
state.order.vehicle.imageColor = vehicleInfo.imageVifColor;
|
state.order.vehicle.imageColor = vehicleInfo.imageVifColor;
|
||||||
state.order.vehicle.isMobileStaticRecalibrationApplicable =
|
|
||||||
vehicleInfo.isMobileStaticRecalibrationApplicable;
|
|
||||||
},
|
},
|
||||||
updateRegistration(state, registrationInfo) {
|
updateRegistration(state, registrationInfo) {
|
||||||
state.order.vehicle.registration.licensePlate = registrationInfo?.licensePlate;
|
state.order.vehicle.registration.licensePlate = registrationInfo?.licensePlate;
|
||||||
|
|
@ -555,7 +548,6 @@ export const mutations = {
|
||||||
state.order.vehicle.imageUrl = null;
|
state.order.vehicle.imageUrl = null;
|
||||||
state.order.vehicle.imageVifNumber = null;
|
state.order.vehicle.imageVifNumber = null;
|
||||||
state.order.vehicle.imageColor = null;
|
state.order.vehicle.imageColor = null;
|
||||||
state.order.vehicle.isMobileStaticRecalibrationApplicable = false;
|
|
||||||
},
|
},
|
||||||
resetDamageState(state) {
|
resetDamageState(state) {
|
||||||
state.order.damage.isRepair = null;
|
state.order.damage.isRepair = null;
|
||||||
|
|
@ -1024,8 +1016,12 @@ export const getters = {
|
||||||
return email;
|
return email;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if we're here, then we have both email and phone so get the value from pageData to reflect what they entered on the page
|
// if we're here, then we have both email and phone so get the value from pageData to reflect what they entered on the page.
|
||||||
return state.applicationUser.pageData[fmgPageValues.EMAIL_SMS_PAGES]?.emailOrSmsValue;
|
// if they didn't enter anything on the page default to email
|
||||||
|
return (
|
||||||
|
state.applicationUser.pageData[fmgPageValues.EMAIL_SMS_PAGES]?.emailOrSmsValue ??
|
||||||
|
state.order.customer.emailAddress
|
||||||
|
);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -1701,8 +1697,6 @@ export const actions = {
|
||||||
const coverageStatus = coverageStatusEnum(order.payment?.insuranceCoverage?.coverageStatus);
|
const coverageStatus = coverageStatusEnum(order.payment?.insuranceCoverage?.coverageStatus);
|
||||||
const coverageType = coverageTypeEnum(order.payment?.insuranceCoverage?.coverageType);
|
const coverageType = coverageTypeEnum(order.payment?.insuranceCoverage?.coverageType);
|
||||||
const isItacOptimized = order.policy?.isItac ?? false;
|
const isItacOptimized = order.policy?.isItac ?? false;
|
||||||
const isMobileStaticRecalibrationApplicable =
|
|
||||||
order.vehicle?.isMobileStaticRecalibrationApplicable;
|
|
||||||
const zipCode =
|
const zipCode =
|
||||||
serviceZipCode ??
|
serviceZipCode ??
|
||||||
order.serviceLocation?.provider?.address?.zipCode ??
|
order.serviceLocation?.provider?.address?.zipCode ??
|
||||||
|
|
@ -1718,12 +1712,10 @@ export const actions = {
|
||||||
|
|
||||||
var endPoint = `${endpoints.GetMobileFeePart.url}/?serviceType=${serviceType}&facilityType=${facilityType}&parentAccountNumber=${parentAccountNumber}&billToAccountNumber=${billToAccountNumber}&providerNumber=${providerNumber}&isItacOptimized=${isItacOptimized}&zipCode=${zipCode}`;
|
var endPoint = `${endpoints.GetMobileFeePart.url}/?serviceType=${serviceType}&facilityType=${facilityType}&parentAccountNumber=${parentAccountNumber}&billToAccountNumber=${billToAccountNumber}&providerNumber=${providerNumber}&isItacOptimized=${isItacOptimized}&zipCode=${zipCode}`;
|
||||||
|
|
||||||
if (isMobileStaticRecalibrationApplicable) {
|
const recalPartNumber = getRecalPartNumber(order.lineItems?.glassParts[0]);
|
||||||
const recalPartNumber = getRecalPartNumber(order.lineItems?.glassParts[0]);
|
const carId = order.vehicle?.carId;
|
||||||
const carId = order.vehicle?.carId;
|
if (recalPartNumber && carId) {
|
||||||
if (recalPartNumber && carId) {
|
endPoint = `${endPoint}&partNumbers=${recalPartNumber}&carId=${carId}`;
|
||||||
endPoint = `${endPoint}&partNumbers=${recalPartNumber}&carId=${carId}`;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (coverageStatus) {
|
if (coverageStatus) {
|
||||||
|
|
@ -2326,18 +2318,7 @@ export const actions = {
|
||||||
// Vehicle
|
// Vehicle
|
||||||
saveVehicle(
|
saveVehicle(
|
||||||
context,
|
context,
|
||||||
{
|
{ year, make, model, style, carId, category, imageUrl, imageVifNumber, imageVifColor }
|
||||||
year,
|
|
||||||
make,
|
|
||||||
model,
|
|
||||||
style,
|
|
||||||
carId,
|
|
||||||
category,
|
|
||||||
imageUrl,
|
|
||||||
imageVifNumber,
|
|
||||||
imageVifColor,
|
|
||||||
isMobileStaticRecalibrationApplicable,
|
|
||||||
}
|
|
||||||
) {
|
) {
|
||||||
if (
|
if (
|
||||||
context.state.order.vehicle.year != year ||
|
context.state.order.vehicle.year != year ||
|
||||||
|
|
@ -2358,10 +2339,6 @@ export const actions = {
|
||||||
context.commit(storeMutations.UPDATE_VEHICLE_IMAGE_URL, imageUrl);
|
context.commit(storeMutations.UPDATE_VEHICLE_IMAGE_URL, imageUrl);
|
||||||
context.commit(storeMutations.UPDATE_VEHICLE_IMAGE_VIF_NUMBER, imageVifNumber);
|
context.commit(storeMutations.UPDATE_VEHICLE_IMAGE_VIF_NUMBER, imageVifNumber);
|
||||||
context.commit(storeMutations.UPDATE_VEHICLE_IMAGE_COLOR, imageVifColor);
|
context.commit(storeMutations.UPDATE_VEHICLE_IMAGE_COLOR, imageVifColor);
|
||||||
context.commit(
|
|
||||||
storeMutations.UPDATE_VEHICLE_MOBILE_STATIC_RECALIBRATION_APPLICABLE,
|
|
||||||
isMobileStaticRecalibrationApplicable
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,26 @@
|
||||||
<template>
|
<template>
|
||||||
<loadingModal v-if="useLoadingModal" notFullScreen ref="loadingModal" />
|
<loadingModal v-if="useLoadingModal" notFullScreen ref="loadingModal" />
|
||||||
<a v-if="linkType === 'navigation'" @click="handleClick" class="navigation-link" :href="href"
|
<a v-if="linkType === 'navigation'" @click="handleClick" class="navigation-link" :href="href">
|
||||||
>{{ text }}<slot name="after-text"></slot
|
{{ text }}
|
||||||
></a>
|
<slot name="after-text"></slot>
|
||||||
|
</a>
|
||||||
<a
|
<a
|
||||||
v-else-if="linkType === 'newWindowLink'"
|
v-else-if="linkType === 'newWindowLink'"
|
||||||
@click="handleClick"
|
@click="handleClick"
|
||||||
class="new-window-link"
|
class="new-window-link"
|
||||||
:href="href"
|
:href="href"
|
||||||
target="_blank"
|
target="_blank">
|
||||||
>{{ text }}<slot name="after-text"></slot
|
{{ text }}
|
||||||
></a>
|
<slot name="after-text"></slot>
|
||||||
<a v-else-if="linkType === 'textSmall'" @click="handleClick" class="small" :href="href"
|
</a>
|
||||||
>{{ text }}<slot name="after-text"></slot
|
<a v-else-if="linkType === 'textSmall'" @click="handleClick" class="small" :href="href">
|
||||||
></a>
|
{{ text }}
|
||||||
<a v-else-if="linkType === 'text'" @click="handleClick" :href="href"
|
<slot name="after-text"></slot>
|
||||||
>{{ text }}<slot name="after-text"></slot
|
</a>
|
||||||
></a>
|
<a v-else-if="linkType === 'text'" @click="handleClick" :href="href">
|
||||||
|
{{ text }}
|
||||||
|
<slot name="after-text"></slot>
|
||||||
|
</a>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue