mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-27 03:06:41 +00:00
Process expandable initial data also for none required expandables (#24733)
* Process expandable initial data also for none required expandables * Update compute-initial-ha-form-data.ts * check required fields of sections too when submitting
This commit is contained in:
parent
586a137037
commit
bbe549fa86
@ -13,6 +13,12 @@ export const computeInitialHaFormData = (
|
|||||||
data[field.name] = field.description.suggested_value;
|
data[field.name] = field.description.suggested_value;
|
||||||
} else if ("default" in field) {
|
} else if ("default" in field) {
|
||||||
data[field.name] = field.default;
|
data[field.name] = field.default;
|
||||||
|
} else if (field.type === "expandable") {
|
||||||
|
const expandableData = computeInitialHaFormData(field.schema);
|
||||||
|
if (field.required || Object.keys(expandableData).length) {
|
||||||
|
// Only add expandable data if it's required or any of its children have initial values.
|
||||||
|
data[field.name] = expandableData;
|
||||||
|
}
|
||||||
} else if (!field.required) {
|
} else if (!field.required) {
|
||||||
// Do nothing.
|
// Do nothing.
|
||||||
} else if (field.type === "boolean") {
|
} else if (field.type === "boolean") {
|
||||||
@ -36,8 +42,6 @@ export const computeInitialHaFormData = (
|
|||||||
minutes: 0,
|
minutes: 0,
|
||||||
seconds: 0,
|
seconds: 0,
|
||||||
};
|
};
|
||||||
} else if (field.type === "expandable") {
|
|
||||||
data[field.name] = computeInitialHaFormData(field.schema);
|
|
||||||
} else if ("selector" in field) {
|
} else if ("selector" in field) {
|
||||||
const selector: Selector = field.selector;
|
const selector: Selector = field.selector;
|
||||||
|
|
||||||
|
@ -144,17 +144,24 @@ class StepFlowForm extends LitElement {
|
|||||||
private async _submitStep(): Promise<void> {
|
private async _submitStep(): Promise<void> {
|
||||||
const stepData = this._stepData || {};
|
const stepData = this._stepData || {};
|
||||||
|
|
||||||
|
const checkAllRequiredFields = (
|
||||||
|
schema: readonly HaFormSchema[],
|
||||||
|
data: Record<string, any>
|
||||||
|
) =>
|
||||||
|
schema.every(
|
||||||
|
(field) =>
|
||||||
|
(!field.required || !["", undefined].includes(data[field.name])) &&
|
||||||
|
(field.type !== "expandable" ||
|
||||||
|
(!field.required && data[field.name] === undefined) ||
|
||||||
|
checkAllRequiredFields(field.schema, data[field.name]))
|
||||||
|
);
|
||||||
|
|
||||||
const allRequiredInfoFilledIn =
|
const allRequiredInfoFilledIn =
|
||||||
stepData === undefined
|
stepData === undefined
|
||||||
? // If no data filled in, just check that any field is required
|
? // If no data filled in, just check that any field is required
|
||||||
this.step.data_schema.find((field) => field.required) === undefined
|
this.step.data_schema.find((field) => field.required) === undefined
|
||||||
: // If data is filled in, make sure all required fields are
|
: // If data is filled in, make sure all required fields are
|
||||||
stepData &&
|
checkAllRequiredFields(this.step.data_schema, stepData);
|
||||||
this.step.data_schema.every(
|
|
||||||
(field) =>
|
|
||||||
!field.required ||
|
|
||||||
!["", undefined].includes(stepData![field.name])
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!allRequiredInfoFilledIn) {
|
if (!allRequiredInfoFilledIn) {
|
||||||
this._errorMsg = this.hass.localize(
|
this._errorMsg = this.hass.localize(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user