Skip to content

Commit 22f4b3d

Browse files
committed
Remove camel-casing, but account for dashed parameters still.
1 parent c1fc9c1 commit 22f4b3d

File tree

2 files changed

+8
-11
lines changed

2 files changed

+8
-11
lines changed

src/compile/nodes/Element.ts

+6-9
Original file line numberDiff line numberDiff line change
@@ -895,17 +895,16 @@ export default class Element extends Node {
895895
snippet = expression.snippet;
896896
dependencies = expression.dependencies;
897897
} else {
898-
const varName = camelCase(name);
899-
snippet = `ctx.${varName}`;
900-
dependencies = [varName];
898+
snippet = `ctx${propertize(name)}`;
899+
dependencies = [name];
901900
}
902901
const updater = `@toggleClass(${this.var}, "${name}", ${snippet});`;
903902

904903
block.builders.hydrate.addLine(updater);
905904

906905
if ((dependencies && dependencies.size > 0) || this.classDependencies.length) {
907906
const allDeps = this.classDependencies.concat(...dependencies);
908-
const deps = allDeps.map(dependency => `changed.${dependency}`).join(' || ');
907+
const deps = allDeps.map(dependency => `changed${propertize(dependency)}`).join(' || ');
909908
const condition = allDeps.length > 1 ? `(${deps})` : deps;
910909

911910
block.builders.update.addConditional(
@@ -988,7 +987,7 @@ export default class Element extends Node {
988987

989988
const classExpr = this.classes.map((classDir: Class) => {
990989
const { expression, name } = classDir;
991-
const snippet = expression ? expression.snippet : `ctx.${camelCase(name)}`;
990+
const snippet = expression ? expression.snippet : `ctx${propertize(name)}`;
992991
return `${snippet} ? "${name}" : ""`;
993992
}).join(', ');
994993

@@ -1170,8 +1169,6 @@ const events = [
11701169
}
11711170
];
11721171

1173-
function camelCase(str) {
1174-
return str.replace(/(-\w)/g, function (m) {
1175-
return m[1].toUpperCase();
1176-
});
1172+
function propertize(prop) {
1173+
return /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(prop) ? `.${prop}` : `["${prop}"]`;
11771174
}

test/runtime/samples/class-shortcut/_config.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
export default {
22
data: {
3-
isActive: true,
3+
"is-active": true,
44
isSelected: true,
55
myClass: 'one two'
66
},
77
html: `<div class="one two is-active isSelected"></div>`,
88

99
test ( assert, component, target, window ) {
10-
component.set({ isActive: false });
10+
component.set({ "is-active": false });
1111

1212
assert.htmlEqual( target.innerHTML, `
1313
<div class="one two isSelected"></div>

0 commit comments

Comments
 (0)