Skip to content

Commit a6bc1c7

Browse files
committed
Do not fail presentation roles in click-events-have-key-events
1 parent 297dd52 commit a6bc1c7

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

__tests__/src/rules/click-events-have-key-events-test.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ ruleTester.run('click-events-have-key-events', rule, {
4949
{ code: '<a onClick={() => void 0} href="http://x.y.z" />' },
5050
{ code: '<a onClick={() => void 0} href="http://x.y.z" tabIndex="0" />' },
5151
{ code: '<input onClick={() => void 0} type="hidden" />;' },
52+
{ code: '<div onClick={() => void 0} role="presentation" />;' },
53+
{ code: '<div onClick={() => void 0} role="none" />;' },
5254
{ code: '<TestComponent onClick={doFoo} />' },
5355
{ code: '<Button onClick={doFoo} />' },
5456
].map(parserOptionsMapper),

src/rules/click-events-have-key-events.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import includes from 'array-includes';
1515
import { generateObjSchema } from '../util/schemas';
1616
import isHiddenFromScreenReader from '../util/isHiddenFromScreenReader';
1717
import isInteractiveElement from '../util/isInteractiveElement';
18+
import isPresentationRole from '../util/isPresentationRole';
1819

1920
const errorMessage = 'Visible, non-interactive elements with click handlers' +
2021
' must have at least one keyboard listener.';
@@ -42,7 +43,10 @@ module.exports = {
4243
// Do not test higher level JSX components, as we do not know what
4344
// low-level DOM element this maps to.
4445
return;
45-
} else if (isHiddenFromScreenReader(type, props)) {
46+
} else if (
47+
isHiddenFromScreenReader(type, props)
48+
|| isPresentationRole(type, props)
49+
) {
4650
return;
4751
} else if (isInteractiveElement(type, props)) {
4852
return;

0 commit comments

Comments
 (0)