UNPKG

ivt

Version:

Ivt Components Library

128 lines (125 loc) 4.03 kB
import * as react_jsx_runtime from 'react/jsx-runtime'; import React__default from 'react'; import { DropzoneProps, FileError } from 'react-dropzone'; type FileErrorMessage = { file: File; message: string; }; interface FileUploaderProps extends React__default.HTMLAttributes<HTMLDivElement> { /** * Valor atual do uploader. * @type File[] * @default undefined * @example value={files} */ value?: File[]; /** * Função chamada quando o valor muda. * @type (files: File[]) => void * @default undefined * @example onValueChange={(files) => setFiles(files)} */ onValueChange?: (files: File[]) => void; /** * Função chamada ao realizar o upload dos arquivos. * @type (files: File[]) => Promise<void> * @default undefined * @example onUpload={(files) => uploadFiles(files)} */ onUpload?: (files: File[]) => Promise<void>; /** * Progresso do upload de cada arquivo. * @type Record<string, number> | undefined * @default undefined * @example progresses={{ "file1.png": 50 }} */ progresses?: Record<string, number>; /** * Tipos de arquivos aceitos pelo uploader. * @type { [key: string]: string[] } * @default * ```ts * { "image/*": [] } * ``` * @example accept={["image/png", "image/jpeg"]} */ accept?: DropzoneProps["accept"]; /** * Tamanho máximo permitido para cada arquivo (em bytes). * @type number | undefined * @default 1024 * 1024 * 2 // 2MB * @example maxSize={1024 * 1024 * 2} // 2MB */ maxSize?: DropzoneProps["maxSize"]; /** * Quantidade máxima de arquivos permitidos. * @type number | undefined * @default 1 * @example maxFileCount={4} */ maxFileCount?: DropzoneProps["maxFiles"]; /** * Permite selecionar múltiplos arquivos. * @type boolean * @default false * @example multiple */ multiple?: boolean; /** * Desabilita o uploader. * @type boolean * @default false * @example disabled */ disabled?: boolean; /** * Função para personalizar a mensagem de erro ou executar ações quando arquivos forem rejeitados. * Pode retornar uma string para exibição ou void para efeitos colaterais (ex: toast). * @type ((errors: readonly FileError[]) => string | void) | undefined * @default undefined * @example onGetErrorMessage={(errors) => "Arquivo inválido"} * @example onGetErrorMessage={(errors) => toast({ title: "Erro", variant: "destructive" })} */ onGetErrorMessage?: (errors: readonly FileError[]) => string | void; /** * Função chamada quando arquivos válidos são selecionados. * Deve retornar os arquivos que serão usados no estado. * @type (acceptedFiles: File[]) => File[] */ onValidFile: (acceptedFiles: File[]) => File[]; /** * Título exibido no componente. * @type string */ title: string; /** * Descrição opcional exibida abaixo do título. * @type string | undefined */ description?: string; /** * Exibe visualização dos arquivos selecionados (quando aplicável). * @type boolean | undefined * @default false */ previewFiles?: boolean; /** * Indica se o uploader está em estado de carregamento. * @type boolean | undefined * @default false */ isLoading?: boolean; /** * Lista de erros de arquivo para exibição personalizada. * @type FileErrorMessage[] */ fileErrors: FileErrorMessage[]; /** * Função para atualizar a lista de erros de arquivo. * @type React.Dispatch<React.SetStateAction<FileErrorMessage[]>> */ setFileErrors: React__default.Dispatch<React__default.SetStateAction<FileErrorMessage[]>>; } declare function FileUploader(props: FileUploaderProps): react_jsx_runtime.JSX.Element; export { FileUploader }; export type { FileErrorMessage };