Add view_layout to card structs, fix button entity row struct (#9834)

This commit is contained in:
Bram Kragten 2021-08-18 06:27:15 +02:00 committed by GitHub
parent 72773f3bc8
commit fb97a98b97
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
28 changed files with 388 additions and 248 deletions

View File

@ -3,7 +3,7 @@ import "@polymer/paper-item/paper-item";
import "@polymer/paper-listbox/paper-listbox"; import "@polymer/paper-listbox/paper-listbox";
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { array, assert, object, optional, string } from "superstruct"; import { array, assert, assign, object, optional, string } from "superstruct";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import "../../../../components/entity/ha-entity-picker"; import "../../../../components/entity/ha-entity-picker";
import "../../../../components/ha-icon"; import "../../../../components/ha-icon";
@ -11,16 +11,19 @@ import { HomeAssistant } from "../../../../types";
import { AlarmPanelCardConfig } from "../../cards/types"; import { AlarmPanelCardConfig } from "../../cards/types";
import "../../components/hui-theme-select-editor"; import "../../components/hui-theme-select-editor";
import { LovelaceCardEditor } from "../../types"; import { LovelaceCardEditor } from "../../types";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
import { EditorTarget, EntitiesEditorEvent } from "../types"; import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
entity: optional(string()), entity: optional(string()),
name: optional(string()), name: optional(string()),
states: optional(array()), states: optional(array()),
theme: optional(string()), theme: optional(string()),
}); })
);
const includeDomains = ["alarm_control_panel"]; const includeDomains = ["alarm_control_panel"];

View File

@ -1,7 +1,7 @@
import "@polymer/paper-input/paper-input"; import "@polymer/paper-input/paper-input";
import { CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { assert, boolean, object, optional, string } from "superstruct"; import { assert, boolean, object, optional, string, assign } from "superstruct";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import { stateIcon } from "../../../../common/entity/state_icon"; import { stateIcon } from "../../../../common/entity/state_icon";
import { computeRTLDirection } from "../../../../common/util/compute_rtl"; import { computeRTLDirection } from "../../../../common/util/compute_rtl";
@ -18,9 +18,11 @@ import { LovelaceCardEditor } from "../../types";
import { actionConfigStruct } from "../structs/action-struct"; import { actionConfigStruct } from "../structs/action-struct";
import { EditorTarget } from "../types"; import { EditorTarget } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
entity: optional(string()), entity: optional(string()),
name: optional(string()), name: optional(string()),
show_name: optional(boolean()), show_name: optional(boolean()),
@ -31,7 +33,8 @@ const cardConfigStruct = object({
hold_action: optional(actionConfigStruct), hold_action: optional(actionConfigStruct),
theme: optional(string()), theme: optional(string()),
show_state: optional(boolean()), show_state: optional(boolean()),
}); })
);
const actions = [ const actions = [
"more-info", "more-info",

View File

@ -3,6 +3,7 @@ import { customElement, property, state } from "lit/decorators";
import { import {
array, array,
assert, assert,
assign,
boolean, boolean,
object, object,
optional, optional,
@ -18,14 +19,17 @@ import "../../components/hui-theme-select-editor";
import type { LovelaceCardEditor } from "../../types"; import type { LovelaceCardEditor } from "../../types";
import type { EditorTarget, EntitiesEditorEvent } from "../types"; import type { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
title: optional(union([string(), boolean()])), title: optional(union([string(), boolean()])),
initial_view: optional(string()), initial_view: optional(string()),
theme: optional(string()), theme: optional(string()),
entities: array(string()), entities: array(string()),
}); })
);
const views = ["dayGridMonth", "dayGridDay", "listWeek"]; const views = ["dayGridMonth", "dayGridDay", "listWeek"];

View File

