Skip to content

Commit d4f5d91

Browse files
committed
Add template card using tile design
1 parent cd5e26c commit d4f5d91

File tree

15 files changed

+1474
-90
lines changed

15 files changed

+1474
-90
lines changed

src/cards/chips-card/chips-card-editor.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ import { MushroomBaseElement } from "../../utils/base-element";
2626
import { loadHaComponents } from "../../utils/loader";
2727
import { LovelaceChipConfig } from "../../utils/lovelace/chip/types";
2828
import {
29+
EditDetailElementEvent,
2930
EditorTarget,
30-
EditSubElementEvent,
3131
SubElementEditorConfig,
3232
} from "../../utils/lovelace/editor/types";
3333
import "../../utils/lovelace/sub-element-editor";
@@ -295,7 +295,7 @@ export class ChipsCardEditor
295295
fireEvent(this, "config-changed", { config: this._config });
296296
}
297297

298-
private _editDetailElement(ev: HASSDomEvent<EditSubElementEvent>): void {
298+
private _editDetailElement(ev: HASSDomEvent<EditDetailElementEvent>): void {
299299
this._subElementEditorConfig = ev.detail.subElementConfig;
300300
}
301301

src/cards/template-new-card/const.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { PREFIX_NAME } from "../../const";
2+
3+
export const TEMPLATE_CARD_NEW_NAME = `${PREFIX_NAME}-template-new-card`;
4+
export const TEMPLATE_CARD_NEW_EDITOR_NAME = `${TEMPLATE_CARD_NEW_NAME}-template-new-editor`;
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
import {
2+
any,
3+
array,
4+
assign,
5+
boolean,
6+
enums,
7+
object,
8+
optional,
9+
string,
10+
union,
11+
} from "superstruct";
12+
import { ActionConfig, actionConfigStruct, LovelaceCardConfig } from "../../ha";
13+
import { LovelaceCardFeatureConfig } from "../../ha/panels/lovelace/card-features/types";
14+
import { lovelaceCardConfigStruct } from "../../shared/config/lovelace-card-config";
15+
16+
export type MushroomBadgeConfig = {
17+
icon?: string;
18+
color?: string;
19+
position?: "top-start" | "top-end" | "bottom-start" | "bottom-end";
20+
};
21+
22+
export type TemplateNewCardConfig = LovelaceCardConfig & {
23+
entity?: string;
24+
// Content
25+
primary?: string;
26+
secondary?: string;
27+
color?: string;
28+
icon?: string;
29+
picture?: string;
30+
// Badges
31+
badge_icon?: string;
32+
badge_text?: string;
33+
badge_color?: string;
34+
// Style
35+
vertical?: boolean;
36+
multiline_secondary?: boolean;
37+
// Interactions
38+
tap_action?: ActionConfig;
39+
hold_action?: ActionConfig;
40+
double_tap_action?: ActionConfig;
41+
icon_tap_action?: ActionConfig;
42+
icon_hold_action?: ActionConfig;
43+
icon_double_tap_action?: ActionConfig;
44+
// Features
45+
features?: LovelaceCardFeatureConfig[];
46+
features_position?: "bottom" | "inline";
47+
// Entity IDs for template
48+
entity_id?: string | string[];
49+
};
50+
51+
export const templateNewCardConfigStruct = assign(
52+
lovelaceCardConfigStruct,
53+
object({
54+
entity: optional(string()),
55+
primary: optional(string()),
56+
secondary: optional(string()),
57+
color: optional(string()),
58+
icon: optional(string()),
59+
picture: optional(string()),
60+
// Badges
61+
badge_icon: optional(string()),
62+
badge_text: optional(string()),
63+
badge_color: optional(string()),
64+
// Style
65+
vertical: optional(boolean()),
66+
multiline_secondary: optional(boolean()),
67+
// Interactions
68+
tap_action: optional(actionConfigStruct),
69+
hold_action: optional(actionConfigStruct),
70+
double_tap_action: optional(actionConfigStruct),
71+
icon_tap_action: optional(actionConfigStruct),
72+
icon_hold_action: optional(actionConfigStruct),
73+
icon_double_tap_action: optional(actionConfigStruct),
74+
// Features
75+
features: optional(array(any())),
76+
features_position: optional(enums(["bottom", "inline"])),
77+
// Entity IDs for template
78+
entity_id: optional(union([string(), array(string())])),
79+
})
80+
);

0 commit comments

Comments
 (0)