@keycloakify/keycloak-admin-ui
Version:
Repackaged Keycloak Admin UI
60 lines • 3.63 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { useAlerts, useFetch } from "../../ui-shared";
import { ActionGroup, AlertVariant, Button, ButtonVariant, Form, Modal, ModalVariant, } from "@patternfly/react-core";
import { TrashIcon } from "@patternfly/react-icons";
import { useState } from "react";
import { FormProvider, useForm } from "react-hook-form";
import { useTranslation } from "react-i18next";
import { useAdminClient } from "../../admin-client";
import { DynamicComponents } from "../../components/dynamic/DynamicComponents";
import { convertFormValuesToObject, convertToFormValues } from "../../util";
export const RequiredActionConfigModal = ({ requiredAction, onClose, }) => {
const { adminClient } = useAdminClient();
const { t } = useTranslation();
const { addAlert, addError } = useAlerts();
const [configDescription, setConfigDescription] = useState();
const form = useForm();
const { setValue, handleSubmit } = form;
// // default config all required actions should have
// const defaultConfigProperties = [];
const setupForm = (config) => {
convertToFormValues(config || {}, setValue);
};
useFetch(async () => {
const configDescription = await adminClient.authenticationManagement.getRequiredActionConfigDescription({
alias: requiredAction.alias,
});
const config = await adminClient.authenticationManagement.getRequiredActionConfig({
alias: requiredAction.alias,
});
// merge default and fetched config properties
configDescription.properties = [
//...defaultConfigProperties!,
...configDescription.properties,
];
return { configDescription, config };
}, ({ configDescription, config }) => {
setConfigDescription(configDescription);
setupForm(config);
}, []);
const save = async (saved) => {
const newConfig = convertFormValuesToObject(saved);
try {
await adminClient.authenticationManagement.updateRequiredActionConfig({ alias: requiredAction.alias }, newConfig);
setupForm(newConfig);
addAlert(t("configSaveSuccess"), AlertVariant.success);
onClose();
}
catch (error) {
addError("configSaveError", error);
}
};
return (_jsx(Modal, { variant: ModalVariant.small, isOpen: true, title: t("requiredActionConfig", { name: requiredAction.name }), onClose: onClose, children: _jsxs(Form, { id: "required-action-config-form", onSubmit: handleSubmit(save), children: [_jsx(FormProvider, { ...form, children: _jsx(DynamicComponents, { stringify: true, properties: (configDescription === null || configDescription === void 0 ? void 0 : configDescription.properties) || [] }) }), _jsxs(ActionGroup, { children: [_jsx(Button, { "data-testid": "save", variant: "primary", type: "submit", children: t("save") }), _jsx(Button, { "data-testid": "cancel", variant: ButtonVariant.link, onClick: onClose, children: t("cancel") }), _jsxs(Button, { className: "pf-v5-u-ml-3xl", "data-testid": "clear", variant: ButtonVariant.link, onClick: async () => {
await adminClient.authenticationManagement.removeRequiredActionConfig({
alias: requiredAction.alias,
});
form.reset({});
onClose();
}, children: [t("clear"), " ", _jsx(TrashIcon, {})] })] })] }) }));
};
//# sourceMappingURL=RequiredActionConfigModal.js.map