@ -3,7 +3,15 @@ import "@material/mwc-tab/mwc-tab";
import type { MDCTabBarActivatedEvent } from "@material/tab-bar"; import type { MDCTabBarActivatedEvent } from "@material/tab-bar";
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state, query } from "lit/decorators"; import { customElement, property, state, query } from "lit/decorators";
import { any, array, assert, object, optional, string } from "superstruct"; import {
any,
array,
assert,
assign,
object,
optional,
string,
} from "superstruct";
import { fireEvent, HASSDomEvent } from "../../../../common/dom/fire_event"; import { fireEvent, HASSDomEvent } from "../../../../common/dom/fire_event";
import "../../../../components/entity/ha-entity-picker"; import "../../../../components/entity/ha-entity-picker";
import { LovelaceCardConfig, LovelaceConfig } from "../../../../data/lovelace"; import { LovelaceCardConfig, LovelaceConfig } from "../../../../data/lovelace";
@ -15,6 +23,7 @@ import type { HuiCardElementEditor } from "../card-editor/hui-card-element-edito
import "../card-editor/hui-card-picker"; import "../card-editor/hui-card-picker";
import "../hui-element-editor"; import "../hui-element-editor";
import type { ConfigChangedEvent } from "../hui-element-editor"; import type { ConfigChangedEvent } from "../hui-element-editor";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
import { GUIModeChangedEvent } from "../types"; import { GUIModeChangedEvent } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
@ -23,11 +32,13 @@ const conditionStruct = object({
state: optional(string()), state: optional(string()),
state_not: optional(string()), state_not: optional(string()),
}); });
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
card: any(), card: any(),
conditions: optional(array(conditionStruct)), conditions: optional(array(conditionStruct)),
}); })
);
@customElement("hui-conditional-card-editor") @customElement("hui-conditional-card-editor")
export class HuiConditionalCardEditor export class HuiConditionalCardEditor

View File

@ -9,6 +9,7 @@ import {
array, array,
assert, assert,
boolean, boolean,
assign,
literal, literal,
number, number,
object, object,
@ -44,10 +45,13 @@ import {
SubElementEditorConfig, SubElementEditorConfig,
} from "../types"; } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
const buttonEntitiesRowConfigStruct = object({ const buttonEntitiesRowConfigStruct = object({
type: literal("button"), type: literal("button"),
name: string(), entity: optional(string()),
name: optional(string()),
icon: optional(string()),
action_name: optional(string()), action_name: optional(string()),
tap_action: actionConfigStruct, tap_action: actionConfigStruct,
hold_action: optional(actionConfigStruct), hold_action: optional(actionConfigStruct),
@ -107,9 +111,14 @@ const buttonsEntitiesRowConfigStruct = object({
union([ union([
object({ object({
entity: string(), entity: string(),
name: optional(string()),
icon: optional(string()), icon: optional(string()),
image: optional(string()), image: optional(string()),
name: optional(string()), show_name: optional(boolean()),
show_icon: optional(boolean()),
tap_action: optional(actionConfigStruct),
hold_action: optional(actionConfigStruct),
double_tap_action: optional(actionConfigStruct),
}), }),
string(), string(),
]) ])
@ -151,8 +160,9 @@ const entitiesRowConfigStruct = union([
customRowConfigStruct, customRowConfigStruct,
]); ]);
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
title: optional(union([string(), boolean()])), title: optional(union([string(), boolean()])),
entity: optional(entityId()), entity: optional(entityId()),
theme: optional(string()), theme: optional(string()),
@ -162,7 +172,8 @@ const cardConfigStruct = object({
entities: array(entitiesRowConfigStruct), entities: array(entitiesRowConfigStruct),
header: optional(headerFooterConfigStructs), header: optional(headerFooterConfigStructs),
footer: optional(headerFooterConfigStructs), footer: optional(headerFooterConfigStructs),
}); })
);
@customElement("hui-entities-card-editor") @customElement("hui-entities-card-editor")
export class HuiEntitiesCardEditor export class HuiEntitiesCardEditor

View File

@ -1,7 +1,7 @@
import "@polymer/paper-input/paper-input"; import "@polymer/paper-input/paper-input";
import { CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { assert, object, optional, string } from "superstruct"; import { assert, object, optional, string, assign } from "superstruct";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import { stateIcon } from "../../../../common/entity/state_icon"; import { stateIcon } from "../../../../common/entity/state_icon";
import "../../../../components/entity/ha-entity-attribute-picker"; import "../../../../components/entity/ha-entity-attribute-picker";
@ -15,9 +15,11 @@ import { headerFooterConfigStructs } from "../../header-footer/structs";
import { LovelaceCardEditor } from "../../types"; import { LovelaceCardEditor } from "../../types";
import { EditorTarget, EntitiesEditorEvent } from "../types"; import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
entity: optional(string()), entity: optional(string()),
name: optional(string()), name: optional(string()),
icon: optional(string()), icon: optional(string()),
@ -25,7 +27,8 @@ const cardConfigStruct = object({
unit: optional(string()), unit: optional(string()),
theme: optional(string()), theme: optional(string()),
footer: optional(headerFooterConfigStructs), footer: optional(headerFooterConfigStructs),
}); })
);
@customElement("hui-entity-card-editor") @customElement("hui-entity-card-editor")
export class HuiEntityCardEditor export class HuiEntityCardEditor

