@keycloakify/keycloak-admin-ui
Version:
Repackaged Keycloak Admin UI
37 lines • 3.36 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
import { CodeEditor } from "@patternfly/react-code-editor";
import { Button, FormGroup, FormHelperText, HelperText, HelperTextItem, Modal, ModalVariant, } from "@patternfly/react-core";
import { useState, } from "react";
import { useTranslation } from "react-i18next";
import { FileUpload } from "../../components/json-file-upload/patternfly/FileUpload";
export const FileUploadForm = ({ id, onChange, helpText = "helpFileUpload", unWrap = false, language, extension, ...rest }) => {
const { t } = useTranslation();
const defaultUpload = {
value: "",
filename: "",
isLoading: false,
modal: false,
};
const [fileUpload, setFileUpload] = useState(defaultUpload);
const removeDialog = () => setFileUpload({ ...fileUpload, modal: false });
const handleFileInputChange = (_event, file) => {
setFileUpload({ ...fileUpload, filename: file.name });
};
const handleTextOrDataChange = (value) => {
setFileUpload({ ...fileUpload, value });
onChange(value);
};
const handleClear = () => {
setFileUpload({ ...fileUpload, modal: true });
};
return (_jsxs(_Fragment, { children: [fileUpload.modal && (_jsx(Modal, { variant: ModalVariant.small, title: t("clearFile"), isOpen: true, onClose: removeDialog, actions: [
_jsx(Button, { variant: "primary", "data-testid": "clear-button", onClick: () => {
setFileUpload(defaultUpload);
onChange("");
}, children: t("clear") }, "confirm"),
_jsx(Button, { "data-testid": "cancel", variant: "link", onClick: removeDialog, children: t("cancel") }, "cancel"),
], children: t("clearFileExplain") })), unWrap && (_jsx(FileUpload, { id: id, ...rest, type: "text", value: fileUpload.value, filename: fileUpload.filename, onFileInputChange: handleFileInputChange, onDataChange: handleTextOrDataChange, onTextChange: handleTextOrDataChange, onClearClick: handleClear, onReadStarted: () => setFileUpload({ ...fileUpload, isLoading: true }), onReadFinished: () => setFileUpload({ ...fileUpload, isLoading: false }), isLoading: fileUpload.isLoading, dropzoneProps: {
accept: { "application/text": [extension] },
} })), !unWrap && (_jsxs(FormGroup, { label: t("resourceFile"), fieldId: id, children: [_jsx(FileUpload, { "data-testid": id, id: id, ...rest, type: "text", value: fileUpload.value, filename: fileUpload.filename, onFileInputChange: handleFileInputChange, onDataChange: handleTextOrDataChange, onTextChange: handleTextOrDataChange, onClearClick: handleClear, onReadStarted: () => setFileUpload({ ...fileUpload, isLoading: true }), onReadFinished: () => setFileUpload({ ...fileUpload, isLoading: false }), isLoading: fileUpload.isLoading, hideDefaultPreview: true, children: !rest.hideDefaultPreview && (_jsx(CodeEditor, { isLineNumbersVisible: true, code: fileUpload.value, language: language, height: "128px", onChange: handleTextOrDataChange, isReadOnly: !rest.allowEditingUploadedText })) }), _jsx(FormHelperText, { children: _jsx(HelperText, { children: _jsx(HelperTextItem, { children: t(helpText) }) }) })] }))] }));
};
//# sourceMappingURL=FileUploadForm.js.map