/
dimamir
/
authentik
Обзор
Документация
Войти
/
dimamir
/
authentik
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
web/src/admin/groups/MemberSelectModal.ts
94 строки
3 KB
Ken Sternberg
web: add HTMLTagNameElementMaps to everything to activate lit analyzer (#10217)
15 июл 2024, 20:54
Не верифицирован
15 июл 2024, 20:54
ee58cf0
Код
Авторство
О чём код?
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { getRelativeTime } from "@goauthentik/common/utils"; import "@goauthentik/components/ak-status-label"; import "@goauthentik/elements/buttons/SpinnerButton"; import { PaginatedResponse } from "@goauthentik/elements/table/Table"; import { TableColumn } from "@goauthentik/elements/table/Table"; import { TableModal } from "@goauthentik/elements/table/TableModal"; import { msg } from "@lit/localize"; import { TemplateResult, html } from "lit"; import { customElement, property } from "lit/decorators.js"; import { CoreApi, User } from "@goauthentik/api"; @customElement("ak-group-member-select-table") export class MemberSelectTable extends TableModal<User> { checkbox = true; checkboxChip = true; searchEnabled(): boolean { return true; } @property() confirm!: (selectedItems: User[]) => Promise<unknown>; order = "username"; async apiEndpoint(): Promise<PaginatedResponse<User>> { return new CoreApi(DEFAULT_CONFIG).coreUsersList({ ...(await this.defaultEndpointConfig()), includeGroups: false, }); } columns(): TableColumn[] { return [ new TableColumn(msg("Name"), "username"), new TableColumn(msg("Active"), "is_active"), new TableColumn(msg("Last login"), "last_login"), ]; } row(item: User): TemplateResult[] { return [ html`<div>${item.username}</div> <small>${item.name}</small>`, html` <ak-status-label type="warning" ?good=${item.isActive}></ak-status-label>`, html`${item.lastLogin ? html`<div>${getRelativeTime(item.lastLogin)}</div> <small>${item.lastLogin.toLocaleString()}</small>` : msg("-")}`, ]; } renderSelectedChip(item: User): TemplateResult { return html`${item.username}`; } renderModalInner(): TemplateResult { return html`<section class="pf-c-modal-box__header pf-c-page__main-section pf-m-light"> <div class="pf-c-content"> <h1 class="pf-c-title pf-m-2xl">${msg("Select users to add")}</h1> </div> </section> <section class="pf-c-modal-box__body pf-m-light">${this.renderTable()}</section> <footer class="pf-c-modal-box__footer"> <ak-spinner-button .callAction=${() => { return this.confirm(this.selectedElements).then(() => { this.open = false; }); }} class="pf-m-primary" > ${msg("Add")} </ak-spinner-button > <ak-spinner-button .callAction=${async () => { this.open = false; }} class="pf-m-secondary" > ${msg("Cancel")} </ak-spinner-button> </footer>`; } } declare global { interface HTMLElementTagNameMap { "ak-group-member-select-table": MemberSelectTable; } }