diff --git a/src/components/ha-cover-controls.ts b/src/components/ha-cover-controls.ts
index 45178754ac..72251de26c 100644
--- a/src/components/ha-cover-controls.ts
+++ b/src/components/ha-cover-controls.ts
@@ -31,9 +31,7 @@ class HaCoverControls extends LitElement {
class=${classMap({
hidden: !supportsFeature(this.stateObj, CoverEntityFeature.OPEN),
})}
- .label=${this.hass.localize(
- "ui.dialogs.more_info_control.cover.open_cover"
- )}
+ .label=${this.hass.localize("ui.card.cover.open_cover")}
@click=${this._onOpenTap}
.disabled=${!canOpen(this.stateObj)}
.path=${computeOpenIcon(this.stateObj)}
@@ -43,9 +41,7 @@ class HaCoverControls extends LitElement {
class=${classMap({
hidden: !supportsFeature(this.stateObj, CoverEntityFeature.STOP),
})}
- .label=${this.hass.localize(
- "ui.dialogs.more_info_control.cover.stop_cover"
- )}
+ .label=${this.hass.localize("ui.card.cover.stop_cover")}
.path=${mdiStop}
@click=${this._onStopTap}
.disabled=${!canStop(this.stateObj)}
@@ -54,9 +50,7 @@ class HaCoverControls extends LitElement {
class=${classMap({
hidden: !supportsFeature(this.stateObj, CoverEntityFeature.CLOSE),
})}
- .label=${this.hass.localize(
- "ui.dialogs.more_info_control.cover.close_cover"
- )}
+ .label=${this.hass.localize("ui.card.cover.close_cover")}
@click=${this._onCloseTap}
.disabled=${!canClose(this.stateObj)}
.path=${computeCloseIcon(this.stateObj)}
diff --git a/src/components/ha-cover-tilt-controls.ts b/src/components/ha-cover-tilt-controls.ts
index f2eba6f222..78133de063 100644
--- a/src/components/ha-cover-tilt-controls.ts
+++ b/src/components/ha-cover-tilt-controls.ts
@@ -31,9 +31,7 @@ class HaCoverTiltControls extends LitElement {
CoverEntityFeature.OPEN_TILT
),
})}
- .label=${this.hass.localize(
- "ui.dialogs.more_info_control.cover.open_tilt_cover"
- )}
+ .label=${this.hass.localize("ui.card.cover.open_tilt_cover")}
.path=${mdiArrowTopRight}
@click=${this._onOpenTiltTap}
.disabled=${!canOpenTilt(this.stateObj)}
@@ -45,9 +43,7 @@ class HaCoverTiltControls extends LitElement {
CoverEntityFeature.STOP_TILT
),
})}
- .label=${this.hass.localize(
- "ui.dialogs.more_info_control.cover.stop_cover"
- )}
+ .label=${this.hass.localize("ui.card.cover.stop_cover")}
.path=${mdiStop}
@click=${this._onStopTiltTap}
.disabled=${!canStopTilt(this.stateObj)}
@@ -59,9 +55,7 @@ class HaCoverTiltControls extends LitElement {
CoverEntityFeature.CLOSE_TILT
),
})}
- .label=${this.hass.localize(
- "ui.dialogs.more_info_control.cover.close_tilt_cover"
- )}
+ .label=${this.hass.localize("ui.card.cover.close_tilt_cover")}
.path=${mdiArrowBottomLeft}
@click=${this._onCloseTiltTap}
.disabled=${!canCloseTilt(this.stateObj)}
diff --git a/src/data/lock.ts b/src/data/lock.ts
index df79b4e223..ead50e20dd 100644
--- a/src/data/lock.ts
+++ b/src/data/lock.ts
@@ -35,8 +35,8 @@ export const callProtectedLockService = async (
const response = await showEnterCodeDialogDialog(element, {
codeFormat: "text",
codePattern: stateObj!.attributes.code_format,
- title: hass.localize(`ui.dialogs.more_info_control.lock.${service}`),
- submitText: hass.localize(`ui.dialogs.more_info_control.lock.${service}`),
+ title: hass.localize(`ui.card.lock.${service}`),
+ submitText: hass.localize(`ui.card.lock.${service}`),
});
if (!response) {
throw new Error("Code dialog closed");
diff --git a/src/dialogs/more-info/components/ha-more-info-control-style.ts b/src/dialogs/more-info/components/more-info-control-style.ts
similarity index 100%
rename from src/dialogs/more-info/components/ha-more-info-control-style.ts
rename to src/dialogs/more-info/components/more-info-control-style.ts
diff --git a/src/dialogs/more-info/controls/more-info-alarm_control_panel.ts b/src/dialogs/more-info/controls/more-info-alarm_control_panel.ts
index 7f73407ae1..53cd1ac08e 100644
--- a/src/dialogs/more-info/controls/more-info-alarm_control_panel.ts
+++ b/src/dialogs/more-info/controls/more-info-alarm_control_panel.ts
@@ -6,11 +6,11 @@ import { domainIcon } from "../../../common/entity/domain_icon";
import { stateColorCss } from "../../../common/entity/state_color";
import "../../../components/ha-outlined-button";
import { AlarmControlPanelEntity } from "../../../data/alarm_control_panel";
+import "../../../state-control/alarm_control_panel/ha-state-control-alarm_control_panel-modes";
import type { HomeAssistant } from "../../../types";
import { showEnterCodeDialogDialog } from "../../enter-code/show-enter-code-dialog";
-import "../components/alarm_control_panel/ha-more-info-alarm_control_panel-modes";
-import { moreInfoControlStyle } from "../components/ha-more-info-control-style";
import "../components/ha-more-info-state-header";
+import { moreInfoControlStyle } from "../components/more-info-control-style";
@customElement("more-info-alarm_control_panel")
class MoreInfoAlarmControlPanel extends LitElement {
@@ -24,12 +24,8 @@ class MoreInfoAlarmControlPanel extends LitElement {
if (this.stateObj!.attributes.code_format) {
const response = await showEnterCodeDialogDialog(this, {
codeFormat: this.stateObj!.attributes.code_format,
- title: this.hass.localize(
- "ui.dialogs.more_info_control.alarm_control_panel.disarm_title"
- ),
- submitText: this.hass.localize(
- "ui.dialogs.more_info_control.alarm_control_panel.disarm_action"
- ),
+ title: this.hass.localize("ui.card.alarm_control_panel.disarm"),
+ submitText: this.hass.localize("ui.card.alarm_control_panel.disarm"),
});
if (response == null) {
return;
@@ -68,19 +64,17 @@ class MoreInfoAlarmControlPanel extends LitElement {
>
- ${this.hass.localize(
- "ui.dialogs.more_info_control.alarm_control_panel.disarm_action"
- )}
+ ${this.hass.localize("ui.card.alarm_control_panel.disarm")}
`
: html`
-
-
+
`}
diff --git a/src/dialogs/more-info/controls/more-info-climate.ts b/src/dialogs/more-info/controls/more-info-climate.ts
index 173fe7905a..93a16ae08d 100644
--- a/src/dialogs/more-info/controls/more-info-climate.ts
+++ b/src/dialogs/more-info/controls/more-info-climate.ts
@@ -35,11 +35,11 @@ import {
} from "../../../data/climate";
import { UNAVAILABLE } from "../../../data/entity";
import { haOscillating } from "../../../data/icons/haOscillating";
+import "../../../state-control/climate/ha-state-control-climate-humidity";
+import "../../../state-control/climate/ha-state-control-climate-temperature";
import { HomeAssistant } from "../../../types";
-import "../components/climate/ha-more-info-climate-humidity";
-import "../components/climate/ha-more-info-climate-temperature";
import "../components/ha-more-info-control-select-container";
-import { moreInfoControlStyle } from "../components/ha-more-info-control-style";
+import { moreInfoControlStyle } from "../components/more-info-control-style";
type MainControl = "temperature" | "humidity";
@@ -121,18 +121,18 @@ class MoreInfoClimate extends LitElement {
${this._mainControl === "temperature"
? html`
-
+ >
`
: nothing}
${this._mainControl === "humidity"
? html`
-
+ >
`
: nothing}
${supportTargetHumidity
diff --git a/src/dialogs/more-info/controls/more-info-cover.ts b/src/dialogs/more-info/controls/more-info-cover.ts
index a26f6be6eb..f1f5e06e38 100644
--- a/src/dialogs/more-info/controls/more-info-cover.ts
+++ b/src/dialogs/more-info/controls/more-info-cover.ts
@@ -17,13 +17,13 @@ import {
CoverEntityFeature,
computeCoverPositionStateDisplay,
} from "../../../data/cover";
+import "../../../state-control/cover/ha-state-control-cover-buttons";
+import "../../../state-control/cover/ha-state-control-cover-position";
+import "../../../state-control/cover/ha-state-control-cover-tilt-position";
+import "../../../state-control/cover/ha-state-control-cover-toggle";
import type { HomeAssistant } from "../../../types";
-import "../components/cover/ha-more-info-cover-buttons";
-import "../components/cover/ha-more-info-cover-position";
-import "../components/cover/ha-more-info-cover-tilt-position";
-import "../components/cover/ha-more-info-cover-toggle";
-import { moreInfoControlStyle } from "../components/ha-more-info-control-style";
import "../components/ha-more-info-state-header";
+import { moreInfoControlStyle } from "../components/more-info-control-style";
type Mode = "position" | "button";
@@ -111,18 +111,18 @@ class MoreInfoCover extends LitElement {
? html`
${supportsPosition
? html`
-
+ >
`
: nothing}
${supportsTiltPosition
? html`
-
+ >
`
: nothing}
`
@@ -133,17 +133,17 @@ class MoreInfoCover extends LitElement {
? html`
${supportsOpenCloseWithoutStop
? html`
-
+ >
`
: supportsOpenClose || supportsTilt
? html`
-
+ >
`
: nothing}
`
diff --git a/src/dialogs/more-info/controls/more-info-fan.ts b/src/dialogs/more-info/controls/more-info-fan.ts
index f2028f577c..7d6f9f129e 100644
--- a/src/dialogs/more-info/controls/more-info-fan.ts
+++ b/src/dialogs/more-info/controls/more-info-fan.ts
@@ -25,12 +25,12 @@ import {
import { forwardHaptic } from "../../../data/haptics";
import { haOscillating } from "../../../data/icons/haOscillating";
import { haOscillatingOff } from "../../../data/icons/haOscillatingOff";
+import "../../../state-control/fan/ha-state-control-fan-speed";
+import "../../../state-control/ha-state-control-toggle";
import type { HomeAssistant } from "../../../types";
-import "../components/fan/ha-more-info-fan-speed";
import "../components/ha-more-info-control-select-container";
-import { moreInfoControlStyle } from "../components/ha-more-info-control-style";
import "../components/ha-more-info-state-header";
-import "../components/ha-more-info-toggle";
+import { moreInfoControlStyle } from "../components/more-info-control-style";
@customElement("more-info-fan")
class MoreInfoFan extends LitElement {
@@ -141,19 +141,19 @@ class MoreInfoFan extends LitElement {
${supportsSpeed
? html`
-
-
+
`
: html`
-
+ >
`}
${supportSpeedPercentage
? html`
diff --git a/src/dialogs/more-info/controls/more-info-group.ts b/src/dialogs/more-info/controls/more-info-group.ts
index 8006228e16..dd634a9927 100644
--- a/src/dialogs/more-info/controls/more-info-group.ts
+++ b/src/dialogs/more-info/controls/more-info-group.ts
@@ -1,18 +1,18 @@
import { HassEntity } from "home-assistant-js-websocket";
import {
- css,
CSSResultGroup,
- html,
LitElement,
PropertyValues,
+ css,
+ html,
nothing,
} from "lit";
import { property, state } from "lit/decorators";
import { dynamicElement } from "../../../common/dom/dynamic-element-directive";
-import { computeGroupDomain, GroupEntity } from "../../../data/group";
+import { GroupEntity, computeGroupDomain } from "../../../data/group";
import "../../../state-summary/state-card-content";
import { HomeAssistant } from "../../../types";
-import { moreInfoControlStyle } from "../components/ha-more-info-control-style";
+import { moreInfoControlStyle } from "../components/more-info-control-style";
import {
domainMoreInfoType,
importMoreInfoControl,
diff --git a/src/dialogs/more-info/controls/more-info-humidifier.ts b/src/dialogs/more-info/controls/more-info-humidifier.ts
index 25b8e60e0b..184c4738e6 100644
--- a/src/dialogs/more-info/controls/more-info-humidifier.ts
+++ b/src/dialogs/more-info/controls/more-info-humidifier.ts
@@ -19,10 +19,10 @@ import {
HumidifierEntityFeature,
computeHumidiferModeIcon,
} from "../../../data/humidifier";
+import "../../../state-control/humidifier/ha-state-control-humidifier-humidity";
import { HomeAssistant } from "../../../types";
import "../components/ha-more-info-control-select-container";
-import { moreInfoControlStyle } from "../components/ha-more-info-control-style";
-import "../components/humidifier/ha-more-info-humidifier-humidity";
+import { moreInfoControlStyle } from "../components/more-info-control-style";
class MoreInfoHumidifier extends LitElement {
@property({ attribute: false }) public hass!: HomeAssistant;
@@ -76,10 +76,10 @@ class MoreInfoHumidifier extends LitElement {
-
+ >
diff --git a/src/dialogs/more-info/controls/more-info-input_boolean.ts b/src/dialogs/more-info/controls/more-info-input_boolean.ts
index 9ad596629d..607d26ca67 100644
--- a/src/dialogs/more-info/controls/more-info-input_boolean.ts
+++ b/src/dialogs/more-info/controls/more-info-input_boolean.ts
@@ -1,12 +1,12 @@
import { mdiPower, mdiPowerOff } from "@mdi/js";
import { HassEntity } from "home-assistant-js-websocket";
-import { CSSResultGroup, html, LitElement, nothing } from "lit";
+import { CSSResultGroup, LitElement, html, nothing } from "lit";
import { customElement, property } from "lit/decorators";
import "../../../components/ha-attributes";
+import "../../../state-control/ha-state-control-toggle";
import type { HomeAssistant } from "../../../types";
-import { moreInfoControlStyle } from "../components/ha-more-info-control-style";
import "../components/ha-more-info-state-header";
-import "../components/ha-more-info-toggle";
+import { moreInfoControlStyle } from "../components/more-info-control-style";
@customElement("more-info-input_boolean")
class MoreInfoInputBoolean extends LitElement {
@@ -25,12 +25,12 @@ class MoreInfoInputBoolean extends LitElement {
.stateObj=${this.stateObj}
>
-
+ >
${!supportsBrightness
? html`
-
+ >
`
: nothing}
${supportsColorTemp || supportsColor || supportsBrightness
? html`
${supportsBrightness && this._mainControl === "brightness"
? html`
-
-
+
`
: nothing}
${supportsColor && this._mainControl === "color"
@@ -180,8 +180,9 @@ class MoreInfoLight extends LitElement {
`
: html`
-
-
+
`
}
${
@@ -84,12 +84,8 @@ class MoreInfoLock extends LitElement {
? html`
@@ -99,22 +95,16 @@ class MoreInfoLock extends LitElement {
${isJammed
? html`
diff --git a/src/dialogs/more-info/controls/more-info-siren.ts b/src/dialogs/more-info/controls/more-info-siren.ts
index 50bfeeabca..c46dbdfe1d 100644
--- a/src/dialogs/more-info/controls/more-info-siren.ts
+++ b/src/dialogs/more-info/controls/more-info-siren.ts
@@ -1,12 +1,12 @@
import { mdiVolumeHigh, mdiVolumeOff } from "@mdi/js";
import { HassEntity } from "home-assistant-js-websocket";
-import { CSSResultGroup, html, LitElement, nothing } from "lit";
+import { CSSResultGroup, LitElement, html, nothing } from "lit";
import { customElement, property } from "lit/decorators";
import "../../../components/ha-attributes";
+import "../../../state-control/ha-state-control-toggle";
import type { HomeAssistant } from "../../../types";
-import { moreInfoControlStyle } from "../components/ha-more-info-control-style";
import "../components/ha-more-info-state-header";
-import "../components/ha-more-info-toggle";
+import { moreInfoControlStyle } from "../components/more-info-control-style";
@customElement("more-info-siren")
class MoreInfoSiren extends LitElement {
@@ -25,12 +25,12 @@ class MoreInfoSiren extends LitElement {
.stateObj=${this.stateObj}
>
-
+ >
-
+ >
-
+ >
${supportOperationMode && stateObj.attributes.operation_list
diff --git a/src/panels/lovelace/card-features/hui-alarm-modes-card-feature.ts b/src/panels/lovelace/card-features/hui-alarm-modes-card-feature.ts
index ffa489c4d7..b04318e46f 100644
--- a/src/panels/lovelace/card-features/hui-alarm-modes-card-feature.ts
+++ b/src/panels/lovelace/card-features/hui-alarm-modes-card-feature.ts
@@ -134,14 +134,10 @@ class HuiAlarmModeCardFeature
const response = await showEnterCodeDialogDialog(this, {
codeFormat: this.stateObj!.attributes.code_format,
title: this.hass!.localize(
- `ui.dialogs.more_info_control.alarm_control_panel.${
- disarm ? "disarm_title" : "arm_title"
- }`
+ `ui.card.alarm_control_panel.${disarm ? "disarm" : "arm"}`
),
submitText: this.hass!.localize(
- `ui.dialogs.more_info_control.alarm_control_panel.${
- disarm ? "disarm_action" : "arm_action"
- }`
+ `ui.card.alarm_control_panel.${disarm ? "disarm" : "arm"}`
),
});
if (response == null) {
@@ -172,9 +168,7 @@ class HuiAlarmModeCardFeature
const options = modes.map((mode) => ({
value: mode,
- label: this.hass!.localize(
- `ui.dialogs.more_info_control.alarm_control_panel.modes.${mode}`
- ),
+ label: this.hass!.localize(`ui.card.alarm_control_panel.modes.${mode}`),
path: ALARM_MODES[mode].path,
}));
@@ -182,9 +176,7 @@ class HuiAlarmModeCardFeature
return html`
@@ -200,7 +192,7 @@ class HuiAlarmModeCardFeature
@value-changed=${this._valueChanged}
hide-label
.ariaLabel=${this.hass.localize(
- "ui.dialogs.more_info_control.alarm_control_panel.modes_label"
+ "ui.card.alarm_control_panel.modes_label"
)}
style=${styleMap({
"--control-select-color": color,
diff --git a/src/panels/lovelace/card-features/hui-cover-open-close-card-feature.ts b/src/panels/lovelace/card-features/hui-cover-open-close-card-feature.ts
index b20b11c200..1858112361 100644
--- a/src/panels/lovelace/card-features/hui-cover-open-close-card-feature.ts
+++ b/src/panels/lovelace/card-features/hui-cover-open-close-card-feature.ts
@@ -89,9 +89,7 @@ class HuiCoverOpenCloseCardFeature
${supportsFeature(this.stateObj, CoverEntityFeature.OPEN)
? html`
@@ -104,9 +102,7 @@ class HuiCoverOpenCloseCardFeature
${supportsFeature(this.stateObj, CoverEntityFeature.STOP)
? html`
@@ -117,9 +113,7 @@ class HuiCoverOpenCloseCardFeature
${supportsFeature(this.stateObj, CoverEntityFeature.CLOSE)
? html`
diff --git a/src/panels/lovelace/card-features/hui-cover-tilt-card-feature.ts b/src/panels/lovelace/card-features/hui-cover-tilt-card-feature.ts
index 21ef30508e..d09c71aa62 100644
--- a/src/panels/lovelace/card-features/hui-cover-tilt-card-feature.ts
+++ b/src/panels/lovelace/card-features/hui-cover-tilt-card-feature.ts
@@ -85,9 +85,7 @@ class HuiCoverTiltCardFeature
${supportsFeature(this.stateObj, CoverEntityFeature.OPEN_TILT)
? html`
@@ -98,9 +96,7 @@ class HuiCoverTiltCardFeature
${supportsFeature(this.stateObj, CoverEntityFeature.STOP_TILT)
? html`
@@ -111,9 +107,7 @@ class HuiCoverTiltCardFeature
${supportsFeature(this.stateObj, CoverEntityFeature.CLOSE_TILT)
? html`
diff --git a/src/panels/lovelace/card-features/hui-cover-tilt-position-card-feature.ts b/src/panels/lovelace/card-features/hui-cover-tilt-position-card-feature.ts
index b93ad0ccdf..48e1a809c5 100644
--- a/src/panels/lovelace/card-features/hui-cover-tilt-position-card-feature.ts
+++ b/src/panels/lovelace/card-features/hui-cover-tilt-position-card-feature.ts
@@ -9,11 +9,11 @@ import { stateColorCss } from "../../../common/entity/state_color";
import { supportsFeature } from "../../../common/entity/supports-feature";
import { CoverEntity, CoverEntityFeature } from "../../../data/cover";
import { UNAVAILABLE } from "../../../data/entity";
-import { generateTiltSliderTrackBackgroundGradient } from "../../../dialogs/more-info/components/cover/ha-more-info-cover-tilt-position";
+import { DOMAIN_ATTRIBUTES_UNITS } from "../../../data/entity_attributes";
+import { generateTiltSliderTrackBackgroundGradient } from "../../../state-control/cover/ha-state-control-cover-tilt-position";
import { HomeAssistant } from "../../../types";
import { LovelaceCardFeature } from "../types";
import { CoverTiltPositionCardFeatureConfig } from "./types";
-import { DOMAIN_ATTRIBUTES_UNITS } from "../../../data/entity_attributes";
const GRADIENT = generateTiltSliderTrackBackgroundGradient();
diff --git a/src/panels/lovelace/card-features/hui-fan-speed-card-feature.ts b/src/panels/lovelace/card-features/hui-fan-speed-card-feature.ts
index 3944cf9111..932c3a93d2 100644
--- a/src/panels/lovelace/card-features/hui-fan-speed-card-feature.ts
+++ b/src/panels/lovelace/card-features/hui-fan-speed-card-feature.ts
@@ -57,10 +57,7 @@ class HuiFanSpeedCardFeature extends LitElement implements LovelaceCardFeature {
if (speed === "on" || speed === "off") {
return this.hass!.formatEntityState(this.stateObj!, speed);
}
- return (
- this.hass!.localize(`ui.dialogs.more_info_control.fan.speed.${speed}`) ||
- speed
- );
+ return this.hass!.localize(`ui.card.fan.speed.${speed}`) || speed;
}
protected render() {
diff --git a/src/panels/lovelace/cards/hui-humidifier-card.ts b/src/panels/lovelace/cards/hui-humidifier-card.ts
index 8a07d17791..c02f572ac8 100644
--- a/src/panels/lovelace/cards/hui-humidifier-card.ts
+++ b/src/panels/lovelace/cards/hui-humidifier-card.ts
@@ -16,7 +16,7 @@ import { stateColorCss } from "../../../common/entity/state_color";
import "../../../components/ha-card";
import "../../../components/ha-icon-button";
import { HumidifierEntity } from "../../../data/humidifier";
-import "../../../dialogs/more-info/components/humidifier/ha-more-info-humidifier-humidity";
+import "../../../state-control/humidifier/ha-state-control-humidifier-humidity";
import { HomeAssistant } from "../../../types";
import "../card-features/hui-card-features";
import { findEntities } from "../common/find-entities";
@@ -126,11 +126,11 @@ export class HuiHumidifierCard extends LitElement implements LovelaceCard {
return html`
${name}
-
+ >
${name}
-
+ >
((mode) => ({
value: mode,
- label: this.hass.localize(
- `ui.dialogs.more_info_control.alarm_control_panel.modes.${mode}`
- ),
+ label: this.hass.localize(`ui.card.alarm_control_panel.modes.${mode}`),
path: ALARM_MODES[mode].path,
}));
@@ -116,7 +110,7 @@ export class HaMoreInfoAlarmControlPanelModes extends LitElement {
.value=${this._currentMode}
@value-changed=${this._valueChanged}
.ariaLabel=${this.hass.localize(
- "ui.dialogs.more_info_control.alarm_control_panel.modes_label"
+ "ui.card.alarm_control_panel.modes_label"
)}
style=${styleMap({
"--control-select-color": color,
@@ -146,6 +140,6 @@ export class HaMoreInfoAlarmControlPanelModes extends LitElement {
declare global {
interface HTMLElementTagNameMap {
- "ha-more-info-alarm_control_panel-modes": HaMoreInfoAlarmControlPanelModes;
+ "ha-state-control-alarm_control_panel-modes": HaStateControlAlarmControlPanelModes;
}
}
diff --git a/src/dialogs/more-info/components/climate/ha-more-info-climate-humidity.ts b/src/state-control/climate/ha-state-control-climate-humidity.ts
similarity index 83%
rename from src/dialogs/more-info/components/climate/ha-more-info-climate-humidity.ts
rename to src/state-control/climate/ha-state-control-climate-humidity.ts
index 00a19db3f3..e5123e9326 100644
--- a/src/dialogs/more-info/components/climate/ha-more-info-climate-humidity.ts
+++ b/src/state-control/climate/ha-state-control-climate-humidity.ts
@@ -2,23 +2,23 @@ import { mdiMinus, mdiPlus, mdiWaterPercent } from "@mdi/js";
import { CSSResultGroup, LitElement, PropertyValues, html } from "lit";
import { customElement, property, state } from "lit/decorators";
import { styleMap } from "lit/directives/style-map";
-import { stateActive } from "../../../../common/entity/state_active";
-import { domainStateColorProperties } from "../../../../common/entity/state_color";
-import { supportsFeature } from "../../../../common/entity/supports-feature";
-import { clamp } from "../../../../common/number/clamp";
-import { debounce } from "../../../../common/util/debounce";
-import "../../../../components/ha-big-number";
-import "../../../../components/ha-control-circular-slider";
-import "../../../../components/ha-outlined-icon-button";
-import "../../../../components/ha-svg-icon";
-import { ClimateEntity, ClimateEntityFeature } from "../../../../data/climate";
-import { UNAVAILABLE } from "../../../../data/entity";
-import { computeCssVariable } from "../../../../resources/css-variables";
-import { HomeAssistant } from "../../../../types";
-import { moreInfoControlCircularSliderStyle } from "../ha-more-info-control-circular-slider-style";
+import { stateActive } from "../../common/entity/state_active";
+import { domainStateColorProperties } from "../../common/entity/state_color";
+import { supportsFeature } from "../../common/entity/supports-feature";
+import { clamp } from "../../common/number/clamp";
+import { debounce } from "../../common/util/debounce";
+import "../../components/ha-big-number";
+import "../../components/ha-control-circular-slider";
+import "../../components/ha-outlined-icon-button";
+import "../../components/ha-svg-icon";
+import { ClimateEntity, ClimateEntityFeature } from "../../data/climate";
+import { UNAVAILABLE } from "../../data/entity";
+import { computeCssVariable } from "../../resources/css-variables";
+import { HomeAssistant } from "../../types";
+import { stateControlCircularSliderStyle } from "../state-control-circular-slider-style";
-@customElement("ha-more-info-climate-humidity")
-export class HaMoreInfoClimateHumidity extends LitElement {
+@customElement("ha-state-control-climate-humidity")
+export class HaStateControlClimateHumidity extends LitElement {
@property({ attribute: false }) public hass!: HomeAssistant;
@property({ attribute: false }) public stateObj!: ClimateEntity;
@@ -224,12 +224,12 @@ export class HaMoreInfoClimateHumidity extends LitElement {
}
static get styles(): CSSResultGroup {
- return moreInfoControlCircularSliderStyle;
+ return stateControlCircularSliderStyle;
}
}
declare global {
interface HTMLElementTagNameMap {
- "ha-more-info-climate-humidity": HaMoreInfoClimateHumidity;
+ "ha-state-control-climate-humidity": HaStateControlClimateHumidity;
}
}
diff --git a/src/dialogs/more-info/components/climate/ha-more-info-climate-temperature.ts b/src/state-control/climate/ha-state-control-climate-temperature.ts
similarity index 91%
rename from src/dialogs/more-info/components/climate/ha-more-info-climate-temperature.ts
rename to src/state-control/climate/ha-state-control-climate-temperature.ts
index 1dc4e87a1b..cfcdb4ad88 100644
--- a/src/dialogs/more-info/components/climate/ha-more-info-climate-temperature.ts
+++ b/src/state-control/climate/ha-state-control-climate-temperature.ts
@@ -3,26 +3,26 @@ import { CSSResultGroup, LitElement, PropertyValues, css, html } from "lit";
import { customElement, property, state } from "lit/decorators";
import { classMap } from "lit/directives/class-map";
import { styleMap } from "lit/directives/style-map";
-import { UNIT_F } from "../../../../common/const";
-import { stateActive } from "../../../../common/entity/state_active";
-import { stateColorCss } from "../../../../common/entity/state_color";
-import { supportsFeature } from "../../../../common/entity/supports-feature";
-import { clamp } from "../../../../common/number/clamp";
-import { debounce } from "../../../../common/util/debounce";
-import "../../../../components/ha-big-number";
-import "../../../../components/ha-control-circular-slider";
-import type { ControlCircularSliderMode } from "../../../../components/ha-control-circular-slider";
-import "../../../../components/ha-outlined-icon-button";
-import "../../../../components/ha-svg-icon";
+import { UNIT_F } from "../../common/const";
+import { stateActive } from "../../common/entity/state_active";
+import { stateColorCss } from "../../common/entity/state_color";
+import { supportsFeature } from "../../common/entity/supports-feature";
+import { clamp } from "../../common/number/clamp";
+import { debounce } from "../../common/util/debounce";
+import "../../components/ha-big-number";
+import "../../components/ha-control-circular-slider";
+import type { ControlCircularSliderMode } from "../../components/ha-control-circular-slider";
+import "../../components/ha-outlined-icon-button";
+import "../../components/ha-svg-icon";
import {
CLIMATE_HVAC_ACTION_TO_MODE,
ClimateEntity,
ClimateEntityFeature,
HvacMode,
-} from "../../../../data/climate";
-import { UNAVAILABLE } from "../../../../data/entity";
-import { HomeAssistant } from "../../../../types";
-import { moreInfoControlCircularSliderStyle } from "../ha-more-info-control-circular-slider-style";
+} from "../../data/climate";
+import { UNAVAILABLE } from "../../data/entity";
+import { HomeAssistant } from "../../types";
+import { stateControlCircularSliderStyle } from "../state-control-circular-slider-style";
type Target = "value" | "low" | "high";
@@ -36,8 +36,8 @@ const SLIDER_MODES: Record = {
off: "full",
};
-@customElement("ha-more-info-climate-temperature")
-export class HaMoreInfoClimateTemperature extends LitElement {
+@customElement("ha-state-control-climate-temperature")
+export class HaStateControlClimateTemperature extends LitElement {
@property({ attribute: false }) public hass!: HomeAssistant;
@property({ attribute: false }) public stateObj!: ClimateEntity;
@@ -422,7 +422,7 @@ export class HaMoreInfoClimateTemperature extends LitElement {
static get styles(): CSSResultGroup {
return [
- moreInfoControlCircularSliderStyle,
+ stateControlCircularSliderStyle,
css`
/* Dual target */
.dual {
@@ -477,6 +477,6 @@ export class HaMoreInfoClimateTemperature extends LitElement {
declare global {
interface HTMLElementTagNameMap {
- "ha-more-info-climate-temperature": HaMoreInfoClimateTemperature;
+ "ha-state-control-climate-temperature": HaStateControlClimateTemperature;
}
}
diff --git a/src/dialogs/more-info/components/cover/ha-more-info-cover-buttons.ts b/src/state-control/cover/ha-state-control-cover-buttons.ts
similarity index 86%
rename from src/dialogs/more-info/components/cover/ha-more-info-cover-buttons.ts
rename to src/state-control/cover/ha-state-control-cover-buttons.ts
index 99ee617ecb..1d49f33d9a 100644
--- a/src/dialogs/more-info/components/cover/ha-more-info-cover-buttons.ts
+++ b/src/state-control/cover/ha-state-control-cover-buttons.ts
@@ -1,11 +1,11 @@
import { mdiArrowBottomLeft, mdiArrowTopRight, mdiStop } from "@mdi/js";
import {
- css,
CSSResultGroup,
- html,
LitElement,
- nothing,
TemplateResult,
+ css,
+ html,
+ nothing,
} from "lit";
import { customElement, property } from "lit/decorators";
import { repeat } from "lit/directives/repeat";
@@ -13,23 +13,23 @@ import memoizeOne from "memoize-one";
import {
computeCloseIcon,
computeOpenIcon,
-} from "../../../../common/entity/cover_icon";
-import { supportsFeature } from "../../../../common/entity/supports-feature";
-import "../../../../components/ha-control-button";
-import "../../../../components/ha-control-button-group";
-import "../../../../components/ha-control-slider";
-import "../../../../components/ha-svg-icon";
+} from "../../common/entity/cover_icon";
+import { supportsFeature } from "../../common/entity/supports-feature";
+import "../../components/ha-control-button";
+import "../../components/ha-control-button-group";
+import "../../components/ha-control-slider";
+import "../../components/ha-svg-icon";
import {
+ CoverEntity,
+ CoverEntityFeature,
canClose,
canCloseTilt,
canOpen,
canOpenTilt,
canStop,
canStopTilt,
- CoverEntity,
- CoverEntityFeature,
-} from "../../../../data/cover";
-import { HomeAssistant } from "../../../../types";
+} from "../../data/cover";
+import { HomeAssistant } from "../../types";
type CoverButton =
| "open"
@@ -107,8 +107,8 @@ export const getCoverLayout = memoizeOne(
}
);
-@customElement("ha-more-info-cover-buttons")
-export class HaMoreInfoCoverButtons extends LitElement {
+@customElement("ha-state-control-cover-buttons")
+export class HaStateControlCoverButtons extends LitElement {
@property({ attribute: false }) public hass!: HomeAssistant;
@property({ attribute: false }) public stateObj!: CoverEntity;
@@ -159,9 +159,7 @@ export class HaMoreInfoCoverButtons extends LitElement {
if (button === "open") {
return html`
@@ -122,7 +118,9 @@ export class HaMoreInfoLockToggle extends LitElement {
reversed
.checked=${this._isOn}
@change=${this._valueChanged}
- .ariaLabel=${this.hass.localize("ui.dialogs.more_info_control.toggle")}
+ .ariaLabel=${this._isOn
+ ? this.hass.localize("ui.card.lock.unlock")
+ : this.hass.localize("ui.card.lock.lock")}
style=${styleMap({
"--control-switch-on-color": color,
"--control-switch-off-color": color,
@@ -198,6 +196,6 @@ export class HaMoreInfoLockToggle extends LitElement {
declare global {
interface HTMLElementTagNameMap {
- "ha-more-info-lock-toggle": HaMoreInfoLockToggle;
+ "ha-state-control-lock-toggle": HaStateControlLockToggle;
}
}
diff --git a/src/dialogs/more-info/components/ha-more-info-control-circular-slider-style.ts b/src/state-control/state-control-circular-slider-style.ts
similarity index 97%
rename from src/dialogs/more-info/components/ha-more-info-control-circular-slider-style.ts
rename to src/state-control/state-control-circular-slider-style.ts
index 50d43b10f3..fe43921af4 100644
--- a/src/dialogs/more-info/components/ha-more-info-control-circular-slider-style.ts
+++ b/src/state-control/state-control-circular-slider-style.ts
@@ -1,6 +1,6 @@
import { css } from "lit";
-export const moreInfoControlCircularSliderStyle = css`
+export const stateControlCircularSliderStyle = css`
/* Layout elements */
:host {
width: 320px;
diff --git a/src/dialogs/more-info/components/water_heater/ha-more-info-water_heater-temperature.ts b/src/state-control/water_heater/ha-state-control-water_heater-temperature.ts
similarity index 84%
rename from src/dialogs/more-info/components/water_heater/ha-more-info-water_heater-temperature.ts
rename to src/state-control/water_heater/ha-state-control-water_heater-temperature.ts
index 3be4b2a2df..8fcaad4647 100644
--- a/src/dialogs/more-info/components/water_heater/ha-more-info-water_heater-temperature.ts
+++ b/src/state-control/water_heater/ha-state-control-water_heater-temperature.ts
@@ -2,26 +2,26 @@ import { mdiMinus, mdiPlus } from "@mdi/js";
import { CSSResultGroup, LitElement, PropertyValues, html } from "lit";
import { customElement, property, state } from "lit/decorators";
import { styleMap } from "lit/directives/style-map";
-import { UNIT_F } from "../../../../common/const";
-import { stateActive } from "../../../../common/entity/state_active";
-import { stateColorCss } from "../../../../common/entity/state_color";
-import { supportsFeature } from "../../../../common/entity/supports-feature";
-import { clamp } from "../../../../common/number/clamp";
-import { debounce } from "../../../../common/util/debounce";
-import "../../../../components/ha-big-number";
-import "../../../../components/ha-control-circular-slider";
-import "../../../../components/ha-outlined-icon-button";
-import "../../../../components/ha-svg-icon";
-import { UNAVAILABLE } from "../../../../data/entity";
+import { UNIT_F } from "../../common/const";
+import { stateActive } from "../../common/entity/state_active";
+import { stateColorCss } from "../../common/entity/state_color";
+import { supportsFeature } from "../../common/entity/supports-feature";
+import { clamp } from "../../common/number/clamp";
+import { debounce } from "../../common/util/debounce";
+import "../../components/ha-big-number";
+import "../../components/ha-control-circular-slider";
+import "../../components/ha-outlined-icon-button";
+import "../../components/ha-svg-icon";
+import { UNAVAILABLE } from "../../data/entity";
import {
WaterHeaterEntity,
WaterHeaterEntityFeature,
-} from "../../../../data/water_heater";
-import { HomeAssistant } from "../../../../types";
-import { moreInfoControlCircularSliderStyle } from "../ha-more-info-control-circular-slider-style";
+} from "../../data/water_heater";
+import { HomeAssistant } from "../../types";
+import { stateControlCircularSliderStyle } from "../state-control-circular-slider-style";
-@customElement("ha-more-info-water_heater-temperature")
-export class HaMoreInfoWaterHeaterTemperature extends LitElement {
+@customElement("ha-state-control-water_heater-temperature")
+export class HaStateControlWaterHeaterTemperature extends LitElement {
@property({ attribute: false }) public hass!: HomeAssistant;
@property({ attribute: false }) public stateObj!: WaterHeaterEntity;
@@ -237,12 +237,12 @@ export class HaMoreInfoWaterHeaterTemperature extends LitElement {
}
static get styles(): CSSResultGroup {
- return moreInfoControlCircularSliderStyle;
+ return stateControlCircularSliderStyle;
}
}
declare global {
interface HTMLElementTagNameMap {
- "ha-more-info-water_heater-temperature": HaMoreInfoWaterHeaterTemperature;
+ "ha-state-control-water_heater-temperature": HaStateControlWaterHeaterTemperature;
}
}
diff --git a/src/translations/en.json b/src/translations/en.json
index 5ff5a41a45..1c555bbbfc 100644
--- a/src/translations/en.json
+++ b/src/translations/en.json
@@ -72,15 +72,30 @@
"upload_backup": "Upload backup"
},
"card": {
+ "common": {
+ "turn_on": "Turn on",
+ "turn_off": "Turn off",
+ "toggle": "Toggle"
+ },
"alarm_control_panel": {
"code": "Code",
"clear_code": "Clear",
"disarm": "Disarm",
+ "arm": "Arm",
"arm_home": "Arm home",
"arm_away": "Arm away",
"arm_night": "Arm night",
"arm_vacation": "Arm vacation",
- "arm_custom_bypass": "Custom bypass"
+ "arm_custom_bypass": "Custom bypass",
+ "modes_label": "Modes",
+ "modes": {
+ "armed_away": "Away",
+ "armed_home": "Home",
+ "armed_night": "Night",
+ "armed_vacation": "Vacation",
+ "armed_custom_bypass": "Custom",
+ "disarmed": "Disarmed"
+ }
},
"area": {
"area_not_found": "Area not found."
@@ -120,15 +135,24 @@
},
"cover": {
"position": "Position",
- "tilt_position": "Tilt position"
+ "tilt_position": "Tilt position",
+ "open_cover": "Open cover",
+ "close_cover": "Close cover",
+ "open_tilt_cover": "Open cover tilt",
+ "close_tilt_cover": "Close cover tilt",
+ "stop_cover": "Stop cover"
},
"fan": {
- "speed": "Speed",
"preset_mode": "Preset mode",
"oscillate": "Oscillate",
"direction": "Direction",
"forward": "Forward",
- "reverse": "Reverse"
+ "reverse": "Reverse",
+ "speed": {
+ "low": "Low",
+ "medium": "Medium",
+ "high": "High"
+ }
},
"humidifier": {
"currently": "[%key:ui::card::climate::currently%]",
@@ -930,9 +954,6 @@
"last_changed": "Last changed",
"last_updated": "Last updated",
"show_more": "Show more",
- "turn_on": "Turn on",
- "turn_off": "Turn off",
- "toggle": "Toggle",
"exit_edit_mode": "Exit edit mode",
"script": {
"last_action": "Last action",
@@ -975,11 +996,6 @@
"create_zone": "Create zone from current location"
},
"cover": {
- "open_cover": "Open cover",
- "close_cover": "Close cover",
- "open_tilt_cover": "Open cover tilt",
- "close_tilt_cover": "Close cover tilt",
- "stop_cover": "Stop cover",
"switch_mode": {
"button": "Switch to button mode",
"position": "Switch to position mode"
@@ -995,7 +1011,6 @@
"color_temp": "Temperature",
"set_white": "Set white",
"select_effect": "Select effect",
- "brightness": "Brightness",
"color_picker": {
"title": "Change color",
"mode": {
@@ -1019,32 +1034,7 @@
"set_forward_direction": "Set forward direction",
"set_reverse_direction": "Set reverse direction",
"turn_on_oscillating": "Turn on oscillating",
- "turn_off_oscillating": "Turn off oscillating",
- "speed": {
- "low": "Low",
- "medium": "Medium",
- "high": "High"
- }
- },
- "alarm_control_panel": {
- "modes_label": "Modes",
- "modes": {
- "armed_away": "Away",
- "armed_home": "Home",
- "armed_night": "Night",
- "armed_vacation": "Vacation",
- "armed_custom_bypass": "Custom",
- "disarmed": "Disarmed"
- },
- "disarm_title": "Disarm",
- "disarm_action": "Disarm",
- "arm_title": "Arm",
- "arm_action": "Arm"
- },
- "lock": {
- "open": "Open",
- "lock": "Lock",
- "unlock": "Unlock"
+ "turn_off_oscillating": "Turn off oscillating"
},
"climate": {
"temperature": "Temperature",
@@ -5199,14 +5189,14 @@
},
"alarm-modes": {
"label": "Alarm modes",
- "modes": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes_label%]",
+ "modes": "[%key:ui::card::alarm_control_panel::modes_label%]",
"modes_list": {
- "armed_away": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::armed_away%]",
- "armed_home": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::armed_home%]",
- "armed_night": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::armed_night%]",
- "armed_vacation": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::armed_vacation%]",
- "armed_custom_bypass": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::armed_custom_bypass%]",
- "disarmed": "[%key:ui::dialogs::more_info_control::alarm_control_panel::modes::disarmed%]"
+ "armed_away": "[%key:ui::card::alarm_control_panel::modes::armed_away%]",
+ "armed_home": "[%key:ui::card::alarm_control_panel::modes::armed_home%]",
+ "armed_night": "[%key:ui::card::alarm_control_panel::modes::armed_night%]",
+ "armed_vacation": "[%key:ui::card::alarm_control_panel::modes::armed_vacation%]",
+ "armed_custom_bypass": "[%key:ui::card::alarm_control_panel::modes::armed_custom_bypass%]",
+ "disarmed": "[%key:ui::card::alarm_control_panel::modes::disarmed%]"
}
},
"light-brightness": {