Skip to content

Commit 45a4e50

Browse files
Align error message with NHS.UK frontend
1 parent decc736 commit 45a4e50

File tree

5 files changed

+31
-21
lines changed

5 files changed

+31
-21
lines changed

src/components/form-elements/checkboxes/__tests__/__snapshots__/Checkboxes.test.tsx.snap

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,8 +264,9 @@ exports[`Checkboxes matches snapshot with string error 1`] = `
264264
<span
265265
class="nhsuk-u-visually-hidden"
266266
>
267-
Error:
267+
Error:
268268
</span>
269+
269270
Example error
270271
</span>
271272
<div

src/components/form-elements/error-message/ErrorMessage.tsx

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,23 @@ import React, { FC, HTMLProps } from 'react';
22
import classNames from 'classnames';
33

44
export interface ErrorMessageProps extends HTMLProps<HTMLSpanElement> {
5-
visuallyHiddenText?: false | string;
5+
visuallyHiddenText?: string;
66
}
77

88
const ErrorMessageComponent: FC<ErrorMessageProps> = ({
99
className,
10-
visuallyHiddenText = 'Error: ',
10+
visuallyHiddenText = 'Error',
1111
children,
1212
...rest
1313
}) => (
1414
<span className={classNames('nhsuk-error-message', className)} {...rest}>
15-
{visuallyHiddenText !== false ? (
16-
<span className="nhsuk-u-visually-hidden">{visuallyHiddenText}</span>
17-
) : null}
18-
{children}
15+
{visuallyHiddenText ? (
16+
<>
17+
<span className="nhsuk-u-visually-hidden">{`${visuallyHiddenText}:`}</span> {children}
18+
</>
19+
) : (
20+
<>{children}</>
21+
)}
1922
</span>
2023
);
2124

src/components/form-elements/error-message/__tests__/ErrorMessage.test.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,18 @@ describe('ErrorMessage', () => {
1212
it('has default visuallyHiddenText', () => {
1313
const { container } = render(<ErrorMessage>Error</ErrorMessage>);
1414

15-
expect(container.querySelector('.nhsuk-u-visually-hidden')?.textContent).toBe('Error: ');
15+
expect(container.querySelector('.nhsuk-u-visually-hidden')?.textContent).toBe('Error:');
1616
});
1717

18-
it('has disabled visuallyHiddenText', () => {
19-
const { container } = render(<ErrorMessage visuallyHiddenText={false}>Error</ErrorMessage>);
18+
it('has custom visuallyHiddenText', () => {
19+
const { container } = render(<ErrorMessage visuallyHiddenText="Custom">Error</ErrorMessage>);
2020

21-
expect(container.querySelector('.nhsuk-u-visually-hidden')).toBeFalsy();
21+
expect(container.querySelector('.nhsuk-u-visually-hidden')?.textContent).toBe('Custom:');
2222
});
2323

24-
it('has custom visuallyHiddenText', () => {
25-
const { container } = render(<ErrorMessage visuallyHiddenText="Custom">Error</ErrorMessage>);
24+
it('has empty visuallyHiddenText', () => {
25+
const { container } = render(<ErrorMessage visuallyHiddenText="">Error</ErrorMessage>);
2626

27-
expect(container.querySelector('.nhsuk-u-visually-hidden')?.textContent).toBe('Custom');
27+
expect(container.querySelector('.nhsuk-u-visually-hidden')).toBeFalsy();
2828
});
2929
});

src/components/form-elements/error-message/__tests__/__snapshots__/ErrorMessage.test.tsx.snap

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ exports[`ErrorMessage matches snapshot: ErrorMessage 1`] = `
88
<span
99
class="nhsuk-u-visually-hidden"
1010
>
11-
Error:
11+
Error:
1212
</span>
13+
1314
Error
1415
</span>
1516
</div>

stories/Form Elements/ErrorMessage.stories.tsx

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { Meta, StoryObj } from '@storybook/react';
66
*
77
* ## Implementation Notes
88
*
9-
* The `ErrorMessage` component has a default `visuallyHiddenText` of "Error: ". This can be overriden, or disabled using `visuallyHiddenText={false}`.
9+
* The `ErrorMessage` component has a default `visuallyHiddenText` of "Error: ". This can be overriden using `visuallyHiddenText`.
1010
*
1111
* ## Usage
1212
*
@@ -17,7 +17,7 @@ import { Meta, StoryObj } from '@storybook/react';
1717
*
1818
* const Element = () => {
1919
* return (
20-
* <ErrorMessage>Error!</ErrorMessage>
20+
* <ErrorMessage>Enter your full name</ErrorMessage>
2121
* );
2222
* }
2323
* ```
@@ -26,7 +26,7 @@ const meta: Meta<typeof ErrorMessage> = {
2626
title: 'Form Elements/ErrorMessage',
2727
component: ErrorMessage,
2828
args: {
29-
children: 'Error message about full name goes here',
29+
children: 'Enter your full name',
3030
},
3131
};
3232
export default meta;
@@ -35,8 +35,13 @@ type Story = StoryObj<typeof ErrorMessage>;
3535
export const Standard: Story = {
3636
argTypes: { visuallyHiddenText: { control: false } },
3737
};
38-
export const NoVisuallyHiddenText: Story = {
39-
args: { visuallyHiddenText: false },
38+
39+
export const CustomVisuallyHiddenText: Story = {
40+
args: { visuallyHiddenText: 'Custom' },
41+
argTypes: { visuallyHiddenText: { control: false } },
42+
};
43+
44+
export const EmptyVisuallyHiddenText: Story = {
45+
args: { visuallyHiddenText: '' },
4046
argTypes: { visuallyHiddenText: { control: false } },
4147
};
42-
export const CustomVisuallyHiddenText: Story = { args: { visuallyHiddenText: 'Custom Text' } };

0 commit comments

Comments
 (0)