From 8f67aa38af502e57a7ec157157a59173889451d0 Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Thu, 7 Apr 2022 21:39:04 +0200 Subject: [PATCH] Fix entity and device selector with `multiple: true` --- src/components/device/ha-devices-picker.ts | 11 ++++++++++- src/components/entity/ha-entities-picker.ts | 5 +++++ src/components/ha-selector/ha-selector-device.ts | 2 ++ src/components/ha-selector/ha-selector-entity.ts | 3 ++- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/components/device/ha-devices-picker.ts b/src/components/device/ha-devices-picker.ts index 688467c2a8..940ce962bb 100644 --- a/src/components/device/ha-devices-picker.ts +++ b/src/components/device/ha-devices-picker.ts @@ -3,7 +3,7 @@ import { customElement, property } from "lit/decorators"; import { fireEvent } from "../../common/dom/fire_event"; import { PolymerChangedEvent } from "../../polymer-types"; import { HomeAssistant } from "../../types"; -import "./ha-device-picker"; +import { HaDevicePickerDeviceFilterFunc } from "./ha-device-picker"; @customElement("ha-devices-picker") class HaDevicesPicker extends LitElement { @@ -13,6 +13,8 @@ class HaDevicesPicker extends LitElement { @property() public helper?: string; + @property({ type: Boolean }) public disabled?: boolean; + @property({ type: Boolean }) public required?: boolean; /** @@ -39,6 +41,8 @@ class HaDevicesPicker extends LitElement { @property({ attribute: "pick-device-label" }) public pickDeviceLabel?: string; + @property() public deviceFilter?: HaDevicePickerDeviceFilterFunc; + protected render(): TemplateResult { if (!this.hass) { return html``; @@ -53,11 +57,13 @@ class HaDevicesPicker extends LitElement { allow-custom-entity .curValue=${entityId} .hass=${this.hass} + .deviceFilter=${this.deviceFilter} .includeDomains=${this.includeDomains} .excludeDomains=${this.excludeDomains} .includeDeviceClasses=${this.includeDeviceClasses} .value=${entityId} .label=${this.pickedDeviceLabel} + .disabled=${this.disabled} @value-changed=${this._deviceChanged} > @@ -65,12 +71,15 @@ class HaDevicesPicker extends LitElement { )}
diff --git a/src/components/entity/ha-entities-picker.ts b/src/components/entity/ha-entities-picker.ts index 063c257c73..039eaa8261 100644 --- a/src/components/entity/ha-entities-picker.ts +++ b/src/components/entity/ha-entities-picker.ts @@ -14,6 +14,8 @@ class HaEntitiesPickerLight extends LitElement { @property({ type: Array }) public value?: string[]; + @property({ type: Boolean }) public disabled?: boolean; + @property({ type: Boolean }) public required?: boolean; @property() public helper?: string; @@ -96,6 +98,7 @@ class HaEntitiesPickerLight extends LitElement { .entityFilter=${this._entityFilter} .value=${entityId} .label=${this.pickedEntityLabel} + .disabled=${this.disabled} @value-changed=${this._entityChanged} >
@@ -103,6 +106,7 @@ class HaEntitiesPickerLight extends LitElement { )}
diff --git a/src/components/ha-selector/ha-selector-device.ts b/src/components/ha-selector/ha-selector-device.ts index b6358bf284..3c9c80872b 100644 --- a/src/components/ha-selector/ha-selector-device.ts +++ b/src/components/ha-selector/ha-selector-device.ts @@ -66,12 +66,14 @@ export class HaDeviceSelector extends LitElement { .hass=${this.hass} .value=${this.value} .helper=${this.helper} + .deviceFilter=${this._filterDevices} .includeDeviceClasses=${this.selector.device.entity?.device_class ? [this.selector.device.entity.device_class] : undefined} .includeDomains=${this.selector.device.entity?.domain ? [this.selector.device.entity.domain] : undefined} + .disabled=${this.disabled} .required=${this.required} > `; diff --git a/src/components/ha-selector/ha-selector-entity.ts b/src/components/ha-selector/ha-selector-entity.ts index bffc1acc76..8cb925f5d1 100644 --- a/src/components/ha-selector/ha-selector-entity.ts +++ b/src/components/ha-selector/ha-selector-entity.ts @@ -51,9 +51,10 @@ export class HaEntitySelector extends LitElement { .hass=${this.hass} .value=${this.value} .helper=${this.helper} - .entityFilter=${this._filterEntities} .includeEntities=${this.selector.entity.include_entities} .excludeEntities=${this.selector.entity.exclude_entities} + .entityFilter=${this._filterEntities} + .disabled=${this.disabled} .required=${this.required} > `;