zartui 3.1.41 → 3.1.43

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.
package/lib/zartui.cjs.js CHANGED
@@ -13816,7 +13816,7 @@ const mediaPickerProps = {
13816
13816
  var stdin_default$B = vue.defineComponent({
13817
13817
  name: name$u,
13818
13818
  props: mediaPickerProps,
13819
- emits: ["update:mediaList", "delete"],
13819
+ emits: ["update:mediaList", "delete", "processing"],
13820
13820
  setup(props, {
13821
13821
  emit,
13822
13822
  slots
@@ -13834,6 +13834,7 @@ var stdin_default$B = vue.defineComponent({
13834
13834
  const audioRecorderInputRef = vue.ref();
13835
13835
  const audioFileInputRef = vue.ref();
13836
13836
  const fileInputRef = vue.ref();
13837
+ const mediaListPlaceholder = vue.ref([]);
13837
13838
  const checkFileCountBeforeAdd = (mediaType) => {
13838
13839
  if (props.mediaList.length === props.maxMediaCount) {
13839
13840
  showFailToast("已达到文件最大数量限制");
@@ -14043,11 +14044,6 @@ var stdin_default$B = vue.defineComponent({
14043
14044
  return media;
14044
14045
  });
14045
14046
  });
14046
- showLoadingToast({
14047
- message: "处理中...",
14048
- forbidClick: true,
14049
- duration: 0
14050
- });
14051
14047
  return Promise.all(mediaList).then((medias) => {
14052
14048
  const _medias = [];
14053
14049
  medias.forEach((media) => {
@@ -14057,7 +14053,6 @@ var stdin_default$B = vue.defineComponent({
14057
14053
  });
14058
14054
  return _medias;
14059
14055
  }).finally(() => {
14060
- closeToast();
14061
14056
  });
14062
14057
  };
14063
14058
  const transformImageFiles = (files) => {
@@ -14116,11 +14111,6 @@ var stdin_default$B = vue.defineComponent({
14116
14111
  });
14117
14112
  promisesTodo.push(promise);
14118
14113
  }
14119
- showLoadingToast({
14120
- message: "处理中...",
14121
- forbidClick: true,
14122
- duration: 0
14123
- });
14124
14114
  return Promise.all(promisesTodo).then((medias) => {
14125
14115
  const _medias = [];
14126
14116
  medias.forEach((media) => {
@@ -14130,10 +14120,28 @@ var stdin_default$B = vue.defineComponent({
14130
14120
  });
14131
14121
  return _medias;
14132
14122
  }).finally(() => {
14133
- closeToast();
14134
14123
  });
14135
14124
  };
14136
14125
  const readFiles = (files) => {
14126
+ emit("processing", true);
14127
+ mediaListPlaceholder.value = files.map((file) => {
14128
+ let type;
14129
+ if (isAudioType(file)) {
14130
+ type = "audio";
14131
+ } else if (isVideoType(file)) {
14132
+ type = "video";
14133
+ } else if (isImageType(file)) {
14134
+ type = "photo";
14135
+ } else {
14136
+ type = "file";
14137
+ }
14138
+ return {
14139
+ file,
14140
+ message: "处理中...",
14141
+ status: "processing",
14142
+ type
14143
+ };
14144
+ });
14137
14145
  const notImages = files.filter((f) => !isImageType(f)).map((f) => transformNotImageFile(f));
14138
14146
  let newMedias = [];
14139
14147
  if (notImages.length > 0) {
@@ -14156,6 +14164,8 @@ var stdin_default$B = vue.defineComponent({
14156
14164
  newMedia.label = newMedia.originalName;
14157
14165
  });
14158
14166
  }
14167
+ mediaListPlaceholder.value = [];
14168
+ emit("processing", false);
14159
14169
  emit("update:mediaList", [...props.mediaList, ...newMedias]);
14160
14170
  if (props.afterRead) {
14161
14171
  props.afterRead(newMedias);
@@ -14332,7 +14342,7 @@ var stdin_default$B = vue.defineComponent({
14332
14342
  status,
14333
14343
  message
14334
14344
  } = media;
14335
- if (status === "uploading" || status === "failed") {
14345
+ if (status === "processing" || status === "uploading" || status === "failed") {
14336
14346
  const MaskIcon = status === "failed" ? vue.createVNode(stdin_default$1V, {
14337
14347
  "name": "close",
14338
14348
  "class": bem$t("mask-icon")
@@ -14467,6 +14477,15 @@ var stdin_default$B = vue.defineComponent({
14467
14477
  showFailToast("暂不支持此类文件的预览");
14468
14478
  }
14469
14479
  });
14480
+ const renderMediaListPlaceholder = () => {
14481
+ return mediaListPlaceholder.value.map((media) => {
14482
+ return vue.createVNode(stdin_default$U, {
14483
+ "key": media.uniqueCode
14484
+ }, {
14485
+ default: () => [renderMediaThumbnail(media), renderMediaLabel(media), genThumbnailMask(media)]
14486
+ });
14487
+ });
14488
+ };
14470
14489
  const renderMediaList = () => props.mediaList.map((media, index) => {
14471
14490
  const showDelete = media.deletable && media.status !== "uploading";
14472
14491
  const deleteIcon = showDelete && vue.createVNode(stdin_default$M, {
@@ -14518,6 +14537,14 @@ var stdin_default$B = vue.defineComponent({
14518
14537
  "square": true,
14519
14538
  "gutter": "4",
14520
14539
  "class": bem$t("grid")
14540
+ }, {
14541
+ default: () => [renderMediaListPlaceholder()]
14542
+ }), [[vue.vShow, mediaListPlaceholder.value.length]]), vue.withDirectives(vue.createVNode(stdin_default$W, {
14543
+ "column-num": "3",
14544
+ "border": false,
14545
+ "square": true,
14546
+ "gutter": "4",
14547
+ "class": bem$t("grid")
14521
14548
  }, {
14522
14549
  default: () => [renderMediaList()]
14523
14550
  }), [[vue.vShow, props.mediaList.length]])]);
@@ -20631,7 +20658,7 @@ const Lazyload = {
20631
20658
  });
20632
20659
  }
20633
20660
  };
20634
- const version = "3.1.41";
20661
+ const version = "3.1.43";
20635
20662
  function install(app) {
20636
20663
  const components = [
20637
20664
  ActionSheet,
package/lib/zartui.es.js CHANGED
@@ -13814,7 +13814,7 @@ const mediaPickerProps = {
13814
13814
  var stdin_default$B = defineComponent({
13815
13815
  name: name$u,
13816
13816
  props: mediaPickerProps,
13817
- emits: ["update:mediaList", "delete"],
13817
+ emits: ["update:mediaList", "delete", "processing"],
13818
13818
  setup(props, {
13819
13819
  emit,
13820
13820
  slots
@@ -13832,6 +13832,7 @@ var stdin_default$B = defineComponent({
13832
13832
  const audioRecorderInputRef = ref();
13833
13833
  const audioFileInputRef = ref();
13834
13834
  const fileInputRef = ref();
13835
+ const mediaListPlaceholder = ref([]);
13835
13836
  const checkFileCountBeforeAdd = (mediaType) => {
13836
13837
  if (props.mediaList.length === props.maxMediaCount) {
13837
13838
  showFailToast("已达到文件最大数量限制");
@@ -14041,11 +14042,6 @@ var stdin_default$B = defineComponent({
14041
14042
  return media;
14042
14043
  });
14043
14044
  });
14044
- showLoadingToast({
14045
- message: "处理中...",
14046
- forbidClick: true,
14047
- duration: 0
14048
- });
14049
14045
  return Promise.all(mediaList).then((medias) => {
14050
14046
  const _medias = [];
14051
14047
  medias.forEach((media) => {
@@ -14055,7 +14051,6 @@ var stdin_default$B = defineComponent({
14055
14051
  });
14056
14052
  return _medias;
14057
14053
  }).finally(() => {
14058
- closeToast();
14059
14054
  });
14060
14055
  };
14061
14056
  const transformImageFiles = (files) => {
@@ -14114,11 +14109,6 @@ var stdin_default$B = defineComponent({
14114
14109
  });
14115
14110
  promisesTodo.push(promise);
14116
14111
  }
14117
- showLoadingToast({
14118
- message: "处理中...",
14119
- forbidClick: true,
14120
- duration: 0
14121
- });
14122
14112
  return Promise.all(promisesTodo).then((medias) => {
14123
14113
  const _medias = [];
14124
14114
  medias.forEach((media) => {
@@ -14128,10 +14118,28 @@ var stdin_default$B = defineComponent({
14128
14118
  });
14129
14119
  return _medias;
14130
14120
  }).finally(() => {
14131
- closeToast();
14132
14121
  });
14133
14122
  };
14134
14123
  const readFiles = (files) => {
14124
+ emit("processing", true);
14125
+ mediaListPlaceholder.value = files.map((file) => {
14126
+ let type;
14127
+ if (isAudioType(file)) {
14128
+ type = "audio";
14129
+ } else if (isVideoType(file)) {
14130
+ type = "video";
14131
+ } else if (isImageType(file)) {
14132
+ type = "photo";
14133
+ } else {
14134
+ type = "file";
14135
+ }
14136
+ return {
14137
+ file,
14138
+ message: "处理中...",
14139
+ status: "processing",
14140
+ type
14141
+ };
14142
+ });
14135
14143
  const notImages = files.filter((f) => !isImageType(f)).map((f) => transformNotImageFile(f));
14136
14144
  let newMedias = [];
14137
14145
  if (notImages.length > 0) {
@@ -14154,6 +14162,8 @@ var stdin_default$B = defineComponent({
14154
14162
  newMedia.label = newMedia.originalName;
14155
14163
  });
14156
14164
  }
14165
+ mediaListPlaceholder.value = [];
14166
+ emit("processing", false);
14157
14167
  emit("update:mediaList", [...props.mediaList, ...newMedias]);
14158
14168
  if (props.afterRead) {
14159
14169
  props.afterRead(newMedias);
@@ -14330,7 +14340,7 @@ var stdin_default$B = defineComponent({
14330
14340
  status,
14331
14341
  message
14332
14342
  } = media;
14333
- if (status === "uploading" || status === "failed") {
14343
+ if (status === "processing" || status === "uploading" || status === "failed") {
14334
14344
  const MaskIcon = status === "failed" ? createVNode(stdin_default$1V, {
14335
14345
  "name": "close",
14336
14346
  "class": bem$t("mask-icon")
@@ -14465,6 +14475,15 @@ var stdin_default$B = defineComponent({
14465
14475
  showFailToast("暂不支持此类文件的预览");
14466
14476
  }
14467
14477
  });
14478
+ const renderMediaListPlaceholder = () => {
14479
+ return mediaListPlaceholder.value.map((media) => {
14480
+ return createVNode(stdin_default$U, {
14481
+ "key": media.uniqueCode
14482
+ }, {
14483
+ default: () => [renderMediaThumbnail(media), renderMediaLabel(media), genThumbnailMask(media)]
14484
+ });
14485
+ });
14486
+ };
14468
14487
  const renderMediaList = () => props.mediaList.map((media, index) => {
14469
14488
  const showDelete = media.deletable && media.status !== "uploading";
14470
14489
  const deleteIcon = showDelete && createVNode(stdin_default$M, {
@@ -14516,6 +14535,14 @@ var stdin_default$B = defineComponent({
14516
14535
  "square": true,
14517
14536
  "gutter": "4",
14518
14537
  "class": bem$t("grid")
14538
+ }, {
14539
+ default: () => [renderMediaListPlaceholder()]
14540
+ }), [[vShow, mediaListPlaceholder.value.length]]), withDirectives(createVNode(stdin_default$W, {
14541
+ "column-num": "3",
14542
+ "border": false,
14543
+ "square": true,
14544
+ "gutter": "4",
14545
+ "class": bem$t("grid")
14519
14546
  }, {
14520
14547
  default: () => [renderMediaList()]
14521
14548
  }), [[vShow, props.mediaList.length]])]);
@@ -20629,7 +20656,7 @@ const Lazyload = {
20629
20656
  });
20630
20657
  }
20631
20658
  };
20632
- const version = "3.1.41";
20659
+ const version = "3.1.43";
20633
20660
  function install(app) {
20634
20661
  const components = [
20635
20662
  ActionSheet,
package/lib/zartui.js CHANGED
@@ -15592,7 +15592,7 @@
15592
15592
  var stdin_default$B = vue.defineComponent({
15593
15593
  name: name$u,
15594
15594
  props: mediaPickerProps,
15595
- emits: ["update:mediaList", "delete"],
15595
+ emits: ["update:mediaList", "delete", "processing"],
15596
15596
  setup(props, {
15597
15597
  emit,
15598
15598
  slots
@@ -15610,6 +15610,7 @@
15610
15610
  const audioRecorderInputRef = vue.ref();
15611
15611
  const audioFileInputRef = vue.ref();
15612
15612
  const fileInputRef = vue.ref();
15613
+ const mediaListPlaceholder = vue.ref([]);
15613
15614
  const checkFileCountBeforeAdd = (mediaType) => {
15614
15615
  if (props.mediaList.length === props.maxMediaCount) {
15615
15616
  showFailToast("已达到文件最大数量限制");
@@ -15819,11 +15820,6 @@
15819
15820
  return media;
15820
15821
  });
15821
15822
  });
15822
- showLoadingToast({
15823
- message: "处理中...",
15824
- forbidClick: true,
15825
- duration: 0
15826
- });
15827
15823
  return Promise.all(mediaList).then((medias) => {
15828
15824
  const _medias = [];
15829
15825
  medias.forEach((media) => {
@@ -15833,7 +15829,6 @@
15833
15829
  });
15834
15830
  return _medias;
15835
15831
  }).finally(() => {
15836
- closeToast();
15837
15832
  });
15838
15833
  };
15839
15834
  const transformImageFiles = (files) => {
@@ -15892,11 +15887,6 @@
15892
15887
  });
15893
15888
  promisesTodo.push(promise);
15894
15889
  }
15895
- showLoadingToast({
15896
- message: "处理中...",
15897
- forbidClick: true,
15898
- duration: 0
15899
- });
15900
15890
  return Promise.all(promisesTodo).then((medias) => {
15901
15891
  const _medias = [];
15902
15892
  medias.forEach((media) => {
@@ -15906,10 +15896,28 @@
15906
15896
  });
15907
15897
  return _medias;
15908
15898
  }).finally(() => {
15909
- closeToast();
15910
15899
  });
15911
15900
  };
15912
15901
  const readFiles = (files) => {
15902
+ emit("processing", true);
15903
+ mediaListPlaceholder.value = files.map((file) => {
15904
+ let type;
15905
+ if (isAudioType(file)) {
15906
+ type = "audio";
15907
+ } else if (isVideoType(file)) {
15908
+ type = "video";
15909
+ } else if (isImageType(file)) {
15910
+ type = "photo";
15911
+ } else {
15912
+ type = "file";
15913
+ }
15914
+ return {
15915
+ file,
15916
+ message: "处理中...",
15917
+ status: "processing",
15918
+ type
15919
+ };
15920
+ });
15913
15921
  const notImages = files.filter((f) => !isImageType(f)).map((f) => transformNotImageFile(f));
15914
15922
  let newMedias = [];
15915
15923
  if (notImages.length > 0) {
@@ -15932,6 +15940,8 @@
15932
15940
  newMedia.label = newMedia.originalName;
15933
15941
  });
15934
15942
  }
15943
+ mediaListPlaceholder.value = [];
15944
+ emit("processing", false);
15935
15945
  emit("update:mediaList", [...props.mediaList, ...newMedias]);
15936
15946
  if (props.afterRead) {
15937
15947
  props.afterRead(newMedias);
@@ -16108,7 +16118,7 @@
16108
16118
  status,
16109
16119
  message
16110
16120
  } = media;
16111
- if (status === "uploading" || status === "failed") {
16121
+ if (status === "processing" || status === "uploading" || status === "failed") {
16112
16122
  const MaskIcon = status === "failed" ? vue.createVNode(stdin_default$1V, {
16113
16123
  "name": "close",
16114
16124
  "class": bem$t("mask-icon")
@@ -16243,6 +16253,15 @@
16243
16253
  showFailToast("暂不支持此类文件的预览");
16244
16254
  }
16245
16255
  });
16256
+ const renderMediaListPlaceholder = () => {
16257
+ return mediaListPlaceholder.value.map((media) => {
16258
+ return vue.createVNode(stdin_default$U, {
16259
+ "key": media.uniqueCode
16260
+ }, {
16261
+ default: () => [renderMediaThumbnail(media), renderMediaLabel(media), genThumbnailMask(media)]
16262
+ });
16263
+ });
16264
+ };
16246
16265
  const renderMediaList = () => props.mediaList.map((media, index2) => {
16247
16266
  const showDelete = media.deletable && media.status !== "uploading";
16248
16267
  const deleteIcon = showDelete && vue.createVNode(stdin_default$M, {
@@ -16294,6 +16313,14 @@
16294
16313
  "square": true,
16295
16314
  "gutter": "4",
16296
16315
  "class": bem$t("grid")
16316
+ }, {
16317
+ default: () => [renderMediaListPlaceholder()]
16318
+ }), [[vue.vShow, mediaListPlaceholder.value.length]]), vue.withDirectives(vue.createVNode(stdin_default$W, {
16319
+ "column-num": "3",
16320
+ "border": false,
16321
+ "square": true,
16322
+ "gutter": "4",
16323
+ "class": bem$t("grid")
16297
16324
  }, {
16298
16325
  default: () => [renderMediaList()]
16299
16326
  }), [[vue.vShow, props.mediaList.length]])]);
@@ -24691,7 +24718,7 @@
24691
24718
  });
24692
24719
  }
24693
24720
  };
24694
- const version = "3.1.41";
24721
+ const version = "3.1.43";
24695
24722
  function install(app) {
24696
24723
  const components = [
24697
24724
  ActionSheet,