@keycloakify/keycloak-admin-ui
Version:
Repackaged Keycloak Admin UI
82 lines • 4.17 kB
JavaScript
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