Add native select entity support.

This commit is contained in:
Dermot Duffy
2022-05-08 15:58:56 -07:00
parent c7462e7f4f
commit 28292483fc
6 changed files with 200 additions and 11 deletions
+13 -2
View File
@@ -436,12 +436,21 @@ const menuSubmenuItemSchema = elementsBaseSchema.extend({
});
export type MenuSubmenuItem = z.infer<typeof menuSubmenuItemSchema>;
export const menuSubmenuSchema = menuBaseSchema.merge(iconSchema).extend({
const menuSubmenuSchema = menuBaseSchema.merge(iconSchema).extend({
type: z.literal('custom:frigate-card-menu-submenu'),
items: menuSubmenuItemSchema.array(),
});
export type MenuSubmenu = z.infer<typeof menuSubmenuSchema>;
export type MenuItem = MenuIcon | MenuStateIcon | MenuSubmenu;
const menuSubmenuSelectSchema = menuBaseSchema.merge(stateIconSchema).extend({
type: z.literal('custom:frigate-card-menu-submenu-select'),
// Please ensure additions to this type are filtered out appropriately in
// `submenu.ts` when this is converted to a MenuSubmenu.
options: z.record(menuSubmenuItemSchema).optional(),
});
export type MenuSubmenuSelect = z.infer<typeof menuSubmenuSelectSchema>;
export type MenuItem = MenuIcon | MenuStateIcon | MenuSubmenu | MenuSubmenuSelect;
const frigateCardConditionSchema = z.object({
view: z.string().array().optional(),
@@ -464,6 +473,7 @@ const pictureElementSchema = z.union([
menuStateIconSchema,
menuIconSchema,
menuSubmenuSchema,
menuSubmenuSelectSchema,
frigateConditionalSchema,
stateBadgeIconSchema,
stateIconSchema,
@@ -1072,6 +1082,7 @@ const menuButtonSchema = z.discriminatedUnion('type', [
menuIconSchema,
menuStateIconSchema,
menuSubmenuSchema,
menuSubmenuSelectSchema,
]);
export type MenuButton = z.infer<typeof menuButtonSchema>;
export interface ExtendedHomeAssistant extends HomeAssistant {