@nutui/nutui-react-taro 2.0.18 → 2.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/dist/esm/Audio/style/style.css +1 -1
  3. package/dist/esm/Button/style/style.css +1 -1
  4. package/dist/esm/Dialog/style/style.css +1 -1
  5. package/dist/esm/ImagePreview/style/style.css +1 -1
  6. package/dist/esm/ImagePreview.js +2 -2
  7. package/dist/esm/Indicator/style/style.css +1 -1
  8. package/dist/esm/Indicator.js +1 -1
  9. package/dist/esm/Input/style/style.css +1 -1
  10. package/dist/esm/Menu.js +2 -2
  11. package/dist/esm/MenuItem.js +1 -1
  12. package/dist/esm/Swiper/style/style.css +1 -1
  13. package/dist/esm/Swiper.js +14 -4
  14. package/dist/esm/Uploader.js +5 -3
  15. package/dist/esm/{imagepreview.taro-87d85d88.js → imagepreview.taro-78c0a7b8.js} +5 -2
  16. package/dist/esm/{indicator.taro-4ed0d6da.js → indicator.taro-092f9f4e.js} +1 -1
  17. package/dist/esm/{menu.taro-cc93f12a.js → menu.taro-cf8d7d5b.js} +8 -8
  18. package/dist/esm/{menuitem.taro-69a45abd.js → menuitem.taro-b73e5ed3.js} +5 -2
  19. package/dist/esm/nutui-react.es.js +5 -5
  20. package/dist/esm/types/src/packages/menu/index.d.ts +1 -1
  21. package/dist/esm/types/src/packages/menu/index.taro.d.ts +1 -1
  22. package/dist/esm/types/src/packages/menu/menu.d.ts +4 -2
  23. package/dist/esm/types/src/packages/menu/menu.taro.d.ts +4 -2
  24. package/dist/esm/types/src/packages/swiper/swiper.taro.d.ts +1 -0
  25. package/dist/esm/types/src/packages/uploader/demo.taro.d.ts +0 -15
  26. package/dist/esm/types/src/packages/uploader/file-item.d.ts +19 -0
  27. package/dist/esm/types/src/packages/uploader/index.d.ts +2 -1
  28. package/dist/esm/types/src/packages/uploader/index.taro.d.ts +2 -1
  29. package/dist/esm/types/src/packages/uploader/preview.d.ts +2 -0
  30. package/dist/esm/types/src/packages/uploader/preview.taro.d.ts +2 -0
  31. package/dist/esm/types/src/packages/uploader/upload.d.ts +3 -0
  32. package/dist/esm/types/src/packages/uploader/uploader.d.ts +5 -23
  33. package/dist/esm/types/src/packages/uploader/uploader.taro.d.ts +10 -26
  34. package/dist/esm/{uploader.taro-56b2ca0d.js → uploader.taro-da0414ba.js} +148 -134
  35. package/dist/locales/base.js +1 -1
  36. package/dist/locales/en-US.js +1 -1
  37. package/dist/locales/id-ID.js +1 -1
  38. package/dist/locales/tr-TR.js +1 -1
  39. package/dist/locales/zh-CN.js +1 -1
  40. package/dist/locales/zh-TW.js +1 -1
  41. package/dist/locales/zh-UG.js +1 -1
  42. package/dist/nutui.react.es.js +271 -222
  43. package/dist/nutui.react.umd.js +271 -222
  44. package/dist/packages/button/button.scss +1 -1
  45. package/dist/packages/indicator/indicator.scss +5 -0
  46. package/dist/packages/input/input.scss +1 -0
  47. package/dist/style.css +1 -1
  48. package/dist/style.mjs +1 -1
  49. package/dist/types/packages/menu/index.taro.d.ts +1 -1
  50. package/dist/types/packages/menu/menu.taro.d.ts +4 -2
  51. package/dist/types/packages/swiper/swiper.taro.d.ts +5 -0
  52. package/dist/types/packages/uploader/file-item.d.ts +19 -0
  53. package/dist/types/packages/uploader/index.taro.d.ts +2 -1
  54. package/dist/types/packages/uploader/preview.taro.d.ts +2 -0
  55. package/dist/types/packages/uploader/upload.d.ts +3 -0
  56. package/dist/types/packages/uploader/uploader.taro.d.ts +10 -26
  57. package/package.json +1 -1
