From ba3b265b9ad9c220881a10901494b407fbfc9d71 Mon Sep 17 00:00:00 2001 From: Steve Repsher Date: Mon, 27 Feb 2023 04:22:55 -0500 Subject: [PATCH] Fix invalid style in password manager polyfill and ha-bar (#15603) --- src/auth/ha-password-manager-polyfill.ts | 72 ++++++++++++++---------- src/components/ha-bar.ts | 1 - 2 files changed, 41 insertions(+), 32 deletions(-) diff --git a/src/auth/ha-password-manager-polyfill.ts b/src/auth/ha-password-manager-polyfill.ts index 94f8351636..c07d8853ea 100644 --- a/src/auth/ha-password-manager-polyfill.ts +++ b/src/auth/ha-password-manager-polyfill.ts @@ -1,6 +1,6 @@ -/* eslint-disable lit/prefer-static-styles */ -import { html, LitElement, TemplateResult } from "lit"; +import { css, html, LitElement, nothing } from "lit"; import { customElement, property } from "lit/decorators"; +import { styleMap } from "lit/directives/style-map"; import { fireEvent } from "../common/dom/fire_event"; import type { HaFormSchema } from "../components/ha-form/types"; import { autocompleteLoginFields } from "../data/auth"; @@ -29,35 +29,43 @@ export class HaPasswordManagerPolyfill extends LitElement { @property({ attribute: false }) public boundingRect?: DOMRect; + private _styleElement?: HTMLStyleElement; + + public connectedCallback() { + super.connectedCallback(); + this._styleElement = document.createElement("style"); + this._styleElement.textContent = css` + .password-manager-polyfill { + position: absolute; + opacity: 0; + z-index: -1; + } + .password-manager-polyfill input { + width: 100%; + height: 62px; + padding: 0; + border: 0; + } + .password-manager-polyfill input[type="submit"] { + width: 0; + height: 0; + } + `.toString(); + document.head.append(this._styleElement); + } + + public disconnectedCallback() { + super.disconnectedCallback(); + this._styleElement?.remove(); + delete this._styleElement; + } + protected createRenderRoot() { // Add under document body so the element isn't placed inside any shadow roots return document.body; } - private get styles() { - return ` - .password-manager-polyfill { - position: absolute; - top: ${this.boundingRect?.y || 148}px; - left: calc(50% - ${(this.boundingRect?.width || 360) / 2}px); - width: ${this.boundingRect?.width || 360}px; - opacity: 0; - z-index: -1; - } - .password-manager-polyfill input { - width: 100%; - height: 62px; - padding: 0; - border: 0; - } - .password-manager-polyfill input[type="submit"] { - width: 0; - height: 0; - } - `; - } - - protected render(): TemplateResult { + protected render() { if ( this.step && this.step.type === "form" && @@ -67,6 +75,11 @@ export class HaPasswordManagerPolyfill extends LitElement { return html` `; } - return html``; + return nothing; } - private render_input(schema: HaFormSchema): TemplateResult | string { + private render_input(schema: HaFormSchema) { const inputType = schema.name.includes("password") ? "password" : "text"; if (schema.type !== "string") { return ""; diff --git a/src/components/ha-bar.ts b/src/components/ha-bar.ts index d53abb15c7..29140bd082 100644 --- a/src/components/ha-bar.ts +++ b/src/components/ha-bar.ts @@ -44,7 +44,6 @@ export class HaBar extends LitElement { } rect:last-child { fill: var(--ha-bar-primary-color, var(--primary-color)); - rx: var(--ha-bar-border-radius, 4px); } svg { border-radius: var(--ha-bar-border-radius, 4px);