Skip to content

Commit 235705d

Browse files
committed
fix(compiler-vapor): camelize kebab-case component event handlers
1 parent 1428c06 commit 235705d

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

packages/compiler-vapor/__tests__/transforms/__snapshots__/vOn.spec.ts.snap

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,16 @@ export function render(_ctx) {
1212
}"
1313
`;
1414

15+
exports[`v-on > component event should camelize kebab-case 1`] = `
16+
"import { resolveComponent as _resolveComponent, createComponentWithFallback as _createComponentWithFallback } from 'vue';
17+
18+
export function render(_ctx) {
19+
const _component_Comp = _resolveComponent("Comp")
20+
const n0 = _createComponentWithFallback(_component_Comp, { onNameClick: () => _ctx.handleClick }, null, true)
21+
return n0
22+
}"
23+
`;
24+
1525
exports[`v-on > component event with special characters 1`] = `
1626
"import { resolveComponent as _resolveComponent, createComponentWithFallback as _createComponentWithFallback } from 'vue';
1727
@@ -21,7 +31,7 @@ export function render(_ctx) {
2131
const _on_update_model1 = () => {}
2232
const n0 = _createComponentWithFallback(_component_Foo, {
2333
"onUpdate:model": () => _on_update_model,
24-
"onUpdate-model": () => _on_update_model1
34+
onUpdateModel: () => _on_update_model1
2535
}, null, true)
2636
return n0
2737
}"

packages/compiler-vapor/__tests__/transforms/vOn.spec.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -725,6 +725,12 @@ describe('v-on', () => {
725725
expect(code).contains('const _on_update_model = () => {}')
726726
expect(code).contains('const _on_update_model1 = () => {}')
727727
expect(code).contains('"onUpdate:model": () => _on_update_model')
728-
expect(code).contains('"onUpdate-model": () => _on_update_model1')
728+
expect(code).contains('onUpdateModel: () => _on_update_model1')
729+
})
730+
731+
test('component event should camelize kebab-case', () => {
732+
const { code } = compileWithVOn(`<Comp @name-click="handleClick" />`)
733+
expect(code).matchSnapshot()
734+
expect(code).contains('onNameClick: () => _ctx.handleClick')
729735
})
730736
})

packages/compiler-vapor/src/generators/prop.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import {
2121
genMulti,
2222
} from './utils'
2323
import {
24+
camelize,
2425
canSetValueDirectly,
2526
capitalize,
2627
extend,
@@ -125,7 +126,7 @@ export function genPropKey(
125126
if (node.isStatic) {
126127
// only quote keys if necessary
127128
const keyName =
128-
(handler ? toHandlerKey(node.content) : node.content) +
129+
(handler ? toHandlerKey(camelize(node.content)) : node.content) +
129130
handlerModifierPostfix
130131
return [
131132
[

0 commit comments

Comments
 (0)