From 113cc118cfd1cca6944f5b70e967195e30c67844 Mon Sep 17 00:00:00 2001 From: karwosts <32912880+karwosts@users.noreply.github.com> Date: Fri, 23 May 2025 10:52:42 -0700 Subject: [PATCH] Support for disabled selectors in config flow (#22592) * Support for disabled selectors in config flow * rename flag to readonly * rename to read_only * Merge branch 'dev' of https://github.com/home-assistant/frontend into disabled-fields-config-flow * rework for new backend * Fix disabled entity picker * no longer used type * Update src/dialogs/config-flow/step-flow-form.ts Co-authored-by: Petar Petrov --------- Co-authored-by: Petar Petrov --- src/components/entity/ha-entity-picker.ts | 1 + src/dialogs/config-flow/step-flow-form.ts | 25 +++++++++++++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/components/entity/ha-entity-picker.ts b/src/components/entity/ha-entity-picker.ts index 5968b4a103..ef39a4ef14 100644 --- a/src/components/entity/ha-entity-picker.ts +++ b/src/components/entity/ha-entity-picker.ts @@ -386,6 +386,7 @@ export class HaEntityPicker extends LitElement { return html` + schema?.map((field) => ({ + ...field, + ...(Object.values((field as HaFormSelector)?.selector ?? {})[0]?.read_only + ? { disabled: true } + : {}), + })) + ); + protected render(): TemplateResult { const step = this.step; const stepData = this._stepDataProcessed; @@ -53,7 +66,9 @@ class StepFlowForm extends LitElement { .data=${stepData} .disabled=${this._loading} @value-changed=${this._stepDataChanged} - .schema=${autocompleteLoginFields(step.data_schema)} + .schema=${autocompleteLoginFields( + this.handleReadOnlyFields(step.data_schema) + )} .error=${step.errors} .computeLabel=${this._labelCallback} .computeHelper=${this._helperCallback} @@ -178,8 +193,10 @@ class StepFlowForm extends LitElement { Object.keys(stepData).forEach((key) => { const value = stepData[key]; const isEmpty = [undefined, ""].includes(value); - - if (!isEmpty) { + const field = this.step.data_schema?.find((f) => f.name === key); + const selector = (field as HaFormSelector)?.selector ?? {}; + const read_only = (Object.values(selector)[0] as any)?.read_only; + if (!isEmpty && !read_only) { toSendData[key] = value; } });