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