From 93ed945a4388c68815f6a5d71135e837ed1bf414 Mon Sep 17 00:00:00 2001 From: Yuichiro Yamashita Date: Sat, 14 May 2022 10:25:29 +0900 Subject: [PATCH] fix to apply class directive for svelte:element --- .../compile/render_dom/wrappers/Element/index.ts | 2 +- .../dynamic-element-class-directive/Link.svelte | 13 +++++++++++++ .../dynamic-element-class-directive/_config.js | 11 +++++++++++ .../dynamic-element-class-directive/main.svelte | 16 ++++++++++++++++ 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 test/runtime/samples/dynamic-element-class-directive/Link.svelte create mode 100644 test/runtime/samples/dynamic-element-class-directive/_config.js create mode 100644 test/runtime/samples/dynamic-element-class-directive/main.svelte diff --git a/src/compiler/compile/render_dom/wrappers/Element/index.ts b/src/compiler/compile/render_dom/wrappers/Element/index.ts index 8d2661116d..b182480261 100644 --- a/src/compiler/compile/render_dom/wrappers/Element/index.ts +++ b/src/compiler/compile/render_dom/wrappers/Element/index.ts @@ -1048,7 +1048,7 @@ export default class ElementWrapper extends Wrapper { block.chunks.hydrate.push(updater); - if (has_spread) { + if (has_spread || this.node.is_dynamic_element) { block.chunks.update.push(updater); } else if ((dependencies && dependencies.size > 0) || this.class_dependencies.length) { const all_dependencies = this.class_dependencies.concat(...dependencies); diff --git a/test/runtime/samples/dynamic-element-class-directive/Link.svelte b/test/runtime/samples/dynamic-element-class-directive/Link.svelte new file mode 100644 index 0000000000..c58b3d1dc5 --- /dev/null +++ b/test/runtime/samples/dynamic-element-class-directive/Link.svelte @@ -0,0 +1,13 @@ + + + + {item.text} + + + diff --git a/test/runtime/samples/dynamic-element-class-directive/_config.js b/test/runtime/samples/dynamic-element-class-directive/_config.js new file mode 100644 index 0000000000..1106467919 --- /dev/null +++ b/test/runtime/samples/dynamic-element-class-directive/_config.js @@ -0,0 +1,11 @@ +export default { + html: ` +
foo
+
foo0
+
foo0
+
foo0
+
foo1
+
foo2
+
foo3
+ ` +}; diff --git a/test/runtime/samples/dynamic-element-class-directive/main.svelte b/test/runtime/samples/dynamic-element-class-directive/main.svelte new file mode 100644 index 0000000000..58e9303100 --- /dev/null +++ b/test/runtime/samples/dynamic-element-class-directive/main.svelte @@ -0,0 +1,16 @@ + + + + + +{#each foo as item} + +{/each}