/* eslint-disable */ // @ts-nocheck import GroupRepresentation from "@keycloak/keycloak-admin-client/lib/defs/groupRepresentation"; import { ActionList, ActionListItem, Button, Chip, ChipGroup, FormGroup, } from "../../../shared/@patternfly/react-core"; import { useContext, useState } from "react"; import { Controller, useFormContext, useWatch } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { HelpItem } from "../../../shared/keycloak-ui-shared"; import { useAdminClient } from "../../admin-client"; import { GroupsResourceContext, GroupResourceContext, } from "../../context/group-resource/GroupResourceContext"; import { useServerInfo } from "../../context/server-info/ServerInfoProvider"; import { GroupPickerDialog } from "../group/GroupPickerDialog"; import type { ComponentProps } from "./components"; export const GroupComponent = ({ name, label, helpText, required, convertToName, }: ComponentProps) => { const { t } = useTranslation(); const [open, setOpen] = useState(false); const [openOrgGroups, setOpenOrgGroups] = useState(false); const [groups, setGroups] = useState(); const { control, setValue } = useFormContext(); const { adminClient } = useAdminClient(); const serverInfo = useServerInfo(); const groupResource = useContext(GroupsResourceContext); const hasLinkedOrganization = groupResource?.isOrgGroups() ?? false; const groupTypeFieldName = convertToName("groupType"); // Get group type enum values from server const groupTypes = serverInfo.enums?.["type"] || []; const GROUP_TYPE_REALM = groupTypes.find((t: string) => t === "REALM") || "REALM"; const GROUP_TYPE_ORG = groupTypes.find((t: string) => t === "ORGANIZATION") || "ORGANIZATION"; const groupType = useWatch({ name: groupTypeFieldName, control, defaultValue: GROUP_TYPE_REALM, }); const shouldRenderOrgField = groupResource && (hasLinkedOrganization || groupType == GROUP_TYPE_ORG); return ( ( <> {open && ( { field.onChange(groups?.[0].path); setValue(groupTypeFieldName, GROUP_TYPE_REALM); setGroups(groups); setOpen(false); }} onClose={() => setOpen(false)} filterGroups={groups} /> )} {openOrgGroups && ( { field.onChange(groups?.[0].path); setValue(groupTypeFieldName, GROUP_TYPE_ORG); setGroups(groups); setOpenOrgGroups(false); }} onClose={() => setOpenOrgGroups(false)} filterGroups={groups} /> )} } fieldId={name!} isRequired={required} > {field.value && ( { field.onChange(undefined); setValue(groupTypeFieldName, undefined); }} > {shouldRenderOrgField && ( <> {groupType === GROUP_TYPE_REALM ? t("realm") : t("organization")} :  )} {field.value} )} {shouldRenderOrgField && ( )} )} /> ); };