Skip to content

Commit 2db293b

Browse files
authored
fix: enhance accessibility for menu items with keyboard support (#2655)
1 parent 1b4126f commit 2db293b

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

src/components/SideMenu/MenuItem.tsx

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ import { observer } from 'mobx-react';
22
import * as React from 'react';
33

44
import { ShelfIcon } from '../../common-elements/shelfs';
5+
import type { IMenuItem } from '../../services';
56
import { OperationModel } from '../../services';
6-
import { shortenHTTPVerb } from '../../utils/openapi';
7-
import { MenuItems } from './MenuItems';
8-
import { MenuItemLabel, MenuItemLi, MenuItemTitle, OperationBadge } from './styled.elements';
97
import { l } from '../../services/Labels';
108
import { scrollIntoViewIfNeeded } from '../../utils';
9+
import { shortenHTTPVerb } from '../../utils/openapi';
1110
import { OptionsContext } from '../OptionsProvider';
12-
import type { IMenuItem } from '../../services';
11+
import { MenuItems } from './MenuItems';
12+
import { MenuItemLabel, MenuItemLi, MenuItemTitle, OperationBadge } from './styled.elements';
1313

1414
export interface MenuItemProps {
1515
item: IMenuItem;
@@ -47,9 +47,18 @@ export class MenuItem extends React.Component<MenuItemProps> {
4747
<MenuItemLi
4848
tabIndex={0}
4949
onClick={this.activate}
50+
onKeyDown={evt => {
51+
// Space or Enter key will activate the menu item
52+
if (evt.key === 'Enter' || evt.key === ' ') {
53+
this.props.onActivate!(this.props.item);
54+
evt.stopPropagation();
55+
}
56+
}}
5057
depth={item.depth}
5158
data-item-id={item.id}
5259
role="menuitem"
60+
aria-label={item.sidebarLabel}
61+
aria-expanded={item.expanded}
5362
>
5463
{item.type === 'operation' ? (
5564
<OperationMenuItemContent {...this.props} item={item as OperationModel} />

0 commit comments

Comments
 (0)