Allow multiple tap/hold/doubletap actions.

This commit is contained in:
Thomas Lovén 2021-01-10 13:52:28 +01:00
parent 1538fbb102
commit 4dcfe3031d
10 changed files with 100 additions and 61 deletions

View File

@ -148,6 +148,11 @@ export interface CustomActionConfig extends BaseActionConfig {
action: "fire-dom-event"; action: "fire-dom-event";
} }
export interface MultipleActionConfig extends BaseActionConfig {
action: "multiple";
actions: ActionConfig[];
}
export interface BaseActionConfig { export interface BaseActionConfig {
confirmation?: ConfirmationRestrictionConfig; confirmation?: ConfirmationRestrictionConfig;
} }
@ -168,7 +173,8 @@ export type ActionConfig =
| UrlActionConfig | UrlActionConfig
| MoreInfoActionConfig | MoreInfoActionConfig
| NoActionConfig | NoActionConfig
| CustomActionConfig; | CustomActionConfig
| MultipleActionConfig;
type LovelaceUpdatedEvent = HassEventBase & { type LovelaceUpdatedEvent = HassEventBase & {
event_type: "lovelace_updated"; event_type: "lovelace_updated";

View File

@ -40,6 +40,10 @@ export const handleAction = async (
}; };
} }
const actionConfigs =
actionConfig.action === "multiple" ? actionConfig.actions : [actionConfig];
for await (actionConfig of actionConfigs) {
if ( if (
actionConfig.confirmation && actionConfig.confirmation &&
(!actionConfig.confirmation.exemptions || (!actionConfig.confirmation.exemptions ||
@ -105,4 +109,5 @@ export const handleAction = async (
fireEvent(node, "ll-custom", actionConfig); fireEvent(node, "ll-custom", actionConfig);
} }
} }
}
}; };

View File

@ -130,6 +130,15 @@ export class HuiActionEditor extends LitElement {
</b> </b>
` `
: ""} : ""}
${this.config?.action === "multiple"
? html`
<b>
${this.hass!.localize(
"ui.panel.lovelace.editor.action-editor.editor_multiple_actions"
)}
</b>
`
: ""}
`; `;
} }

View File

@ -46,6 +46,7 @@ const actions = [
"url", "url",
"call-service", "call-service",
"none", "none",
"multiple",
]; ];
@customElement("hui-button-card-editor") @customElement("hui-button-card-editor")

View File

@ -82,6 +82,7 @@ export class HuiLightCardEditor extends LitElement
"url", "url",
"call-service", "call-service",
"none", "none",
"multiple",
]; ];
return html` return html`

View File

@ -60,7 +60,7 @@ export class HuiPictureCardEditor extends LitElement
return html``; return html``;
} }
const actions = ["navigate", "url", "call-service", "none"]; const actions = ["navigate", "url", "call-service", "none", "multiple"];
return html` return html`
<div class="card-config"> <div class="card-config">

View File

@ -104,7 +104,14 @@ export class HuiPictureEntityCardEditor extends LitElement
return html``; return html``;
} }
const actions = ["more-info", "toggle", "navigate", "call-service", "none"]; const actions = [
"more-info",
"toggle",
"navigate",
"call-service",
"none",
"multiple",
];
const views = ["auto", "live"]; const views = ["auto", "live"];
const dir = computeRTLDirection(this.hass!); const dir = computeRTLDirection(this.hass!);

View File

@ -108,7 +108,14 @@ export class HuiPictureGlanceCardEditor extends LitElement
return html``; return html``;
} }
const actions = ["more-info", "toggle", "navigate", "call-service", "none"]; const actions = [
"more-info",
"toggle",
"navigate",
"call-service",
"none",
"multiple",
];
const views = ["auto", "live"]; const views = ["auto", "live"];
return html` return html`

View File

@ -98,6 +98,7 @@ export const actionConfigStruct = object({
url_path: optional(string()), url_path: optional(string()),
service: optional(string()), service: optional(string()),
service_data: optional(object()), service_data: optional(object()),
actions: optional(array()),
}); });
const buttonEntitiesRowConfigStruct = object({ const buttonEntitiesRowConfigStruct = object({

View File

@ -2564,6 +2564,7 @@
"action-editor": { "action-editor": {
"navigation_path": "Navigation Path", "navigation_path": "Navigation Path",
"url_path": "URL Path", "url_path": "URL Path",
"editor_multiple_actions": "Multiple actions can only be entered in the code editor",
"editor_service_data": "Service data can only be entered in the code editor", "editor_service_data": "Service data can only be entered in the code editor",
"actions": { "actions": {
"default_action": "Default Action", "default_action": "Default Action",
@ -2572,7 +2573,8 @@
"toggle": "Toggle", "toggle": "Toggle",
"navigate": "Navigate", "navigate": "Navigate",
"url": "URL", "url": "URL",
"none": "No Action" "none": "No Action",
"multiple": "Multiple actions"
} }
}, },
"card": { "card": {