diff --git a/src/compile/nodes/Component.ts b/src/compile/nodes/Component.ts index 8bb5537856..c5efd25afb 100644 --- a/src/compile/nodes/Component.ts +++ b/src/compile/nodes/Component.ts @@ -176,7 +176,7 @@ export default class Component extends Node { const { name, dependencies } = attr; const condition = dependencies.size > 0 && (dependencies.size !== allDependencies.size) - ? [...dependencies].map(d => `changed.${d}`).join(' || ') + ? `(${[...dependencies].map(d => `changed.${d}`).join(' || ')})` : null; if (attr.isSpread) { diff --git a/src/compile/nodes/Element.ts b/src/compile/nodes/Element.ts index 8c7fe2b217..6c174f0272 100644 --- a/src/compile/nodes/Element.ts +++ b/src/compile/nodes/Element.ts @@ -559,7 +559,7 @@ export default class Element extends Node { .filter(attr => attr.type === 'Attribute' || attr.type === 'Spread') .forEach(attr => { const condition = attr.dependencies.size > 0 - ? [...attr.dependencies].map(d => `changed.${d}`).join(' || ') + ? `(${[...attr.dependencies].map(d => `changed.${d}`).join(' || ')})` : null; if (attr.isSpread) { diff --git a/test/runtime/samples/spread-component-multiple-dependencies/Widget.html b/test/runtime/samples/spread-component-multiple-dependencies/Widget.html new file mode 100644 index 0000000000..ab2d2d0242 --- /dev/null +++ b/test/runtime/samples/spread-component-multiple-dependencies/Widget.html @@ -0,0 +1 @@ +{foo} {baz} diff --git a/test/runtime/samples/spread-component-multiple-dependencies/_config.js b/test/runtime/samples/spread-component-multiple-dependencies/_config.js new file mode 100644 index 0000000000..42b0c5693f --- /dev/null +++ b/test/runtime/samples/spread-component-multiple-dependencies/_config.js @@ -0,0 +1,10 @@ +export default { + html: `b baz`, + test(assert, component, target) { + component.set({ foo: true }); + assert.htmlEqual( + target.innerHTML, + `a baz` + ); + }, +}; diff --git a/test/runtime/samples/spread-component-multiple-dependencies/main.html b/test/runtime/samples/spread-component-multiple-dependencies/main.html new file mode 100644 index 0000000000..dedfa27477 --- /dev/null +++ b/test/runtime/samples/spread-component-multiple-dependencies/main.html @@ -0,0 +1,13 @@ + + + diff --git a/test/runtime/samples/spread-element-multiple-dependencies/_config.js b/test/runtime/samples/spread-element-multiple-dependencies/_config.js new file mode 100644 index 0000000000..e8f3d68e32 --- /dev/null +++ b/test/runtime/samples/spread-element-multiple-dependencies/_config.js @@ -0,0 +1,10 @@ +export default { + html: `
`, + test(assert, component, target) { + component.set({ foo: true }); + assert.htmlEqual( + target.innerHTML, + `
` + ); + }, +}; diff --git a/test/runtime/samples/spread-element-multiple-dependencies/main.html b/test/runtime/samples/spread-element-multiple-dependencies/main.html new file mode 100644 index 0000000000..f6f436714d --- /dev/null +++ b/test/runtime/samples/spread-element-multiple-dependencies/main.html @@ -0,0 +1,12 @@ +
+ +