mirror of
https://github.com/jaandrle/deka-dom-el
synced 2024-11-23 17:19:37 +01:00
70 lines
1.7 KiB
JavaScript
70 lines
1.7 KiB
JavaScript
|
import {
|
||
|
el,
|
||
|
customElementRender,
|
||
|
customElementWithDDE,
|
||
|
} from "deka-dom-el";
|
||
|
function ddeComponent(){
|
||
|
return el().append(
|
||
|
el("style", `
|
||
|
.red{ color: firebrick; }
|
||
|
`),
|
||
|
el("p", { className: "red" }).append(
|
||
|
"Hello from ", el("slot", "Custom Element"), "!"
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
export class A extends HTMLElement{
|
||
|
static tagName= "custom-element-without";
|
||
|
connectedCallback(){
|
||
|
customElementRender(
|
||
|
this,
|
||
|
this,
|
||
|
ddeComponent
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
customElementWithDDE(A);
|
||
|
customElements.define(A.tagName, A);
|
||
|
export class B extends HTMLElement{
|
||
|
static tagName= "custom-element-open";
|
||
|
connectedCallback(){
|
||
|
customElementRender(
|
||
|
this,
|
||
|
this.attachShadow({ mode: "open" }),
|
||
|
ddeComponent
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
customElementWithDDE(B);
|
||
|
customElements.define(B.tagName, B);
|
||
|
export class C extends HTMLElement{
|
||
|
static tagName= "custom-element-closed";
|
||
|
connectedCallback(){
|
||
|
customElementRender(
|
||
|
this,
|
||
|
this.attachShadow({ mode: "closed" }),
|
||
|
ddeComponent
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
customElementWithDDE(C);
|
||
|
customElements.define(C.tagName, C);
|
||
|
|
||
|
document.body.append(
|
||
|
el(A.tagName).append("Without shadowRoot"),
|
||
|
el("hr"),
|
||
|
el(B.tagName).append("Open shadowRoot"),
|
||
|
el("hr"),
|
||
|
el(C.tagName).append("Closed shadowRoot"),
|
||
|
el("style", `
|
||
|
.red{ color: crimson; }
|
||
|
`),
|
||
|
);
|
||
|
console.log(A.tagName, "expect modifications");
|
||
|
document.body.querySelector(A.tagName).querySelector("p").textContent+= " (editable with JS)";
|
||
|
console.log(B.tagName, "expect modifications");
|
||
|
document.body.querySelector(B.tagName).shadowRoot.querySelector("p").textContent+= " (editable with JS)";
|
||
|
console.log(C.tagName, "expect error ↓");
|
||
|
document.body.querySelector(C.tagName).querySelector("p").textContent+= " (editable with JS)";
|