From 51a3972ad573f658a96548e593b4665b82ec0863 Mon Sep 17 00:00:00 2001 From: Jacob Wright Date: Wed, 19 Sep 2018 15:23:01 -0600 Subject: [PATCH] Fixes shorthand class directives which do not have classes Fixes #1739 --- src/compile/nodes/Element.ts | 2 +- .../samples/class-shortcut-with-class/_config.js | 16 ++++++++++++++++ .../samples/class-shortcut-with-class/main.html | 1 + test/runtime/samples/class-shortcut/_config.js | 7 +++---- test/runtime/samples/class-shortcut/main.html | 2 +- 5 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 test/runtime/samples/class-shortcut-with-class/_config.js create mode 100644 test/runtime/samples/class-shortcut-with-class/main.html diff --git a/src/compile/nodes/Element.ts b/src/compile/nodes/Element.ts index 32f0b04e37..1206ad939b 100644 --- a/src/compile/nodes/Element.ts +++ b/src/compile/nodes/Element.ts @@ -1326,7 +1326,7 @@ export default class Element extends Node { dependencies = expression.dependencies; } else { snippet = `ctx${quotePropIfNecessary(name)}`; - dependencies = [name]; + dependencies = new Set([name]); } const updater = `@toggleClass(${this.var}, "${name}", ${snippet});`; diff --git a/test/runtime/samples/class-shortcut-with-class/_config.js b/test/runtime/samples/class-shortcut-with-class/_config.js new file mode 100644 index 0000000000..2d36b6eabf --- /dev/null +++ b/test/runtime/samples/class-shortcut-with-class/_config.js @@ -0,0 +1,16 @@ +export default { + data: { + "is-active": true, + isSelected: true, + myClass: 'one two' + }, + html: `
`, + + test ( assert, component, target, window ) { + component.set({ "is-active": false }); + + assert.htmlEqual( target.innerHTML, ` +
+ ` ); + } +}; diff --git a/test/runtime/samples/class-shortcut-with-class/main.html b/test/runtime/samples/class-shortcut-with-class/main.html new file mode 100644 index 0000000000..8e608c33e7 --- /dev/null +++ b/test/runtime/samples/class-shortcut-with-class/main.html @@ -0,0 +1 @@ +
diff --git a/test/runtime/samples/class-shortcut/_config.js b/test/runtime/samples/class-shortcut/_config.js index 2d36b6eabf..22ccd68b5b 100644 --- a/test/runtime/samples/class-shortcut/_config.js +++ b/test/runtime/samples/class-shortcut/_config.js @@ -1,16 +1,15 @@ export default { data: { "is-active": true, - isSelected: true, - myClass: 'one two' + isSelected: true }, - html: `
`, + html: `
`, test ( assert, component, target, window ) { component.set({ "is-active": false }); assert.htmlEqual( target.innerHTML, ` -
+
` ); } }; diff --git a/test/runtime/samples/class-shortcut/main.html b/test/runtime/samples/class-shortcut/main.html index 8e608c33e7..2bd6a32b6e 100644 --- a/test/runtime/samples/class-shortcut/main.html +++ b/test/runtime/samples/class-shortcut/main.html @@ -1 +1 @@ -
+