UNPKG

@keycloakify/keycloak-admin-ui

Version:
55 lines 4.05 kB
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime"; import { Button, ButtonVariant, Divider, Text, TextVariants, } from "@patternfly/react-core"; import { PlusCircleIcon } from "@patternfly/react-icons"; import { Table, Tbody, Td, Th, Thead, Tr } from "@patternfly/react-table"; import { useEffect, useState } from "react"; import { useFormContext, useWatch } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { useConfirmDialog } from "../../../components/confirm-dialog/ConfirmDialog"; import useToggle from "../../../utils/useToggle"; import { AddValidatorDialog } from "../../../realm-settings/user-profile/attribute/AddValidatorDialog"; import "../../realm-settings-section.css"; export const AttributeValidations = () => { const { t } = useTranslation(); const [addValidatorModalOpen, toggleModal] = useToggle(); const [validatorToDelete, setValidatorToDelete] = useState(); const { setValue, control, register, getValues } = useFormContext(); const validators = useWatch({ name: "validations", control, defaultValue: [], }); useEffect(() => { register("validations"); }, [register]); const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({ titleKey: t("deleteValidatorConfirmTitle"), messageKey: t("deleteValidatorConfirmMsg", { validatorName: validatorToDelete, }), continueButtonLabel: "delete", continueButtonVariant: ButtonVariant.danger, onConfirm: async () => { const updatedValidators = validators.filter((validator) => validator.key !== validatorToDelete); setValue("validations", [...updatedValidators]); }, }); return (_jsxs(_Fragment, { children: [addValidatorModalOpen && (_jsx(AddValidatorDialog, { selectedValidators: validators, onConfirm: (newValidator) => { const annotations = getValues("annotations"); if (newValidator.id === "options" && !annotations.find((a) => a.key === "inputType")) { setValue("annotations", [ ...annotations, { key: "inputType", value: "select" }, ]); } setValue("validations", [ ...validators, { key: newValidator.id, value: newValidator.config }, ]); }, toggleDialog: toggleModal })), _jsx(DeleteConfirm, {}), _jsxs("div", { className: "kc-attributes-validations", children: [_jsx(Button, { id: "addValidator", onClick: () => toggleModal(), variant: "link", "data-testid": "addValidator", className: "kc--attributes-validations--add-validation-button", icon: _jsx(PlusCircleIcon, {}), children: t("addValidator") }), _jsx(Divider, {}), validators.length !== 0 ? (_jsxs(Table, { children: [_jsx(Thead, { children: _jsxs(Tr, { children: [_jsx(Th, { children: t("validatorColNames.colName") }), _jsx(Th, { children: t("validatorColNames.colConfig") }), _jsx(Th, { "aria-hidden": "true" })] }) }), _jsx(Tbody, { children: validators.map((validator) => (_jsxs(Tr, { children: [_jsx(Td, { dataLabel: t("validatorColNames.colName"), children: validator.key }), _jsx(Td, { dataLabel: t("validatorColNames.colConfig"), children: JSON.stringify(validator.value) }), _jsx(Td, { className: "kc--attributes-validations--action-cell", children: _jsx(Button, { variant: "link", "data-testid": "deleteValidator", onClick: () => { toggleDeleteDialog(); setValidatorToDelete(validator.key); }, children: t("delete") }, "validator") })] }, validator.key))) })] })) : (_jsx(Text, { className: "kc-emptyValidators", component: TextVariants.p, children: t("emptyValidators") }))] })] })); }; //# sourceMappingURL=AttributeValidations.js.map