Skip to content

Commit 95246d9

Browse files
committed
Use handlers from recommended rule config
1 parent 0a4e452 commit 95246d9

File tree

4 files changed

+16
-50
lines changed

4 files changed

+16
-50
lines changed

src/compiler/compile/nodes/Element.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import { Literal } from 'estree';
2525
import compiler_warnings from '../compiler_warnings';
2626
import compiler_errors from '../compiler_errors';
2727
import { ARIARoleDefinitionKey, roles, aria, ARIAPropertyDefinition, ARIAProperty } from 'aria-query';
28-
import { is_non_interactive_element, is_interactive_element, is_non_interactive_roles, is_presentation_role, is_interactive_roles, is_hidden_from_screen_reader, is_semantic_role_element, is_abstract_role, is_static_element, has_disabled_attribute, is_interactive_handler } from '../utils/a11y';
28+
import { is_non_interactive_element, is_interactive_element, is_non_interactive_roles, is_presentation_role, is_interactive_roles, is_hidden_from_screen_reader, is_semantic_role_element, is_abstract_role, is_static_element, has_disabled_attribute } from '../utils/a11y';
2929

3030
const aria_attributes = 'activedescendant atomic autocomplete busy checked colcount colindex colspan controls current describedby description details disabled dropeffect errormessage expanded flowto grabbed haspopup hidden invalid keyshortcuts label labelledby level live modal multiline multiselectable orientation owns placeholder posinset pressed readonly relevant required roledescription rowcount rowindex rowspan selected setsize sort valuemax valuemin valuenow valuetext'.split(' ');
3131
const aria_attribute_set = new Set(aria_attributes);
@@ -777,7 +777,9 @@ export default class Element extends Node {
777777
!is_non_interactive_roles(role) &&
778778
!is_abstract_role(role)
779779
) {
780-
const interactive_handlers = handlers.map((handler) => handler.name).filter(is_interactive_handler);
780+
const interactive_handlers = handlers
781+
.map((handler) => handler.name)
782+
.filter((handlerName) => a11y_interactive_handlers.has(handlerName));
781783
if (interactive_handlers.length > 0) {
782784
component.warn(
783785
this,

src/compiler/compile/utils/a11y.ts

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -241,41 +241,3 @@ export function is_semantic_role_element(
241241
}
242242
return false;
243243
}
244-
245-
const interactive_handlers = new Set([
246-
// Focus
247-
'focus',
248-
'focusin',
249-
'focusout',
250-
'blur',
251-
252-
// Keyboard
253-
'keydown',
254-
'keypress',
255-
'keyup',
256-
257-
// Mouse
258-
'auxclick',
259-
'click',
260-
'contextmenu',
261-
'dblclick',
262-
'drag',
263-
'dragend',
264-
'dragenter',
265-
'dragexit',
266-
'dragleave',
267-
'dragover',
268-
'dragstart',
269-
'drop',
270-
'mousedown',
271-
'mouseenter',
272-
'mouseleave',
273-
'mousemove',
274-
'mouseout',
275-
'mouseover',
276-
'mouseup'
277-
]);
278-
279-
export function is_interactive_handler(handler: string) {
280-
return interactive_handlers.has(handler);
281-
}

test/validator/samples/a11y-no-static-element-interactions/input.svelte

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
<div on:copy={() => {}} />
1010
<a href="/foo" on:click={() => {}}>link</a>
1111
<div role={dynamicRole} on:click={() => {}} />
12+
<footer on:keydown={() => {}} />
13+
1214
<!-- invalid -->
1315
<div on:keydown={() => {}} />
1416
<!-- svelte-ignore a11y-missing-attribute -->

test/validator/samples/a11y-no-static-element-interactions/warnings.json

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,31 @@
22
{
33
"code": "a11y-no-static-element-interactions",
44
"end": {
5-
"character": 347,
5+
"character": 381,
66
"column": 29,
7-
"line": 13
7+
"line": 15
88
},
99
"message": "A11y: <div> with keydown handler must have an ARIA role",
10-
"pos": 318,
10+
"pos": 352,
1111
"start": {
12-
"character": 318,
12+
"character": 352,
1313
"column": 0,
14-
"line": 13
14+
"line": 15
1515
}
1616
},
1717
{
1818
"code": "a11y-no-static-element-interactions",
1919
"end": {
20-
"character": 470,
20+
"character": 504,
2121
"column": 76,
22-
"line": 15
22+
"line": 17
2323
},
2424
"message": "A11y: <a> with mousedown, mouseup handlers must have an ARIA role",
25-
"pos": 394,
25+
"pos": 428,
2626
"start": {
27-
"character": 394,
27+
"character": 428,
2828
"column": 0,
29-
"line": 15
29+
"line": 17
3030
}
3131
}
3232
]

0 commit comments

Comments
 (0)