diff --git a/src/App.vue b/src/App.vue index 422ae2893..f4c5754aa 100644 --- a/src/App.vue +++ b/src/App.vue @@ -36,6 +36,9 @@ export default { loadingModal, funnelFooter, }, + mounted() { + showFmgLoadingModal(true); + }, }; // Add a global Javascript exception handler for logging exceptions, this handler will log when there is an uncaught exception diff --git a/src/constants/analytics.js b/src/constants/analytics.js index f6534cda4..fe43be06d 100644 --- a/src/constants/analytics.js +++ b/src/constants/analytics.js @@ -23,7 +23,6 @@ const GaActions = { SUBMITTED: "Submitted", DISPLAYED: "Displayed", CASH_QUOTE_DISPLAYED: "Cash quote displayed", - SERVICE_PACKAGE_PRICE: "Service package price", MOBILE_AVAILABLE: "mobile_available", SHOPS_FIRST_DISPLAYED: "shops_first_displayed", MORE_LOCATIONS_CLICKED: "more_locations_clicked", diff --git a/src/constants/application-config.js b/src/constants/application-config.js index 14f195cfc..788de3fd7 100644 --- a/src/constants/application-config.js +++ b/src/constants/application-config.js @@ -6,6 +6,7 @@ const applicationConfig = { COOKIE_PATH: "/", CURRENT_ENVIRONMENT: process.env.VUE_APP_CURRENT_ENVIRONMENT, // "Localhost", "Dev", "QA", and "Prod" HERITAGE_FUNNEL: process.env.VUE_APP_HERITAGE_FUNNEL, + SAFELITE_HOP: process.env.VUE_APP_SAFELITE_HOP, APPLICATION_NAME: "FixMyGlass", ANALYTICS_APPLICATION_NAME: "FixMyGlassNextGen", APPLICATION_ABBREVIATION: "fmg", @@ -15,21 +16,12 @@ const applicationConfig = { CASH_DEFAULT_BILL_TO_ACCOUNT_NUMBER: "87291", MY_ACCOUNT: process.env.VUE_APP_MY_ACCOUNT, PIA_RESPONSE_URL: - location.protocol + - "//" + - location.host + - "/fmg/?fmgPage=payment-pia-return&src=concept-funnel", + location.protocol + "//" + location.host + "/fmg/payment-pia-return?src=concept-funnel", PIA_CANCEL_URL: - location.protocol + - "//" + - location.host + - "/fmg/?fmgPage=payment-method&src=concept-funnel", + location.protocol + "//" + location.host + "/fmg/payment-method?src=concept-funnel", PIA_ERROR_URL: - location.protocol + - "//" + - location.host + - "/fmg/?fmgPage=payment-pia-return&src=concept-funnel", - CONFIRMATION_URL: location.protocol + "//" + location.host + "/fmg/?fmgPage=confirmation", + location.protocol + "//" + location.host + "/fmg/payment-pia-return?src=concept-funnel", + CONFIRMATION_URL: location.protocol + "//" + location.host + "/fmg/confirmation", GOOGLE_CALENDAR: "https://www.google.com/calendar/render?action=TEMPLATE", YAHOO_CALENDAR: "https://calendar.yahoo.com/?v=60", OUTLOOK_CALENDAR: @@ -38,7 +30,7 @@ const applicationConfig = { AFFILIATE_COOKIE_CONTAINING_NAME: "_Track", COOKIE_NAME_LENGTH_MAX_LIMIT: 44, SESSION_TIMEOUT_MINUTES: process.env.VUE_APP_SESSION_TIMEOUT_MINUTES, - RETURN_USER_PAGE: "/fmg/?fmgPage=return-user", + RETURN_USER_PAGE: "/fmg/return-user", }; export { applicationConfig }; diff --git a/src/constants/store-actions.js b/src/constants/store-actions.js index 7b76d4064..9f0965480 100644 --- a/src/constants/store-actions.js +++ b/src/constants/store-actions.js @@ -117,6 +117,7 @@ const storeActions = { UPDATE_EXTERNAL_PARAMETER_MMS: "updateExternalParameterMMS", SAVE_LOGGING_OPTION: "saveLoggingOption", + UPDATE_HAS_TRIGGERED_ERROR: "updateHasTriggeredError", }; export { storeActions }; diff --git a/src/constants/store-mutations.js b/src/constants/store-mutations.js index 2f53d8133..f7e8d9f4b 100644 --- a/src/constants/store-mutations.js +++ b/src/constants/store-mutations.js @@ -69,6 +69,7 @@ const storeMutations = { UPDATE_SETTLED_TENDER_AMOUNT: "updateSettledTenderAmount", UPDATE_IS_RECAL_ACK_OPT_IN: "updateIsRecalAckOptIn", UPDATE_IS_MSR_FEE_APPLICABLE: "updateIsMSRFeeApplicable", + UPDATE_CASH_PRICE_SUBTOTAL: "updateCashPriceSubTotal", // EVENT BUS MUTATIONS ADD_EVENT_TO_BUS: "addEventToBus", @@ -93,6 +94,7 @@ const storeMutations = { UPDATE_SAVE_SESSION_PROMISE: "updateSaveSessionPromise", UPDATE_LAST_PAGE_VISITED: "updateLastPageVisited", UPDATE_LOGGING_OPTION: "updateLoggingOption", + UPDATE_HAS_TRIGGERED_ERROR: "updateHasTriggeredError", // EXPERIMENT MUTATIONS UPDATE_EXPERIMENTS: "updateExperiments", diff --git a/src/digital-components/base-input-button/button-functionality-props.js b/src/digital-components/base-input-button/button-functionality-props.js index fe2104457..73da5f25c 100644 --- a/src/digital-components/base-input-button/button-functionality-props.js +++ b/src/digital-components/base-input-button/button-functionality-props.js @@ -35,4 +35,9 @@ export const inputButtonProps = { default: false, }, suppressError: Boolean, + labelBold: { + type: Boolean, + required: false, + default: false, + }, }; diff --git a/src/digital-components/button-question/button-question.spec.js b/src/digital-components/button-question/button-question.spec.js index 3b7a4e80e..73c048936 100644 --- a/src/digital-components/button-question/button-question.spec.js +++ b/src/digital-components/button-question/button-question.spec.js @@ -1143,7 +1143,7 @@ describe("buttonQuestion.vue", () => { }); function setupMocks(mountOptionsMockData = {}) { - const defaultMountOptions = { route: { query: { fmgPage: "page-name" } } }; + const defaultMountOptions = { route: { name: "page-name" } }; const baseMountOptions = getMountOptions( Object.assign(defaultMountOptions, mountOptionsMockData) ); diff --git a/src/digital-components/button-question/button-question.vue b/src/digital-components/button-question/button-question.vue index 36f036379..2f1273511 100644 --- a/src/digital-components/button-question/button-question.vue +++ b/src/digital-components/button-question/button-question.vue @@ -9,7 +9,9 @@ https://safelite.atlassian.net/wiki/spaces/DC/pages/76644418/Button+Question+Com v-if="questionText && answers && answers.length > 0" class="question-text d-flex" :class="{ 'small-question-text': isSmallQuestionText }"> - {{ questionText }} + + {{ questionText }} +
@@ -57,6 +59,7 @@ https://safelite.atlassian.net/wiki/spaces/DC/pages/76644418/Button+Question+Com :setLastValuePushedToGa="setLastValuePushedToGa" :isInsuranceSelected="isInsuranceSelected" :suppressError="suppressError" + :labelBold="labelBold" @buttonEvent="handleButtonEvent" v-model="selectedValues" /> @@ -141,6 +144,11 @@ export default { default: false, }, isInsuranceSelected: Boolean, + labelBold: { + type: Boolean, + required: false, + default: false, + }, }, setup(props) { const propsClone = Object.assign({}, props); @@ -360,6 +368,9 @@ export default { & > span { text-align: center; } + .span-bold { + font-weight: 600; + } } .small-question-text { &.question-text { diff --git a/src/digital-components/date-picker/date-picker.vue b/src/digital-components/date-picker/date-picker.vue index 1a7df91e0..d81474ba2 100644 --- a/src/digital-components/date-picker/date-picker.vue +++ b/src/digital-components/date-picker/date-picker.vue @@ -688,17 +688,18 @@ export default { if (!this.months) return; this.isLoading = true; let monthToShow; - let monthStartDateNum = 0; + let monthStartDate; if (this.hideSomeDaysForInitialView) { monthToShow = this.months.find( ({ isMonthThatHidesSomeDaysForInitialView }) => isMonthThatHidesSomeDaysForInitialView ); + // find the first day-hidden to become the next api call start date - monthStartDateNum = - monthToShow.dates.find(({ dayClasses }) => dayClasses.includes("day-hidden")) - .dateNum - 1; + monthStartDate = monthToShow.dates.find(({ dayClasses }) => + dayClasses.includes("day-hidden") + ); } else { if (this.calendarViewDirection === "future") { monthToShow = this.months.find((month) => @@ -713,9 +714,13 @@ export default { } } if (monthToShow) { + const monthStartDateString = monthStartDate + ? monthStartDate.inputValue + : monthToShow.dates[0].inputValue; + // make new API call with this month's start and end dates const moreSelectableDatesData = await this.updateSelectableDates( - monthToShow.dates[monthStartDateNum].inputValue, + monthStartDateString, monthToShow.dates[monthToShow.dates.length - 1].inputValue ); this.isLoading = false; @@ -1042,6 +1047,9 @@ export default { min-width: 3rem; width: 3rem; } + &:hover { + border: 2px solid $blue; + } } } &.unavailable-day { @@ -1083,7 +1091,6 @@ export default { } input[type="radio"]:checked + label:after { background-color: $black; - top: 2rem; } } } diff --git a/src/digital-components/dropdown-question/dropdown-question.vue b/src/digital-components/dropdown-question/dropdown-question.vue index 8b3cf023f..7b52745fa 100644 --- a/src/digital-components/dropdown-question/dropdown-question.vue +++ b/src/digital-components/dropdown-question/dropdown-question.vue @@ -6,6 +6,7 @@ :for="dropdownId" :aria-label="questionText" class="form-label" + :class="[labelBold ? 'label-bold' : '']" v-html="questionText">