@keycloakify/keycloak-admin-ui
Version:
Repackaged Keycloak Admin UI
39 lines • 2.08 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { KeycloakDataTable } from "../ui-shared";
import { Button, Modal, ModalVariant } from "@patternfly/react-core";
import { TableText } from "@patternfly/react-table";
import { differenceBy } from "lodash-es";
import { useState } from "react";
import { useTranslation } from "react-i18next";
import { useAdminClient } from "../admin-client";
export const OrganizationModal = ({ isJoin = true, existingOrgs, onAdd, onClose, }) => {
const { adminClient } = useAdminClient();
const { t } = useTranslation();
const [selectedRows, setSelectedRows] = useState([]);
const loader = async (first, max, search) => {
const params = {
first,
search,
max: max + existingOrgs.length,
};
const orgs = await adminClient.organizations.find(params);
return differenceBy(orgs, existingOrgs, "id");
};
return (_jsx(Modal, { variant: ModalVariant.small, title: isJoin ? t("joinOrganization") : t("sendInvitation"), isOpen: true, onClose: onClose, actions: [
_jsx(Button, { "data-testid": "join", variant: "primary", onClick: async () => {
await onAdd(selectedRows);
onClose();
}, children: isJoin ? t("join") : t("send") }, "confirm"),
_jsx(Button, { "data-testid": "cancel", variant: "link", onClick: onClose, children: t("cancel") }, "cancel"),
], children: _jsx(KeycloakDataTable, { loader: loader, isPaginated: true, ariaLabelKey: "organizationsList", searchPlaceholderKey: "searchOrganization", canSelectAll: true, onSelect: (rows) => setSelectedRows([...rows]), columns: [
{
name: "name",
displayKey: "organizationName",
},
{
name: "description",
cellRenderer: (row) => (_jsx(TableText, { wrapModifier: "truncate", children: row.description })),
},
] }) }));
};
//# sourceMappingURL=OrganizationModal.js.map