From b6605b62e0da8175eb77b33ede6762e1b2cb85b7 Mon Sep 17 00:00:00 2001 From: TheThomaas Date: Wed, 16 Sep 2026 15:56:38 +0200 Subject: [PATCH] Update cookcli-card.js --- dist/cookcli-card.js | 119 +++++++++++++------------------------------ 1 file changed, 34 insertions(+), 85 deletions(-) diff --git a/dist/cookcli-card.js b/dist/cookcli-card.js index 7d0f7b6..e55037e 100644 --- a/dist/cookcli-card.js +++ b/dist/cookcli-card.js @@ -54,6 +54,40 @@ class CookCliCard extends HTMLElement { this._render(); } + /** + * Éditeur de configuration automatique intégré à Home Assistant. + * HA utilise ce schéma pour générer le formulaire visuel. + */ + static getConfigForm() { + return { + schema: [ + { + name: "title", + selector: { text: {} }, + }, + { + name: "dashboard_path", + selector: { text: {} }, + helper: "Laisser vide pour naviguer dans le dashboard courant", + }, + { + name: "entry_id", + selector: { text: {} }, + helper: "Optionnel — ID d'entrée si plusieurs serveurs CookCLI", + }, + ], + // Fonction optionnelle pour personnaliser les libellés + computeLabel: (schema) => { + const labels = { + title: "Titre", + dashboard_path: "Chemin du dashboard", + entry_id: "Entry ID", + }; + return labels[schema.name] || schema.name; + }, + }; + } + set hass(hass) { this._hass = hass; if (this._recipes === null && !this._loading) { @@ -183,92 +217,7 @@ class CookCliCard extends HTMLElement { } } -class CookCliCardEditor extends HTMLElement { - setConfig(config) { - this._config = config; - } - - configChanged(newConfig) { - const event = new Event("config-changed", { - bubbles: true, - composed: true, - }); - event.detail = { config: newConfig }; - this.dispatchEvent(event); - } - - set hass(hass) { - this._hass = hass; - } - - // Définit le schéma du formulaire (une entrée par champ configurable) - get _schema() { - return [ - { - name: "title", - selector: { text: {} }, - }, - { - name: "dashboard_path", - selector: { text: {} }, - helper: "Laisser vide pour naviguer dans le dashboard courant", - }, - { - name: "entry_id", - selector: { text: {} }, - helper: "Optionnel — ID d'entrée si plusieurs serveurs CookCLI", - }, - ]; - } - - // Fournit les libellés des champs - _computeLabel(schema) { - const labels = { - title: "Titre", - dashboard_path: "Chemin du dashboard", - entry_id: "Entry ID", - }; - return labels[schema.name] || schema.name; - } - - // Gère les changements dans le formulaire - _valueChanged(ev) { - if (!this._config || !this._hass) { - return; - } - const newConfig = { ...this._config, ...ev.detail.value }; - - this._config = newConfig; - - const event = new CustomEvent("config-changed", { - detail: { config: newConfig }, - bubbles: true, - composed: true, - }); - this.dispatchEvent(event); - } - - render() { - if (!this._hass) return; - - this.innerHTML = ` - - `; - } - - connectedCallback() { - this.render(); - } -} - customElements.define("cookcli-card", CookCliCard); -customElements.define("cookcli-card-editor", CookCliCardEditor); window.customCards = window.customCards || []; window.customCards.push({