/* eslint-disable */ // @ts-nocheck import { FormErrorText, HelpItem, useFetch, } from "../../../shared/keycloak-ui-shared"; import { Button, FormGroup } from "../../../shared/@patternfly/react-core"; import { MinusCircleIcon } from "../../../shared/@patternfly/react-icons"; import { Table, Tbody, Td, Th, Thead, Tr } from "../../../shared/@patternfly/react-table"; import { useState } from "react"; import { useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { useAdminClient } from "../../admin-client"; import { AddRoleButton, AddRoleMappingModal, FilterType, } from "../../components/role-mapping/AddRoleMappingModal"; import { Row, ServiceRole } from "../../components/role-mapping/RoleMapping"; type RoleSelectorProps = { name: string; isRadio?: boolean; }; export const RoleSelect = ({ name, isRadio = false }: RoleSelectorProps) => { const { adminClient } = useAdminClient(); const { t } = useTranslation(); const { getValues, setValue, formState: { errors }, } = useFormContext<{ [key: string]: string[] }>(); const values = getValues(name); const [isModalOpen, setIsModalOpen] = useState(false); const [selectedRoles, setSelectedRoles] = useState([]); const [filterType, setFilterType] = useState("clients"); useFetch( async () => { if (values.length > 0) { const roles = await Promise.all( values.map((id) => adminClient.roles.findOneById({ id })), ); return Promise.all( roles.map(async (role) => ({ role: role!, client: role!.clientRole ? await adminClient.clients.findOne({ id: role?.containerId! }) : undefined, })), ); } return []; }, setSelectedRoles, [], ); return ( } fieldId={name} isRequired > {isModalOpen && ( { setValue(name, [ ...(!isRadio ? values : []), ...rows .filter((row) => row.role.id !== undefined) .map((row) => row.role.id!), ]); setSelectedRoles(isRadio ? rows : [...selectedRoles, ...rows]); setIsModalOpen(false); }} onClose={() => setIsModalOpen(false)} filterType={filterType} /> )} { setFilterType(type); setIsModalOpen(true); }} /> {selectedRoles.length > 0 && ( {selectedRoles.map((row) => ( ))}
{t("roles")}
)} {errors[name] && }
); };