Skip to content

Commit 01caa0b

Browse files
committed
chore(form): Updated MenuItemRadio usage to be wrapped in a group for a11y
1 parent 5cf4f8a commit 01caa0b

3 files changed

Lines changed: 66 additions & 61 deletions

File tree

packages/documentation/src/components/Demos/Form/MenusWithFormControls.tsx

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,20 @@ export default function MenusWithFormControls(): ReactElement | null {
4242
Italic
4343
</MenuItemCheckbox>,
4444
<MenuItemSeparator />,
45-
...decorations.map((dec) => (
46-
<MenuItemRadio
47-
id={`decoration-${dec}`}
48-
checked={decoration === dec}
49-
onCheckedChange={() => setDecoration(dec)}
50-
>
51-
{dec}
52-
</MenuItemRadio>
53-
)),
45+
// see https://www.w3.org/TR/wai-aria-1.1/#menuitemradio why this is
46+
// wrapped in a group
47+
<div role="group" aria-label="Font Decoration">
48+
{decorations.map((dec) => (
49+
<MenuItemRadio
50+
key={dec}
51+
id={`decoration-${dec}`}
52+
checked={decoration === dec}
53+
onCheckedChange={() => setDecoration(dec)}
54+
>
55+
{dec}
56+
</MenuItemRadio>
57+
))}
58+
</div>,
5459
<MenuItemSwitch
5560
id="toggle-thing"
5661
checked={checked}

packages/form/src/menu/__tests__/MenuItemInputToggle.tsx

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -36,38 +36,38 @@ function Test({
3636
>
3737
Checkbox
3838
</MenuItemInputToggle>,
39-
<MenuItemInputToggle
40-
type="radio"
41-
key="radio-1"
42-
id="menu-id-2"
43-
onClick={onClick}
44-
checked={selectedIndex === 0}
45-
onCheckedChange={() => {
46-
setSelectedIndex(0);
47-
}}
48-
iconAfter={iconAfter}
49-
addon={addon}
50-
addonType={addonType}
51-
addonPosition={addonPosition}
52-
>
53-
Radio 1
54-
</MenuItemInputToggle>,
55-
<MenuItemInputToggle
56-
type="radio"
57-
key="radio-2"
58-
id="menu-id-3"
59-
onClick={onClick}
60-
checked={selectedIndex === 1}
61-
onCheckedChange={() => {
62-
setSelectedIndex(1);
63-
}}
64-
iconAfter={iconAfter}
65-
addon={addon}
66-
addonType={addonType}
67-
addonPosition={addonPosition}
68-
>
69-
Radio 2
70-
</MenuItemInputToggle>,
39+
<div role="group" aria-label="Radio Group" key="radio">
40+
<MenuItemInputToggle
41+
type="radio"
42+
id="menu-id-2"
43+
onClick={onClick}
44+
checked={selectedIndex === 0}
45+
onCheckedChange={() => {
46+
setSelectedIndex(0);
47+
}}
48+
iconAfter={iconAfter}
49+
addon={addon}
50+
addonType={addonType}
51+
addonPosition={addonPosition}
52+
>
53+
Radio 1
54+
</MenuItemInputToggle>
55+
<MenuItemInputToggle
56+
type="radio"
57+
id="menu-id-3"
58+
onClick={onClick}
59+
checked={selectedIndex === 1}
60+
onCheckedChange={() => {
61+
setSelectedIndex(1);
62+
}}
63+
iconAfter={iconAfter}
64+
addon={addon}
65+
addonType={addonType}
66+
addonPosition={addonPosition}
67+
>
68+
Radio 2
69+
</MenuItemInputToggle>
70+
</div>,
7171
<MenuItemInputToggle
7272
key="switch"
7373
type="switch"

packages/form/src/menu/__tests__/MenuItemRadio.tsx

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,26 +13,26 @@ describe("MenuItemRadio", () => {
1313
<DropdownMenu
1414
id="menu-id"
1515
items={[
16-
<MenuItemRadio
17-
key="item-1"
18-
id="menu-id-1"
19-
checked={selectedIndex === 0}
20-
onCheckedChange={() => {
21-
setSelectedIndex(0);
22-
}}
23-
>
24-
Radio 1
25-
</MenuItemRadio>,
26-
<MenuItemRadio
27-
key="item-2"
28-
id="menu-id-2"
29-
checked={selectedIndex === 1}
30-
onCheckedChange={() => {
31-
setSelectedIndex(1);
32-
}}
33-
>
34-
Radio 2
35-
</MenuItemRadio>,
16+
<div role="group" aria-label="Radio Group" key="group">
17+
<MenuItemRadio
18+
id="menu-id-1"
19+
checked={selectedIndex === 0}
20+
onCheckedChange={() => {
21+
setSelectedIndex(0);
22+
}}
23+
>
24+
Radio 1
25+
</MenuItemRadio>
26+
<MenuItemRadio
27+
id="menu-id-2"
28+
checked={selectedIndex === 1}
29+
onCheckedChange={() => {
30+
setSelectedIndex(1);
31+
}}
32+
>
33+
Radio 2
34+
</MenuItemRadio>
35+
</div>,
3636
]}
3737
>
3838
Button

0 commit comments

Comments
 (0)