import { useEffect, useState } from "react"; import { Button, ButtonVariant, Divider, Flex, FlexItem, Text, TextVariants, } from "@patternfly/react-core"; import { useTranslation } from "react-i18next"; import "../../realm-settings-section.css"; import { PlusCircleIcon } from "@patternfly/react-icons"; import { AddValidatorDialog } from "../attribute/AddValidatorDialog"; import { TableComposable, Tbody, Td, Th, Thead, Tr, } from "@patternfly/react-table"; import { useConfirmDialog } from "../../../components/confirm-dialog/ConfirmDialog"; import useToggle from "../../../utils/useToggle"; import { useFormContext, useWatch } from "react-hook-form"; import type { KeyValueType } from "../../../components/key-value-form/key-value-convert"; import "../../realm-settings-section.css"; export const AttributeValidations = () => { const { t } = useTranslation("realm-settings"); const [addValidatorModalOpen, toggleModal] = useToggle(); const [validatorToDelete, setValidatorToDelete] = useState<{ name: string; }>(); const { setValue, control, register } = useFormContext(); const validators = useWatch({ name: "validations", control, defaultValue: [], }); useEffect(() => { register("validations"); }, []); const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({ titleKey: t("deleteValidatorConfirmTitle"), messageKey: t("deleteValidatorConfirmMsg", { validatorName: validatorToDelete?.name!, }), continueButtonLabel: "common:delete", continueButtonVariant: ButtonVariant.danger, onConfirm: async () => { const updatedValidators = validators.filter( (validator) => validator.key !== validatorToDelete?.name ); setValue("validations", [...updatedValidators]); }, }); return ( <> {addValidatorModalOpen && ( { setValue("validations", [ ...validators, { key: newValidator.name, value: newValidator.config }, ]); }} toggleDialog={toggleModal} /> )}
{t("validatorColNames.colName")} {t("validatorColNames.colConfig")} {validators.map((validator) => ( {validator.key} {JSON.stringify(validator.value)} ))} {validators.length === 0 && ( {t("realm-settings:emptyValidators")} )}
); };