@@ -2,14 +2,14 @@ import { observer } from 'mobx-react';
22import * as React from 'react' ;
33
44import { ShelfIcon } from '../../common-elements/shelfs' ;
5+ import type { IMenuItem } from '../../services' ;
56import { OperationModel } from '../../services' ;
6- import { shortenHTTPVerb } from '../../utils/openapi' ;
7- import { MenuItems } from './MenuItems' ;
8- import { MenuItemLabel , MenuItemLi , MenuItemTitle , OperationBadge } from './styled.elements' ;
97import { l } from '../../services/Labels' ;
108import { scrollIntoViewIfNeeded } from '../../utils' ;
9+ import { shortenHTTPVerb } from '../../utils/openapi' ;
1110import { OptionsContext } from '../OptionsProvider' ;
12- import type { IMenuItem } from '../../services' ;
11+ import { MenuItems } from './MenuItems' ;
12+ import { MenuItemLabel , MenuItemLi , MenuItemTitle , OperationBadge } from './styled.elements' ;
1313
1414export 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