import React from "react"; import { useTranslation } from "react-i18next"; import Dropzone from "react-dropzone"; import equal from "fast-deep-equal/react"; import CatalogFolderReactSvgUrl from "PUBLIC_DIR/images/catalog.folder.react.svg?url"; import { IconButton } from "../icon-button"; import { Button, ButtonSize } from "../button"; import { InputSize, InputType, TextInput } from "../text-input"; import { Loader, LoaderTypes } from "../loader"; import { toastr } from "../toast"; import StyledFileInput from "./FileInput.styled"; import { FileInputProps } from "./FileInput.types"; const FileInputPure = ({ onInput, size = InputSize.base, placeholder, isDisabled, scale, hasError, hasWarning, accept, id, buttonLabel, isLoading, fromStorage = false, path, idButton, ...rest }: FileInputProps) => { const { t } = useTranslation("Common"); const inputRef = React.useRef(null); const [fileName, setFileName] = React.useState(""); const onDrop = (acceptedFiles: File[]) => { if (acceptedFiles.length === 0) { toastr.error(t("Common:NotSupportedFormat")); return; } setFileName(acceptedFiles[0].name); onInput(acceptedFiles[0]); }; const getSize = () => { let iconSize = 0; let buttonSize = ButtonSize.small; switch (size) { case InputSize.base: iconSize = 15; buttonSize = ButtonSize.extraSmall; break; case InputSize.middle: iconSize = 15; buttonSize = ButtonSize.small; break; case InputSize.big: iconSize = 16; buttonSize = ButtonSize.normal; break; case InputSize.huge: iconSize = 16; buttonSize = ButtonSize.medium; break; case InputSize.large: iconSize = 16; buttonSize = ButtonSize.medium; break; default: break; } return { iconSize, buttonSize }; }; const { iconSize, buttonSize } = getSize(); const onClickProp = fromStorage ? { onClick: rest.onClick } : {}; return ( {({ getRootProps, getInputProps }) => ( {!fromStorage && ( )} {buttonLabel ? (