Skip to content

Commit 8aed331

Browse files
authored
Update CheckboxOrRadioGroup.tsx to add required announcement (#7682)
1 parent 8fa988b commit 8aed331

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

.changeset/nine-colts-grow.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@primer/react": patch
3+
---
4+
5+
Update CheckboxOrRadioGroup.tsx to add `required` announcement

packages/react/src/internal/components/CheckboxOrRadioGroup/CheckboxOrRadioGroup.tsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ const CheckboxOrRadioGroup: React.FC<React.PropsWithChildren<CheckboxOrRadioGrou
6666
const id = useId(idProp)
6767
const validationMessageId = validationChild ? `${id}-validationMessage` : undefined
6868
const captionId = captionChild ? `${id}-caption` : undefined
69+
const requiredMessageId = required ? `${id}-requiredMessage` : undefined
6970

7071
if (!labelChild && !ariaLabelledby) {
7172
// eslint-disable-next-line no-console
@@ -106,25 +107,29 @@ const CheckboxOrRadioGroup: React.FC<React.PropsWithChildren<CheckboxOrRadioGrou
106107
*/
107108
<legend className={classes.GroupLegend} data-legend-visible={isLegendVisible ? '' : undefined}>
108109
{slots.label}
110+
{required && <VisuallyHidden>, required</VisuallyHidden>}
109111
{slots.caption}
110112
{React.isValidElement(slots.validation) && slots.validation.props.children && (
111113
<VisuallyHidden>{slots.validation.props.children}</VisuallyHidden>
112114
)}
113115
</legend>
114116
) : (
115117
/*
116-
If CheckboxOrRadioGroup.Label wasn't passed as a child, we don't render a <legend>
117-
but we still want to render a caption
118-
*/
119-
slots.caption
118+
If CheckboxOrRadioGroup.Label wasn't passed as a child, we don't render a <legend>
119+
but we still want to render a caption
120+
*/
121+
<>
122+
{slots.caption}
123+
{required && requiredMessageId && <VisuallyHidden id={requiredMessageId}>Required</VisuallyHidden>}
124+
</>
120125
)}
121126

122127
<div
123128
className={classes.Body}
124129
{...(!labelChild
125130
? {
126131
['aria-labelledby']: ariaLabelledby,
127-
['aria-describedby']: [validationMessageId, captionId].filter(Boolean).join(' '),
132+
['aria-describedby']: [validationMessageId, captionId, requiredMessageId].filter(Boolean).join(' '),
128133
as: 'div',
129134
role: 'group',
130135
}

0 commit comments

Comments
 (0)