@nutui/nutui-react 2.0.19-beta.1 → 2.0.20-beta.0

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 (32) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/esm/Button.js +84 -5
  3. package/dist/esm/Image.js +1 -1
  4. package/dist/esm/Uploader.js +191 -191
  5. package/dist/esm/formitem2.js +184 -78
  6. package/dist/esm/types/src/packages/uploader/demo.taro.d.ts +0 -15
  7. package/dist/esm/types/src/packages/uploader/file-item.d.ts +19 -0
  8. package/dist/esm/types/src/packages/uploader/index.d.ts +2 -1
  9. package/dist/esm/types/src/packages/uploader/index.taro.d.ts +2 -1
  10. package/dist/esm/types/src/packages/uploader/preview.d.ts +2 -0
  11. package/dist/esm/types/src/packages/uploader/preview.taro.d.ts +2 -0
  12. package/dist/esm/types/src/packages/uploader/upload.d.ts +3 -0
  13. package/dist/esm/types/src/packages/uploader/uploader.d.ts +5 -23
  14. package/dist/esm/types/src/packages/uploader/uploader.taro.d.ts +10 -26
  15. package/dist/locales/base.js +1 -1
  16. package/dist/locales/en-US.js +1 -1
  17. package/dist/locales/id-ID.js +1 -1
  18. package/dist/locales/tr-TR.js +1 -1
  19. package/dist/locales/zh-CN.js +1 -1
  20. package/dist/locales/zh-TW.js +1 -1
  21. package/dist/locales/zh-UG.js +1 -1
  22. package/dist/nutui.react.es.js +281 -300
  23. package/dist/nutui.react.umd.js +281 -300
  24. package/dist/style.mjs +1 -1
  25. package/dist/types/packages/calendar/calendar.d.ts +4 -4
  26. package/dist/types/packages/uploader/file-item.d.ts +19 -0
  27. package/dist/types/packages/uploader/index.d.ts +2 -1
  28. package/dist/types/packages/uploader/preview.d.ts +2 -0
  29. package/dist/types/packages/uploader/upload.d.ts +3 -0
  30. package/dist/types/packages/uploader/uploader.d.ts +5 -23
  31. package/package.json +1 -1
  32. package/dist/esm/button2.js +0 -87
@@ -6,7 +6,7 @@ var __publicField = (obj, key, value) => {
6
6
  };
7
7
  var _a;
8
8
  /*!
9
- * @nutui/nutui-react v2.0.19-beta.1 Tue Sep 26 2023 19:08:13 GMT+0800 (China Standard Time)
9
+ * @nutui/nutui-react v2.0.20 Fri Oct 13 2023 14:00:36 GMT+0800 (China Standard Time)
10
10
  * (c) 2023 @jdf2e.
11
11
  * Released under the MIT License.
12
12
  */