@@ -1,16 +1,13 @@
1
1
  import React from 'react';
2
2
  import { UploadOptions } from './upload';
3
3
  import { BasicComponent } from '@/utils/typings';
4
- export type FileType<T> = {
5
- [key: string]: T;
6
- };
7
- export type FileItemStatus = 'ready' | 'uploading' | 'success' | 'error' | 'removed';
4
+ import { FileItem } from './file-item';
8
5
  export interface UploaderProps extends BasicComponent {
9
6
  url: string;
10
7
  maxCount: string | number;
11
8
  maxFileSize: number;
12
- defaultValue?: FileType<React.ReactNode>[];
13
- value?: FileType<string>[];
9
+ defaultValue?: FileItem[];
10
+ value?: FileItem[];
14
11
  previewType: 'picture' | 'list';
15
12
  fit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down';
16
13
  uploadIcon?: React.ReactNode;
@@ -29,7 +26,7 @@ export interface UploaderProps extends BasicComponent {
29
26
  clearInput: boolean;
30
27
  preview: boolean;
31
28
  deletable: boolean;
32
- capture: boolean;
29
+ capture: boolean | 'user' | 'environment';
33
30
  className: string;
34
31
  previewUrl?: string;
35
32
  style: React.CSSProperties;
@@ -52,27 +49,12 @@ export interface UploaderProps extends BasicComponent {
52
49
  }) => void;
53
50
  onUpdate?: (fileList: FileItem[]) => void;
54
51
  onOversize?: (file: File[]) => void;
55
- onChange?: (param: {
56
- fileList: FileItem[];
57
- event: React.ChangeEvent<HTMLInputElement>;
58
- }) => void;
52
+ onChange?: (p: FileItem[]) => void;
59
53
  beforeUpload?: (file: File[]) => Promise<File[] | boolean>;
60
54
  beforeXhrUpload?: (xhr: XMLHttpRequest, options: any) => void;
61
55
  beforeDelete?: (file: FileItem, files: FileItem[]) => boolean;
62
56
  onFileItemClick?: (file: FileItem) => void;
63
57
  }
64
- export declare class FileItem {
65
- status: FileItemStatus;
66
- message: string;
67
- uid: string;
68
- name?: string;
69
- url?: string;
70
- type?: string;
71
- path?: string;
72
- percentage: string | number;
73
- formData: FormData;
74
- responseText?: string;
75
- }
76
58
  export declare const Uploader: React.ForwardRefExoticComponent<Partial<UploaderProps> & {
77
59
  children?: React.ReactNode;
78
60
  } & React.RefAttributes<unknown>>;
@@ -2,10 +2,7 @@ import React from 'react';
2
2
  import Taro from '@tarojs/taro';
3
3
  import { UploadOptions } from './upload';
4
4
  import { BasicComponent } from '@/utils/typings';
5
- export type FileType<T> = {
6
- [key: string]: T;
7
- };
8
- export type FileItemStatus = 'ready' | 'uploading' | 'success' | 'error' | 'removed';
5
+ import { FileItem } from './file-item';
9
6
  /** 图片的尺寸 */