View File

@ -1,7 +1,15 @@
import "@polymer/paper-input/paper-input"; import "@polymer/paper-input/paper-input";
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { assert, boolean, number, object, optional, string } from "superstruct"; import {
assert,
assign,
boolean,
number,
object,
optional,
string,
} from "superstruct";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import { computeRTLDirection } from "../../../../common/util/compute_rtl"; import { computeRTLDirection } from "../../../../common/util/compute_rtl";
import "../../../../components/ha-formfield"; import "../../../../components/ha-formfield";
@ -11,11 +19,13 @@ import { GaugeCardConfig, SeverityConfig } from "../../cards/types";
import "../../components/hui-entity-editor"; import "../../components/hui-entity-editor";
import "../../components/hui-theme-select-editor"; import "../../components/hui-theme-select-editor";
import { LovelaceCardEditor } from "../../types"; import { LovelaceCardEditor } from "../../types";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
import { EditorTarget, EntitiesEditorEvent } from "../types"; import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
name: optional(string()), name: optional(string()),
entity: optional(string()), entity: optional(string()),
unit: optional(string()), unit: optional(string()),
@ -24,7 +34,8 @@ const cardConfigStruct = object({
severity: optional(object()), severity: optional(object()),
theme: optional(string()), theme: optional(string()),
needle: optional(boolean()), needle: optional(boolean()),
}); })
);
const includeDomains = ["counter", "input_number", "number", "sensor"]; const includeDomains = ["counter", "input_number", "number", "sensor"];

View File

@ -12,6 +12,7 @@ import {
optional, optional,
string, string,
union, union,
assign,
} from "superstruct"; } from "superstruct";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import { computeRTLDirection } from "../../../../common/util/compute_rtl"; import { computeRTLDirection } from "../../../../common/util/compute_rtl";
@ -29,9 +30,11 @@ import { processEditorEntities } from "../process-editor-entities";
import { entitiesConfigStruct } from "../structs/entities-struct"; import { entitiesConfigStruct } from "../structs/entities-struct";
import { EditorTarget, EntitiesEditorEvent } from "../types"; import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
title: optional(union([string(), number()])), title: optional(union([string(), number()])),
theme: optional(string()), theme: optional(string()),
columns: optional(number()), columns: optional(number()),
@ -40,7 +43,8 @@ const cardConfigStruct = object({
show_icon: optional(boolean()), show_icon: optional(boolean()),
state_color: optional(boolean()), state_color: optional(boolean()),
entities: array(entitiesConfigStruct), entities: array(entitiesConfigStruct),
}); })
);
@customElement("hui-glance-card-editor") @customElement("hui-glance-card-editor")
export class HuiGlanceCardEditor export class HuiGlanceCardEditor

View File

@ -4,6 +4,7 @@ import {
any, any,
array, array,
assert, assert,
assign,
boolean, boolean,
number, number,
object, object,
@ -13,15 +14,18 @@ import {
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import { computeRTLDirection } from "../../../../common/util/compute_rtl"; import { computeRTLDirection } from "../../../../common/util/compute_rtl";
import { GridCardConfig } from "../../cards/types"; import { GridCardConfig } from "../../cards/types";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
import { HuiStackCardEditor } from "./hui-stack-card-editor"; import { HuiStackCardEditor } from "./hui-stack-card-editor";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
cards: array(any()), cards: array(any()),
title: optional(string()), title: optional(string()),
square: optional(boolean()), square: optional(boolean()),
columns: optional(number()), columns: optional(number()),
}); })
);
@customElement("hui-grid-card-editor") @customElement("hui-grid-card-editor")
export class HuiGridCardEditor extends HuiStackCardEditor { export class HuiGridCardEditor extends HuiStackCardEditor {

View File

@ -1,7 +1,15 @@
import "@polymer/paper-input/paper-input"; import "@polymer/paper-input/paper-input";
import { CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { array, assert, number, object, optional, string } from "superstruct"; import {
array,
assert,
number,
object,
optional,
string,
assign,
} from "superstruct";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import { HomeAssistant } from "../../../../types"; import { HomeAssistant } from "../../../../types";
import { HistoryGraphCardConfig } from "../../cards/types"; import { HistoryGraphCardConfig } from "../../cards/types";
@ -12,14 +20,17 @@ import { processEditorEntities } from "../process-editor-entities";
import { entitiesConfigStruct } from "../structs/entities-struct"; import { entitiesConfigStruct } from "../structs/entities-struct";
import { EditorTarget, EntitiesEditorEvent } from "../types"; import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
entities: array(entitiesConfigStruct), entities: array(entitiesConfigStruct),
title: optional(string()), title: optional(string()),
hours_to_show: optional(number()), hours_to_show: optional(number()),
refresh_interval: optional(number()), refresh_interval: optional(number()),
}); })
);
@customElement("hui-history-graph-card-editor") @customElement("hui-history-graph-card-editor")
export class HuiHistoryGraphCardEditor export class HuiHistoryGraphCardEditor

