import "#components/ak-slug-input"; import "#elements/ak-dual-select/ak-dual-select-dynamic-selected-provider"; import "#elements/forms/FormGroup"; import "#elements/forms/HorizontalFormElement"; import { propertyMappingsProvider, propertyMappingsSelector } from "./SCIMSourceFormHelpers.js"; import { DEFAULT_CONFIG } from "#common/api/config"; import { placeholderHelperText } from "#admin/helperText"; import { BaseSourceForm } from "#admin/sources/BaseSourceForm"; import { SCIMSource, SCIMSourceRequest, SourcesApi } from "@goauthentik/api"; import { msg } from "@lit/localize"; import { html, TemplateResult } from "lit"; import { customElement } from "lit/decorators.js"; import { ifDefined } from "lit/directives/if-defined.js"; @customElement("ak-source-scim-form") export class SCIMSourceForm extends BaseSourceForm { async loadInstance(pk: string): Promise { return new SourcesApi(DEFAULT_CONFIG) .sourcesScimRetrieve({ slug: pk, }) .then((source) => { return source; }); } async send(data: SCIMSource): Promise { if (this.instance?.slug) { return new SourcesApi(DEFAULT_CONFIG).sourcesScimPartialUpdate({ slug: this.instance.slug, patchedSCIMSourceRequest: data, }); } return new SourcesApi(DEFAULT_CONFIG).sourcesScimCreate({ sCIMSourceRequest: data as unknown as SCIMSourceRequest, }); } renderForm(): TemplateResult { return html`

${msg("Property mappings for user creation.")}

${msg("Property mappings for group creation.")}

${placeholderHelperText}

`; } } declare global { interface HTMLElementTagNameMap { "ak-source-scim-form": SCIMSourceForm; } }