@nutui/nutui-react-taro 2.0.19-beta.0 → 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 (34) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/esm/Menu.js +2 -2
  3. package/dist/esm/MenuItem.js +1 -1
  4. package/dist/esm/Swiper.js +7 -1
  5. package/dist/esm/Uploader.js +5 -3
  6. package/dist/esm/{menu.taro-f419b9ef.js → menu.taro-cf8d7d5b.js} +1 -1
  7. package/dist/esm/{menuitem.taro-d598a86e.js → menuitem.taro-b73e5ed3.js} +2 -0
  8. package/dist/esm/nutui-react.es.js +3 -3
  9. package/dist/esm/types/src/packages/uploader/demo.taro.d.ts +0 -15
  10. package/dist/esm/types/src/packages/uploader/file-item.d.ts +19 -0
  11. package/dist/esm/types/src/packages/uploader/index.d.ts +2 -1
  12. package/dist/esm/types/src/packages/uploader/index.taro.d.ts +2 -1
  13. package/dist/esm/types/src/packages/uploader/preview.d.ts +2 -0
  14. package/dist/esm/types/src/packages/uploader/preview.taro.d.ts +2 -0
  15. package/dist/esm/types/src/packages/uploader/upload.d.ts +3 -0
  16. package/dist/esm/types/src/packages/uploader/uploader.d.ts +5 -23
  17. package/dist/esm/types/src/packages/uploader/uploader.taro.d.ts +10 -26
  18. package/dist/esm/{uploader.taro-56b2ca0d.js → uploader.taro-da0414ba.js} +148 -134
  19. package/dist/locales/base.js +1 -1
  20. package/dist/locales/en-US.js +1 -1
  21. package/dist/locales/id-ID.js +1 -1
  22. package/dist/locales/tr-TR.js +1 -1
  23. package/dist/locales/zh-CN.js +1 -1
  24. package/dist/locales/zh-TW.js +1 -1
  25. package/dist/locales/zh-UG.js +1 -1
  26. package/dist/nutui.react.es.js +247 -209
  27. package/dist/nutui.react.umd.js +247 -209
  28. package/dist/style.mjs +1 -1
  29. package/dist/types/packages/uploader/file-item.d.ts +19 -0
  30. package/dist/types/packages/uploader/index.taro.d.ts +2 -1
  31. package/dist/types/packages/uploader/preview.taro.d.ts +2 -0
  32. package/dist/types/packages/uploader/upload.d.ts +3 -0
  33. package/dist/types/packages/uploader/uploader.taro.d.ts +10 -26
  34. package/package.json +1 -1
@@ -8,7 +8,7 @@ var __publicField = (obj, key, value) => {
8
8
  return value;
9
9
  };
10
10
  /*!
11
- * @nutui/nutui-react-taro v2.0.19-beta.0 Mon Sep 25 2023 18:03:38 GMT+0800 (China Standard Time)
11
+ * @nutui/nutui-react-taro v2.0.19 Wed Sep 27 2023 18:15:02 GMT+0800 (China Standard Time)
12
12
  * (c) 2023 @jdf2e.
13
13
  * Released under the MIT License.
14
14
  */
@@ -11810,6 +11810,8 @@ var __publicField = (obj, key, value) => {
11810
11810
  }, [showPopup]);
11811
11811
  const windowHeight = React.useMemo(() => Taro.getSystemInfoSync().windowHeight, []);
