1 | import { __rest } from "tslib";
|
2 | import * as React from 'react';
|
3 | import styles from '@patternfly/react-styles/css/components/FileUpload/file-upload';
|
4 | import { css } from '@patternfly/react-styles';
|
5 | import { InputGroup } from '../InputGroup';
|
6 | import { TextInput } from '../TextInput';
|
7 | import { Button, ButtonVariant } from '../Button';
|
8 | import { TextArea, TextAreResizeOrientation } from '../TextArea';
|
9 | import { Spinner, spinnerSize } from '../Spinner';
|
10 | import { fileReaderType } from '../../helpers/fileUtils';
|
11 | export const FileUploadField = (_a) => {
|
12 | var { id, type, value = '', filename = '', onChange = () => { }, onBrowseButtonClick = () => { }, onClearButtonClick = () => { }, onTextAreaClick, onTextChange, className = '', isDisabled = false, isReadOnly = false, isLoading = false, spinnerAriaValueText, isRequired = false, isDragActive = false, validated = 'default', 'aria-label': ariaLabel = 'File upload', filenamePlaceholder = 'Drag a file here or browse to upload', filenameAriaLabel = filename ? 'Read only filename' : filenamePlaceholder, browseButtonText = 'Browse...', clearButtonText = 'Clear', isClearButtonDisabled = !filename && !value, containerRef = null, allowEditingUploadedText = false, hideDefaultPreview = false, children = null } = _a, props = __rest(_a, ["id", "type", "value", "filename", "onChange", "onBrowseButtonClick", "onClearButtonClick", "onTextAreaClick", "onTextChange", "className", "isDisabled", "isReadOnly", "isLoading", "spinnerAriaValueText", "isRequired", "isDragActive", "validated", 'aria-label', "filenamePlaceholder", "filenameAriaLabel", "browseButtonText", "clearButtonText", "isClearButtonDisabled", "containerRef", "allowEditingUploadedText", "hideDefaultPreview", "children"]);
|
13 | const onTextAreaChange = (newValue, event) => {
|
14 | onChange(newValue, filename, event);
|
15 | onTextChange === null || onTextChange === void 0 ? void 0 : onTextChange(newValue);
|
16 | };
|
17 | return (React.createElement("div", Object.assign({ className: css(styles.fileUpload, isDragActive && styles.modifiers.dragHover, isLoading && styles.modifiers.loading, className), ref: containerRef }, props),
|
18 | React.createElement("div", { className: styles.fileUploadFileSelect },
|
19 | React.createElement(InputGroup, null,
|
20 | React.createElement(TextInput, { isReadOnly
|
21 | : true, isDisabled: isDisabled, id: `${id}-filename`, name: `${id}-filename`, "aria-label": filenameAriaLabel, placeholder: filenamePlaceholder, "aria-describedby": `${id}-browse-button`, value: filename }),
|
22 | React.createElement(Button, { id: `${id}-browse-button`, variant: ButtonVariant.control, onClick: onBrowseButtonClick, isDisabled: isDisabled }, browseButtonText),
|
23 | React.createElement(Button, { variant: ButtonVariant.control, isDisabled: isDisabled || isClearButtonDisabled, onClick: onClearButtonClick }, clearButtonText))),
|
24 | React.createElement("div", { className: styles.fileUploadFileDetails },
|
25 | !hideDefaultPreview && type === fileReaderType.text && (React.createElement(TextArea, { readOnly: isReadOnly || (!!filename && !allowEditingUploadedText), disabled: isDisabled, isRequired: isRequired, resizeOrientation: TextAreResizeOrientation.vertical, validated: validated, id: id, name: id, "aria-label": ariaLabel, value: value, onChange: onTextAreaChange, onClick: onTextAreaClick })),
|
26 | isLoading && (React.createElement("div", { className: styles.fileUploadFileDetailsSpinner },
|
27 | React.createElement(Spinner, { size: spinnerSize.lg, "aria-valuetext": spinnerAriaValueText })))),
|
28 | children));
|
29 | };
|
30 | FileUploadField.displayName = 'FileUploadField';
|
31 |
|
\ | No newline at end of file |