mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-25 18:26:35 +00:00
Allow continue_on_error in the UI action editor (#16834)
This commit is contained in:
parent
13b864e261
commit
1cf24ffc8d
@ -33,6 +33,7 @@ export const isMaxMode = arrayLiteralIncludes(MODES_MAX);
|
|||||||
|
|
||||||
export const baseActionStruct = object({
|
export const baseActionStruct = object({
|
||||||
alias: optional(string()),
|
alias: optional(string()),
|
||||||
|
continue_on_error: optional(boolean()),
|
||||||
enabled: optional(boolean()),
|
enabled: optional(boolean()),
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -99,6 +100,7 @@ export interface BlueprintScriptConfig extends ManualScriptConfig {
|
|||||||
|
|
||||||
interface BaseAction {
|
interface BaseAction {
|
||||||
alias?: string;
|
alias?: string;
|
||||||
|
continue_on_error?: boolean;
|
||||||
enabled?: boolean;
|
enabled?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -230,14 +232,10 @@ interface UnknownAction extends BaseAction {
|
|||||||
[key: string]: unknown;
|
[key: string]: unknown;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type Action =
|
export type NonConditionAction =
|
||||||
| EventAction
|
| EventAction
|
||||||
| DeviceAction
|
| DeviceAction
|
||||||
| ServiceAction
|
| ServiceAction
|
||||||
| Condition
|
|
||||||
| ShorthandAndCondition
|
|
||||||
| ShorthandOrCondition
|
|
||||||
| ShorthandNotCondition
|
|
||||||
| DelayAction
|
| DelayAction
|
||||||
| SceneAction
|
| SceneAction
|
||||||
| WaitAction
|
| WaitAction
|
||||||
@ -251,6 +249,13 @@ export type Action =
|
|||||||
| ParallelAction
|
| ParallelAction
|
||||||
| UnknownAction;
|
| UnknownAction;
|
||||||
|
|
||||||
|
export type Action =
|
||||||
|
| NonConditionAction
|
||||||
|
| Condition
|
||||||
|
| ShorthandAndCondition
|
||||||
|
| ShorthandOrCondition
|
||||||
|
| ShorthandNotCondition;
|
||||||
|
|
||||||
export interface ActionTypes {
|
export interface ActionTypes {
|
||||||
delay: DelayAction;
|
delay: DelayAction;
|
||||||
wait_template: WaitAction;
|
wait_template: WaitAction;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import { ActionDetail } from "@material/mwc-list/mwc-list-foundation";
|
import { ActionDetail } from "@material/mwc-list/mwc-list-foundation";
|
||||||
import "@material/mwc-list/mwc-list-item";
|
import "@material/mwc-list/mwc-list-item";
|
||||||
import {
|
import {
|
||||||
|
mdiAlertCircleCheck,
|
||||||
mdiCheck,
|
mdiCheck,
|
||||||
mdiContentDuplicate,
|
mdiContentDuplicate,
|
||||||
mdiContentCopy,
|
mdiContentCopy,
|
||||||
@ -14,7 +15,14 @@ import {
|
|||||||
mdiStopCircleOutline,
|
mdiStopCircleOutline,
|
||||||
} from "@mdi/js";
|
} from "@mdi/js";
|
||||||
import { UnsubscribeFunc } from "home-assistant-js-websocket";
|
import { UnsubscribeFunc } from "home-assistant-js-websocket";
|
||||||
import { css, CSSResultGroup, html, LitElement, PropertyValues } from "lit";
|
import {
|
||||||
|
css,
|
||||||
|
CSSResultGroup,
|
||||||
|
html,
|
||||||
|
LitElement,
|
||||||
|
nothing,
|
||||||
|
PropertyValues,
|
||||||
|
} from "lit";
|
||||||
import { customElement, property, query, state } from "lit/decorators";
|
import { customElement, property, query, state } from "lit/decorators";
|
||||||
import { classMap } from "lit/directives/class-map";
|
import { classMap } from "lit/directives/class-map";
|
||||||
import { dynamicElement } from "../../../../common/dom/dynamic-element-directive";
|
import { dynamicElement } from "../../../../common/dom/dynamic-element-directive";
|
||||||
@ -34,7 +42,11 @@ import {
|
|||||||
subscribeEntityRegistry,
|
subscribeEntityRegistry,
|
||||||
} from "../../../../data/entity_registry";
|
} from "../../../../data/entity_registry";
|
||||||
import { Clipboard } from "../../../../data/automation";
|
import { Clipboard } from "../../../../data/automation";
|
||||||
import { Action, getActionType } from "../../../../data/script";
|
import {
|
||||||
|
Action,
|
||||||
|
NonConditionAction,
|
||||||
|
getActionType,
|
||||||
|
} from "../../../../data/script";
|
||||||
import { describeAction } from "../../../../data/script_i18n";
|
import { describeAction } from "../../../../data/script_i18n";
|
||||||
import { callExecuteScript } from "../../../../data/service";
|
import { callExecuteScript } from "../../../../data/service";
|
||||||
import {
|
import {
|
||||||
@ -184,6 +196,17 @@ export default class HaAutomationActionRow extends LitElement {
|
|||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
<slot name="icons" slot="icons"></slot>
|
<slot name="icons" slot="icons"></slot>
|
||||||
|
${type !== "condition" &&
|
||||||
|
(this.action as NonConditionAction).continue_on_error === true
|
||||||
|
? html`<div slot="icons">
|
||||||
|
<ha-svg-icon .path=${mdiAlertCircleCheck}></ha-svg-icon>
|
||||||
|
<simple-tooltip animation-delay="0">
|
||||||
|
${this.hass.localize(
|
||||||
|
"ui.panel.config.automation.editor.actions.continue_on_error"
|
||||||
|
)}
|
||||||
|
</simple-tooltip>
|
||||||
|
</div> `
|
||||||
|
: nothing}
|
||||||
${this.hideMenu
|
${this.hideMenu
|
||||||
? ""
|
? ""
|
||||||
: html`
|
: html`
|
||||||
|
@ -2501,6 +2501,7 @@
|
|||||||
"delete_confirm_text": "[%key:ui::panel::config::automation::editor::triggers::delete_confirm_text%]",
|
"delete_confirm_text": "[%key:ui::panel::config::automation::editor::triggers::delete_confirm_text%]",
|
||||||
"unsupported_action": "No visual editor support for action: {action}",
|
"unsupported_action": "No visual editor support for action: {action}",
|
||||||
"type_select": "Action type",
|
"type_select": "Action type",
|
||||||
|
"continue_on_error": "Continue on error",
|
||||||
"type": {
|
"type": {
|
||||||
"service": {
|
"service": {
|
||||||
"label": "Call service"
|
"label": "Call service"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user