From 33fbe4b1a51c24b3368c092ef8d08951ace79927 Mon Sep 17 00:00:00 2001 From: lidlanca <8693091+lidlanca@users.noreply.github.com> Date: Sat, 12 Mar 2022 18:18:33 -0500 Subject: [PATCH] ensure innerHTML for tempalte is done on template element. depends on:#7297 fixes #7315 #7319 --- src/runtime/internal/dom.ts | 6 +++--- test/runtime/samples/template/_config.js | 12 ++++++++++++ test/runtime/samples/template/main.svelte | 3 ++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/runtime/internal/dom.ts b/src/runtime/internal/dom.ts index 287c16b5fc..417b697d22 100644 --- a/src/runtime/internal/dom.ts +++ b/src/runtime/internal/dom.ts @@ -650,7 +650,7 @@ export class HtmlTag { // html tag nodes n: ChildNode[]; // target - t: HTMLElement; + t: HTMLElement | DocumentFragment; // anchor a: HTMLElement; @@ -665,7 +665,7 @@ export class HtmlTag { m(html: string, target: HTMLElement, anchor: HTMLElement = null) { if (!this.e) { this.e = element(target.nodeName as keyof HTMLElementTagNameMap); - this.t = target; + this.t = target.tagName !== 'TEMPLATE' ? target : (target as HTMLTemplateElement).content; this.c(html); } @@ -674,7 +674,7 @@ export class HtmlTag { h(html: string) { this.e.innerHTML = html; - this.n = Array.from(this.e.childNodes); + this.n = Array.from(this.e.nodeName == 'TEMPLATE' ? (this.e as HTMLTemplateElement).content.childNodes : this.e.childNodes); } i(anchor) { diff --git a/test/runtime/samples/template/_config.js b/test/runtime/samples/template/_config.js index 6e92d771bd..2a65b78716 100644 --- a/test/runtime/samples/template/_config.js +++ b/test/runtime/samples/template/_config.js @@ -6,6 +6,7 @@ export default {