View File

@ -1,22 +1,25 @@
import "@polymer/paper-input/paper-input"; import "@polymer/paper-input/paper-input";
import { CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { assert, object, optional, string } from "superstruct"; import { assert, assign, object, optional, string } from "superstruct";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import "../../../../components/entity/ha-entity-picker"; import "../../../../components/entity/ha-entity-picker";
import { HomeAssistant } from "../../../../types"; import { HomeAssistant } from "../../../../types";
import { HumidifierCardConfig } from "../../cards/types"; import { HumidifierCardConfig } from "../../cards/types";
import "../../components/hui-theme-select-editor"; import "../../components/hui-theme-select-editor";
import { LovelaceCardEditor } from "../../types"; import { LovelaceCardEditor } from "../../types";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
import { EditorTarget, EntitiesEditorEvent } from "../types"; import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
entity: optional(string()), entity: optional(string()),
name: optional(string()), name: optional(string()),
theme: optional(string()), theme: optional(string()),
}); })
);
const includeDomains = ["humidifier"]; const includeDomains = ["humidifier"];

View File

@ -1,20 +1,23 @@
import "@polymer/paper-input/paper-input"; import "@polymer/paper-input/paper-input";
import { CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { assert, object, optional, string } from "superstruct"; import { assert, assign, object, optional, string } from "superstruct";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import { HomeAssistant } from "../../../../types"; import { HomeAssistant } from "../../../../types";
import { IframeCardConfig } from "../../cards/types"; import { IframeCardConfig } from "../../cards/types";
import { LovelaceCardEditor } from "../../types"; import { LovelaceCardEditor } from "../../types";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
import { EditorTarget, EntitiesEditorEvent } from "../types"; import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
title: optional(string()), title: optional(string()),
url: optional(string()), url: optional(string()),
aspect_ratio: optional(string()), aspect_ratio: optional(string()),
}); })
);
@customElement("hui-iframe-card-editor") @customElement("hui-iframe-card-editor")
export class HuiIframeCardEditor export class HuiIframeCardEditor

View File

@ -1,7 +1,7 @@
import "@polymer/paper-input/paper-input"; import "@polymer/paper-input/paper-input";
import { CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { assert, object, optional, string } from "superstruct"; import { assert, object, optional, string, assign } from "superstruct";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import { stateIcon } from "../../../../common/entity/state_icon"; import { stateIcon } from "../../../../common/entity/state_icon";
import "../../../../components/ha-icon-input"; import "../../../../components/ha-icon-input";
@ -15,16 +15,19 @@ import { LovelaceCardEditor } from "../../types";
import { actionConfigStruct } from "../structs/action-struct"; import { actionConfigStruct } from "../structs/action-struct";
import { EditorTarget } from "../types"; import { EditorTarget } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
name: optional(string()), name: optional(string()),
entity: optional(string()), entity: optional(string()),
theme: optional(string()), theme: optional(string()),
icon: optional(string()), icon: optional(string()),
hold_action: optional(actionConfigStruct), hold_action: optional(actionConfigStruct),
double_tap_action: optional(actionConfigStruct), double_tap_action: optional(actionConfigStruct),
}); })
);
const includeDomains = ["light"]; const includeDomains = ["light"];

View File

@ -1,7 +1,15 @@
import "@polymer/paper-input/paper-input"; import "@polymer/paper-input/paper-input";
import { CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { array, assert, number, object, optional, string } from "superstruct"; import {
array,
assert,
assign,
number,
object,
optional,
string,
} from "superstruct";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import "../../../../components/entity/ha-entities-picker"; import "../../../../components/entity/ha-entities-picker";
import "../../../../components/entity/ha-entity-picker"; import "../../../../components/entity/ha-entity-picker";
@ -10,16 +18,19 @@ import { LogbookCardConfig } from "../../cards/types";
import "../../components/hui-entity-editor"; import "../../components/hui-entity-editor";
import "../../components/hui-theme-select-editor"; import "../../components/hui-theme-select-editor";
import { LovelaceCardEditor } from "../../types"; import { LovelaceCardEditor } from "../../types";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
import { EditorTarget } from "../types"; import { EditorTarget } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
entities: optional(array(string())), entities: optional(array(string())),
title: optional(string()), title: optional(string()),
hours_to_show: optional(number()), hours_to_show: optional(number()),
theme: optional(string()), theme: optional(string()),
}); })
);
@customElement("hui-logbook-card-editor") @customElement("hui-logbook-card-editor")
export class HuiLogbookCardEditor export class HuiLogbookCardEditor

