From 076052aafc991bd8370bcb1ac2302acfb24a461d Mon Sep 17 00:00:00 2001 From: kingmario Date: Wed, 26 Oct 2016 12:57:00 +0800 Subject: [PATCH 1/3] Modifiers key modifier for directive on --- src/compiler/codegen/events.js | 5 ++++- test/unit/modules/compiler/codegen.spec.js | 12 ++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/compiler/codegen/events.js b/src/compiler/codegen/events.js index 79c79404662..bb8a5827469 100644 --- a/src/compiler/codegen/events.js +++ b/src/compiler/codegen/events.js @@ -18,7 +18,10 @@ const keyCodes = { const modifierCode = { stop: '$event.stopPropagation();', prevent: '$event.preventDefault();', - self: 'if($event.target !== $event.currentTarget)return;' + self: 'if($event.target !== $event.currentTarget)return;', + ctrl: 'if(!$event.ctrlKey)return;', + shift: 'if(!$event.shiftKey)return;', + alt: 'if(!$event.altKey)return;' } export function genHandlers (events: ASTElementHandlers, native?: boolean): string { diff --git a/test/unit/modules/compiler/codegen.spec.js b/test/unit/modules/compiler/codegen.spec.js index 99359f5eb63..f356e4318af 100644 --- a/test/unit/modules/compiler/codegen.spec.js +++ b/test/unit/modules/compiler/codegen.spec.js @@ -221,6 +221,18 @@ describe('codegen', () => { '', `with(this){return _h('input',{on:{"input":function($event){if($event.target !== $event.currentTarget)return;onInput($event)}}})}` ) + assertCodegen( + '', + `with(this){return _h('input',{on:{"input":function($event){if(!$event.ctrlKey)return;onInput($event)}}})}` + ) + assertCodegen( + '', + `with(this){return _h('input',{on:{"input":function($event){if(!$event.shiftKey)return;onInput($event)}}})}` + ) + assertCodegen( + '', + `with(this){return _h('input',{on:{"input":function($event){if(!$event.altKey)return;onInput($event)}}})}` + ) }) it('generate events with multiple modifers', () => { From 4305daf8f42a4a5fe1318e93ff244803505b01de Mon Sep 17 00:00:00 2001 From: kingmario Date: Wed, 26 Oct 2016 14:37:08 +0800 Subject: [PATCH 2/3] meta modifier key modifier for directive on --- src/compiler/codegen/events.js | 3 ++- test/unit/modules/compiler/codegen.spec.js | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/compiler/codegen/events.js b/src/compiler/codegen/events.js index bb8a5827469..fb1bcb960b1 100644 --- a/src/compiler/codegen/events.js +++ b/src/compiler/codegen/events.js @@ -21,7 +21,8 @@ const modifierCode = { self: 'if($event.target !== $event.currentTarget)return;', ctrl: 'if(!$event.ctrlKey)return;', shift: 'if(!$event.shiftKey)return;', - alt: 'if(!$event.altKey)return;' + alt: 'if(!$event.altKey)return;', + meta: 'if(!$event.metaKey)return;' } export function genHandlers (events: ASTElementHandlers, native?: boolean): string { diff --git a/test/unit/modules/compiler/codegen.spec.js b/test/unit/modules/compiler/codegen.spec.js index f356e4318af..267834c70d9 100644 --- a/test/unit/modules/compiler/codegen.spec.js +++ b/test/unit/modules/compiler/codegen.spec.js @@ -233,6 +233,10 @@ describe('codegen', () => { '', `with(this){return _h('input',{on:{"input":function($event){if(!$event.altKey)return;onInput($event)}}})}` ) +assertCodegen( + '', + `with(this){return _h('input',{on:{"input":function($event){if(!$event.metaKey)return;onInput($event)}}})}` +) }) it('generate events with multiple modifers', () => { From 30b3e15af071fae1cd2a7536f1b150bc0c8278d8 Mon Sep 17 00:00:00 2001 From: kingmario Date: Wed, 26 Oct 2016 14:43:22 +0800 Subject: [PATCH 3/3] Code format --- test/unit/modules/compiler/codegen.spec.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/unit/modules/compiler/codegen.spec.js b/test/unit/modules/compiler/codegen.spec.js index 267834c70d9..10c8d2061be 100644 --- a/test/unit/modules/compiler/codegen.spec.js +++ b/test/unit/modules/compiler/codegen.spec.js @@ -233,10 +233,10 @@ describe('codegen', () => { '', `with(this){return _h('input',{on:{"input":function($event){if(!$event.altKey)return;onInput($event)}}})}` ) -assertCodegen( - '', - `with(this){return _h('input',{on:{"input":function($event){if(!$event.metaKey)return;onInput($event)}}})}` -) + assertCodegen( + '', + `with(this){return _h('input',{on:{"input":function($event){if(!$event.metaKey)return;onInput($event)}}})}` + ) }) it('generate events with multiple modifers', () => {