class CustomA extends HTMLElement {
constructor() {
super();
this.root = this.attachShadow({mode: "open"});
this.root.innerHTML = `
`;
}
connectedCallback() {
const button = this.root.querySelector("button");
button.addEventListener("click", () =>{
const event = new CustomEvent("customevent", { bubbles: true, composed: true});
button.dispatchEvent(event);
});
}
}
window.customElements.define("custom-a", CustomA);
class CustomB extends HTMLElement {
constructor() {
super();
this.root = this.attachShadow({mode: "open"});
this.root.innerHTML = `
`;
}
connectedCallback() {
const button = this.root.querySelector("button");
button.addEventListener("click", () =>{
const event = new CustomEvent("customevent", { bubbles: true});
button.dispatchEvent(event);
});
}
}
window.customElements.define("custom-b", CustomB);