/* * Copyright (c) 2025. Brusegan Samuele, Davanzo Andrea * Questo file fa parte di VeyonCtrl ed รจ rilasciato * sotto la licenza MIT. Vedere il file LICENSE per i dettagli. */ class HomeButton extends HTMLElement { static watchedList = [ { attribute: "icon-src", htmlElement: "img", tagName: "src", }, { attribute: "text", htmlElement: "span", tagName: "", }, { attribute: "main-href", htmlElement: "div", tagName: "data-href", } ]; constructor() { super(); /* // 0. Richiedo le variabili globali da sessionStorage let URL_PATH = sessionStorage.getItem("url"); let THEME = sessionStorage.getItem("theme"); */ // 1. Crea lo Shadow DOM const shadow = this.attachShadow({mode: 'open'}); // 2. Definisci la struttura interna (HTML) e lo stile (CSS) const template = document.createElement('template'); template.innerHTML = `

`; // 3. Clona il contenuto del template e aggiungilo allo Shadow DOM shadow.appendChild(template.content.cloneNode(true)); } // Passaggio 2: Gestisci gli attributi e i callback static get observedAttributes() { let array = []; HomeButton.watchedList.forEach(element => { array.push(element.attribute); }) return array; } attributeChangedCallback(name, oldValue, newValue) { HomeButton.watchedList.forEach(element => { if (element.attribute === name) { let domElement = this.shadowRoot.querySelector(element.htmlElement); /*console.log(name, element, oldValue, newValue) console.log()*/ if (domElement) { if (element.tagName !== "") { // console.log(domElement) domElement[element.tagName] = newValue; // console.log(domElement) // console.log("------------") } else { domElement.textContent = newValue; } } } }) } connectedCallback() { let btn = this.shadowRoot.querySelector(".btn-home"); // console.log(btn) if (btn) { btn.addEventListener("click", () => { console.log(btn[ "data-href"]) window.location.href = btn.dataset.href; }) } } } // Passaggio 3: Registra il tuo elemento personalizzato customElements.define('home-button', HomeButton);