From 50f2a2ef581cd7e334158315a0baa87365dd6938 Mon Sep 17 00:00:00 2001 From: Fish Date: Sun, 6 Feb 2022 17:45:56 +0800 Subject: [PATCH] Add missing cover icons now mirroring https://github.com/home-assistant/frontend/blob/dev/src/common/entity/cover_icon.ts --- src/cover_icon.ts | 80 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 74 insertions(+), 6 deletions(-) diff --git a/src/cover_icon.ts b/src/cover_icon.ts index 1c64524..d1c5d8d 100644 --- a/src/cover_icon.ts +++ b/src/cover_icon.ts @@ -1,21 +1,89 @@ /** Return an icon representing a cover state. */ import { HassEntity } from "home-assistant-js-websocket"; -import { domainIcon } from "./domain_icons"; export const coverIcon = (state: HassEntity): string => { const open = state.state !== "closed"; switch (state.attributes.device_class) { case "garage": - return open ? "mdi:garage-open" : "mdi:garage"; + switch (state) { + case "opening": + return "mdi:arrow-up-box"; + case "closing": + return "mdi:arrow-down-box"; + case "closed": + return "mdi:garage"; + default: + return "mdi:garage-open"; + } + case "gate": + switch (state) { + case "opening": + case "closing": + return "mdi:gate-arrow-right"; + case "closed": + return "mdi:gate"; + default: + return "mdi:gate-open"; + } case "door": return open ? "mdi:door-open" : "mdi:door-closed"; + case "damper": + return open ? "mdi:circle" : "mdi:circle-slice-8"; case "shutter": - return open ? "mdi:window-shutter-open" : "mdi:window-shutter"; + switch (state) { + case "opening": + return "mdi:arrow-up-box"; + case "closing": + return "mdi:arrow-down-box"; + case "closed": + return "mdi:window-shutter"; + default: + return "mdi:window-shutter-open"; + } + case "curtain": + switch (state) { + case "opening": + return "mdi:arrow-split-vertical"; + case "closing": + return "mdi:arrow-collapse-horizontal"; + case "closed": + return "mdi:curtains-closed"; + default: + return "mdi:curtains"; + } case "blind": - return open ? "mdi:blinds-open" : "mdi:blinds"; + case "shade": + switch (state) { + case "opening": + return "mdi:arrow-up-box"; + case "closing": + return "mdi:arrow-down-box"; + case "closed": + return "mdi:blinds"; + default: + return "mdi:blinds-open"; + } case "window": - return open ? "mdi:window-open" : "mdi:window-closed"; + switch (state) { + case "opening": + return "mdi:arrow-up-box"; + case "closing": + return "mdi:arrow-down-box"; + case "closed": + return "mdi:window-closed"; + default: + return "mdi:window-open"; + } default: - return domainIcon("cover", state.state); + switch (state) { + case "opening": + return "mdi:arrow-up-box"; + case "closing": + return "mdi:arrow-down-box"; + case "closed": + return "mdi:window-closed"; + default: + return "mdi:window-open"; + } } };