UNPKG

@keycloakify/keycloak-admin-ui

Version:
82 lines 4.17 kB
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime"; import { useAlerts, useFetch } from "../../ui-shared"; import { Button, ButtonVariant, ToolbarItem } from "@patternfly/react-core"; 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 { KeycloakDataTable } from "../../ui-shared"; import { useRealm } from "../../context/realm-context/RealmContext"; import useToggle from "../../utils/useToggle"; import { toRegistrationProvider } from "../../clients/routes/AddRegistrationProvider"; import { AddProviderDialog } from "../../clients/registration/AddProviderDialog"; const DetailLink = (comp) => { const { realm } = useRealm(); const { subTab } = useParams(); return (_jsx(Link, { to: toRegistrationProvider({ realm, subTab: subTab || "anonymous", providerId: comp.providerId, id: comp.id, }), children: comp.name }, comp.id)); }; export const ClientRegistrationList = ({ subType, }) => { const { adminClient } = useAdminClient(); const { t } = useTranslation(); const { subTab } = useParams(); const navigate = useNavigate(); const { addAlert, addError } = useAlerts(); const { realm } = useRealm(); const [policies, setPolicies] = useState([]); const [selectedPolicy, setSelectedPolicy] = useState(); const [isAddDialogOpen, toggleAddDialog] = useToggle(); useFetch(() => adminClient.components.find({ type: "org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy", }), (policies) => setPolicies(policies.filter((p) => p.subType === subType)), [selectedPolicy]); const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({ titleKey: "clientRegisterPolicyDeleteConfirmTitle", messageKey: t("clientRegisterPolicyDeleteConfirm", { name: selectedPolicy === null || selectedPolicy === void 0 ? void 0 : selectedPolicy.name, }), continueButtonLabel: "delete", continueButtonVariant: ButtonVariant.danger, onConfirm: async () => { try { await adminClient.components.del({ realm, id: selectedPolicy === null || selectedPolicy === void 0 ? void 0 : selectedPolicy.id, }); addAlert(t("clientRegisterPolicyDeleteSuccess")); setSelectedPolicy(undefined); } catch (error) { addError("clientRegisterPolicyDeleteError", error); } }, }); return (_jsxs(_Fragment, { children: [isAddDialogOpen && (_jsx(AddProviderDialog, { onConfirm: (providerId) => navigate(toRegistrationProvider({ realm, subTab: subTab || "anonymous", providerId, })), toggleDialog: toggleAddDialog })), _jsx(DeleteConfirm, {}), _jsx(KeycloakDataTable, { ariaLabelKey: "clientRegistration", searchPlaceholderKey: t("searchClientRegistration"), "data-testid": `clientRegistration-${subType}`, loader: policies, toolbarItem: _jsx(ToolbarItem, { children: _jsx(Button, { "data-testid": `createPolicy-${subType}`, onClick: toggleAddDialog, children: t("createPolicy") }) }), actions: [ { title: t("delete"), onRowClick: (policy) => { setSelectedPolicy(policy); toggleDeleteDialog(); }, }, ], columns: [ { name: "name", displayKey: "name", cellRenderer: DetailLink, }, { name: "providerId", displayKey: "providerId", }, ] })] })); }; //# sourceMappingURL=ClientRegistrationList.js.map