diff --git a/src/templateClickEventsHaveKeyEventsRule.ts b/src/templateClickEventsHaveKeyEventsRule.ts index 0ca69a839..b7e4eb1b5 100644 --- a/src/templateClickEventsHaveKeyEventsRule.ts +++ b/src/templateClickEventsHaveKeyEventsRule.ts @@ -56,8 +56,9 @@ class TemplateVisitorCtrl extends BasicTemplateAstVisitor { if (isInteractiveElement(el)) { return; } - - const hasKeyEvent = el.outputs.some(output => output.name === 'keyup' || output.name === 'keydown' || output.name === 'keypress'); + const hasKeyEvent = el.outputs.some( + output => output.name.startsWith('keyup') || output.name.startsWith('keydown') || output.name.startsWith('keypress') + ); if (hasKeyEvent) { return; diff --git a/test/templateClickEventsHaveKeyEventsRule.spec.ts b/test/templateClickEventsHaveKeyEventsRule.spec.ts index 840f9657a..12f3a1911 100644 --- a/test/templateClickEventsHaveKeyEventsRule.spec.ts +++ b/test/templateClickEventsHaveKeyEventsRule.spec.ts @@ -158,6 +158,18 @@ describe(ruleName, () => { assertSuccess(ruleName, source); }); + it('should work when click events are associated with key pseudo events', () => { + const source = ` + @Component({ + template: \` +
+ \` + }) + class Bar {} + `; + assertSuccess(ruleName, source); + }); + it('should work when click events are passed to custom element', () => { const source = ` @Component({