mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-30 12:46:35 +00:00
Stub Configs: Add Type (#5206)
* Add Type * Add return type * Lint * Fix map * map fix * Comments
This commit is contained in:
parent
39bb859f57
commit
0d404e0e37
@ -52,7 +52,7 @@ class HuiAlarmPanelCard extends LitElement implements LovelaceCard {
|
|||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
entities: string[],
|
entities: string[],
|
||||||
entitiesFallback: string[]
|
entitiesFallback: string[]
|
||||||
) {
|
): AlarmPanelCardConfig {
|
||||||
const includeDomains = ["alarm_control_panel"];
|
const includeDomains = ["alarm_control_panel"];
|
||||||
const maxEntities = 1;
|
const maxEntities = 1;
|
||||||
const foundEntities = findEntities(
|
const foundEntities = findEntities(
|
||||||
@ -64,6 +64,7 @@ class HuiAlarmPanelCard extends LitElement implements LovelaceCard {
|
|||||||
);
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
type: "alarm-panel",
|
||||||
states: ["arm_home", "arm_away"],
|
states: ["arm_home", "arm_away"],
|
||||||
entity: foundEntities[0] || "",
|
entity: foundEntities[0] || "",
|
||||||
};
|
};
|
||||||
|
@ -48,7 +48,7 @@ export class HuiButtonCard extends LitElement implements LovelaceCard {
|
|||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
entities: string[],
|
entities: string[],
|
||||||
entitiesFallback: string[]
|
entitiesFallback: string[]
|
||||||
): object {
|
): ButtonCardConfig {
|
||||||
const maxEntities = 1;
|
const maxEntities = 1;
|
||||||
const foundEntities = findEntities(
|
const foundEntities = findEntities(
|
||||||
hass,
|
hass,
|
||||||
@ -59,6 +59,7 @@ export class HuiButtonCard extends LitElement implements LovelaceCard {
|
|||||||
);
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
type: "button",
|
||||||
tap_action: { action: "toggle" },
|
tap_action: { action: "toggle" },
|
||||||
hold_action: { action: "more-info" },
|
hold_action: { action: "more-info" },
|
||||||
show_icon: true,
|
show_icon: true,
|
||||||
|
@ -15,10 +15,11 @@ class HuiConditionalCard extends HuiConditionalBase implements LovelaceCard {
|
|||||||
return document.createElement("hui-conditional-card-editor");
|
return document.createElement("hui-conditional-card-editor");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static getStubConfig(): object {
|
public static getStubConfig(): ConditionalCardConfig {
|
||||||
return {
|
return {
|
||||||
|
type: "conditional",
|
||||||
conditions: [],
|
conditions: [],
|
||||||
card: {},
|
card: { type: "" },
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ class HuiEntitiesCard extends LitElement implements LovelaceCard {
|
|||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
entities: string[],
|
entities: string[],
|
||||||
entitiesFallback: string[]
|
entitiesFallback: string[]
|
||||||
) {
|
): EntitiesCardConfig {
|
||||||
const maxEntities = 3;
|
const maxEntities = 3;
|
||||||
const foundEntities = findEntities(
|
const foundEntities = findEntities(
|
||||||
hass,
|
hass,
|
||||||
@ -52,7 +52,7 @@ class HuiEntitiesCard extends LitElement implements LovelaceCard {
|
|||||||
["light", "switch", "sensor"]
|
["light", "switch", "sensor"]
|
||||||
);
|
);
|
||||||
|
|
||||||
return { title: "My Title", entities: foundEntities };
|
return { type: "entities", title: "My Title", entities: foundEntities };
|
||||||
}
|
}
|
||||||
|
|
||||||
@property() private _config?: EntitiesCardConfig;
|
@property() private _config?: EntitiesCardConfig;
|
||||||
|
@ -45,7 +45,7 @@ class HuiGaugeCard extends LitElement implements LovelaceCard {
|
|||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
entities: string[],
|
entities: string[],
|
||||||
entitiesFallback: string[]
|
entitiesFallback: string[]
|
||||||
): object {
|
): GaugeCardConfig {
|
||||||
const includeDomains = ["sensor"];
|
const includeDomains = ["sensor"];
|
||||||
const maxEntities = 1;
|
const maxEntities = 1;
|
||||||
const entityFilter = (stateObj: HassEntity): boolean => {
|
const entityFilter = (stateObj: HassEntity): boolean => {
|
||||||
@ -61,7 +61,7 @@ class HuiGaugeCard extends LitElement implements LovelaceCard {
|
|||||||
entityFilter
|
entityFilter
|
||||||
);
|
);
|
||||||
|
|
||||||
return { entity: foundEntities[0] || "" };
|
return { type: "gauge", entity: foundEntities[0] || "" };
|
||||||
}
|
}
|
||||||
|
|
||||||
@property() public hass?: HomeAssistant;
|
@property() public hass?: HomeAssistant;
|
||||||
|
@ -35,7 +35,7 @@ export class HuiHistoryGraphCard extends LitElement implements LovelaceCard {
|
|||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
entities: string[],
|
entities: string[],
|
||||||
entitiesFallback: string[]
|
entitiesFallback: string[]
|
||||||
): object {
|
): HistoryGraphCardConfig {
|
||||||
const includeDomains = ["sensor"];
|
const includeDomains = ["sensor"];
|
||||||
const maxEntities = 1;
|
const maxEntities = 1;
|
||||||
const foundEntities = findEntities(
|
const foundEntities = findEntities(
|
||||||
@ -46,7 +46,7 @@ export class HuiHistoryGraphCard extends LitElement implements LovelaceCard {
|
|||||||
includeDomains
|
includeDomains
|
||||||
);
|
);
|
||||||
|
|
||||||
return { entities: foundEntities };
|
return { type: "history-graph", entities: foundEntities };
|
||||||
}
|
}
|
||||||
|
|
||||||
@property() public hass?: HomeAssistant;
|
@property() public hass?: HomeAssistant;
|
||||||
|
@ -22,8 +22,12 @@ export class HuiIframeCard extends LitElement implements LovelaceCard {
|
|||||||
);
|
);
|
||||||
return document.createElement("hui-iframe-card-editor");
|
return document.createElement("hui-iframe-card-editor");
|
||||||
}
|
}
|
||||||
public static getStubConfig(): object {
|
public static getStubConfig(): IframeCardConfig {
|
||||||
return { url: "https://www.home-assistant.io", aspect_ratio: "50%" };
|
return {
|
||||||
|
type: "iframe",
|
||||||
|
url: "https://www.home-assistant.io",
|
||||||
|
aspect_ratio: "50%",
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@property() protected _config?: IframeCardConfig;
|
@property() protected _config?: IframeCardConfig;
|
||||||
|
@ -45,7 +45,7 @@ export class HuiLightCard extends LitElement implements LovelaceCard {
|
|||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
entities: string[],
|
entities: string[],
|
||||||
entitiesFallback: string[]
|
entitiesFallback: string[]
|
||||||
): object {
|
): LightCardConfig {
|
||||||
const includeDomains = ["light"];
|
const includeDomains = ["light"];
|
||||||
const maxEntities = 1;
|
const maxEntities = 1;
|
||||||
const foundEntities = findEntities(
|
const foundEntities = findEntities(
|
||||||
@ -56,7 +56,7 @@ export class HuiLightCard extends LitElement implements LovelaceCard {
|
|||||||
includeDomains
|
includeDomains
|
||||||
);
|
);
|
||||||
|
|
||||||
return { entity: foundEntities[0] || "" };
|
return { type: "light", entity: foundEntities[0] || "" };
|
||||||
}
|
}
|
||||||
|
|
||||||
@property() public hass?: HomeAssistant;
|
@property() public hass?: HomeAssistant;
|
||||||
|
@ -45,7 +45,7 @@ class HuiMapCard extends LitElement implements LovelaceCard {
|
|||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
entities: string[],
|
entities: string[],
|
||||||
entitiesFallback: string[]
|
entitiesFallback: string[]
|
||||||
): object {
|
): MapCardConfig {
|
||||||
const includeDomains = ["device_tracker"];
|
const includeDomains = ["device_tracker"];
|
||||||
const maxEntities = 2;
|
const maxEntities = 2;
|
||||||
const foundEntities = findEntities(
|
const foundEntities = findEntities(
|
||||||
@ -56,7 +56,7 @@ class HuiMapCard extends LitElement implements LovelaceCard {
|
|||||||
includeDomains
|
includeDomains
|
||||||
);
|
);
|
||||||
|
|
||||||
return { entities: foundEntities };
|
return { type: "map", entities: foundEntities };
|
||||||
}
|
}
|
||||||
|
|
||||||
@property() public hass?: HomeAssistant;
|
@property() public hass?: HomeAssistant;
|
||||||
@ -113,9 +113,10 @@ class HuiMapCard extends LitElement implements LovelaceCard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public getCardSize(): number {
|
public getCardSize(): number {
|
||||||
if (!this._config) {
|
if (!this._config?.aspect_ratio) {
|
||||||
return 3;
|
return 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
const ratio = parseAspectRatio(this._config.aspect_ratio);
|
const ratio = parseAspectRatio(this._config.aspect_ratio);
|
||||||
const ar =
|
const ar =
|
||||||
ratio && ratio.w > 0 && ratio.h > 0
|
ratio && ratio.w > 0 && ratio.h > 0
|
||||||
@ -206,6 +207,11 @@ class HuiMapCard extends LitElement implements LovelaceCard {
|
|||||||
this._attachObserver();
|
this._attachObserver();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!this._config.aspect_ratio) {
|
||||||
|
root.style.paddingBottom = "100%";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const ratio = parseAspectRatio(this._config.aspect_ratio);
|
const ratio = parseAspectRatio(this._config.aspect_ratio);
|
||||||
|
|
||||||
root.style.paddingBottom =
|
root.style.paddingBottom =
|
||||||
|
@ -29,8 +29,9 @@ export class HuiMarkdownCard extends LitElement implements LovelaceCard {
|
|||||||
return document.createElement("hui-markdown-card-editor");
|
return document.createElement("hui-markdown-card-editor");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static getStubConfig(): object {
|
public static getStubConfig(): MarkdownCardConfig {
|
||||||
return {
|
return {
|
||||||
|
type: "markdown",
|
||||||
content:
|
content:
|
||||||
"The **Markdown** card allows you to write any text. You can style it **bold**, *italicized*, ~strikethrough~ etc. You can do images, links, and more.\n\nFor more information see the [Markdown Cheatsheet](https://commonmark.org/help).",
|
"The **Markdown** card allows you to write any text. You can style it **bold**, *italicized*, ~strikethrough~ etc. You can do images, links, and more.\n\nFor more information see the [Markdown Cheatsheet](https://commonmark.org/help).",
|
||||||
};
|
};
|
||||||
|
@ -177,7 +177,7 @@ export class HuiMediaControlCard extends LitElement implements LovelaceCard {
|
|||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
entities: string[],
|
entities: string[],
|
||||||
entitiesFallback: string[]
|
entitiesFallback: string[]
|
||||||
): object {
|
): MediaControlCardConfig {
|
||||||
const includeDomains = ["media_player"];
|
const includeDomains = ["media_player"];
|
||||||
const maxEntities = 1;
|
const maxEntities = 1;
|
||||||
const foundEntities = findEntities(
|
const foundEntities = findEntities(
|
||||||
@ -188,7 +188,7 @@ export class HuiMediaControlCard extends LitElement implements LovelaceCard {
|
|||||||
includeDomains
|
includeDomains
|
||||||
);
|
);
|
||||||
|
|
||||||
return { entity: foundEntities[0] || "" };
|
return { type: "media-control", entity: foundEntities[0] || "" };
|
||||||
}
|
}
|
||||||
|
|
||||||
@property() public hass?: HomeAssistant;
|
@property() public hass?: HomeAssistant;
|
||||||
|
@ -30,8 +30,9 @@ export class HuiPictureCard extends LitElement implements LovelaceCard {
|
|||||||
);
|
);
|
||||||
return document.createElement("hui-picture-card-editor");
|
return document.createElement("hui-picture-card-editor");
|
||||||
}
|
}
|
||||||
public static getStubConfig(): object {
|
public static getStubConfig(): PictureCardConfig {
|
||||||
return {
|
return {
|
||||||
|
type: "picture",
|
||||||
image: "https://demo.home-assistant.io/stub_config/t-shirt-promo.png",
|
image: "https://demo.home-assistant.io/stub_config/t-shirt-promo.png",
|
||||||
tap_action: { action: "none" },
|
tap_action: { action: "none" },
|
||||||
hold_action: { action: "none" },
|
hold_action: { action: "none" },
|
||||||
|
@ -44,7 +44,7 @@ class HuiPictureEntityCard extends LitElement implements LovelaceCard {
|
|||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
entities: string[],
|
entities: string[],
|
||||||
entitiesFallback: string[]
|
entitiesFallback: string[]
|
||||||
): object {
|
): PictureEntityCardConfig {
|
||||||
const maxEntities = 1;
|
const maxEntities = 1;
|
||||||
const foundEntities = findEntities(
|
const foundEntities = findEntities(
|
||||||
hass,
|
hass,
|
||||||
@ -55,6 +55,7 @@ class HuiPictureEntityCard extends LitElement implements LovelaceCard {
|
|||||||
);
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
type: "picture-entity",
|
||||||
entity: foundEntities[0] || "",
|
entity: foundEntities[0] || "",
|
||||||
image: "https://demo.home-assistant.io/stub_config/bedroom.png",
|
image: "https://demo.home-assistant.io/stub_config/bedroom.png",
|
||||||
};
|
};
|
||||||
|
@ -45,7 +45,7 @@ class HuiPlantStatusCard extends LitElement implements LovelaceCard {
|
|||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
entities: string[],
|
entities: string[],
|
||||||
entitiesFallback: string[]
|
entitiesFallback: string[]
|
||||||
): object {
|
): PlantStatusCardConfig {
|
||||||
const includeDomains = ["plant"];
|
const includeDomains = ["plant"];
|
||||||
const maxEntities = 1;
|
const maxEntities = 1;
|
||||||
const foundEntities = findEntities(
|
const foundEntities = findEntities(
|
||||||
@ -56,7 +56,7 @@ class HuiPlantStatusCard extends LitElement implements LovelaceCard {
|
|||||||
includeDomains
|
includeDomains
|
||||||
);
|
);
|
||||||
|
|
||||||
return { entity: foundEntities[0] || "" };
|
return { type: "plant-status", entity: foundEntities[0] || "" };
|
||||||
}
|
}
|
||||||
|
|
||||||
@property() public hass?: HomeAssistant;
|
@property() public hass?: HomeAssistant;
|
||||||
|
@ -180,7 +180,7 @@ class HuiSensorCard extends LitElement implements LovelaceCard {
|
|||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
entities: string[],
|
entities: string[],
|
||||||
entitiesFallback: string[]
|
entitiesFallback: string[]
|
||||||
): object {
|
): SensorCardConfig {
|
||||||
const includeDomains = ["sensor"];
|
const includeDomains = ["sensor"];
|
||||||
const maxEntities = 1;
|
const maxEntities = 1;
|
||||||
const entityFilter = (stateObj: HassEntity): boolean => {
|
const entityFilter = (stateObj: HassEntity): boolean => {
|
||||||
@ -199,7 +199,7 @@ class HuiSensorCard extends LitElement implements LovelaceCard {
|
|||||||
entityFilter
|
entityFilter
|
||||||
);
|
);
|
||||||
|
|
||||||
return { entity: foundEntities[0] || "", graph: "line" };
|
return { type: "sensor", entity: foundEntities[0] || "", graph: "line" };
|
||||||
}
|
}
|
||||||
|
|
||||||
@property() public hass?: HomeAssistant;
|
@property() public hass?: HomeAssistant;
|
||||||
|
@ -37,8 +37,8 @@ class HuiShoppingListCard extends LitElement implements LovelaceCard {
|
|||||||
return document.createElement("hui-shopping-list-card-editor");
|
return document.createElement("hui-shopping-list-card-editor");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static getStubConfig(): object {
|
public static getStubConfig(): ShoppingListCardConfig {
|
||||||
return {};
|
return { type: "shopping-list" };
|
||||||
}
|
}
|
||||||
|
|
||||||
@property() public hass?: HomeAssistant;
|
@property() public hass?: HomeAssistant;
|
||||||
|
@ -60,7 +60,7 @@ export class HuiThermostatCard extends LitElement implements LovelaceCard {
|
|||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
entities: string[],
|
entities: string[],
|
||||||
entitiesFallback: string[]
|
entitiesFallback: string[]
|
||||||
): object {
|
): ThermostatCardConfig {
|
||||||
const includeDomains = ["climate"];
|
const includeDomains = ["climate"];
|
||||||
const maxEntities = 1;
|
const maxEntities = 1;
|
||||||
const foundEntities = findEntities(
|
const foundEntities = findEntities(
|
||||||
@ -71,7 +71,7 @@ export class HuiThermostatCard extends LitElement implements LovelaceCard {
|
|||||||
includeDomains
|
includeDomains
|
||||||
);
|
);
|
||||||
|
|
||||||
return { entity: foundEntities[0] || "" };
|
return { type: "thermostat", entity: foundEntities[0] || "" };
|
||||||
}
|
}
|
||||||
|
|
||||||
@property() public hass?: HomeAssistant;
|
@property() public hass?: HomeAssistant;
|
||||||
|
@ -77,7 +77,7 @@ class HuiWeatherForecastCard extends LitElement implements LovelaceCard {
|
|||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
entities: string[],
|
entities: string[],
|
||||||
entitiesFallback: string[]
|
entitiesFallback: string[]
|
||||||
): object {
|
): WeatherForecastCardConfig {
|
||||||
const includeDomains = ["weather"];
|
const includeDomains = ["weather"];
|
||||||
const maxEntities = 1;
|
const maxEntities = 1;
|
||||||
const foundEntities = findEntities(
|
const foundEntities = findEntities(
|
||||||
@ -88,7 +88,7 @@ class HuiWeatherForecastCard extends LitElement implements LovelaceCard {
|
|||||||
includeDomains
|
includeDomains
|
||||||
);
|
);
|
||||||
|
|
||||||
return { entity: foundEntities[0] || "" };
|
return { type: "weather-forecast", entity: foundEntities[0] || "" };
|
||||||
}
|
}
|
||||||
|
|
||||||
@property() public hass?: HomeAssistant;
|
@property() public hass?: HomeAssistant;
|
||||||
|
@ -39,7 +39,7 @@ export interface EntitiesCardConfig extends LovelaceCardConfig {
|
|||||||
type: "entities";
|
type: "entities";
|
||||||
show_header_toggle?: boolean;
|
show_header_toggle?: boolean;
|
||||||
title?: string;
|
title?: string;
|
||||||
entities: EntitiesCardEntityConfig[];
|
entities: Array<EntitiesCardEntityConfig | string>;
|
||||||
theme?: string;
|
theme?: string;
|
||||||
icon?: string;
|
icon?: string;
|
||||||
header?: LovelaceHeaderFooterConfig;
|
header?: LovelaceHeaderFooterConfig;
|
||||||
@ -135,8 +135,8 @@ export interface LightCardConfig extends LovelaceCardConfig {
|
|||||||
|
|
||||||
export interface MapCardConfig extends LovelaceCardConfig {
|
export interface MapCardConfig extends LovelaceCardConfig {
|
||||||
type: "map";
|
type: "map";
|
||||||
title: string;
|
title?: string;
|
||||||
aspect_ratio: string;
|
aspect_ratio?: string;
|
||||||
default_zoom?: number;
|
default_zoom?: number;
|
||||||
entities?: Array<EntityConfig | string>;
|
entities?: Array<EntityConfig | string>;
|
||||||
geo_location_sources?: string[];
|
geo_location_sources?: string[];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user