@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
@@ -8,7 +8,7 @@ var __publicField = (obj, key, value) => {
8
8
  return value;
9
9
  };
10
10
  /*!
11
- * @nutui/nutui-react-taro v2.0.18 Wed Sep 20 2023 14:56:58 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) {
@@ -11823,7 +11825,8 @@ var __publicField = (obj, key, value) => {
11823
11825
  Taro.usePageScroll(updateItemOffset);
11824
11826
  React.useImperativeHandle(ref, () => ({
11825
11827
  toggle: (s) => {
11826
- s ? parent.toggleMenuItem(index) : parent.hideMenuItem(index);
11828
+ const from = "REF";
11829
+ s ? parent.toggleMenuItem(index, from) : parent.hideMenuItem(index, from);
11827
11830
  }
11828
11831
  }));
11829
11832
  const getIconCName = (optionVal, value2) => {
@@ -11903,7 +11906,7 @@ var __publicField = (obj, key, value) => {
11903
11906
  visible: showPopup,
11904
11907
  closeOnOverlayClick: parent.closeOnOverlayClick,
11905
11908
  onClick: () => {
11906
- parent.closeOnOverlayClick && parent.toggleMenuItem(index);
11909
+ parent.closeOnOverlayClick && parent.hideMenuItem(index);
11907
11910
  }
11908
11911
  }
11909
11912
  ) : null, /* @__PURE__ */ React.createElement(
@@ -11973,9 +11976,9 @@ var __publicField = (obj, key, value) => {
11973
11976
  lockScroll: true,
11974
11977
  overlay: true,
11975
11978
  icon: null,
11976
- onOpen: (index) => {
11979
+ onOpen: (index, from) => {
11977
11980
  },
11978
- onClose: (index) => {
11981
+ onClose: (index, from) => {
11979
11982
  }
11980
11983
  };
11981
11984
  const Menu = (props) => {
@@ -12014,22 +12017,22 @@ var __publicField = (obj, key, value) => {
12014
12017
  }, []);
12015
12018
  const [showMenuItem, setShowMenuItem] = React.useState([]);
12016
12019
  const [menuItemTitle, setMenuItemTitle] = React.useState([]);
12017
- const toggleMenuItem = (index) => {
12020
+ const toggleMenuItem = (index, from = "NORMAL") => {
12018
12021
  showMenuItem[index] = !showMenuItem[index];
12019
12022
  if (showMenuItem[index]) {
12020
- onOpen && onOpen(index);
12023
+ onOpen && onOpen(index, from);
12021
12024
  } else {
12022
- onClose && onClose(index);
12025
+ onClose && onClose(index, from);
12023
12026
  }
12024
12027
  const temp = showMenuItem.map(
12025
12028
  (i, idx) => idx === index ? i : false
12026
12029
  );
12027
12030
  setShowMenuItem([...temp]);
12028
12031
  };
12029
- const hideMenuItem = (index) => {
12032
+ const hideMenuItem = (index, from = "NORMAL") => {
12030
12033
  showMenuItem[index] = false;
12031
12034
  setShowMenuItem([...showMenuItem]);
12032
- onClose && onClose(index);
12035
+ onClose && onClose(index, from);
12033
12036
  };
12034
12037
  const updateTitle = (text, index) => {
12035
12038
  menuItemTitle[index] = text;
@@ -13456,80 +13459,6 @@ var __publicField = (obj, key, value) => {
13456
13459
  };
13457
13460
  TextArea.defaultProps = defaultProps$J;
13458
13461
  TextArea.displayName = "NutTextArea";
13459
- const defaultProps$I = {
13460
- ...ComponentDefaults,
13461
- percent: 0,
13462
- showText: false,
13463
- animated: false,
13464
- delay: 0
13465
- };
13466
- const Progress = (props) => {
13467
- const {
13468
- className,
13469
- style,
13470
- percent,
13471
- background,
13472
- color,
13473
- strokeWidth,
13474
- showText,
13475
- animated,
13476
- children,
13477
- delay,
13478
- ...rest
13479
- } = {
13480
- ...defaultProps$I,
13481
- ...props
13482
- };
13483
- const classPrefix2 = "nut-progress";
13484
- const classesInner = classNames({
13485
- [`${classPrefix2}-inner`]: true,
13486
- [`${classPrefix2}-active`]: animated
13487
- });
13488
- const stylesOuter = {
13489
- height: `${strokeWidth}px`,
13490
- background
13491
- };
13492
- const [displayPercent, setDispalyPercent] = React.useState(0);
13493
- const stylesInner = {
13494
- width: `${displayPercent}%`,
13495
- background: color
13496
- };
13497
- React.useEffect(() => {
13498
- setDispalyPercent(percent);
13499
- }, [percent]);
13500
- React.useEffect(() => {
13501
- let timer = null;
13502
- if (delay) {
13503
- setDispalyPercent(0);
13504
- timer = setTimeout(() => {
13505
- setDispalyPercent(percent);
13506
- }, delay);
13507
- }
13508
- return () => {
13509
- timer && clearTimeout(timer);
13510
- };
13511
- }, []);
13512
- 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(
13513
- "div",
13514
- {
13515
- className: `${classPrefix2}-text`,
13516
- style: { left: `${displayPercent}%` }
13517
- },
13518
- children || /* @__PURE__ */ React.createElement(
13519
- "div",
13520
- {
13521
- className: `${classPrefix2}-text__inner`,
13522
- style: {
13523
- background: color
13524
- }
13525
- },
13526
- percent,
13527
- "%"
13528
- )
13529
- ))));
13530
- };
13531
- Progress.defaultProps = defaultProps$I;
13532
- Progress.displayName = "NutProgress";
13533
13462
  class UploadOptions {
13534
13463
  constructor() {
13535
13464
  __publicField(this, "url", "");
@@ -13550,6 +13479,9 @@ var __publicField = (obj, key, value) => {
13550
13479
  __publicField(this, "beforeXhrUpload");
13551
13480
  }
13552
13481
  }
13482
+ const UPLOADING = "uploading";
13483
+ const SUCCESS = "success";
13484
+ const ERROR = "error";
13553
13485
  class Upload {
13554
13486
  constructor(options) {
13555
13487
  __publicField(this, "options");
@@ -13671,6 +13603,179 @@ var __publicField = (obj, key, value) => {
13671
13603
  done();
13672
13604
  }
13673
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
+ };
13674
13779
  const defaultProps$H = {
13675
13780
  ...ComponentDefaults,
13676
13781
  url: "",
@@ -13679,7 +13784,7 @@ var __publicField = (obj, key, value) => {
13679
13784
  sourceType: ["album", "camera"],
13680
13785
  mediaType: ["image", "video"],
13681
13786
  camera: "back",
13682
- uploadIcon: null,
13787
+ uploadIcon: /* @__PURE__ */ React.createElement(a$a, { size: "20px", color: "#808080" }),
13683
13788
  uploadLabel: "",
13684
13789
  previewType: "picture",
13685
13790
  fit: "cover",
@@ -13702,19 +13807,6 @@ var __publicField = (obj, key, value) => {
13702
13807
  return true;
13703
13808
  }
13704
13809
  };
13705
- class FileItem {
13706
- constructor() {
13707
- __publicField(this, "status", "ready");
13708
- __publicField(this, "message", "准备中..");
13709
- __publicField(this, "uid", Date.now().toString());
13710
- __publicField(this, "name");
13711
- __publicField(this, "url");
13712
- __publicField(this, "type");
13713
- __publicField(this, "path");
13714
- __publicField(this, "percentage", 0);
13715
- __publicField(this, "formData", {});
13716
- }
13717
- }
13718
13810
  const InternalUploader = (props, ref) => {
13719
13811
  const { locale } = useConfig$1();
13720
13812
  const {
@@ -13760,13 +13852,15 @@ var __publicField = (obj, key, value) => {
13760
13852
  beforeDelete,
13761
13853
  ...restProps
13762
13854
  } = { ...defaultProps$H, ...props };
13763
- const [fileList, setFileList] = React.useState(defaultValue || []);
13764
- const [uploadQueue, setUploadQueue] = React.useState([]);
13765
- React.useEffect(() => {
13766
- if (value) {
13767
- setFileList(value);
13855
+ const [fileList, setFileList] = usePropsValue({
13856
+ value,
13857
+ defaultValue,
13858
+ finalValue: [],
13859
+ onChange: (v) => {
13860
+ onChange == null ? void 0 : onChange(v);
13768
13861
  }
13769
- }, [value]);
13862
+ });
13863
+ const [uploadQueue, setUploadQueue] = React.useState([]);
13770
13864
  const classes = classNames(className, "nut-uploader");
13771
13865
  React.useImperativeHandle(ref, () => ({
13772
13866
  submit: () => {
@@ -13857,63 +13951,60 @@ var __publicField = (obj, key, value) => {
13857
13951
  uploadOption.beforeXhrUpload = beforeXhrUpload;
13858
13952
  uploadOption.onStart = (option) => {
13859
13953
  clearUploadQueue(index);
13860
- setFileList((fileList2) => {
13861
- fileList2.forEach((item) => {
13954
+ setFileList(
13955
+ fileList.map((item) => {
13862
13956
  if (item.uid === fileItem.uid) {
13863
13957
  item.status = "ready";
13864
13958
  item.message = locale.uploader.readyUpload;
13865
13959
  }
13866
- });
13867
- return [...fileList2];
13868
- });
13960
+ return item;
13961
+ })
13962
+ );
13869
13963
  onStart && onStart(option);
13870
13964
  };
13871
13965
  uploadOption.onProgress = (e, option) => {
13872
- setFileList((fileList2) => {
13873
- fileList2.forEach((item) => {
13966
+ setFileList(
13967
+ fileList.map((item) => {
13874
13968
  if (item.uid === fileItem.uid) {
13875
- item.status = "uploading";
13969
+ item.status = UPLOADING;
13876
13970
  item.message = locale.uploader.uploading;
13877
13971
  item.percentage = e.progress;
13878
13972
  onProgress && onProgress({ e, option, percentage: item.percentage });
13879
13973
  }
13880
- });
13881
- return [...fileList2];
13882
- });
13974
+ return item;
13975
+ })
13976
+ );
13883
13977
  };
13884
13978
  uploadOption.onSuccess = (responseText, option) => {
13885
- setFileList((fileList2) => {
13886
- onUpdate && onUpdate(fileList2);
13887
- fileList2.forEach((item) => {
13888
- if (item.uid === fileItem.uid) {
13889
- item.status = "success";
13890
- item.message = locale.uploader.success;
13891
- item.responseText = responseText;
13892
- }
13893
- });
13894
- 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;
13895
13986
  });
13896
- onSuccess && onSuccess({
13987
+ setFileList(list);
13988
+ onSuccess == null ? void 0 : onSuccess({
13897
13989
  responseText,
13898
13990
  option,
13899
- fileList
13991
+ fileList: list
13900
13992
  });
13901
13993
  };
13902
13994
  uploadOption.onFailure = (responseText, option) => {
13903
- setFileList((fileList2) => {
13904
- fileList2.forEach((item) => {
13905
- if (item.uid === fileItem.uid) {
13906
- item.status = "error";
13907
- item.message = locale.uploader.error;
13908
- item.responseText = responseText;
13909
- }
13910
- });
13911
- 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;
13912
14002
  });
13913
- onFailure && onFailure({
14003
+ setFileList(list);
14004
+ onFailure == null ? void 0 : onFailure({
13914
14005
  responseText,
13915
14006
  option,
13916
- fileList
14007
+ fileList: list
13917
14008
  });
13918
14009
  };
13919
14010
  const task = new UploaderTaro(uploadOption);
@@ -13947,11 +14038,7 @@ var __publicField = (obj, key, value) => {
13947
14038
  fileItem.status = "ready";
13948
14039
  fileItem.type = fileType;
13949
14040
  fileItem.uid = `${fileItem.uid}_${index}`;
13950
- if (autoUpload) {
13951
- fileItem.message = locale.uploader.readyUpload;
13952
- } else {
13953
- fileItem.message = locale.uploader.waitingUpload;
13954
- }
14041
+ fileItem.message = autoUpload ? locale.uploader.readyUpload : locale.uploader.waitingUpload;
13955
14042
  if (Taro.getEnv() === "WEB") {
13956
14043
  const formData = new FormData();
13957
14044
  for (const [key, value2] of Object.entries(data)) {
@@ -13968,7 +14055,7 @@ var __publicField = (obj, key, value) => {
13968
14055
  fileItem.url = fileType === "video" ? file.thumbTempFilePath : filepath;
13969
14056
  }
13970
14057
  fileList.push(fileItem);
13971
- setFileList([...fileList]);
14058
+ setFileList(fileList);
13972
14059
  executeUpload(fileItem, index);
13973
14060
  });
13974
14061
  };
@@ -13993,9 +14080,9 @@ var __publicField = (obj, key, value) => {
13993
14080
  return filterFile;
13994
14081
  };
13995
14082
  const deleted = (file, index) => {
13996
- fileList.splice(index, 1);
13997
- onDelete && onDelete(file, fileList);
13998
- setFileList([...fileList]);
14083
+ const deletedFileList = fileList.filter((file2, idx) => idx !== index);
14084
+ onDelete == null ? void 0 : onDelete(file, deletedFileList);
14085
+ setFileList(deletedFileList);
13999
14086
  };
14000
14087
  const onDeleteItem = (file, index) => {
14001
14088
  clearUploadQueue(index);
@@ -14008,88 +14095,34 @@ var __publicField = (obj, key, value) => {
14008
14095
  const { tempFiles } = res;
14009
14096
  const _files = filterFiles(tempFiles);
14010
14097
  readFile(_files);
14011
- onChange && onChange({ fileList });
14012
14098
  };
14013
14099
  const onChangeImage = (res) => {
14014
14100
  const { tempFiles } = res;
14015
14101
  const _files = filterFiles(tempFiles);
14016
14102
  readFile(_files);
14017
- onChange && onChange({ fileList });
14018
14103
  };
14019
14104
  const handleItemClick = (file) => {
14020
- onFileItemClick && onFileItemClick(file);
14105
+ onFileItemClick == null ? void 0 : onFileItemClick(file);
14021
14106
  };
14022
- 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) => {
14023
- return /* @__PURE__ */ React.createElement(
14024
- "div",
14025
- {
14026
- className: `nut-uploader__preview ${previewType}`,
14027
- key: item.uid
14028
- },
14029
- previewType === "picture" && deletable && /* @__PURE__ */ React.createElement(
14030
- a$n,
14031
- {
14032
- color: "rgba(0,0,0,0.6)",
14033
- className: "close",
14034
- onClick: () => onDeleteItem(item, index)
14035
- }
14036
- ),
14037
- 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(
14038
- components.Image,
14039
- {
14040
- className: "nut-uploader__preview-img__c",
14041
- style: { objectFit: fit },
14042
- mode: "aspectFit",
14043
- src: item.url,
14044
- onClick: () => handleItemClick(item)
14045
- }
14046
- )) : /* @__PURE__ */ React.createElement(React.Fragment, null, previewUrl ? /* @__PURE__ */ React.createElement(
14047
- components.Image,
14048
- {
14049
- className: "nut-uploader__preview-img__c",
14050
- mode: "aspectFit",
14051
- src: previewUrl,
14052
- onClick: () => handleItemClick(item)
14053
- }
14054
- ) : /* @__PURE__ */ React.createElement("div", { className: "nut-uploader__preview-img__file" }, /* @__PURE__ */ React.createElement(
14055
- "div",
14056
- {
14057
- onClick: () => handleItemClick(item),
14058
- className: "nut-uploader__preview-img__file__name"
14059
- },
14060
- /* @__PURE__ */ React.createElement(a$i, { color: "#808080" }),
14061
- /* @__PURE__ */ React.createElement("span", null, " ", item.name)
14062
- ))), item.status === "success" ? /* @__PURE__ */ React.createElement("div", { className: "tips" }, item.name) : null),
14063
- previewType === "list" && /* @__PURE__ */ React.createElement("div", { className: "nut-uploader__preview-list" }, /* @__PURE__ */ React.createElement(
14064
- "div",
14065
- {
14066
- className: `nut-uploader__preview-img__file__name ${item.status}`,
14067
- onClick: () => handleItemClick(item)
14068
- },
14069
- /* @__PURE__ */ React.createElement(a$i, null),
14070
- /* @__PURE__ */ React.createElement("span", null, " ", item.name)
14071
- ), deletable && /* @__PURE__ */ React.createElement(
14072
- a$p,
14073
- {
14074
- color: "#808080",
14075
- className: "nut-uploader__preview-img__file__del",
14076
- onClick: () => onDeleteItem(item, index)
14077
- }
14078
- ), item.status === "uploading" && /* @__PURE__ */ React.createElement(
14079
- Progress,
14080
- {
14081
- percent: item.percentage,
14082
- color: "linear-gradient(270deg, rgba(18,126,255,1) 0%,rgba(32,147,255,1) 32.815625%,rgba(13,242,204,1) 100%)",
14083
- showText: false
14084
- }
14085
- ))
14086
- );
14087
- }), 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(
14088
14121
  "div",
14089
14122
  {
14090
14123
  className: `nut-uploader__upload ${previewType} ${disabled ? "nut-uploader__upload-disabled" : ""}`
14091
14124
  },
14092
- /* @__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)),
14093
14126
  /* @__PURE__ */ React.createElement(Button, { className: "nut-uploader__input", onClick: _chooseImage })
14094
14127
  ));
14095
14128
  };
@@ -17480,7 +17513,7 @@ var __publicField = (obj, key, value) => {
17480
17513
  }
17481
17514
  return childs;
17482
17515
  };
17483
- return /* @__PURE__ */ React.createElement("div", { className: classNames(classes, className), ...rest }, renderElement());
17516
+ return /* @__PURE__ */ React.createElement("div", { className: classNames(classPrefix$4, classes, className), ...rest }, renderElement());
17484
17517
  };
17485
17518
  Indicator.defaultProps = defaultProps$i;
17486
17519
  Indicator.displayName = "NutIndicator";
@@ -17504,6 +17537,7 @@ var __publicField = (obj, key, value) => {
17504
17537
  duration,
17505
17538
  direction,
17506
17539
  defaultValue,
17540
+ onChange,
17507
17541
  ...rest
17508
17542
  } = {
17509
17543
  ...defaultProps$h,
@@ -17588,14 +17622,24 @@ var __publicField = (obj, key, value) => {
17588
17622
  autoplay: autoPlay,
17589
17623
  vertical: direction === "vertical",
17590
17624
  indicatorDots: false,
17591
- onChange: handleOnChange,
17625
+ onChange: (e) => {
17626
+ var _a;
17627
+ handleOnChange(e);
17628
+ (_a = props.onChange) == null ? void 0 : _a.call(props, e);
17629
+ },
17592
17630
  style: {
17593
17631
  width: !width ? "100%" : `${width}px`,
17594
17632
  height: !height ? "150px" : `${height}px`
17595
17633
  },
17596
17634
  ...rest
17597
17635
  },
17598
- 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
+ })
17599
17643
  )
17600
17644
  ),
17601
17645
  renderIndicator()
@@ -17657,7 +17701,9 @@ var __publicField = (obj, key, value) => {
17657
17701
  });
17658
17702
  const [showPop, setShowPop] = React.useState(visible);
17659
17703
  const [active, setActive] = React.useState(0);
17660
- const [maxNo] = React.useState((images == null ? void 0 : images.length) || 0 + ((videos == null ? void 0 : videos.length) || 0));
17704
+ const [maxNo, setMaxNo] = React.useState(
17705
+ (images == null ? void 0 : images.length) || 0 + ((videos == null ? void 0 : videos.length) || 0)
17706
+ );
17661
17707
  const [store, setStore] = React.useState({
17662
17708
  scale: 1,
17663
17709
  moveable: false
@@ -17746,6 +17792,9 @@ var __publicField = (obj, key, value) => {
17746
17792
  React.useEffect(() => {
17747
17793
  setActive(innerNo);
17748
17794
  }, [innerNo]);
17795
+ React.useEffect(() => {
17796
+ setMaxNo((images == null ? void 0 : images.length) || 0 + ((videos == null ? void 0 : videos.length) || 0));
17797
+ }, [images, videos]);
17749
17798
  const scaleNow = () => {
17750
17799
  if (ref.current) {
17751
17800
  ref.current.style.transform = `scale(${store.scale})`;
@@ -17762,7 +17811,7 @@ var __publicField = (obj, key, value) => {
17762
17811
  };
17763
17812
  const onCloseInner = () => {
17764
17813
  setShowPop(false);
17765
- setActive(1);
17814
+ setActive(innerNo);
17766
17815
  scaleNow();
17767
17816
  onClose && onClose();
17768
17817
  setStore({