/* eslint-disable */ // @ts-nocheck import { useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import { Button, ButtonVariant, DataList, DataListCell, DataListItem, DataListItemCells, DataListItemRow, Modal, ModalVariant, Text, TextContent, TextVariants, } from "../../../shared/@patternfly/react-core"; import type ProtocolMapperRepresentation from "@keycloak/keycloak-admin-client/lib/defs/protocolMapperRepresentation"; import type { ProtocolMapperTypeRepresentation } from "@keycloak/keycloak-admin-client/lib/defs/serverInfoRepesentation"; import { useServerInfo } from "../../context/server-info/ServerInfoProvider"; import { ListEmptyState } from "../../../shared/keycloak-ui-shared"; import { KeycloakDataTable } from "../../../shared/keycloak-ui-shared"; import useLocaleSort, { mapByKey } from "../../utils/useLocaleSort"; type Row = { id: string; description: string; item: ProtocolMapperRepresentation; }; export type AddMapperDialogModalProps = { protocol: string; filter?: ProtocolMapperRepresentation[]; onConfirm: ( value: ProtocolMapperTypeRepresentation | ProtocolMapperRepresentation[], ) => void; }; export type AddMapperDialogProps = AddMapperDialogModalProps & { open: boolean; toggleDialog: () => void; }; export const AddMapperDialog = (props: AddMapperDialogProps) => { const { t } = useTranslation(); const serverInfo = useServerInfo(); const protocol = props.protocol; const protocolMappers = serverInfo.protocolMapperTypes![protocol]; const builtInMappers = serverInfo.builtinProtocolMappers![protocol]; const [filter, setFilter] = useState([]); const [selectedRows, setSelectedRows] = useState([]); const localeSort = useLocaleSort(); const allRows = useMemo( () => localeSort(builtInMappers, mapByKey("name")).map((mapper) => { const mapperType = protocolMappers.find( (type) => type.id === mapper.protocolMapper, )!; return { item: mapper, id: mapper.name!, description: mapperType.helpText, }; }), [builtInMappers, protocolMappers], ); const [rows, setRows] = useState(allRows); if (props.filter && props.filter.length !== filter.length) { setFilter(props.filter); const nameFilter = props.filter.map((f) => f.name); setRows([...allRows.filter((row) => !nameFilter.includes(row.item.name))]); } const sortedProtocolMappers = useMemo( () => localeSort(protocolMappers, mapByKey("name")), [protocolMappers], ); const isBuiltIn = !!props.filter; const header = [t("name"), t("description")]; return ( {isBuiltIn ? t("addPredefinedMappers") : t("emptySecondaryAction")} {isBuiltIn ? t("predefinedMappingDescription") : t("configureMappingDescription")} } isOpen={props.open} onClose={props.toggleDialog} actions={ isBuiltIn ? [ , , ] : [] } > {!isBuiltIn && ( { const mapper = protocolMappers.find((mapper) => mapper.id === id); props.onConfirm(mapper!); props.toggleDialog(); }} aria-label={t("addPredefinedMappers")} isCompact > ( {name} ))} /> {sortedProtocolMappers.map((mapper) => ( {mapper.name} , {mapper.helpText} , ]} /> ))} )} {isBuiltIn && ( } /> )} ); };