UNPKG

@keycloakify/keycloak-admin-ui

Version:
60 lines 3.63 kB
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