diff --git a/public/static/healthcheck/index.html b/public/static/healthcheck/index.html index 52e21bb5b..3f87a7587 100644 --- a/public/static/healthcheck/index.html +++ b/public/static/healthcheck/index.html @@ -545,7 +545,6 @@ { path: '/parts/parts-or-questions', method: 'POST', body: {"carId":"CR00046193","glassPieces":[{"location":"Windshield","name":"Single"}],"zip":"43015","vin":null,"serviceType":null,"referralSeqNumber":environmentContext.referralNumber,"AppName":"FixMyGlass"} }, { path: '/parts/wipers/CR00046193/43015', method: 'GET' }, { path: '/parts/mobile-premium-fee/Cash/Replace', method: 'GET' }, - { path: '/parts/service-package-discount', method: 'POST', body: {"glassPieces":[{"location":"Windshield","name":"Single"}],"damageType":"Replace","AppName":"FixMyGlass"} }, { path: '/parts/mobile-fee/?serviceType=Install&facilityType=Mobile&parentAccountNumber=167132&billToAccountNumber=87291&providerNumber=03357&isItacOptimized=false&zipCode=43015', method: 'GET' }, ] }, diff --git a/src/constants/analytics.js b/src/constants/analytics.js index fe43be06d..00088baa7 100644 --- a/src/constants/analytics.js +++ b/src/constants/analytics.js @@ -14,6 +14,7 @@ const GaCategories = { EVOX: "Evox", APPOINTMENT: "Appointment", SERVICE_LOCATION: "service-location", + CONFIRMATION_CLICKED: "confirmation clicked", }; const GaActions = { @@ -26,6 +27,8 @@ const GaActions = { MOBILE_AVAILABLE: "mobile_available", SHOPS_FIRST_DISPLAYED: "shops_first_displayed", MORE_LOCATIONS_CLICKED: "more_locations_clicked", + YES: "yes", + NO: "no", }; const GaLabels = { diff --git a/src/constants/endpoints.js b/src/constants/endpoints.js index e40fce79a..c23de7766 100644 --- a/src/constants/endpoints.js +++ b/src/constants/endpoints.js @@ -76,10 +76,6 @@ const endpoints = { url: "/parts/api/v1/parts/pricing-by-day-part-number", method: "GET", }, - GetServicePackageDiscountPart: { - url: "/parts/api/v1/parts/service-package-discount", - method: "POST", - }, GetServiceabilityDetails: { url: "/location/api/v1/location/serviceability-details", method: "GET", @@ -216,6 +212,10 @@ const endpoints = { url: "/order/api/v1/order/add-donation-part", method: "POST", }, + GetOemAfterMarketParts: { + url: "/parts/api/v1/parts/oem-after-market-parts", + method: "POST", + }, InitializeAdyenPayment: { url: "/payment/api/v1/payment/payment/session/initialize-session", method: "POST", diff --git a/src/constants/experiments.js b/src/constants/experiments.js index 0ca3987f0..a2a648a65 100644 --- a/src/constants/experiments.js +++ b/src/constants/experiments.js @@ -33,6 +33,7 @@ const experimentSettings = { SHOW_PM_MOBILE_DAYS: "Show_PMmobileDays", SHOW_NO_PM_MOBILE_DAYS: "Show_NoPMmobileDays", SHOW_NO_MOBILE_AVAILABLE_DAYS: "Show_NoMobileAvailableDays", + OFFER_OEM: "OfferOem", USE_ADYEN_PAYMENT: "UseAdyenPayment", }; diff --git a/src/constants/store-actions.js b/src/constants/store-actions.js index 513891ea1..e09a4c78b 100644 --- a/src/constants/store-actions.js +++ b/src/constants/store-actions.js @@ -23,6 +23,7 @@ const storeActions = { GET_ALERT_REASONS_BY_CTU: "getAlertReasonsByCtu", GET_PARTS_OR_QUESTIONS: "getPartsOrQuestions", GET_PARTS: "getParts", + GET_OEM_AFTERMARKET_PARTS: "getOemAfterMarketParts", GET_WIPERS: "getWipers", GET_RAIN_REPEL: "getRainRepel", GET_SUPPORTING_ITEMS: "getSupportingItems", @@ -32,7 +33,6 @@ const storeActions = { GET_MOLDING_QUESTIONS: "getMoldingQuestions", GET_MOBILE_FEE_PART: "getMobileFeePart", GET_PRICING_BY_DAY_PART: "getPricingByDayPart", - GET_SERVICE_PACKAGE_DISCOUNT_PART: "getServicePackageDiscountPart", GET_SERVICEABILITY_DETAILS: "getServiceabilityDetails", GET_SHOP_TIME_SLOTS: "getShopTimeSlots", GET_MOBILE_TIME_SLOTS: "getMobileTimeSlots", diff --git a/src/digital-components/date-picker/date-picker.vue b/src/digital-components/date-picker/date-picker.vue index 9d620ec77..f38df0372 100644 --- a/src/digital-components/date-picker/date-picker.vue +++ b/src/digital-components/date-picker/date-picker.vue @@ -466,7 +466,7 @@ export default { const response = config.getSelectableDatesCallback({ startDateString: initialViewStartDate, endDateString: initialViewEndDate, - providerNumber: config.providerNumber, + inshopProviderNumber: config.inshopProviderNumber, zipCode: config.zipCode, includeMobileTimeSlots: config.includeMobileTimeSlots, includeInshopTimeSlots: config.includeInshopTimeSlots, diff --git a/src/digital-components/modal/modal.vue b/src/digital-components/modal/modal.vue index 3c3efd05b..9f2be7764 100644 --- a/src/digital-components/modal/modal.vue +++ b/src/digital-components/modal/modal.vue @@ -160,6 +160,10 @@ export default { return this.staticBackdrop ? "static" : "true"; }, }, + unmounted() { + // remove any modal effects before leaving page (e.g. user hits browser back button) + this.closeModal(); + }, components: { modalButtonMain, }, diff --git a/src/fmg-components/save-progress-modal-question/save-progress-modal-question.vue b/src/fmg-components/save-progress-modal-question/save-progress-modal-question.vue index fe49fe30e..3bcc1a7a4 100644 --- a/src/fmg-components/save-progress-modal-question/save-progress-modal-question.vue +++ b/src/fmg-components/save-progress-modal-question/save-progress-modal-question.vue @@ -57,10 +57,6 @@ export default { modalWidgetName: String, pageName: String, }, - unmounted() { - // remove any modal effects before leaving page (e.g. user hits browser back button) - this.modal?.closeModal(); - }, computed: { buttonText() { return this.getCmsContent(this.modalWidgetName, "SubheaderText"); diff --git a/src/fmg-components/save-progress-popup-question/save-progress-popup-question.vue b/src/fmg-components/save-progress-popup-question/save-progress-popup-question.vue index 19b1b3629..318d11793 100644 --- a/src/fmg-components/save-progress-popup-question/save-progress-popup-question.vue +++ b/src/fmg-components/save-progress-popup-question/save-progress-popup-question.vue @@ -54,10 +54,6 @@ export default { mounted() { if (this.showSaveProgressPopup) this.modal.openModal(); }, - unmounted() { - // remove any modal effects before leaving page (e.g. user hits browser back button) - this.modal.closeModal(); - }, emits: ["close-save-progress-popup", "save-progress"], // <--- should remove oodles of warnings in dev tools props: { modelValue: Object, diff --git a/src/helpers/service-package-helper.js b/src/helpers/service-package-helper.js index 4144c44e7..d3fc3f01b 100644 --- a/src/helpers/service-package-helper.js +++ b/src/helpers/service-package-helper.js @@ -254,6 +254,19 @@ export function getDiscountedPackageName(discountPackage) { return package_names[discountPackage] || null; } +export function getPackageLabel(packageName) { + switch (packageName) { + case packageNames.TIER_ONE: + return externalParamPackageLabels.GLASS_ONLY; + case packageNames.TIER_TWO: + return externalParamPackageLabels.STANDARD; + case packageNames.TIER_THREE: + return externalParamPackageLabels.PREMIUM; + default: + return null; + } +} + function maxTier(tierA, tierB) { if (tierA === packageNames.TIER_THREE || tierB === packageNames.TIER_THREE) { return packageNames.TIER_THREE; diff --git a/src/layouts/mobile-details/mobile-details.vue b/src/layouts/mobile-details/mobile-details.vue index 1c1a48249..b6978a7ff 100644 --- a/src/layouts/mobile-details/mobile-details.vue +++ b/src/layouts/mobile-details/mobile-details.vue @@ -25,6 +25,11 @@ cmsWidgetName="PleaseProvideAddressWidget" class="provide-address-header" /> + e.universeName === experimentUniverses.IGQ_SkipQuote @@ -564,6 +578,7 @@ export default { isSaveProgressComplete: null, packageNumber: null, skipToInsurance: null, + servicePackageSelected: null, }; }, async mounted() { @@ -670,6 +685,9 @@ export default { vapsItemsSelectedAction(vapsItemsSelected) { this.lineItems.vaps = vapsItemsSelected; }, + servicePackageSelectedAction(newValue) { + this.servicePackageSelected = newValue; + }, quotePageDiscountSelectedAction(supportingItemsSelected) { this.lineItems.supportingItems = supportingItemsSelected; }, @@ -758,7 +776,14 @@ export default { false ); - await savePageData(this.pageName, { saveProgressPopupSkipped: true }, true); + await savePageData( + this.pageName, + { + saveProgressPopupSkipped: true, + servicePackageSelected: this.servicePackageSelected, + }, + true + ); const payment = this.$store.getters.payment; if (payment.isInsurance) { diff --git a/src/layouts/quote/service-package-question/service-package-question.vue b/src/layouts/quote/service-package-question/service-package-question.vue index e45147295..436e98b24 100644 --- a/src/layouts/quote/service-package-question/service-package-question.vue +++ b/src/layouts/quote/service-package-question/service-package-question.vue @@ -34,6 +34,7 @@ import { findLineItemsWithPartType, getPackageNameByType, getDiscountedPackageName, + getPackageLabel, } from "@/helpers/service-package-helper"; import { getPromosThatMatchLineItemsOnOrder, @@ -45,6 +46,7 @@ import { containsRecalParts, getItemsWithoutRecalParts } from "@/helpers/recal-h import experimentMixin from "@/mixins/experiment-mixin.js"; import { experimentSettings } from "@/constants/experiments"; import { savePageData } from "@/router/methods/helpers/save-page-data"; +import { debugLog } from "@/helpers/debug-log-helper"; export default { name: "servicePackageQuestion", @@ -84,6 +86,12 @@ export default { if (this.activePromos?.length) this.selectDefaultPackage(); }, selectedPackageName(newValue) { + debugLog("selectedPackageName:", newValue); + const packageLabel = getPackageLabel(newValue); + + debugLog("getPackageLabel:", packageLabel); + this.$emit("servicePackageSelected", `ServicePackage-${packageLabel}`); + const VapsProductsInSelectedPackage = this.getVapsLineItemsForSelectedPackage(newValue); this.$emit("vapsItemsSelected", VapsProductsInSelectedPackage); const discountPartInSelectedPackage = this.getDiscountPartForSelectedPackage(newValue); diff --git a/src/layouts/schedule/mobile-first-modal/mobile-first-modal.vue b/src/layouts/schedule/mobile-first-modal/mobile-first-modal.vue index 1ef9fbc54..4e6b439e8 100644 --- a/src/layouts/schedule/mobile-first-modal/mobile-first-modal.vue +++ b/src/layouts/schedule/mobile-first-modal/mobile-first-modal.vue @@ -50,7 +50,7 @@ export default { data() { return { isModalOpen: false, - selectedAppontment: { + selectedAppointment: { estimatedServiceMinutes: { minimum: null, maximum: null, @@ -58,6 +58,7 @@ export default { timeSlot: null, date: null, }, + confirmedAppointment: false, }; }, methods: { @@ -67,22 +68,25 @@ export default { this.modal.openModal(); }, onModalClosed() { + this.pushEvent(); this.$emit("close-mobile-first-modal"); + this.confirmedAppointment = false; }, closeModal() { this.modal.closeModal(); }, confirmAppointment() { let selectedTimeSlot = { - timeSlot: this.selectedAppontment.timeSlot, - routeCode: this.selectedAppontment.timeSlot.id, - date: this.selectedAppontment.date, + timeSlot: this.selectedAppointment.timeSlot, + routeCode: this.selectedAppointment.timeSlot.id, + date: this.selectedAppointment.date, }; + this.confirmedAppointment = true; this.$emit("confirm-appointment", selectedTimeSlot); this.modal.closeModal(); }, setSelectedAppointment(appointment) { - this.selectedAppontment = appointment; + this.selectedAppointment = appointment; }, getIsModalOpen() { return this.isModalOpen; @@ -90,6 +94,21 @@ export default { setIsModalOpen(isOpen) { this.isModalOpen = isOpen; }, + pushEvent() { + let gaAction = this.confirmedAppointment ? this.GaActions.YES : this.GaActions.NO; + if (this.selectedAppointment && this.selectedAppointment.timeSlot) { + this.pushEventToGA( + this.GaCategories.CONFIRMATION_CLICKED, + gaAction, + this.selectedAppointment.timeSlot.startTime + + "-" + + this.selectedAppointment.timeSlot.endTime + + " " + + this.selectedAppointment.date, + true + ); + } + }, }, computed: { modalName() { @@ -112,37 +131,37 @@ export default { if (token.includes(INLINE_SERVICETYPE_TOKEN)) { const serviceType = "" + this.getServiceType + ""; tokens.splice(tokens.indexOf(token), 1, serviceType); - } else if (token.includes(INLINE_DAY_TOKEN) && this.selectedAppontment.date) { + } else if (token.includes(INLINE_DAY_TOKEN) && this.selectedAppointment.date) { const day = "" + - new Date(this.selectedAppontment.date).toLocaleDateString("en-US", { + new Date(this.selectedAppointment.date).toLocaleDateString("en-US", { weekday: "long", timeZone: "UTC", }) + ""; tokens.splice(tokens.indexOf(token), 1, day); - } else if (token.includes(INLINE_DATE_TOKEN) && this.selectedAppontment.date) { - const date = new Date(this.selectedAppontment.date).toLocaleDateString( + } else if (token.includes(INLINE_DATE_TOKEN) && this.selectedAppointment.date) { + const date = new Date(this.selectedAppointment.date).toLocaleDateString( "en-US", { timeZone: "UTC", weekday: "long", month: "long", day: "numeric" } ); tokens.splice(tokens.indexOf(token), 1, date); } else if ( token.includes(INLINE_TIMESLOT_TOKEN) && - this.selectedAppontment.timeSlot + this.selectedAppointment.timeSlot ) { const timeslot = - this.get12HourTimeFormat(this.selectedAppontment.timeSlot.startTime) + + this.get12HourTimeFormat(this.selectedAppointment.timeSlot.startTime) + " - " + - this.get12HourTimeFormat(this.selectedAppontment.timeSlot.endTime); + this.get12HourTimeFormat(this.selectedAppointment.timeSlot.endTime); tokens.splice(tokens.indexOf(token), 1, timeslot); } else if ( token.includes(INLINE_SERVICE_LENGTH_TOKEN) && - this.selectedAppontment.estimatedServiceMinutes + this.selectedAppointment.estimatedServiceMinutes ) { const inshopDurationTime = getDisplayTextForDurationLength( - this.selectedAppontment.estimatedServiceMinutes.minimum, - this.selectedAppontment.estimatedServiceMinutes.maximum + this.selectedAppointment.estimatedServiceMinutes.minimum, + this.selectedAppointment.estimatedServiceMinutes.maximum ); tokens.splice(tokens.indexOf(token), 1, inshopDurationTime); } diff --git a/src/layouts/schedule/schedule.vue b/src/layouts/schedule/schedule.vue index 62a669bcd..948a7de19 100644 --- a/src/layouts/schedule/schedule.vue +++ b/src/layouts/schedule/schedule.vue @@ -286,6 +286,7 @@ const getScheduleApiResponse = async ({ startDateString, endDateString, providerNumber, + inshopProviderNumber, zipCode, includeMobileTimeSlots = true, includeInshopTimeSlots = true, @@ -328,7 +329,7 @@ const getScheduleApiResponse = async ({ startDate: apiStartDate, endDate: apiEndDate, shopAppointmentType: "InshopOrDropoff", - providerNumber: providerNumber, + providerNumber: inshopProviderNumber, }, }; if (apiStartDate < apiEndDate) { @@ -632,6 +633,9 @@ export default { return this.isGlassServiceableMobile; } }, + closestInshopProviderNumber() { + return this.shopProviderData?.shopProviders[0]?.providerNumber; + }, showTimeSlotQuestion() { if ( this.selectedDate && @@ -1166,6 +1170,9 @@ export default { startDateString: startDate, endDateString: endDate, providerNumber: this.selectedProvider?.providerNumber, + inshopProviderNumber: this.isMobileSelected + ? this.closestInshopProviderNumber + : this.selectedProvider?.providerNumber, zipCode: this.zipCode, includeMobileTimeSlots: this.isServiceableMobile, includeInshopTimeSlots: this.isServiceableInshop || this.isServiceableDropoff, @@ -1194,6 +1201,9 @@ export default { getSelectableDatesCallback: getScheduleApiResponse, preSelectedDate: this.preSelectedDate, providerNumber: this.selectedProvider?.providerNumber, + inshopProviderNumber: this.isMobileSelected + ? this.closestInshopProviderNumber + : this.selectedProvider?.providerNumber, zipCode: this.zipCode, includeMobileTimeSlots: includeMobileTimeSlots, includeInshopTimeSlots: includeInshopTimeSlots, @@ -1655,6 +1665,8 @@ export default { this.updateSelectedProvider(); }, updateSelectedProvider(newShopProvider) { + if (!this.appointmentTypeStrings) return; + if (newShopProvider) { this.selectedProvider = newShopProvider; } else if (this.appointmentType === this.appointmentTypeStrings.MOBILE) { @@ -1731,7 +1743,11 @@ export default { this.appointmentType = AppointmentTypeStrings.IN_SHOP_OR_DROP_OFF; } // make sure a selectedProvider exists - this.updateSelectedProvider(this.lastSelectedInshopOrDropoffProvider); + if (this.lastSelectedInshopOrDropoffProvider) { + this.updateSelectedProvider(this.lastSelectedInshopOrDropoffProvider); + } else { + this.updateSelectedProvider(); + } } else { this.appointmentType = null; } @@ -1798,23 +1814,34 @@ export default { } if (this.isShowMobileFirstAppt) { - if (firstMobilePMDate && numberOfDaysToFirstMobilePMDate <= pmMobileDays) { + if (pmMobileDays == 0) { + // Selects the first available time slot + preSelectedMobileAppointment = + numberOfDaysToFirstMobileAMDate <= numberOfDaysToFirstMobilePMDate + ? firstMobileAMAppt + : firstMobilePMAppt; + } else if ( + firstMobilePMDate && + numberOfDaysToFirstMobilePMDate <= pmMobileDays + ) { + // Selects the first available PM time slot preSelectedMobileAppointment = firstMobilePMAppt; } else if ( firstMobilePMDate && numberOfDaysToFirstMobilePMDate >= noPMMobileDays ) { + // Selects the first available AM time slot. If none, selects the first available PM time slot preSelectedMobileAppointment = firstMobileAMAppt ? firstMobileAMAppt - : null; - !preSelectedMobileAppointment && - (preSelectedMobileAppointment = firstMobilePMAppt); + : firstMobilePMAppt; } - this.$refs.mobileFirstModal.setSelectedAppointment( - preSelectedMobileAppointment - ); - this.$refs.mobileFirstModal.openModal(); + if (preSelectedMobileAppointment) { + this.$refs.mobileFirstModal.setSelectedAppointment( + preSelectedMobileAppointment + ); + this.$refs.mobileFirstModal.openModal(); + } } } } diff --git a/src/layouts/schedule/time-slot-modal-question/time-slot-modal-question.vue b/src/layouts/schedule/time-slot-modal-question/time-slot-modal-question.vue index e36ccc946..07cb185d0 100644 --- a/src/layouts/schedule/time-slot-modal-question/time-slot-modal-question.vue +++ b/src/layouts/schedule/time-slot-modal-question/time-slot-modal-question.vue @@ -548,9 +548,6 @@ export default { } }, }, - unmounted() { - if (this.isModalOpened) this.closeModal(); - }, watch: { waitListRequested(newVal) { if (newVal) { diff --git a/src/mixins/analytics-mixin.js b/src/mixins/analytics-mixin.js index a77fe930a..0be50a8be 100644 --- a/src/mixins/analytics-mixin.js +++ b/src/mixins/analytics-mixin.js @@ -232,6 +232,21 @@ export default { (part) => `${part.glassLocation}-${part.glassName}` ); + const format = (part) => `${part?.partNumber}-${part?.partType ? part.partType : ""}`; + const mapParts = (arr) => (arr ?? []).map(format); + + const glassParts = mapParts(order?.lineItems?.glassParts); + const supportingItems = mapParts(order?.lineItems?.supportingItems); + const vaps = mapParts(order?.lineItems?.vaps); + const childParts = [].concat( + ...(order?.lineItems?.glassParts ?? []).map((gp) => mapParts(gp?.childParts)) + ); + const allParts = [...glassParts, ...supportingItems, ...vaps, ...childParts]; + + if (applicationUser?.pageData?.quote?.servicePackageSelected) { + allParts.push(applicationUser.pageData.quote.servicePackageSelected); + } + var appointment = `${order?.schedule?.date ?? ""} ${order?.schedule?.startTime ?? ""}`; var sessionData = {}; @@ -251,7 +266,7 @@ export default { ? "Insurance" : "Cash"; sessionData.damageType = order?.damage?.isRepair ? "Repair" : "Replace"; - sessionData.productType = glassProducts; + sessionData.productType = allParts; sessionData.eon = order?.eon; sessionData.referralNumber = order?.referralNumber; sessionData.referralSequenceNumber = order?.referralSequenceNumber; diff --git a/src/store/index.js b/src/store/index.js index 14ecceece..1c1f4038f 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1838,6 +1838,56 @@ export const actions = { return response; }, + // Parts API Actions + async getOemAfterMarketParts(context, { pageNameToLog }) { + const vehicle = context.getters.vehicle; + const damage = context.getters.damage; + const order = context.state.order; + + const carId = vehicle.carId; + const glassArray = damage.glassToReplace; + const resultsArray = damage.partQuestionAnswers; + const zipCode = order.serviceLocation.zipCode; + const vin = vehicle.vin; + const make = vehicle.make; + const serviceType = order.serviceLocation?.appointmentType; + const referralSeqNumber = order.referralSequenceNumber; + const parentAccountNumber = applicationConfig.CASH_PARENT_ACCOUNT_NUMBER; + const oemEndorsementFlag = false; // Need to update from the store when available + + // create a new array to avoid mutating state + const glassArrayForPayload = convertGlassPieceNamingForApi(glassArray); + const resultsArrayForPayload = convertResultsForApi(resultsArray); + + const response = await globalMethods.callHttpClient({ + method: endpoints.GetOemAfterMarketParts.method, + endpoint: endpoints.GetOemAfterMarketParts.url, + payload: { + carId: carId, + glassPieces: glassArrayForPayload, + answerResults: resultsArrayForPayload, + zip: zipCode, + vin: vin, + serviceType: serviceType, + referralSeqNumber: referralSeqNumber, + make: make, + parentAccountNumber: parentAccountNumber.toString(), + oemEndorsementFlag: oemEndorsementFlag, + }, + logApiCall: true, + pageNameToLog: pageNameToLog, + }); + + // Flatten location and name properties + if (response?.data?.glassPieceParts) { + response.data.glassPieceParts = convertGlassPieceNamingFromApi( + response.data.glassPieceParts + ); + } + + return response; + }, + async getWipers(context, { payload, pageNameToLog }) { const carId = payload.carId; const serviceZipCode = payload.serviceZipCode; @@ -1938,26 +1988,6 @@ export const actions = { return response; }); }, - getServicePackageDiscountPart(context, { pageNameToLog }) { - const damage = context.getters.damage; - const damageType = damage.isRepair ? "Repair" : "Replace"; - const glassPieces = convertGlassPieceNamingForApi(damage.glassToReplace); - - return globalMethods - .callHttpClient({ - method: endpoints.GetServicePackageDiscountPart.method, - endpoint: endpoints.GetServicePackageDiscountPart.url, - payload: { - glassPieces: glassPieces, - damageType: damageType, - }, - logApiCall: true, - pageNameToLog: pageNameToLog, - }) - .then((response) => { - return response; - }); - }, getServiceabilityDetails(context, { payload: { serviceZipCode }, pageNameToLog }) { const escapeRecalibrationType = (rt) => rt.split("&").join("%26"); diff --git a/src/styles/ux-variables.scss b/src/styles/ux-variables.scss index 0c275ad51..770d95b42 100644 --- a/src/styles/ux-variables.scss +++ b/src/styles/ux-variables.scss @@ -123,8 +123,8 @@ $body-color: $gray-600; //Fonts $font-family-sans-serif: UrbanistRegular, Arial, Helvetica, sans-serif; -$font-family-monospace: - UrbanistRegular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +$font-family-monospace: UrbanistRegular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", + monospace; // stylelint-enable value-keyword-case $font-family-base: $font-family-sans-serif; $font-family-code: $font-family-monospace; diff --git a/src/ux-components/text-link/text-link.vue b/src/ux-components/text-link/text-link.vue index cae562b08..92714e740 100644 --- a/src/ux-components/text-link/text-link.vue +++ b/src/ux-components/text-link/text-link.vue @@ -15,7 +15,7 @@ {{ text }} - {{ text }} + {{ text }}