Merge pull request #2241 from Safelite/rlsmerge/2025.01.23-to-develop
Rlsmerge/2025.01.23 to develop
This commit is contained in:
commit
d0b76e7941
9 changed files with 179 additions and 27 deletions
|
|
@ -27,17 +27,17 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body ps-5 pe-5 pb-4 pt-1">
|
<div class="modal-body ps-5 pe-5 pb-4 pt-1">
|
||||||
<slot></slot>
|
<slot></slot>
|
||||||
<div class="modal-footer">
|
</div>
|
||||||
<modalButtonMain
|
<div class="modal-footer">
|
||||||
isPrimary
|
<modalButtonMain
|
||||||
class="w-100"
|
isPrimary
|
||||||
:id="modalId + '-modalbtn'"
|
class="w-100"
|
||||||
ref="modalButtonMain"
|
:id="modalId + '-modalbtn'"
|
||||||
loaderColor="white"
|
ref="modalButtonMain"
|
||||||
:buttonText="footerButtonText"
|
loaderColor="white"
|
||||||
@click-event="validateAndEmit"
|
:buttonText="footerButtonText"
|
||||||
:class="isFooterButtonDisabled && 'form-test-invalid'" />
|
@click-event="validateAndEmit"
|
||||||
</div>
|
:class="isFooterButtonDisabled && 'form-test-invalid'" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -173,7 +173,7 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.modal-footer {
|
.modal-footer {
|
||||||
padding: 1rem 0;
|
padding: 1rem 1.5rem;
|
||||||
position: sticky;
|
position: sticky;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,10 @@ export async function getImplicitNavigation(toRoute) {
|
||||||
|
|
||||||
const skipVin = await skipVinLookup();
|
const skipVin = await skipVinLookup();
|
||||||
|
|
||||||
|
if (store.getters.order.payment.insuranceCoverage?.isVerified) {
|
||||||
|
return fmgPageValues.HERITAGE;
|
||||||
|
}
|
||||||
|
|
||||||
if (quoteComponent.methods.arePagePrerequisitesValid()) {
|
if (quoteComponent.methods.arePagePrerequisitesValid()) {
|
||||||
// Do not send to quote if verified insurance user.
|
// Do not send to quote if verified insurance user.
|
||||||
if (store.getters.requiresVerifiedRedirecting) {
|
if (store.getters.requiresVerifiedRedirecting) {
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,9 @@ 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(async (vm) => {
|
next(async (vm) => {
|
||||||
vm.setCmsContent(resultMap.cmsContent);
|
vm.setCmsContent(resultMap.cmsContent);
|
||||||
vm.showSaveProgressModal = !(emailFromStore?.length > 0);
|
// turned off Save Your Progress for 1/23/25 release
|
||||||
|
// to restore, uncomment line below
|
||||||
|
// vm.showSaveProgressModal = !(emailFromStore?.length > 0);
|
||||||
if (store.getters.externalParameterState?.isExternalParameter) {
|
if (store.getters.externalParameterState?.isExternalParameter) {
|
||||||
if (store.getters.externalParameterServiceZip.zipCode) {
|
if (store.getters.externalParameterServiceZip.zipCode) {
|
||||||
await baseMixin.methods.dispatchStoreAction(
|
await baseMixin.methods.dispatchStoreAction(
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,9 @@ 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(async (vm) => {
|
next(async (vm) => {
|
||||||
vm.setCmsContent(resultMap.cmsContent);
|
vm.setCmsContent(resultMap.cmsContent);
|
||||||
vm.showSaveProgressModal = !(emailFromStore?.length > 0);
|
// turned off Save Your Progress for 1/23/25 release
|
||||||
|
// to restore, uncomment line below
|
||||||
|
// vm.showSaveProgressModal = !(emailFromStore?.length > 0);
|
||||||
if (store.getters.externalParameterState?.isExternalParameter) {
|
if (store.getters.externalParameterState?.isExternalParameter) {
|
||||||
if (store.getters.externalParameterServiceZip.zipCode) {
|
if (store.getters.externalParameterServiceZip.zipCode) {
|
||||||
await baseMixin.methods.dispatchStoreAction(
|
await baseMixin.methods.dispatchStoreAction(
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,9 @@ 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(async (vm) => {
|
next(async (vm) => {
|
||||||
vm.setCmsContent(resultMap.cmsContent);
|
vm.setCmsContent(resultMap.cmsContent);
|
||||||
vm.showSaveProgressModal = !(emailFromStore?.length > 0);
|
// turned off Save Your Progress for 1/23/25 release
|
||||||
|
// to restore, uncomment line below
|
||||||
|
// vm.showSaveProgressModal = !(emailFromStore?.length > 0);
|
||||||
if (store.getters.externalParameterState?.isExternalParameter) {
|
if (store.getters.externalParameterState?.isExternalParameter) {
|
||||||
if (store.getters.externalParameterServiceZip.zipCode) {
|
if (store.getters.externalParameterServiceZip.zipCode) {
|
||||||
const serviceState = store.getters.order.serviceLocation.state;
|
const serviceState = store.getters.order.serviceLocation.state;
|
||||||
|
|
|
||||||
|
|
@ -293,8 +293,12 @@ 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(async (vm) => {
|
next(async (vm) => {
|
||||||
vm.setCmsContent(resultMap.cmsContent);
|
vm.setCmsContent(resultMap.cmsContent);
|
||||||
vm.showSaveProgressPopup = showSaveProgressPopup;
|
|
||||||
vm.showSaveProgressModal = showSaveProgressModal;
|
// turned off Save Your Progress for 1/23/25 release
|
||||||
|
// to restore, uncomment the 2 lines below
|
||||||
|
// vm.showSaveProgressPopup = showSaveProgressPopup;
|
||||||
|
// vm.showSaveProgressModal = showSaveProgressModal;
|
||||||
|
|
||||||
vm.addableVaps = addableVaps;
|
vm.addableVaps = addableVaps;
|
||||||
vm.lineItems = lineItems;
|
vm.lineItems = lineItems;
|
||||||
vm.availableLineItems = pricingResults;
|
vm.availableLineItems = pricingResults;
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,10 @@ 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) => {
|
||||||
vm.setCmsContent(resultMap.cmsContent);
|
vm.setCmsContent(resultMap.cmsContent);
|
||||||
vm.showSaveProgressModal = !(emailFromStore?.length > 0);
|
// turned off Save Your Progress for 1/23/25 release
|
||||||
|
// to restore, uncomment line below
|
||||||
|
// vm.showSaveProgressModal = !(emailFromStore?.length > 0);
|
||||||
|
|
||||||
// Glass Part Question dynamic component
|
// Glass Part Question dynamic component
|
||||||
Object.keys(vm.$refs)
|
Object.keys(vm.$refs)
|
||||||
.filter((r) => r.includes(vm.RefPrefix) && vm.$refs[r][0] !== undefined)
|
.filter((r) => r.includes(vm.RefPrefix) && vm.$refs[r][0] !== undefined)
|
||||||
|
|
|
||||||
|
|
@ -83,6 +83,8 @@ const routes = [
|
||||||
const fromReturnUser = from?.name === fmgPageValues.RETURN_USER;
|
const fromReturnUser = from?.name === fmgPageValues.RETURN_USER;
|
||||||
const fromContentSite = getQuerystringParameter(queryStrings.START_TYPE) === "fmg";
|
const fromContentSite = getQuerystringParameter(queryStrings.START_TYPE) === "fmg";
|
||||||
const toReturnUserPage = to.query?.fmgPage === fmgPageValues.RETURN_USER;
|
const toReturnUserPage = to.query?.fmgPage === fmgPageValues.RETURN_USER;
|
||||||
|
log(" --fromReturnUser ", fromReturnUser);
|
||||||
|
log(" --to.query.fmgPage ", to.query?.fmgPage);
|
||||||
|
|
||||||
// Intercept all navigation if a submitted order exists in storage
|
// Intercept all navigation if a submitted order exists in storage
|
||||||
if (window.sessionStorage.getItem("submittedOrder") !== null) {
|
if (window.sessionStorage.getItem("submittedOrder") !== null) {
|
||||||
|
|
@ -96,15 +98,24 @@ const routes = [
|
||||||
// if entering the funnel from the content site, check and see if there is already a funnel cookie.
|
// if entering the funnel from the content site, check and see if there is already a funnel cookie.
|
||||||
// if so, send them to return-user page.
|
// if so, send them to return-user page.
|
||||||
const funnelCookieLastTouched = getFunnelCookie()?.LastTouched;
|
const funnelCookieLastTouched = getFunnelCookie()?.LastTouched;
|
||||||
if (fromContentSite &&
|
if (
|
||||||
|
fromContentSite &&
|
||||||
funnelCookieLastTouched !== null &&
|
funnelCookieLastTouched !== null &&
|
||||||
funnelCookieLastTouched !== undefined &&
|
funnelCookieLastTouched !== undefined &&
|
||||||
!toReturnUserPage
|
!toReturnUserPage
|
||||||
) {
|
) {
|
||||||
log(" --from content site navigate to return user");
|
log(" --from content site navigate to return user");
|
||||||
|
var qso = {
|
||||||
|
fmgPage: fmgPageValues.RETURN_USER,
|
||||||
|
};
|
||||||
|
const lg = getQuerystringParameter(queryStrings.LOG);
|
||||||
|
if (lg) {
|
||||||
|
qso[queryStrings.LOG] = true;
|
||||||
|
}
|
||||||
|
|
||||||
router.push({
|
router.push({
|
||||||
path: "/",
|
path: "/",
|
||||||
query: { fmgPage: fmgPageValues.RETURN_USER },
|
query: Object.assign({}, qso),
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -155,21 +166,27 @@ const routes = [
|
||||||
log(" --load session end");
|
log(" --load session end");
|
||||||
|
|
||||||
//Update external parameter state but not when returning from heritage
|
//Update external parameter state but not when returning from heritage
|
||||||
if (!to.query.fmgPage?.startsWith("service-location")) {
|
if (!to.query.fmgPage?.startsWith("service-location") && !fromReturnUser) {
|
||||||
updateExternalParameterState();
|
updateExternalParameterState();
|
||||||
}
|
}
|
||||||
|
|
||||||
// clear part related state because heritage selected a new vehicle
|
// clear part related state because heritage selected a new vehicle
|
||||||
if (
|
if (
|
||||||
to.query.fmgPage === fmgPageValues.VEHICLE &&
|
to.query.fmgPage === fmgPageValues.VEHICLE &&
|
||||||
eval(getFunnelCookie()?.HasDelayedClaimRegistration)
|
eval(getFunnelCookie()?.HasDelayedClaimRegistration &&
|
||||||
|
!fromReturnUser)
|
||||||
) {
|
) {
|
||||||
store.commit(storeMutations.RESET_GLASS_PARTS_STATE);
|
store.commit(storeMutations.RESET_GLASS_PARTS_STATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if coming from the return user page, clear the destination page so implicit navigation runs
|
// if coming from the return user page, clear the destination page so implicit navigation runs
|
||||||
|
log(" --to.query ", JSON.stringify(to.query));
|
||||||
if (fromReturnUser && to.query) {
|
if (fromReturnUser && to.query) {
|
||||||
to.query[queryStrings.FMG_PAGE] = "";
|
log( " --clear to.query");
|
||||||
|
delete to.query[queryStrings.FMG_PAGE];
|
||||||
|
|
||||||
|
//to.query[queryStrings.FMG_PAGE] = "";
|
||||||
|
log(" --to.query cleared ", JSON.stringify(to.query));
|
||||||
}
|
}
|
||||||
|
|
||||||
const pageToRedirectTo = await getPageToRouteExistingOrderTo(to);
|
const pageToRedirectTo = await getPageToRouteExistingOrderTo(to);
|
||||||
|
|
@ -549,7 +566,7 @@ async function navigate(
|
||||||
const pageError = getQuerystringParameter(queryStrings.PAGE_ERROR);
|
const pageError = getQuerystringParameter(queryStrings.PAGE_ERROR);
|
||||||
const logQs = getQuerystringParameter(queryStrings.LOG);
|
const logQs = getQuerystringParameter(queryStrings.LOG);
|
||||||
baseMixin.methods.dispatchStoreAction(storeActions.SAVE_LOGGING_OPTION, logQs, false);
|
baseMixin.methods.dispatchStoreAction(storeActions.SAVE_LOGGING_OPTION, logQs, false);
|
||||||
|
|
||||||
log("------------- router index.js navigate start -----------------");
|
log("------------- router index.js navigate start -----------------");
|
||||||
log(" --scenario: ", scenario);
|
log(" --scenario: ", scenario);
|
||||||
log(" --isSavingNavigation: ", isSavingNavigation);
|
log(" --isSavingNavigation: ", isSavingNavigation);
|
||||||
|
|
@ -613,6 +630,8 @@ function getNavigationMap(scenario, currentRoute) {
|
||||||
|
|
||||||
function log(message, data) {
|
function log(message, data) {
|
||||||
const log = getQuerystringParameter(queryStrings.LOG);
|
const log = getQuerystringParameter(queryStrings.LOG);
|
||||||
|
baseMixin.methods.dispatchStoreAction(storeActions.SAVE_LOGGING_OPTION, log, false);
|
||||||
|
|
||||||
data = data ?? "";
|
data = data ?? "";
|
||||||
const outData = typeof data === "object" ? JSON.stringify(data) : data;
|
const outData = typeof data === "object" ? JSON.stringify(data) : data;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,6 @@ export default {
|
||||||
.list-button-horizontal-content {
|
.list-button-horizontal-content {
|
||||||
outline: none;
|
outline: none;
|
||||||
position: relative;
|
position: relative;
|
||||||
background: $white;
|
|
||||||
transition: all 150ms linear;
|
transition: all 150ms linear;
|
||||||
border: 1px solid $gray-500;
|
border: 1px solid $gray-500;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
|
|
@ -110,8 +109,8 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
.list-button-horizontal-content:hover {
|
.list-button-horizontal-content:hover {
|
||||||
background-color: $blue-700;
|
background-color: transparent;
|
||||||
color: $white;
|
color: $blue;
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -220,4 +219,121 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Special styles when there are multiple list-button-horizontal buttons
|
||||||
|
// (number of chips, pay w/cash/insurance)
|
||||||
|
.windshield-chip-count-question {
|
||||||
|
fieldset {
|
||||||
|
.d-flex {
|
||||||
|
.col {
|
||||||
|
&:first-child {
|
||||||
|
label {
|
||||||
|
&.list-group.list-button-horizontal {
|
||||||
|
z-index: 2;
|
||||||
|
&:hover {
|
||||||
|
background-color: $white;
|
||||||
|
border-top-left-radius: 0.5rem;
|
||||||
|
border-bottom-left-radius: 0.5rem;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
.d-flex {
|
||||||
|
.col {
|
||||||
|
label {
|
||||||
|
&.list-group.list-button-horizontal {
|
||||||
|
&:hover {
|
||||||
|
background-color: $white;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
.d-flex {
|
||||||
|
.col {
|
||||||
|
&:last-child {
|
||||||
|
label {
|
||||||
|
&.list-group.list-button-horizontal {
|
||||||
|
z-index: 2;
|
||||||
|
&:hover {
|
||||||
|
background-color: $white;
|
||||||
|
border-top-right-radius: 0.5rem;
|
||||||
|
border-bottom-right-radius: 0.5rem;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//NOT Windshiled Chip Count
|
||||||
|
fieldset {
|
||||||
|
.d-flex {
|
||||||
|
.col {
|
||||||
|
&:first-child {
|
||||||
|
label {
|
||||||
|
&.list-group.list-button-horizontal {
|
||||||
|
z-index: 6;
|
||||||
|
&:hover {
|
||||||
|
background-color: $white;
|
||||||
|
border-top-left-radius: 0.5rem;
|
||||||
|
border-bottom-left-radius: 0.5rem;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
.d-flex {
|
||||||
|
.col {
|
||||||
|
label {
|
||||||
|
&.list-group.list-button-horizontal {
|
||||||
|
&:hover {
|
||||||
|
background-color: $white;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fieldset {
|
||||||
|
.d-flex {
|
||||||
|
.col {
|
||||||
|
&:last-child {
|
||||||
|
label {
|
||||||
|
&.list-group.list-button-horizontal {
|
||||||
|
z-index: 6;
|
||||||
|
&:hover {
|
||||||
|
background-color: $white;
|
||||||
|
border-top-right-radius: 0.5rem;
|
||||||
|
border-bottom-right-radius: 0.5rem;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue