-
-
Notifications
You must be signed in to change notification settings - Fork 113
/
Copy pathmy-button-ns.js
40 lines (31 loc) · 868 Bytes
/
my-button-ns.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
fetch('my-button.css').then(t => t.text()).then(css => {
document.head.appendChild(
document.createElement('style')
).textContent = css.replace(/^(\S)/gm, 'my-button-ns $1');
class MyButtonNS extends HTMLElement {
// bind once the component Shadow DOM
constructor(self) {
self = super(self);
self.html = hyperHTML.bind(self);
return self;
}
// render once connected
connectedCallback() {
this.render();
}
// do something on click
onclick(event) {
event.preventDefault();
alert('clicked');
}
// render whenever it's necessary
render() {
this.html`
<button onclick="${this.onclick}">
${this.nodeName.toLowerCase()} (poly + no Shadow DOM)
</button>`;
}
}
// register the component
customElements.define('my-button-ns', MyButtonNS);
});