diff --git a/src/data/script.ts b/src/data/script.ts index 42c9c849ac..9685af17dd 100644 --- a/src/data/script.ts +++ b/src/data/script.ts @@ -155,9 +155,17 @@ export interface WaitAction extends BaseAction { continue_on_timeout?: boolean; } +export interface WaitForTriggerActionParts extends BaseAction { + milliseconds?: number; + seconds?: number; + minutes?: number; + hours?: number; + days?: number; +} + export interface WaitForTriggerAction extends BaseAction { wait_for_trigger: Trigger | Trigger[]; - timeout?: number; + timeout?: number | Partial | string; continue_on_timeout?: boolean; } diff --git a/src/panels/config/automation/action/types/ha-automation-action-wait_for_trigger.ts b/src/panels/config/automation/action/types/ha-automation-action-wait_for_trigger.ts index bee68da94c..8107017d54 100644 --- a/src/panels/config/automation/action/types/ha-automation-action-wait_for_trigger.ts +++ b/src/panels/config/automation/action/types/ha-automation-action-wait_for_trigger.ts @@ -7,6 +7,9 @@ import { WaitForTriggerAction } from "../../../../../data/script"; import { HomeAssistant } from "../../../../../types"; import "../../trigger/ha-automation-trigger"; import { ActionElement, handleChangeEvent } from "../ha-automation-action-row"; +import "../../../../../components/ha-duration-input"; +import { createDurationData } from "../../../../../common/datetime/create_duration_data"; +import { TimeChangedEvent } from "../../../../../components/ha-base-time-input"; @customElement("ha-automation-action-wait_for_trigger") export class HaWaitForTriggerAction @@ -22,17 +25,18 @@ export class HaWaitForTriggerAction } protected render() { - const { wait_for_trigger, continue_on_timeout, timeout } = this.action; + const { wait_for_trigger, continue_on_timeout } = this.action; + const timeData = createDurationData(this.action.timeout); return html` - + .data=${timeData} + enableMillisecond + @value-changed=${this._timeoutChanged} + > ): void { + ev.stopPropagation(); + const value = ev.detail.value; + if (!value) { + return; + } + fireEvent(this, "value-changed", { + value: { ...this.action, timeout: value }, + }); + } + private _continueChanged(ev) { fireEvent(this, "value-changed", { value: { ...this.action, continue_on_timeout: ev.target.checked }, @@ -64,7 +79,7 @@ export class HaWaitForTriggerAction static get styles(): CSSResultGroup { return css` - ha-textfield { + ha-duration-input { display: block; margin-bottom: 24px; }