From 7ab1133b45bdac01ca3a0907d8ad8e3d87c7ee20 Mon Sep 17 00:00:00 2001 From: Bram Kragten Date: Fri, 27 Sep 2024 23:42:44 +0200 Subject: [PATCH] Implement missing function for password field --- src/components/ha-password-field.ts | 27 +++++++++++++++++++- src/panels/config/cloud/login/cloud-login.ts | 11 ++++---- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/src/components/ha-password-field.ts b/src/components/ha-password-field.ts index 8612703053..d97c23c4de 100644 --- a/src/components/ha-password-field.ts +++ b/src/components/ha-password-field.ts @@ -1,10 +1,17 @@ import { TextAreaCharCounter } from "@material/mwc-textfield/mwc-textfield-base"; import { mdiEye, mdiEyeOff } from "@mdi/js"; import { LitElement, css, html } from "lit"; -import { customElement, eventOptions, property, state } from "lit/decorators"; +import { + customElement, + eventOptions, + property, + query, + state, +} from "lit/decorators"; import { HomeAssistant } from "../types"; import "./ha-icon-button"; import "./ha-textfield"; +import type { HaTextField } from "./ha-textfield"; @customElement("ha-password-field") export class HaPasswordField extends LitElement { @@ -75,6 +82,8 @@ export class HaPasswordField extends LitElement { @state() private _unmaskedPassword = false; + @query("ha-textfield") private _textField!: HaTextField; + protected render() { return html``; } + public checkValidity(): boolean { + return this._textField.checkValidity(); + } + + public reportValidity(): boolean { + return this._textField.reportValidity(); + } + + public setCustomValidity(message: string): void { + return this._textField.setCustomValidity(message); + } + + public layout(): Promise { + return this._textField.layout(); + } + private _toggleUnmaskedPassword(): void { this._unmaskedPassword = !this._unmaskedPassword; } diff --git a/src/panels/config/cloud/login/cloud-login.ts b/src/panels/config/cloud/login/cloud-login.ts index c617dfd2b2..ecc9c56b67 100644 --- a/src/panels/config/cloud/login/cloud-login.ts +++ b/src/panels/config/cloud/login/cloud-login.ts @@ -1,8 +1,8 @@ import "@material/mwc-button"; import "@material/mwc-list/mwc-list"; +import { mdiDeleteForever, mdiDotsVertical } from "@mdi/js"; import { css, html, LitElement, TemplateResult } from "lit"; import { customElement, property, query, state } from "lit/decorators"; -import { mdiDeleteForever, mdiDotsVertical } from "@mdi/js"; import { fireEvent } from "../../../../common/dom/fire_event"; import { navigate } from "../../../../common/navigate"; import "../../../../components/buttons/ha-progress-button"; @@ -10,8 +10,11 @@ import "../../../../components/ha-alert"; import "../../../../components/ha-card"; import "../../../../components/ha-icon-next"; import "../../../../components/ha-list-item"; -import type { HaTextField } from "../../../../components/ha-textfield"; +import "../../../../components/ha-password-field"; +import type { HaPasswordField } from "../../../../components/ha-password-field"; import "../../../../components/ha-textfield"; +import type { HaTextField } from "../../../../components/ha-textfield"; +import { setAssistPipelinePreferred } from "../../../../data/assist_pipeline"; import { cloudLogin, removeCloudData } from "../../../../data/cloud"; import { showAlertDialog, @@ -21,8 +24,6 @@ import "../../../../layouts/hass-subpage"; import { haStyle } from "../../../../resources/styles"; import { HomeAssistant } from "../../../../types"; import "../../ha-config-section"; -import { setAssistPipelinePreferred } from "../../../../data/assist_pipeline"; -import "../../../../components/ha-password-field"; @customElement("cloud-login") export class CloudLogin extends LitElement { @@ -44,7 +45,7 @@ export class CloudLogin extends LitElement { @query("#email", true) private _emailField!: HaTextField; - @query("#password", true) private _passwordField!: HaTextField; + @query("#password", true) private _passwordField!: HaPasswordField; protected render(): TemplateResult { return html`