UNPKG

@keycloakify/keycloak-admin-ui

Version:
44 lines 3.29 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import { Alert, AlertVariant, Button, ButtonVariant, Form, FormGroup, Modal, ModalVariant, Switch, Text, TextContent, } from "@patternfly/react-core"; import { saveAs } from "file-saver"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import { useAdminClient } from "../admin-client"; import { useAlerts } from "../ui-shared"; import { useRealm } from "../context/realm-context/RealmContext"; import { prettyPrintJSON } from "../util"; import "./partial-export.css"; export const PartialExportDialog = ({ isOpen, onClose, }) => { const { adminClient } = useAdminClient(); const { t } = useTranslation(); const { realm } = useRealm(); const { addAlert, addError } = useAlerts(); const [exportGroupsAndRoles, setExportGroupsAndRoles] = useState(false); const [exportClients, setExportClients] = useState(false); const [isExporting, setIsExporting] = useState(false); const showWarning = exportGroupsAndRoles || exportClients; async function exportRealm() { setIsExporting(true); try { const realmExport = await adminClient.realms.export({ realm, exportClients, exportGroupsAndRoles, }); saveAs(new Blob([prettyPrintJSON(realmExport)], { type: "application/json", }), "realm-export.json"); addAlert(t("exportSuccess"), AlertVariant.success); onClose(); } catch (error) { addError("exportFail", error); } setIsExporting(false); } return (_jsxs(Modal, { variant: ModalVariant.small, title: t("partialExport"), isOpen: isOpen, onClose: onClose, actions: [ _jsx(Button, { "data-testid": "export-button", isDisabled: isExporting, onClick: exportRealm, children: t("export") }, "export"), _jsx(Button, { "data-testid": "cancel-button", variant: ButtonVariant.link, onClick: onClose, children: t("cancel") }, "cancel"), ], children: [_jsx(TextContent, { children: _jsx(Text, { children: t("partialExportHeaderText") }) }), _jsxs(Form, { isHorizontal: true, className: "keycloak__realm-settings__partial-import_form", children: [_jsx(FormGroup, { label: t("includeGroupsAndRoles"), fieldId: "include-groups-and-roles-check", hasNoPaddingTop: true, children: _jsx(Switch, { id: "include-groups-and-roles-check", "data-testid": "include-groups-and-roles-check", isChecked: exportGroupsAndRoles, onChange: (_event, val) => setExportGroupsAndRoles(val), label: t("on"), labelOff: t("off"), "aria-label": t("includeGroupsAndRoles") }) }), _jsx(FormGroup, { label: t("includeClients"), fieldId: "include-clients-check", hasNoPaddingTop: true, children: _jsx(Switch, { id: "include-clients-check", "data-testid": "include-clients-check", onChange: (_event, val) => setExportClients(val), isChecked: exportClients, label: t("on"), labelOff: t("off"), "aria-label": t("includeClients") }) })] }), showWarning && (_jsx(Alert, { "data-testid": "warning-message", variant: "warning", component: "p", title: t("exportWarningTitle"), isInline: true, children: t("exportWarningDescription") }))] })); }; //# sourceMappingURL=PartialExport.js.map