Skip to content

Commit

Permalink
fix(a11y): ] MenuItemGroup, SubMenuList add some role attributes for …
Browse files Browse the repository at this point in the history
…improved a11y (react-component#569)

* fix(MenuItemGroup): Address a11y issues via role attributes

* fix(SubMenuList): Add role=menu to SubMenuList as this role is required by the children menuitems

* chore: pr feedback for react-component#569
  • Loading branch information
rynodivino authored Dec 27, 2022
1 parent 15c36f1 commit 7fe378c
Show file tree
Hide file tree
Showing 7 changed files with 55 additions and 4 deletions.
12 changes: 8 additions & 4 deletions src/MenuItemGroup.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import * as React from 'react';
import classNames from 'classnames';
import omit from 'rc-util/lib/omit';
import { parseChildren } from './utils/nodeUtil';
import * as React from 'react';
import { MenuContext } from './context/MenuContext';
import { useFullPath, useMeasure } from './context/PathContext';
import type { MenuItemGroupType } from './interface';
import { parseChildren } from './utils/nodeUtil';

export interface MenuItemGroupProps
extends Omit<MenuItemGroupType, 'type' | 'children' | 'label'> {
Expand Down Expand Up @@ -32,17 +32,21 @@ const InternalMenuItemGroup = ({

return (
<li
role="presentation"
{...restProps}
onClick={e => e.stopPropagation()}
className={classNames(groupPrefixCls, className)}
>
<div
role="presentation"
className={`${groupPrefixCls}-title`}
title={typeof title === 'string' ? title : undefined}
>
{title}
</div>
<ul className={`${groupPrefixCls}-list`}>{children}</ul>
<ul role="group" className={`${groupPrefixCls}-list`}>
{children}
</ul>
</li>
);
};
Expand All @@ -59,7 +63,7 @@ export default function MenuItemGroup({

const measure = useMeasure();
if (measure) {
return childList as any as React.ReactElement;
return (childList as any) as React.ReactElement;
}

return (
Expand Down
1 change: 1 addition & 0 deletions src/SubMenu/SubMenuList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ const InternalSubMenuList = (
`${prefixCls}-${mode === 'inline' ? 'inline' : 'vertical'}`,
className,
)}
role="menu"
{...restProps}
data-menu-list
ref={ref}
Expand Down
1 change: 1 addition & 0 deletions tests/__snapshots__/Keyboard.spec.tsx.snap
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ HTMLCollection [
class="rc-menu rc-menu-sub rc-menu-inline"
data-menu-list="true"
id="rc-menu-uuid-test-light-popup"
role="menu"
>
<li
class="rc-menu-item"
Expand Down
36 changes: 36 additions & 0 deletions tests/__snapshots__/Menu.spec.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -53,15 +53,18 @@ HTMLCollection [
>
<li
class="rc-menu-item-group"
role="presentation"
>
<div
class="rc-menu-item-group-title"
role="presentation"
title="g1"
>
g1
</div>
<ul
class="rc-menu-item-group-list"
role="group"
>
<li
class="rc-menu-item"
Expand Down Expand Up @@ -94,15 +97,18 @@ HTMLCollection [
</li>
<li
class="rc-menu-item-group"
role="presentation"
>
<div
class="rc-menu-item-group-title"
role="presentation"
title="g2"
>
g2
</div>
<ul
class="rc-menu-item-group-list"
role="group"
>
<li
class="rc-menu-item"
Expand Down Expand Up @@ -161,15 +167,18 @@ HTMLCollection [
>
<li
class="rc-menu-item-group"
role="presentation"
>
<div
class="rc-menu-item-group-title"
role="presentation"
title="g1"
>
g1
</div>
<ul
class="rc-menu-item-group-list"
role="group"
>
<li
class="rc-menu-item"
Expand Down Expand Up @@ -202,15 +211,18 @@ HTMLCollection [
</li>
<li
class="rc-menu-item-group"
role="presentation"
>
<div
class="rc-menu-item-group-title"
role="presentation"
title="g2"
>
g2
</div>
<ul
class="rc-menu-item-group-list"
role="group"
>
<li
class="rc-menu-item"
Expand Down Expand Up @@ -268,15 +280,18 @@ HTMLCollection [
>
<li
class="rc-menu-item-group"
role="presentation"
>
<div
class="rc-menu-item-group-title"
role="presentation"
title="g1"
>
g1
</div>
<ul
class="rc-menu-item-group-list"
role="group"
>
<li
class="rc-menu-item"
Expand Down Expand Up @@ -312,15 +327,18 @@ HTMLCollection [
</li>
<li
class="rc-menu-item-group"
role="presentation"
>
<div
class="rc-menu-item-group-title"
role="presentation"
title="g2"
>
g2
</div>
<ul
class="rc-menu-item-group-list"
role="group"
>
<li
class="rc-menu-item"
Expand Down Expand Up @@ -382,15 +400,18 @@ HTMLCollection [
>
<li
class="rc-menu-item-group"
role="presentation"
>
<div
class="rc-menu-item-group-title"
role="presentation"
title="g1"
>
g1
</div>
<ul
class="rc-menu-item-group-list"
role="group"
>
<li
class="rc-menu-item"
Expand Down Expand Up @@ -426,15 +447,18 @@ HTMLCollection [
</li>
<li
class="rc-menu-item-group"
role="presentation"
>
<div
class="rc-menu-item-group-title"
role="presentation"
title="g2"
>
g2
</div>
<ul
class="rc-menu-item-group-list"
role="group"
>
<li
class="rc-menu-item"
Expand Down Expand Up @@ -567,15 +591,18 @@ HTMLCollection [
>
<li
class="rc-menu-item-group"
role="presentation"
>
<div
class="rc-menu-item-group-title"
role="presentation"
title="g1"
>
g1
</div>
<ul
class="rc-menu-item-group-list"
role="group"
>
<li
class="rc-menu-item"
Expand Down Expand Up @@ -608,15 +635,18 @@ HTMLCollection [
</li>
<li
class="rc-menu-item-group"
role="presentation"
>
<div
class="rc-menu-item-group-title"
role="presentation"
title="g2"
>
g2
</div>
<ul
class="rc-menu-item-group-list"
role="group"
>
<li
class="rc-menu-item"
Expand Down Expand Up @@ -675,15 +705,18 @@ HTMLCollection [
>
<li
class="rc-menu-item-group"
role="presentation"
>
<div
class="rc-menu-item-group-title"
role="presentation"
title="g1"
>
g1
</div>
<ul
class="rc-menu-item-group-list"
role="group"
>
<li
class="rc-menu-item"
Expand Down Expand Up @@ -716,15 +749,18 @@ HTMLCollection [
</li>
<li
class="rc-menu-item-group"
role="presentation"
>
<div
class="rc-menu-item-group-title"
role="presentation"
title="g2"
>
g2
</div>
<ul
class="rc-menu-item-group-list"
role="group"
>
<li
class="rc-menu-item"
Expand Down
4 changes: 4 additions & 0 deletions tests/__snapshots__/MenuItem.spec.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ HTMLCollection [
class="rc-menu rc-menu-sub rc-menu-inline"
data-menu-list="true"
id="rc-menu-uuid-test-bamboo-popup"
role="menu"
>
<li
class="rc-menu-item className"
Expand All @@ -107,16 +108,19 @@ HTMLCollection [
<li
class="rc-menu-item-group className"
data-whatever="whatever"
role="presentation"
style="font-size: 20px;"
>
<div
class="rc-menu-item-group-title"
role="presentation"
title="title"
>
title
</div>
<ul
class="rc-menu-item-group-list"
role="group"
>
<li
class="rc-menu-item className"
Expand Down
4 changes: 4 additions & 0 deletions tests/__snapshots__/Options.spec.tsx.snap
Original file line number Diff line number Diff line change
Expand Up @@ -32,18 +32,22 @@ HTMLCollection [
class="rc-menu rc-menu-sub rc-menu-inline"
data-menu-list="true"
id="rc-menu-uuid-test-sub1-popup"
role="menu"
>
<li
class="rc-menu-item-group"
role="presentation"
>
<div
class="rc-menu-item-group-title"
role="presentation"
title="Menu Group"
>
Menu Group
</div>
<ul
class="rc-menu-item-group-list"
role="group"
>
<li
class="rc-menu-item"
Expand Down
1 change: 1 addition & 0 deletions tests/__snapshots__/SubMenu.spec.js.snap
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ HTMLCollection [
class="rc-menu rc-menu-sub rc-menu-vertical"
data-menu-list="true"
id="rc-menu-uuid-test-1-popup"
role="menu"
>
<li
aria-selected="false"
Expand Down

0 comments on commit 7fe378c

Please sign in to comment.