import { t } from "@lingui/macro"; import { CoreApi, User } from "authentik-api"; import { customElement, property } from "lit-element"; import { TemplateResult, html } from "lit-html"; import { AKResponse } from "../../api/Client"; import { DEFAULT_CONFIG } from "../../api/Config"; import { PAGE_SIZE } from "../../constants"; import { TableColumn } from "../../elements/table/Table"; import { TableModal } from "../../elements/table/TableModal"; import "../../elements/buttons/SpinnerButton"; import { first } from "../../utils"; @customElement("ak-group-member-select-table") export class MemberSelectTable extends TableModal { checkbox = true; checkboxChip = true; searchEnabled(): boolean { return true; } @property() confirm!: (selectedItems: User[]) => Promise; order = "username"; apiEndpoint(page: number): Promise> { return new CoreApi(DEFAULT_CONFIG).coreUsersList({ ordering: this.order, page: page, pageSize: PAGE_SIZE / 2, search: this.search || "", }); } columns(): TableColumn[] { return [ new TableColumn(t`Name`, "username"), new TableColumn(t`Active`, "active"), new TableColumn(t`Last login`, "last_login"), ]; } row(item: User): TemplateResult[] { return [ html`
${item.username}
${item.name}
`, html`${item.isActive ? t`Yes` : t`No`}`, html`${first(item.lastLogin?.toLocaleString(), "-")}`, ]; } renderSelectedChip(item: User): TemplateResult { return html`${item.username}`; } renderModalInner(): TemplateResult { return html`

${t`Select users to add`}

${this.renderTable()}
`; } }