Skip to content

Commit d4de06f

Browse files
Skip rendering empty form elements
1 parent 1072fcf commit d4de06f

File tree

4 files changed

+64
-38
lines changed

4 files changed

+64
-38
lines changed

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

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,22 @@ const ErrorMessageComponent: FC<ErrorMessageProps> = ({
1010
visuallyHiddenText = 'Error',
1111
children,
1212
...rest
13-
}) => (
14-
<span className={classNames('nhsuk-error-message', className)} {...rest}>
15-
{visuallyHiddenText ? (
16-
<>
17-
<span className="nhsuk-u-visually-hidden">{`${visuallyHiddenText}:`}</span> {children}
18-
</>
19-
) : (
20-
<>{children}</>
21-
)}
22-
</span>
23-
);
13+
}) => {
14+
if (!children || typeof children !== 'string') {
15+
return null;
16+
}
17+
18+
return (
19+
<span className={classNames('nhsuk-error-message', className)} {...rest}>
20+
{visuallyHiddenText ? (
21+
<>
22+
<span className="nhsuk-u-visually-hidden">{`${visuallyHiddenText}:`}</span> {children}
23+
</>
24+
) : (
25+
<>{children}</>
26+
)}
27+
</span>
28+
);
29+
};
2430

2531
export default ErrorMessageComponent;

src/components/form-elements/hint-text/HintText.tsx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,16 @@ import classNames from 'classnames';
33

44
export type HintTextProps = HTMLProps<HTMLDivElement>;
55

6-
const HintTextComponent: FC<HintTextProps> = ({ className, ...rest }) => (
7-
<div className={classNames('nhsuk-hint', className)} {...rest} />
8-
);
6+
const HintTextComponent: FC<HintTextProps> = ({ className, children, ...rest }) => {
7+
if (!children) {
8+
return null;
9+
}
10+
11+
return (
12+
<div className={classNames('nhsuk-hint', className)} {...rest}>
13+
{children}
14+
</div>
15+
);
16+
};
917

1018
export default HintTextComponent;

src/components/form-elements/label/Label.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,21 @@ const Label: FC<LabelProps> = ({ className, bold, size, isPageHeading, ...rest }
2222
/>
2323
);
2424

25-
const LabelComponent: FC<LabelProps> = ({ isPageHeading, ...rest }) => {
25+
const LabelComponent: FC<LabelProps> = ({ isPageHeading, children, ...rest }) => {
26+
if (!children) {
27+
return null;
28+
}
29+
2630
if (isPageHeading) {
2731
return (
2832
<h1 className="nhsuk-label-wrapper">
29-
<Label isPageHeading {...rest} />
33+
<Label isPageHeading {...rest}>
34+
{children}
35+
</Label>
3036
</h1>
3137
);
3238
}
33-
return <Label {...rest} />;
39+
return <Label {...rest}>{children}</Label>;
3440
};
3541

3642
export default LabelComponent;

src/components/form-elements/legend/Legend.tsx

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,26 +16,32 @@ const LegendComponent: FC<LegendProps> = ({
1616
headingLevel = 'h1',
1717
size,
1818
...rest
19-
}) => (
20-
<legend
21-
className={classNames(
22-
'nhsuk-fieldset__legend',
23-
{
24-
'nhsuk-fieldset__legend--xl': isPageHeading && !size,
25-
},
26-
{ [`nhsuk-fieldset__legend--${size}`]: size },
27-
className,
28-
)}
29-
{...rest}
30-
>
31-
{isPageHeading ? (
32-
<HeadingLevel className="nhsuk-fieldset__heading" headingLevel={headingLevel}>
33-
{children}
34-
</HeadingLevel>
35-
) : (
36-
children
37-
)}
38-
</legend>
39-
);
19+
}) => {
20+
if (!children) {
21+
return null;
22+
}
23+
24+
return (
25+
<legend
26+
className={classNames(
27+
'nhsuk-fieldset__legend',
28+
{
29+
'nhsuk-fieldset__legend--xl': isPageHeading && !size,
30+
},
31+
{ [`nhsuk-fieldset__legend--${size}`]: size },
32+
className,
33+
)}
34+
{...rest}
35+
>
36+
{isPageHeading ? (
37+
<HeadingLevel className="nhsuk-fieldset__heading" headingLevel={headingLevel}>
38+
{children}
39+
</HeadingLevel>
40+
) : (
41+
children
42+
)}
43+
</legend>
44+
);
45+
};
4046

4147
export default LegendComponent;

0 commit comments

Comments
 (0)