
* main: (77 commits) web: Ignore Storybook when running codespell. (#13454) core: bump ruff from 0.9.9 to 0.9.10 (#13448) core: bump webauthn from 2.5.1 to 2.5.2 (#13449) website/docs: backup and restore: remove extra period (#13440) website: bump prismjs from 1.29.0 to 1.30.0 in /website (#13456) web: bump prismjs from 1.29.0 to 1.30.0 in /web (#13455) web: admin interface: faster card load (#13331) web/admin: fix display bug for assigned users in application bindings in the wizard (#13435) website: bump the build group across 1 directory with 9 updates (#13442) core: bump django from 5.0.12 to 5.0.13 (#13425) providers/SCIM: fix object exists error for users, attempt to look up user ID in remote system (#13437) website/docs: sys mgmt: document authentik backups/restoration (#12943) website: fix build in docker (#13430) website/integrations: zipline: add (#13257) translate: Updates for file web/xliff/en.xlf in fr (#13431) lifecycle/aws: bump aws-cdk from 2.1002.0 to 2.1003.0 in /lifecycle/aws (#13426) translate: Updates for file web/xliff/en.xlf in zh_CN (#13428) translate: Updates for file web/xliff/en.xlf in zh-Hans (#13429) core, web: update translations (#13423) website: add a better edit this page element (#13391) ...
64 lines
2.1 KiB
TypeScript
64 lines
2.1 KiB
TypeScript
import { camelToSnake } from "@goauthentik/common/utils.js";
|
|
import "@goauthentik/components/ak-number-input";
|
|
import "@goauthentik/components/ak-radio-input";
|
|
import "@goauthentik/components/ak-switch-input";
|
|
import "@goauthentik/components/ak-text-input";
|
|
import { AKElement } from "@goauthentik/elements/Base.js";
|
|
import { KeyUnknown, serializeForm } from "@goauthentik/elements/forms/Form";
|
|
import "@goauthentik/elements/forms/FormGroup";
|
|
import "@goauthentik/elements/forms/HorizontalFormElement";
|
|
import { HorizontalFormElement } from "@goauthentik/elements/forms/HorizontalFormElement";
|
|
|
|
import { property, query } from "lit/decorators.js";
|
|
|
|
import { styles as AwadStyles } from "../../ApplicationWizardFormStepStyles.css";
|
|
|
|
import { type ApplicationWizardState, type OneOfProvider } from "../../types";
|
|
|
|
export class ApplicationWizardProviderForm<T extends OneOfProvider> extends AKElement {
|
|
static get styles() {
|
|
return AwadStyles;
|
|
}
|
|
|
|
label = "";
|
|
|
|
@property({ type: Object, attribute: false })
|
|
wizard!: ApplicationWizardState;
|
|
|
|
@property({ type: Object, attribute: false })
|
|
errors: Record<string | number | symbol, string> = {};
|
|
|
|
@query("form#providerform")
|
|
form!: HTMLFormElement;
|
|
|
|
get formValues(): KeyUnknown | undefined {
|
|
const elements = [
|
|
...Array.from(
|
|
this.form.querySelectorAll<HorizontalFormElement>("ak-form-element-horizontal"),
|
|
),
|
|
...Array.from(this.form.querySelectorAll<HTMLElement>("[data-ak-control=true]")),
|
|
];
|
|
return serializeForm(elements as unknown as NodeListOf<HorizontalFormElement>);
|
|
}
|
|
|
|
get valid() {
|
|
this.errors = {};
|
|
return this.form.checkValidity();
|
|
}
|
|
|
|
errorMessages(name: string) {
|
|
return name in this.errors
|
|
? [this.errors[name]]
|
|
: (this.wizard.errors?.provider?.[name] ??
|
|
this.wizard.errors?.provider?.[camelToSnake(name)] ??
|
|
[]);
|
|
}
|
|
|
|
isValid(name: keyof T) {
|
|
return !(
|
|
(this.wizard.errors?.provider?.[name as string] ?? []).length > 0 ||
|
|
this.errors?.[name] !== undefined
|
|
);
|
|
}
|
|
}
|