From 3c7f9b8d05cf4d6ad8fc9ad08bbbd11715c6b9f6 Mon Sep 17 00:00:00 2001 From: Armano Date: Tue, 18 Jul 2017 00:56:45 +0200 Subject: [PATCH 1/2] Add support for v-on="$listeners" (#89) --- lib/rules/no-invalid-v-on.js | 12 +++++++----- tests/lib/rules/no-invalid-v-bind.js | 4 ++++ tests/lib/rules/no-invalid-v-on.js | 4 ++++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/lib/rules/no-invalid-v-on.js b/lib/rules/no-invalid-v-on.js index c2a62aebf..167a7a0e4 100644 --- a/lib/rules/no-invalid-v-on.js +++ b/lib/rules/no-invalid-v-on.js @@ -34,11 +34,13 @@ function create (context) { utils.registerTemplateBodyVisitor(context, { "VAttribute[directive=true][key.name='on']" (node) { if (!node.key.argument) { - context.report({ - node, - loc: node.loc, - message: "'v-on' directives require event names." - }) + if (!node.value || node.value.type !== 'VExpressionContainer' || node.value.expression.name !== '$listeners') { + context.report({ + node, + loc: node.loc, + message: "'v-on' directives require event names." + }) + } } for (const modifier of node.key.modifiers) { if (!VALID_MODIFIERS.has(modifier) && !Number.isInteger(parseInt(modifier, 10))) { diff --git a/tests/lib/rules/no-invalid-v-bind.js b/tests/lib/rules/no-invalid-v-bind.js index cf1a0a14c..385920976 100644 --- a/tests/lib/rules/no-invalid-v-bind.js +++ b/tests/lib/rules/no-invalid-v-bind.js @@ -70,6 +70,10 @@ tester.run('no-invalid-v-bind', rule, { { filename: 'test.vue', code: "" + }, + { + filename: 'test.vue', + code: "" } ], invalid: [ diff --git a/tests/lib/rules/no-invalid-v-on.js b/tests/lib/rules/no-invalid-v-on.js index 820a9509e..e4852be22 100644 --- a/tests/lib/rules/no-invalid-v-on.js +++ b/tests/lib/rules/no-invalid-v-on.js @@ -54,6 +54,10 @@ tester.run('no-invalid-v-on', rule, { { filename: 'test.vue', code: '' + }, + { + filename: 'test.vue', + code: '' } ], invalid: [ From c211de68d625e887d36b51617a8b97387a06352f Mon Sep 17 00:00:00 2001 From: Armano Date: Tue, 18 Jul 2017 02:09:45 +0200 Subject: [PATCH 2/2] 'v-on' directives require event names. is no longer valid after 2.4.0 --- lib/rules/no-invalid-v-on.js | 9 --------- tests/lib/rules/no-invalid-v-on.js | 5 ----- 2 files changed, 14 deletions(-) diff --git a/lib/rules/no-invalid-v-on.js b/lib/rules/no-invalid-v-on.js index 167a7a0e4..a271d45fa 100644 --- a/lib/rules/no-invalid-v-on.js +++ b/lib/rules/no-invalid-v-on.js @@ -33,15 +33,6 @@ const VERB_MODIFIERS = new Set([ function create (context) { utils.registerTemplateBodyVisitor(context, { "VAttribute[directive=true][key.name='on']" (node) { - if (!node.key.argument) { - if (!node.value || node.value.type !== 'VExpressionContainer' || node.value.expression.name !== '$listeners') { - context.report({ - node, - loc: node.loc, - message: "'v-on' directives require event names." - }) - } - } for (const modifier of node.key.modifiers) { if (!VALID_MODIFIERS.has(modifier) && !Number.isInteger(parseInt(modifier, 10))) { context.report({ diff --git a/tests/lib/rules/no-invalid-v-on.js b/tests/lib/rules/no-invalid-v-on.js index e4852be22..06ba18b45 100644 --- a/tests/lib/rules/no-invalid-v-on.js +++ b/tests/lib/rules/no-invalid-v-on.js @@ -61,11 +61,6 @@ tester.run('no-invalid-v-on', rule, { } ], invalid: [ - { - filename: 'test.vue', - code: '', - errors: ["'v-on' directives require event names."] - }, { filename: 'test.vue', code: '',