@@ -3750,7 +3750,7 @@ const defaultProps$1p = {
3750
3750
  fit: "fill",
3751
3751
  position: "center",
3752
3752
  alt: "",
3753
- width: "center",
3753
+ width: "",
3754
3754
  height: "",
3755
3755
  error: true,
3756
3756
  loading: true,
@@ -16461,11 +16461,11 @@ class FormStore {
16461
16461
  ...this.store,
16462
16462
  ...newStore
16463
16463
  };
16464
- this.fieldEntities.forEach((enetity) => {
16465
- const { name } = enetity.props;
16464
+ this.fieldEntities.forEach((entity) => {
16465
+ const { name } = entity.props;
16466
16466
  Object.keys(newStore).forEach((key) => {
16467
16467
  if (key === name) {
16468
- enetity.onStoreChange("update");
16468
+ entity.onStoreChange("update");
16469
16469
  }
16470
16470
  });
16471
16471
  });
@@ -16476,44 +16476,19 @@ class FormStore {
16476
16476
  ...callback
16477
16477
  };
16478
16478
  });
16479
- __publicField(this, "validate", () => {
16480
- const err = [];
16479
+ __publicField(this, "validateFields", async (nameList) => {
16480
+ var _a2;
16481
+ let filterEntitys = [];
16482
+ const errs = [];
16481
16483
  this.errors.length = 0;
16482
- this.fieldEntities.forEach((entity) => {
16483
- var _a2;
16484
- const { name, rules: rules2 = [] } = entity.props;
16485
- const descriptor = {};
16486
- if (rules2.length) {
16487
- if (rules2.length > 1) {
16488
- descriptor[name] = [];
16489
- rules2.forEach((v) => {
16490
- descriptor[name].push(v);
16491
- });
16492
- } else {
16493
- descriptor[name] = rules2[0];
16494
- }
16495
- }
16496
- const validator = new Schema(descriptor);
16497
- validator.messages();
16498
- validator.validate({ [name]: (_a2 = this.store) == null ? void 0 : _a2[name] }, (errors) => {
16499
- if (errors) {
16500
- err.push(...errors);
16501
- this.errors[name] = errors;
16502
- }
16503
- entity.onStoreChange("validate");
16504
- });
16505
- });
16506
- return err;
16507
- });
16508
- __publicField(this, "validateFields", (nameList) => {
16509
16484
  if (!nameList || nameList.length === 0) {
16510
- this.validate();
16511
- return;
16485
+ filterEntitys = this.fieldEntities;
16486
+ } else {
16487
+ filterEntitys = this.fieldEntities.filter(
16488
+ ({ props: { name } }) => nameList.includes(name)
16489
+ );
16512
16490
  }
16513
- this.fieldEntities.filter(({ props: { name } }) => {
16514
- return nameList.includes(name);
16515
- }).forEach((entity) => {
16516
- var _a2;
16491
+ for (const entity of filterEntitys) {
16517
16492
  const { name, rules: rules2 = [] } = entity.props;
16518
16493
  const descriptor = {};
16519
16494
  if (rules2.length) {
@@ -16527,19 +16502,22 @@ class FormStore {
16527
16502
  }
16528
16503
  }
16529
16504
  const validator = new Schema(descriptor);
16530
- validator.messages();
16531
- validator.validate({ [name]: (_a2 = this.store) == null ? void 0 : _a2[name] }, (errors) => {
16505
+ try {
16532
16506
  this.errors[name] = [];
16507
+ await validator.validate({ [name]: (_a2 = this.store) == null ? void 0 : _a2[name] });
16508
+ } catch ({ errors }) {
16533
16509
  if (errors) {
16510
+ errs.push(...errors);
16534
16511
  this.errors[name] = errors;
16535
16512
  }
16536
- entity.onStoreChange("validate");
16537
- });
16538
- });
16513
+ }
16514
+ entity.onStoreChange("validate");
16515
+ }
16516
+ return errs;
16539
16517
  });
16540
- __publicField(this, "submit", () => {
16518
+ __publicField(this, "submit", async () => {
16541
16519
  var _a2, _b, _c, _d;
16542
- const errors = this.validate();
16520
+ const errors = await this.validateFields();
16543
16521
  if (errors.length === 0) {
16544
16522
  (_b = (_a2 = this.callbacks).onFinish) == null ? void 0 : _b.call(_a2, this.store);
16545
16523
  } else if (errors.length > 0) {
@@ -18986,6 +18964,99 @@ const TextArea = (props) => {
18986
18964
  };
18987
18965
  TextArea.defaultProps = defaultProps$H;
18988
18966
  TextArea.displayName = "NutTextArea";
18967
+ class UploadOptions {
18968
+ constructor() {
18969
+ __publicField(this, "url", "");
18970
+ __publicField(this, "name", "file");
18971
+ __publicField(this, "fileType", "image");
18972
+ __publicField(this, "formData");
18973
+ __publicField(this, "sourceFile");
18974
+ __publicField(this, "method", "post");
18975
+ __publicField(this, "xhrState", 200);
18976
+ __publicField(this, "timeout", 30 * 1e3);
18977
+ __publicField(this, "headers", {});
18978
+ __publicField(this, "withCredentials", false);
18979
+ __publicField(this, "onStart");
18980
+ __publicField(this, "taroFilePath");
18981
+ __publicField(this, "onProgress");
18982
+ __publicField(this, "onSuccess");
18983
+ __publicField(this, "onFailure");
18984
+ __publicField(this, "beforeXhrUpload");
18985
+ }
18986
+ }
18987
+ const UPLOADING = "uploading";
18988
+ const SUCCESS = "success";
18989
+ const ERROR = "error";
18990
+ class Upload {
18991
+ constructor(options2) {
18992
+ __publicField(this, "options");
18993
+ this.options = options2;
18994
+ }
18995
+ upload() {
18996
+ var _a2;
18997
+ const { options: options2 } = this;
18998
+ const xhr = new XMLHttpRequest();
18999
+ xhr.timeout = options2.timeout;
19000
+ if (xhr.upload) {
19001
+ xhr.upload.addEventListener(
19002
+ "progress",
19003
+ (e) => {
19004
+ var _a3;
19005
+ (_a3 = options2.onProgress) == null ? void 0 : _a3.call(options2, e, options2);
19006
+ },
19007
+ false
19008
+ );
19009
+ xhr.onreadystatechange = () => {
19010
+ var _a3, _b;
19011
+ if (xhr.readyState === 4) {
19012
+ if (xhr.status === options2.xhrState) {
19013
+ (_a3 = options2.onSuccess) == null ? void 0 : _a3.call(options2, xhr.responseText, options2);
19014
+ } else {
19015
+ (_b = options2.onFailure) == null ? void 0 : _b.call(options2, xhr.responseText, options2);
19016
+ }
19017
+ }
19018
+ };
19019
+ xhr.withCredentials = options2.withCredentials;
19020
+ xhr.open(options2.method, options2.url, true);
19021
+ for (const [key, value] of Object.entries(options2.headers)) {
19022
+ xhr.setRequestHeader(key, value);
19023
+ }
19024
+ (_a2 = options2.onStart) == null ? void 0 : _a2.call(options2, options2);
19025
+ if (options2.beforeXhrUpload) {
19026
+ options2.beforeXhrUpload(xhr, options2);
19027
+ } else {
19028
+ xhr.send(options2.formData);
19029
+ }
19030
+ } else {
19031
+ console.warn("浏览器不支持 XMLHttpRequest");
19032
+ }
19033
+ }
19034
+ }
19035
+ const funcInterceptor = (interceptor, {
19036
+ args = [],
19037
+ done,
19038
+ canceled
19039
+ }) => {
19040
+ if (interceptor) {
19041
+ const returnVal = interceptor.apply(null, args);
19042
+ if (isPromise(returnVal)) {
19043
+ returnVal.then((value) => {
19044
+ if (value) {
19045
+ done(value);
19046
+ } else if (canceled) {
19047
+ canceled();
19048
+ }
19049
+ }).catch(() => {
19050
+ });
19051
+ } else if (returnVal) {
19052
+ done();
19053
+ } else if (canceled) {
19054
+ canceled();
19055
+ }
19056
+ } else {
19057
+ done();
19058
+ }
19059
+ };
18989
19060
  const defaultProps$G = {
18990
19061
  ...ComponentDefaults,
18991
19062
  percent: 0,
@@ -19106,96 +19177,105 @@ const Progress = (props) => {
19106
19177
  };
19107
19178
  Progress.defaultProps = defaultProps$G;
19108
19179
  Progress.displayName = "NutProgress";
19109
- class UploadOptions {
19110
- constructor() {
19111
- __publicField(this, "url", "");
19112
- __publicField(this, "name", "file");
19113
- __publicField(this, "fileType", "image");
19114
- __publicField(this, "formData");
19115
- __publicField(this, "sourceFile");
19116
- __publicField(this, "method", "post");
19117
- __publicField(this, "xhrState", 200);
19118
- __publicField(this, "timeout", 30 * 1e3);
19119
- __publicField(this, "headers", {});
19120
- __publicField(this, "withCredentials", false);
19121
- __publicField(this, "onStart");
19122
- __publicField(this, "taroFilePath");
19123
- __publicField(this, "onProgress");
19124
- __publicField(this, "onSuccess");
19125
- __publicField(this, "onFailure");
19126
- __publicField(this, "beforeXhrUpload");
19127
- }
19128
- }
19129
- class Upload {
19130
- constructor(options2) {
19131
- __publicField(this, "options");
19132
- this.options = options2;
19133
- }
19134
- upload() {
19180
+ const Preview = ({
19181
+ fileList,
19182
+ previewType,
19183
+ deletable,
19184
+ onDeleteItem,
19185
+ handleItemClick,
19186
+ previewUrl,
19187
+ children
19188
+ }) => {
19189
+ const renderIcon = (item) => {
19190
+ if (item.status === ERROR) {
19191
+ return item.failIcon || /* @__PURE__ */ React__default.createElement(x$9, { color: "#fff" });
19192
+ }
19193
+ return item.loadingIcon || /* @__PURE__ */ React__default.createElement(k$3, { className: "nut-icon-loading", color: "#fff" });
19194
+ };
19195
+ return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, fileList.length !== 0 && fileList.map((item, index) => {
19135
19196
  var _a2;
19136
- const { options: options2 } = this;
19137
- const xhr = new XMLHttpRequest();
19138
- xhr.timeout = options2.timeout;
19139
- if (xhr.upload) {
19140
- xhr.upload.addEventListener(
19141
- "progress",
19142
- (e) => {
19143
- var _a3;
19144
- (_a3 = options2.onProgress) == null ? void 0 : _a3.call(options2, e, options2);
19197
+ return /* @__PURE__ */ React__default.createElement(
19198
+ "div",
19199
+ {
19200
+ className: `nut-uploader__preview ${previewType}`,
19201
+ key: item.uid
19202
+ },
19203
+ previewType === "picture" && deletable && /* @__PURE__ */ React__default.createElement(
19204
+ x$9,
19205
+ {
19206
+ color: "rgba(0,0,0,0.6)",
19207
+ className: "close",
19208
+ onClick: () => onDeleteItem(item, index)
19209
+ }
19210
+ ),
19211
+ previewType === "picture" && !children && /* @__PURE__ */ React__default.createElement("div", { className: "nut-uploader__preview-img" }, item.status === "ready" ? /* @__PURE__ */ React__default.createElement("div", { className: "nut-uploader__preview__progress" }, /* @__PURE__ */ React__default.createElement("div", { className: "nut-uploader__preview__progress__msg" }, item.message)) : item.status !== "success" && /* @__PURE__ */ React__default.createElement("div", { className: "nut-uploader__preview__progress" }, renderIcon(item), /* @__PURE__ */ React__default.createElement("div", { className: "nut-uploader__preview__progress__msg" }, item.message)), ((_a2 = item.type) == null ? void 0 : _a2.includes("image")) ? /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, item.url && /* @__PURE__ */ React__default.createElement(
19212
+ "img",
19213
+ {
19214
+ className: "nut-uploader__preview-img__c",
19215
+ style: { objectFit: "fill" },
19216
+ src: item.url,
19217
+ alt: "",
19218
+ onClick: () => handleItemClick(item)
19219
+ }
19220
+ )) : /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, previewUrl ? /* @__PURE__ */ React__default.createElement(
19221
+ "img",
19222
+ {
19223
+ className: "nut-uploader__preview-img__c",
19224
+ src: previewUrl,
19225
+ alt: "",
19226
+ onClick: () => handleItemClick(item)
19227
+ }
19228
+ ) : /* @__PURE__ */ React__default.createElement("div", { className: "nut-uploader__preview-img__file" }, /* @__PURE__ */ React__default.createElement(
19229
+ "div",
19230
+ {
19231
+ onClick: () => handleItemClick(item),
19232
+ className: "nut-uploader__preview-img__file__name"
19145
19233
  },
19146
- false
19147
- );
19148
- xhr.onreadystatechange = () => {
19149
- var _a3, _b;
19150
- if (xhr.readyState === 4) {
19151
- if (xhr.status === options2.xhrState) {
19152
- (_a3 = options2.onSuccess) == null ? void 0 : _a3.call(options2, xhr.responseText, options2);
19153
- } else {
19154
- (_b = options2.onFailure) == null ? void 0 : _b.call(options2, xhr.responseText, options2);
19155
- }
19234
+ /* @__PURE__ */ React__default.createElement(x$6, { color: "#808080" }),
19235
+ /* @__PURE__ */ React__default.createElement("span", null, " ", item.name)
19236
+ ))), item.status === "success" ? /* @__PURE__ */ React__default.createElement("div", { className: "tips" }, item.name) : null),
19237
+ previewType === "list" && /* @__PURE__ */ React__default.createElement("div", { className: "nut-uploader__preview-list" }, /* @__PURE__ */ React__default.createElement(
19238
+ "div",
19239
+ {
19240
+ className: `nut-uploader__preview-img__file__name ${item.status}`,
19241
+ onClick: () => handleItemClick(item)
19242
+ },
19243
+ /* @__PURE__ */ React__default.createElement(x$6, null),
19244
+ /* @__PURE__ */ React__default.createElement("span", null, " ", item.name)
19245
+ ), deletable && /* @__PURE__ */ React__default.createElement(
19246
+ y$8,
19247
+ {
19248
+ color: "#808080",
19249
+ className: "nut-uploader__preview-img__file__del",
19250
+ onClick: () => onDeleteItem(item, index)
19156
19251
  }
19157
- };
19158
- xhr.withCredentials = options2.withCredentials;
19159
- xhr.open(options2.method, options2.url, true);
19160
- for (const [key, value] of Object.entries(options2.headers)) {
19161
- xhr.setRequestHeader(key, value);
19162
- }
19163
- (_a2 = options2.onStart) == null ? void 0 : _a2.call(options2, options2);
19164
- if (options2.beforeXhrUpload) {
19165
- options2.beforeXhrUpload(xhr, options2);
19166
- } else {
19167
- xhr.send(options2.formData);
19168
- }
19169
- } else {
19170
- console.warn("浏览器不支持 XMLHttpRequest");
19171
- }
19172
- }
19173
- }
19174
- const funcInterceptor = (interceptor, {
19175
- args = [],
19176
- done,
19177
- canceled
19178
- }) => {
19179
- if (interceptor) {
19180
- const returnVal = interceptor.apply(null, args);
19181
- if (isPromise(returnVal)) {
19182
- returnVal.then((value) => {
19183
- if (value) {
19184
- done(value);
19185
- } else if (canceled) {
19186
- canceled();
19252
+ ), item.status === "uploading" && /* @__PURE__ */ React__default.createElement(
19253
+ Progress,
19254
+ {
19255
+ percent: item.percentage,
19256
+ color: "linear-gradient(270deg, rgba(18,126,255,1) 0%,rgba(32,147,255,1) 32.815625%,rgba(13,242,204,1) 100%)",
19257
+ showText: false
19187
19258
  }
19188
- }).catch(() => {
19189
- });
19190
- } else if (returnVal) {
19191
- done();
19192
- } else if (canceled) {
19193
- canceled();
19194
- }
19195
- } else {
19196
- done();
19197
- }
19259
+ ))
19260
+ );
19261
+ }));
19198
19262
  };
19263
+ class FileItem {
19264
+ constructor() {
19265
+ __publicField(this, "status", "ready");
19266
+ __publicField(this, "message", "准备中..");
19267
+ __publicField(this, "uid", (/* @__PURE__ */ new Date()).getTime().toString());
19268
+ __publicField(this, "name");
19269
+ __publicField(this, "url");
19270
+ __publicField(this, "type");
19271
+ __publicField(this, "path");
19272
+ __publicField(this, "percentage", 0);
19273
+ __publicField(this, "formData", {});
19274
+ __publicField(this, "responseText");
19275
+ __publicField(this, "loadingIcon");
19276
+ __publicField(this, "failIcon");
19277
+ }
19278
+ }
19199
19279
  const defaultProps$F = {
19200
19280
  ...ComponentDefaults,
19201
19281
  url: "",
@@ -19218,24 +19298,11 @@ const defaultProps$F = {
19218
19298
  preview: true,
19219
19299
  deletable: true,
19220
19300
  capture: false,
19301
+ uploadIcon: /* @__PURE__ */ React__default.createElement(x$3, { width: "20px", height: "20px", color: "#808080" }),
19221
19302
  beforeDelete: (file, files) => {
19222
19303
  return true;
19223
19304
  }
19224
19305
  };
19225
- class FileItem {
19226
- constructor() {
19227
- __publicField(this, "status", "ready");
19228
- __publicField(this, "message", "准备中..");
19229
- __publicField(this, "uid", (/* @__PURE__ */ new Date()).getTime().toString());
19230
- __publicField(this, "name");
19231
- __publicField(this, "url");
19232
- __publicField(this, "type");
19233
- __publicField(this, "path");
19234
- __publicField(this, "percentage", 0);
19235
- __publicField(this, "formData", new FormData());
19236
- __publicField(this, "responseText");
19237
- }
19238
- }
19239
19306
  const InternalUploader = (props, ref) => {
19240
19307
  const { locale } = useConfig();
19241
19308
  const {
@@ -19280,13 +19347,15 @@ const InternalUploader = (props, ref) => {
19280
19347
  beforeDelete,
19281
19348
  ...restProps
19282
19349
  } = { ...defaultProps$F, ...props };
19283
- const [fileList, setFileList] = useState(defaultValue || []);
19284
- const [uploadQueue, setUploadQueue] = useState([]);
19285
- useEffect(() => {
19286
- if (value) {
19287
- setFileList(value);
19350
+ const [fileList, setFileList] = usePropsValue({
19351
+ value,
19352
+ defaultValue,
19353
+ finalValue: [],
19354
+ onChange: (v) => {
19355
+ onChange == null ? void 0 : onChange(v);
19288
19356
  }
19289
- }, [value]);
19357
+ });
19358
+ const [uploadQueue, setUploadQueue] = useState([]);
19290
19359
  const classes = classNames(className, "nut-uploader");
19291
19360
  useImperativeHandle(ref, () => ({
19292
19361
  submit: () => {
@@ -19312,10 +19381,11 @@ const InternalUploader = (props, ref) => {
19312
19381
  el.value = "";
19313
19382
  };
19314
19383
  const executeUpload = (fileItem, index) => {
19384
+ var _a2, _b;
19315
19385
  const uploadOption = new UploadOptions();
19316
19386
  uploadOption.url = url2;
19317
19387
  for (const [key, value2] of Object.entries(data)) {
19318
- fileItem.formData.append(key, value2);
19388
+ (_a2 = fileItem.formData) == null ? void 0 : _a2.append(key, value2);
19319
19389
  }
19320
19390
  uploadOption.formData = fileItem.formData;
19321
19391
  uploadOption.timeout = timeout2 * 1;
@@ -19325,73 +19395,67 @@ const InternalUploader = (props, ref) => {
19325
19395
  uploadOption.withCredentials = withCredentials;
19326
19396
  uploadOption.beforeXhrUpload = beforeXhrUpload;
19327
19397
  try {
19328
- uploadOption.sourceFile = fileItem.formData.get(name);
19398
+ uploadOption.sourceFile = (_b = fileItem.formData) == null ? void 0 : _b.get(name);
19329
19399
  } catch (error) {
19330
19400
  console.warn(error);
19331
19401
  }
19332
19402
  uploadOption.onStart = (option) => {
19333
19403
  clearUploadQueue(index);
19334
- setFileList((fileList2) => {
19335
- fileList2.map((item) => {
19404
+ setFileList(
19405
+ fileList.map((item) => {
19336
19406
  if (item.uid === fileItem.uid) {
19337
19407
  item.status = "ready";
19338
19408
  item.message = locale.uploader.readyUpload;
19339
19409
  }
19340
19410
  return item;
19341
- });
19342
- return [...fileList2];
19343
- });
19411
+ })
19412
+ );
19344
19413
  onStart && onStart(option);
19345
19414
  };
19346
19415
  uploadOption.onProgress = (e, option) => {
19347
- setFileList((fileList2) => {
19348
- fileList2.map((item) => {
19416
+ setFileList(
19417
+ fileList.map((item) => {
19349
19418
  if (item.uid === fileItem.uid) {
19350
- item.status = "uploading";
19419
+ item.status = UPLOADING;
19351
19420
  item.message = locale.uploader.uploading;
19352
19421
  item.percentage = (e.loaded / e.total * 100).toFixed(0);
19353
19422
  onProgress && onProgress({ e, option, percentage: item.percentage });
19354
19423
  }
19355
19424
  return item;
19356
- });
19357
- return [...fileList2];
19358
- });
19425
+ })
19426
+ );
19359
19427
  };
19360
19428
  uploadOption.onSuccess = (responseText, option) => {
19361
- setFileList((fileList2) => {
19362
- onUpdate && onUpdate(fileList2);
19363
- fileList2.map((item) => {
19364
- if (item.uid === fileItem.uid) {
19365
- item.status = "success";
19366
- item.message = locale.uploader.success;
19367
- item.responseText = responseText;
19368
- }
19369
- return item;
19370
- });
19371
- return [...fileList2];
19429
+ const list = fileList.map((item) => {
19430
+ if (item.uid === fileItem.uid) {
19431
+ item.status = SUCCESS;
19432
+ item.message = locale.uploader.success;
19433
+ item.responseText = responseText;
19434
+ }
19435
+ return item;
19372
19436
  });
19373
- onSuccess && onSuccess({
19437
+ setFileList(list);
19438
+ onUpdate == null ? void 0 : onUpdate(list);
19439
+ onSuccess == null ? void 0 : onSuccess({
19374
19440
  responseText,
19375
19441
  option,
19376
- fileList
19442
+ fileList: list
19377
19443
  });
19378
19444
  };
19379
19445
  uploadOption.onFailure = (responseText, option) => {
19380
- setFileList((fileList2) => {
19381
- fileList2.map((item) => {
19382
- if (item.uid === fileItem.uid) {
19383
- item.status = "error";
19384
- item.message = locale.uploader.error;
19385
- item.responseText = responseText;
19386
- }
19387
- return item;
19388
- });
19389
- return [...fileList2];
19446
+ const list = fileList.map((item) => {
19447
+ if (item.uid === fileItem.uid) {
19448
+ item.status = ERROR;
19449
+ item.message = locale.uploader.error;
19450
+ item.responseText = responseText;
19451
+ }
19452
+ return item;
19390
19453
  });
19391
- onFailure && onFailure({
19454
+ setFileList(list);
19455
+ onFailure == null ? void 0 : onFailure({
19392
19456
  responseText,
19393
19457
  option,
19394
- fileList
19458
+ fileList: list
19395
19459
  });
19396
19460
  };
19397
19461
  const task = new Upload(uploadOption);
@@ -19416,11 +19480,7 @@ const InternalUploader = (props, ref) => {
19416
19480
  fileItem.type = file.type;
19417
19481
  fileItem.formData = formData;
19418
19482
  fileItem.uid = file.lastModified + fileItem.uid;
19419
- if (autoUpload) {
19420
- fileItem.message = locale.uploader.readyUpload;
19421
- } else {
19422
- fileItem.message = locale.uploader.waitingUpload;
19423
- }
19483
+ fileItem.message = autoUpload ? locale.uploader.readyUpload : locale.uploader.waitingUpload;
19424
19484
  executeUpload(fileItem, index);
19425
19485
  if (preview && file.type.includes("image")) {
19426
19486
  const reader = new FileReader();
@@ -19431,8 +19491,7 @@ const InternalUploader = (props, ref) => {
19431
19491
  };
19432
19492
  reader.readAsDataURL(file);
19433
19493
  } else {
19434
- fileList.push(fileItem);
19435
- setFileList([...fileList]);
19494
+ setFileList([...fileList, fileItem]);
19436
19495
  }
19437
19496
  });
19438
19497
  };
@@ -19459,9 +19518,9 @@ const InternalUploader = (props, ref) => {
19459
19518
  return filterFile;
19460
19519
  };
19461
19520
  const deleted = (file, index) => {
19462
- fileList.splice(index, 1);
19463
- onDelete && onDelete(file, fileList);
19464
- setFileList([...fileList]);
19521
+ const deletedFileList = fileList.filter((file2, idx) => idx !== index);
19522
+ onDelete == null ? void 0 : onDelete(file, deletedFileList);
19523
+ setFileList(deletedFileList);
19465
19524
  };
19466
19525
  const onDeleteItem = (file, index) => {
19467
19526
  clearUploadQueue(index);
@@ -19487,131 +19546,53 @@ const InternalUploader = (props, ref) => {
19487
19546
  const _files = filterFiles(new Array().slice.call(files));
19488
19547
  readFile(_files);
19489
19548
  }
19490
- onChange && onChange({ fileList, event });
19549
+ setFileList(fileList);
19491
19550
  if (clearInput) {
19492
19551
  clearInputValue($el);
19493
19552
  }
19494
19553
  };
19495
19554
  const handleItemClick = (file) => {
19496
- onFileItemClick && onFileItemClick(file);
19555
+ onFileItemClick == null ? void 0 : onFileItemClick(file);
19497
19556
  };
19498
- return /* @__PURE__ */ React__default.createElement("div", { className: classes, ...restProps }, (children || previewType === "list") && /* @__PURE__ */ React__default.createElement("div", { className: "nut-uploader__slot" }, /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, children || /* @__PURE__ */ React__default.createElement(Button, { size: "small", type: "primary" }, "上传文件"), maxCount > fileList.length && /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, capture ? /* @__PURE__ */ React__default.createElement(
19557
+ return /* @__PURE__ */ React__default.createElement("div", { className: classes, ...restProps }, (children || previewType === "list") && /* @__PURE__ */ React__default.createElement("div", { className: "nut-uploader__slot" }, children || /* @__PURE__ */ React__default.createElement(Button, { size: "small", type: "primary" }, "上传文件"), maxCount > fileList.length && /* @__PURE__ */ React__default.createElement(
19499
19558
  "input",
19500
19559
  {
19501
19560
  className: "nut-uploader__input",
19502
19561
  type: "file",
19503
- capture: "user",
19562
+ capture,
19504
19563
  name,
19505
19564
  accept,
19506
19565
  disabled,
19507
19566
  multiple,
19508
19567
  onChange: fileChange
19509
19568
  }
19510
- ) : /* @__PURE__ */ React__default.createElement(
19511
- "input",
19569
+ )), /* @__PURE__ */ React__default.createElement(
19570
+ Preview,
19512
19571
  {
19513
- className: "nut-uploader__input",
19514
- type: "file",
19515
- name,
19516
- accept,
19517
- disabled,
19518
- multiple,
19519
- onChange: fileChange
19572
+ ...{
19573
+ fileList,
19574
+ previewType,
19575
+ deletable,
19576
+ onDeleteItem,
19577
+ handleItemClick,
19578
+ previewUrl,
19579
+ children
19580
+ }
19520
19581
  }
19521
- )))), fileList.length !== 0 && Array.isArray(fileList) && fileList.map((item, index) => {
19522
- return /* @__PURE__ */ React__default.createElement(
19523
- "div",
19524
- {
19525
- className: `nut-uploader__preview ${previewType}`,
19526
- key: item.uid
19527
- },
19528
- previewType === "picture" && deletable && /* @__PURE__ */ React__default.createElement(
19529
- x$9,
19530
- {
19531
- color: "rgba(0,0,0,0.6)",
19532
- className: "close",
19533
- onClick: () => onDeleteItem(item, index)
19534
- }
19535
- ),
19536
- previewType === "picture" && !children && /* @__PURE__ */ React__default.createElement("div", { className: "nut-uploader__preview-img" }, item.status === "ready" ? /* @__PURE__ */ React__default.createElement("div", { className: "nut-uploader__preview__progress" }, /* @__PURE__ */ React__default.createElement("div", { className: "nut-uploader__preview__progress__msg" }, item.message)) : item.status !== "success" && /* @__PURE__ */ React__default.createElement("div", { className: "nut-uploader__preview__progress" }, item.failIcon !== " " && item.loadingIcon !== " " && (item.status === "error" ? item.failIcon || /* @__PURE__ */ React__default.createElement(x$9, { color: "#fff" }) : item.loadingIcon || /* @__PURE__ */ React__default.createElement(
19537
- k$3,
19538
- {
19539
- className: "nut-icon-loading",
19540
- color: "#fff"
19541
- }
19542
- )), /* @__PURE__ */ React__default.createElement("div", { className: "nut-uploader__preview__progress__msg" }, item.message)), item.type.includes("image") ? /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, item.url && /* @__PURE__ */ React__default.createElement(
19543
- "img",
19544
- {
19545
- className: "nut-uploader__preview-img__c",
19546
- style: { objectFit: fit },
19547
- src: item.url,
19548
- alt: "",
19549
- onClick: () => handleItemClick(item)
19550
- }
19551
- )) : /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, previewUrl ? /* @__PURE__ */ React__default.createElement(
19552
- "img",
19553
- {
19554
- className: "nut-uploader__preview-img__c",
19555
- src: previewUrl,
19556
- alt: "",
19557
- onClick: () => handleItemClick(item)
19558
- }
19559
- ) : /* @__PURE__ */ React__default.createElement("div", { className: "nut-uploader__preview-img__file" }, /* @__PURE__ */ React__default.createElement(
19560
- "div",
19561
- {
19562
- onClick: () => handleItemClick(item),
19563
- className: "nut-uploader__preview-img__file__name"
19564
- },
19565
- /* @__PURE__ */ React__default.createElement(x$6, { color: "#808080" }),
19566
- /* @__PURE__ */ React__default.createElement("span", null, " ", item.name)
19567
- ))), item.status === "success" ? /* @__PURE__ */ React__default.createElement("div", { className: "tips" }, item.name) : null),
19568
- previewType === "list" && /* @__PURE__ */ React__default.createElement("div", { className: "nut-uploader__preview-list" }, /* @__PURE__ */ React__default.createElement(
19569
- "div",
19570
- {
19571
- className: `nut-uploader__preview-img__file__name ${item.status}`,
19572
- onClick: () => handleItemClick(item)
19573
- },
19574
- /* @__PURE__ */ React__default.createElement(x$6, null),
19575
- /* @__PURE__ */ React__default.createElement("span", null, " ", item.name)
19576
- ), deletable && /* @__PURE__ */ React__default.createElement(
19577
- y$8,
19578
- {
19579
- color: "#808080",
19580
- className: "nut-uploader__preview-img__file__del",
19581
- onClick: () => onDeleteItem(item, index)
19582
- }
19583
- ), item.status === "uploading" && /* @__PURE__ */ React__default.createElement(
19584
- Progress,
19585
- {
19586
- percent: item.percentage,
19587
- color: "linear-gradient(270deg, rgba(18,126,255,1) 0%,rgba(32,147,255,1) 32.815625%,rgba(13,242,204,1) 100%)",
19588
- showText: false
19589
- }
19590
- ))
19591
- );
19592
- }), maxCount > fileList.length && previewType === "picture" && !children && /* @__PURE__ */ React__default.createElement(
19582
+ ), maxCount > fileList.length && previewType === "picture" && !children && /* @__PURE__ */ React__default.createElement(
19593
19583
  "div",
19594
19584
  {
19595
- className: `nut-uploader__upload ${previewType} ${disabled ? "nut-uploader__upload-disabled" : ""}`
19585
+ className: classNames("nut-uploader__upload", previewType, {
19586
+ "nut-uploader__upload-disabled": disabled
19587
+ })
19596
19588
  },
19597
- /* @__PURE__ */ React__default.createElement("div", { className: "nut-uploader__icon" }, uploadIcon || /* @__PURE__ */ React__default.createElement(x$3, { width: "20px", height: "20px", color: "#808080" }), /* @__PURE__ */ React__default.createElement("span", { className: "nut-uploader__icon-tip" }, uploadLabel)),
19598
- capture ? /* @__PURE__ */ React__default.createElement(
19599
- "input",
19600
- {
19601
- className: "nut-uploader__input",
19602
- type: "file",
19603
- capture: "user",
19604
- name,
19605
- accept,
19606
- disabled,
19607
- multiple,
19608
- onChange: fileChange
19609
- }
19610
- ) : /* @__PURE__ */ React__default.createElement(
19589
+ /* @__PURE__ */ React__default.createElement("div", { className: "nut-uploader__icon" }, uploadIcon, /* @__PURE__ */ React__default.createElement("span", { className: "nut-uploader__icon-tip" }, uploadLabel)),
19590
+ /* @__PURE__ */ React__default.createElement(
19611
19591
  "input",
19612
19592
  {
19613
19593
  className: "nut-uploader__input",
19614
19594
  type: "file",
19595
+ capture,
19615
19596
  name,
19616
19597
  accept,
19617
19598
  disabled,