From e92fa4b119e14ee1275a430fa07372173953535b Mon Sep 17 00:00:00 2001 From: Bryan Mauger Date: Tue, 21 Jan 2025 14:14:12 -0500 Subject: [PATCH 1/5] CASH-54 update hover state for list-button-horizontal buttons --- .../list-button-horizontal.vue | 122 +++++++++++++++++- 1 file changed, 119 insertions(+), 3 deletions(-) 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..85a7c679a 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: .5rem; + border-bottom-left-radius: .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: .5rem; + border-bottom-right-radius: .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: .5rem; + border-bottom-left-radius: .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: .5rem; + border-bottom-right-radius: .5rem; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + } + } + } + } + } +} From 9edfa4163a38da87eb3d6713c9c631db5fe36d95 Mon Sep 17 00:00:00 2001 From: Bryan Mauger Date: Tue, 21 Jan 2025 14:16:05 -0500 Subject: [PATCH 2/5] Formate code. --- src/router/index.js | 3 ++- .../list-button-horizontal.vue | 16 ++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/router/index.js b/src/router/index.js index 118e39cd1..ed35f6808 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -96,7 +96,8 @@ 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 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 85a7c679a..4b66023e0 100644 --- a/src/ux-components/list-button-horizontal/list-button-horizontal.vue +++ b/src/ux-components/list-button-horizontal/list-button-horizontal.vue @@ -231,8 +231,8 @@ export default { z-index: 2; &:hover { background-color: $white; - border-top-left-radius: .5rem; - border-bottom-left-radius: .5rem; + border-top-left-radius: 0.5rem; + border-bottom-left-radius: 0.5rem; border-top-right-radius: 0; border-bottom-right-radius: 0; } @@ -267,8 +267,8 @@ export default { z-index: 2; &:hover { background-color: $white; - border-top-right-radius: .5rem; - border-bottom-right-radius: .5rem; + border-top-right-radius: 0.5rem; + border-bottom-right-radius: 0.5rem; border-top-left-radius: 0; border-bottom-left-radius: 0; } @@ -289,8 +289,8 @@ fieldset { z-index: 6; &:hover { background-color: $white; - border-top-left-radius: .5rem; - border-bottom-left-radius: .5rem; + border-top-left-radius: 0.5rem; + border-bottom-left-radius: 0.5rem; border-top-right-radius: 0; border-bottom-right-radius: 0; } @@ -325,8 +325,8 @@ fieldset { z-index: 6; &:hover { background-color: $white; - border-top-right-radius: .5rem; - border-bottom-right-radius: .5rem; + border-top-right-radius: 0.5rem; + border-bottom-right-radius: 0.5rem; border-top-left-radius: 0; border-bottom-left-radius: 0; } From d3d3320d6dcf891b718fa279e163f92799f90974 Mon Sep 17 00:00:00 2001 From: Bryan Mauger Date: Wed, 22 Jan 2025 09:57:35 -0500 Subject: [PATCH 3/5] CASH-136 reapply modal sticky footer. --- src/digital-components/modal/modal.vue | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) 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; From 16cb4fc6b4b557ae08b98c081cd518e5b633ea47 Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Wed, 22 Jan 2025 10:13:45 -0500 Subject: [PATCH 4/5] CASH-143: turn off SYP for time being --- src/layouts/capability-questions/capability-questions.vue | 4 +++- src/layouts/molding-questions/molding-questions.vue | 4 +++- src/layouts/part-questions/part-questions.vue | 4 +++- src/layouts/quote/quote.vue | 8 ++++++-- src/layouts/vehicle-parts/vehicle-parts.vue | 5 ++++- 5 files changed, 19 insertions(+), 6 deletions(-) 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) From 7ff2c1b38f4c9efa8907f4e8179988895a6c7483 Mon Sep 17 00:00:00 2001 From: CarlNation Date: Wed, 22 Jan 2025 10:44:12 -0500 Subject: [PATCH 5/5] CASH-109 CASH-109 the implicit navigation won't work for verified insurance because the quote prereqs always returns false because verified insurance is not permitted on quote page. Also prevent glassparts from being removed for return-users. --- .../heritage-integration/navigation-helper.js | 4 +++ src/router/index.js | 28 +++++++++++++++---- 2 files changed, 27 insertions(+), 5 deletions(-) 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/router/index.js b/src/router/index.js index ed35f6808..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) { @@ -103,9 +105,17 @@ const routes = [ !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; } @@ -156,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); @@ -550,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); @@ -614,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;