/
dimamir
/
authentik
Обзор
Документация
Войти
/
dimamir
/
authentik
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
web/src/elements/forms/FormElement.ts
73 строки
2 KB
Ken Sternberg
web: add HTMLTagNameElementMaps to everything to activate lit analyzer (#10217)
15 июл 2024, 20:54
Не верифицирован
15 июл 2024, 20:54
ee58cf0
Код
Авторство
О чём код?
import { AKElement } from "@goauthentik/elements/Base"; import { CSSResult } from "lit"; import { TemplateResult, html } from "lit"; import { customElement, property } from "lit/decorators.js"; import PFForm from "@patternfly/patternfly/components/Form/form.css"; import PFFormControl from "@patternfly/patternfly/components/FormControl/form-control.css"; import PFBase from "@patternfly/patternfly/patternfly-base.css"; import { ErrorDetail } from "@goauthentik/api"; /** * This is used in two places outside of Flow, and in both cases is used primarily to * display content, not take input. It displays the TOTP QR code, and the static * recovery tokens. But it's used a lot in Flow. */ @customElement("ak-form-element") export class FormElement extends AKElement { static get styles(): CSSResult[] { return [PFBase, PFForm, PFFormControl]; } @property() label?: string; @property({ type: Boolean }) required = false; @property({ attribute: false }) set errors(value: ErrorDetail[] | undefined) { this._errors = value; const hasError = (value || []).length > 0; this.querySelectorAll("input").forEach((input) => { input.setAttribute("aria-invalid", hasError.toString()); }); this.requestUpdate(); } _errors?: ErrorDetail[]; updated(): void { this.querySelectorAll<HTMLInputElement>("input[autofocus]").forEach((input) => { input.focus(); }); } render(): TemplateResult { return html`<div class="pf-c-form__group"> <label class="pf-c-form__label"> <span class="pf-c-form__label-text">${this.label}</span> ${this.required ? html`<span class="pf-c-form__label-required" aria-hidden="true">*</span>` : html``} </label> <slot></slot> ${(this._errors || []).map((error) => { return html`<p class="pf-c-form__helper-text pf-m-error"> <span class="pf-c-form__helper-text-icon"> <i class="fas fa-exclamation-circle" aria-hidden="true"></i> </span >${error.string} </p>`; })} </div>`; } } declare global { interface HTMLElementTagNameMap { "ak-form-element": FormElement; } }