interface.d.ts 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355
  1. import type { RcFile as OriRcFile, UploadRequestOption as RcCustomRequestOptions } from '../vc-upload/interface';
  2. import type { ProgressProps } from '../progress';
  3. import type { VueNode } from '../_util/type';
  4. import type { ExtractPropTypes, CSSProperties, ImgHTMLAttributes } from 'vue';
  5. export interface FileType extends OriRcFile {
  6. readonly lastModifiedDate: Date;
  7. }
  8. export type UploadFileStatus = 'error' | 'success' | 'done' | 'uploading' | 'removed';
  9. export interface HttpRequestHeader {
  10. [key: string]: string;
  11. }
  12. export interface UploadFile<T = any> {
  13. uid: string;
  14. size?: number;
  15. name: string;
  16. fileName?: string;
  17. lastModified?: number;
  18. lastModifiedDate?: Date;
  19. url?: string;
  20. status?: UploadFileStatus;
  21. percent?: number;
  22. thumbUrl?: string;
  23. crossOrigin?: ImgHTMLAttributes['crossorigin'];
  24. originFileObj?: FileType;
  25. response?: T;
  26. error?: any;
  27. linkProps?: any;
  28. type?: string;
  29. xhr?: T;
  30. preview?: string;
  31. }
  32. export interface InternalUploadFile<T = any> extends UploadFile<T> {
  33. originFileObj: FileType;
  34. }
  35. export interface ShowUploadListInterface {
  36. showRemoveIcon?: boolean;
  37. showPreviewIcon?: boolean;
  38. showDownloadIcon?: boolean;
  39. }
  40. export interface UploadChangeParam<T = UploadFile> {
  41. file: T;
  42. fileList: T[];
  43. event?: {
  44. percent: number;
  45. };
  46. }
  47. export interface UploadLocale {
  48. uploading?: string;
  49. removeFile?: string;
  50. downloadFile?: string;
  51. uploadError?: string;
  52. previewFile?: string;
  53. }
  54. export type UploadType = 'drag' | 'select';
  55. export type UploadListType = 'text' | 'picture' | 'picture-card';
  56. export type UploadListProgressProps = Omit<ProgressProps, 'percent' | 'type'> & {
  57. class?: string;
  58. style?: CSSProperties;
  59. };
  60. export type ItemRender<T = any> = (opt: {
  61. originNode: VueNode;
  62. file: UploadFile;
  63. fileList: Array<UploadFile<T>>;
  64. actions: {
  65. download: () => void;
  66. preview: () => void;
  67. remove: () => void;
  68. };
  69. }) => VueNode;
  70. type PreviewFileHandler = (file: FileType | Blob) => PromiseLike<string>;
  71. type TransformFileHandler = (file: FileType) => string | Blob | FileType | PromiseLike<string | Blob | FileType>;
  72. type BeforeUploadValueType = void | boolean | string | Blob | FileType;
  73. declare function uploadProps<T = any>(): {
  74. capture: {
  75. type: import("vue").PropType<boolean | "user" | "environment">;
  76. default: boolean | "user" | "environment";
  77. };
  78. type: {
  79. type: import("vue").PropType<UploadType>;
  80. default: UploadType;
  81. };
  82. name: StringConstructor;
  83. defaultFileList: {
  84. type: import("vue").PropType<UploadFile<T>[]>;
  85. default: UploadFile<T>[];
  86. };
  87. fileList: {
  88. type: import("vue").PropType<UploadFile<T>[]>;
  89. default: UploadFile<T>[];
  90. };
  91. action: {
  92. type: import("vue").PropType<string | ((file: FileType) => string) | ((file: FileType) => PromiseLike<string>)>;
  93. default: string | ((file: FileType) => string) | ((file: FileType) => PromiseLike<string>);
  94. };
  95. directory: {
  96. type: BooleanConstructor;
  97. default: boolean;
  98. };
  99. data: {
  100. type: import("vue").PropType<Record<string, unknown> | ((file: UploadFile<T>) => Record<string, unknown> | Promise<Record<string, unknown>>)>;
  101. default: Record<string, unknown> | ((file: UploadFile<T>) => Record<string, unknown> | Promise<Record<string, unknown>>);
  102. };
  103. method: {
  104. type: import("vue").PropType<"post" | "POST" | "PUT" | "PATCH" | "put" | "patch">;
  105. default: "post" | "POST" | "PUT" | "PATCH" | "put" | "patch";
  106. };
  107. headers: {
  108. type: import("vue").PropType<HttpRequestHeader>;
  109. default: HttpRequestHeader;
  110. };
  111. showUploadList: {
  112. type: import("vue").PropType<boolean | ShowUploadListInterface>;
  113. default: boolean | ShowUploadListInterface;
  114. };
  115. multiple: {
  116. type: BooleanConstructor;
  117. default: boolean;
  118. };
  119. accept: StringConstructor;
  120. beforeUpload: {
  121. type: import("vue").PropType<(file: FileType, FileList: FileType[]) => BeforeUploadValueType | Promise<BeforeUploadValueType>>;
  122. default: (file: FileType, FileList: FileType[]) => BeforeUploadValueType | Promise<BeforeUploadValueType>;
  123. };
  124. onChange: {
  125. type: import("vue").PropType<(info: UploadChangeParam<UploadFile<T>>) => void>;
  126. default: (info: UploadChangeParam<UploadFile<T>>) => void;
  127. };
  128. 'onUpdate:fileList': {
  129. type: import("vue").PropType<(fileList: UploadChangeParam<UploadFile<T>>['fileList']) => void>;
  130. default: (fileList: UploadChangeParam<UploadFile<T>>['fileList']) => void;
  131. };
  132. onDrop: {
  133. type: import("vue").PropType<(event: DragEvent) => void>;
  134. default: (event: DragEvent) => void;
  135. };
  136. listType: {
  137. type: import("vue").PropType<UploadListType>;
  138. default: UploadListType;
  139. };
  140. onPreview: {
  141. type: import("vue").PropType<(file: UploadFile<T>) => void>;
  142. default: (file: UploadFile<T>) => void;
  143. };
  144. onDownload: {
  145. type: import("vue").PropType<(file: UploadFile<T>) => void>;
  146. default: (file: UploadFile<T>) => void;
  147. };
  148. onReject: {
  149. type: import("vue").PropType<(fileList: FileType[]) => void>;
  150. default: (fileList: FileType[]) => void;
  151. };
  152. onRemove: {
  153. type: import("vue").PropType<(file: UploadFile<T>) => void | boolean | Promise<void | boolean>>;
  154. default: (file: UploadFile<T>) => void | boolean | Promise<void | boolean>;
  155. };
  156. /** @deprecated Please use `onRemove` directly */
  157. remove: {
  158. type: import("vue").PropType<(file: UploadFile<T>) => void | boolean | Promise<void | boolean>>;
  159. default: (file: UploadFile<T>) => void | boolean | Promise<void | boolean>;
  160. };
  161. supportServerRender: {
  162. type: BooleanConstructor;
  163. default: boolean;
  164. };
  165. disabled: {
  166. type: BooleanConstructor;
  167. default: boolean;
  168. };
  169. prefixCls: StringConstructor;
  170. customRequest: {
  171. type: import("vue").PropType<(options: RcCustomRequestOptions) => void>;
  172. default: (options: RcCustomRequestOptions) => void;
  173. };
  174. withCredentials: {
  175. type: BooleanConstructor;
  176. default: boolean;
  177. };
  178. openFileDialogOnClick: {
  179. type: BooleanConstructor;
  180. default: boolean;
  181. };
  182. locale: {
  183. type: import("vue").PropType<UploadLocale>;
  184. default: UploadLocale;
  185. };
  186. id: StringConstructor;
  187. previewFile: {
  188. type: import("vue").PropType<PreviewFileHandler>;
  189. default: PreviewFileHandler;
  190. };
  191. /** @deprecated Please use `beforeUpload` directly */
  192. transformFile: {
  193. type: import("vue").PropType<TransformFileHandler>;
  194. default: TransformFileHandler;
  195. };
  196. iconRender: {
  197. type: import("vue").PropType<(opt: {
  198. file: UploadFile<T>;
  199. listType?: UploadListType;
  200. }) => VueNode>;
  201. default: (opt: {
  202. file: UploadFile<T>;
  203. listType?: UploadListType;
  204. }) => VueNode;
  205. };
  206. isImageUrl: {
  207. type: import("vue").PropType<(file: UploadFile) => boolean>;
  208. default: (file: UploadFile) => boolean;
  209. };
  210. progress: {
  211. type: import("vue").PropType<UploadListProgressProps>;
  212. default: UploadListProgressProps;
  213. };
  214. itemRender: {
  215. type: import("vue").PropType<ItemRender<T>>;
  216. default: ItemRender<T>;
  217. };
  218. /** Config max count of `fileList`. Will replace current one when `maxCount` is 1 */
  219. maxCount: NumberConstructor;
  220. height: {
  221. type: import("vue").PropType<unknown>;
  222. default: unknown;
  223. };
  224. removeIcon: {
  225. type: import("vue").PropType<(opt: {
  226. file: UploadFile;
  227. }) => VueNode>;
  228. default: (opt: {
  229. file: UploadFile;
  230. }) => VueNode;
  231. };
  232. downloadIcon: {
  233. type: import("vue").PropType<(opt: {
  234. file: UploadFile;
  235. }) => VueNode>;
  236. default: (opt: {
  237. file: UploadFile;
  238. }) => VueNode;
  239. };
  240. previewIcon: {
  241. type: import("vue").PropType<(opt: {
  242. file: UploadFile;
  243. }) => VueNode>;
  244. default: (opt: {
  245. file: UploadFile;
  246. }) => VueNode;
  247. };
  248. };
  249. export type UploadProps = Partial<ExtractPropTypes<ReturnType<typeof uploadProps>>>;
  250. export interface UploadState<T = any> {
  251. fileList: UploadFile<T>[];
  252. dragState: string;
  253. }
  254. declare function uploadListProps<T = any>(): {
  255. listType: {
  256. type: import("vue").PropType<UploadListType>;
  257. default: UploadListType;
  258. };
  259. onPreview: {
  260. type: import("vue").PropType<(file: UploadFile<T>) => void>;
  261. default: (file: UploadFile<T>) => void;
  262. };
  263. onDownload: {
  264. type: import("vue").PropType<(file: UploadFile<T>) => void>;
  265. default: (file: UploadFile<T>) => void;
  266. };
  267. onRemove: {
  268. type: import("vue").PropType<(file: UploadFile<T>) => void | boolean>;
  269. default: (file: UploadFile<T>) => void | boolean;
  270. };
  271. items: {
  272. type: import("vue").PropType<UploadFile<T>[]>;
  273. default: UploadFile<T>[];
  274. };
  275. progress: {
  276. type: import("vue").PropType<UploadListProgressProps>;
  277. default: UploadListProgressProps;
  278. };
  279. prefixCls: {
  280. type: import("vue").PropType<string>;
  281. default: string;
  282. };
  283. showRemoveIcon: {
  284. type: BooleanConstructor;
  285. default: boolean;
  286. };
  287. showDownloadIcon: {
  288. type: BooleanConstructor;
  289. default: boolean;
  290. };
  291. showPreviewIcon: {
  292. type: BooleanConstructor;
  293. default: boolean;
  294. };
  295. removeIcon: {
  296. type: import("vue").PropType<(opt: {
  297. file: UploadFile;
  298. }) => VueNode>;
  299. default: (opt: {
  300. file: UploadFile;
  301. }) => VueNode;
  302. };
  303. downloadIcon: {
  304. type: import("vue").PropType<(opt: {
  305. file: UploadFile;
  306. }) => VueNode>;
  307. default: (opt: {
  308. file: UploadFile;
  309. }) => VueNode;
  310. };
  311. previewIcon: {
  312. type: import("vue").PropType<(opt: {
  313. file: UploadFile;
  314. }) => VueNode>;
  315. default: (opt: {
  316. file: UploadFile;
  317. }) => VueNode;
  318. };
  319. locale: {
  320. type: import("vue").PropType<UploadLocale>;
  321. default: UploadLocale;
  322. };
  323. previewFile: {
  324. type: import("vue").PropType<PreviewFileHandler>;
  325. default: PreviewFileHandler;
  326. };
  327. iconRender: {
  328. type: import("vue").PropType<(opt: {
  329. file: UploadFile<T>;
  330. listType?: UploadListType;
  331. }) => VueNode>;
  332. default: (opt: {
  333. file: UploadFile<T>;
  334. listType?: UploadListType;
  335. }) => VueNode;
  336. };
  337. isImageUrl: {
  338. type: import("vue").PropType<(file: UploadFile) => boolean>;
  339. default: (file: UploadFile) => boolean;
  340. };
  341. appendAction: {
  342. type: import("vue").PropType<() => VueNode>;
  343. default: () => VueNode;
  344. };
  345. appendActionVisible: {
  346. type: BooleanConstructor;
  347. default: boolean;
  348. };
  349. itemRender: {
  350. type: import("vue").PropType<ItemRender<T>>;
  351. default: ItemRender<T>;
  352. };
  353. };
  354. export type UploadListProps = Partial<ExtractPropTypes<ReturnType<typeof uploadListProps>>>;
  355. export { uploadProps, uploadListProps };