File tree Expand file tree Collapse file tree 3 files changed +41
-7
lines changed
Expand file tree Collapse file tree 3 files changed +41
-7
lines changed Original file line number Diff line number Diff line change @@ -150,7 +150,7 @@ export class MenuItem extends React.Component {
150150 title : props . title ,
151151 className,
152152 // set to menuitem by default
153- role : 'menuitem' ,
153+ role : props . role || 'menuitem' ,
154154 'aria-disabled' : props . disabled ,
155155 } ;
156156
@@ -161,10 +161,13 @@ export class MenuItem extends React.Component {
161161 role : 'option' ,
162162 'aria-selected' : props . isSelected ,
163163 } ;
164- } else if ( props . role === null ) {
164+ } else if ( props . role === null || props . role === 'none' ) {
165165 // sometimes we want to specify role inside <li/> element
166166 // <li><a role='menuitem'>Link</a></li> would be a good example
167- delete attrs . role ;
167+ // in this case the role on <li/> should be "none" to
168+ // remove the implied listitem role.
169+ // https://www.w3.org/TR/wai-aria-practices-1.1/examples/menubar/menubar-1/menubar-1.html
170+ attrs . role = 'none' ;
168171 }
169172 // In case that onClick/onMouseLeave/onMouseEnter is passed down from owner
170173 const mouseEvent = {
Original file line number Diff line number Diff line change @@ -117,13 +117,25 @@ describe('MenuItem', () => {
117117 } ) ;
118118
119119 describe ( 'overwrite default role' , ( ) => {
120- it ( 'should set empty role' , ( ) => {
120+ it ( 'should set role to none if null ' , ( ) => {
121121 const wrapper = shallow ( < NakedMenuItem role = { null } > test</ NakedMenuItem > ) ;
122122
123123 expect ( wrapper . render ( ) ) . toMatchSnapshot ( ) ;
124124 } ) ;
125125
126- it ( 'should set specific role' , ( ) => {
126+ it ( 'should set role to none if none' , ( ) => {
127+ const wrapper = shallow ( < NakedMenuItem role = "none" > test</ NakedMenuItem > ) ;
128+
129+ expect ( wrapper . render ( ) ) . toMatchSnapshot ( ) ;
130+ } ) ;
131+
132+ it ( 'should set role to listitem' , ( ) => {
133+ const wrapper = shallow ( < NakedMenuItem role = "listitem" > test</ NakedMenuItem > ) ;
134+
135+ expect ( wrapper . render ( ) ) . toMatchSnapshot ( ) ;
136+ } ) ;
137+
138+ it ( 'should set role to option' , ( ) => {
127139 const wrapper = shallow ( < NakedMenuItem role = "option" > test</ NakedMenuItem > ) ;
128140
129141 expect ( wrapper . render ( ) ) . toMatchSnapshot ( ) ;
Original file line number Diff line number Diff line change 11// Jest Snapshot v1, https://goo.gl/fbAQLP
22
3- exports [` MenuItem overwrite default role should set empty role 1` ] = `
3+ exports [` MenuItem overwrite default role should set role to listitem 1` ] = `
44<li
55 class = " undefined-item"
6+ role = " listitem"
67>
78 test
89</li >
910` ;
1011
11- exports [` MenuItem overwrite default role should set specific role 1` ] = `
12+ exports [` MenuItem overwrite default role should set role to none if none 1` ] = `
13+ <li
14+ class = " undefined-item"
15+ role = " none"
16+ >
17+ test
18+ </li >
19+ ` ;
20+
21+ exports [` MenuItem overwrite default role should set role to none if null 1` ] = `
22+ <li
23+ class = " undefined-item"
24+ role = " none"
25+ >
26+ test
27+ </li >
28+ ` ;
29+
30+ exports [` MenuItem overwrite default role should set role to option 1` ] = `
1231<li
1332 class = " undefined-item"
1433 role = " option"
You can’t perform that action at this time.
0 commit comments