diff --git a/src/panels/lovelace/common/compute-tooltip.ts b/src/panels/lovelace/common/compute-tooltip.ts index 7ab9830223..2a7b7129c3 100644 --- a/src/panels/lovelace/common/compute-tooltip.ts +++ b/src/panels/lovelace/common/compute-tooltip.ts @@ -1,6 +1,7 @@ import computeStateName from "../../../common/entity/compute_state_name"; import { HomeAssistant } from "../../../types"; import { LovelaceElementConfig } from "../elements/types"; +import { ActionConfig } from "../../../data/lovelace"; export const computeTooltip = ( hass: HomeAssistant, @@ -11,7 +12,7 @@ export const computeTooltip = ( } let stateName = ""; - let tooltip: string; + let tooltip = ""; if (config.entity) { stateName = @@ -20,19 +21,45 @@ export const computeTooltip = ( : config.entity; } - switch (config.tap_action && config.tap_action.action) { - case "navigate": - tooltip = `Navigate to ${config.navigation_path}`; - break; - case "toggle": - tooltip = `Toggle ${stateName}`; - break; - case "call-service": - tooltip = `Call service ${config.service}`; - break; - default: - tooltip = `Show more-info: ${stateName}`; - } + const tapTooltip = config.tap_action + ? computeActionTooltip(stateName, config.tap_action, false) + : ""; + const holdTooltip = config.hold_action + ? computeActionTooltip(stateName, config.hold_action, true) + : ""; + + const newline = tapTooltip && holdTooltip ? "\n" : ""; + + tooltip = tapTooltip + newline + holdTooltip; return tooltip; }; + +function computeActionTooltip( + state: string, + config: ActionConfig, + isHold: boolean +) { + if (!config || !config.action || config.action === "none") { + return ""; + } + + let tooltip = isHold ? "Hold: " : "Tap: "; + + switch (config.action) { + case "navigate": + tooltip += `Navigate to ${config.navigation_path}`; + break; + case "toggle": + tooltip += `Toggle ${state}`; + break; + case "call-service": + tooltip += `Call service ${config.service}`; + break; + case "more-info": + tooltip += `Show more-info: ${state}`; + break; + } + + return tooltip; +} diff --git a/src/panels/lovelace/elements/types.ts b/src/panels/lovelace/elements/types.ts index 0eb49c5308..ebc66605d9 100644 --- a/src/panels/lovelace/elements/types.ts +++ b/src/panels/lovelace/elements/types.ts @@ -8,7 +8,6 @@ export interface LovelaceElementConfig { hold_action?: ActionConfig; service?: string; service_data?: object; - navigation_path?: string; tap_action?: ActionConfig; title?: string; }