Sort "Switch as" domains and add separator (#12216)

This commit is contained in:
Philip Allgaier 2022-04-05 01:47:26 +02:00 committed by GitHub
parent 4d1ab83b30
commit f78ce2c844
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -99,7 +99,7 @@ const OVERRIDE_SENSOR_UNITS = {
pressure: ["hPa", "Pa", "kPa", "bar", "cbar", "mbar", "mmHg", "inHg", "psi"], pressure: ["hPa", "Pa", "kPa", "bar", "cbar", "mbar", "mmHg", "inHg", "psi"],
}; };
const SWITCH_AS_DOMAINS = ["light", "lock", "cover", "fan", "siren"]; const SWITCH_AS_DOMAINS = ["cover", "fan", "light", "lock", "siren"];
@customElement("entity-registry-settings") @customElement("entity-registry-settings")
export class EntityRegistrySettings extends SubscribeMixin(LitElement) { export class EntityRegistrySettings extends SubscribeMixin(LitElement) {
@ -342,10 +342,14 @@ export class EntityRegistrySettings extends SubscribeMixin(LitElement) {
<mwc-list-item value="switch" selected> <mwc-list-item value="switch" selected>
${domainToName(this.hass.localize, "switch")}</mwc-list-item ${domainToName(this.hass.localize, "switch")}</mwc-list-item
> >
${SWITCH_AS_DOMAINS.map( <li divider role="separator"></li>
(as_domain) => html` ${this._switchAsDomainsSorted(
<mwc-list-item .value=${as_domain}> SWITCH_AS_DOMAINS,
${domainToName(this.hass.localize, as_domain)} this.hass.localize
).map(
(entry) => html`
<mwc-list-item .value=${entry.domain}>
${entry.label}
</mwc-list-item> </mwc-list-item>
` `
)} )}
@ -729,6 +733,16 @@ export class EntityRegistrySettings extends SubscribeMixin(LitElement) {
showOptionsFlowDialog(this, this._helperConfigEntry!); showOptionsFlowDialog(this, this._helperConfigEntry!);
} }
private _switchAsDomainsSorted = memoizeOne(
(domains: string[], localize: LocalizeFunc) =>
domains
.map((entry) => ({
domain: entry,
label: domainToName(localize, entry),
}))
.sort((a, b) => stringCompare(a.label, b.label))
);
private _deviceClassesSorted = memoizeOne( private _deviceClassesSorted = memoizeOne(
(domain: string, deviceClasses: string[], localize: LocalizeFunc) => (domain: string, deviceClasses: string[], localize: LocalizeFunc) =>
deviceClasses deviceClasses