UNPKG

@keycloakify/keycloak-admin-ui

Version:
85 lines 4.59 kB
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime"; import { AlertVariant, PageSection, useWizardContext, Wizard, WizardFooter, WizardStep, } from "@patternfly/react-core"; import { FormProvider, useForm } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { useNavigate } from "react-router-dom"; import { useAdminClient } from "../../admin-client"; import { useAlerts } from "../../ui-shared"; import { FormAccess } from "../../components/form/FormAccess"; import { ViewHeader } from "../../components/view-header/ViewHeader"; import { useRealm } from "../../context/realm-context/RealmContext"; import { convertFormValuesToObject } from "../../util"; import { toClient } from "../../clients/routes/Client"; import { toClients } from "../../clients/routes/Clients"; import { CapabilityConfig } from "../../clients/add/CapabilityConfig"; import { GeneralSettings } from "../../clients/add/GeneralSettings"; import { LoginSettings } from "../../clients/add/LoginSettings"; import { useState } from "react"; const NewClientFooter = (newClientForm) => { const { t } = useTranslation(); const { trigger } = newClientForm; const { activeStep, goToNextStep, goToPrevStep, close } = useWizardContext(); const forward = async (onNext) => { if (!(await trigger())) { return; } onNext === null || onNext === void 0 ? void 0 : onNext(); }; return (_jsx(WizardFooter, { activeStep: activeStep, onNext: () => forward(goToNextStep), onBack: goToPrevStep, onClose: close, isBackDisabled: activeStep.index === 1, backButtonText: t("back"), nextButtonText: t("next"), cancelButtonText: t("cancel") })); }; export default function NewClientForm() { const { adminClient } = useAdminClient(); const { t } = useTranslation(); const { realm } = useRealm(); const navigate = useNavigate(); const [saving, setSaving] = useState(false); const { addAlert, addError } = useAlerts(); const form = useForm({ defaultValues: { protocol: "openid-connect", clientId: "", name: "", description: "", publicClient: true, authorizationServicesEnabled: false, serviceAccountsEnabled: false, implicitFlowEnabled: false, directAccessGrantsEnabled: true, standardFlowEnabled: true, frontchannelLogout: true, attributes: { saml_idp_initiated_sso_url_name: "", }, }, }); const { getValues, watch } = form; const protocol = watch("protocol"); const save = async () => { var _a; if (saving) return; setSaving(true); const client = convertFormValuesToObject(getValues()); try { const newClient = await adminClient.clients.create({ ...client, clientId: (_a = client.clientId) === null || _a === void 0 ? void 0 : _a.trim(), }); addAlert(t("createClientSuccess"), AlertVariant.success); navigate(toClient({ realm, clientId: newClient.id, tab: "settings" })); } catch (error) { addError("createClientError", error); } finally { setSaving(false); } }; const title = t("createClient"); return (_jsxs(_Fragment, { children: [_jsx(ViewHeader, { titleKey: "createClient", subKey: "clientsExplain" }), _jsx(PageSection, { variant: "light", children: _jsx(FormProvider, { ...form, children: _jsxs(Wizard, { onClose: () => navigate(toClients({ realm })), navAriaLabel: `${title} steps`, onSave: save, footer: _jsx(NewClientFooter, { ...form }), children: [_jsx(WizardStep, { name: t("generalSettings"), id: "generalSettings", children: _jsx(GeneralSettings, {}) }, "generalSettings"), _jsx(WizardStep, { name: t("capabilityConfig"), id: "capabilityConfig", isHidden: protocol === "saml", children: _jsx(CapabilityConfig, { protocol: protocol }) }, "capabilityConfig"), _jsx(WizardStep, { name: t("loginSettings"), id: "loginSettings", footer: { backButtonText: t("back"), nextButtonText: t("save"), cancelButtonText: t("cancel"), }, children: _jsx(FormAccess, { isHorizontal: true, role: "manage-clients", children: _jsx(LoginSettings, { protocol: protocol }) }) }, "loginSettings")] }) }) })] })); } //# sourceMappingURL=NewClientForm.js.map