diff --git a/src/panels/lovelace/components/hui-generic-entity-row.ts b/src/panels/lovelace/components/hui-generic-entity-row.ts index 3d1c1e0d0c..347457cb3a 100644 --- a/src/panels/lovelace/components/hui-generic-entity-row.ts +++ b/src/panels/lovelace/components/hui-generic-entity-row.ts @@ -85,7 +85,7 @@ class HuiGenericEntityRow extends LitElement { tabindex=${ifDefined(pointer ? "0" : undefined)} > ${!this.hideName - ? html`
+ @@ -59,9 +57,7 @@ class HuiDateEntityRow extends LitElement implements LovelaceRow { } private _dateChanged(ev: CustomEvent<{ value: string }>): void { - const stateObj = this.hass!.states[this._config!.entity]; - - setDateValue(this.hass!, stateObj.entity_id, ev.detail.value); + setDateValue(this.hass!, this._config!.entity, ev.detail.value); } } diff --git a/src/panels/lovelace/entity-rows/hui-datetime-entity-row.ts b/src/panels/lovelace/entity-rows/hui-datetime-entity-row.ts index bf6b2845e8..e4aecd4cbf 100644 --- a/src/panels/lovelace/entity-rows/hui-datetime-entity-row.ts +++ b/src/panels/lovelace/entity-rows/hui-datetime-entity-row.ts @@ -18,6 +18,7 @@ import "../components/hui-generic-entity-row"; import { createEntityNotFoundWarning } from "../components/hui-warning"; import type { EntityConfig, LovelaceRow } from "./types"; import "../../../components/ha-time-input"; +import { computeStateName } from "../../../common/entity/compute_state_name"; @customElement("hui-datetime-entity-row") class HuiInputDatetimeEntityRow extends LitElement implements LovelaceRow { @@ -51,30 +52,35 @@ class HuiInputDatetimeEntityRow extends LitElement implements LovelaceRow { `; } - const dateObj = new Date(stateObj.state); - const time = format(dateObj, "HH:mm:ss"); - const date = format(dateObj, "yyyy-MM-dd"); + const unavailable = isUnavailableState(stateObj.state); + + const dateObj = unavailable ? undefined : new Date(stateObj.state); + const time = dateObj ? format(dateObj, "HH:mm:ss") : ""; + const date = dateObj ? format(dateObj, "yyyy-MM-dd") : ""; return html` - - - +
+ + + +
`; } @@ -103,12 +109,17 @@ class HuiInputDatetimeEntityRow extends LitElement implements LovelaceRow { static get styles(): CSSResultGroup { return css` - ha-date-input + ha-time-input { + ha-time-input { margin-left: 4px; margin-inline-start: 4px; margin-inline-end: initial; direction: var(--direction); } + div { + display: flex; + justify-content: flex-end; + width: 100%; + } `; } } diff --git a/src/panels/lovelace/entity-rows/hui-input-datetime-entity-row.ts b/src/panels/lovelace/entity-rows/hui-input-datetime-entity-row.ts index bd595bd4f7..287ea60886 100644 --- a/src/panels/lovelace/entity-rows/hui-input-datetime-entity-row.ts +++ b/src/panels/lovelace/entity-rows/hui-input-datetime-entity-row.ts @@ -62,33 +62,39 @@ class HuiInputDatetimeEntityRow extends LitElement implements LovelaceRow { .hideName=${stateObj.attributes.has_date && stateObj.attributes.has_time} > - ${stateObj.attributes.has_date - ? html` - - - ` - : ``} - ${stateObj.attributes.has_time - ? html` - - ` - : ``} +
+ ${stateObj.attributes.has_date + ? html` + + + ` + : ``} + ${stateObj.attributes.has_time + ? html` + + ` + : ``} +
`; } @@ -126,6 +132,11 @@ class HuiInputDatetimeEntityRow extends LitElement implements LovelaceRow { margin-inline-end: initial; direction: var(--direction); } + div.both { + display: flex; + justify-content: flex-end; + width: 100%; + } `; } } diff --git a/src/panels/lovelace/entity-rows/hui-time-entity-row.ts b/src/panels/lovelace/entity-rows/hui-time-entity-row.ts index f6fceb3829..66cf5c68b1 100644 --- a/src/panels/lovelace/entity-rows/hui-time-entity-row.ts +++ b/src/panels/lovelace/entity-rows/hui-time-entity-row.ts @@ -42,16 +42,14 @@ class HuiTimeEntityRow extends LitElement implements LovelaceRow { `; } + const unavailable = isUnavailableState(stateObj.state); + return html` - +