Do not require all title popup options be specified.

This commit is contained in:
Dermot Duffy
2023-10-03 19:53:02 -07:00
parent 6bba16cb86
commit 913355ad1d
3 changed files with 36 additions and 11 deletions
+8 -1
View File
@@ -64,7 +64,14 @@ export class FrigateCardTitleControl extends LitElement {
protected _toastRef: Ref<PaperToast> = createRef(); protected _toastRef: Ref<PaperToast> = createRef();
protected render(): TemplateResult { protected render(): TemplateResult {
if (!this.text || !this.config || this.config.mode == 'none' || !this.fitInto) { if (
!this.text ||
!this.config ||
!this.config.mode ||
this.config.duration_seconds === undefined ||
this.config.mode === 'none' ||
!this.fitInto
) {
return html``; return html``;
} }
+11 -9
View File
@@ -390,7 +390,7 @@ export const conditionalSchema = z.object({
export const customSchema = z export const customSchema = z
.object({ .object({
// Insist that Frigate card custom elements are handled by other schemas. // Insist that Frigate card custom elements are handled by other schemas.
type: z.string().superRefine((val, ctx) => { type: z.string().superRefine((val, ctx) => {
if (!val.match(/^custom:(?!frigate-card).+/)) { if (!val.match(/^custom:(?!frigate-card).+/)) {
ctx.addIssue({ ctx.addIssue({
code: z.ZodIssueCode.custom, code: z.ZodIssueCode.custom,
@@ -723,14 +723,16 @@ export type NextPreviousControlConfig = z.infer<typeof nextPreviousControlConfig
// ************************************************************************* // *************************************************************************
const titleControlConfigSchema = z.object({ const titleControlConfigSchema = z.object({
mode: z.enum([ mode: z
'none', .enum([
'popup-top-right', 'none',
'popup-top-left', 'popup-top-right',
'popup-bottom-right', 'popup-top-left',
'popup-bottom-left', 'popup-bottom-right',
]), 'popup-bottom-left',
duration_seconds: z.number().min(0).max(60), ])
.optional(),
duration_seconds: z.number().min(0).max(60).optional(),
}); });
export type TitleControlConfig = z.infer<typeof titleControlConfigSchema>; export type TitleControlConfig = z.infer<typeof titleControlConfigSchema>;
+17 -1
View File
@@ -4,7 +4,7 @@ import {
customSchema, customSchema,
dimensionsConfigSchema, dimensionsConfigSchema,
frigateCardCustomActionsBaseSchema, frigateCardCustomActionsBaseSchema,
frigateCardPTZSchema frigateCardPTZSchema,
} from '../../src/config/types'; } from '../../src/config/types';
import { createConfig } from '../test-utils'; import { createConfig } from '../test-utils';
@@ -419,3 +419,19 @@ describe('should handle custom frigate elements', () => {
expect(result.success).toBeTruthy(); expect(result.success).toBeTruthy();
}); });
}); });
// https://github.com/dermotduffy/frigate-hass-card/issues/1280
it('should not require title controls to specify all options', () => {
expect(
createConfig({
cameras: [],
live: {
controls: {
title: {
mode: 'popup-top-left',
},
},
},
}),
).toBeTruthy();
});