diff --git a/src/digital-components/modal/modal.vue b/src/digital-components/modal/modal.vue index 461d144ae..58260e831 100644 --- a/src/digital-components/modal/modal.vue +++ b/src/digital-components/modal/modal.vue @@ -27,17 +27,17 @@ + @@ -173,7 +173,7 @@ export default { } } .modal-footer { - padding: 1rem 0; + padding: 1rem 1.5rem; position: sticky; width: 100%; bottom: 0; diff --git a/src/helpers/heritage-integration/navigation-helper.js b/src/helpers/heritage-integration/navigation-helper.js index 4afc7e115..2fc557a16 100644 --- a/src/helpers/heritage-integration/navigation-helper.js +++ b/src/helpers/heritage-integration/navigation-helper.js @@ -76,6 +76,10 @@ export async function getImplicitNavigation(toRoute) { const skipVin = await skipVinLookup(); + if (store.getters.order.payment.insuranceCoverage?.isVerified) { + return fmgPageValues.HERITAGE; + } + if (quoteComponent.methods.arePagePrerequisitesValid()) { // Do not send to quote if verified insurance user. if (store.getters.requiresVerifiedRedirecting) { diff --git a/src/layouts/capability-questions/capability-questions.vue b/src/layouts/capability-questions/capability-questions.vue index 1896513a1..57567e128 100644 --- a/src/layouts/capability-questions/capability-questions.vue +++ b/src/layouts/capability-questions/capability-questions.vue @@ -64,7 +64,9 @@ export default { // Call the "next" function to complete the transition to this page. next(async (vm) => { 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.externalParameterServiceZip.zipCode) { await baseMixin.methods.dispatchStoreAction( diff --git a/src/layouts/molding-questions/molding-questions.vue b/src/layouts/molding-questions/molding-questions.vue index 1bcc3d7a8..4da3588d7 100644 --- a/src/layouts/molding-questions/molding-questions.vue +++ b/src/layouts/molding-questions/molding-questions.vue @@ -64,7 +64,9 @@ export default { // Call the "next" function to complete the transition to this page. next(async (vm) => { 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.externalParameterServiceZip.zipCode) { await baseMixin.methods.dispatchStoreAction( diff --git a/src/layouts/part-questions/part-questions.vue b/src/layouts/part-questions/part-questions.vue index f905e86c7..37f005d48 100644 --- a/src/layouts/part-questions/part-questions.vue +++ b/src/layouts/part-questions/part-questions.vue @@ -64,7 +64,9 @@ export default { // Call the "next" function to complete the transition to this page. next(async (vm) => { 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.externalParameterServiceZip.zipCode) { const serviceState = store.getters.order.serviceLocation.state; diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index 7256acc69..f3590cbc3 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -293,8 +293,12 @@ export default { // Call the "next" function to complete the transition to this page. next(async (vm) => { 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.lineItems = lineItems; vm.availableLineItems = pricingResults; diff --git a/src/layouts/vehicle-parts/vehicle-parts.vue b/src/layouts/vehicle-parts/vehicle-parts.vue index fd9b90b79..43f66c376 100644 --- a/src/layouts/vehicle-parts/vehicle-parts.vue +++ b/src/layouts/vehicle-parts/vehicle-parts.vue @@ -94,7 +94,10 @@ export default { // Call the "next" function to complete the transition to this page. next((vm) => { 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 Object.keys(vm.$refs) .filter((r) => r.includes(vm.RefPrefix) && vm.$refs[r][0] !== undefined) diff --git a/src/router/index.js b/src/router/index.js index 118e39cd1..d956af773 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -83,6 +83,8 @@ const routes = [ const fromReturnUser = from?.name === fmgPageValues.RETURN_USER; const fromContentSite = getQuerystringParameter(queryStrings.START_TYPE) === "fmg"; 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 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 so, send them to return-user page. const funnelCookieLastTouched = getFunnelCookie()?.LastTouched; - if (fromContentSite && + if ( + fromContentSite && funnelCookieLastTouched !== null && funnelCookieLastTouched !== undefined && !toReturnUserPage ) { 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({ path: "/", - query: { fmgPage: fmgPageValues.RETURN_USER }, + query: Object.assign({}, qso), }); return; } @@ -155,21 +166,27 @@ const routes = [ log(" --load session end"); //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(); } // clear part related state because heritage selected a new vehicle if ( to.query.fmgPage === fmgPageValues.VEHICLE && - eval(getFunnelCookie()?.HasDelayedClaimRegistration) + eval(getFunnelCookie()?.HasDelayedClaimRegistration && + !fromReturnUser) ) { store.commit(storeMutations.RESET_GLASS_PARTS_STATE); } // 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) { - 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); @@ -549,7 +566,7 @@ async function navigate( const pageError = getQuerystringParameter(queryStrings.PAGE_ERROR); const logQs = getQuerystringParameter(queryStrings.LOG); baseMixin.methods.dispatchStoreAction(storeActions.SAVE_LOGGING_OPTION, logQs, false); - + log("------------- router index.js navigate start -----------------"); log(" --scenario: ", scenario); log(" --isSavingNavigation: ", isSavingNavigation); @@ -613,6 +630,8 @@ function getNavigationMap(scenario, currentRoute) { function log(message, data) { const log = getQuerystringParameter(queryStrings.LOG); + baseMixin.methods.dispatchStoreAction(storeActions.SAVE_LOGGING_OPTION, log, false); + data = data ?? ""; const outData = typeof data === "object" ? JSON.stringify(data) : data; diff --git a/src/ux-components/list-button-horizontal/list-button-horizontal.vue b/src/ux-components/list-button-horizontal/list-button-horizontal.vue index 8bcd7bd3a..4b66023e0 100644 --- a/src/ux-components/list-button-horizontal/list-button-horizontal.vue +++ b/src/ux-components/list-button-horizontal/list-button-horizontal.vue @@ -83,7 +83,6 @@ export default { .list-button-horizontal-content { outline: none; position: relative; - background: $white; transition: all 150ms linear; border: 1px solid $gray-500; border-radius: 0; @@ -110,8 +109,8 @@ export default { } .list-button-horizontal-content:hover { - background-color: $blue-700; - color: $white; + background-color: transparent; + color: $blue; 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; + } + } + } + } + } + } +}