UNPKG

@keycloakify/keycloak-admin-ui

Version:
39 lines 2.08 kB
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