diff --git a/src/common/const.ts b/src/common/const.ts index 0396b575f7..0b668adb45 100644 --- a/src/common/const.ts +++ b/src/common/const.ts @@ -199,11 +199,12 @@ export const DOMAINS_HIDE_DEFAULT_MORE_INFO = [ "select", ]; -/** Domains that render an input element instead of a text value when rendered in a row. +/** Domains that render an input element instead of a text value when displayed in a row. * Those rows should then not show a cursor pointer when hovered (which would normally * be the default) unless the element itself enforces it (e.g. a button). Also those elements * should not act as a click target to open the more info dialog (the row name and state icon - * still do of course) as the click might instead e.g. activate the input field that this row shows. + * still do of course) as the click should instead e.g. activate the input field or toggle + * the button that this row shows. */ export const DOMAINS_INPUT_ROW = [ "automation", @@ -225,6 +226,7 @@ export const DOMAINS_INPUT_ROW = [ "script", "select", "switch", + "vacuum", ]; /** Domains that should have the history hidden in the more info dialog. */ diff --git a/src/panels/lovelace/components/hui-generic-entity-row.ts b/src/panels/lovelace/components/hui-generic-entity-row.ts index 7a295a56a6..b87c39f5a7 100644 --- a/src/panels/lovelace/components/hui-generic-entity-row.ts +++ b/src/panels/lovelace/components/hui-generic-entity-row.ts @@ -33,6 +33,13 @@ class HuiGenericEntityRow extends LitElement { @property({ type: Boolean }) public hideName = false; + // Allows to control if this row should capture the user interaction, e.g. with its + // toggle switch, button or input field. Some domains dynamically decide what to show + // => static determination will not work => the caller has to pass the desired value in. + // Same applies for custom components that want to override the default behavior. + // Default behavior is controlled by DOMAINS_INPUT_ROW. + @property({ type: Boolean }) public catchInteraction?; + protected render(): TemplateResult { if (!this.hass || !this.config) { return html``; @@ -147,7 +154,7 @@ class HuiGenericEntityRow extends LitElement { : ""} ` : html``} - ${!DOMAINS_INPUT_ROW.includes(domain) + ${this.catchInteraction ?? !DOMAINS_INPUT_ROW.includes(domain) ? html`