@keycloakify/keycloak-admin-ui
Version:
Repackaged Keycloak Admin UI
85 lines • 4.59 kB
JavaScript
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