import React, { useState } from "react"; import { useTranslation } from "react-i18next"; import { Modal, ModalVariant } from "@patternfly/react-core"; import { TableComposable, Tbody, Td, Th, Thead, Tr, } from "@patternfly/react-table"; import type { KeyValueType } from "../../../components/attribute-form/attribute-convert"; import { AddValidatorRoleDialog } from "./AddValidatorRoleDialog"; import { Validator, validators as allValidator } from "./Validators"; import useToggle from "../../../utils/useToggle"; export type AddValidatorDialogProps = { selectedValidators: KeyValueType[]; toggleDialog: () => void; onConfirm: (newValidator: Validator) => void; }; export const AddValidatorDialog = ({ selectedValidators, toggleDialog, onConfirm, }: AddValidatorDialogProps) => { const { t } = useTranslation("realm-settings"); const [selectedValidator, setSelectedValidator] = useState(); const [validators, setValidators] = useState(() => allValidator.filter( ({ name }) => !selectedValidators.map(({ key }) => key).includes(name) ) ); const [addValidatorRoleModalOpen, toggleModal] = useToggle(); return ( <> {addValidatorRoleModalOpen && ( { onConfirm(newValidator); setValidators( validators.filter(({ name }) => name !== newValidator.name) ); }} open={addValidatorRoleModalOpen} toggleDialog={toggleModal} selected={selectedValidator!} /> )} {t("validatorDialogColNames.colName")} {t("validatorDialogColNames.colDescription")} {validators.map((validator) => ( { setSelectedValidator(validator); toggleModal(); }} isHoverable > {validator.name} {validator.description} ))} ); };