10
7
  interface sizeType {
11
8
  /** 原图 */
@@ -35,8 +32,8 @@ export interface UploaderProps extends BasicComponent {
35
32
  mediaType: (keyof mediaType)[];
36
33
  camera: string;
37
34
  maxFileSize: number;
38
- defaultValue?: FileType<React.ReactNode>[];
39
- value?: FileType<string>[];
35
+ defaultValue?: FileItem[];
36
+ value?: FileItem[];
40
37
  previewType: 'picture' | 'list';
41
38
  fit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down';
42
39
  uploadIcon?: React.ReactNode;
@@ -58,42 +55,29 @@ export interface UploaderProps extends BasicComponent {
58
55
  maxDuration: number;
59
56
  style: React.CSSProperties;
60
57
  onStart?: (option: UploadOptions) => void;
61
- onDelete?: (file: FileItem, fileList: FileType<React.ReactNode>[]) => void;
58
+ onDelete?: (file: FileItem, fileList: FileItem[]) => void;
62
59
  onSuccess?: (param: {
63
60
  responseText: XMLHttpRequest['responseText'];
64
61
  option: UploadOptions;
65
- fileList: FileType<React.ReactNode>[];
62
+ fileList: FileItem[];
66
63
  }) => void;
67
64
  onProgress?: (param: {
68
65
  e: ProgressEvent<XMLHttpRequestEventTarget>;
69
66
  option: UploadOptions;
70
- percentage: React.ReactNode;
67
+ percentage: number | string;
71
68
  }) => void;
72
69
  onFailure?: (param: {
73
70
  responseText: XMLHttpRequest['responseText'];
74
71
  option: UploadOptions;
75
- fileList: FileType<React.ReactNode>[];
72
+ fileList: FileItem[];
76
73
  }) => void;
77
- onUpdate?: (fileList: FileType<React.ReactNode>[]) => void;
74
+ onUpdate?: (fileList: FileItem[]) => void;
78
75
  onOversize?: (files: Taro.chooseImage.ImageFile[] | Taro.chooseMedia.ChooseMedia[] | any) => void;
79
- onChange?: (param: {
80
- fileList: FileType<React.ReactNode>[];
81
- }) => void;
76
+ onChange?: (p: FileItem[]) => void;
82
77
  beforeXhrUpload?: (xhr: XMLHttpRequest, options: any) => void;
83
- beforeDelete?: (file: FileItem, files: FileType<React.ReactNode>[]) => boolean;
78
+ beforeDelete?: (file: FileItem, files: FileItem[]) => boolean;
84
79
  onFileItemClick?: (file: FileItem) => void;
85
80
  }
86
- export declare class FileItem {
87
- status: FileItemStatus;
88
- message: string;
89
- uid: string;
90
- name?: string;
91
- url?: string;
92
- type?: string;
93
- path?: string;
94
- percentage: string | number;
95
- formData: any;
96
- }
97
81
  export declare const Uploader: React.ForwardRefExoticComponent<Partial<UploaderProps> & {
98
82
  children?: React.ReactNode;
99
83
  } & React.RefAttributes<unknown>>;
@@ -4,16 +4,17 @@ var __publicField = (obj, key, value) => {
4
4
  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
5
  return value;
6
6
  };
7
- import React__default, { useState, useEffect, useImperativeHandle } from "react";
7
+ import React__default, { useState, useImperativeHandle } from "react";
8
8
  import classNames from "classnames";
9
9
  import Taro, { uploadFile, getEnv, chooseMedia, chooseImage } from "@tarojs/taro";
10
- import { Failure, Loading, Link, Del, Photograph } from "@nutui/icons-react-taro";
11
- import { Image } from "@tarojs/components";
10
+ import { Failure, Link, Del, Loading, Photograph } from "@nutui/icons-react-taro";
12
11
  import { B as Button } from "./button.taro-25f559e1.js";
13
- import { P as Progress } from "./progress.taro-421575b9.js";
14
12
  import { u as useConfig } from "./configprovider.taro-c5ff4877.js";
15
13
  import { i as isPromise } from "./index-e3184f19.js";
16
14
  import { C as ComponentDefaults } from "./typings-11d83a22.js";
15
+ import { u as usePropsValue } from "./use-props-value-c78cbf9b.js";
16
+ import { Image } from "@tarojs/components";
17
+ import { P as Progress } from "./progress.taro-421575b9.js";
17
18
  class UploadOptions {
18
19
  constructor() {
19
20
  __publicField(this, "url", "");
@@ -34,6 +35,9 @@ class UploadOptions {
34
35
  __publicField(this, "beforeXhrUpload");
35
36
  }
36
37
  }
38
+ const UPLOADING = "uploading";
39
+ const SUCCESS = "success";
40
+ const ERROR = "error";
37
41
  class Upload {
38
42
  constructor(options) {
39
43
  __publicField(this, "options");
@@ -139,6 +143,85 @@ const funcInterceptor = (interceptor, { args = [], done, canceled }) => {
139
143
  done();
140
144
  }
141
145
  };
146
+ class FileItem {
147
+ constructor() {
148
+ __publicField(this, "status", "ready");
149
+ __publicField(this, "message", "准备中..");
150
+ __publicField(this, "uid", (/* @__PURE__ */ new Date()).getTime().toString());
151
+ __publicField(this, "name");
152
+ __publicField(this, "url");
153
+ __publicField(this, "type");
154
+ __publicField(this, "path");
155
+ __publicField(this, "percentage", 0);
156
+ __publicField(this, "formData", {});
157
+ __publicField(this, "responseText");
158
+ __publicField(this, "loadingIcon");
159
+ __publicField(this, "failIcon");
160
+ }
161
+ }
162
+ const Preview = ({ fileList, previewType, deletable, onDeleteItem, handleItemClick, previewUrl, children }) => {
163
+ const renderIcon = (item) => {
164
+ if (item.status === ERROR) {
165
+ return item.failIcon || React__default.createElement(Failure, { color: "#fff" });
166
+ }
167
+ return item.loadingIcon || React__default.createElement(Loading, { className: "nut-icon-loading", color: "#fff" });
168
+ };
169
+ return React__default.createElement(React__default.Fragment, null, fileList.length !== 0 && fileList.map((item, index) => {
170
+ var _a;
171
+ return React__default.createElement(
172
+ "div",
173
+ { className: `nut-uploader__preview ${previewType}`, key: item.uid },
174
+ previewType === "picture" && deletable && React__default.createElement(Failure, { color: "rgba(0,0,0,0.6)", className: "close", onClick: () => onDeleteItem(item, index) }),
175
+ previewType === "picture" && !children && React__default.createElement(
176
+ "div",
177
+ { className: "nut-uploader__preview-img" },
178
+ item.status === "ready" ? React__default.createElement(
179
+ "div",
180
+ { className: "nut-uploader__preview__progress" },
181
+ React__default.createElement("div", { className: "nut-uploader__preview__progress__msg" }, item.message)
182
+ ) : item.status !== "success" && React__default.createElement(
183
+ "div",
184
+ { className: "nut-uploader__preview__progress" },
185
+ renderIcon(item),
186
+ React__default.createElement("div", { className: "nut-uploader__preview__progress__msg" }, item.message)
187
+ ),
188
+ ((_a = item.type) == null ? void 0 : _a.includes("image")) ? React__default.createElement(React__default.Fragment, null, item.url && React__default.createElement(Image, { className: "nut-uploader__preview-img__c", style: { objectFit: "fill" }, mode: "aspectFit", src: item.url, onClick: () => handleItemClick(item) })) : React__default.createElement(React__default.Fragment, null, previewUrl ? React__default.createElement(Image, { className: "nut-uploader__preview-img__c", mode: "aspectFit", src: previewUrl, onClick: () => handleItemClick(item) }) : React__default.createElement(
189
+ "div",
190
+ { className: "nut-uploader__preview-img__file" },
191
+ React__default.createElement(
192
+ "div",
193
+ { onClick: () => handleItemClick(item), className: "nut-uploader__preview-img__file__name" },
194
+ React__default.createElement(Link, { color: "#808080" }),
195
+ React__default.createElement(
196
+ "span",
197
+ null,
198
+ " ",
199
+ item.name
200
+ )
201
+ )
202
+ )),
203
+ item.status === "success" ? React__default.createElement("div", { className: "tips" }, item.name) : null
204
+ ),
205
+ previewType === "list" && React__default.createElement(
206
+ "div",
207
+ { className: "nut-uploader__preview-list" },
208
+ React__default.createElement(
209
+ "div",
210
+ { className: `nut-uploader__preview-img__file__name ${item.status}`, onClick: () => handleItemClick(item) },
211
+ React__default.createElement(Link, null),
212
+ React__default.createElement(
213
+ "span",
214
+ null,
215
+ " ",
216
+ item.name
217
+ )
218
+ ),
219
+ deletable && React__default.createElement(Del, { color: "#808080", className: "nut-uploader__preview-img__file__del", onClick: () => onDeleteItem(item, index) }),
220
+ item.status === "uploading" && React__default.createElement(Progress, { percent: item.percentage, color: "linear-gradient(270deg, rgba(18,126,255,1) 0%,rgba(32,147,255,1) 32.815625%,rgba(13,242,204,1) 100%)", showText: false })
221
+ )
222
+ );
223
+ }));
224
+ };
142
225
  const defaultProps = {
143
226
  ...ComponentDefaults,
144
227
  url: "",
@@ -147,7 +230,7 @@ const defaultProps = {
147
230
  sourceType: ["album", "camera"],
148
231
  mediaType: ["image", "video"],
149
232
  camera: "back",
150
- uploadIcon: null,
233
+ uploadIcon: React__default.createElement(Photograph, { size: "20px", color: "#808080" }),
151
234
  uploadLabel: "",
152
235
  previewType: "picture",
153
236
  fit: "cover",
@@ -170,29 +253,18 @@ const defaultProps = {
170
253
  return true;
171
254
  }
172
255
  };
173
- class FileItem {
174
- constructor() {
175
- __publicField(this, "status", "ready");
176
- __publicField(this, "message", "准备中..");
177
- __publicField(this, "uid", Date.now().toString());
178
- __publicField(this, "name");
179
- __publicField(this, "url");
180
- __publicField(this, "type");
181
- __publicField(this, "path");
182
- __publicField(this, "percentage", 0);
183
- __publicField(this, "formData", {});
184
- }
185
- }
186
256
  const InternalUploader = (props, ref) => {
187
257
  const { locale } = useConfig();
188
258
  const { children, uploadIcon, uploadLabel, accept, name, camera, defaultValue, value, previewType, fit, disabled, multiple, url, previewUrl, headers, timeout, method, xhrState, data, preview, deletable, maxCount, maxFileSize, mediaType, className, autoUpload, sizeType, sourceType, maxDuration, onStart, onDelete, onChange, onFileItemClick, onProgress, onSuccess, onUpdate, onFailure, onOversize, beforeXhrUpload, beforeDelete, ...restProps } = { ...defaultProps, ...props };
189
- const [fileList, setFileList] = useState(defaultValue || []);
190
- const [uploadQueue, setUploadQueue] = useState([]);
191
- useEffect(() => {
192
- if (value) {
193
- setFileList(value);
259
+ const [fileList, setFileList] = usePropsValue({
260
+ value,
261
+ defaultValue,
262
+ finalValue: [],
263
+ onChange: (v) => {
264
+ onChange == null ? void 0 : onChange(v);
194
265
  }
195
- }, [value]);
266
+ });
267
+ const [uploadQueue, setUploadQueue] = useState([]);
196
268
  const classes = classNames(className, "nut-uploader");
197
269
  useImperativeHandle(ref, () => ({
198
270
  submit: () => {
@@ -280,63 +352,56 @@ const InternalUploader = (props, ref) => {
280
352
  uploadOption.beforeXhrUpload = beforeXhrUpload;
281
353
  uploadOption.onStart = (option) => {
282
354
  clearUploadQueue(index);
283
- setFileList((fileList2) => {
284
- fileList2.forEach((item) => {
285
- if (item.uid === fileItem.uid) {
286
- item.status = "ready";
287
- item.message = locale.uploader.readyUpload;
288
- }
289
- });
290
- return [...fileList2];
291
- });
355
+ setFileList(fileList.map((item) => {
356
+ if (item.uid === fileItem.uid) {
357
+ item.status = "ready";
358
+ item.message = locale.uploader.readyUpload;
359
+ }
360
+ return item;
361
+ }));
292
362
  onStart && onStart(option);
293
363
  };
294
364
  uploadOption.onProgress = (e, option) => {
295
- setFileList((fileList2) => {
296
- fileList2.forEach((item) => {
297
- if (item.uid === fileItem.uid) {
298
- item.status = "uploading";
299
- item.message = locale.uploader.uploading;
300
- item.percentage = e.progress;
301
- onProgress && onProgress({ e, option, percentage: item.percentage });
302
- }
303
- });
304
- return [...fileList2];
305
- });
365
+ setFileList(fileList.map((item) => {
366
+ if (item.uid === fileItem.uid) {
367
+ item.status = UPLOADING;
368
+ item.message = locale.uploader.uploading;
369
+ item.percentage = e.progress;
370
+ onProgress && onProgress({ e, option, percentage: item.percentage });
371
+ }
372
+ return item;
373
+ }));
306
374
  };
307
375
  uploadOption.onSuccess = (responseText, option) => {
308
- setFileList((fileList2) => {
309
- onUpdate && onUpdate(fileList2);
310
- fileList2.forEach((item) => {
311
- if (item.uid === fileItem.uid) {
312
- item.status = "success";
313
- item.message = locale.uploader.success;
314
- item.responseText = responseText;
315
- }
316
- });
317
- return [...fileList2];
376
+ const list = fileList.map((item) => {
377
+ if (item.uid === fileItem.uid) {
378
+ item.status = SUCCESS;
379
+ item.message = locale.uploader.success;
380
+ item.responseText = responseText;
381
+ }
382
+ return item;
318
383
  });
319
- onSuccess && onSuccess({
384
+ setFileList(list);
385
+ onSuccess == null ? void 0 : onSuccess({
320
386
  responseText,
321
387
  option,
322
- fileList
388
+ fileList: list
323
389
  });
324
390
  };
325
391
  uploadOption.onFailure = (responseText, option) => {
326
- setFileList((fileList2) => {
327
- fileList2.forEach((item) => {
328
- if (item.uid === fileItem.uid) {
329
- item.status = "error";
330
- item.message = locale.uploader.error;
331
- item.responseText = responseText;
332
- }
333
- });
334
- return [...fileList2];
392
+ const list = fileList.map((item) => {
393
+ if (item.uid === fileItem.uid) {
394
+ item.status = ERROR;
395
+ item.message = locale.uploader.error;
396
+ item.responseText = responseText;
397
+ }
398
+ return item;
335
399
  });
336
- onFailure && onFailure({
400
+ setFileList(list);
401
+ onFailure == null ? void 0 : onFailure({
337
402
  responseText,
338
403
  option,
339
- fileList
404
+ fileList: list
340
405
  });
341
406
  };
342
407
  const task = new UploaderTaro(uploadOption);
@@ -368,11 +433,7 @@ const InternalUploader = (props, ref) => {
368
433
  fileItem.status = "ready";
369
434
  fileItem.type = fileType;
370
435
  fileItem.uid = `${fileItem.uid}_${index}`;
371
- if (autoUpload) {
372
- fileItem.message = locale.uploader.readyUpload;
373
- } else {
374
- fileItem.message = locale.uploader.waitingUpload;
375
- }
436
+ fileItem.message = autoUpload ? locale.uploader.readyUpload : locale.uploader.waitingUpload;
376
437
  if (getEnv() === "WEB") {
377
438
  const formData = new FormData();
378
439
  for (const [key, value2] of Object.entries(data)) {
@@ -389,7 +450,7 @@ const InternalUploader = (props, ref) => {
389
450
  fileItem.url = fileType === "video" ? file.thumbTempFilePath : filepath;
390
451
  }
391
452
  fileList.push(fileItem);
392
- setFileList([...fileList]);
453
+ setFileList(fileList);
393
454
  executeUpload(fileItem, index);
394
455
  });
395
456
  };
@@ -414,9 +475,9 @@ const InternalUploader = (props, ref) => {
414
475
  return filterFile;
415
476
  };
416
477
  const deleted = (file, index) => {
417
- fileList.splice(index, 1);
418
- onDelete && onDelete(file, fileList);
419
- setFileList([...fileList]);
478
+ const deletedFileList = fileList.filter((file2, idx) => idx !== index);
479
+ onDelete == null ? void 0 : onDelete(file, deletedFileList);
480
+ setFileList(deletedFileList);
420
481
  };
421
482
  const onDeleteItem = (file, index) => {
422
483
  clearUploadQueue(index);
@@ -429,16 +490,14 @@ const InternalUploader = (props, ref) => {
429
490
  const { tempFiles } = res;
430
491
  const _files = filterFiles(tempFiles);
431
492
  readFile(_files);
432
- onChange && onChange({ fileList });
433
493
  };
434
494
  const onChangeImage = (res) => {
435
495
  const { tempFiles } = res;
436
496
  const _files = filterFiles(tempFiles);
437
497
  readFile(_files);
438
- onChange && onChange({ fileList });
439
498
  };
440
499
  const handleItemClick = (file) => {
441
- onFileItemClick && onFileItemClick(file);
500
+ onFileItemClick == null ? void 0 : onFileItemClick(file);
442
501
  };
443
502
  return React__default.createElement(
444
503
  "div",
@@ -453,67 +512,22 @@ const InternalUploader = (props, ref) => {
453
512
  maxCount > fileList.length && React__default.createElement(Button, { className: "nut-uploader__input", onClick: _chooseImage })
454
513
  )
455
514
  ),
456
- fileList.length !== 0 && Array.isArray(fileList) && fileList.map((item, index) => {
457
- return React__default.createElement(
458
- "div",
459
- { className: `nut-uploader__preview ${previewType}`, key: item.uid },
460
- previewType === "picture" && deletable && React__default.createElement(Failure, { color: "rgba(0,0,0,0.6)", className: "close", onClick: () => onDeleteItem(item, index) }),
461
- previewType === "picture" && !children && React__default.createElement(
462
- "div",
463
- { className: "nut-uploader__preview-img" },
464
- item.status === "ready" ? React__default.createElement(
465
- "div",
466
- { className: "nut-uploader__preview__progress" },
467
- React__default.createElement("div", { className: "nut-uploader__preview__progress__msg" }, item.message)
468
- ) : item.status !== "success" && React__default.createElement(
469
- "div",
470
- { className: "nut-uploader__preview__progress" },
471
- item.failIcon !== " " && item.loadingIcon !== " " && (item.status === "error" ? item.failIcon || React__default.createElement(Failure, { color: "#fff" }) : item.loadingIcon || React__default.createElement(Loading, { color: "#fff" })),
472
- React__default.createElement("div", { className: "nut-uploader__preview__progress__msg" }, item.message)
473
- ),
474
- item.type.includes("image") ? React__default.createElement(React__default.Fragment, null, item.url && React__default.createElement(Image, { className: "nut-uploader__preview-img__c", style: { objectFit: fit }, mode: "aspectFit", src: item.url, onClick: () => handleItemClick(item) })) : React__default.createElement(React__default.Fragment, null, previewUrl ? React__default.createElement(Image, { className: "nut-uploader__preview-img__c", mode: "aspectFit", src: previewUrl, onClick: () => handleItemClick(item) }) : React__default.createElement(
475
- "div",
476
- { className: "nut-uploader__preview-img__file" },
477
- React__default.createElement(
478
- "div",
479
- { onClick: () => handleItemClick(item), className: "nut-uploader__preview-img__file__name" },
480
- React__default.createElement(Link, { color: "#808080" }),
481
- React__default.createElement(
482
- "span",
483
- null,
484
- " ",
485
- item.name
486
- )
487
- )
488
- )),
489
- item.status === "success" ? React__default.createElement("div", { className: "tips" }, item.name) : null
490
- ),
491
- previewType === "list" && React__default.createElement(
492
- "div",
493
- { className: "nut-uploader__preview-list" },
494
- React__default.createElement(
495
- "div",
496
- { className: `nut-uploader__preview-img__file__name ${item.status}`, onClick: () => handleItemClick(item) },
497
- React__default.createElement(Link, null),
498
- React__default.createElement(
499
- "span",
500
- null,
501
- " ",
502
- item.name
503
- )
504
- ),
505
- deletable && React__default.createElement(Del, { color: "#808080", className: "nut-uploader__preview-img__file__del", onClick: () => onDeleteItem(item, index) }),
506
- item.status === "uploading" && React__default.createElement(Progress, { percent: item.percentage, color: "linear-gradient(270deg, rgba(18,126,255,1) 0%,rgba(32,147,255,1) 32.815625%,rgba(13,242,204,1) 100%)", showText: false })
507
- )
508
- );
509
- }),
515
+ React__default.createElement(Preview, { ...{
516
+ fileList,
517
+ previewType,
518
+ deletable,
519
+ onDeleteItem,
520
+ handleItemClick,
521
+ previewUrl,
522
+ children
523
+ } }),
510
524
  maxCount > fileList.length && previewType === "picture" && !children && React__default.createElement(
511
525
  "div",
512
526
  { className: `nut-uploader__upload ${previewType} ${disabled ? "nut-uploader__upload-disabled" : ""}` },
513
527
  React__default.createElement(
514
528
  "div",
515
529
  { className: "nut-uploader__icon" },
516
- uploadIcon || React__default.createElement(Photograph, { size: "20px", color: "#808080" }),
530
+ uploadIcon,
517
531
  React__default.createElement("span", { className: "nut-uploader__icon-tip" }, uploadLabel)
518
532
  ),
519
533
  React__default.createElement(Button, { className: "nut-uploader__input", onClick: _chooseImage })
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui-react-taro v2.0.18 Wed Sep 20 2023 14:57:52 GMT+0800 (China Standard Time)
2
+ * @nutui/nutui-react-taro v2.0.19 Wed Sep 27 2023 18:15:58 GMT+0800 (China Standard Time)
3
3
  * (c) 2023 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui-react-taro v2.0.18 Wed Sep 20 2023 14:57:52 GMT+0800 (China Standard Time)
2
+ * @nutui/nutui-react-taro v2.0.19 Wed Sep 27 2023 18:15:58 GMT+0800 (China Standard Time)
3
3
  * (c) 2023 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui-react-taro v2.0.18 Wed Sep 20 2023 14:57:52 GMT+0800 (China Standard Time)
2
+ * @nutui/nutui-react-taro v2.0.19 Wed Sep 27 2023 18:15:58 GMT+0800 (China Standard Time)
3
3
  * (c) 2023 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui-react-taro v2.0.18 Wed Sep 20 2023 14:57:52 GMT+0800 (China Standard Time)
2
+ * @nutui/nutui-react-taro v2.0.19 Wed Sep 27 2023 18:15:58 GMT+0800 (China Standard Time)
3
3
  * (c) 2023 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui-react-taro v2.0.18 Wed Sep 20 2023 14:57:52 GMT+0800 (China Standard Time)
2
+ * @nutui/nutui-react-taro v2.0.19 Wed Sep 27 2023 18:15:58 GMT+0800 (China Standard Time)
3
3
  * (c) 2023 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui-react-taro v2.0.18 Wed Sep 20 2023 14:57:52 GMT+0800 (China Standard Time)
2
+ * @nutui/nutui-react-taro v2.0.19 Wed Sep 27 2023 18:15:58 GMT+0800 (China Standard Time)
3
3
  * (c) 2023 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui-react-taro v2.0.18 Wed Sep 20 2023 14:57:52 GMT+0800 (China Standard Time)
2
+ * @nutui/nutui-react-taro v2.0.19 Wed Sep 27 2023 18:15:58 GMT+0800 (China Standard Time)
3
3
  * (c) 2023 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */