diff --git a/src/common/const.js b/src/common/const.js
index 56813fa321..1582b1a05c 100644
--- a/src/common/const.js
+++ b/src/common/const.js
@@ -69,6 +69,14 @@ export const STATES_OFF = [
'off'
];
+/** Domains where we allow toggle in Lovelace. */
+export const DOMAINS_TOGGLE = new Set([
+ 'fan',
+ 'input_boolean',
+ 'light',
+ 'switch'
+]);
+
/** Temperature units. */
export const UNIT_C = '°C';
export const UNIT_F = '°F';
diff --git a/src/panels/lovelace/cards/hui-entities-card.js b/src/panels/lovelace/cards/hui-entities-card.js
index e3d1977db6..f0c28d8314 100644
--- a/src/panels/lovelace/cards/hui-entities-card.js
+++ b/src/panels/lovelace/cards/hui-entities-card.js
@@ -53,7 +53,7 @@ class HuiEntitiesCard extends EventsMixin(PolymerElement) {
@@ -132,6 +132,11 @@ class HuiEntitiesCard extends EventsMixin(PolymerElement) {
element.hass = hass;
});
}
+
+ _filterEntities(items) {
+ return items.filter(item => (typeof item === 'string' || item.entity)).map(item =>
+ (typeof item === 'string' ? item : item.entity));
+ }
}
customElements.define('hui-entities-card', HuiEntitiesCard);
diff --git a/src/panels/lovelace/cards/hui-picture-glance-card.js b/src/panels/lovelace/cards/hui-picture-glance-card.js
index 365d568f67..19b0812a1a 100644
--- a/src/panels/lovelace/cards/hui-picture-glance-card.js
+++ b/src/panels/lovelace/cards/hui-picture-glance-card.js
@@ -7,6 +7,7 @@ import '../components/hui-image.js';
import computeStateDisplay from '../../../common/entity/compute_state_display.js';
import computeStateName from '../../../common/entity/compute_state_name.js';
+import { DOMAINS_TOGGLE } from '../../../common/const.js';
import stateIcon from '../../../common/entity/state_icon.js';
import toggleEntity from '../common/entity/toggle-entity.js';
import processConfigEntities from '../common/process-config-entities';
@@ -16,12 +17,6 @@ import LocalizeMixin from '../../../mixins/localize-mixin.js';
import NavigateMixin from '../../../mixins/navigate-mixin.js';
import computeDomain from '../../../common/entity/compute_domain';
-const DOMAINS_TOGGLE = new Set([
- 'input_boolean',
- 'light',
- 'switch'
-]);
-
const STATES_OFF = new Set([
'closed',
'locked',
diff --git a/src/panels/lovelace/components/hui-entities-toggle.js b/src/panels/lovelace/components/hui-entities-toggle.js
index e87c679af1..34695eb7ba 100644
--- a/src/panels/lovelace/components/hui-entities-toggle.js
+++ b/src/panels/lovelace/components/hui-entities-toggle.js
@@ -2,11 +2,8 @@ import { html } from '@polymer/polymer/lib/utils/html-tag.js';
import { PolymerElement } from '@polymer/polymer/polymer-element.js';
import '@polymer/paper-toggle-button/paper-toggle-button.js';
-import canToggleState from '../../../common/entity/can_toggle_state.js';
+import { DOMAINS_TOGGLE } from '../../../common/const.js';
import turnOnOffEntities from '../common/entity/turn-on-off-entities.js';
-import { STATES_OFF } from '../../../common/const.js';
-
-const EXCLUDED_DOMAINS = ['cover', 'lock'];
class HuiEntitiesToggle extends PolymerElement {
static get template() {
@@ -41,12 +38,12 @@ class HuiEntitiesToggle extends PolymerElement {
}
_computeToggleEntities(hass, entityIds) {
- return entityIds.filter(entityId => (entityId in hass.states ?
- !EXCLUDED_DOMAINS.includes(entityId.split('.', 1)[0]) && canToggleState(hass, hass.states[entityId]) : false));
+ return entityIds.filter(entityId => (entityId in hass.states &&
+ DOMAINS_TOGGLE.has(entityId.split('.', 1)[0])));
}
_computeIsChecked(hass, entityIds) {
- return entityIds.some(entityId => !STATES_OFF.includes(hass.states[entityId].state));
+ return entityIds.some(entityId => hass.states[entityId].state === 'on');
}
_callService(ev) {
diff --git a/src/panels/lovelace/entity-rows/hui-group-entity-row.js b/src/panels/lovelace/entity-rows/hui-group-entity-row.js
index 23430a9edc..6dc6386ebe 100644
--- a/src/panels/lovelace/entity-rows/hui-group-entity-row.js
+++ b/src/panels/lovelace/entity-rows/hui-group-entity-row.js
@@ -5,15 +5,9 @@ import '../components/hui-generic-entity-row.js';
import '../../../components/entity/ha-entity-toggle.js';
import computeStateDisplay from '../../../common/entity/compute_state_display.js';
+import { DOMAINS_TOGGLE } from '../../../common/const.js';
import LocalizeMixin from '../../../mixins/localize-mixin.js';
-const DOMAINS_TOGGLE = new Set([
- 'fan',
- 'input_boolean',
- 'light',
- 'switch'
-]);
-
/*
* @appliesMixin LocalizeMixin
*/