UNPKG

tdesign-mobile-vue

Version:
154 lines (153 loc) 4.97 kB
import { ImageProps } from '../image'; import { PlainObject, TNode, UploadDisplayDragEvents } from '../common'; export interface TdUploadProps<T extends UploadFile = UploadFile> { accept?: string; action?: string; addContent?: string | TNode; allowUploadDuplicateFile?: boolean; autoUpload?: boolean; beforeAllFilesUpload?: (file: UploadFile[]) => boolean | Promise<boolean>; beforeUpload?: (file: UploadFile) => boolean | Promise<boolean>; capture?: string; data?: Record<string, any> | ((files: UploadFile[]) => Record<string, any>); disabled?: boolean; fileListDisplay?: TNode<{ files: UploadFile[]; dragEvents?: UploadDisplayDragEvents; }>; files?: Array<T>; defaultFiles?: Array<T>; format?: (file: File) => UploadFile; formatRequest?: (requestData: { [key: string]: any; }) => { [key: string]: any; }; formatResponse?: (response: any, context: FormatResponseContext) => ResponseType; headers?: { [key: string]: string; }; imageProps?: ImageProps; isBatchUpload?: boolean; max?: number; method?: 'POST' | 'GET' | 'PUT' | 'OPTIONS' | 'PATCH' | 'post' | 'get' | 'put' | 'options' | 'patch'; name?: string; mockProgressDuration?: number; multiple?: boolean; preview?: boolean; requestMethod?: (files: UploadFile | UploadFile[]) => Promise<RequestMethodResponse>; sizeLimit?: number | SizeLimitObj; useMockProgress?: boolean; uploadAllFilesInOneRequest?: boolean; value?: Array<T>; defaultValue?: Array<T>; modelValue?: Array<T>; onCancelUpload?: () => void; withCredentials?: boolean; onChange?: (value: Array<T>, context: UploadChangeContext) => void; onClickUpload?: (context: { e: MouseEvent; }) => void; onFail?: (options: UploadFailContext) => void; onOneFileFail?: (options: UploadFailContext) => void; onOneFileSuccess?: (context: Pick<SuccessContext, 'e' | 'file' | 'response' | 'XMLHttpRequest'>) => void; onPreview?: (options: { file: UploadFile; index: number; e: MouseEvent; }) => void; onProgress?: (options: ProgressContext) => void; onRemove?: (context: UploadRemoveContext) => void; onSelectChange?: (files: File[], context: UploadSelectChangeContext) => void; onSuccess?: (context: SuccessContext) => void; onValidate?: (context: { type: UploadValidateType; files: UploadFile[]; }) => void; onWaitingUploadFilesChange?: (context: { files: Array<UploadFile>; trigger: 'validate' | 'remove' | 'uploaded'; }) => void; } export interface UploadFile extends PlainObject { lastModified?: number; name?: string; percent?: number; raw?: File; response?: { [key: string]: any; }; size?: number; status?: 'success' | 'fail' | 'progress' | 'waiting'; type?: string; uploadTime?: string; url?: string; } export declare type ResponseType = { error?: string; url?: string; } & Record<string, any>; export interface FormatResponseContext { file: UploadFile; currentFiles?: UploadFile[]; } export interface RequestMethodResponse { status: 'success' | 'fail'; error?: string; response: { url?: string; files?: UploadFile[]; [key: string]: any; }; } export interface SizeLimitObj { size: number; unit: SizeUnit; message?: string; } export declare type SizeUnitArray = ['B', 'KB', 'MB', 'GB']; export declare type SizeUnit = SizeUnitArray[number]; export interface UploadChangeContext { e?: MouseEvent | ProgressEvent; response?: any; trigger: UploadChangeTrigger; index?: number; file?: UploadFile; files?: UploadFile[]; } export declare type UploadChangeTrigger = 'add' | 'remove' | 'abort' | 'progress-success' | 'progress' | 'progress-fail'; export interface UploadFailContext { e?: ProgressEvent; failedFiles: UploadFile[]; currentFiles: UploadFile[]; response?: any; file: UploadFile; XMLHttpRequest?: XMLHttpRequest; } export interface ProgressContext { e?: ProgressEvent; file?: UploadFile; currentFiles: UploadFile[]; percent: number; type: UploadProgressType; XMLHttpRequest?: XMLHttpRequest; } export declare type UploadProgressType = 'real' | 'mock'; export interface UploadRemoveContext { index?: number; file?: UploadFile; e: MouseEvent; } export interface UploadSelectChangeContext { currentSelectedFiles: UploadFile[]; } export interface SuccessContext { e?: ProgressEvent; file?: UploadFile; fileList?: UploadFile[]; currentFiles?: UploadFile[]; response?: any; results?: SuccessContext[]; XMLHttpRequest?: XMLHttpRequest; } export declare type UploadValidateType = 'FILE_OVER_SIZE_LIMIT' | 'FILES_OVER_LENGTH_LIMIT' | 'FILTER_FILE_SAME_NAME' | 'BEFORE_ALL_FILES_UPLOAD' | 'CUSTOM_BEFORE_UPLOAD';