Merge pull request #2241 from Safelite/rlsmerge/2025.01.23-to-develop

Rlsmerge/2025.01.23 to develop
This commit is contained in:
CarlNation 2025-01-22 15:20:25 -05:00 committed by GitHub
commit d0b76e7941
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 179 additions and 27 deletions

View file

@ -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;

View file

@ -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) {

View file

@ -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(

View file

@ -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(

View file

@ -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;

View file

@ -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;

View file

@ -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)

View file

@ -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;

View file

@ -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>