View File

@ -9,6 +9,7 @@ import {
object, object,
optional, optional,
string, string,
assign,
} from "superstruct"; } from "superstruct";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import { computeRTLDirection } from "../../../../common/util/compute_rtl"; import { computeRTLDirection } from "../../../../common/util/compute_rtl";
@ -25,9 +26,11 @@ import { processEditorEntities } from "../process-editor-entities";
import { entitiesConfigStruct } from "../structs/entities-struct"; import { entitiesConfigStruct } from "../structs/entities-struct";
import { EditorTarget, EntitiesEditorEvent } from "../types"; import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
title: optional(string()), title: optional(string()),
aspect_ratio: optional(string()), aspect_ratio: optional(string()),
default_zoom: optional(number()), default_zoom: optional(number()),
@ -35,7 +38,8 @@ const cardConfigStruct = object({
entities: array(entitiesConfigStruct), entities: array(entitiesConfigStruct),
hours_to_show: optional(number()), hours_to_show: optional(number()),
geo_location_sources: optional(array(string())), geo_location_sources: optional(array(string())),
}); })
);
@customElement("hui-map-card-editor") @customElement("hui-map-card-editor")
export class HuiMapCardEditor extends LitElement implements LovelaceCardEditor { export class HuiMapCardEditor extends LitElement implements LovelaceCardEditor {

View File

@ -2,21 +2,24 @@ import "@polymer/paper-input/paper-input";
import "@polymer/paper-input/paper-textarea"; import "@polymer/paper-input/paper-textarea";
import { CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { assert, object, optional, string } from "superstruct"; import { assert, assign, object, optional, string } from "superstruct";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import { HomeAssistant } from "../../../../types"; import { HomeAssistant } from "../../../../types";
import { MarkdownCardConfig } from "../../cards/types"; import { MarkdownCardConfig } from "../../cards/types";
import "../../components/hui-theme-select-editor"; import "../../components/hui-theme-select-editor";
import { LovelaceCardEditor } from "../../types"; import { LovelaceCardEditor } from "../../types";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
import { EditorTarget, EntitiesEditorEvent } from "../types"; import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
title: optional(string()), title: optional(string()),
content: string(), content: string(),
theme: optional(string()), theme: optional(string()),
}); })
);
@customElement("hui-markdown-card-editor") @customElement("hui-markdown-card-editor")
export class HuiMarkdownCardEditor export class HuiMarkdownCardEditor

View File

@ -1,19 +1,22 @@
import { html, LitElement, TemplateResult } from "lit"; import { html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { assert, object, optional, string } from "superstruct"; import { assert, assign, object, optional, string } from "superstruct";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import "../../../../components/entity/ha-entity-picker"; import "../../../../components/entity/ha-entity-picker";
import { HomeAssistant } from "../../../../types"; import { HomeAssistant } from "../../../../types";
import { MediaControlCardConfig } from "../../cards/types"; import { MediaControlCardConfig } from "../../cards/types";
import "../../components/hui-theme-select-editor"; import "../../components/hui-theme-select-editor";
import { LovelaceCardEditor } from "../../types"; import { LovelaceCardEditor } from "../../types";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
import { EditorTarget, EntitiesEditorEvent } from "../types"; import { EditorTarget, EntitiesEditorEvent } from "../types";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
entity: optional(string()), entity: optional(string()),
theme: optional(string()), theme: optional(string()),
}); })
);
const includeDomains = ["media_player"]; const includeDomains = ["media_player"];

View File

