mirror of
https://github.com/home-assistant/frontend.git
synced 2025-08-02 05:57:54 +00:00
Allow multiple tap/hold/doubletap actions.
This commit is contained in:
parent
1538fbb102
commit
4dcfe3031d
@ -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";
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
@ -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>
|
||||||
|
`
|
||||||
|
: ""}
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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")
|
||||||
|
@ -82,6 +82,7 @@ export class HuiLightCardEditor extends LitElement
|
|||||||
"url",
|
"url",
|
||||||
"call-service",
|
"call-service",
|
||||||
"none",
|
"none",
|
||||||
|
"multiple",
|
||||||
];
|
];
|
||||||
|
|
||||||
return html`
|
return html`
|
||||||
|
@ -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">
|
||||||
|
@ -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!);
|
||||||
|
|
||||||
|
@ -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`
|
||||||
|
@ -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({
|
||||||
|
@ -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": {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user