import { InputHTMLAttributes } from 'react';
import { UploadCommonProps, CommonFileItem } from './upload/type';
export interface FileItem extends CommonFileItem {
/**
* 文件
* @en File
*/
file: File;
}
export interface UploaderProps extends UploadCommonProps {
/**
* 自定义类名
* @en Custom className
*/
className?: string;
/**
* 自定义样式
* @en Custom stylesheet
*/
style?: React.CSSProperties;
/**
* 可以选择的文件类型
* @en Available file types
* @default undefined
*/
accept?: InputHTMLAttributes['accept'];
/**
* 是否支持多选
* @en Whether to support multiple selection
*/
multiple?: boolean;
/**
* 文件选取模式 File selection mode [capture MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/capture)
* @en Whether To Support Multiple Selection [capture MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/capture)
*/
capture?: InputHTMLAttributes['capture'];
/**
* 是否隐藏文件上传状态
* @en Whether to hide file upload status
* @default false
*/
hideStatus?: boolean;
/**
* 是否总是展示选择Icon,默认情况下当文件数量超出limit值时会自动隐藏选择Icon
* @en Whether to always show Select Icon
* @default false
*/
alwaysShowSelect?: boolean;
/**
* 禁用选择和删除图片
* @en Disable select & delete image
*/
disabled?: boolean;
/**
* 自定义删除区域
* @en Defined delete area
*/
renderDeleteArea?: (fileItem: FileItem, index: number) => React.ReactNode;
/**
* 自定义上传成功区域
* @en Defined loaded area
*/
renderLoadedArea?: (fileItem: FileItem, index: number) => React.ReactNode;
/**
* 自定义上传中区域
* @en Defined loading area
*/
renderLoadingArea?: (fileItem: FileItem, index: number) => React.ReactNode;
/**
* 自定义上传失败区域
* @en Defined error area
*/
renderErrorArea?: (fileItem: FileItem, index: number) => React.ReactNode;
/**
* 自定义文件索引区域
* @en Defined file index area
*/
renderFileIndexArea?: (fileItem: FileItem, index: number) => React.ReactNode;
/**
* 自定义上传按钮区域
* @en Defined upload button area
*/
renderUploadArea?: () => React.ReactNode;
/**
* 自定义上传文件列表展示
* @en Defined file list display
*/
renderFileList?: (methods: FileListMethods) => React.ReactNode;
}
export interface UploaderRef {
/**
* 最外层 DOM 元素
* @en The outer DOM element of the component
*/
dom: HTMLDivElement | null;
}
export interface FileListMethods {
/**
* 重新上传
* @en Retry to upload
*/
retryUpload: (index: number) => void;
/**
* 删除文件
* @en Delete file
*/
deleteFile: (index: number) => void;
}