Merge branch 'release/2024.11.21' into rlsmerge/2024.11.21-to-develop
This commit is contained in:
commit
b4e1572202
20 changed files with 53 additions and 323 deletions
|
|
@ -96,7 +96,7 @@
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
v-if="
|
v-if="
|
||||||
!showCoverageAsVerified ||
|
!showCoverageAsVerified || cartItem.name === 'Recycling' ||
|
||||||
(showCoverageAsVerified && !cartItem.isCoveredByInsurance)
|
(showCoverageAsVerified && !cartItem.isCoveredByInsurance)
|
||||||
"
|
"
|
||||||
>{{
|
>{{
|
||||||
|
|
|
||||||
|
|
@ -42,8 +42,8 @@
|
||||||
<div class="modal-body d-flex flex-column">
|
<div class="modal-body d-flex flex-column">
|
||||||
<textLink
|
<textLink
|
||||||
linkType="newWindowLink"
|
linkType="newWindowLink"
|
||||||
text="Terms of use"
|
text="Terms of service"
|
||||||
href="//www.safelite.com/terms-of-use"
|
href="//www.safelite.com/terms-of-service"
|
||||||
target="_blank" />
|
target="_blank" />
|
||||||
<textLink
|
<textLink
|
||||||
linkType="newWindowLink"
|
linkType="newWindowLink"
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6 col-xl-4">
|
<div class="col-md-6 col-xl-4 mt-4">
|
||||||
<vehicleBanner
|
|
||||||
cmsWidgetName="VehicleBannerWidget"
|
|
||||||
:displayGenericVehicleImage="false" />
|
|
||||||
|
|
||||||
<funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" />
|
<funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -56,7 +52,6 @@
|
||||||
<script>
|
<script>
|
||||||
// Components
|
// Components
|
||||||
import funnelHeader from "@/fmg-components/funnel-header/funnel-header";
|
import funnelHeader from "@/fmg-components/funnel-header/funnel-header";
|
||||||
import vehicleBanner from "@/fmg-components/vehicle-banner/vehicle-banner";
|
|
||||||
import alert from "@/ux-components/alert/alert";
|
import alert from "@/ux-components/alert/alert";
|
||||||
import questionChain from "@/digital-components/question-chain/question-chain";
|
import questionChain from "@/digital-components/question-chain/question-chain";
|
||||||
import funnelSubHeader from "@/fmg-components/funnel-sub-header/funnel-sub-header";
|
import funnelSubHeader from "@/fmg-components/funnel-sub-header/funnel-sub-header";
|
||||||
|
|
@ -99,7 +94,6 @@ export default {
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
funnelHeader,
|
funnelHeader,
|
||||||
vehicleBanner,
|
|
||||||
alert,
|
alert,
|
||||||
questionChain,
|
questionChain,
|
||||||
funnelSubHeader,
|
funnelSubHeader,
|
||||||
|
|
|
||||||
|
|
@ -1,134 +0,0 @@
|
||||||
import { shallowMount } from "@vue/test-utils";
|
|
||||||
import vehicleBanner from "./vehicle-banner";
|
|
||||||
import { getMountOptions } from "@/helpers/unit-test-helper.js";
|
|
||||||
import store from "@/store";
|
|
||||||
import { vehicleCategories } from "@/constants/vehicle-categories.js";
|
|
||||||
|
|
||||||
jest.mock(
|
|
||||||
"@/store",
|
|
||||||
() => {
|
|
||||||
return {};
|
|
||||||
},
|
|
||||||
{ virtual: true }
|
|
||||||
);
|
|
||||||
|
|
||||||
describe("vehicleBanner", () => {
|
|
||||||
test("renders the blurrycar image", async () => {
|
|
||||||
// Arrange
|
|
||||||
const { wrapper } = setupMocks({
|
|
||||||
displayGenericVehicleImageProp: true,
|
|
||||||
imageUrlValue: "NULL",
|
|
||||||
displayUnmatchedVehicleIconProp: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
expect(wrapper.vm.vehicleImageToDisplay).toEqual(wrapper.vm.genericVehicleImage);
|
|
||||||
expect(wrapper.find("img").attributes("class")).toContain("vehicle-image");
|
|
||||||
wrapper.unmount();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("vehicleBanner", () => {
|
|
||||||
test("renders expected vehicle image", async () => {
|
|
||||||
// Arrange
|
|
||||||
const { wrapper } = setupMocks({
|
|
||||||
displayGenericVehicleImageProp: false,
|
|
||||||
imageUrlValue: "url_to_vehicle_image",
|
|
||||||
});
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
expect(wrapper.vm.vehicleImageToDisplay).toEqual("url_to_vehicle_image");
|
|
||||||
expect(wrapper.find("img").attributes("class")).toContain("vehicle-image");
|
|
||||||
wrapper.unmount();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("vehicleBanner", () => {
|
|
||||||
test("should render car icon when imageUrl is null and category is default", async () => {
|
|
||||||
// Arrange
|
|
||||||
const { wrapper } = setupMocks({
|
|
||||||
displayGenericVehicleImageProp: false,
|
|
||||||
imageUrlValue: "NULL",
|
|
||||||
});
|
|
||||||
|
|
||||||
var iconUrl = wrapper.vm.vehicleImageToDisplay;
|
|
||||||
|
|
||||||
// Assert
|
|
||||||
expect(iconUrl).toEqual(undefined);
|
|
||||||
wrapper.unmount();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
const params = [
|
|
||||||
["CAR", "car_icon_url"],
|
|
||||||
["TRUCK", "truck_icon_url"],
|
|
||||||
["VAN", "van_icon_url"],
|
|
||||||
["COMMERCIAL VAN", "commercial_van_icon_url"],
|
|
||||||
["SUV", "suv_icon_url"],
|
|
||||||
["OTHER", "car_icon_url"],
|
|
||||||
];
|
|
||||||
|
|
||||||
describe("vehicleBanner", () => {
|
|
||||||
test.each(params)(
|
|
||||||
"renders an icon instead of an image for %s and %s",
|
|
||||||
async (category, expectedIcon) => {
|
|
||||||
// Arrange
|
|
||||||
const { wrapper, cmsContent } = setupMocks({
|
|
||||||
displayGenericVehicleImageProp: false,
|
|
||||||
imageUrlValue: expectedIcon,
|
|
||||||
categoryValue: category,
|
|
||||||
});
|
|
||||||
//Act
|
|
||||||
var vehicleIcon = wrapper.vm.getUnmatchedVehicleIcon();
|
|
||||||
// Assert
|
|
||||||
expect(store.getters.vehicle.category).toEqual(category);
|
|
||||||
expect(wrapper.find("img").attributes("class")).toContain("vehicle-image");
|
|
||||||
wrapper.unmount();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
function setupMocks({
|
|
||||||
displayGenericVehicleImageProp,
|
|
||||||
displayUnmatchedVehicleIconProp,
|
|
||||||
imageUrlValue,
|
|
||||||
categoryValue = "CAR",
|
|
||||||
}) {
|
|
||||||
const mockGetCmsContent = jest.fn();
|
|
||||||
mockGetCmsContent((cmsWidget, field) => {
|
|
||||||
return field;
|
|
||||||
});
|
|
||||||
const mockMixin = {
|
|
||||||
methods: {
|
|
||||||
getCmsContent: mockGetCmsContent,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
//Mock store
|
|
||||||
store.dispatch = jest.fn(() => {});
|
|
||||||
store.getters = { vehicle: { category: categoryValue, imageUrl: imageUrlValue } };
|
|
||||||
const mountOptions = getMountOptions({
|
|
||||||
store: {
|
|
||||||
dispatch: store.dispatch,
|
|
||||||
getters: store.getters,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
//Mock props
|
|
||||||
mountOptions.propsData = {
|
|
||||||
displayGenericVehicleImage: displayGenericVehicleImageProp,
|
|
||||||
displayUnmatchedVehicleIconProp: displayUnmatchedVehicleIconProp,
|
|
||||||
};
|
|
||||||
mountOptions.mixins = [mockMixin];
|
|
||||||
const wrapper = shallowMount(vehicleBanner, mountOptions);
|
|
||||||
|
|
||||||
//Mock CMS content
|
|
||||||
const cmsContent = {
|
|
||||||
GenericVehicleImage: "image_url",
|
|
||||||
CarUnmatchedVehicleIcon: "car_icon_url",
|
|
||||||
TruckUnmatchedVehicleIcon: "truck_icon_url",
|
|
||||||
VanUnmatchedVehicleIcon: "van_icon_url",
|
|
||||||
CommercialVanUnmatchedVehicleIcon: "commercial_van_icon_url",
|
|
||||||
SuvUnmatchedVehicleIcon: "suv_icon_url",
|
|
||||||
};
|
|
||||||
return { wrapper, cmsContent };
|
|
||||||
}
|
|
||||||
|
|
@ -1,98 +0,0 @@
|
||||||
<template>
|
|
||||||
<div class="vehicle_banner mb-4 text-center">
|
|
||||||
<img class="vehicle-image img-fluid" :src="vehicleImageToDisplay" alt="" />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
name: "vehicle-banner",
|
|
||||||
props: {
|
|
||||||
displayGenericVehicleImage: {
|
|
||||||
type: Boolean,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
cmsWidgetName: String,
|
|
||||||
displayVehicleImage: {
|
|
||||||
type: String,
|
|
||||||
required: false,
|
|
||||||
default: null,
|
|
||||||
},
|
|
||||||
displayUnmatchedVehicleIcon: {
|
|
||||||
type: Boolean,
|
|
||||||
required: false,
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
vehicleCategory: {
|
|
||||||
type: String,
|
|
||||||
required: false,
|
|
||||||
default: null,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
vehicleImageToDisplay() {
|
|
||||||
if (this.displayVehicleImage !== null) {
|
|
||||||
return this.displayVehicleImage;
|
|
||||||
}
|
|
||||||
if (this.displayGenericVehicleImage) {
|
|
||||||
return this.genericVehicleImage;
|
|
||||||
}
|
|
||||||
if (
|
|
||||||
this.$store.getters.vehicle.imageUrl === null ||
|
|
||||||
this.$store.getters.vehicle.imageUrl === "NULL" ||
|
|
||||||
this.displayUnmatchedVehicleIcon
|
|
||||||
) {
|
|
||||||
return this.getUnmatchedVehicleIcon();
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.$store.getters.vehicle.imageUrl;
|
|
||||||
},
|
|
||||||
genericVehicleImage() {
|
|
||||||
return this.getCmsContent(this.cmsWidgetName, "GenericVehicleImage");
|
|
||||||
},
|
|
||||||
carUnmatchedVehicleIcon() {
|
|
||||||
return this.getCmsContent(this.cmsWidgetName, "CarUnmatchedVehicleIcon");
|
|
||||||
},
|
|
||||||
truckUnmatchedVehicleIcon() {
|
|
||||||
return this.getCmsContent(this.cmsWidgetName, "TruckUnmatchedVehicleIcon");
|
|
||||||
},
|
|
||||||
vanUnmatchedVehicleIcon() {
|
|
||||||
return this.getCmsContent(this.cmsWidgetName, "VanUnmatchedVehicleIcon");
|
|
||||||
},
|
|
||||||
commercialUnmatchedVehicleIcon() {
|
|
||||||
return this.getCmsContent(this.cmsWidgetName, "CommercialVanUnmatchedVehicleIcon");
|
|
||||||
},
|
|
||||||
suvUnmatchedVehicleIcon() {
|
|
||||||
return this.getCmsContent(this.cmsWidgetName, "SuvUnmatchedVehicleIcon");
|
|
||||||
},
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
getUnmatchedVehicleIcon() {
|
|
||||||
const category = this.vehicleCategory ?? this.$store.getters.vehicle.category;
|
|
||||||
switch (category) {
|
|
||||||
case this.vehicleCategories.CAR:
|
|
||||||
return this.carUnmatchedVehicleIcon;
|
|
||||||
case this.vehicleCategories.SUV:
|
|
||||||
return this.suvUnmatchedVehicleIcon;
|
|
||||||
case this.vehicleCategories.TRUCK:
|
|
||||||
return this.truckUnmatchedVehicleIcon;
|
|
||||||
case this.vehicleCategories.VAN:
|
|
||||||
return this.vanUnmatchedVehicleIcon;
|
|
||||||
case this.vehicleCategories.COMMERCIALVAN:
|
|
||||||
return this.commercialUnmatchedVehicleIcon;
|
|
||||||
default:
|
|
||||||
return this.carUnmatchedVehicleIcon;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.vehicle-image {
|
|
||||||
max-width: 290px;
|
|
||||||
object-fit: cover;
|
|
||||||
width: 100%;
|
|
||||||
height: 132px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
@ -106,7 +106,11 @@ export async function getImplicitNavigation(toRoute) {
|
||||||
Used to navigate to the heritage funnel with the correct query string and url.
|
Used to navigate to the heritage funnel with the correct query string and url.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export async function navigateToHeritageFunnel({ shouldSaveSession, pageNameToLog }) {
|
export async function navigateToHeritageFunnel({
|
||||||
|
shouldSaveSession,
|
||||||
|
pageNameToLog,
|
||||||
|
cleanupBeforeNavigateExternalMethod = null,
|
||||||
|
}) {
|
||||||
const log = getQuerystringParameter(queryStrings.LOG);
|
const log = getQuerystringParameter(queryStrings.LOG);
|
||||||
if (eval(log)) {
|
if (eval(log)) {
|
||||||
console.log("------------- Navigate to heritage start -----------------");
|
console.log("------------- Navigate to heritage start -----------------");
|
||||||
|
|
@ -143,6 +147,8 @@ export async function navigateToHeritageFunnel({ shouldSaveSession, pageNameToLo
|
||||||
) {
|
) {
|
||||||
heritageParms["forceEndToEndInsurance"] = true;
|
heritageParms["forceEndToEndInsurance"] = true;
|
||||||
}
|
}
|
||||||
|
//Cleanup Before Navigate to External
|
||||||
|
cleanupBeforeNavigateExternalMethod?.();
|
||||||
|
|
||||||
// clear the heritage session that may still exist after an order was already submitted
|
// clear the heritage session that may still exist after an order was already submitted
|
||||||
if (window.sessionStorage.getItem("createNewSessionForHeritage") !== null) {
|
if (window.sessionStorage.getItem("createNewSessionForHeritage") !== null) {
|
||||||
|
|
|
||||||
|
|
@ -12,11 +12,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6 col-xl-4">
|
<div class="col-md-6 col-xl-4 mt-4">
|
||||||
<vehicleBanner
|
|
||||||
cmsWidgetName="VehicleBannerWidget"
|
|
||||||
ref="vehicleBanner"
|
|
||||||
:displayGenericVehicleImage="false" />
|
|
||||||
|
|
||||||
<funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" ref="funnelSubHeader" />
|
<funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" ref="funnelSubHeader" />
|
||||||
|
|
||||||
|
|
@ -103,7 +99,6 @@
|
||||||
// Components
|
// Components
|
||||||
import funnelHeader from "@/fmg-components/funnel-header/funnel-header";
|
import funnelHeader from "@/fmg-components/funnel-header/funnel-header";
|
||||||
import navbar from "@/fmg-components/nav-bar/nav-bar";
|
import navbar from "@/fmg-components/nav-bar/nav-bar";
|
||||||
import vehicleBanner from "@/fmg-components/vehicle-banner/vehicle-banner";
|
|
||||||
import funnelSubHeader from "@/fmg-components/funnel-sub-header/funnel-sub-header";
|
import funnelSubHeader from "@/fmg-components/funnel-sub-header/funnel-sub-header";
|
||||||
import customerQuestions from "@/layouts/address-lookup/customer-questions/customer-questions";
|
import customerQuestions from "@/layouts/address-lookup/customer-questions/customer-questions";
|
||||||
import alert from "@/ux-components/alert/alert";
|
import alert from "@/ux-components/alert/alert";
|
||||||
|
|
@ -480,7 +475,6 @@ export default {
|
||||||
components: {
|
components: {
|
||||||
funnelHeader,
|
funnelHeader,
|
||||||
navbar,
|
navbar,
|
||||||
vehicleBanner,
|
|
||||||
funnelSubHeader,
|
funnelSubHeader,
|
||||||
customerQuestions,
|
customerQuestions,
|
||||||
textboxQuestion,
|
textboxQuestion,
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6 col-xl-4">
|
<div class="col-md-6 col-xl-4 mt-4">
|
||||||
<vehicleBanner
|
|
||||||
cmsWidgetName="VehicleBannerWidget"
|
|
||||||
:displayGenericVehicleImage="false" />
|
|
||||||
|
|
||||||
<funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" />
|
<funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" />
|
||||||
|
|
||||||
|
|
@ -54,7 +51,6 @@
|
||||||
// Components
|
// Components
|
||||||
import funnelHeader from "@/fmg-components/funnel-header/funnel-header";
|
import funnelHeader from "@/fmg-components/funnel-header/funnel-header";
|
||||||
import navbar from "@/fmg-components/nav-bar/nav-bar";
|
import navbar from "@/fmg-components/nav-bar/nav-bar";
|
||||||
import vehicleBanner from "@/fmg-components/vehicle-banner/vehicle-banner";
|
|
||||||
import funnelSubHeader from "@/fmg-components/funnel-sub-header/funnel-sub-header";
|
import funnelSubHeader from "@/fmg-components/funnel-sub-header/funnel-sub-header";
|
||||||
import alert from "@/ux-components/alert/alert";
|
import alert from "@/ux-components/alert/alert";
|
||||||
import addressVehiclesQuestion from "@/layouts/address-vehicles/address-vehicles-question/address-vehicles-question";
|
import addressVehiclesQuestion from "@/layouts/address-vehicles/address-vehicles-question/address-vehicles-question";
|
||||||
|
|
@ -243,7 +239,6 @@ export default {
|
||||||
components: {
|
components: {
|
||||||
Form,
|
Form,
|
||||||
funnelHeader,
|
funnelHeader,
|
||||||
vehicleBanner,
|
|
||||||
funnelSubHeader,
|
funnelSubHeader,
|
||||||
alert,
|
alert,
|
||||||
navbar,
|
navbar,
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6 col-xl-4">
|
<div class="col-md-6 col-xl-4 mt-4">
|
||||||
<vehicleBanner
|
|
||||||
cmsWidgetName="VehicleBannerWidget"
|
|
||||||
:displayGenericVehicleImage="false" />
|
|
||||||
|
|
||||||
<funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" />
|
<funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" />
|
||||||
|
|
||||||
|
|
@ -30,7 +27,6 @@
|
||||||
// Components
|
// Components
|
||||||
import funnelHeader from "@/fmg-components/funnel-header/funnel-header";
|
import funnelHeader from "@/fmg-components/funnel-header/funnel-header";
|
||||||
import navbar from "@/fmg-components/nav-bar/nav-bar";
|
import navbar from "@/fmg-components/nav-bar/nav-bar";
|
||||||
import vehicleBanner from "@/fmg-components/vehicle-banner/vehicle-banner";
|
|
||||||
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";
|
||||||
|
|
||||||
|
|
@ -71,7 +67,6 @@ export default {
|
||||||
components: {
|
components: {
|
||||||
funnelHeader,
|
funnelHeader,
|
||||||
navbar,
|
navbar,
|
||||||
vehicleBanner,
|
|
||||||
funnelSubHeader,
|
funnelSubHeader,
|
||||||
loadingModal,
|
loadingModal,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -512,7 +512,7 @@ export default {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding: 1rem 0 1.5rem 0;
|
padding: 1.5rem 0;
|
||||||
|
|
||||||
p {
|
p {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6 col-xl-4">
|
<div class="col-md-6 col-xl-4 mt-4">
|
||||||
<vehicleBanner cmsWidgetName="VehicleBannerWidget" />
|
|
||||||
<funnelSubHeader class="pb-4" cmsWidgetName="FunnelSubHeaderWidget" />
|
<funnelSubHeader class="pb-4" cmsWidgetName="FunnelSubHeaderWidget" />
|
||||||
<div>
|
<div>
|
||||||
<div class="vinlookupquestion" v-html="this.VinLookupQuestionText"></div>
|
<div class="vinlookupquestion" v-html="this.VinLookupQuestionText"></div>
|
||||||
|
|
@ -40,7 +39,6 @@
|
||||||
// Components
|
// Components
|
||||||
import funnelHeader from "@/fmg-components/funnel-header/funnel-header";
|
import funnelHeader from "@/fmg-components/funnel-header/funnel-header";
|
||||||
import navbar from "@/fmg-components/nav-bar/nav-bar";
|
import navbar from "@/fmg-components/nav-bar/nav-bar";
|
||||||
import vehicleBanner from "@/fmg-components/vehicle-banner/vehicle-banner";
|
|
||||||
import funnelSubHeader from "@/fmg-components/funnel-sub-header/funnel-sub-header";
|
import funnelSubHeader from "@/fmg-components/funnel-sub-header/funnel-sub-header";
|
||||||
import buttonQuestion from "@/digital-components/button-question/button-question";
|
import buttonQuestion from "@/digital-components/button-question/button-question";
|
||||||
import loadingModal from "@/fmg-components/loading-modal/loading-modal.vue";
|
import loadingModal from "@/fmg-components/loading-modal/loading-modal.vue";
|
||||||
|
|
@ -218,7 +216,6 @@ export default {
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
funnelHeader,
|
funnelHeader,
|
||||||
vehicleBanner,
|
|
||||||
funnelSubHeader,
|
funnelSubHeader,
|
||||||
navbar,
|
navbar,
|
||||||
buttonQuestion,
|
buttonQuestion,
|
||||||
|
|
|
||||||
|
|
@ -74,10 +74,6 @@ export default {
|
||||||
|
|
||||||
// Call the "next" function to complete the transition to this page.
|
// Call the "next" function to complete the transition to this page.
|
||||||
next((vm) => {
|
next((vm) => {
|
||||||
//Reload page if serve from bfcache.
|
|
||||||
if (performance.getEntriesByType("navigation")[0].type === "back_forward") {
|
|
||||||
vm.handlePageShow();
|
|
||||||
}
|
|
||||||
vm.setCmsContent(resultMap.cmsContent);
|
vm.setCmsContent(resultMap.cmsContent);
|
||||||
vm.originalList = resultMap.insuranceCompanyList;
|
vm.originalList = resultMap.insuranceCompanyList;
|
||||||
if (store.getters.externalParameterState?.isExternalParameter) {
|
if (store.getters.externalParameterState?.isExternalParameter) {
|
||||||
|
|
@ -97,9 +93,6 @@ export default {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handlePageShow() {
|
|
||||||
window.location.reload();
|
|
||||||
},
|
|
||||||
isCashParentAccountNumber() {
|
isCashParentAccountNumber() {
|
||||||
return (
|
return (
|
||||||
applicationConfig.CASH_PARENT_ACCOUNT_NUMBER.toString() ===
|
applicationConfig.CASH_PARENT_ACCOUNT_NUMBER.toString() ===
|
||||||
|
|
@ -145,8 +138,12 @@ export default {
|
||||||
navigateToHeritageFunnel({
|
navigateToHeritageFunnel({
|
||||||
shouldSaveSession: true,
|
shouldSaveSession: true,
|
||||||
pageNameToLog: "insurance-company",
|
pageNameToLog: "insurance-company",
|
||||||
|
cleanupBeforeNavigateExternalMethod: this.reloadPage,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
reloadPage(){
|
||||||
|
window.location.reload();
|
||||||
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
funnelHeader,
|
funnelHeader,
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6 col-xl-4">
|
<div class="col-md-6 col-xl-4 mt-4">
|
||||||
<vehicleBanner
|
|
||||||
cmsWidgetName="VehicleBannerWidget"
|
|
||||||
:displayGenericVehicleImage="false" />
|
|
||||||
|
|
||||||
<funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" />
|
<funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" />
|
||||||
|
|
||||||
|
|
@ -97,7 +94,6 @@
|
||||||
// Components
|
// Components
|
||||||
import funnelHeader from "@/fmg-components/funnel-header/funnel-header";
|
import funnelHeader from "@/fmg-components/funnel-header/funnel-header";
|
||||||
import navbar from "@/fmg-components/nav-bar/nav-bar";
|
import navbar from "@/fmg-components/nav-bar/nav-bar";
|
||||||
import vehicleBanner from "@/fmg-components/vehicle-banner/vehicle-banner";
|
|
||||||
import funnelSubHeader from "@/fmg-components/funnel-sub-header/funnel-sub-header";
|
import funnelSubHeader from "@/fmg-components/funnel-sub-header/funnel-sub-header";
|
||||||
import alert from "@/ux-components/alert/alert";
|
import alert from "@/ux-components/alert/alert";
|
||||||
import textboxQuestion from "@/digital-components/textbox-question/textbox-question";
|
import textboxQuestion from "@/digital-components/textbox-question/textbox-question";
|
||||||
|
|
@ -403,7 +399,6 @@ export default {
|
||||||
components: {
|
components: {
|
||||||
funnelHeader,
|
funnelHeader,
|
||||||
navbar,
|
navbar,
|
||||||
vehicleBanner,
|
|
||||||
funnelSubHeader,
|
funnelSubHeader,
|
||||||
textboxQuestion,
|
textboxQuestion,
|
||||||
alert,
|
alert,
|
||||||
|
|
|
||||||
|
|
@ -8,12 +8,9 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6 col-xl-4">
|
<div class="col-md-6 col-xl-4 mt-4">
|
||||||
<vehicleBanner
|
|
||||||
cmsWidgetName="VehicleBannerWidget"
|
|
||||||
:displayGenericVehicleImage="false" />
|
|
||||||
|
|
||||||
<funnelSubHeader class="mb-5 mt-4" cmsWidgetName="FunnelSubHeaderWidget" />
|
<funnelSubHeader class="mb-5" cmsWidgetName="FunnelSubHeaderWidget" />
|
||||||
|
|
||||||
<hr class="my-0" />
|
<hr class="my-0" />
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -139,8 +139,8 @@
|
||||||
type="hidden"
|
type="hidden"
|
||||||
name="sgtermsofusedisplaytext"
|
name="sgtermsofusedisplaytext"
|
||||||
value="By selecting submit, I agree to Safelite's" />
|
value="By selecting submit, I agree to Safelite's" />
|
||||||
<input type="hidden" name="sgtermsofuseurl" value="http://www.safelite.com/terms-of-use/" />
|
<input type="hidden" name="sgtermsofuseurl" value="http://www.safelite.com/terms-of-service/" />
|
||||||
<input type="hidden" name="sgtermsofuselinkdisplaytext" value="terms of use" />
|
<input type="hidden" name="sgtermsofuselinkdisplaytext" value="Terms of service" />
|
||||||
<input type="hidden" name="sgtermsofcancelrefunddisplaytext" value="and" />
|
<input type="hidden" name="sgtermsofcancelrefunddisplaytext" value="and" />
|
||||||
<input
|
<input
|
||||||
type="hidden"
|
type="hidden"
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6 col-xl-4">
|
<div class="col-md-6 col-xl-4 mt-4">
|
||||||
<funnelSubHeader class="mb-5" cmsWidgetName="FunnelSubHeaderWidget" />
|
<funnelSubHeader class="mb-5" cmsWidgetName="FunnelSubHeaderWidget" />
|
||||||
<cashOrInsuranceQuestion
|
<cashOrInsuranceQuestion
|
||||||
ref="cashOrInsurance"
|
ref="cashOrInsurance"
|
||||||
|
|
@ -62,12 +62,6 @@
|
||||||
:useDefaultCashParentAccount="true"
|
:useDefaultCashParentAccount="true"
|
||||||
modalWidgetName="PromoModalWidget" />
|
modalWidgetName="PromoModalWidget" />
|
||||||
|
|
||||||
<textBlock
|
|
||||||
cmsWidgetName="quoteDisclaimer"
|
|
||||||
justifyText="center"
|
|
||||||
typeStyle="caption"
|
|
||||||
class="mt-6 quote-disclaimer" />
|
|
||||||
|
|
||||||
<contentGroupModal ref="RainDefenseModal" cmsWidgetName="RainDefenseModal" />
|
<contentGroupModal ref="RainDefenseModal" cmsWidgetName="RainDefenseModal" />
|
||||||
<contentGroupModal ref="FrontWiperModal" cmsWidgetName="FrontWiperModal" />
|
<contentGroupModal ref="FrontWiperModal" cmsWidgetName="FrontWiperModal" />
|
||||||
<contentGroupModal ref="RearWiperModal" cmsWidgetName="RearWiperModal" />
|
<contentGroupModal ref="RearWiperModal" cmsWidgetName="RearWiperModal" />
|
||||||
|
|
@ -79,6 +73,12 @@
|
||||||
:isBackButtonHidden="shouldHideBackButton"
|
:isBackButtonHidden="shouldHideBackButton"
|
||||||
@back-clicked="backButtonAction"
|
@back-clicked="backButtonAction"
|
||||||
@ForwardClicked="forwardButtonAction" />
|
@ForwardClicked="forwardButtonAction" />
|
||||||
|
|
||||||
|
<textBlock
|
||||||
|
cmsWidgetName="quoteDisclaimer"
|
||||||
|
justifyText="center"
|
||||||
|
typeStyle="caption"
|
||||||
|
class="mb-5 quote-disclaimer" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6 col-xl-4">
|
<div class="col-md-6 col-xl-4 mt-4">
|
||||||
<funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" class="mt-2" />
|
<funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" />
|
||||||
|
|
||||||
<serviceZipModalQuestion
|
<serviceZipModalQuestion
|
||||||
editScreenReaderTextCmsWidgetName="ScreenReaderZipEditWidget"
|
editScreenReaderTextCmsWidgetName="ScreenReaderZipEditWidget"
|
||||||
|
|
@ -389,14 +389,13 @@ export default {
|
||||||
) {
|
) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
console.log(
|
// prettier-ignore
|
||||||
"ins: servce-location invalid prereq:" +
|
{
|
||||||
store.getters.payment.parentAccountNumber +
|
console.log(new Date() + "Insurance: servce-location invalid prereqs");
|
||||||
":" +
|
console.log(new Date() + "store.getters.payment.parentAccountNumber:" + store.getters.payment.parentAccountNumber);
|
||||||
store.getters.order.policy.policyNumber +
|
console.log(new Date() + "store.getters.order.policy.policyNumber:" + store.getters.order.policy.policyNumber);
|
||||||
":" +
|
console.log(new Date() + "store.getters.order.serviceLocation.zipCode:" + store.getters.order.serviceLocation.zipCode);
|
||||||
store.getters.order.serviceLocation.zipCode
|
}
|
||||||
);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -406,12 +405,12 @@ export default {
|
||||||
) {
|
) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
console.log(
|
// prettier-ignore
|
||||||
"cash: servce-location invalid prereq:" +
|
{
|
||||||
JSON.stringify(store.getters.lineItems.supportingItems) +
|
console.log(new Date() + "Cash: servce-location invalid prereqs");
|
||||||
":" +
|
console.log(new Date() + "store.getters.lineItems.supportingItems:" + JSON.stringify(store.getters.lineItems.supportingItems));
|
||||||
store.getters.order.serviceLocation.zipCode
|
console.log(new Date() + "store.getters.order.serviceLocation.zipCode:" + store.getters.order.serviceLocation.zipCode);
|
||||||
);
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6 col-xl-4">
|
<div class="col-md-6 col-xl-4 mt-4">
|
||||||
<vehicleBanner cmsWidgetName="VehicleBannerWidget" />
|
|
||||||
<funnelSubHeader class="pb-4" cmsWidgetName="FunnelSubHeaderWidget" />
|
<funnelSubHeader class="pb-4" cmsWidgetName="FunnelSubHeaderWidget" />
|
||||||
<div>
|
<div>
|
||||||
<textboxQuestion
|
<textboxQuestion
|
||||||
|
|
@ -65,7 +64,6 @@
|
||||||
// Components
|
// Components
|
||||||
import funnelHeader from "@/fmg-components/funnel-header/funnel-header";
|
import funnelHeader from "@/fmg-components/funnel-header/funnel-header";
|
||||||
import navbar from "@/fmg-components/nav-bar/nav-bar";
|
import navbar from "@/fmg-components/nav-bar/nav-bar";
|
||||||
import vehicleBanner from "@/fmg-components/vehicle-banner/vehicle-banner";
|
|
||||||
import funnelSubHeader from "@/fmg-components/funnel-sub-header/funnel-sub-header";
|
import funnelSubHeader from "@/fmg-components/funnel-sub-header/funnel-sub-header";
|
||||||
import buttonQuestion from "@/digital-components/button-question/button-question";
|
import buttonQuestion from "@/digital-components/button-question/button-question";
|
||||||
import alert from "@/ux-components/alert/alert";
|
import alert from "@/ux-components/alert/alert";
|
||||||
|
|
@ -278,7 +276,6 @@ export default {
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
funnelHeader,
|
funnelHeader,
|
||||||
vehicleBanner,
|
|
||||||
funnelSubHeader,
|
funnelSubHeader,
|
||||||
navbar,
|
navbar,
|
||||||
Form,
|
Form,
|
||||||
|
|
|
||||||
|
|
@ -9,11 +9,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-md-6 col-xl-4">
|
<div class="col-md-6 col-xl-4 mt-4">
|
||||||
<vehicleBanner
|
|
||||||
ref="vehicleBanner"
|
|
||||||
cmsWidgetName="VehicleBannerWidget"
|
|
||||||
:displayGenericVehicleImage="false" />
|
|
||||||
<funnelSubHeader
|
<funnelSubHeader
|
||||||
ref="funnelSubHeader"
|
ref="funnelSubHeader"
|
||||||
cmsWidgetName="FunnelSubHeaderWidget" />
|
cmsWidgetName="FunnelSubHeaderWidget" />
|
||||||
|
|
@ -60,7 +56,6 @@
|
||||||
// Components
|
// Components
|
||||||
import glassPartQuestion from "@/layouts/vehicle-parts/glass-part-question/glass-part-question";
|
import glassPartQuestion from "@/layouts/vehicle-parts/glass-part-question/glass-part-question";
|
||||||
import funnelHeader from "@/fmg-components/funnel-header/funnel-header";
|
import funnelHeader from "@/fmg-components/funnel-header/funnel-header";
|
||||||
import vehicleBanner from "@/fmg-components/vehicle-banner/vehicle-banner";
|
|
||||||
import funnelSubHeader from "@/fmg-components/funnel-sub-header/funnel-sub-header";
|
import funnelSubHeader from "@/fmg-components/funnel-sub-header/funnel-sub-header";
|
||||||
import navbar from "@/fmg-components/nav-bar/nav-bar";
|
import navbar from "@/fmg-components/nav-bar/nav-bar";
|
||||||
import alert from "@/ux-components/alert/alert";
|
import alert from "@/ux-components/alert/alert";
|
||||||
|
|
@ -238,7 +233,6 @@ export default {
|
||||||
Form,
|
Form,
|
||||||
glassPartQuestion,
|
glassPartQuestion,
|
||||||
funnelHeader,
|
funnelHeader,
|
||||||
vehicleBanner,
|
|
||||||
funnelSubHeader,
|
funnelSubHeader,
|
||||||
navbar,
|
navbar,
|
||||||
alert,
|
alert,
|
||||||
|
|
|
||||||
|
|
@ -113,8 +113,10 @@ const routes = [
|
||||||
to.query.fmgPage
|
to.query.fmgPage
|
||||||
);
|
);
|
||||||
|
|
||||||
//Update external parameter state
|
//Update external parameter state but not when returning from heritage
|
||||||
updateExternalParameterState();
|
if (!to.query.fmgPage?.startsWith("service-location")) {
|
||||||
|
updateExternalParameterState();
|
||||||
|
}
|
||||||
|
|
||||||
// clear part related state because heritage selected a new vehicle
|
// clear part related state because heritage selected a new vehicle
|
||||||
if (
|
if (
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue