add state_color option to glance, button and state-icon (#4854)

* add state_color option to glance, button and state-icon

* address comments

* address comments
This commit is contained in:
Ian Richardson 2020-02-17 08:26:45 -06:00 committed by GitHub
parent 49b0c8d549
commit fb7fbf2dac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 16 additions and 7 deletions

View File

@ -49,6 +49,7 @@ export class HuiButtonCard extends LitElement implements LovelaceCard {
hold_action: { action: "more-info" }, hold_action: { action: "more-info" },
show_icon: true, show_icon: true,
show_name: true, show_name: true,
state_color: true,
}; };
} }
@ -148,7 +149,9 @@ export class HuiButtonCard extends LitElement implements LovelaceCard {
? html` ? html`
<ha-icon <ha-icon
data-domain=${ifDefined( data-domain=${ifDefined(
stateObj ? computeStateDomain(stateObj) : undefined this._config.state_color && stateObj
? computeStateDomain(stateObj)
: undefined
)} )}
data-state=${ifDefined( data-state=${ifDefined(
stateObj ? computeActiveState(stateObj) : undefined stateObj ? computeActiveState(stateObj) : undefined
@ -226,7 +229,7 @@ export class HuiButtonCard extends LitElement implements LovelaceCard {
} }
private _computeBrightness(stateObj: HassEntity | LightEntity): string { private _computeBrightness(stateObj: HassEntity | LightEntity): string {
if (!stateObj.attributes.brightness) { if (!stateObj.attributes.brightness || !this._config?.state_color) {
return ""; return "";
} }
const brightness = stateObj.attributes.brightness; const brightness = stateObj.attributes.brightness;
@ -234,7 +237,7 @@ export class HuiButtonCard extends LitElement implements LovelaceCard {
} }
private _computeColor(stateObj: HassEntity | LightEntity): string { private _computeColor(stateObj: HassEntity | LightEntity): string {
if (!stateObj.attributes.hs_color) { if (!stateObj.attributes.hs_color || !this._config?.state_color) {
return ""; return "";
} }
const [hue, sat] = stateObj.attributes.hs_color; const [hue, sat] = stateObj.attributes.hs_color;

View File

@ -59,7 +59,7 @@ export class HuiGlanceCard extends LitElement implements LovelaceCard {
} }
public setConfig(config: GlanceCardConfig): void { public setConfig(config: GlanceCardConfig): void {
this._config = { theme: "default", ...config }; this._config = { theme: "default", state_color: true, ...config };
const entities = processConfigEntities<GlanceConfigEntity>(config.entities); const entities = processConfigEntities<GlanceConfigEntity>(config.entities);
for (const entity of entities) { for (const entity of entities) {
@ -237,7 +237,9 @@ export class HuiGlanceCard extends LitElement implements LovelaceCard {
.stateObj=${stateObj} .stateObj=${stateObj}
.overrideIcon=${entityConf.icon} .overrideIcon=${entityConf.icon}
.overrideImage=${entityConf.image} .overrideImage=${entityConf.image}
stateColor .stateColor=${(entityConf.state_color === false ||
entityConf.state_color) ??
this._config!.state_color}
></state-badge> ></state-badge>
` `
: ""} : ""}

View File

@ -57,6 +57,7 @@ export interface ButtonCardConfig extends LovelaceCardConfig {
tap_action?: ActionConfig; tap_action?: ActionConfig;
hold_action?: ActionConfig; hold_action?: ActionConfig;
double_tap_action?: ActionConfig; double_tap_action?: ActionConfig;
state_color?: boolean;
} }
export interface EntityFilterCardConfig extends LovelaceCardConfig { export interface EntityFilterCardConfig extends LovelaceCardConfig {
@ -102,6 +103,7 @@ export interface GlanceConfigEntity extends ConfigEntity {
show_last_changed?: boolean; show_last_changed?: boolean;
image?: string; image?: string;
show_state?: boolean; show_state?: boolean;
state_color?: boolean;
} }
export interface GlanceCardConfig extends LovelaceCardConfig { export interface GlanceCardConfig extends LovelaceCardConfig {
@ -112,6 +114,7 @@ export interface GlanceCardConfig extends LovelaceCardConfig {
theme?: string; theme?: string;
entities: ConfigEntity[]; entities: ConfigEntity[];
columns?: number; columns?: number;
state_color?: boolean;
} }
export interface IframeCardConfig extends LovelaceCardConfig { export interface IframeCardConfig extends LovelaceCardConfig {

View File

@ -32,7 +32,7 @@ export class HuiStateIconElement extends LitElement implements LovelaceElement {
throw Error("Invalid Configuration: 'entity' required"); throw Error("Invalid Configuration: 'entity' required");
} }
this._config = config; this._config = { state_color: true, ...config };
} }
protected shouldUpdate(changedProps: PropertyValues): boolean { protected shouldUpdate(changedProps: PropertyValues): boolean {
@ -71,7 +71,7 @@ export class HuiStateIconElement extends LitElement implements LovelaceElement {
hasAction(this._config.tap_action) ? "0" : undefined hasAction(this._config.tap_action) ? "0" : undefined
)} )}
.overrideIcon=${this._config.icon} .overrideIcon=${this._config.icon}
stateColor .stateColor=${this._config.state_color}
></state-badge> ></state-badge>
`; `;
} }

View File

@ -59,6 +59,7 @@ export interface StateIconElementConfig extends LovelaceElementConfig {
hold_action?: ActionConfig; hold_action?: ActionConfig;
double_tap_action?: ActionConfig; double_tap_action?: ActionConfig;
icon?: string; icon?: string;
state_color?: boolean;
} }
export interface StateLabelElementConfig extends LovelaceElementConfig { export interface StateLabelElementConfig extends LovelaceElementConfig {