diff --git a/cmd/wasm/components.go b/cmd/wasm/components.go index a982d52..faab087 100644 --- a/cmd/wasm/components.go +++ b/cmd/wasm/components.go @@ -60,6 +60,7 @@ func jsStringLiteral(s string) string { func customElementClassSource(tag, slot string) string { className := tagToClassName(tag) return "class " + className + " extends HTMLElement {" + + "#shadow;" + "constructor(){super();this.#shadow=this.attachShadow({mode:\"closed\"});}" + "connectedCallback(){this.#shadow.textContent=\"\";const slot=this.getAttribute(\"data-slot\")||" + jsStringLiteral(slot) + ";" + "this.dispatchEvent(new CustomEvent(\"wc-ready\",{detail:{tag:" + jsStringLiteral(tag) + ",slot}}));}" + diff --git a/cmd/wasm/register_test.go b/cmd/wasm/register_test.go index 0dfc025..eaf57e0 100644 --- a/cmd/wasm/register_test.go +++ b/cmd/wasm/register_test.go @@ -63,6 +63,7 @@ func TestCustomElementClassSource(t *testing.T) { src := customElementClassSource(`nav-bar`, `H`) assert.Contains(t, src, `class NavBar extends HTMLElement`) + assert.Contains(t, src, `#shadow;`) assert.Contains(t, src, `mode:"closed"`) assert.Contains(t, src, `#shadow`) assert.Contains(t, src, `data-slot`)