/* eslint-disable */ // @ts-nocheck import GroupRepresentation from "@keycloak/keycloak-admin-client/lib/defs/groupRepresentation"; 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 { Controller, useFormContext } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { useAdminClient } from "../../admin-client"; import type { ComponentProps } from "../../components/dynamic/components"; import { GroupPickerDialog } from "../../components/group/GroupPickerDialog"; import { GroupResourceContext } from "../../context/group-resource/GroupResourceContext"; type GroupSelectProps = Omit & { variant?: "typeahead" | "typeaheadMulti"; isRequired?: boolean; }; const convertGroups = (groups: GroupRepresentation[]): string[] => groups.map(({ id }) => id!); export const GroupSelect = ({ name, label, helpText, defaultValue, isDisabled = false, isRequired, variant = "typeaheadMulti", }: GroupSelectProps) => { const { adminClient } = useAdminClient(); const { t } = useTranslation(); const { control, setValue, getValues, formState: { errors }, } = useFormContext(); const values: string[] = getValues(name!); const [open, setOpen] = useState(false); const [groups, setGroups] = useState([]); useFetch( () => { if (values.length > 0) { return Promise.all( (values as string[]).map((id) => adminClient.groups.findOne({ id })), ); } return Promise.resolve([]); }, (groups) => { setGroups(groups.flat().filter((g) => g) as GroupRepresentation[]); }, [], ); const selectOne = variant === "typeahead"; return ( } fieldId="groups" isRequired={isRequired} > !isRequired || (value && value.length > 0), }} render={({ field }) => ( <> {open && ( { if (selectOne) { field.onChange(convertGroups(selectGroup || [])); setGroups(selectGroup || []); } else { field.onChange([ ...(field.value || []), ...convertGroups(selectGroup || []), ]); setGroups([...groups, ...(selectGroup || [])]); } setOpen(false); }} onClose={() => { setOpen(false); }} filterGroups={groups} /> )} )} /> {groups.length > 0 && ( {groups.map((group) => ( ))}
{t("groups")}
{group.path}
)} {errors[name!] && }
); };