36 lines
986 B
JavaScript
Executable File
36 lines
986 B
JavaScript
Executable File
class LoadingSpinner extends HTMLElement {
|
|
|
|
static get observedAttributes() { return ['status']; }
|
|
|
|
constructor() {
|
|
// Always call super first in constructor
|
|
super();
|
|
|
|
let template = document.getElementById('loadingspinner');
|
|
let templateContent = template.content;
|
|
|
|
console.log('INITIALIZING SPINNER')
|
|
|
|
const shadow = this.attachShadow({
|
|
mode: 'open'
|
|
})
|
|
.appendChild(templateContent.cloneNode(true));
|
|
}
|
|
|
|
attributeChangedCallback(name, oldValue, newValue) {
|
|
// if status attribute is set, change to custom status
|
|
console.log("ATTRIBUTE CHANGED")
|
|
if (name == "status") {
|
|
this.shadowRoot.getElementById("status").innerHTML = newValue
|
|
}
|
|
}
|
|
}
|
|
|
|
try {
|
|
customElements.define('loading-spinner-element', LoadingSpinner);
|
|
} catch (err) {
|
|
const h3 = document.createElement('h3')
|
|
h3.innerHTML = err
|
|
document.body.appendChild(h3)
|
|
}
|