11812
11812
  const updateItemOffset = React.useCallback(() => {
11813
+ if (!parent.lockScroll)
11814
+ return;
11813
11815
  const p = parent.menuRef.current;
11814
11816
  p.getBoundingClientRect().then((rect) => {
11815
11817
  if (rect) {
@@ -13457,80 +13459,6 @@ var __publicField = (obj, key, value) => {
13457
13459
  };
13458
13460
  TextArea.defaultProps = defaultProps$J;
13459
13461
  TextArea.displayName = "NutTextArea";
13460
- const defaultProps$I = {
13461
- ...ComponentDefaults,
13462
- percent: 0,
13463
- showText: false,
13464
- animated: false,
13465
- delay: 0
13466
- };
13467
- const Progress = (props) => {
13468
- const {
13469
- className,
13470
- style,
13471
- percent,
13472
- background,
13473
- color,
13474
- strokeWidth,
13475
- showText,
13476
- animated,
13477
- children,
13478
- delay,
13479
- ...rest
13480
- } = {
13481
- ...defaultProps$I,
13482
- ...props
13483
- };
13484
- const classPrefix2 = "nut-progress";
13485
- const classesInner = classNames({
13486
- [`${classPrefix2}-inner`]: true,
13487
- [`${classPrefix2}-active`]: animated
13488
- });
13489
- const stylesOuter = {
13490
- height: `${strokeWidth}px`,
13491
- background
13492
- };
13493
- const [displayPercent, setDispalyPercent] = React.useState(0);
13494
- const stylesInner = {
13495
- width: `${displayPercent}%`,
13496
- background: color
13497
- };
13498
- React.useEffect(() => {
13499
- setDispalyPercent(percent);
13500
- }, [percent]);
13501
- React.useEffect(() => {
13502
- let timer = null;
13503
- if (delay) {
13504
- setDispalyPercent(0);
13505
- timer = setTimeout(() => {
13506
- setDispalyPercent(percent);
13507
- }, delay);
13508
- }
13509
- return () => {
13510
- timer && clearTimeout(timer);
13511
- };
13512
- }, []);
13513
- return /* @__PURE__ */ React.createElement("div", { className: classNames(classPrefix2, className), style, ...rest }, /* @__PURE__ */ React.createElement("div", { className: `${classPrefix2}-outer`, style: stylesOuter }, /* @__PURE__ */ React.createElement("div", { className: classesInner, style: stylesInner }, showText && /* @__PURE__ */ React.createElement(
13514
- "div",
13515
- {
13516
- className: `${classPrefix2}-text`,
13517
- style: { left: `${displayPercent}%` }
13518
- },
13519
- children || /* @__PURE__ */ React.createElement(
13520
- "div",
13521
- {
13522
- className: `${classPrefix2}-text__inner`,
13523
- style: {
13524
- background: color
13525
- }
13526
- },
13527
- percent,
13528
- "%"
13529
- )
13530
- ))));
13531
- };
13532
- Progress.defaultProps = defaultProps$I;
13533
- Progress.displayName = "NutProgress";
13534
13462
  class UploadOptions {
13535
13463
  constructor() {
13536
13464
  __publicField(this, "url", "");
@@ -13551,6 +13479,9 @@ var __publicField = (obj, key, value) => {
13551
13479
  __publicField(this, "beforeXhrUpload");
13552
13480
  }
13553
13481
  }
13482
+ const UPLOADING = "uploading";
13483
+ const SUCCESS = "success";
13484
+ const ERROR = "error";
13554
13485
  class Upload {
13555
13486
  constructor(options) {
13556
13487
  __publicField(this, "options");
@@ -13672,6 +13603,179 @@ var __publicField = (obj, key, value) => {
13672
13603
  done();
13673
13604
  }
13674
13605
  };
13606
+ class FileItem {
13607
+ constructor() {
13608
+ __publicField(this, "status", "ready");
13609
+ __publicField(this, "message", "准备中..");
13610
+ __publicField(this, "uid", (/* @__PURE__ */ new Date()).getTime().toString());
13611
+ __publicField(this, "name");
13612
+ __publicField(this, "url");
13613
+ __publicField(this, "type");
13614
+ __publicField(this, "path");
13615
+ __publicField(this, "percentage", 0);
13616
+ __publicField(this, "formData", {});
13617
+ __publicField(this, "responseText");
13618
+ __publicField(this, "loadingIcon");
13619
+ __publicField(this, "failIcon");
13620
+ }
13621
+ }
13622
+ const defaultProps$I = {
13623
+ ...ComponentDefaults,
13624
+ percent: 0,
13625
+ showText: false,
13626
+ animated: false,
13627
+ delay: 0
13628
+ };
13629
+ const Progress = (props) => {
13630
+ const {
13631
+ className,
13632
+ style,
13633
+ percent,
13634
+ background,
13635
+ color,
13636
+ strokeWidth,
13637
+ showText,
13638
+ animated,
13639
+ children,
13640
+ delay,
13641
+ ...rest
13642
+ } = {
13643
+ ...defaultProps$I,
13644
+ ...props
13645
+ };
13646
+ const classPrefix2 = "nut-progress";
13647
+ const classesInner = classNames({
13648
+ [`${classPrefix2}-inner`]: true,
13649
+ [`${classPrefix2}-active`]: animated
13650
+ });
13651
+ const stylesOuter = {
13652
+ height: `${strokeWidth}px`,
13653
+ background
13654
+ };
13655
+ const [displayPercent, setDispalyPercent] = React.useState(0);
13656
+ const stylesInner = {
13657
+ width: `${displayPercent}%`,
13658
+ background: color
13659
+ };
13660
+ React.useEffect(() => {
13661
+ setDispalyPercent(percent);
13662
+ }, [percent]);
13663
+ React.useEffect(() => {
13664
+ let timer = null;
13665
+ if (delay) {
13666
+ setDispalyPercent(0);
13667
+ timer = setTimeout(() => {
13668
+ setDispalyPercent(percent);
13669
+ }, delay);
13670
+ }
13671
+ return () => {
13672
+ timer && clearTimeout(timer);
13673
+ };
13674
+ }, []);
13675
+ return /* @__PURE__ */ React.createElement("div", { className: classNames(classPrefix2, className), style, ...rest }, /* @__PURE__ */ React.createElement("div", { className: `${classPrefix2}-outer`, style: stylesOuter }, /* @__PURE__ */ React.createElement("div", { className: classesInner, style: stylesInner }, showText && /* @__PURE__ */ React.createElement(
13676
+ "div",
13677
+ {
13678
+ className: `${classPrefix2}-text`,
13679
+ style: { left: `${displayPercent}%` }
13680
+ },
13681
+ children || /* @__PURE__ */ React.createElement(
13682
+ "div",
13683
+ {
13684
+ className: `${classPrefix2}-text__inner`,
13685
+ style: {
13686
+ background: color
13687
+ }
13688
+ },
13689
+ percent,
13690
+ "%"
13691
+ )
13692
+ ))));
13693
+ };
13694
+ Progress.defaultProps = defaultProps$I;
13695
+ Progress.displayName = "NutProgress";
13696
+ const Preview = ({
13697
+ fileList,
13698
+ previewType,
13699
+ deletable,
13700
+ onDeleteItem,
13701
+ handleItemClick,
13702
+ previewUrl,
13703
+ children
13704
+ }) => {
13705
+ const renderIcon = (item) => {
13706
+ if (item.status === ERROR) {
13707
+ return item.failIcon || /* @__PURE__ */ React.createElement(a$n, { color: "#fff" });
13708
+ }
13709
+ return item.loadingIcon || /* @__PURE__ */ React.createElement(r$h, { className: "nut-icon-loading", color: "#fff" });
13710
+ };
13711
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, fileList.length !== 0 && fileList.map((item, index) => {
13712
+ var _a;
13713
+ return /* @__PURE__ */ React.createElement(
13714
+ "div",
13715
+ {
13716
+ className: `nut-uploader__preview ${previewType}`,
13717
+ key: item.uid
13718
+ },
13719
+ previewType === "picture" && deletable && /* @__PURE__ */ React.createElement(
13720
+ a$n,
13721
+ {
13722
+ color: "rgba(0,0,0,0.6)",
13723
+ className: "close",
13724
+ onClick: () => onDeleteItem(item, index)
13725
+ }
13726
+ ),
13727
+ previewType === "picture" && !children && /* @__PURE__ */ React.createElement("div", { className: "nut-uploader__preview-img" }, item.status === "ready" ? /* @__PURE__ */ React.createElement("div", { className: "nut-uploader__preview__progress" }, /* @__PURE__ */ React.createElement("div", { className: "nut-uploader__preview__progress__msg" }, item.message)) : item.status !== "success" && /* @__PURE__ */ React.createElement("div", { className: "nut-uploader__preview__progress" }, renderIcon(item), /* @__PURE__ */ React.createElement("div", { className: "nut-uploader__preview__progress__msg" }, item.message)), ((_a = item.type) == null ? void 0 : _a.includes("image")) ? /* @__PURE__ */ React.createElement(React.Fragment, null, item.url && /* @__PURE__ */ React.createElement(
13728
+ components.Image,
13729
+ {
13730
+ className: "nut-uploader__preview-img__c",
13731
+ style: { objectFit: "fill" },
13732
+ mode: "aspectFit",
13733
+ src: item.url,
13734
+ onClick: () => handleItemClick(item)
13735
+ }
13736
+ )) : /* @__PURE__ */ React.createElement(React.Fragment, null, previewUrl ? /* @__PURE__ */ React.createElement(
13737
+ components.Image,
13738
+ {
13739
+ className: "nut-uploader__preview-img__c",
13740
+ mode: "aspectFit",
13741
+ src: previewUrl,
13742
+ onClick: () => handleItemClick(item)
13743
+ }
13744
+ ) : /* @__PURE__ */ React.createElement("div", { className: "nut-uploader__preview-img__file" }, /* @__PURE__ */ React.createElement(
13745
+ "div",
13746
+ {
13747
+ onClick: () => handleItemClick(item),
13748
+ className: "nut-uploader__preview-img__file__name"
13749
+ },
13750
+ /* @__PURE__ */ React.createElement(a$i, { color: "#808080" }),
13751
+ /* @__PURE__ */ React.createElement("span", null, " ", item.name)
13752
+ ))), item.status === "success" ? /* @__PURE__ */ React.createElement("div", { className: "tips" }, item.name) : null),
13753
+ previewType === "list" && /* @__PURE__ */ React.createElement("div", { className: "nut-uploader__preview-list" }, /* @__PURE__ */ React.createElement(
13754
+ "div",
13755
+ {
13756
+ className: `nut-uploader__preview-img__file__name ${item.status}`,
13757
+ onClick: () => handleItemClick(item)
13758
+ },
13759
+ /* @__PURE__ */ React.createElement(a$i, null),
13760
+ /* @__PURE__ */ React.createElement("span", null, " ", item.name)
13761
+ ), deletable && /* @__PURE__ */ React.createElement(
13762
+ a$p,
13763
+ {
13764
+ color: "#808080",
13765
+ className: "nut-uploader__preview-img__file__del",
13766
+ onClick: () => onDeleteItem(item, index)
13767
+ }
13768
+ ), item.status === "uploading" && /* @__PURE__ */ React.createElement(
13769
+ Progress,
13770
+ {
13771
+ percent: item.percentage,
13772
+ color: "linear-gradient(270deg, rgba(18,126,255,1) 0%,rgba(32,147,255,1) 32.815625%,rgba(13,242,204,1) 100%)",
13773
+ showText: false
13774
+ }
13775
+ ))
13776
+ );
13777
+ }));
13778
+ };
13675
13779
  const defaultProps$H = {
13676
13780
  ...ComponentDefaults,
13677
13781
  url: "",
@@ -13680,7 +13784,7 @@ var __publicField = (obj, key, value) => {
13680
13784
  sourceType: ["album", "camera"],
13681
13785
  mediaType: ["image", "video"],
13682
13786
  camera: "back",
13683
- uploadIcon: null,
13787
+ uploadIcon: /* @__PURE__ */ React.createElement(a$a, { size: "20px", color: "#808080" }),
13684
13788
  uploadLabel: "",
13685
13789
  previewType: "picture",
13686
13790
  fit: "cover",
@@ -13703,19 +13807,6 @@ var __publicField = (obj, key, value) => {
13703
13807
  return true;
13704
13808
  }
13705
13809
  };
13706
- class FileItem {
13707
- constructor() {
13708
- __publicField(this, "status", "ready");
13709
- __publicField(this, "message", "准备中..");
13710
- __publicField(this, "uid", Date.now().toString());
13711
- __publicField(this, "name");
13712
- __publicField(this, "url");
13713
- __publicField(this, "type");
13714
- __publicField(this, "path");
13715
- __publicField(this, "percentage", 0);
13716
- __publicField(this, "formData", {});
13717
- }
13718
- }
13719
13810
  const InternalUploader = (props, ref) => {
13720
13811
  const { locale } = useConfig$1();
13721
13812
  const {
@@ -13761,13 +13852,15 @@ var __publicField = (obj, key, value) => {
13761
13852
  beforeDelete,
13762
13853
  ...restProps
13763
13854
  } = { ...defaultProps$H, ...props };
13764
- const [fileList, setFileList] = React.useState(defaultValue || []);
13765
- const [uploadQueue, setUploadQueue] = React.useState([]);
13766
- React.useEffect(() => {
13767
- if (value) {
13768
- setFileList(value);
13855
+ const [fileList, setFileList] = usePropsValue({
13856
+ value,
13857
+ defaultValue,
13858
+ finalValue: [],
13859
+ onChange: (v) => {
13860
+ onChange == null ? void 0 : onChange(v);
13769
13861
  }
13770
- }, [value]);
13862
+ });
13863
+ const [uploadQueue, setUploadQueue] = React.useState([]);
13771
13864
  const classes = classNames(className, "nut-uploader");
13772
13865
  React.useImperativeHandle(ref, () => ({
13773
13866
  submit: () => {
@@ -13858,63 +13951,60 @@ var __publicField = (obj, key, value) => {
13858
13951
  uploadOption.beforeXhrUpload = beforeXhrUpload;
13859
13952
  uploadOption.onStart = (option) => {
13860
13953
  clearUploadQueue(index);
13861
- setFileList((fileList2) => {
13862
- fileList2.forEach((item) => {
13954
+ setFileList(
13955
+ fileList.map((item) => {
13863
13956
  if (item.uid === fileItem.uid) {
13864
13957
  item.status = "ready";
13865
13958
  item.message = locale.uploader.readyUpload;
13866
13959
  }
13867
- });
13868
- return [...fileList2];
13869
- });
13960
+ return item;
13961
+ })
13962
+ );
13870
13963
  onStart && onStart(option);
13871
13964
  };
13872
13965
  uploadOption.onProgress = (e, option) => {
13873
- setFileList((fileList2) => {
13874
- fileList2.forEach((item) => {
13966
+ setFileList(
13967
+ fileList.map((item) => {
13875
13968
  if (item.uid === fileItem.uid) {
13876
- item.status = "uploading";
13969
+ item.status = UPLOADING;
13877
13970
  item.message = locale.uploader.uploading;
13878
13971
  item.percentage = e.progress;
13879
13972
  onProgress && onProgress({ e, option, percentage: item.percentage });
13880
13973
  }
13881
- });
13882
- return [...fileList2];
13883
- });
13974
+ return item;
13975
+ })
13976
+ );
13884
13977
  };
13885
13978
  uploadOption.onSuccess = (responseText, option) => {
13886
- setFileList((fileList2) => {
13887
- onUpdate && onUpdate(fileList2);
13888
- fileList2.forEach((item) => {
13889
- if (item.uid === fileItem.uid) {
13890
- item.status = "success";
13891
- item.message = locale.uploader.success;
13892
- item.responseText = responseText;
13893
- }
13894
- });
13895
- return [...fileList2];
13979
+ const list = fileList.map((item) => {
13980
+ if (item.uid === fileItem.uid) {
13981
+ item.status = SUCCESS;
13982
+ item.message = locale.uploader.success;
13983
+ item.responseText = responseText;
13984
+ }
13985
+ return item;
13896
13986
  });
13897
- onSuccess && onSuccess({
13987
+ setFileList(list);
13988
+ onSuccess == null ? void 0 : onSuccess({
13898
13989
  responseText,
13899
13990
  option,
13900
- fileList
13991
+ fileList: list
13901
13992
  });
13902
13993
  };
13903
13994
  uploadOption.onFailure = (responseText, option) => {
13904
- setFileList((fileList2) => {
13905
- fileList2.forEach((item) => {
13906
- if (item.uid === fileItem.uid) {
13907
- item.status = "error";
13908
- item.message = locale.uploader.error;
13909
- item.responseText = responseText;
13910
- }
13911
- });
13912
- return [...fileList2];
13995
+ const list = fileList.map((item) => {
13996
+ if (item.uid === fileItem.uid) {
13997
+ item.status = ERROR;
13998
+ item.message = locale.uploader.error;
13999
+ item.responseText = responseText;
14000
+ }
14001
+ return item;
13913
14002
  });
13914
- onFailure && onFailure({
14003
+ setFileList(list);
14004
+ onFailure == null ? void 0 : onFailure({
13915
14005
  responseText,
13916
14006
  option,
13917
- fileList
14007
+ fileList: list
13918
14008
  });
13919
14009
  };
13920
14010
  const task = new UploaderTaro(uploadOption);
@@ -13948,11 +14038,7 @@ var __publicField = (obj, key, value) => {
13948
14038
  fileItem.status = "ready";
13949
14039
  fileItem.type = fileType;
13950
14040
  fileItem.uid = `${fileItem.uid}_${index}`;
13951
- if (autoUpload) {
13952
- fileItem.message = locale.uploader.readyUpload;
13953
- } else {
13954
- fileItem.message = locale.uploader.waitingUpload;
13955
- }
14041
+ fileItem.message = autoUpload ? locale.uploader.readyUpload : locale.uploader.waitingUpload;
13956
14042
  if (Taro.getEnv() === "WEB") {
13957
14043
  const formData = new FormData();
13958
14044
  for (const [key, value2] of Object.entries(data)) {
@@ -13969,7 +14055,7 @@ var __publicField = (obj, key, value) => {
13969
14055
  fileItem.url = fileType === "video" ? file.thumbTempFilePath : filepath;
13970
14056
  }
13971
14057
  fileList.push(fileItem);
13972
- setFileList([...fileList]);
14058
+ setFileList(fileList);
13973
14059
  executeUpload(fileItem, index);
13974
14060
  });
13975
14061
  };
@@ -13994,9 +14080,9 @@ var __publicField = (obj, key, value) => {
13994
14080
  return filterFile;
13995
14081
  };
13996
14082
  const deleted = (file, index) => {
13997
- fileList.splice(index, 1);
13998
- onDelete && onDelete(file, fileList);
13999
- setFileList([...fileList]);
14083
+ const deletedFileList = fileList.filter((file2, idx) => idx !== index);
14084
+ onDelete == null ? void 0 : onDelete(file, deletedFileList);
14085
+ setFileList(deletedFileList);
14000
14086
  };
14001
14087
  const onDeleteItem = (file, index) => {
14002
14088
  clearUploadQueue(index);
@@ -14009,88 +14095,34 @@ var __publicField = (obj, key, value) => {
14009
14095
  const { tempFiles } = res;
14010
14096
  const _files = filterFiles(tempFiles);
14011
14097
  readFile(_files);
14012
- onChange && onChange({ fileList });
14013
14098
  };
14014
14099
  const onChangeImage = (res) => {
14015
14100
  const { tempFiles } = res;
14016
14101
  const _files = filterFiles(tempFiles);
14017
14102
  readFile(_files);
14018
- onChange && onChange({ fileList });
14019
14103
  };
14020
14104
  const handleItemClick = (file) => {
14021
- onFileItemClick && onFileItemClick(file);
14105
+ onFileItemClick == null ? void 0 : onFileItemClick(file);
14022
14106
  };
14023
- return /* @__PURE__ */ React.createElement("div", { className: classes, ...restProps }, (children || previewType === "list") && /* @__PURE__ */ React.createElement("div", { className: "nut-uploader__slot" }, /* @__PURE__ */ React.createElement(React.Fragment, null, children || /* @__PURE__ */ React.createElement(Button, { size: "small", type: "primary" }, "上传文件"), maxCount > fileList.length && /* @__PURE__ */ React.createElement(Button, { className: "nut-uploader__input", onClick: _chooseImage }))), fileList.length !== 0 && Array.isArray(fileList) && fileList.map((item, index) => {
14024
- return /* @__PURE__ */ React.createElement(
14025
- "div",
14026
- {
14027
- className: `nut-uploader__preview ${previewType}`,
14028
- key: item.uid
14029
- },
14030
- previewType === "picture" && deletable && /* @__PURE__ */ React.createElement(
14031
- a$n,
14032
- {
14033
- color: "rgba(0,0,0,0.6)",
14034
- className: "close",
14035
- onClick: () => onDeleteItem(item, index)
14036
- }
14037
- ),
14038
- previewType === "picture" && !children && /* @__PURE__ */ React.createElement("div", { className: "nut-uploader__preview-img" }, item.status === "ready" ? /* @__PURE__ */ React.createElement("div", { className: "nut-uploader__preview__progress" }, /* @__PURE__ */ React.createElement("div", { className: "nut-uploader__preview__progress__msg" }, item.message)) : item.status !== "success" && /* @__PURE__ */ React.createElement("div", { className: "nut-uploader__preview__progress" }, item.failIcon !== " " && item.loadingIcon !== " " && (item.status === "error" ? item.failIcon || /* @__PURE__ */ React.createElement(a$n, { color: "#fff" }) : item.loadingIcon || /* @__PURE__ */ React.createElement(r$h, { color: "#fff" })), /* @__PURE__ */ React.createElement("div", { className: "nut-uploader__preview__progress__msg" }, item.message)), item.type.includes("image") ? /* @__PURE__ */ React.createElement(React.Fragment, null, item.url && /* @__PURE__ */ React.createElement(
14039
- components.Image,
14040
- {
14041
- className: "nut-uploader__preview-img__c",
14042
- style: { objectFit: fit },
14043
- mode: "aspectFit",
14044
- src: item.url,
14045
- onClick: () => handleItemClick(item)
14046
- }
14047
- )) : /* @__PURE__ */ React.createElement(React.Fragment, null, previewUrl ? /* @__PURE__ */ React.createElement(
14048
- components.Image,
14049
- {
14050
- className: "nut-uploader__preview-img__c",
14051
- mode: "aspectFit",
14052
- src: previewUrl,
14053
- onClick: () => handleItemClick(item)
14054
- }
14055
- ) : /* @__PURE__ */ React.createElement("div", { className: "nut-uploader__preview-img__file" }, /* @__PURE__ */ React.createElement(
14056
- "div",
14057
- {
14058
- onClick: () => handleItemClick(item),
14059
- className: "nut-uploader__preview-img__file__name"
14060
- },
14061
- /* @__PURE__ */ React.createElement(a$i, { color: "#808080" }),
14062
- /* @__PURE__ */ React.createElement("span", null, " ", item.name)
14063
- ))), item.status === "success" ? /* @__PURE__ */ React.createElement("div", { className: "tips" }, item.name) : null),
14064
- previewType === "list" && /* @__PURE__ */ React.createElement("div", { className: "nut-uploader__preview-list" }, /* @__PURE__ */ React.createElement(
14065
- "div",
14066
- {
14067
- className: `nut-uploader__preview-img__file__name ${item.status}`,
14068
- onClick: () => handleItemClick(item)
14069
- },
14070
- /* @__PURE__ */ React.createElement(a$i, null),
14071
- /* @__PURE__ */ React.createElement("span", null, " ", item.name)
14072
- ), deletable && /* @__PURE__ */ React.createElement(
14073
- a$p,
14074
- {
14075
- color: "#808080",
14076
- className: "nut-uploader__preview-img__file__del",
14077
- onClick: () => onDeleteItem(item, index)
14078
- }
14079
- ), item.status === "uploading" && /* @__PURE__ */ React.createElement(
14080
- Progress,
14081
- {
14082
- percent: item.percentage,
14083
- color: "linear-gradient(270deg, rgba(18,126,255,1) 0%,rgba(32,147,255,1) 32.815625%,rgba(13,242,204,1) 100%)",
14084
- showText: false
14085
- }
14086
- ))
14087
- );
14088
- }), maxCount > fileList.length && previewType === "picture" && !children && /* @__PURE__ */ React.createElement(
14107
+ return /* @__PURE__ */ React.createElement("div", { className: classes, ...restProps }, (children || previewType === "list") && /* @__PURE__ */ React.createElement("div", { className: "nut-uploader__slot" }, /* @__PURE__ */ React.createElement(React.Fragment, null, children || /* @__PURE__ */ React.createElement(Button, { size: "small", type: "primary" }, "上传文件"), maxCount > fileList.length && /* @__PURE__ */ React.createElement(Button, { className: "nut-uploader__input", onClick: _chooseImage }))), /* @__PURE__ */ React.createElement(
14108
+ Preview,
14109
+ {
14110
+ ...{
14111
+ fileList,
14112
+ previewType,
14113
+ deletable,
14114
+ onDeleteItem,
14115
+ handleItemClick,
14116
+ previewUrl,
14117
+ children
14118
+ }
14119
+ }
14120
+ ), maxCount > fileList.length && previewType === "picture" && !children && /* @__PURE__ */ React.createElement(
14089
14121
  "div",
14090
14122
  {
14091
14123
  className: `nut-uploader__upload ${previewType} ${disabled ? "nut-uploader__upload-disabled" : ""}`
14092
14124
  },
14093
- /* @__PURE__ */ React.createElement("div", { className: "nut-uploader__icon" }, uploadIcon || /* @__PURE__ */ React.createElement(a$a, { size: "20px", color: "#808080" }), /* @__PURE__ */ React.createElement("span", { className: "nut-uploader__icon-tip" }, uploadLabel)),
14125
+ /* @__PURE__ */ React.createElement("div", { className: "nut-uploader__icon" }, uploadIcon, /* @__PURE__ */ React.createElement("span", { className: "nut-uploader__icon-tip" }, uploadLabel)),
14094
14126
  /* @__PURE__ */ React.createElement(Button, { className: "nut-uploader__input", onClick: _chooseImage })
14095
14127
  ));
14096
14128
  };
@@ -17601,7 +17633,13 @@ var __publicField = (obj, key, value) => {
17601
17633
  },
17602
17634
  ...rest
17603
17635
  },
17604
- React.Children.toArray(children).map((child, index) => /* @__PURE__ */ React.createElement(components.SwiperItem, { key: index }, child))
17636
+ React.Children.toArray(children).map((child, index) => {
17637
+ let className2;
17638
+ if (React.isValidElement(child)) {
17639
+ className2 = child.props.className;
17640
+ }
17641
+ return /* @__PURE__ */ React.createElement(components.SwiperItem, { className: className2, key: index }, child);
17642
+ })
17605
17643
  )
17606
17644
  ),
17607
17645
  renderIndicator()
package/dist/style.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui-react-taro v2.0.19-beta.0 Mon Sep 25 2023 18:04:00 GMT+0800 (China Standard Time)
2
+ * @nutui/nutui-react-taro v2.0.19 Wed Sep 27 2023 18:15:34 GMT+0800 (China Standard Time)
3
3
  * (c) 2023 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -0,0 +1,19 @@
1
+ import { ReactNode } from 'react';
2
+ export declare class FileItem {
3
+ status: FileItemStatus;
4
+ message: string;
5
+ uid: string;
6
+ name?: string;
7
+ url?: string;
8
+ type?: string;
9
+ path?: string;
10
+ percentage?: string | number;
11
+ formData?: FormData;
12
+ responseText?: string;
13
+ loadingIcon?: ReactNode;
14
+ failIcon?: ReactNode;
15
+ }
16
+ export type FileItemStatus = 'ready' | 'uploading' | 'success' | 'error' | 'removed';
17
+ export type FileType<T> = {
18
+ [key: string]: T;
19
+ };
@@ -1,3 +1,4 @@
1
1
  import { Uploader } from './uploader.taro';
2
- export type { FileType, FileItem, UploaderProps, FileItemStatus, } from './uploader.taro';
2
+ export type { UploaderProps } from './uploader.taro';
3
+ export type { FileType, FileItem, FileItemStatus } from './file-item';
3
4
  export default Uploader;
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const Preview: React.FunctionComponent<any>;
@@ -16,6 +16,9 @@ export declare class UploadOptions {
16
16
  onFailure?: any;
17
17
  beforeXhrUpload?: any;
18
18
  }
19
+ export declare const UPLOADING = "uploading";
20
+ export declare const SUCCESS = "success";
21
+ export declare const ERROR = "error";
19
22
  export declare class Upload {
20
23
  options: UploadOptions;
21
24
  constructor(options: UploadOptions);