From 8fb62ebf5f40e1043591839b5b9486facfe9f65b Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Mon, 3 Aug 2020 16:32:23 +0200 Subject: [PATCH] Fix gauge when safari is zoomed (#6492) Co-authored-by: Paulus Schoutsen --- src/components/ha-gauge.ts | 29 ++++++++++++++++++++++++++--- src/panels/lovelace/hui-root.ts | 2 +- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/components/ha-gauge.ts b/src/components/ha-gauge.ts index a33ba30cf2..6cb3391f2e 100644 --- a/src/components/ha-gauge.ts +++ b/src/components/ha-gauge.ts @@ -9,6 +9,7 @@ import { } from "lit-element"; import { styleMap } from "lit-html/directives/style-map"; import { afterNextRender } from "../common/util/render-status"; +import { ifDefined } from "lit-html/directives/if-defined"; const getAngle = (value: number, min: number, max: number) => { const percentage = getValueInPercentage(normalize(value, min, max), min, max); @@ -27,6 +28,9 @@ const getValueInPercentage = (value: number, min: number, max: number) => { return (100 * newVal) / newMax; }; +// Workaround for https://github.com/home-assistant/frontend/issues/6467 +const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); + @customElement("ha-gauge") export class Gauge extends LitElement { @property({ type: Number }) public min = 0; @@ -69,9 +73,28 @@ export class Gauge extends LitElement { > + style=${ifDefined( + !isSafari + ? styleMap({ transform: `rotate(${this._angle}deg)` }) + : undefined + )} + transform=${ifDefined( + isSafari ? `rotate(${this._angle} 50 50)` : undefined + )} + > + ${ + isSafari + ? svg`` + : "" + } + @@ -106,8 +129,8 @@ export class Gauge extends LitElement { fill: none; stroke-width: 15; stroke: var(--gauge-color); - transition: all 1000ms ease 0s; transform-origin: 50% 100%; + transition: all 1s ease 0s; } .gauge { display: block; diff --git a/src/panels/lovelace/hui-root.ts b/src/panels/lovelace/hui-root.ts index 370011d55d..ca41fe1899 100644 --- a/src/panels/lovelace/hui-root.ts +++ b/src/panels/lovelace/hui-root.ts @@ -250,7 +250,7 @@ class HUIRoot extends LitElement { ` : ""} - ${this.hass!.user!.is_admin && !this.hass!.config.safe_mode + ${this.hass!.user?.is_admin && !this.hass!.config.safe_mode ? html`