From fae98b0e37ce7e79cd8b00c70e999fe6a516b6ca Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Fri, 8 Dec 2023 14:28:04 -0500 Subject: [PATCH 01/13] Quickfix -- restrict prior fix to vehicle only to preserve modals --- src/router/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/router/index.js b/src/router/index.js index a20fe828f..06879ae34 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -172,7 +172,10 @@ router.beforeEach(async (to, from, next) => { if (isInIframe && notToPIAReturn) { const newUrl = `${window.top.location.origin}${to.href}`; window.top.location.href = newUrl; - } else if (toQueryPage === fromQueryPage) { + // Refresh page if navigating to self to prevent locking. + // For now only carved out for vehicle; all modals are opened through anchor tags at the moment, + // which also self navigate, but relied on the page remaining the same on self-navigation. + } else if (toQueryPage === fromQueryPage && toQueryPage === "vehicle") { router.go(0); } else { next(); From 2197f0c463580e50255eae43023c6d667cbc793c Mon Sep 17 00:00:00 2001 From: Sneha Date: Mon, 11 Dec 2023 20:20:36 +0530 Subject: [PATCH 02/13] CSR-1872 --- src/layouts/vehicle/vehicle.vue | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/layouts/vehicle/vehicle.vue b/src/layouts/vehicle/vehicle.vue index 46c6a5b61..049ac836f 100644 --- a/src/layouts/vehicle/vehicle.vue +++ b/src/layouts/vehicle/vehicle.vue @@ -17,7 +17,7 @@ cmsWidgetName="VehicleYearQuestion" validationRules="year-required" placeHolderText="Select year" - inputId="yearQuestionField" /> + customDropdownId="yearQuestionField" /> + customDropdownId="makeQuestionField" /> + customDropdownId="modelQuestionField" /> + customDropdownId="styleQuestionField" /> Date: Mon, 11 Dec 2023 12:08:36 -0500 Subject: [PATCH 03/13] CSR-1880: fix for blocking script error --- src/layouts/payment-method/payment-method.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/layouts/payment-method/payment-method.vue b/src/layouts/payment-method/payment-method.vue index 568ef5b20..5311c2728 100644 --- a/src/layouts/payment-method/payment-method.vue +++ b/src/layouts/payment-method/payment-method.vue @@ -387,7 +387,7 @@ export default { const revalidateResponseHasFrontWiperLineItems = revalidatePromoResponse.promoLineItems.find( (lineItem) => lineItem.partType == partTypeStrings.FRONT_WIPER - ).length > 0; + )?.length > 0; if (revalidateResponseHasFrontWiperLineItems) { const frontWiperLineItemsInStore = this.lineItems.vaps.find( From 4aec9a0924a522f66094f3ad5126a7d550d48d3f Mon Sep 17 00:00:00 2001 From: Matt Sykes Date: Mon, 11 Dec 2023 18:20:30 -0500 Subject: [PATCH 04/13] Changing cookie values for logExperimentExposure --- src/layouts/vehicle/vehicle.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/layouts/vehicle/vehicle.vue b/src/layouts/vehicle/vehicle.vue index 049ac836f..0d4e22299 100644 --- a/src/layouts/vehicle/vehicle.vue +++ b/src/layouts/vehicle/vehicle.vue @@ -79,7 +79,7 @@ import vehicleQuestion from "@/layouts/vehicle/vehicle-question/vehicle-question // Supporting files import { fetchCmsContentForPage } from "@/helpers/cms-content-helper"; import { experimentUniverses } from "@/constants/experiments"; -import { getDeviceIdValue, getSessionKeyValue } from "@/helpers/heritage-integration/cookie-helper"; +import { getSessionKeyValue, getUserIdValue } from "@/helpers/heritage-integration/cookie-helper"; import { settleAllPromises } from "@/helpers/layout-helper"; import { Form, defineRule } from "vee-validate"; import { required } from "@/helpers/validation-rules"; @@ -169,7 +169,7 @@ export default { baseMixin.methods.dispatchStoreActionWithLogging( storeActions.LOG_EXPERIMENT_EXPOSURE, { - userId: getDeviceIdValue(), + userId: getUserIdValue(), sessionKey: getSessionKeyValue(), pageName: to.query.fmgPage, experiment: experimentForLogging, From 3d222e09a997a2daf974b5ace650dac17daeaca9 Mon Sep 17 00:00:00 2001 From: Matt Caimi Date: Tue, 12 Dec 2023 11:24:45 -0500 Subject: [PATCH 05/13] CSR-1881 use session storage ref seq num when order in vuex is cleared --- src/mixins/analytics-mixin.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/mixins/analytics-mixin.js b/src/mixins/analytics-mixin.js index d3fa4d0dd..4f388c7f0 100644 --- a/src/mixins/analytics-mixin.js +++ b/src/mixins/analytics-mixin.js @@ -36,6 +36,10 @@ export default { const currentPageName = getPageNameByQueryString(); await this.validateSession(); + const sessionStorageString = window.sessionStorage.getItem("submittedOrder"); + const sessionRefSeqNum = JSON.parse(sessionStorageString)?.referralSequenceNumber; + const refSequenceNum = store.getters.order.referralSequenceNumber || sessionRefSeqNum; + var payload = { userId: getUserIdValue(), sessionKey: getSessionKeyValue(), @@ -45,7 +49,7 @@ export default { event: pageEvent, shouldUseSessionId: false, experimentsForUser: store.getters.applicationUser.experiments, - referralSequenceNumber: store.getters.order.referralSequenceNumber, + referralSequenceNumber: refSequenceNum, parentAccountNumber: store.getters.order.payment.parentAccountNumber, }; @@ -56,6 +60,10 @@ export default { const currentPageName = getPageNameByQueryString(); await this.validateSession(); + const sessionStorageString = window.sessionStorage.getItem("submittedOrder"); + const sessionRefSeqNum = JSON.parse(sessionStorageString)?.referralSequenceNumber; + const refSequenceNum = store.getters.order.referralSequenceNumber || sessionRefSeqNum; + var payload = { userId: getUserIdValue(), sessionKey: getSessionKeyValue(), @@ -67,7 +75,7 @@ export default { value: value, shouldUseSessionId: false, experimentsForUser: store.getters.applicationUser.experiments, - referralSequenceNumber: store.getters.order.referralSequenceNumber, + referralSequenceNumber: refSequenceNum, parentAccountNumber: store.getters.order.payment.parentAccountNumber, }; From cc49d256d535d8d9b869947d9dda43e9291f062d Mon Sep 17 00:00:00 2001 From: Matt Caimi Date: Tue, 12 Dec 2023 11:44:14 -0500 Subject: [PATCH 06/13] CSR-1881 updated getter --- src/mixins/analytics-mixin.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/mixins/analytics-mixin.js b/src/mixins/analytics-mixin.js index 4f388c7f0..3f20adb59 100644 --- a/src/mixins/analytics-mixin.js +++ b/src/mixins/analytics-mixin.js @@ -36,9 +36,9 @@ export default { const currentPageName = getPageNameByQueryString(); await this.validateSession(); - const sessionStorageString = window.sessionStorage.getItem("submittedOrder"); - const sessionRefSeqNum = JSON.parse(sessionStorageString)?.referralSequenceNumber; - const refSequenceNum = store.getters.order.referralSequenceNumber || sessionRefSeqNum; + const refSequenceNum = + store.getters.order.referralSequenceNumber || + store.getters.submittedOrder?.referralSequenceNumber; var payload = { userId: getUserIdValue(), @@ -60,9 +60,9 @@ export default { const currentPageName = getPageNameByQueryString(); await this.validateSession(); - const sessionStorageString = window.sessionStorage.getItem("submittedOrder"); - const sessionRefSeqNum = JSON.parse(sessionStorageString)?.referralSequenceNumber; - const refSequenceNum = store.getters.order.referralSequenceNumber || sessionRefSeqNum; + const refSequenceNum = + store.getters.order.referralSequenceNumber || + store.getters.submittedOrder?.referralSequenceNumber; var payload = { userId: getUserIdValue(), From e48a05c9aafc099120dd859f16a6f9e496807b6e Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Tue, 12 Dec 2023 12:15:09 -0500 Subject: [PATCH 07/13] Revert "Merge pull request #1622 from Safelite/feature/CSR-1851" This reverts commit 3bddf0b509a6268531b34de55b789d1028fec1ff, reversing changes made to 1eb6d9663970dec0fd93c4ed0bfa735fc877eb64. --- src/helpers/promotions-helper.js | 3 --- src/layouts/payment-method/payment-method.vue | 27 ------------------- 2 files changed, 30 deletions(-) diff --git a/src/helpers/promotions-helper.js b/src/helpers/promotions-helper.js index a592a6d9d..3968248d6 100644 --- a/src/helpers/promotions-helper.js +++ b/src/helpers/promotions-helper.js @@ -112,7 +112,6 @@ export async function revalidatePromosAndValidateQueryStringPromo( pageNameToLog, false ); - const revalidationErrorPromoCodes = revalidatePromoResponse.errors.map((x) => x.promoCode); baseMixin.methods.dispatchStoreAction( storeActions.SAVE_ACTIVE_AND_OR_INACTIVE_PROMOS, @@ -123,7 +122,6 @@ export async function revalidatePromosAndValidateQueryStringPromo( false ); } - if (hasNewPromo) { validatePromoResponse = await baseMixin.methods.dispatchStoreActionWithLogging( storeActions.VALIDATE_ORDER_PROMO_AND_SAVE_SERVER_DATA, @@ -134,7 +132,6 @@ export async function revalidatePromosAndValidateQueryStringPromo( pageNameToLog, false ); - if (validatePromoResponse.errorCode == null) { // Save promo to store const activePromos = store.getters.order.lineItems.promos ?? []; diff --git a/src/layouts/payment-method/payment-method.vue b/src/layouts/payment-method/payment-method.vue index 5311c2728..39541db02 100644 --- a/src/layouts/payment-method/payment-method.vue +++ b/src/layouts/payment-method/payment-method.vue @@ -112,7 +112,6 @@ import { defineRule } from "vee-validate"; import { required } from "@/helpers/validation-rules"; import { errorMessages } from "@/constants/error-messages"; import { AppointmentTypeStrings } from "@/constants/schedule-constants"; -import { partTypeStrings } from "@/constants/part-type-strings"; import { mapTaxedLineItemsToStoreFormat } from "../../store"; defineRule("option-required", required(errorMessages.OPTION_REQUIRED)); @@ -381,32 +380,6 @@ export default { ); } - // Because we don't yet have a robust solution for part interchange ... - // if there are front wiper line items in the revalidate response, we need to delete any existing front wiper line items from the store - // and replace them with those that come back from revalidation. - const revalidateResponseHasFrontWiperLineItems = - revalidatePromoResponse.promoLineItems.find( - (lineItem) => lineItem.partType == partTypeStrings.FRONT_WIPER - )?.length > 0; - - if (revalidateResponseHasFrontWiperLineItems) { - const frontWiperLineItemsInStore = this.lineItems.vaps.find( - (lineItem) => lineItem.partType == partTypeStrings.FRONT_WIPER - ); - if (frontWiperLineItemsInStore.length > 0) { - this.lineItems.vaps = this.lineItems.vaps.find( - (lineItem) => lineItem.partType != partTypeStrings.FRONT_WIPER - ); - } - } - - const vapsToAddToCart = getVapsThatNeedToBeAddedToSatisfyPromos( - revalidatePromoResponse.promoLineItems, - this.availableVaps, - this.lineItems - ); - this.lineItems.vaps.push(...vapsToAddToCart); - this.lineItems.promos = revalidatePromoResponse.promoLineItems; this.inactivePromos = revalidatePromoResponse.errors.map((x) => getPromoCodeWithoutBundleIdentifier(x.promoCode) From 614f50a533d1b8802021f470b72a40649015a317 Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Tue, 12 Dec 2023 14:09:47 -0500 Subject: [PATCH 08/13] Revert "Merge pull request #1636 from Safelite/reverse-pr-1622" This reverts commit 438e63e780ffb13026094d5466b14eb83a4dd08b, reversing changes made to 811a31736962ad0a880f41d67d3414c9df5b4910. --- src/helpers/promotions-helper.js | 3 +++ src/layouts/payment-method/payment-method.vue | 27 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/helpers/promotions-helper.js b/src/helpers/promotions-helper.js index 3968248d6..a592a6d9d 100644 --- a/src/helpers/promotions-helper.js +++ b/src/helpers/promotions-helper.js @@ -112,6 +112,7 @@ export async function revalidatePromosAndValidateQueryStringPromo( pageNameToLog, false ); + const revalidationErrorPromoCodes = revalidatePromoResponse.errors.map((x) => x.promoCode); baseMixin.methods.dispatchStoreAction( storeActions.SAVE_ACTIVE_AND_OR_INACTIVE_PROMOS, @@ -122,6 +123,7 @@ export async function revalidatePromosAndValidateQueryStringPromo( false ); } + if (hasNewPromo) { validatePromoResponse = await baseMixin.methods.dispatchStoreActionWithLogging( storeActions.VALIDATE_ORDER_PROMO_AND_SAVE_SERVER_DATA, @@ -132,6 +134,7 @@ export async function revalidatePromosAndValidateQueryStringPromo( pageNameToLog, false ); + if (validatePromoResponse.errorCode == null) { // Save promo to store const activePromos = store.getters.order.lineItems.promos ?? []; diff --git a/src/layouts/payment-method/payment-method.vue b/src/layouts/payment-method/payment-method.vue index 39541db02..5311c2728 100644 --- a/src/layouts/payment-method/payment-method.vue +++ b/src/layouts/payment-method/payment-method.vue @@ -112,6 +112,7 @@ import { defineRule } from "vee-validate"; import { required } from "@/helpers/validation-rules"; import { errorMessages } from "@/constants/error-messages"; import { AppointmentTypeStrings } from "@/constants/schedule-constants"; +import { partTypeStrings } from "@/constants/part-type-strings"; import { mapTaxedLineItemsToStoreFormat } from "../../store"; defineRule("option-required", required(errorMessages.OPTION_REQUIRED)); @@ -380,6 +381,32 @@ export default { ); } + // Because we don't yet have a robust solution for part interchange ... + // if there are front wiper line items in the revalidate response, we need to delete any existing front wiper line items from the store + // and replace them with those that come back from revalidation. + const revalidateResponseHasFrontWiperLineItems = + revalidatePromoResponse.promoLineItems.find( + (lineItem) => lineItem.partType == partTypeStrings.FRONT_WIPER + )?.length > 0; + + if (revalidateResponseHasFrontWiperLineItems) { + const frontWiperLineItemsInStore = this.lineItems.vaps.find( + (lineItem) => lineItem.partType == partTypeStrings.FRONT_WIPER + ); + if (frontWiperLineItemsInStore.length > 0) { + this.lineItems.vaps = this.lineItems.vaps.find( + (lineItem) => lineItem.partType != partTypeStrings.FRONT_WIPER + ); + } + } + + const vapsToAddToCart = getVapsThatNeedToBeAddedToSatisfyPromos( + revalidatePromoResponse.promoLineItems, + this.availableVaps, + this.lineItems + ); + this.lineItems.vaps.push(...vapsToAddToCart); + this.lineItems.promos = revalidatePromoResponse.promoLineItems; this.inactivePromos = revalidatePromoResponse.errors.map((x) => getPromoCodeWithoutBundleIdentifier(x.promoCode) From 924e31d77fbd900d13d6b458417a6d21e2946676 Mon Sep 17 00:00:00 2001 From: Sneha Date: Thu, 14 Dec 2023 17:46:31 +0530 Subject: [PATCH 09/13] CSR-1885 --- src/layouts/vehicle/vehicle.vue | 78 +++++++++++++-------------------- src/store/index.js | 63 +++++++++++++++++--------- src/store/store.spec.js | 6 +-- 3 files changed, 75 insertions(+), 72 deletions(-) diff --git a/src/layouts/vehicle/vehicle.vue b/src/layouts/vehicle/vehicle.vue index 0d4e22299..1b51fb9ca 100644 --- a/src/layouts/vehicle/vehicle.vue +++ b/src/layouts/vehicle/vehicle.vue @@ -216,9 +216,9 @@ export default { styleQuestionInitialDataPromise ) vm.initializeMMSComponent( - resultMap.makeQuestionInitialData, - resultMap.modelQuestionInitialData, - resultMap.styleQuestionInitialData + resultMap.makeQuestionInitialData?.response?.data, + resultMap.modelQuestionInitialData?.response?.data, + resultMap.styleQuestionInitialData?.response?.data ); }); }, @@ -226,17 +226,16 @@ export default { watch: { async selectedYear(year) { if (year) { - this.yearDropdown.disabled = true; const result = await this.getMakeOptions(year); - this.makeOptions = result?.data; - if (this.selectedYearfromStore() !== year) { - this.selectedMake = null; - this.selectedModel = null; - this.selectedStyle = null; - this.carId = null; + if (result?.year == year) { + this.makeOptions = result?.response?.data; + if (this.selectedYearfromStore() !== year) { + this.selectedMake = null; + this.selectedModel = null; + this.selectedStyle = null; + this.carId = null; + } } - this.yearDropdown.disabled = false; - this.yearDropdown.focus(); } else { this.makeOptions = []; this.selectedMake = null; @@ -247,17 +246,16 @@ export default { }, async selectedMake(make) { if (make) { - this.makeDropdown.disabled = true; const result = await this.getModelOptions(this.selectedYear, make); - this.modelOptions = result?.data; - if (this.modelOptions.length === 1) this.selectedModel = this.modelOptions[0]; - else { - this.selectedModel = null; - this.selectedStyle = null; - this.carId = null; + if (decodeURIComponent(result?.make) == make) { + this.modelOptions = result?.response?.data; + if (this.modelOptions.length === 1) this.selectedModel = this.modelOptions[0]; + else { + this.selectedModel = null; + this.selectedStyle = null; + this.carId = null; + } } - this.makeDropdown.disabled = false; - this.makeDropdown.focus(); } else { this.modelOptions = []; this.selectedModel = null; @@ -267,25 +265,24 @@ export default { }, async selectedModel(model) { if (model) { - this.modelDropdown.disabled = true; const result = await this.getStyleOptions( this.selectedYear, this.selectedMake, model ); - this.styleOptions = result?.data; - if (this.styleOptions.length === 1) { - const sameStyle = this.selectedStyle === this.styleOptions[0]; - this.selectedStyle = this.styleOptions[0]; - if (sameStyle) { - this.getVehicleDetails(); + if (decodeURIComponent(result?.model) == model) { + this.styleOptions = result?.response?.data; + if (this.styleOptions.length === 1) { + const sameStyle = this.selectedStyle === this.styleOptions[0]; + this.selectedStyle = this.styleOptions[0]; + if (sameStyle) { + this.getVehicleDetails(); + } + } else { + this.selectedStyle = null; + this.carId = null; } - } else { - this.selectedStyle = null; - this.carId = null; } - this.modelDropdown.disabled = false; - this.modelDropdown.focus(); } else { this.styleOptions = []; this.selectedStyle = null; @@ -294,10 +291,7 @@ export default { }, async selectedStyle(style) { if (style) { - this.styleDropdown.disabled = true; this.getVehicleDetails(); - this.styleDropdown.disabled = false; - this.styleDropdown.focus(); } else { this.imageUrl = null; this.carId = null; @@ -315,18 +309,6 @@ export default { else if (this.imageUrl == null && this.carId !== null) return false; else return true; }, - yearDropdown() { - return document.getElementById("yearQuestionField"); - }, - makeDropdown() { - return document.getElementById("makeQuestionField"); - }, - modelDropdown() { - return document.getElementById("modelQuestionField"); - }, - styleDropdown() { - return document.getElementById("styleQuestionField"); - }, allDataRetrieved() { return ( !!this.selectedYear && diff --git a/src/store/index.js b/src/store/index.js index 673c4dfa1..dd5c556b2 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -854,33 +854,54 @@ export const actions = { }, getVehicleMakes(context, { payload: { year }, pageNameToLog }) { - return globalMethods.callHttpClient({ - method: endpoints.GetVehicleMakes.method, - endpoint: `${endpoints.GetVehicleMakes.url}/${year}`, - payload: {}, - logApiCall: true, - pageNameToLog: pageNameToLog, - }); + return globalMethods + .callHttpClient({ + method: endpoints.GetVehicleMakes.method, + endpoint: `${endpoints.GetVehicleMakes.url}/${year}`, + payload: {}, + logApiCall: true, + pageNameToLog: pageNameToLog, + }) + .then((response) => { + return { + response, + year, + }; + }); }, getVehicleModels(context, { payload: { year, make }, pageNameToLog }) { - return globalMethods.callHttpClient({ - method: endpoints.GetVehicleModels.method, - endpoint: `${endpoints.GetVehicleModels.url}/${year}/${make}`, - payload: {}, - logApiCall: true, - pageNameToLog: pageNameToLog, - }); + return globalMethods + .callHttpClient({ + method: endpoints.GetVehicleModels.method, + endpoint: `${endpoints.GetVehicleModels.url}/${year}/${make}`, + payload: {}, + logApiCall: true, + pageNameToLog: pageNameToLog, + }) + .then((response) => { + return { + response, + make, + }; + }); }, getVehicleStyles(context, { payload: { year, make, model }, pageNameToLog }) { - return globalMethods.callHttpClient({ - method: endpoints.GetVehicleStyles.method, - endpoint: `${endpoints.GetVehicleStyles.url}/${year}/${make}/${model}`, - payload: {}, - logApiCall: true, - pageNameToLog: pageNameToLog, - }); + return globalMethods + .callHttpClient({ + method: endpoints.GetVehicleStyles.method, + endpoint: `${endpoints.GetVehicleStyles.url}/${year}/${make}/${model}`, + payload: {}, + logApiCall: true, + pageNameToLog: pageNameToLog, + }) + .then((response) => { + return { + response, + model, + }; + }); }, getVehicle(context, { payload: { year, make, model, style }, pageNameToLog }) { diff --git a/src/store/store.spec.js b/src/store/store.spec.js index 8353ec0d8..f5ce39cf6 100644 --- a/src/store/store.spec.js +++ b/src/store/store.spec.js @@ -493,7 +493,7 @@ describe("Actions", () => { pageNameToLog: "test", }); - expect(response.data).toEqual(["Acura", "Honda"]); + expect(response.response.data).toEqual(["Acura", "Honda"]); }); it("getVehicleModels action, should return models list", async () => { @@ -511,7 +511,7 @@ describe("Actions", () => { pageNameToLog: "test", }); - expect(response.data).toEqual(["ILX", "RDX"]); + expect(response.response.data).toEqual(["ILX", "RDX"]); }); it("getVehicleStyles action, should return models list", async () => { @@ -529,7 +529,7 @@ describe("Actions", () => { pageNameToLog: "test", }); - expect(response.data).toEqual({ style: "4 DOOR SEDAN" }); + expect(response.response.data).toEqual({ style: "4 DOOR SEDAN" }); }); it("getVehicle action, should get vehicle data ", async () => { From aa69a2c782c46371f4c1569c8310630d96e31d45 Mon Sep 17 00:00:00 2001 From: Sneha Date: Fri, 15 Dec 2023 16:05:42 +0530 Subject: [PATCH 10/13] CSR-1885 --- src/layouts/vehicle/vehicle.vue | 18 +++++----- src/store/index.js | 63 +++++++++++---------------------- src/store/store.spec.js | 6 ++-- 3 files changed, 33 insertions(+), 54 deletions(-) diff --git a/src/layouts/vehicle/vehicle.vue b/src/layouts/vehicle/vehicle.vue index 1b51fb9ca..bba7b89b8 100644 --- a/src/layouts/vehicle/vehicle.vue +++ b/src/layouts/vehicle/vehicle.vue @@ -216,9 +216,9 @@ export default { styleQuestionInitialDataPromise ) vm.initializeMMSComponent( - resultMap.makeQuestionInitialData?.response?.data, - resultMap.modelQuestionInitialData?.response?.data, - resultMap.styleQuestionInitialData?.response?.data + resultMap.makeQuestionInitialData, + resultMap.modelQuestionInitialData, + resultMap.styleQuestionInitialData ); }); }, @@ -227,8 +227,8 @@ export default { async selectedYear(year) { if (year) { const result = await this.getMakeOptions(year); - if (result?.year == year) { - this.makeOptions = result?.response?.data; + if (this.selectedYear == year) { + this.makeOptions = result?.data; if (this.selectedYearfromStore() !== year) { this.selectedMake = null; this.selectedModel = null; @@ -247,8 +247,8 @@ export default { async selectedMake(make) { if (make) { const result = await this.getModelOptions(this.selectedYear, make); - if (decodeURIComponent(result?.make) == make) { - this.modelOptions = result?.response?.data; + if (this.selectedMake == make) { + this.modelOptions = result?.data; if (this.modelOptions.length === 1) this.selectedModel = this.modelOptions[0]; else { this.selectedModel = null; @@ -270,8 +270,8 @@ export default { this.selectedMake, model ); - if (decodeURIComponent(result?.model) == model) { - this.styleOptions = result?.response?.data; + if (this.selectedModel == model) { + this.styleOptions = result?.data; if (this.styleOptions.length === 1) { const sameStyle = this.selectedStyle === this.styleOptions[0]; this.selectedStyle = this.styleOptions[0]; diff --git a/src/store/index.js b/src/store/index.js index dd5c556b2..673c4dfa1 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -854,54 +854,33 @@ export const actions = { }, getVehicleMakes(context, { payload: { year }, pageNameToLog }) { - return globalMethods - .callHttpClient({ - method: endpoints.GetVehicleMakes.method, - endpoint: `${endpoints.GetVehicleMakes.url}/${year}`, - payload: {}, - logApiCall: true, - pageNameToLog: pageNameToLog, - }) - .then((response) => { - return { - response, - year, - }; - }); + return globalMethods.callHttpClient({ + method: endpoints.GetVehicleMakes.method, + endpoint: `${endpoints.GetVehicleMakes.url}/${year}`, + payload: {}, + logApiCall: true, + pageNameToLog: pageNameToLog, + }); }, getVehicleModels(context, { payload: { year, make }, pageNameToLog }) { - return globalMethods - .callHttpClient({ - method: endpoints.GetVehicleModels.method, - endpoint: `${endpoints.GetVehicleModels.url}/${year}/${make}`, - payload: {}, - logApiCall: true, - pageNameToLog: pageNameToLog, - }) - .then((response) => { - return { - response, - make, - }; - }); + return globalMethods.callHttpClient({ + method: endpoints.GetVehicleModels.method, + endpoint: `${endpoints.GetVehicleModels.url}/${year}/${make}`, + payload: {}, + logApiCall: true, + pageNameToLog: pageNameToLog, + }); }, getVehicleStyles(context, { payload: { year, make, model }, pageNameToLog }) { - return globalMethods - .callHttpClient({ - method: endpoints.GetVehicleStyles.method, - endpoint: `${endpoints.GetVehicleStyles.url}/${year}/${make}/${model}`, - payload: {}, - logApiCall: true, - pageNameToLog: pageNameToLog, - }) - .then((response) => { - return { - response, - model, - }; - }); + return globalMethods.callHttpClient({ + method: endpoints.GetVehicleStyles.method, + endpoint: `${endpoints.GetVehicleStyles.url}/${year}/${make}/${model}`, + payload: {}, + logApiCall: true, + pageNameToLog: pageNameToLog, + }); }, getVehicle(context, { payload: { year, make, model, style }, pageNameToLog }) { diff --git a/src/store/store.spec.js b/src/store/store.spec.js index f5ce39cf6..8353ec0d8 100644 --- a/src/store/store.spec.js +++ b/src/store/store.spec.js @@ -493,7 +493,7 @@ describe("Actions", () => { pageNameToLog: "test", }); - expect(response.response.data).toEqual(["Acura", "Honda"]); + expect(response.data).toEqual(["Acura", "Honda"]); }); it("getVehicleModels action, should return models list", async () => { @@ -511,7 +511,7 @@ describe("Actions", () => { pageNameToLog: "test", }); - expect(response.response.data).toEqual(["ILX", "RDX"]); + expect(response.data).toEqual(["ILX", "RDX"]); }); it("getVehicleStyles action, should return models list", async () => { @@ -529,7 +529,7 @@ describe("Actions", () => { pageNameToLog: "test", }); - expect(response.response.data).toEqual({ style: "4 DOOR SEDAN" }); + expect(response.data).toEqual({ style: "4 DOOR SEDAN" }); }); it("getVehicle action, should get vehicle data ", async () => { From 34e4e097abb20ea56ad53d83d57d80c562018318 Mon Sep 17 00:00:00 2001 From: Bryan Mauger Date: Fri, 15 Dec 2023 09:45:46 -0500 Subject: [PATCH 11/13] CSR-1887 update styling on dropdowns for payment page. --- public/css/hop-styling.css | 21 +++++++++++++++------ public/scss/hop-styling.scss | 6 ++++-- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/public/css/hop-styling.css b/public/css/hop-styling.css index 68e556d53..afb536087 100644 --- a/public/css/hop-styling.css +++ b/public/css/hop-styling.css @@ -39,27 +39,36 @@ body input, body select { margin-top: 4px; } -body input { +body input, +body select { border-radius: 8px; border: 1px solid #8E9292; padding: 16px; font-size: 16px; color: #000; + background-color: #fff; } -body input:focus, body input:focus-visible { +body input:focus, body input:focus-visible, +body select:focus, +body select:focus-visible { box-shadow: 0 0 0 2.5px #1574a1; - border: none; + border: 1px solid transparent; outline: none; } -body input:disabled, body input.disabled { +body input:disabled, body input.disabled, +body select:disabled, +body select.disabled { background-color: #f5f5f5; filter: grayscale(100%); } -body input:disabled:hover, body input.disabled:hover { +body input:disabled:hover, body input.disabled:hover, +body select:disabled:hover, +body select.disabled:hover { box-shadow: 0 0 0 4px transparent; border: 1px solid #8e9292; } -body input:hover { +body input:hover, +body select:hover { border: 1px solid #8e9292; box-shadow: 0 0 0 4px #9fcee6; } diff --git a/public/scss/hop-styling.scss b/public/scss/hop-styling.scss index ed8e8e14c..667ca265d 100644 --- a/public/scss/hop-styling.scss +++ b/public/scss/hop-styling.scss @@ -48,16 +48,18 @@ body { margin-top: 4px; } - input { + input, + select { border-radius: 8px; border: 1px solid #8E9292; padding: 16px; font-size: 16px; color: #000; + background-color: #fff; &:focus, &:focus-visible { box-shadow: 0 0 0 2.5px #1574a1; - border: none; + border: 1px solid transparent; outline: none; } &:disabled, From 1c6865858ec429d2fbb80860c39bf6b126b80054 Mon Sep 17 00:00:00 2001 From: Bryan Mauger Date: Fri, 15 Dec 2023 15:44:07 -0500 Subject: [PATCH 12/13] CSR-1887 update error styling for payment form. --- public/css/hop-styling.css | 2 +- public/scss/hop-styling.scss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/css/hop-styling.css b/public/css/hop-styling.css index afb536087..c81dda28e 100644 --- a/public/css/hop-styling.css +++ b/public/css/hop-styling.css @@ -180,7 +180,7 @@ body .has-error select { } body .has-error input:focus, body .has-error select:focus { - border: 1px solid transparent; + box-shadow: 0 0 0 2.5px #fcbfbb; } body .has-error input:hover, body .has-error select:hover { diff --git a/public/scss/hop-styling.scss b/public/scss/hop-styling.scss index 667ca265d..a71e4aa41 100644 --- a/public/scss/hop-styling.scss +++ b/public/scss/hop-styling.scss @@ -193,7 +193,7 @@ body { select { border: 1px solid #d4281c; &:focus { - border: 1px solid transparent; + box-shadow: 0 0 0 2.5px #fcbfbb; } &:hover { border: 1px solid #d4281c; From bdf154b81ac1b2675edc1f40c6cb15b9f318877a Mon Sep 17 00:00:00 2001 From: Sneha Date: Mon, 18 Dec 2023 14:02:59 +0530 Subject: [PATCH 13/13] Update vehicle.vue --- src/layouts/vehicle/vehicle.vue | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/layouts/vehicle/vehicle.vue b/src/layouts/vehicle/vehicle.vue index bba7b89b8..1292983f1 100644 --- a/src/layouts/vehicle/vehicle.vue +++ b/src/layouts/vehicle/vehicle.vue @@ -225,6 +225,11 @@ export default { watch: { async selectedYear(year) { + this.makeOptions = []; + this.selectedMake = null; + this.selectedModel = null; + this.selectedStyle = null; + this.carId = null; if (year) { const result = await this.getMakeOptions(year); if (this.selectedYear == year) { @@ -236,15 +241,13 @@ export default { this.carId = null; } } - } else { - this.makeOptions = []; - this.selectedMake = null; - this.selectedModel = null; - this.selectedStyle = null; - this.carId = null; } }, async selectedMake(make) { + this.modelOptions = []; + this.selectedModel = null; + this.selectedStyle = null; + this.carId = null; if (make) { const result = await this.getModelOptions(this.selectedYear, make); if (this.selectedMake == make) { @@ -256,14 +259,12 @@ export default { this.carId = null; } } - } else { - this.modelOptions = []; - this.selectedModel = null; - this.selectedStyle = null; - this.carId = null; } }, async selectedModel(model) { + this.styleOptions = []; + this.selectedStyle = null; + this.carId = null; if (model) { const result = await this.getStyleOptions( this.selectedYear, @@ -283,10 +284,6 @@ export default { this.carId = null; } } - } else { - this.styleOptions = []; - this.selectedStyle = null; - this.carId = null; } }, async selectedStyle(style) {