Skip to content

Commit b6ca337

Browse files
committed
Make bare smart so it can be used with key modifiers
1 parent b542027 commit b6ca337

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

src/compiler/codegen/events.js

+9-2
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ const modifierCode: { [key: string]: string } = {
3131
meta: genGuard(`!$event.metaKey`),
3232
left: genGuard(`'button' in $event && $event.button !== 0`),
3333
middle: genGuard(`'button' in $event && $event.button !== 1`),
34-
right: genGuard(`'button' in $event && $event.button !== 2`),
35-
bare: genGuard(`$event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey`)
34+
right: genGuard(`'button' in $event && $event.button !== 2`)
3635
}
3736

3837
export function genHandlers (
@@ -88,6 +87,14 @@ function genHandler (
8887
if (keyCodes[key]) {
8988
keys.push(key)
9089
}
90+
} else if (key === 'bare') {
91+
const modifiers: ASTModifiers = (handler.modifiers: any)
92+
genModifierCode += genGuard(
93+
['ctrl', 'shift', 'alt', 'meta']
94+
.filter(keyModifier => !modifiers[keyModifier])
95+
.map(keyModifier => `$event.${keyModifier}Key`)
96+
.join(' || ')
97+
)
9198
} else {
9299
keys.push(key)
93100
}

test/unit/modules/compiler/codegen.spec.js

+4
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,10 @@ describe('codegen', () => {
302302
'<input @click.bare="onClick">',
303303
`with(this){return _c('input',{on:{"click":function($event){if($event.ctrlKey || $event.shiftKey || $event.altKey || $event.metaKey)return null;onClick($event)}}})}`
304304
)
305+
assertCodegen(
306+
'<input @click.ctrl.bare="onClick">',
307+
`with(this){return _c('input',{on:{"click":function($event){if(!$event.ctrlKey)return null;if($event.shiftKey || $event.altKey || $event.metaKey)return null;onClick($event)}}})}`
308+
)
305309
})
306310

307311
it('generate events with multiple modifiers', () => {

0 commit comments

Comments
 (0)