From fa8c43fbc007ed24ec560b068ccaa4aadcca4c0e Mon Sep 17 00:00:00 2001 From: Georgi Gardev Date: Wed, 6 May 2020 14:16:58 +0300 Subject: [PATCH] Add header --- src/partials.ts | 8 ++++++++ src/time-picker-card.ts | 27 ++++++++++++++++++++++++--- src/types.ts | 6 ++++++ 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/partials.ts b/src/partials.ts index 48c49da..06e1cf5 100644 --- a/src/partials.ts +++ b/src/partials.ts @@ -13,4 +13,12 @@ export class Partial { return html`${errorCard}`; } + + static header(title: string, icon?: string): TemplateResult | null { + return html` +
+ ${icon ? html`` : ''}${title} +
+ `; + } } diff --git a/src/time-picker-card.ts b/src/time-picker-card.ts index 0326ccf..36df334 100644 --- a/src/time-picker-card.ts +++ b/src/time-picker-card.ts @@ -41,6 +41,14 @@ export class TimePickerCard extends LitElement { return this.hass.states[this.config.entity]; } + private get shouldShowName(): boolean { + return Boolean(this.config.hide?.name) === false && Boolean(this.name); + } + + private get name(): string | undefined { + return this.config.name || this.entity?.attributes.friendly_name; + } + render(): TemplateResult | null { if (!this.entity) { return Partial.error('Entity not found', this.config); @@ -63,9 +71,12 @@ export class TimePickerCard extends LitElement { return html` - -
:
- + ${this.shouldShowName ? Partial.header(this.name!) : ''} +
+ +
:
+ +
`; } @@ -102,7 +113,17 @@ export class TimePickerCard extends LitElement { static get styles(): CSSResult { return css` .time-picker-ha-card { + } + + .time-picker-header { padding: 16px; + background-color: var(--time-picker-card-background-color); + font-size: 1em; + text-align: center; + } + + .time-picker-content { + padding: 8px 16px 16px; display: flex; flex-direction: row; align-items: center; diff --git a/src/types.ts b/src/types.ts index 6046c9e..d52146d 100644 --- a/src/types.ts +++ b/src/types.ts @@ -2,8 +2,14 @@ import { LovelaceCardConfig } from 'custom-card-helpers'; export interface TimePickerCardConfig extends LovelaceCardConfig { entity: string; + name?: string; hour_step?: number; minute_step?: number; + hide?: TimePickerHideConfig; +} + +export interface TimePickerHideConfig { + name: boolean; } export enum Direction {