import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { uiConfig } from "@goauthentik/common/ui/config"; 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 { Provider, ProvidersApi } from "@goauthentik/api"; @customElement("ak-provider-select-table") export class ProviderSelectModal extends TableModal { checkbox = true; checkboxChip = true; searchEnabled(): boolean { return true; } @property({ type: Boolean }) backchannelOnly = false; @property() confirm!: (selectedItems: Provider[]) => Promise; order = "name"; async apiEndpoint(page: number): Promise> { return new ProvidersApi(DEFAULT_CONFIG).providersAllList({ ordering: this.order, page: page, pageSize: (await uiConfig()).pagination.perPage, search: this.search || "", backchannelOnly: this.backchannelOnly, }); } columns(): TableColumn[] { return [new TableColumn(msg("Name"), "username"), new TableColumn(msg("Type"))]; } row(item: Provider): TemplateResult[] { return [ html`
${item.name}
`, html`${item.verboseName}`, ]; } renderSelectedChip(item: Provider): TemplateResult { return html`${item.name}`; } renderModalInner(): TemplateResult { return html`

${msg("Select providers to add to application")}

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