UNPKG

@keycloakify/keycloak-admin-ui

Version:
37 lines 3.36 kB
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