Rename number feature to number value feature (#18836)

This commit is contained in:
Paul Bottein 2023-11-30 17:17:54 +01:00 committed by GitHub
parent 219fc9e53a
commit 6a999597df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 42 additions and 33 deletions

View File

@ -5,41 +5,46 @@ import { computeDomain } from "../../../common/entity/compute_domain";
import { isUnavailableState } from "../../../data/entity"; import { isUnavailableState } from "../../../data/entity";
import { HomeAssistant } from "../../../types"; import { HomeAssistant } from "../../../types";
import { LovelaceCardFeature, LovelaceCardFeatureEditor } from "../types"; import { LovelaceCardFeature, LovelaceCardFeatureEditor } from "../types";
import { NumberCardFeatureConfig } from "./types"; import { NumericInputCardFeatureConfig } from "./types";
import "../../../components/ha-control-button"; import "../../../components/ha-control-button";
import "../../../components/ha-control-button-group"; import "../../../components/ha-control-button-group";
import "../../../components/ha-control-number-buttons"; import "../../../components/ha-control-number-buttons";
import "../../../components/ha-control-slider"; import "../../../components/ha-control-slider";
import "../../../components/ha-icon"; import "../../../components/ha-icon";
export const supportsNumberCardFeature = (stateObj: HassEntity) => { export const supportsNumericInputCardFeature = (stateObj: HassEntity) => {
const domain = computeDomain(stateObj.entity_id); const domain = computeDomain(stateObj.entity_id);
return domain === "input_number" || domain === "number"; return domain === "input_number" || domain === "number";
}; };
@customElement("hui-number-card-feature") @customElement("hui-numeric-input-card-feature")
class HuiNumberCardFeature extends LitElement implements LovelaceCardFeature { class HuiNumericInputCardFeature
extends LitElement
implements LovelaceCardFeature
{
@property({ attribute: false }) public hass?: HomeAssistant; @property({ attribute: false }) public hass?: HomeAssistant;
@property({ attribute: false }) public stateObj?: HassEntity; @property({ attribute: false }) public stateObj?: HassEntity;
@state() private _config?: NumberCardFeatureConfig; @state() private _config?: NumericInputCardFeatureConfig;
@state() _currentState?: string; @state() _currentState?: string;
static getStubConfig(): NumberCardFeatureConfig { static getStubConfig(): NumericInputCardFeatureConfig {
return { return {
type: "number", type: "numeric-input",
style: "buttons", style: "buttons",
}; };
} }
public static async getConfigElement(): Promise<LovelaceCardFeatureEditor> { public static async getConfigElement(): Promise<LovelaceCardFeatureEditor> {
await import("../editor/config-elements/hui-number-card-feature-editor"); await import(
return document.createElement("hui-number-card-feature-editor"); "../editor/config-elements/hui-numeric-input-card-feature-editor"
);
return document.createElement("hui-numeric-input-card-feature-editor");
} }
public setConfig(config: NumberCardFeatureConfig): void { public setConfig(config: NumericInputCardFeatureConfig): void {
if (!config) { if (!config) {
throw new Error("Invalid configuration"); throw new Error("Invalid configuration");
} }
@ -69,7 +74,7 @@ class HuiNumberCardFeature extends LitElement implements LovelaceCardFeature {
!this._config || !this._config ||
!this.hass || !this.hass ||
!this.stateObj || !this.stateObj ||
!supportsNumberCardFeature(this.stateObj) !supportsNumericInputCardFeature(this.stateObj)
) { ) {
return nothing; return nothing;
} }
@ -110,6 +115,10 @@ class HuiNumberCardFeature extends LitElement implements LovelaceCardFeature {
} }
ha-control-slider { ha-control-slider {
--control-slider-color: var(--feature-color); --control-slider-color: var(--feature-color);
--control-slider-background: var(--feature-color);
--control-slider-background-opacity: 0.2;
--control-slider-thickness: 40px;
--control-slider-border-radius: 10px;
} }
.container { .container {
padding: 0 12px 12px 12px; padding: 0 12px 12px 12px;
@ -121,6 +130,6 @@ class HuiNumberCardFeature extends LitElement implements LovelaceCardFeature {
declare global { declare global {
interface HTMLElementTagNameMap { interface HTMLElementTagNameMap {
"hui-number-card-feature": HuiNumberCardFeature; "hui-numeric-input-card-feature": HuiNumericInputCardFeature;
} }
} }

View File

@ -50,8 +50,8 @@ export interface SelectOptionsCardFeatureConfig {
type: "select-options"; type: "select-options";
} }
export interface NumberCardFeatureConfig { export interface NumericInputCardFeatureConfig {
type: "number"; type: "numeric-input";
style?: "buttons" | "slider"; style?: "buttons" | "slider";
} }
@ -109,7 +109,7 @@ export type LovelaceCardFeatureConfig =
| TargetTemperatureCardFeatureConfig | TargetTemperatureCardFeatureConfig
| WaterHeaterOperationModesCardFeatureConfig | WaterHeaterOperationModesCardFeatureConfig
| SelectOptionsCardFeatureConfig | SelectOptionsCardFeatureConfig
| NumberCardFeatureConfig; | NumericInputCardFeatureConfig;
export type LovelaceCardFeatureContext = { export type LovelaceCardFeatureContext = {
entity_id?: string; entity_id?: string;

View File

@ -3,14 +3,14 @@ import "../card-features/hui-climate-hvac-modes-card-feature";
import "../card-features/hui-climate-preset-modes-card-feature"; import "../card-features/hui-climate-preset-modes-card-feature";
import "../card-features/hui-cover-open-close-card-feature"; import "../card-features/hui-cover-open-close-card-feature";
import "../card-features/hui-cover-position-card-feature"; import "../card-features/hui-cover-position-card-feature";
import "../card-features/hui-cover-tilt-position-card-feature";
import "../card-features/hui-cover-tilt-card-feature"; import "../card-features/hui-cover-tilt-card-feature";
import "../card-features/hui-cover-tilt-position-card-feature";
import "../card-features/hui-fan-speed-card-feature"; import "../card-features/hui-fan-speed-card-feature";
import "../card-features/hui-humidifier-modes-card-feature"; import "../card-features/hui-humidifier-modes-card-feature";
import "../card-features/hui-lawn-mower-commands-card-feature"; import "../card-features/hui-lawn-mower-commands-card-feature";
import "../card-features/hui-light-brightness-card-feature"; import "../card-features/hui-light-brightness-card-feature";
import "../card-features/hui-light-color-temp-card-feature"; import "../card-features/hui-light-color-temp-card-feature";
import "../card-features/hui-number-card-feature"; import "../card-features/hui-numeric-input-card-feature";
import "../card-features/hui-select-options-card-feature"; import "../card-features/hui-select-options-card-feature";
import "../card-features/hui-target-temperature-card-feature"; import "../card-features/hui-target-temperature-card-feature";
import "../card-features/hui-vacuum-commands-card-feature"; import "../card-features/hui-vacuum-commands-card-feature";
@ -34,11 +34,11 @@ const TYPES: Set<LovelaceCardFeatureConfig["type"]> = new Set([
"lawn-mower-commands", "lawn-mower-commands",
"light-brightness", "light-brightness",
"light-color-temp", "light-color-temp",
"numeric-input",
"select-options", "select-options",
"target-temperature", "target-temperature",
"vacuum-commands", "vacuum-commands",
"water-heater-operation-modes", "water-heater-operation-modes",
"number",
]); ]);
export const createCardFeatureElement = (config: LovelaceCardFeatureConfig) => export const createCardFeatureElement = (config: LovelaceCardFeatureConfig) =>

View File

@ -33,7 +33,7 @@ import { supportsHumidifierModesCardFeature } from "../../card-features/hui-humi
import { supportsLawnMowerCommandCardFeature } from "../../card-features/hui-lawn-mower-commands-card-feature"; import { supportsLawnMowerCommandCardFeature } from "../../card-features/hui-lawn-mower-commands-card-feature";
import { supportsLightBrightnessCardFeature } from "../../card-features/hui-light-brightness-card-feature"; import { supportsLightBrightnessCardFeature } from "../../card-features/hui-light-brightness-card-feature";
import { supportsLightColorTempCardFeature } from "../../card-features/hui-light-color-temp-card-feature"; import { supportsLightColorTempCardFeature } from "../../card-features/hui-light-color-temp-card-feature";
import { supportsNumberCardFeature } from "../../card-features/hui-number-card-feature"; import { supportsNumericInputCardFeature } from "../../card-features/hui-numeric-input-card-feature";
import { supportsSelectOptionsCardFeature } from "../../card-features/hui-select-options-card-feature"; import { supportsSelectOptionsCardFeature } from "../../card-features/hui-select-options-card-feature";
import { supportsTargetTemperatureCardFeature } from "../../card-features/hui-target-temperature-card-feature"; import { supportsTargetTemperatureCardFeature } from "../../card-features/hui-target-temperature-card-feature";
import { supportsVacuumCommandsCardFeature } from "../../card-features/hui-vacuum-commands-card-feature"; import { supportsVacuumCommandsCardFeature } from "../../card-features/hui-vacuum-commands-card-feature";
@ -61,7 +61,7 @@ const UI_FEATURE_TYPES = [
"target-temperature", "target-temperature",
"vacuum-commands", "vacuum-commands",
"water-heater-operation-modes", "water-heater-operation-modes",
"number", "numeric-input",
] as const satisfies readonly FeatureType[]; ] as const satisfies readonly FeatureType[];
type UiFeatureTypes = (typeof UI_FEATURE_TYPES)[number]; type UiFeatureTypes = (typeof UI_FEATURE_TYPES)[number];
@ -73,7 +73,7 @@ const EDITABLES_FEATURE_TYPES = new Set<UiFeatureTypes>([
"water-heater-operation-modes", "water-heater-operation-modes",
"lawn-mower-commands", "lawn-mower-commands",
"climate-preset-modes", "climate-preset-modes",
"number", "numeric-input",
]); ]);
const SUPPORTS_FEATURE_TYPES: Record< const SUPPORTS_FEATURE_TYPES: Record<
@ -92,7 +92,7 @@ const SUPPORTS_FEATURE_TYPES: Record<
"lawn-mower-commands": supportsLawnMowerCommandCardFeature, "lawn-mower-commands": supportsLawnMowerCommandCardFeature,
"light-brightness": supportsLightBrightnessCardFeature, "light-brightness": supportsLightBrightnessCardFeature,
"light-color-temp": supportsLightColorTempCardFeature, "light-color-temp": supportsLightColorTempCardFeature,
number: supportsNumberCardFeature, "numeric-input": supportsNumericInputCardFeature,
"target-temperature": supportsTargetTemperatureCardFeature, "target-temperature": supportsTargetTemperatureCardFeature,
"vacuum-commands": supportsVacuumCommandsCardFeature, "vacuum-commands": supportsVacuumCommandsCardFeature,
"water-heater-operation-modes": supportsWaterHeaterOperationModesCardFeature, "water-heater-operation-modes": supportsWaterHeaterOperationModesCardFeature,

View File

@ -6,14 +6,14 @@ import "../../../../components/ha-form/ha-form";
import type { SchemaUnion } from "../../../../components/ha-form/types"; import type { SchemaUnion } from "../../../../components/ha-form/types";
import type { HomeAssistant } from "../../../../types"; import type { HomeAssistant } from "../../../../types";
import { import {
NumberCardFeatureConfig, NumericInputCardFeatureConfig,
LovelaceCardFeatureContext, LovelaceCardFeatureContext,
} from "../../card-features/types"; } from "../../card-features/types";
import type { LovelaceCardFeatureEditor } from "../../types"; import type { LovelaceCardFeatureEditor } from "../../types";
import { LocalizeFunc } from "../../../../common/translations/localize"; import { LocalizeFunc } from "../../../../common/translations/localize";
@customElement("hui-number-card-feature-editor") @customElement("hui-numeric-input-card-feature-editor")
export class HuiNumberCardFeatureEditor export class HuiNumericInputCardFeatureEditor
extends LitElement extends LitElement
implements LovelaceCardFeatureEditor implements LovelaceCardFeatureEditor
{ {
@ -21,9 +21,9 @@ export class HuiNumberCardFeatureEditor
@property({ attribute: false }) public context?: LovelaceCardFeatureContext; @property({ attribute: false }) public context?: LovelaceCardFeatureContext;
@state() private _config?: NumberCardFeatureConfig; @state() private _config?: NumericInputCardFeatureConfig;
public setConfig(config: NumberCardFeatureConfig): void { public setConfig(config: NumericInputCardFeatureConfig): void {
this._config = config; this._config = config;
} }
@ -39,7 +39,7 @@ export class HuiNumberCardFeatureEditor
options: ["slider", "buttons"].map((mode) => ({ options: ["slider", "buttons"].map((mode) => ({
value: mode, value: mode,
label: localize( label: localize(
`ui.panel.lovelace.editor.features.types.number.style_list.${mode}` `ui.panel.lovelace.editor.features.types.numeric-input.style_list.${mode}`
), ),
})), })),
}, },
@ -53,7 +53,7 @@ export class HuiNumberCardFeatureEditor
return nothing; return nothing;
} }
const data: NumberCardFeatureConfig = { const data: NumericInputCardFeatureConfig = {
style: "buttons", style: "buttons",
...this._config, ...this._config,
}; };
@ -79,12 +79,12 @@ export class HuiNumberCardFeatureEditor
schema: SchemaUnion<ReturnType<typeof this._schema>> schema: SchemaUnion<ReturnType<typeof this._schema>>
) => ) =>
this.hass!.localize( this.hass!.localize(
`ui.panel.lovelace.editor.features.types.number.${schema.name}` `ui.panel.lovelace.editor.features.types.numeric-input.${schema.name}`
); );
} }
declare global { declare global {
interface HTMLElementTagNameMap { interface HTMLElementTagNameMap {
"hui-number-card-feature-editor": HuiNumberCardFeatureEditor; "hui-numeric-input-card-feature-editor": HuiNumericInputCardFeatureEditor;
} }
} }

View File

@ -5292,8 +5292,8 @@
"select-options": { "select-options": {
"label": "Select options" "label": "Select options"
}, },
"number": { "numeric-input": {
"label": "Number", "label": "Numeric input",
"style": "Style", "style": "Style",
"style_list": { "style_list": {
"buttons": "Buttons", "buttons": "Buttons",