@ -1,7 +1,7 @@
import "@polymer/paper-input/paper-input"; import "@polymer/paper-input/paper-input";
import { CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { assert, object, optional, string } from "superstruct"; import { assert, object, optional, string, assign } from "superstruct";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import { ActionConfig } from "../../../../data/lovelace"; import { ActionConfig } from "../../../../data/lovelace";
import { HomeAssistant } from "../../../../types"; import { HomeAssistant } from "../../../../types";
@ -12,14 +12,17 @@ import { LovelaceCardEditor } from "../../types";
import { actionConfigStruct } from "../structs/action-struct"; import { actionConfigStruct } from "../structs/action-struct";
import { EditorTarget } from "../types"; import { EditorTarget } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
image: optional(string()), image: optional(string()),
tap_action: optional(actionConfigStruct), tap_action: optional(actionConfigStruct),
hold_action: optional(actionConfigStruct), hold_action: optional(actionConfigStruct),
theme: optional(string()), theme: optional(string()),
}); })
);
@customElement("hui-picture-card-editor") @customElement("hui-picture-card-editor")
export class HuiPictureCardEditor export class HuiPictureCardEditor

View File

@ -4,7 +4,7 @@ import "@polymer/paper-item/paper-item";
import "@polymer/paper-listbox/paper-listbox"; import "@polymer/paper-listbox/paper-listbox";
import { CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { assert, boolean, object, optional, string } from "superstruct"; import { assert, boolean, object, optional, string, assign } from "superstruct";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import { computeRTLDirection } from "../../../../common/util/compute_rtl"; import { computeRTLDirection } from "../../../../common/util/compute_rtl";
import "../../../../components/ha-formfield"; import "../../../../components/ha-formfield";
@ -19,9 +19,11 @@ import { LovelaceCardEditor } from "../../types";
import { actionConfigStruct } from "../structs/action-struct"; import { actionConfigStruct } from "../structs/action-struct";
import { EditorTarget } from "../types"; import { EditorTarget } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
entity: optional(string()), entity: optional(string()),
image: optional(string()), image: optional(string()),
name: optional(string()), name: optional(string()),
@ -33,7 +35,8 @@ const cardConfigStruct = object({
show_name: optional(boolean()), show_name: optional(boolean()),
show_state: optional(boolean()), show_state: optional(boolean()),
theme: optional(string()), theme: optional(string()),
}); })
);
const includeDomains = ["camera"]; const includeDomains = ["camera"];

View File

@ -4,7 +4,7 @@ import "@polymer/paper-item/paper-item";
import "@polymer/paper-listbox/paper-listbox"; import "@polymer/paper-listbox/paper-listbox";
import { CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { array, assert, object, optional, string } from "superstruct"; import { array, assert, object, optional, string, assign } from "superstruct";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import "../../../../components/entity/ha-entity-picker"; import "../../../../components/entity/ha-entity-picker";
import { ActionConfig } from "../../../../data/lovelace"; import { ActionConfig } from "../../../../data/lovelace";
@ -20,9 +20,11 @@ import { actionConfigStruct } from "../structs/action-struct";
import { entitiesConfigStruct } from "../structs/entities-struct"; import { entitiesConfigStruct } from "../structs/entities-struct";
import { EditorTarget } from "../types"; import { EditorTarget } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
title: optional(string()), title: optional(string()),
entity: optional(string()), entity: optional(string()),
image: optional(string()), image: optional(string()),
@ -33,7 +35,8 @@ const cardConfigStruct = object({
hold_action: optional(actionConfigStruct), hold_action: optional(actionConfigStruct),
entities: array(entitiesConfigStruct), entities: array(entitiesConfigStruct),
theme: optional(string()), theme: optional(string()),
}); })
);
const includeDomains = ["camera"]; const includeDomains = ["camera"];

View File

@ -1,7 +1,7 @@
import "@polymer/paper-input/paper-input"; import "@polymer/paper-input/paper-input";
import { CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { assert, object, optional, string } from "superstruct"; import { assert, assign, object, optional, string } from "superstruct";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import "../../../../components/entity/ha-entity-picker"; import "../../../../components/entity/ha-entity-picker";
import "../../../../components/ha-icon"; import "../../../../components/ha-icon";
@ -9,15 +9,18 @@ import { HomeAssistant } from "../../../../types";
import { PlantStatusCardConfig } from "../../cards/types"; import { PlantStatusCardConfig } from "../../cards/types";
import "../../components/hui-theme-select-editor"; import "../../components/hui-theme-select-editor";
import { LovelaceCardEditor } from "../../types"; import { LovelaceCardEditor } from "../../types";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
import { EditorTarget, EntitiesEditorEvent } from "../types"; import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
entity: optional(string()), entity: optional(string()),
name: optional(string()), name: optional(string()),
theme: optional(string()), theme: optional(string()),
}); })
);
const includeDomains = ["plant"]; const includeDomains = ["plant"];

