File tree Expand file tree Collapse file tree 2 files changed +25
-4
lines changed
Expand file tree Collapse file tree 2 files changed +25
-4
lines changed Original file line number Diff line number Diff line change @@ -18,7 +18,8 @@ export default class MenuItem extends Component {
1818 onMouseLeave : PropTypes . func ,
1919 onMouseMove : PropTypes . func ,
2020 preventClose : PropTypes . bool ,
21- selected : PropTypes . bool
21+ selected : PropTypes . bool ,
22+ role : PropTypes . string
2223 } ;
2324
2425 static defaultProps = {
@@ -32,7 +33,8 @@ export default class MenuItem extends Component {
3233 onMouseMove : ( ) => null ,
3334 onMouseLeave : ( ) => null ,
3435 preventClose : false ,
35- selected : false
36+ selected : false ,
37+ role : 'menuitem'
3638 } ;
3739
3840 handleClick = ( event ) => {
@@ -61,7 +63,8 @@ export default class MenuItem extends Component {
6163 className,
6264 disabled,
6365 divider,
64- selected
66+ selected,
67+ role
6568 } = this . props ;
6669
6770 const menuItemClassNames = cx (
@@ -78,7 +81,7 @@ export default class MenuItem extends Component {
7881 return (
7982 < div
8083 { ...attributes } className = { menuItemClassNames }
81- role = 'menuitem' tabIndex = '-1' aria-disabled = { disabled ? 'true' : 'false' }
84+ role = { role } tabIndex = '-1' aria-disabled = { disabled ? 'true' : 'false' }
8285 aria-orientation = { divider ? 'horizontal' : null }
8386 ref = { ( ref ) => { this . ref = ref ; } }
8487 onMouseMove = { this . props . onMouseMove } onMouseLeave = { this . props . onMouseLeave }
Original file line number Diff line number Diff line change @@ -18,4 +18,22 @@ describe('MenuItem tests', () => {
1818 expect ( element ) . toHaveClass ( className ) ;
1919 expect ( element ) . toHaveClass ( attributes . className ) ;
2020 } ) ;
21+
22+ test ( 'exposes the menuitem role by default' , ( ) => {
23+ render (
24+ < MenuItem > Item</ MenuItem >
25+ ) ;
26+
27+ const element = screen . getByRole ( 'menuitem' ) ;
28+ expect ( element ) . toBeInTheDocument ( ) ;
29+ } ) ;
30+
31+ test ( 'makes it possible to change the default role' , ( ) => {
32+ render (
33+ < MenuItem role = 'menuitemcheckbox' attributes = { { 'aria-checked' : 'true' } } > Item</ MenuItem >
34+ ) ;
35+
36+ const element = screen . getByRole ( 'menuitemcheckbox' ) ;
37+ expect ( element ) . toBeChecked ( ) ;
38+ } ) ;
2139} ) ;
You can’t perform that action at this time.
0 commit comments