diff --git a/src/common/entity/cover_icon.ts b/src/common/entity/cover_icon.ts index 13eb5cd9de..faa7e29890 100644 --- a/src/common/entity/cover_icon.ts +++ b/src/common/entity/cover_icon.ts @@ -4,17 +4,58 @@ import { domainIcon } from "./domain_icon"; export const coverIcon = (state: HassEntity): string => { const open = state.state !== "closed"; + switch (state.attributes.device_class) { case "garage": - return open ? "hass:garage-open" : "hass:garage"; + switch (state.state) { + case "opening": + return "hass:arrow-up-box"; + case "closing": + return "hass:arrow-down-box"; + case "closed": + return "hass:garage"; + default: + return "hass:garage-open"; + } + case "gate": + switch (state.state) { + case "opening": + case "closing": + return "hass:gate-arrow-right"; + case "closed": + return "hass:gate"; + default: + return "hass:gate-open"; + } case "door": return open ? "hass:door-open" : "hass:door-closed"; + case "damper": + return open ? "hass:circle" : "hass:circle-slice-8"; case "shutter": return open ? "hass:window-shutter-open" : "hass:window-shutter"; case "blind": - return open ? "hass:blinds-open" : "hass:blinds"; + case "curtain": + switch (state.state) { + case "opening": + return "hass:arrow-up-box"; + case "closing": + return "hass:arrow-down-box"; + case "closed": + return "hass:blinds"; + default: + return "hass:blinds-open"; + } case "window": - return open ? "hass:window-open" : "hass:window-closed"; + switch (state.state) { + case "opening": + return "hass:arrow-up-box"; + case "closing": + return "hass:arrow-down-box"; + case "closed": + return "hass:window-closed"; + default: + return "hass:window-open"; + } default: return domainIcon("cover", state.state); } diff --git a/src/common/entity/domain_icon.ts b/src/common/entity/domain_icon.ts index baa698de4c..e735df808c 100644 --- a/src/common/entity/domain_icon.ts +++ b/src/common/entity/domain_icon.ts @@ -77,7 +77,16 @@ export const domainIcon = (domain: string, state?: string): string => { : "hass:checkbox-marked-circle"; case "cover": - return state === "closed" ? "hass:window-closed" : "hass:window-open"; + switch (state) { + case "opening": + return "hass:arrow-up-box"; + case "closing": + return "hass:arrow-down-box"; + case "closed": + return "hass:window-closed"; + default: + return "hass:window-open"; + } case "lock": return state && state === "unlocked" ? "hass:lock-open" : "hass:lock";