diff --git a/.changeset/form-field-hint-prop.md b/.changeset/form-field-hint-prop.md new file mode 100644 index 000000000..d6e07c620 --- /dev/null +++ b/.changeset/form-field-hint-prop.md @@ -0,0 +1,5 @@ +--- +"@shopware-ag/meteor-component-library": minor +--- + +Add an optional `hint` prop to all form fields for rendering a caption below the field. The existing `#hint` slot still works and takes precedence. Hint content now renders with a consistent info-icon style, which also applies to existing `#hint` slot usage. diff --git a/packages/component-library/__snapshots__/components-colorpicker-interaction-tests--visual-test-hint-prop-snap.png b/packages/component-library/__snapshots__/components-colorpicker-interaction-tests--visual-test-hint-prop-snap.png new file mode 100644 index 000000000..d81211aca Binary files /dev/null and b/packages/component-library/__snapshots__/components-colorpicker-interaction-tests--visual-test-hint-prop-snap.png differ diff --git a/packages/component-library/__snapshots__/components-colorpicker-interaction-tests--visual-test-hint-slot-snap.png b/packages/component-library/__snapshots__/components-colorpicker-interaction-tests--visual-test-hint-slot-snap.png new file mode 100644 index 000000000..fc22a96c6 Binary files /dev/null and b/packages/component-library/__snapshots__/components-colorpicker-interaction-tests--visual-test-hint-slot-snap.png differ diff --git a/packages/component-library/__snapshots__/components-email-field-interaction-tests--visual-test-hint-prop-snap.png b/packages/component-library/__snapshots__/components-email-field-interaction-tests--visual-test-hint-prop-snap.png new file mode 100644 index 000000000..4501f1c83 Binary files /dev/null and b/packages/component-library/__snapshots__/components-email-field-interaction-tests--visual-test-hint-prop-snap.png differ diff --git a/packages/component-library/__snapshots__/components-email-field-interaction-tests--visual-test-hint-slot-snap.png b/packages/component-library/__snapshots__/components-email-field-interaction-tests--visual-test-hint-slot-snap.png new file mode 100644 index 000000000..9e58c5991 Binary files /dev/null and b/packages/component-library/__snapshots__/components-email-field-interaction-tests--visual-test-hint-slot-snap.png differ diff --git a/packages/component-library/__snapshots__/components-mt-email-field-interaction-tests--visual-test-hint-snap.png b/packages/component-library/__snapshots__/components-mt-email-field-interaction-tests--visual-test-hint-snap.png index dc7fc52d3..5c0344ab1 100644 Binary files a/packages/component-library/__snapshots__/components-mt-email-field-interaction-tests--visual-test-hint-snap.png and b/packages/component-library/__snapshots__/components-mt-email-field-interaction-tests--visual-test-hint-snap.png differ diff --git a/packages/component-library/__snapshots__/components-mt-number-field-interaction-tests--visual-test-hint-snap.png b/packages/component-library/__snapshots__/components-mt-number-field-interaction-tests--visual-test-hint-snap.png index 0605eab7e..8fb1184d9 100644 Binary files a/packages/component-library/__snapshots__/components-mt-number-field-interaction-tests--visual-test-hint-snap.png and b/packages/component-library/__snapshots__/components-mt-number-field-interaction-tests--visual-test-hint-snap.png differ diff --git a/packages/component-library/__snapshots__/components-mt-password-field-interaction-tests--visual-test-hint-snap.png b/packages/component-library/__snapshots__/components-mt-password-field-interaction-tests--visual-test-hint-snap.png index 0cef6ee1f..716013161 100644 Binary files a/packages/component-library/__snapshots__/components-mt-password-field-interaction-tests--visual-test-hint-snap.png and b/packages/component-library/__snapshots__/components-mt-password-field-interaction-tests--visual-test-hint-snap.png differ diff --git a/packages/component-library/__snapshots__/components-mt-radio-group-interaction-tests--visual-test-hint-snap.png b/packages/component-library/__snapshots__/components-mt-radio-group-interaction-tests--visual-test-hint-snap.png index 683d6441f..3922bb688 100644 Binary files a/packages/component-library/__snapshots__/components-mt-radio-group-interaction-tests--visual-test-hint-snap.png and b/packages/component-library/__snapshots__/components-mt-radio-group-interaction-tests--visual-test-hint-snap.png differ diff --git a/packages/component-library/__snapshots__/components-mt-select-interaction-tests--visual-test-hint-snap.png b/packages/component-library/__snapshots__/components-mt-select-interaction-tests--visual-test-hint-snap.png index 0d9ab407c..bd1b54a14 100644 Binary files a/packages/component-library/__snapshots__/components-mt-select-interaction-tests--visual-test-hint-snap.png and b/packages/component-library/__snapshots__/components-mt-select-interaction-tests--visual-test-hint-snap.png differ diff --git a/packages/component-library/__snapshots__/components-mt-text-field-interaction-tests--visual-test-character-count-with-hint-snap.png b/packages/component-library/__snapshots__/components-mt-text-field-interaction-tests--visual-test-character-count-with-hint-snap.png index 8aa9b1216..f808c0eb3 100644 Binary files a/packages/component-library/__snapshots__/components-mt-text-field-interaction-tests--visual-test-character-count-with-hint-snap.png and b/packages/component-library/__snapshots__/components-mt-text-field-interaction-tests--visual-test-character-count-with-hint-snap.png differ diff --git a/packages/component-library/__snapshots__/components-mt-text-field-interaction-tests--visual-test-hint-snap.png b/packages/component-library/__snapshots__/components-mt-text-field-interaction-tests--visual-test-hint-snap.png index 44605b7ac..f539a4067 100644 Binary files a/packages/component-library/__snapshots__/components-mt-text-field-interaction-tests--visual-test-hint-snap.png and b/packages/component-library/__snapshots__/components-mt-text-field-interaction-tests--visual-test-hint-snap.png differ diff --git a/packages/component-library/__snapshots__/components-mt-textarea-interaction-tests--visual-test-character-count-with-hint-snap.png b/packages/component-library/__snapshots__/components-mt-textarea-interaction-tests--visual-test-character-count-with-hint-snap.png index d40c6eead..3ebd1555b 100644 Binary files a/packages/component-library/__snapshots__/components-mt-textarea-interaction-tests--visual-test-character-count-with-hint-snap.png and b/packages/component-library/__snapshots__/components-mt-textarea-interaction-tests--visual-test-character-count-with-hint-snap.png differ diff --git a/packages/component-library/__snapshots__/components-mt-textarea-interaction-tests--visual-test-hint-snap.png b/packages/component-library/__snapshots__/components-mt-textarea-interaction-tests--visual-test-hint-snap.png index 22d4166ec..40477539b 100644 Binary files a/packages/component-library/__snapshots__/components-mt-textarea-interaction-tests--visual-test-hint-snap.png and b/packages/component-library/__snapshots__/components-mt-textarea-interaction-tests--visual-test-hint-snap.png differ diff --git a/packages/component-library/__snapshots__/components-mt-url-field-interaction-tests--visual-test-hint-snap.png b/packages/component-library/__snapshots__/components-mt-url-field-interaction-tests--visual-test-hint-snap.png index c189b874d..39c6d6161 100644 Binary files a/packages/component-library/__snapshots__/components-mt-url-field-interaction-tests--visual-test-hint-snap.png and b/packages/component-library/__snapshots__/components-mt-url-field-interaction-tests--visual-test-hint-snap.png differ diff --git a/packages/component-library/__snapshots__/components-number-field-interaction-tests--visual-test-hint-prop-snap.png b/packages/component-library/__snapshots__/components-number-field-interaction-tests--visual-test-hint-prop-snap.png new file mode 100644 index 000000000..f3260f9b5 Binary files /dev/null and b/packages/component-library/__snapshots__/components-number-field-interaction-tests--visual-test-hint-prop-snap.png differ diff --git a/packages/component-library/__snapshots__/components-number-field-interaction-tests--visual-test-hint-slot-snap.png b/packages/component-library/__snapshots__/components-number-field-interaction-tests--visual-test-hint-slot-snap.png new file mode 100644 index 000000000..4b9f88798 Binary files /dev/null and b/packages/component-library/__snapshots__/components-number-field-interaction-tests--visual-test-hint-slot-snap.png differ diff --git a/packages/component-library/__snapshots__/components-password-field-interaction-tests--visual-test-hint-prop-snap.png b/packages/component-library/__snapshots__/components-password-field-interaction-tests--visual-test-hint-prop-snap.png new file mode 100644 index 000000000..45eb05987 Binary files /dev/null and b/packages/component-library/__snapshots__/components-password-field-interaction-tests--visual-test-hint-prop-snap.png differ diff --git a/packages/component-library/__snapshots__/components-password-field-interaction-tests--visual-test-hint-slot-snap.png b/packages/component-library/__snapshots__/components-password-field-interaction-tests--visual-test-hint-slot-snap.png new file mode 100644 index 000000000..2edcb8bc4 Binary files /dev/null and b/packages/component-library/__snapshots__/components-password-field-interaction-tests--visual-test-hint-slot-snap.png differ diff --git a/packages/component-library/__snapshots__/components-radio-group-interaction-tests--visual-test-hint-prop-snap.png b/packages/component-library/__snapshots__/components-radio-group-interaction-tests--visual-test-hint-prop-snap.png new file mode 100644 index 000000000..2859483b8 Binary files /dev/null and b/packages/component-library/__snapshots__/components-radio-group-interaction-tests--visual-test-hint-prop-snap.png differ diff --git a/packages/component-library/__snapshots__/components-radio-group-interaction-tests--visual-test-hint-slot-snap.png b/packages/component-library/__snapshots__/components-radio-group-interaction-tests--visual-test-hint-slot-snap.png new file mode 100644 index 000000000..aa8d5e1b4 Binary files /dev/null and b/packages/component-library/__snapshots__/components-radio-group-interaction-tests--visual-test-hint-slot-snap.png differ diff --git a/packages/component-library/__snapshots__/components-select-interaction-tests--visual-test-hint-prop-snap.png b/packages/component-library/__snapshots__/components-select-interaction-tests--visual-test-hint-prop-snap.png new file mode 100644 index 000000000..877ae6dca Binary files /dev/null and b/packages/component-library/__snapshots__/components-select-interaction-tests--visual-test-hint-prop-snap.png differ diff --git a/packages/component-library/__snapshots__/components-select-interaction-tests--visual-test-hint-slot-snap.png b/packages/component-library/__snapshots__/components-select-interaction-tests--visual-test-hint-slot-snap.png new file mode 100644 index 000000000..ddcfd5019 Binary files /dev/null and b/packages/component-library/__snapshots__/components-select-interaction-tests--visual-test-hint-slot-snap.png differ diff --git a/packages/component-library/__snapshots__/components-slider-interaction-tests--visual-test-hint-prop-snap.png b/packages/component-library/__snapshots__/components-slider-interaction-tests--visual-test-hint-prop-snap.png new file mode 100644 index 000000000..4cab36be2 Binary files /dev/null and b/packages/component-library/__snapshots__/components-slider-interaction-tests--visual-test-hint-prop-snap.png differ diff --git a/packages/component-library/__snapshots__/components-slider-interaction-tests--visual-test-hint-slot-snap.png b/packages/component-library/__snapshots__/components-slider-interaction-tests--visual-test-hint-slot-snap.png new file mode 100644 index 000000000..22d226dc7 Binary files /dev/null and b/packages/component-library/__snapshots__/components-slider-interaction-tests--visual-test-hint-slot-snap.png differ diff --git a/packages/component-library/__snapshots__/components-text-field-interaction-tests--visual-test-hint-prop-snap.png b/packages/component-library/__snapshots__/components-text-field-interaction-tests--visual-test-hint-prop-snap.png new file mode 100644 index 000000000..31910df33 Binary files /dev/null and b/packages/component-library/__snapshots__/components-text-field-interaction-tests--visual-test-hint-prop-snap.png differ diff --git a/packages/component-library/__snapshots__/components-text-field-interaction-tests--visual-test-hint-slot-snap.png b/packages/component-library/__snapshots__/components-text-field-interaction-tests--visual-test-hint-slot-snap.png new file mode 100644 index 000000000..70915f4c2 Binary files /dev/null and b/packages/component-library/__snapshots__/components-text-field-interaction-tests--visual-test-hint-slot-snap.png differ diff --git a/packages/component-library/__snapshots__/components-textarea-interaction-tests--visual-test-hint-prop-snap.png b/packages/component-library/__snapshots__/components-textarea-interaction-tests--visual-test-hint-prop-snap.png new file mode 100644 index 000000000..2b02f5e5f Binary files /dev/null and b/packages/component-library/__snapshots__/components-textarea-interaction-tests--visual-test-hint-prop-snap.png differ diff --git a/packages/component-library/__snapshots__/components-textarea-interaction-tests--visual-test-hint-slot-snap.png b/packages/component-library/__snapshots__/components-textarea-interaction-tests--visual-test-hint-slot-snap.png new file mode 100644 index 000000000..778984e66 Binary files /dev/null and b/packages/component-library/__snapshots__/components-textarea-interaction-tests--visual-test-hint-slot-snap.png differ diff --git a/packages/component-library/__snapshots__/components-unit-field-interaction-tests--visual-test-hint-prop-snap.png b/packages/component-library/__snapshots__/components-unit-field-interaction-tests--visual-test-hint-prop-snap.png new file mode 100644 index 000000000..21377e753 Binary files /dev/null and b/packages/component-library/__snapshots__/components-unit-field-interaction-tests--visual-test-hint-prop-snap.png differ diff --git a/packages/component-library/__snapshots__/components-unit-field-interaction-tests--visual-test-hint-slot-snap.png b/packages/component-library/__snapshots__/components-unit-field-interaction-tests--visual-test-hint-slot-snap.png new file mode 100644 index 000000000..807b960ba Binary files /dev/null and b/packages/component-library/__snapshots__/components-unit-field-interaction-tests--visual-test-hint-slot-snap.png differ diff --git a/packages/component-library/__snapshots__/components-url-field-interaction-tests--visual-test-hint-prop-snap.png b/packages/component-library/__snapshots__/components-url-field-interaction-tests--visual-test-hint-prop-snap.png new file mode 100644 index 000000000..34a0d2ba3 Binary files /dev/null and b/packages/component-library/__snapshots__/components-url-field-interaction-tests--visual-test-hint-prop-snap.png differ diff --git a/packages/component-library/__snapshots__/components-url-field-interaction-tests--visual-test-hint-slot-snap.png b/packages/component-library/__snapshots__/components-url-field-interaction-tests--visual-test-hint-slot-snap.png new file mode 100644 index 000000000..c659f3a71 Binary files /dev/null and b/packages/component-library/__snapshots__/components-url-field-interaction-tests--visual-test-hint-slot-snap.png differ diff --git a/packages/component-library/src/components/_internal/mt-field-hint/mt-field-hint.spec.ts b/packages/component-library/src/components/_internal/mt-field-hint/mt-field-hint.spec.ts new file mode 100644 index 000000000..af2871fb1 --- /dev/null +++ b/packages/component-library/src/components/_internal/mt-field-hint/mt-field-hint.spec.ts @@ -0,0 +1,34 @@ +import { render, screen } from "@testing-library/vue"; +import { describe, it, expect } from "vitest"; +import MtFieldHint from "./mt-field-hint.vue"; + +describe("mt-field-hint", () => { + it("renders markup passed into the default slot", () => { + // ARRANGE + render(MtFieldHint, { + slots: { + default: 'Some hint', + }, + }); + + // ASSERT + const slotContent = screen.getByTestId("custom-hint"); + expect(slotContent).toBeVisible(); + expect(slotContent.querySelector("strong")).toHaveTextContent("hint"); + }); + + it("renders a decorative info icon that is hidden from assistive technology", () => { + // ARRANGE + const { container } = render(MtFieldHint, { + slots: { + default: "Some hint", + }, + }); + + // ASSERT + // the icon is purely decorative, so it must be hidden from screen readers + const icon = container.querySelector(".mt-field-hint__icon"); + expect(icon).toBeInTheDocument(); + expect(icon).toHaveAttribute("aria-hidden", "true"); + }); +}); diff --git a/packages/component-library/src/components/_internal/mt-field-hint/mt-field-hint.vue b/packages/component-library/src/components/_internal/mt-field-hint/mt-field-hint.vue new file mode 100644 index 000000000..d53cad38e --- /dev/null +++ b/packages/component-library/src/components/_internal/mt-field-hint/mt-field-hint.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/packages/component-library/src/components/mt-colorpicker/mt-colorpicker.interactive.stories.ts b/packages/component-library/src/components/mt-colorpicker/mt-colorpicker.interactive.stories.ts index 06bb2c521..b1be644db 100644 --- a/packages/component-library/src/components/mt-colorpicker/mt-colorpicker.interactive.stories.ts +++ b/packages/component-library/src/components/mt-colorpicker/mt-colorpicker.interactive.stories.ts @@ -1,6 +1,7 @@ import { within, userEvent, fireEvent } from "@storybook/test"; import { expect } from "@storybook/test"; +import MtColorpicker from "./mt-colorpicker.vue"; import meta, { type MtColorpickerMeta, type MtColorpickerStory } from "./mt-colorpicker.stories"; import { waitUntil } from "@/_internal/test-helper"; @@ -598,3 +599,34 @@ export const VisualTestColorpickerWithHelpText: MtColorpickerStory = { expect(canvas.getByRole("tooltip")).toBeInTheDocument(); }, }; + +export const VisualTestHintProp: MtColorpickerStory = { + name: "Should display hint via prop", + args: { + hint: "Hint via prop", + }, + render: (args) => ({ + components: { MtColorpicker }, + setup: () => ({ args }), + template: ``, + }), + play: ({ canvasElement }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("Hint via prop")).toBeDefined(); + }, +}; + +export const VisualTestHintSlot: MtColorpickerStory = { + name: "Should display hint via slot", + render: (args) => ({ + components: { MtColorpicker }, + setup: () => ({ args }), + template: ``, + }), + play: ({ canvasElement }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("Hint via slot")).toBeDefined(); + }, +}; diff --git a/packages/component-library/src/components/mt-colorpicker/mt-colorpicker.spec.ts b/packages/component-library/src/components/mt-colorpicker/mt-colorpicker.spec.ts index 609d1e8e6..e453f5216 100644 --- a/packages/component-library/src/components/mt-colorpicker/mt-colorpicker.spec.ts +++ b/packages/component-library/src/components/mt-colorpicker/mt-colorpicker.spec.ts @@ -152,4 +152,45 @@ describe("mt-colorpicker", () => { }), ); }); + + it("displays a hint passed via the hint prop", () => { + // ARRANGE + render(MtColorpicker, { + props: { + modelValue: "#0fcff5", + hint: "Hint from prop", + }, + }); + + // ASSERT + expect(screen.getByText("Hint from prop")).toBeVisible(); + }); + + it("renders markup passed via the hint slot", () => { + // ARRANGE + render(MtColorpicker, { + props: { + modelValue: "#0fcff5", + }, + slots: { + hint: 'Hint from slot', + }, + }); + + // ASSERT + expect(screen.getByTestId("custom-hint")).toBeVisible(); + expect(screen.getByTestId("custom-hint")).toHaveTextContent("Hint from slot"); + }); + + it("does not render a hint when neither prop nor slot is provided", () => { + // ARRANGE + const { container } = render(MtColorpicker, { + props: { + modelValue: "#0fcff5", + }, + }); + + // ASSERT + expect(container.querySelector(".mt-field-hint")).not.toBeInTheDocument(); + }); }); diff --git a/packages/component-library/src/components/mt-colorpicker/mt-colorpicker.vue b/packages/component-library/src/components/mt-colorpicker/mt-colorpicker.vue index d7201a647..d3e9bc5c4 100644 --- a/packages/component-library/src/components/mt-colorpicker/mt-colorpicker.vue +++ b/packages/component-library/src/components/mt-colorpicker/mt-colorpicker.vue @@ -235,6 +235,14 @@ + + @@ -244,6 +252,7 @@ import type { PropType } from "vue"; import { defineComponent } from "vue"; import { debounce } from "@/utils/debounce"; import MtBaseField from "../_internal/mt-base-field/mt-base-field.vue"; +import MtFieldHint from "../_internal/mt-field-hint/mt-field-hint.vue"; import MtFloatingUi from "../mt-floating-ui/mt-floating-ui.vue"; import MtText from "@/components/mt-text/mt-text.vue"; import { createFocusTrap } from "focus-trap"; @@ -257,6 +266,7 @@ export default defineComponent({ components: { "mt-base-field": MtBaseField, + "mt-field-hint": MtFieldHint, "mt-text": MtText, "mt-floating-ui": MtFloatingUi, "mt-button": MtButton, @@ -291,6 +301,15 @@ export default defineComponent({ default: null, }, + /** + * Optional caption below the field. The `#hint` slot takes precedence when provided. + */ + hint: { + type: String as PropType, + required: false, + default: null, + }, + /** * Change the output value which gets emitted and shown in the field. * @values auto, hex, hsl, rgb @@ -494,6 +513,10 @@ export default defineComponent({ }, }, + showFieldHint(): boolean { + return !!this.$slots.hint || (this.hint != null && String(this.hint).trim() !== ""); + }, + integerAlpha: { get(): number { return Math.floor(this.alphaValue * 100); diff --git a/packages/component-library/src/components/mt-email-field/mt-email-field.interactive.stories.ts b/packages/component-library/src/components/mt-email-field/mt-email-field.interactive.stories.ts index 2c70eaf8f..361b441f1 100644 --- a/packages/component-library/src/components/mt-email-field/mt-email-field.interactive.stories.ts +++ b/packages/component-library/src/components/mt-email-field/mt-email-field.interactive.stories.ts @@ -1,6 +1,7 @@ import { within, userEvent, fn } from "@storybook/test"; import { expect } from "@storybook/test"; +import MtEmailField from "./mt-email-field.vue"; import meta, { type MtEmailFieldMeta, type MtEmailFieldStory } from "./mt-email-field.stories"; export default { @@ -33,18 +34,6 @@ export const VisualTestSuffix: MtEmailFieldStory = { }, }; -export const VisualTestHint: MtEmailFieldStory = { - name: "Should display hint", - args: { - hint: "hint", - }, - play: ({ canvasElement, args }) => { - const canvas = within(canvasElement); - - expect(canvas.getByText(args.hint)).toBeDefined(); - }, -}; - export const VisualTestDisabled: MtEmailFieldStory = { name: "Should disable", args: { @@ -143,3 +132,34 @@ export const VisualTestUnlinkedInheritance: MtEmailFieldStory = { modelValue: "test@shopware.com", }, }; + +export const VisualTestHintProp: MtEmailFieldStory = { + name: "Should display hint via prop", + args: { + hint: "Hint via prop", + }, + render: (args) => ({ + components: { MtEmailField }, + setup: () => ({ args }), + template: ``, + }), + play: ({ canvasElement }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("Hint via prop")).toBeDefined(); + }, +}; + +export const VisualTestHintSlot: MtEmailFieldStory = { + name: "Should display hint via slot", + render: (args) => ({ + components: { MtEmailField }, + setup: () => ({ args }), + template: ``, + }), + play: ({ canvasElement }) => { + const canvas = within(canvasElement); + + expect(canvas.getByText("Hint via slot")).toBeDefined(); + }, +}; diff --git a/packages/component-library/src/components/mt-email-field/mt-email-field.spec.ts b/packages/component-library/src/components/mt-email-field/mt-email-field.spec.ts index 11b80df7d..b875ec1cd 100644 --- a/packages/component-library/src/components/mt-email-field/mt-email-field.spec.ts +++ b/packages/component-library/src/components/mt-email-field/mt-email-field.spec.ts @@ -568,4 +568,37 @@ describe("mt-email-field", () => { screen.getByRole("textbox").getAttribute("aria-describedby"), ); }); + + it("displays a hint passed via the hint prop", () => { + // ARRANGE + render(MtEmailField, { + props: { + hint: "Hint from prop", + }, + }); + + // ASSERT + expect(screen.getByText("Hint from prop")).toBeVisible(); + }); + + it("renders markup passed via the hint slot", () => { + // ARRANGE + render(MtEmailField, { + slots: { + hint: 'Hint from slot', + }, + }); + + // ASSERT + expect(screen.getByTestId("custom-hint")).toBeVisible(); + expect(screen.getByTestId("custom-hint")).toHaveTextContent("Hint from slot"); + }); + + it("does not render a hint when neither prop nor slot is provided", () => { + // ARRANGE + const { container } = render(MtEmailField); + + // ASSERT + expect(container.querySelector(".mt-field-hint")).not.toBeInTheDocument(); + }); }); diff --git a/packages/component-library/src/components/mt-email-field/mt-email-field.vue b/packages/component-library/src/components/mt-email-field/mt-email-field.vue index 5985be397..4a5c3bcb8 100644 --- a/packages/component-library/src/components/mt-email-field/mt-email-field.vue +++ b/packages/component-library/src/components/mt-email-field/mt-email-field.vue @@ -101,17 +101,20 @@ :style="{ gridArea: 'error' }" /> -
- +
+ + {{ hint }} +