UNPKG

10.2 kBTypeScriptView Raw
1/// <reference types="react" />
2
3import * as React from 'react';
4import CommonProps from '../util';
5import { ProgressProps } from '../progress';
6
7interface HTMLAttributesWeak extends React.HTMLAttributes<HTMLElement> {
8 onError?: any;
9 onSelect?: any;
10 defaultValue?: any;
11 onChange?: any;
12}
13
14export interface CardProps extends HTMLAttributesWeak, CommonProps {
15 /**
16 * 上传的地址
17 */
18 action?: string;
19
20 /**
21 * 是否支持多选文件,`ie10+` 支持。开启后按住 ctrl 可选择多个文件
22 */
23 multiple?: boolean;
24
25 /**
26 * 展示下载按钮
27 */
28 showDownload?: boolean;
29
30 /**
31 * 接受上传的文件类型 (image/png, image/jpg, .doc, .ppt) 详见 [input accept attribute](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input#attr-accept)
32 */
33 accept?: string;
34
35 /**
36 * 上传额外传参
37 */
38 data?: any | (() => void);
39
40 /**
41 * 设置上传的请求头部
42 */
43 headers?: any;
44
45 /**
46 * 是否允许请求携带 cookie
47 */
48 withCredentials?: boolean;
49
50 /**
51 * 可选参数, 详见 [beforeUpload](#beforeUpload)
52 */
53 beforeUpload?: (file: {}, options: {}) => boolean | {} | any;
54
55 /**
56 * 上传中
57 */
58 onProgress?: () => void;
59
60 /**
61 * 可选参数,上传成功回调函数,参数为请求下响应信息以及文件
62 */
63 onSuccess?: (file: {}, value: Array<any>) => void;
64
65 /**
66 * 可选参数,上传失败回调函数,参数为上传失败的信息、响应信息以及文件
67 */
68 onError?: (file: {}, value: Array<any>) => void;
69
70 /**
71 * 子元素
72 */
73 children?: React.ReactNode;
74
75 /**
76 * 设置上传超时,单位ms
77 */
78 timeout?: number;
79
80 /**
81 * 上传方法
82 */
83 method?: 'post' | 'put';
84
85 /**
86 * 自定义上传方法
87 */
88 request?: (option: {}) => void;
89
90 /**
91 * 文件名字段
92 */
93 name?: string;
94
95 /**
96 * 选择文件回调
97 */
98 onSelect?: () => void;
99
100 /**
101 * 放文件
102 */
103 onDrop?: () => void;
104
105 /**
106 * 样式前缀
107 */
108 prefix?: string;
109
110 /**
111 * 文件列表
112 */
113 value?: Array<any>;
114
115 /**
116 * 默认文件列表
117 */
118 defaultValue?: Array<any>;
119
120 /**
121 * 上传按钮形状
122 */
123 shape?: 'card';
124
125 /**
126 * 上传列表的样式
127 */
128 listType?: 'text' | 'image' | 'card';
129
130 /**
131 * 数据格式化函数,配合自定义 action 使用,参数为服务器的响应数据,详见 [formatter](#formater)
132 */
133 formatter?: (response: {}, file: any) => void;
134
135 /**
136 * 最大文件上传个数
137 */
138 limit?: number;
139
140 /**
141 * 可选参数,是否支持拖拽上传,`ie10+` 支持。
142 */
143 dragable?: boolean;
144
145 /**
146 * 可选参数,是否本地预览
147 */
148 useDataURL?: boolean;
149
150 /**
151 * 可选参数,是否禁用上传功能
152 */
153 disabled?: boolean;
154
155 /**
156 * 改变时候的回调
157 */
158 onChange?: (value: File[]) => void;
159
160 /**
161 * 可选参数, 用于校验文件,afterSelect仅在 autoUpload=false 的时候生效,autoUpload=true时,可以使用beforeUpload完全可以替代该功能.
162 */
163 afterSelect?: (file: {}) => boolean;
164
165 /**
166 * 点击移除的回调
167 */
168 onRemove?: () => void;
169
170 /**
171 * 自定义class
172 */
173 className?: string;
174
175 /**
176 * 自定义内联样式
177 */
178 style?: React.CSSProperties;
179
180 /**
181 * 自动上传
182 */
183 autoUpload?: boolean;
184
185 /**
186 * 透传给Progress props
187 */
188 progressProps?: ProgressProps;
189
190 /**
191 * 点击图片回调
192 */
193 onPreview?: () => void;
194
195 /**
196 * 取消上传的回调
197 */
198 onCancel?: () => void;
199 /**
200 * 调用系统设备媒体
201 */
202 capture?: string;
203
204 /**
205 * 自定义成功和失败的列表渲染方式
206 */
207 itemRender?: (file: File, obj: { remove?: () => void }) => React.ReactNode;
208
209 /**
210 * 选择新文件上传并替换
211 */
212 reUpload?: boolean;
213}
214
215export class Card extends React.Component<CardProps, any> {}
216
217export class Dragger extends React.Component<UploadProps, any> {}
218
219export interface SelecterProps extends HTMLAttributesWeak, CommonProps {
220 /**
221 * 是否禁用上传功能
222 */
223 disabled?: boolean;
224
225 /**
226 * 是否支持多选文件,`ie10+` 支持。开启后按住 ctrl 可选择多个文件
227 */
228 multiple?: boolean;
229
230 /**
231 * 是否支持拖拽上传,`ie10+` 支持。
232 */
233 dragable?: boolean;
234
235 /**
236 * 接受上传的文件类型 (image/png, image/jpg, .doc, .ppt) 详见 [input accept attribute](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input#attr-accept)
237 */
238 accept?: string;
239
240 /**
241 * 文件选择回调
242 */
243 onSelect?: (e: React.ChangeEvent<HTMLInputElement>) => void;
244
245 /**
246 * 拖拽经过回调
247 */
248 onDragOver?: () => void;
249
250 /**
251 * 拖拽离开回调
252 */
253 onDragLeave?: () => void;
254
255 /**
256 * 拖拽完成回调
257 */
258 onDrop?: () => void;
259
260 /**
261 * 是否支持上传文件夹,仅在 chorme 下生效
262 */
263 webkitdirectory?: boolean;
264}
265
266export class Selecter extends React.Component<SelecterProps, any> {}
267
268export class Uploader {
269 /**
270 * @param options 配置
271 */
272 constructor(options?: any);
273
274 /**
275 * 配置选项
276 * @param options 配置
277 */
278 setOptions(options: any): void;
279 /**
280 * 开始上传
281 * @param files 文件列表
282 */
283 startUpload(files: Array<any>): void;
284 /**
285 * 中断某个文件上传
286 * @param file 文件
287 */
288 abort(file: any): void;
289}
290
291export interface UploadProps extends HTMLAttributesWeak, CommonProps {
292 /**
293 * 上传的地址
294 */
295 action?: string;
296
297 /**
298 * 接受上传的文件类型 (image/png, image/jpg, .doc, .ppt) 详见 [input accept attribute](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input#attr-accept)
299 */
300 accept?: string;
301
302 /**
303 * 上传额外传参
304 */
305 data?: any | (() => void);
306
307 /**
308 * 是否支持多选文件,`ie10+` 支持。开启后按住 ctrl 可选择多个文件
309 */
310 multiple?: boolean;
311
312 /**
313 * 设置上传的请求头部
314 */
315 headers?: any;
316
317 /**
318 * 是否允许请求携带 cookie
319 */
320 withCredentials?: boolean;
321
322 /**
323 * 可选参数, 详见 [beforeUpload](#beforeUpload)
324 */
325 beforeUpload?: (file: any, options: any) => boolean | {} | any;
326
327 /**
328 * 上传中
329 */
330 onProgress?: () => void;
331
332 /**
333 * 可选参数,上传成功回调函数,参数为请求下响应信息以及文件
334 */
335 onSuccess?: (file: any, value: Array<any>) => void;
336
337 /**
338 * 可选参数,上传失败回调函数,参数为上传失败的信息、响应信息以及文件
339 */
340 onError?: (file: any, value: Array<any>) => void;
341
342 /**
343 * 子元素
344 */
345 children?: React.ReactNode;
346
347 /**
348 * 设置上传超时,单位ms
349 */
350 timeout?: number;
351
352 /**
353 * 上传方法
354 */
355 method?: 'post' | 'put';
356
357 /**
358 * 自定义上传方法
359 */
360 request?: (option: any) => any;
361
362 /**
363 * 文件名字段
364 */
365 name?: string;
366
367 /**
368 * 选择文件回调
369 */
370 onSelect?: (uploadFiles: Array<any>, value: Array<any>) => void;
371
372 /**
373 * 放文件
374 */
375 onDrop?: () => void;
376
377 /**
378 * 样式前缀
379 */
380 prefix?: string;
381
382 /**
383 * 文件列表
384 */
385 value?: Array<any>;
386
387 /**
388 * 默认文件列表
389 */
390 defaultValue?: Array<any>;
391
392 /**
393 * 上传按钮形状
394 */
395 shape?: 'card';
396
397 /**
398 * 上传列表的样式
399 */
400 listType?: 'text' | 'image' | 'card';
401
402 /**
403 * 数据格式化函数,配合自定义 action 使用,参数为服务器的响应数据,详见 [formatter](#formater)
404 */
405 formatter?: (response: any, file: any) => void;
406
407 /**
408 * 最大文件上传个数
409 */
410 limit?: number;
411
412 /**
413 * 可选参数,是否支持拖拽上传,`ie10+` 支持。
414 */
415 dragable?: boolean;
416
417 /**
418 * 可选参数,是否本地预览
419 */
420 useDataURL?: boolean;
421
422 /**
423 * 可选参数,是否禁用上传功能
424 */
425 disabled?: boolean;
426
427 /**
428 * 上传文件改变时的状态
429 */
430 onChange?: (value: File[]) => void;
431
432 /**
433 * 可选参数, 用于校验文件,afterSelect仅在 autoUpload=false 的时候生效,autoUpload=true时,可以使用beforeUpload完全可以替代该功能.
434 */
435 afterSelect?: (file: any) => boolean;
436
437 /**
438 * 移除文件回调函数
439 */
440 onRemove?: (file: any) => boolean | any;
441
442 /**
443 * 自定义额外渲染
444 */
445 extraRender?: (file: File) => any;
446 /**
447 * 自定义文件名渲染
448 */
449 fileNameRender?: (file: File) => any;
450 /**
451 * 自定义操作区域渲染
452 */
453 actionRender?: (file: File) => any;
454 /**
455 * 自定义class
456 */
457 className?: string;
458
459 /**
460 * 自定义内联样式
461 */
462 style?: React.CSSProperties;
463
464 /**
465 * 自动上传
466 */
467 autoUpload?: boolean;
468
469 /**
470 * 透传给Progress props
471 */
472 progressProps?: ProgressProps;
473
474 /**
475 * 是否为预览态
476 */
477 isPreview?: boolean;
478
479 /**
480 * 预览态模式下渲染的内容
481 */
482 renderPreview?: (value: number) => void;
483
484 /**
485 * 文件对象的 key name
486 */
487 fileKeyName?: string;
488 /**
489 * 点击文件名时触发 onPreview
490 * @version 1.24
491 */
492 previewOnFileName?: boolean,
493
494 /**
495 * 自定义成功和失败的列表渲染方式
496 */
497 itemRender?: (file: File, obj: { remove?: () => void }) => React.ReactNode;
498
499 /**
500 * 选择新文件上传并替换
501 */
502 reUpload?: boolean;
503}
504
505export default class Upload extends React.Component<UploadProps, any> {
506 static Card: typeof Card;
507 static Dragger: typeof Dragger;
508 static Selecter: typeof Selecter;
509 static Uploader: typeof Uploader;
510}