diff --git a/gallery/src/pages/components/ha-selector.ts b/gallery/src/pages/components/ha-selector.ts index 2ea007d913..b5110c71fb 100644 --- a/gallery/src/pages/components/ha-selector.ts +++ b/gallery/src/pages/components/ha-selector.ts @@ -146,6 +146,7 @@ const SCHEMAS: { }, boolean: { name: "Boolean", selector: { boolean: {} } }, time: { name: "Time", selector: { time: {} } }, + date: { name: "Date", selector: { date: {} } }, action: { name: "Action", selector: { action: {} } }, text: { name: "Text", diff --git a/src/components/ha-selector/ha-selector-date.ts b/src/components/ha-selector/ha-selector-date.ts new file mode 100644 index 0000000000..a19438a1b4 --- /dev/null +++ b/src/components/ha-selector/ha-selector-date.ts @@ -0,0 +1,42 @@ +import { html, LitElement } from "lit"; +import { customElement, property } from "lit/decorators"; +import type { HomeAssistant } from "../../types"; +import type { DateSelector } from "../../data/selector"; +import { fireEvent } from "../../common/dom/fire_event"; +import "../ha-date-input"; + +@customElement("ha-selector-date") +export class HaDateSelector extends LitElement { + @property() public hass!: HomeAssistant; + + @property() public selector!: DateSelector; + + @property() public value?: string; + + @property() public label?: string; + + @property({ type: Boolean, reflect: true }) public disabled = false; + + protected render() { + return html` + + + `; + } + + private _valueChanged(ev: CustomEvent) { + fireEvent(this, "value-changed", { value: ev.detail.value }); + } +} + +declare global { + interface HTMLElementTagNameMap { + "ha-selector-date": HaDateSelector; + } +} diff --git a/src/components/ha-selector/ha-selector.ts b/src/components/ha-selector/ha-selector.ts index 4aa268ee23..9986de7ecc 100644 --- a/src/components/ha-selector/ha-selector.ts +++ b/src/components/ha-selector/ha-selector.ts @@ -9,6 +9,7 @@ import "./ha-selector-area"; import "./ha-selector-attribute"; import "./ha-selector-boolean"; import "./ha-selector-color-rgb"; +import "./ha-selector-date"; import "./ha-selector-device"; import "./ha-selector-duration"; import "./ha-selector-entity"; diff --git a/src/data/selector.ts b/src/data/selector.ts index d4d83c6ccb..ab5878180b 100644 --- a/src/data/selector.ts +++ b/src/data/selector.ts @@ -2,6 +2,7 @@ export type Selector = | AddonSelector | AttributeSelector | EntitySelector + | DateSelector | DeviceSelector | DurationSelector | AreaSelector @@ -40,6 +41,11 @@ export interface ColorRGBSelector { color_rgb: {}; } +export interface DateSelector { + // eslint-disable-next-line @typescript-eslint/ban-types + date: {}; +} + export interface DeviceSelector { device: { integration?: string;