diff --git a/src/MenuItem.jsx b/src/MenuItem.jsx index 20631ffe..beec9d6f 100644 --- a/src/MenuItem.jsx +++ b/src/MenuItem.jsx @@ -150,7 +150,7 @@ export class MenuItem extends React.Component { title: props.title, className, // set to menuitem by default - role: 'menuitem', + role: props.role || 'menuitem', 'aria-disabled': props.disabled, }; @@ -161,10 +161,13 @@ export class MenuItem extends React.Component { role: 'option', 'aria-selected': props.isSelected, }; - } else if (props.role === null) { + } else if (props.role === null || props.role === 'none') { // sometimes we want to specify role inside
  • element //
  • Link
  • would be a good example - delete attrs.role; + // in this case the role on
  • should be "none" to + // remove the implied listitem role. + // https://www.w3.org/TR/wai-aria-practices-1.1/examples/menubar/menubar-1/menubar-1.html + attrs.role = 'none'; } // In case that onClick/onMouseLeave/onMouseEnter is passed down from owner const mouseEvent = { diff --git a/tests/MenuItem.spec.js b/tests/MenuItem.spec.js index bfba11a2..d4d1cef1 100644 --- a/tests/MenuItem.spec.js +++ b/tests/MenuItem.spec.js @@ -117,13 +117,25 @@ describe('MenuItem', () => { }); describe('overwrite default role', () => { - it('should set empty role', () => { + it('should set role to none if null', () => { const wrapper = shallow(test); expect(wrapper.render()).toMatchSnapshot(); }); - it('should set specific role', () => { + it('should set role to none if none', () => { + const wrapper = shallow(test); + + expect(wrapper.render()).toMatchSnapshot(); + }); + + it('should set role to listitem', () => { + const wrapper = shallow(test); + + expect(wrapper.render()).toMatchSnapshot(); + }); + + it('should set role to option', () => { const wrapper = shallow(test); expect(wrapper.render()).toMatchSnapshot(); diff --git a/tests/__snapshots__/MenuItem.spec.js.snap b/tests/__snapshots__/MenuItem.spec.js.snap index 597ffc6a..9793955e 100644 --- a/tests/__snapshots__/MenuItem.spec.js.snap +++ b/tests/__snapshots__/MenuItem.spec.js.snap @@ -1,14 +1,33 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`MenuItem overwrite default role should set empty role 1`] = ` +exports[`MenuItem overwrite default role should set role to listitem 1`] = `
  • test
  • `; -exports[`MenuItem overwrite default role should set specific role 1`] = ` +exports[`MenuItem overwrite default role should set role to none if none 1`] = ` +
  • + test +
  • +`; + +exports[`MenuItem overwrite default role should set role to none if null 1`] = ` +
  • + test +
  • +`; + +exports[`MenuItem overwrite default role should set role to option 1`] = `