diff --git a/src/constants/error-messages.js b/src/constants/error-messages.js index 262979ed4..c5ed73756 100644 --- a/src/constants/error-messages.js +++ b/src/constants/error-messages.js @@ -34,7 +34,8 @@ const errorMessages = { PHONE_FORMAT: "Phone number must be 10 digits", PHONE_EXTENSION_FORMAT: "The specified extension is invalid", SMS_CONSENT_REQUIRED_1: "Please select checkbox to receive text messages", - SMS_CONSENT_REQUIRED_2: "Please select at least one consent option", + SMS_CONSENT_REQUIRED_2: + "To receive communication about your saved progress, please check the first box. You can opt out at any time!", YEAR_REQUIRED: "Please select your vehicle year", MAKE_REQUIRED: "Please select your vehicle make", MODEL_REQUIRED: "Please select your vehicle model", 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 21b362b34..0a67bbd02 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 @@ -364,27 +364,33 @@ export default { transition: background 0s 0s ease-in-out; } } - .alert { + .alert.alert-success { border-radius: $border-radius-lg; border: 1px solid $green; order: 2; margin: 0 0 1.5rem 0; + + .alert-heading { + position: relative; + font-weight: 600; + font-size: 1rem; + color: $black; + text-align: left; + padding-left: 1.5rem; + &::before { + position: absolute; + content: ""; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath fill='%230C7E47' d='M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0Zm3.7 6.171-4.449 4.45a.559.559 0 0 1-.8 0l-2.16-2.16a.563.563 0 0 1 .792-.8l1.76 1.76 4.066-4.042a.563.563 0 1 1 .792.8v-.008Z'/%3E%3C/svg%3E"); + width: 1rem; + height: 1rem; + top: 6px; + left: 0; + } + } } - .alert-heading { - position: relative; - font-weight: 600; - font-size: 1rem; - color: $black; - text-align: left; - padding-left: 1.5rem; - &::before { - position: absolute; - content: ""; - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath fill='%230C7E47' d='M8 0a8 8 0 1 0 0 16A8 8 0 0 0 8 0Zm3.7 6.171-4.449 4.45a.559.559 0 0 1-.8 0l-2.16-2.16a.563.563 0 0 1 .792-.8l1.76 1.76 4.066-4.042a.563.563 0 1 1 .792.8v-.008Z'/%3E%3C/svg%3E"); - width: 1rem; - height: 1rem; - top: 6px; - left: 0; + .alert.alert-warning.text-center { + .alert-heading { + color: $gray-650; } } .modal.modal-component .modal-dialog .modal-content { diff --git a/src/fmg-components/save-progress-popup-question/save-progress-popup-sms-consent-question.spec.js b/src/fmg-components/save-progress-popup-question/save-progress-popup-sms-consent-question.spec.js index 67d50dd4b..997f6983e 100644 --- a/src/fmg-components/save-progress-popup-question/save-progress-popup-sms-consent-question.spec.js +++ b/src/fmg-components/save-progress-popup-question/save-progress-popup-sms-consent-question.spec.js @@ -88,8 +88,7 @@ describe("save-progress-popup-sms-consent-question", () => { const checkboxes = wrapper.findAllComponents({ name: "checkboxQuestion" }); expect(checkboxes.at(0).props("hasError")).toBe(false); - expect(wrapper.text()).not.toContain(errorMessages.SMS_CONSENT_REQUIRED_1); - expect(wrapper.text()).not.toContain(errorMessages.SMS_CONSENT_REQUIRED_2); + expect(wrapper.findComponent({ name: "alert" }).exists()).toBe(false); }); it("should show the transactional consent error when consent management is disabled", async () => { @@ -103,14 +102,17 @@ describe("save-progress-popup-sms-consent-question", () => { await wrapper.setProps({ showConsentErrors: true }); - expect(wrapper.text()).toContain(errorMessages.SMS_CONSENT_REQUIRED_1); - expect(wrapper.text()).not.toContain(errorMessages.SMS_CONSENT_REQUIRED_2); + const errorAlert = wrapper.findComponent({ name: "alert" }); + expect(errorAlert.exists()).toBe(true); + expect(errorAlert.props("manualHeadline")).toBe(errorMessages.SMS_CONSENT_REQUIRED_1); + expect(errorAlert.props("alertClass")).toBe("alert-warning"); + expect(errorAlert.props("hasBorder")).toBe(true); const checkboxes = wrapper.findAllComponents({ name: "checkboxQuestion" }); expect(checkboxes.at(0).props("hasError")).toBe(true); }); - it("should show the multi-consent error when consent management is enabled", async () => { + it("should show the transactional consent error when consent management is enabled", async () => { const wrapper = shallowMount(saveProgressPopupSmsConsentQuestion, { propsData: { modelValue: defaultSaveProgressSmsConsent(), @@ -121,8 +123,11 @@ describe("save-progress-popup-sms-consent-question", () => { await wrapper.setProps({ showConsentErrors: true }); - expect(wrapper.text()).toContain(errorMessages.SMS_CONSENT_REQUIRED_2); - expect(wrapper.text()).not.toContain(errorMessages.SMS_CONSENT_REQUIRED_1); + const errorAlert = wrapper.findComponent({ name: "alert" }); + expect(errorAlert.exists()).toBe(true); + expect(errorAlert.props("manualHeadline")).toBe(errorMessages.SMS_CONSENT_REQUIRED_2); + expect(errorAlert.props("alertClass")).toBe("alert-warning"); + expect(errorAlert.props("hasBorder")).toBe(true); const checkboxes = wrapper.findAllComponents({ name: "checkboxQuestion" }); expect(checkboxes.at(0).props("hasError")).toBe(true); diff --git a/src/fmg-components/save-progress-popup-question/save-progress-popup-sms-consent-question.vue b/src/fmg-components/save-progress-popup-question/save-progress-popup-sms-consent-question.vue index 29fc45f71..d43665254 100644 --- a/src/fmg-components/save-progress-popup-question/save-progress-popup-sms-consent-question.vue +++ b/src/fmg-components/save-progress-popup-question/save-progress-popup-sms-consent-question.vue @@ -16,18 +16,21 @@ :labelText="consentCopy.marketing" :hasError="showConsentError" :isDisabled="isDisabled" /> - - {{ consentErrorMessage }} - + class="mt-1" + cmsWidgetName="SaveProgressSmsConsentErrorAlert" + :manualHeadline="consentErrorMessage" + alertClass="alert-warning" + :hasBorder="true" + :isDismissible="false" + :shouldScrollToOnMount="false" /> @@ -99,8 +103,10 @@ export default { margin: 0; padding: 0; - &__error { - color: $red; + .alert.alert-warning { + :deep(.alert-heading) { + color: $gray-650; + } } }