Skip to content

Commit

Permalink
Hide fields section when all fields inside are filtered (#22277)
Browse files Browse the repository at this point in the history
Hide field section when all fields inside are filtered
  • Loading branch information
piitaya authored Oct 11, 2024
1 parent 79c71cb commit d3d578e
Showing 1 changed file with 29 additions and 10 deletions.
39 changes: 29 additions & 10 deletions src/components/ha-service-control.ts
Original file line number Diff line number Diff line change
Expand Up @@ -499,8 +499,23 @@ export class HaServiceControl extends LitElement {
.defaultValue=${this._value?.data}
@value-changed=${this._dataChanged}
></ha-yaml-editor>`
: serviceData?.fields.map((dataField) =>
dataField.fields
: serviceData?.fields.map((dataField) => {
if (!dataField.fields) {
return this._renderField(
dataField,
hasOptional,
domain,
serviceName,
targetEntities
);
}
const fields = Object.entries(dataField.fields).map(
([key, field]) => ({ key, ...field })
);
return fields.length &&
this._hasFilteredFields(fields, targetEntities)
? html`<ha-expansion-panel
leftChevron
.expanded=${!dataField.collapsed}
Expand Down Expand Up @@ -531,14 +546,8 @@ export class HaServiceControl extends LitElement {
)
)}
</ha-expansion-panel>`
: this._renderField(
dataField,
hasOptional,
domain,
serviceName,
targetEntities
)
)} `;
: nothing;
})} `;
}

private _getSectionDescription(
Expand All @@ -551,6 +560,16 @@ export class HaServiceControl extends LitElement {
);
}

private _hasFilteredFields(
dataFields: ExtHassService["fields"],
targetEntities: string[]
) {
return dataFields.some(
(dataField) =>
!dataField.filter || this._filterField(dataField.filter, targetEntities)
);
}

private _renderField = (
dataField: ExtHassService["fields"][number],
hasOptional: boolean,
Expand Down

0 comments on commit d3d578e

Please sign in to comment.