View File

@ -4,7 +4,7 @@ import "@polymer/paper-item/paper-item";
import "@polymer/paper-listbox/paper-listbox"; import "@polymer/paper-listbox/paper-listbox";
import { CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { assert, number, object, optional, string } from "superstruct"; import { assert, assign, number, object, optional, string } from "superstruct";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import { stateIcon } from "../../../../common/entity/state_icon"; import { stateIcon } from "../../../../common/entity/state_icon";
import "../../../../components/entity/ha-entity-picker"; import "../../../../components/entity/ha-entity-picker";
@ -15,11 +15,13 @@ import { HomeAssistant } from "../../../../types";
import { SensorCardConfig } from "../../cards/types"; import { SensorCardConfig } from "../../cards/types";
import "../../components/hui-theme-select-editor"; import "../../components/hui-theme-select-editor";
import { LovelaceCardEditor } from "../../types"; import { LovelaceCardEditor } from "../../types";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
import { EditorTarget, EntitiesEditorEvent } from "../types"; import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
entity: optional(string()), entity: optional(string()),
name: optional(string()), name: optional(string()),
icon: optional(string()), icon: optional(string()),
@ -28,7 +30,8 @@ const cardConfigStruct = object({
detail: optional(number()), detail: optional(number()),
theme: optional(string()), theme: optional(string()),
hours_to_show: optional(number()), hours_to_show: optional(number()),
}); })
);
const includeDomains = ["counter", "input_number", "number", "sensor"]; const includeDomains = ["counter", "input_number", "number", "sensor"];

View File

@ -1,20 +1,23 @@
import "@polymer/paper-input/paper-input"; import "@polymer/paper-input/paper-input";
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { assert, object, optional, string } from "superstruct"; import { assert, assign, object, optional, string } from "superstruct";
import { isComponentLoaded } from "../../../../common/config/is_component_loaded"; import { isComponentLoaded } from "../../../../common/config/is_component_loaded";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import { HomeAssistant } from "../../../../types"; import { HomeAssistant } from "../../../../types";
import { ShoppingListCardConfig } from "../../cards/types"; import { ShoppingListCardConfig } from "../../cards/types";
import "../../components/hui-theme-select-editor"; import "../../components/hui-theme-select-editor";
import { LovelaceCardEditor } from "../../types"; import { LovelaceCardEditor } from "../../types";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
import { EditorTarget, EntitiesEditorEvent } from "../types"; import { EditorTarget, EntitiesEditorEvent } from "../types";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
title: optional(string()), title: optional(string()),
theme: optional(string()), theme: optional(string()),
}); })
);
@customElement("hui-shopping-list-card-editor") @customElement("hui-shopping-list-card-editor")
export class HuiShoppingListEditor export class HuiShoppingListEditor

View File

@ -3,7 +3,15 @@ import "@polymer/paper-tabs";
import "@polymer/paper-tabs/paper-tab"; import "@polymer/paper-tabs/paper-tab";
import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { css, CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state, query } from "lit/decorators"; import { customElement, property, state, query } from "lit/decorators";
import { any, array, assert, object, optional, string } from "superstruct"; import {
any,
array,
assert,
assign,
object,
optional,
string,
} from "superstruct";
import { fireEvent, HASSDomEvent } from "../../../../common/dom/fire_event"; import { fireEvent, HASSDomEvent } from "../../../../common/dom/fire_event";
import { LovelaceCardConfig, LovelaceConfig } from "../../../../data/lovelace"; import { LovelaceCardConfig, LovelaceConfig } from "../../../../data/lovelace";
import { HomeAssistant } from "../../../../types"; import { HomeAssistant } from "../../../../types";
@ -13,14 +21,17 @@ import "../card-editor/hui-card-element-editor";
import type { HuiCardElementEditor } from "../card-editor/hui-card-element-editor"; import type { HuiCardElementEditor } from "../card-editor/hui-card-element-editor";
import "../card-editor/hui-card-picker"; import "../card-editor/hui-card-picker";
import type { ConfigChangedEvent } from "../hui-element-editor"; import type { ConfigChangedEvent } from "../hui-element-editor";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
import { GUIModeChangedEvent } from "../types"; import { GUIModeChangedEvent } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
cards: array(any()), cards: array(any()),
title: optional(string()), title: optional(string()),
}); })
);
@customElement("hui-stack-card-editor") @customElement("hui-stack-card-editor")
export class HuiStackCardEditor export class HuiStackCardEditor

View File

