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": {