Update cookcli-card.js

This commit is contained in:
TheThomaas 2026-09-16 15:43:07 +02:00
parent 56429986b9
commit c34a53b621

111
dist/cookcli-card.js vendored
View file

@ -33,10 +33,6 @@
*/ */
class CookCliCard extends HTMLElement { class CookCliCard extends HTMLElement {
static getConfigElement() {
return document.createElement("cookcli-card-editor");
}
static getStubConfig() { static getStubConfig() {
return { title: "Recettes" }; return { title: "Recettes" };
} }
@ -183,67 +179,82 @@ class CookCliCard extends HTMLElement {
} }
} }
class CookCliCardEditor extends LitElement { class CookCliCardEditor extends HTMLElement {
setConfig(config) { setConfig(config) {
this._config = config || {}; this._config = config || {};
} }
configChanged(newConfig) { set hass(hass) {
const event = new Event("config-changed", { 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, bubbles: true,
composed: true, composed: true,
}); });
event.detail = { config: newConfig };
this.dispatchEvent(event); this.dispatchEvent(event);
} }
static getConfigForm() { render() {
return { if (!this._hass) return;
schema: [
{ this.innerHTML = `
name: "title", <ha-form
selector: { text: {} }, .hass=${this._hass}
}, .data=${this._config}
{ .schema=${this._schema}
name: "dashboard_path", .computeLabel=${this._computeLabel.bind(this)}
selector: { text: {} }, @value-changed=${this._valueChanged.bind(this)}
helper: "Laisser vide pour naviguer dans le dashboard courant", ></ha-form>
}, `;
{
name: "entry_id",
selector: { text: {} },
helper: "Optionnel — ID d'entrée si plusieurs serveurs CookCLI",
},
],
computeLabel: (schema) => {
const labels = {
title: "Titre",
dashboard_path: "Chemin du dashboard",
entry_id: "Entry ID",
};
return labels[schema.name] || schema.name;
},
computeHelper: (schema) => {
switch (schema.name) {
case "entity":
return "This text describes the function of the entity selector";
case "unit":
return "The unit of measurement for this card";
}
return undefined;
},
assertConfig: (config) => {
if (config.other_option) {
throw new Error("'other_option' is unexpected.");
}
},
};
} }
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({