@ -10,6 +10,7 @@ import {
optional, optional,
string, string,
union, union,
assign,
} from "superstruct"; } from "superstruct";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import { HomeAssistant } from "../../../../types"; import { HomeAssistant } from "../../../../types";
@ -25,6 +26,7 @@ import "../../../../components/ha-checkbox";
import { StatisticType } from "../../../../data/history"; import { StatisticType } from "../../../../data/history";
import "../../../../components/ha-radio"; import "../../../../components/ha-radio";
import type { HaRadio } from "../../../../components/ha-radio"; import type { HaRadio } from "../../../../components/ha-radio";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
const statTypeStruct = union([ const statTypeStruct = union([
literal("sum"), literal("sum"),
@ -33,14 +35,16 @@ const statTypeStruct = union([
literal("mean"), literal("mean"),
]); ]);
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
entities: array(entitiesConfigStruct), entities: array(entitiesConfigStruct),
title: optional(string()), title: optional(string()),
days_to_show: optional(number()), days_to_show: optional(number()),
chart_type: optional(union([literal("bar"), literal("line")])), chart_type: optional(union([literal("bar"), literal("line")])),
stat_types: optional(union([array(statTypeStruct), statTypeStruct])), stat_types: optional(union([array(statTypeStruct), statTypeStruct])),
}); })
);
@customElement("hui-statistics-graph-card-editor") @customElement("hui-statistics-graph-card-editor")
export class HuiStatisticsGraphCardEditor export class HuiStatisticsGraphCardEditor

View File

@ -1,22 +1,25 @@
import "@polymer/paper-input/paper-input"; import "@polymer/paper-input/paper-input";
import { CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { assert, object, optional, string } from "superstruct"; import { assert, assign, object, optional, string } from "superstruct";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import "../../../../components/entity/ha-entity-picker"; import "../../../../components/entity/ha-entity-picker";
import { HomeAssistant } from "../../../../types"; import { HomeAssistant } from "../../../../types";
import { ThermostatCardConfig } from "../../cards/types"; import { ThermostatCardConfig } from "../../cards/types";
import "../../components/hui-theme-select-editor"; import "../../components/hui-theme-select-editor";
import { LovelaceCardEditor } from "../../types"; import { LovelaceCardEditor } from "../../types";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
import { EditorTarget, EntitiesEditorEvent } from "../types"; import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
entity: optional(string()), entity: optional(string()),
name: optional(string()), name: optional(string()),
theme: optional(string()), theme: optional(string()),
}); })
);
const includeDomains = ["climate"]; const includeDomains = ["climate"];

View File

@ -1,6 +1,6 @@
import { CSSResultGroup, html, LitElement, TemplateResult } from "lit"; import { CSSResultGroup, html, LitElement, TemplateResult } from "lit";
import { customElement, property, state } from "lit/decorators"; import { customElement, property, state } from "lit/decorators";
import { assert, boolean, object, optional, string } from "superstruct"; import { assert, boolean, object, optional, string, assign } from "superstruct";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import { computeRTLDirection } from "../../../../common/util/compute_rtl"; import { computeRTLDirection } from "../../../../common/util/compute_rtl";
import "../../../../components/entity/ha-entity-attribute-picker"; import "../../../../components/entity/ha-entity-attribute-picker";
@ -14,9 +14,11 @@ import { LovelaceCardEditor } from "../../types";
import { actionConfigStruct } from "../structs/action-struct"; import { actionConfigStruct } from "../structs/action-struct";
import { EditorTarget, EntitiesEditorEvent } from "../types"; import { EditorTarget, EntitiesEditorEvent } from "../types";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
import { baseLovelaceCardConfig } from "../structs/base-card-struct";
const cardConfigStruct = object({ const cardConfigStruct = assign(
type: string(), baseLovelaceCardConfig,
object({
entity: optional(string()), entity: optional(string()),
name: optional(string()), name: optional(string()),
theme: optional(string()), theme: optional(string()),
@ -25,7 +27,8 @@ const cardConfigStruct = object({
tap_action: optional(actionConfigStruct), tap_action: optional(actionConfigStruct),
hold_action: optional(actionConfigStruct), hold_action: optional(actionConfigStruct),
double_tap_action: optional(actionConfigStruct), double_tap_action: optional(actionConfigStruct),
}); })
);
const includeDomains = ["weather"]; const includeDomains = ["weather"];

View File

@ -0,0 +1,6 @@
import { object, string, any } from "superstruct";
export const baseLovelaceCardConfig = object({
type: string(),
view_layout: any(),
});