From fc8945be60fe00ca1820a8aa70ceb83a7ac8342a Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Thu, 26 Sep 2024 14:31:53 +0200 Subject: [PATCH] Flatten fields in sections in developer tools actions (#22096) * flatten fields in sections in developer tools actions * Update src/panels/developer-tools/action/developer-tools-action.ts --------- Co-authored-by: Paul Bottein --- .../action/developer-tools-action.ts | 32 +++++++++++++------ 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/src/panels/developer-tools/action/developer-tools-action.ts b/src/panels/developer-tools/action/developer-tools-action.ts index 40c8876501..f0f6dc78b1 100644 --- a/src/panels/developer-tools/action/developer-tools-action.ts +++ b/src/panels/developer-tools/action/developer-tools-action.ts @@ -1,5 +1,5 @@ import { mdiHelpCircle } from "@mdi/js"; -import { ERR_CONNECTION_LOST } from "home-assistant-js-websocket"; +import { ERR_CONNECTION_LOST, HassService } from "home-assistant-js-websocket"; import { load } from "js-yaml"; import { css, CSSResultGroup, html, LitElement, nothing } from "lit"; import { customElement, property, query, state } from "lit/decorators"; @@ -8,16 +8,16 @@ import { storage } from "../../../common/decorators/storage"; import { computeDomain } from "../../../common/entity/compute_domain"; import { computeObjectId } from "../../../common/entity/compute_object_id"; import { hasTemplate } from "../../../common/string/has-template"; -import { extractSearchParam } from "../../../common/url/search-params"; -import { HaProgressButton } from "../../../components/buttons/ha-progress-button"; import { LocalizeFunc } from "../../../common/translations/localize"; -import { showToast } from "../../../util/toast"; +import { extractSearchParam } from "../../../common/url/search-params"; import { copyToClipboard } from "../../../common/util/copy-clipboard"; +import { HaProgressButton } from "../../../components/buttons/ha-progress-button"; +import { showToast } from "../../../util/toast"; import "../../../components/entity/ha-entity-picker"; -import "../../../components/ha-card"; import "../../../components/ha-alert"; import "../../../components/ha-button"; +import "../../../components/ha-card"; import "../../../components/ha-expansion-panel"; import "../../../components/ha-icon-button"; import "../../../components/ha-service-control"; @@ -382,10 +382,24 @@ class HaPanelDevAction extends LitElement { } const target = "target" in serviceDomains[domain][service]; const fields = serviceDomains[domain][service].fields; - const result = Object.keys(fields).map((field) => ({ - key: field, - ...fields[field], - })); + const result: (HassService["fields"] & { key: string })[] = []; + + // TODO: remplace any by proper type when updated in home-assistant-js-websocket + const getFields = (flds: any) => { + Object.keys(flds).forEach((field) => { + const fieldData = flds[field]; + if (fieldData.fields) { + getFields(fieldData.fields); + } else { + result.push({ + key: field, + ...fieldData, + }); + } + }); + }; + + getFields(fields); return { target,