Skip to content

Commit 5a2b346

Browse files
committed
Implemented checkng non-interactive elemenets for interactive roles
1 parent dd11917 commit 5a2b346

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

src/compiler/compile/compiler_warnings.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,10 @@ export default {
119119
code: 'a11y-no-interactive-element-to-noninteractive-role',
120120
message: `A11y: <${element}> cannot have role '${role}'`
121121
}),
122+
a11y_no_noninteractive_element_to_interactive_role: (role: string | boolean, element: string) => ({
123+
code: 'a11y-no-noninteractive-element-to-interactive-role',
124+
message: `A11y: Non-interactive element <${element}> cannot have interactive role '${role}'`
125+
}),
122126
a11y_role_has_required_aria_props: (role: string, props: string[]) => ({
123127
code: 'a11y-role-has-required-aria-props',
124128
message: `A11y: Elements with the ARIA role "${role}" must have the following attributes defined: ${props.map(name => `"${name}"`).join(', ')}`

src/compiler/compile/nodes/Element.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -537,6 +537,11 @@ export default class Element extends Node {
537537
if (is_interactive_element(this.name, attribute_map) && (is_non_interactive_roles(current_role) || is_presentation_role(current_role))) {
538538
component.warn(this, compiler_warnings.a11y_no_interactive_element_to_noninteractive_role(current_role, this.name));
539539
}
540+
541+
// no-noninteractive-element-to-interactive-role
542+
if (!is_interactive_element(this.name, attribute_map) && is_interactive_roles(current_role)) {
543+
component.warn(this, compiler_warnings.a11y_no_noninteractive_element_to_interactive_role(current_role, this.name));
544+
}
540545
});
541546

542547
}

0 commit comments

Comments
 (0)