class NavigationButton extends HTMLElement {
SELECTEDSUFFIX = '-selected.svg';
DESELECTEDSUFFIX = '-deselected.svg'
static get observedAttributes() {
return ['imagename','viewname','mode'];
}
constructor() {
super();
let template = document.getElementById('navigationbutton');
let templateContent = template.content;
const shadow = this.attachShadow({
mode: 'open'
})
.appendChild(templateContent.cloneNode(true));
}
setMode(mode){
this.mode = mode;
var imagestring = this.imagename;
if(this.mode=='active'){
imagestring = imagestring + this.SELECTEDSUFFIX;
}else{
imagestring = imagestring + this.DESELECTEDSUFFIX;
}
this.buttonimage.src = './images/' + imagestring;
}
setEnabled(){
this.setMode('active');
}
setDisabled(){
this.setMode('inactive');
}
connectedCallback(){
var customElement = this;
var sr = this.shadowRoot;
this.buttonimage = sr.getElementById('navbuttonimage');
this.button = sr.getElementById('navbutton');
// this.mode = customElement.getAttribute('mode');
this.viewname = customElement.getAttribute('viewname');
this.imagename = customElement.getAttribute('imagename')
this.setMode(customElement.getAttribute('mode'));
this.button.onclick = function () {
console.log('CLICKING NAV BUTTON: ' + customElement.viewname.toLocaleUpperCase());
var customEvent = new CustomEvent( 'NAV', {
detail: {
eventData: {"id":customElement.viewname}
},
bubbles: true
});
customElement.dispatchEvent(customEvent);
}
console.log('ADDING NAVIGATION BUTTON : ' + this.viewname.toLocaleUpperCase());
}
}
try {
customElements.define('navigationbutton-element', NavigationButton);
} catch (err) {
const h3 = document.createElement('h3')
h3.innerHTML = err
document.body.appendChild(h3)
}