/* eslint-disable */ // @ts-nocheck import ComponentRepresentation from "@keycloak/keycloak-admin-client/lib/defs/componentRepresentation"; import type { ComponentQuery } from "@keycloak/keycloak-admin-client/lib/resources/components"; import { KeycloakDataTable, ListEmptyState, useAlerts, } from "../../shared/keycloak-ui-shared"; import { Button, ButtonVariant, PageSection, ToolbarItem, } from "../../shared/@patternfly/react-core"; import { IRowData } from "../../shared/@patternfly/react-table"; import { get } from "lodash-es"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import { Link, useNavigate, useParams } from "react-router-dom"; import { useAdminClient } from "../admin-client"; import { useConfirmDialog } from "../components/confirm-dialog/ConfirmDialog"; import { ViewHeader } from "../components/view-header/ViewHeader"; import { useRealm } from "../context/realm-context/RealmContext"; import { useServerInfo } from "../context/server-info/ServerInfoProvider"; import { PAGE_PROVIDER } from "./constants"; import { addDetailPage, PageListParams, toDetailPage } from "./routes"; type DetailLinkProps = { obj: ComponentRepresentation; field: string; }; const DetailLink = ({ obj, field }: DetailLinkProps) => { const { realm } = useRealm(); const value = get(obj, field); return ( {value} ); }; export default function PageList() { const { adminClient } = useAdminClient(); const { t } = useTranslation(); const { addAlert, addError } = useAlerts(); const navigate = useNavigate(); const { providerId } = useParams(); const [key, setKey] = useState(0); const refresh = () => setKey(key + 1); const { realm: realmName, realmRepresentation: realm } = useRealm(); const [selectedItem, setSelectedItem] = useState(); const { componentTypes } = useServerInfo(); const pages = componentTypes?.[PAGE_PROVIDER]; const page = pages?.find((p) => p.id === providerId)!; const loader = { signal: { providerId }, loader: async () => { const params: ComponentQuery = { parent: realm.id, type: PAGE_PROVIDER, providerId, }; return await adminClient.components.find({ ...params }); }, }; const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({ titleKey: "itemDeleteConfirmTitle", messageKey: "itemDeleteConfirm", continueButtonLabel: "delete", continueButtonVariant: ButtonVariant.danger, onConfirm: async () => { try { await adminClient.components.del({ id: selectedItem!.id!, }); addAlert(t("itemDeletedSuccess")); refresh(); } catch (error) { addError("itemSaveError", error); } }, }); return ( } actionResolver={(item: IRowData) => [ { title: t("delete"), onClick() { setSelectedItem(item.data); toggleDeleteDialog(); }, }, ]} searchPlaceholderKey="searchItem" loader={loader} columns={[ ...( page.metadata.displayFields || page.properties.slice(0, 3).map((p) => p.name) ).map((name: string, index: number) => ({ name: `config.${name}[0]`, displayKey: page.properties.find((p) => p.name === name)!.label, cellRenderer: index === 0 ? (obj: ComponentRepresentation) => ( ) : undefined, })), ]} ariaLabelKey="list" emptyState={ navigate(addDetailPage({ realm: realmName, providerId: page.id })) } /> } /> ); }