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`] = `