Update cookcli-card.js

This commit is contained in:
TheThomaas 2026-09-16 15:56:38 +02:00
parent 098efd62b1
commit b6605b62e0

119
dist/cookcli-card.js vendored
View file

@ -54,6 +54,40 @@ class CookCliCard extends HTMLElement {
this._render(); 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) { set hass(hass) {
this._hass = hass; this._hass = hass;
if (this._recipes === null && !this._loading) { 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 = `
<ha-form
.hass=${this._hass}
.data=${this._config}
.schema=${this._schema}
.computeLabel=${this._computeLabel.bind(this)}
@value-changed=${this._valueChanged.bind(this)}
></ha-form>
`;
}
connectedCallback() {
this.render();
}
}
customElements.define("cookcli-card", CookCliCard); customElements.define("cookcli-card", CookCliCard);
customElements.define("cookcli-card-editor", CookCliCardEditor);
window.customCards = window.customCards || []; window.customCards = window.customCards || [];
window.customCards.push({ window.customCards.push({