@touchvue/ui 1.0.0-beta.54 → 1.0.0-beta.56

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 (111) hide show
  1. package/es/components/input/src/input.vue.d.ts +2 -2
  2. package/es/components/pic/index.d.ts +9 -0
  3. package/es/components/pic/src/Pic.vue.d.ts +9 -0
  4. package/es/components/pic/src/pic.d.ts +7 -0
  5. package/es/components/rate/src/rate.vue.d.ts +46 -10
  6. package/es/components/scroll/index.d.ts +15 -0
  7. package/es/components/scroll/src/Scroll.vue.d.ts +9 -0
  8. package/es/components/scroll/src/scroll.d.ts +7 -0
  9. package/es/components/select/src/select.d.ts +18 -0
  10. package/es/components/select/src/select.vue.d.ts +18 -0
  11. package/es/components/table/src/table-head.vue.d.ts +2 -0
  12. package/es/components/tip/src/tip.vue.d.ts +2 -2
  13. package/es/components/upload/src/upload.vue.d.ts +6 -4
  14. package/es/index.d.mjs.map +1 -1
  15. package/es/index.mjs +2 -1
  16. package/es/index.mjs.map +1 -1
  17. package/es/packages/components/calendar/src/calendar.vue2.mjs +22 -0
  18. package/es/packages/components/calendar/src/calendar.vue2.mjs.map +1 -1
  19. package/es/packages/components/cascader/src/cascader-item.vue2.mjs +1 -0
  20. package/es/packages/components/cascader/src/cascader-item.vue2.mjs.map +1 -1
  21. package/es/packages/components/cascader/src/cascader.vue2.mjs +1 -0
  22. package/es/packages/components/cascader/src/cascader.vue2.mjs.map +1 -1
  23. package/es/packages/components/float/src/Float.vue2.mjs +4 -4
  24. package/es/packages/components/float/src/Float.vue2.mjs.map +1 -1
  25. package/es/packages/components/pic/src/Pic.vue2.mjs +18 -2
  26. package/es/packages/components/pic/src/Pic.vue2.mjs.map +1 -1
  27. package/es/packages/components/pic/src/pic.mjs +7 -0
  28. package/es/packages/components/pic/src/pic.mjs.map +1 -1
  29. package/es/packages/components/rate/src/rate.vue2.mjs +153 -85
  30. package/es/packages/components/rate/src/rate.vue2.mjs.map +1 -1
  31. package/es/packages/components/scroll/src/Scroll.vue2.mjs +3 -0
  32. package/es/packages/components/scroll/src/Scroll.vue2.mjs.map +1 -1
  33. package/es/packages/components/scroll/src/scroll.mjs +7 -0
  34. package/es/packages/components/scroll/src/scroll.mjs.map +1 -1
  35. package/es/packages/components/segment/src/segment.vue.mjs +10 -12
  36. package/es/packages/components/segment/src/segment.vue.mjs.map +1 -1
  37. package/es/packages/components/select/src/select.mjs +18 -0
  38. package/es/packages/components/select/src/select.mjs.map +1 -1
  39. package/es/packages/components/select/src/select.vue2.mjs +263 -87
  40. package/es/packages/components/select/src/select.vue2.mjs.map +1 -1
  41. package/es/packages/components/table/src/table-head.vue2.mjs +101 -45
  42. package/es/packages/components/table/src/table-head.vue2.mjs.map +1 -1
  43. package/es/packages/components/table/src/table.vue2.mjs +244 -62
  44. package/es/packages/components/table/src/table.vue2.mjs.map +1 -1
  45. package/es/packages/components/tree/src/tree-item.vue2.mjs +2 -1
  46. package/es/packages/components/tree/src/tree-item.vue2.mjs.map +1 -1
  47. package/es/packages/components/upload/src/upload.vue2.mjs +203 -153
  48. package/es/packages/components/upload/src/upload.vue2.mjs.map +1 -1
  49. package/es/packages/directives/tip/src/tip.mjs +42 -27
  50. package/es/packages/directives/tip/src/tip.mjs.map +1 -1
  51. package/es/packages/locale/format.mjs +1 -1
  52. package/es/packages/locale/format.mjs.map +1 -1
  53. package/es/ui/index.d.ts +6 -0
  54. package/lib/components/input/src/input.vue.d.ts +2 -2
  55. package/lib/components/pic/index.d.ts +9 -0
  56. package/lib/components/pic/src/Pic.vue.d.ts +9 -0
  57. package/lib/components/pic/src/pic.d.ts +7 -0
  58. package/lib/components/rate/src/rate.vue.d.ts +46 -10
  59. package/lib/components/scroll/index.d.ts +15 -0
  60. package/lib/components/scroll/src/Scroll.vue.d.ts +9 -0
  61. package/lib/components/scroll/src/scroll.d.ts +7 -0
  62. package/lib/components/select/src/select.d.ts +18 -0
  63. package/lib/components/select/src/select.vue.d.ts +18 -0
  64. package/lib/components/table/src/table-head.vue.d.ts +2 -0
  65. package/lib/components/tip/src/tip.vue.d.ts +2 -2
  66. package/lib/components/upload/src/upload.vue.d.ts +6 -4
  67. package/lib/index.d.js.map +1 -1
  68. package/lib/index.js +2 -1
  69. package/lib/index.js.map +1 -1
  70. package/lib/packages/components/calendar/src/calendar.vue2.js +22 -0
  71. package/lib/packages/components/calendar/src/calendar.vue2.js.map +1 -1
  72. package/lib/packages/components/cascader/src/cascader-item.vue2.js +1 -0
  73. package/lib/packages/components/cascader/src/cascader-item.vue2.js.map +1 -1
  74. package/lib/packages/components/cascader/src/cascader.vue2.js +1 -0
  75. package/lib/packages/components/cascader/src/cascader.vue2.js.map +1 -1
  76. package/lib/packages/components/float/src/Float.vue2.js +4 -4
  77. package/lib/packages/components/float/src/Float.vue2.js.map +1 -1
  78. package/lib/packages/components/pic/src/Pic.vue2.js +17 -1
  79. package/lib/packages/components/pic/src/Pic.vue2.js.map +1 -1
  80. package/lib/packages/components/pic/src/pic.js +7 -0
  81. package/lib/packages/components/pic/src/pic.js.map +1 -1
  82. package/lib/packages/components/rate/src/rate.vue2.js +152 -84
  83. package/lib/packages/components/rate/src/rate.vue2.js.map +1 -1
  84. package/lib/packages/components/scroll/src/Scroll.vue2.js +3 -0
  85. package/lib/packages/components/scroll/src/Scroll.vue2.js.map +1 -1
  86. package/lib/packages/components/scroll/src/scroll.js +7 -0
  87. package/lib/packages/components/scroll/src/scroll.js.map +1 -1
  88. package/lib/packages/components/segment/src/segment.vue.js +10 -12
  89. package/lib/packages/components/segment/src/segment.vue.js.map +1 -1
  90. package/lib/packages/components/select/src/select.js +18 -0
  91. package/lib/packages/components/select/src/select.js.map +1 -1
  92. package/lib/packages/components/select/src/select.vue2.js +262 -86
  93. package/lib/packages/components/select/src/select.vue2.js.map +1 -1
  94. package/lib/packages/components/table/src/table-head.vue2.js +100 -44
  95. package/lib/packages/components/table/src/table-head.vue2.js.map +1 -1
  96. package/lib/packages/components/table/src/table.vue2.js +243 -61
  97. package/lib/packages/components/table/src/table.vue2.js.map +1 -1
  98. package/lib/packages/components/tree/src/tree-item.vue2.js +2 -1
  99. package/lib/packages/components/tree/src/tree-item.vue2.js.map +1 -1
  100. package/lib/packages/components/upload/src/upload.vue2.js +202 -152
  101. package/lib/packages/components/upload/src/upload.vue2.js.map +1 -1
  102. package/lib/packages/directives/tip/src/tip.js +41 -26
  103. package/lib/packages/directives/tip/src/tip.js.map +1 -1
  104. package/lib/packages/locale/format.js +1 -1
  105. package/lib/packages/locale/format.js.map +1 -1
  106. package/lib/ui/index.d.ts +6 -0
  107. package/package.json +1 -1
  108. package/theme/base.css +0 -3
  109. package/theme/components/index.css +445 -255
  110. package/theme/index.css +445 -255
  111. package/theme/skin/default.css +445 -255
@@ -17,6 +17,7 @@ const __default__ = vue.defineComponent({
17
17
  var _sfc_main = /* @__PURE__ */ vue.defineComponent({
18
18
  ...__default__,
19
19
  props: {
20
+ tip: { default: "" },
20
21
  flex: { type: Boolean, default: false },
21
22
  mode: { default: "default" },
22
23
  multiple: { type: Boolean, default: false },
@@ -29,7 +30,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
29
30
  required: { type: Boolean, default: false },
30
31
  type: { default: "input" },
31
32
  picSize: { default: "" },
32
- width: { default: 20 },
33
+ width: { default: "auto" },
33
34
  maxLength: { default: Infinity },
34
35
  accept: { default: (props) => props.type === "img" ? ".jpg,.jpeg,.png,.gif" : "" },
35
36
  maxSize: { default: "" },
@@ -45,12 +46,38 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
45
46
  beforeStart: { type: [Function, null], default: null },
46
47
  verifiable: { type: Boolean, default: true },
47
48
  showList: { type: Boolean, default: true },
48
- uploadText: { default: "" }
49
+ text: { default: "" }
49
50
  },
50
51
  emits: ["start", "success", "error", "clear", "change", "progress", "remove", "download"],
51
52
  setup(__props, { expose: __expose, emit: __emit }) {
52
53
  const emit = __emit;
53
54
  const props = __props;
55
+ const fileTypeIcons = {
56
+ img: [".png", ".jpg", ".jpeg", ".gif", ".apng", ".webp", ".bmp", ".svg", ".ico"],
57
+ word: [".doc", ".docx"],
58
+ excel: [".xls", ".xlsx", ".csv"],
59
+ ppt: [".ppt", ".pptx", ".ppsx"],
60
+ pdf: [".pdf"],
61
+ video: [".rm", ".rmvb", ".avi", ".mkv", ".mp4", ".wmv", ".mov", ".movie", ".mpeg", ".mpg", ".qt", ".flv"],
62
+ voice: [".mp2", ".mp3", ".wma", ".midi", ".wav", ".aac", ".ogg"],
63
+ rar: [".rar", ".zip", ".tar", ".gz", ".tgz", ".bz2", ".7z"]
64
+ };
65
+ function getFileIcon(name) {
66
+ if (!name || typeof name !== "string") {
67
+ return "file";
68
+ }
69
+ const lastDotIndex = name.lastIndexOf(".");
70
+ if (lastDotIndex === -1) {
71
+ return "file";
72
+ }
73
+ const ext = name.slice(lastDotIndex).toLowerCase();
74
+ for (const [iconType, extList] of Object.entries(fileTypeIcons)) {
75
+ if (extList.includes(ext)) {
76
+ return iconType;
77
+ }
78
+ }
79
+ return "file";
80
+ }
54
81
  const fileInput = vue.ref(null);
55
82
  const fileList = vue.ref([]);
56
83
  const errorTip = vue.ref("");
@@ -58,12 +85,12 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
58
85
  const ToFormItem = vue.inject("ToFormItem", {});
59
86
  const uploadList = vue.ref([]);
60
87
  vue.onMounted(() => {
61
- fileList.value = props.files;
88
+ fileList.value = [...props.files];
62
89
  });
63
90
  vue.watch(
64
91
  () => props.files,
65
92
  (val) => {
66
- fileList.value = val;
93
+ fileList.value = [...val];
67
94
  },
68
95
  {
69
96
  deep: true
@@ -79,13 +106,9 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
79
106
  if (props.mode) {
80
107
  arr.push(`mode-${props.mode}`);
81
108
  }
82
- }
83
- return arr;
84
- });
85
- const setPicClass = vue.computed(() => {
86
- const arr = [];
87
- if (props.picSize) {
88
- arr.push(`pic-size-${props.picSize}`);
109
+ if (props.type) {
110
+ arr.push(`type-${props.type}`);
111
+ }
89
112
  }
90
113
  return arr;
91
114
  });
@@ -152,18 +175,22 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
152
175
  newFileList.forEach((item) => {
153
176
  item.uid = getFileUid(item);
154
177
  });
155
- if (fileList.value.length + newFileList.length <= props.maxLength) {
178
+ const addedCount = newFileList.filter((item) => !fileList.value.some((f) => f.name === item.name)).length;
179
+ const willAddCount = props.duplicatable ? newFileList.length : addedCount;
180
+ if (fileList.value.length + willAddCount <= props.maxLength) {
156
181
  uploadList.value = Array.from(e.target.files);
157
182
  emit("change", newFileList);
158
- if (props.duplicatable) {
159
- e.target.value = "";
160
- }
183
+ e.target.value = "";
161
184
  if (props.type === "img") {
162
185
  newFileList.forEach((item) => {
163
186
  let reader = new FileReader();
164
187
  reader.addEventListener("load", () => {
165
188
  item.src = reader.result;
166
- fileList.value.push(item);
189
+ if (props.duplicatable) {
190
+ fileList.value.push(item);
191
+ } else {
192
+ replaceOrAddToFileList(item);
193
+ }
167
194
  if (props.auto) {
168
195
  handleUpload(item);
169
196
  }
@@ -171,7 +198,11 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
171
198
  reader.readAsDataURL(item);
172
199
  });
173
200
  } else {
174
- fileList.value = [...fileList.value, ...newFileList];
201
+ if (props.duplicatable) {
202
+ fileList.value = [...fileList.value, ...newFileList];
203
+ } else {
204
+ newFileList.forEach((item) => replaceOrAddToFileList(item));
205
+ }
175
206
  if (newFileList.length && props.auto) {
176
207
  vue.nextTick(() => {
177
208
  newFileList.forEach((file) => {
@@ -252,6 +283,14 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
252
283
  let str = (fileObj.lastModifiedDate ? (/* @__PURE__ */ new Date()).getTime() : fileObj.modificationdate) + fileObj.name + fileObj.size;
253
284
  return md5.md5(str);
254
285
  }
286
+ function replaceOrAddToFileList(file) {
287
+ const idx = fileList.value.findIndex((item) => item.name === file.name);
288
+ if (idx !== -1) {
289
+ fileList.value.splice(idx, 1, file);
290
+ } else {
291
+ fileList.value.push(file);
292
+ }
293
+ }
255
294
  function setFilePropertyByUid(uid, key, value) {
256
295
  let idx = fileList.value.findIndex((item) => item.uid === uid);
257
296
  if (idx === -1)
@@ -319,6 +358,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
319
358
  submit
320
359
  });
321
360
  return (_ctx, _cache) => {
361
+ const _component_to_progress = vue.resolveComponent("to-progress");
322
362
  const _directive_tip = vue.resolveDirective("tip");
323
363
  const _directive_color = vue.resolveDirective("color");
324
364
  return vue.openBlock(), vue.createElementBlock("div", {
@@ -346,184 +386,182 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
346
386
  style: { "display": "none" },
347
387
  onChange: handleChange
348
388
  }, null, 40, ["accept", "multiple"]),
349
- _ctx.type === "input" ? (vue.openBlock(), vue.createBlock(vue.unref(index$1.ToInput), {
389
+ _ctx.type === "input" ? (vue.openBlock(), vue.createElementBlock("div", {
350
390
  key: 1,
351
- link: "",
352
- disabled: props.disabled,
353
- width: props.width,
354
- placeholder: _ctx.placeholder || vue.unref(index.t)("to.common.placeholder.select"),
355
- verifiable: false
356
- }, {
357
- suffix: vue.withCtx(() => [
358
- vue.createVNode(vue.unref(index$2.ToIcon), {
359
- value: "browse",
360
- link: "",
361
- onClick: handleFile
362
- })
363
- ]),
364
- _: 1
365
- /* STABLE */
366
- }, 8, ["disabled", "width", "placeholder"])) : vue.createCommentVNode("v-if", true),
367
- _ctx.type === "button" ? (vue.openBlock(), vue.createBlock(vue.unref(index$3.ToButton), {
391
+ class: "to-upload-content"
392
+ }, [
393
+ vue.createVNode(vue.unref(index$1.ToInput), {
394
+ class: "to-upload-input",
395
+ link: "",
396
+ disabled: "",
397
+ width: "full",
398
+ placeholder: _ctx.placeholder || vue.unref(index.t)("to.common.placeholder.select"),
399
+ verifiable: false,
400
+ onClick: handleFile
401
+ }, {
402
+ suffix: vue.withCtx(() => [
403
+ vue.createVNode(vue.unref(index$2.ToIcon), { value: "browse" })
404
+ ]),
405
+ _: 1
406
+ /* STABLE */
407
+ }, 8, ["placeholder"]),
408
+ !_ctx.auto && fileList.value.length - _ctx.files.length > 0 ? (vue.openBlock(), vue.createBlock(vue.unref(index$3.ToButton), {
409
+ key: 0,
410
+ icon: "upload",
411
+ class: "to-upload-upload-button",
412
+ onClick: vue.withModifiers(submit, ["stop"])
413
+ }, {
414
+ default: vue.withCtx(() => [
415
+ vue.createTextVNode("\u4E0A\u4F20")
416
+ ]),
417
+ _: 1
418
+ /* STABLE */
419
+ })) : vue.createCommentVNode("v-if", true),
420
+ _ctx.tip ? (vue.openBlock(), vue.createElementBlock("div", {
421
+ key: 1,
422
+ class: "to-upload-tip"
423
+ }, [
424
+ vue.createElementVNode(
425
+ "div",
426
+ { class: "to-upload-tip-text" },
427
+ vue.toDisplayString(_ctx.tip),
428
+ 1
429
+ /* TEXT */
430
+ )
431
+ ])) : vue.createCommentVNode("v-if", true)
432
+ ])) : vue.createCommentVNode("v-if", true),
433
+ _ctx.type === "button" ? (vue.openBlock(), vue.createElementBlock("div", {
368
434
  key: 2,
369
- disabled: props.disabled,
370
- icon: "upload",
371
- "icon-position": "left",
372
- onClick: handleFile
373
- }, {
374
- default: vue.withCtx(() => [
375
- vue.createTextVNode(
376
- vue.toDisplayString(props.uploadText || vue.unref(index.t)("to.upload.button")),
435
+ class: "to-upload-content"
436
+ }, [
437
+ vue.createVNode(vue.unref(index$3.ToButton), {
438
+ class: "to-upload-button",
439
+ disabled: props.disabled,
440
+ icon: "upload",
441
+ "icon-position": "left",
442
+ onClick: handleFile
443
+ }, {
444
+ default: vue.withCtx(() => [
445
+ vue.createTextVNode(
446
+ vue.toDisplayString(props.text || vue.unref(index.t)("to.upload.button")),
447
+ 1
448
+ /* TEXT */
449
+ )
450
+ ]),
451
+ _: 1
452
+ /* STABLE */
453
+ }, 8, ["disabled"]),
454
+ _ctx.tip ? (vue.openBlock(), vue.createElementBlock("div", {
455
+ key: 0,
456
+ class: "to-upload-tip"
457
+ }, [
458
+ vue.createElementVNode(
459
+ "div",
460
+ { class: "to-upload-tip-text" },
461
+ vue.toDisplayString(_ctx.tip),
377
462
  1
378
463
  /* TEXT */
379
464
  )
380
- ]),
381
- _: 1
382
- /* STABLE */
383
- }, 8, ["disabled"])) : vue.createCommentVNode("v-if", true),
384
- _ctx.type === "img" && _ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock(
385
- "div",
386
- {
387
- key: 3,
388
- class: vue.normalizeClass(["to-upload-img", setPicClass.value])
389
- },
390
- [
391
- vue.createElementVNode("div", {
392
- class: "to-upload-add",
393
- onClick: handleFile
394
- }, [
395
- vue.createVNode(vue.unref(index$2.ToIcon), {
396
- value: "add",
397
- mode: "upload-add"
398
- })
399
- ])
400
- ],
401
- 2
402
- /* CLASS */
403
- )) : vue.createCommentVNode("v-if", true),
465
+ ])) : vue.createCommentVNode("v-if", true)
466
+ ])) : vue.createCommentVNode("v-if", true),
404
467
  _ctx.showList ? (vue.openBlock(), vue.createElementBlock("div", {
405
- key: 4,
406
- class: "to-upload-list",
407
- style: { "width": "100%" }
468
+ key: 3,
469
+ class: "to-upload-list"
408
470
  }, [
409
471
  vue.renderSlot(_ctx.$slots, "default", { fileList: fileList.value }, () => [
410
472
  _ctx.type === "img" ? (vue.openBlock(), vue.createElementBlock(
411
- "div",
412
- {
413
- key: 0,
414
- class: vue.normalizeClass(["to-upload-img", setPicClass.value])
415
- },
473
+ vue.Fragment,
474
+ { key: 0 },
416
475
  [
417
- fileList.value.length ? (vue.openBlock(), vue.createElementBlock("div", {
418
- key: 0,
419
- class: "to-upload-img-list"
420
- }, [
421
- (vue.openBlock(true), vue.createElementBlock(
422
- vue.Fragment,
423
- null,
424
- vue.renderList(fileList.value, (item, index) => {
425
- return vue.openBlock(), vue.createElementBlock("div", {
476
+ (vue.openBlock(true), vue.createElementBlock(
477
+ vue.Fragment,
478
+ null,
479
+ vue.renderList(fileList.value, (item, index) => {
480
+ return vue.openBlock(), vue.createElementBlock(
481
+ "div",
482
+ {
426
483
  key: index,
427
- class: "to-upload-img-list-item"
428
- }, [
429
- vue.createElementVNode("img", {
430
- src: item.src,
431
- class: "to-upload-pic",
432
- alt: ""
433
- }, null, 8, ["src"]),
484
+ style: vue.normalizeStyle({ backgroundImage: `url(${item.src})` }),
485
+ class: "to-upload-item"
486
+ },
487
+ [
434
488
  vue.createVNode(vue.unref(index$2.ToIcon), {
435
- value: "delete",
436
- mode: "icon-remove",
489
+ value: "close",
490
+ class: "to-upload-item-remove",
437
491
  link: "",
438
492
  onClick: ($event) => handleDelete(index, item)
439
493
  }, null, 8, ["onClick"]),
440
- item.progress ? (vue.openBlock(), vue.createElementBlock("div", {
494
+ item.progress ? (vue.openBlock(), vue.createBlock(_component_to_progress, {
441
495
  key: 0,
442
- class: "upload-progress"
443
- }, [
444
- vue.createElementVNode(
445
- "div",
446
- {
447
- class: "upload-progress-bar",
448
- style: vue.normalizeStyle({ width: item.progress + "%" })
449
- },
450
- null,
451
- 4
452
- /* STYLE */
453
- )
454
- ])) : vue.createCommentVNode("v-if", true)
455
- ]);
456
- }),
457
- 128
458
- /* KEYED_FRAGMENT */
459
- ))
460
- ])) : vue.createCommentVNode("v-if", true),
461
- !_ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("div", {
462
- key: 1,
496
+ class: "to-upload-item-progress",
497
+ "text-position": "none",
498
+ value: item.progress
499
+ }, null, 8, ["value"])) : vue.createCommentVNode("v-if", true)
500
+ ],
501
+ 4
502
+ /* STYLE */
503
+ );
504
+ }),
505
+ 128
506
+ /* KEYED_FRAGMENT */
507
+ )),
508
+ vue.createElementVNode("div", {
463
509
  class: "to-upload-add",
464
510
  onClick: handleFile
465
511
  }, [
466
512
  vue.createVNode(vue.unref(index$2.ToIcon), {
467
513
  value: "add",
468
- mode: "upload-add"
514
+ class: "to-upload-add-icon"
469
515
  })
470
- ])) : vue.createCommentVNode("v-if", true)
516
+ ])
471
517
  ],
472
- 2
473
- /* CLASS */
518
+ 64
519
+ /* STABLE_FRAGMENT */
474
520
  )) : (vue.openBlock(true), vue.createElementBlock(
475
521
  vue.Fragment,
476
522
  { key: 1 },
477
523
  vue.renderList(fileList.value, (item, index) => {
478
524
  return vue.openBlock(), vue.createElementBlock("div", {
479
525
  key: index,
480
- class: "to-upload-list-item"
526
+ class: "to-upload-item"
481
527
  }, [
482
- vue.createVNode(vue.unref(index$2.ToIcon), { value: "img" }),
483
- vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", { class: "file-name" }, [
484
- vue.createTextVNode(
485
- vue.toDisplayString(item.name),
486
- 1
487
- /* TEXT */
488
- )
489
- ])), [
490
- [_directive_tip, item.name, "click"]
491
- ]),
528
+ vue.createVNode(vue.unref(index$2.ToIcon), {
529
+ value: getFileIcon(item.name),
530
+ class: "to-upload-item-icon"
531
+ }, null, 8, ["value"]),
532
+ vue.createElementVNode(
533
+ "div",
534
+ { class: "to-upload-item-name" },
535
+ vue.toDisplayString(item.name),
536
+ 1
537
+ /* TEXT */
538
+ ),
492
539
  vue.createElementVNode(
493
- "span",
494
- null,
540
+ "div",
541
+ { class: "to-upload-item-state" },
495
542
  vue.toDisplayString(item.status),
496
543
  1
497
544
  /* TEXT */
498
545
  ),
499
- item.progress ? (vue.openBlock(), vue.createElementBlock("div", {
500
- key: 0,
501
- class: "upload-progress"
502
- }, [
503
- vue.createElementVNode(
504
- "div",
505
- {
506
- class: "upload-progress-bar",
507
- style: vue.normalizeStyle({ width: item.progress + "%" })
508
- },
509
- null,
510
- 4
511
- /* STYLE */
512
- )
513
- ])) : vue.createCommentVNode("v-if", true),
514
546
  item[_ctx.fileIdText] && _ctx.downloadable ? (vue.openBlock(), vue.createBlock(vue.unref(index$2.ToIcon), {
515
- key: 1,
547
+ key: 0,
548
+ class: "to-upload-item-download",
516
549
  value: "download",
517
- mode: "color",
518
550
  link: "",
519
551
  onClick: ($event) => handleDownload(item[_ctx.fileIdText])
520
552
  }, null, 8, ["onClick"])) : vue.createCommentVNode("v-if", true),
521
553
  vue.createVNode(vue.unref(index$2.ToIcon), {
522
- value: "delete",
523
- mode: "color",
554
+ value: "close",
555
+ class: "to-upload-item-remove",
524
556
  link: "",
525
557
  onClick: ($event) => handleDelete(index, item)
526
- }, null, 8, ["onClick"])
558
+ }, null, 8, ["onClick"]),
559
+ item.progress ? (vue.openBlock(), vue.createBlock(_component_to_progress, {
560
+ key: 1,
561
+ class: "to-upload-item-progress",
562
+ "text-position": "none",
563
+ value: item.progress
564
+ }, null, 8, ["value"])) : vue.createCommentVNode("v-if", true)
527
565
  ]);
528
566
  }),
529
567
  128
@@ -531,6 +569,18 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
531
569
  ))
532
570
  ])
533
571
  ])) : vue.createCommentVNode("v-if", true),
572
+ _ctx.tip && _ctx.type === "img" ? (vue.openBlock(), vue.createElementBlock("div", {
573
+ key: 4,
574
+ class: "to-upload-tip"
575
+ }, [
576
+ vue.createElementVNode(
577
+ "div",
578
+ { class: "to-upload-tip-text" },
579
+ vue.toDisplayString(_ctx.tip),
580
+ 1
581
+ /* TEXT */
582
+ )
583
+ ])) : vue.createCommentVNode("v-if", true),
534
584
  errorTip.value ? vue.withDirectives((vue.openBlock(), vue.createElementBlock("span", {
535
585
  key: 5,
536
586
  class: "to-box-tip"
@@ -1 +1 @@
1
- {"version":3,"file":"upload.vue2.js","sources":["../../../../../../packages/components/upload/src/upload.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: 'ToUpload'\n});\n</script>\n<template>\n\t<div :id=\"id\" :key=\"langKey\" :flex=\"flex ? flex : null\" class=\"to-upload\" :class=\"setClass\" :style=\"setStyle\">\n\t\t<span v-if=\"verifiable && validateRequired\" v-show=\"false\" class=\"to-validate\" :req=\"validateRequired\" :desc=\"validateDesc\" :value=\"validateValue\"></span>\n\t\t<input ref=\"fileInput\" type=\"file\" :accept=\"accept\" :multiple=\"props.multiple\" style=\"display: none\" @change=\"handleChange\" />\n\t\t<to-input v-if=\"type === 'input'\" link :disabled=\"props.disabled\" :width=\"props.width\" :placeholder=\"placeholder || t('to.common.placeholder.select')\" :verifiable=\"false\">\n\t\t\t<template #suffix>\n\t\t\t\t<to-icon value=\"browse\" link @click=\"handleFile\"></to-icon>\n\t\t\t</template>\n\t\t</to-input>\n\t\t<to-button v-if=\"type === 'button'\" :disabled=\"props.disabled\" icon=\"upload\" icon-position=\"left\" @click=\"handleFile\">{{ props.uploadText || t('to.upload.button') }}</to-button>\n\t\t<div v-if=\"type === 'img' && $slots.default\" class=\"to-upload-img\" :class=\"setPicClass\">\n\t\t\t<div class=\"to-upload-add\" @click=\"handleFile\">\n\t\t\t\t<to-icon value=\"add\" mode=\"upload-add\"></to-icon>\n\t\t\t</div>\n\t\t</div>\n\t\t<div v-if=\"showList\" class=\"to-upload-list\" style=\"width: 100%\">\n\t\t\t<slot :file-list=\"fileList\">\n\t\t\t\t<div v-if=\"type === 'img'\" class=\"to-upload-img\" :class=\"setPicClass\">\n\t\t\t\t\t<div v-if=\"fileList.length\" class=\"to-upload-img-list\">\n\t\t\t\t\t\t<div v-for=\"(item, index) in fileList\" :key=\"index\" class=\"to-upload-img-list-item\">\n\t\t\t\t\t\t\t<img :src=\"item.src\" class=\"to-upload-pic\" alt=\"\" />\n\t\t\t\t\t\t\t<to-icon value=\"delete\" mode=\"icon-remove\" link @click=\"handleDelete(index, item)\"></to-icon>\n\t\t\t\t\t\t\t<div v-if=\"item.progress\" class=\"upload-progress\">\n\t\t\t\t\t\t\t\t<div class=\"upload-progress-bar\" :style=\"{ width: item.progress + '%' }\"></div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div v-if=\"!$slots.default\" class=\"to-upload-add\" @click=\"handleFile\">\n\t\t\t\t\t\t<to-icon value=\"add\" mode=\"upload-add\"></to-icon>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<template v-else>\n\t\t\t\t\t<div v-for=\"(item, index) in fileList\" :key=\"index\" class=\"to-upload-list-item\">\n\t\t\t\t\t\t<to-icon value=\"img\"></to-icon>\n\t\t\t\t\t\t<div v-tip:click=\"item.name\" class=\"file-name\">\n\t\t\t\t\t\t\t{{ item.name }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<span>{{ item.status }}</span>\n\t\t\t\t\t\t<div v-if=\"item.progress\" class=\"upload-progress\">\n\t\t\t\t\t\t\t<div class=\"upload-progress-bar\" :style=\"{ width: item.progress + '%' }\"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<to-icon v-if=\"item[fileIdText] && downloadable\" value=\"download\" mode=\"color\" link @click=\"handleDownload(item[fileIdText])\"></to-icon>\n\t\t\t\t\t\t<to-icon value=\"delete\" mode=\"color\" link @click=\"handleDelete(index, item)\"></to-icon>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</slot>\n\t\t</div>\n\t\t<span v-if=\"errorTip\" v-color=\"'danger'\" class=\"to-box-tip\">\n\t\t\t<template v-if=\"errorType === 'rule'\">\n\t\t\t\t{{ t('to.upload.selectError') }}\n\t\t\t\t<to-icon v-tip.danger=\"errorTip\" value=\"help\" color=\"danger\" mode=\"toast\"></to-icon>\n\t\t\t</template>\n\t\t\t<template v-else> {{ t('to.upload.required') }} </template>\n\t\t</span>\n\t</div>\n</template>\n<script lang=\"ts\" setup>\nimport { fileAjax, md5 } from '@touchvue/utils'\nimport { CSSProperties, computed, nextTick, onMounted, ref, inject, watch } from 'vue'\nimport { ToInput, ToIcon, ToButton, $tip } from '@touchvue/components'\nimport { t, langKey } from '@touchvue/locale'\n\n\nconst emit = defineEmits(['start', 'success', 'error', 'clear', 'change', 'progress', 'remove', 'download'])\n\nexport type UploadType = 'input' | 'img' | 'button'\n\nexport interface FileProps {\n\tflex?: boolean\n\tmode?: string\n\tmultiple?: boolean\n\tauto?: boolean\n\taction?: string\n\theaders?: object\n\tplaceholder?: string\n\tdesc?: string\n\tid?: string\n\trequired?: boolean\n\ttype?: UploadType\n\tpicSize?: string | number\n\twidth?: string | number\n\tmaxLength?: number\n\taccept?: string\n\tmaxSize?: string | number\n\tduplicatable?: false\n\tfileIdText?: string\n\tdisabled?: boolean\n\tdownloadable?: boolean\n\tname?: string\n\twithCredentials?: boolean\n\tfiles?: any[]\n\tdata?: object\n\tbeforeSelect?: ((fileList) => boolean | Promise<any>) | null\n\tbeforeStart?: ((file) => boolean | Promise<any>) | null\n\tverifiable?: boolean\n\tshowList?: boolean\n\tuploadText?: string\n}\n\nconst props = withDefaults(defineProps<FileProps>(), {\n\tflex: false,\n\tmode: 'default',\n\tmultiple: false,\n\taction: '',\n\tplaceholder: '',\n\tauto: false,\n\tdesc: '',\n\tid: 'upload' + new Date().getTime(),\n\trequired: false,\n\ttype: 'input',\n\tpicSize: '',\n\twidth: 20,\n\tmaxLength: Infinity,\n\taccept: props => (props.type === 'img' ? '.jpg,.jpeg,.png,.gif' : ''),\n\tmaxSize: '',\n\tduplicatable: false,\n\tfileIdText: 'fileId',\n\tdisabled: false,\n\tdownloadable: false,\n\tname: 'uploadfile',\n\twithCredentials: false,\n\tfiles: () => [],\n\tdata: () => ({}),\n\theaders: () => ({}),\n\tbeforeSelect: null,\n\tbeforeStart: null,\n\tverifiable: true,\n\tshowList: true,\n\tuploadText: ''\n})\n\nconst fileInput = ref(null)\nconst fileList = ref([])\nconst errorTip = ref('')\nconst errorType = ref('rule')\nconst ToFormItem = inject<{ required?: boolean; label?: string }>('ToFormItem', {})\nconst uploadList = ref([])\n\nonMounted(() => {\n\tfileList.value = props.files\n})\nwatch(\n\t() => props.files,\n\tval => {\n\t\tfileList.value = val\n\t},\n\t{\n\t\tdeep: true\n\t}\n)\nconst setClass = computed(() => {\n\tconst arr = ['to-disable-target']\n\tif (errorTip.value) {\n\t\tarr.push('to-upload-mode-line')\n\t\tarr.push('to-upload-color-danger')\n\t\tarr.push('to-upload-tip-show')\n\t} else {\n\t\tif (props.mode) {\n\t\t\tarr.push(`mode-${props.mode}`)\n\t\t}\n\t}\n\treturn arr\n})\nconst setPicClass = computed(() => {\n\tconst arr = []\n\tif (props.picSize) {\n\t\tarr.push(`pic-size-${props.picSize}`)\n\t}\n\treturn arr\n})\nconst setStyle = computed(() => {\n\tconst style: CSSProperties = {}\n\tif (props.width) {\n\t\tstyle.width = isNaN(Number(props.width)) ? props.width : props.width + 'em'\n\t}\n\treturn style\n})\nconst validateRequired = computed(() => {\n\tif (props.required) {\n\t\treturn 'true'\n\t} else if (ToFormItem && ToFormItem.required) {\n\t\treturn 'true'\n\t} else {\n\t\treturn 'false'\n\t}\n})\nconst validateDesc = computed(() => {\n\tif (props.desc) {\n\t\treturn props.desc\n\t} else if (ToFormItem && ToFormItem.label) {\n\t\treturn ToFormItem.label\n\t} else {\n\t\treturn ''\n\t}\n})\nconst validateValue = computed(() => {\n\tif (Object.keys(fileList.value).length > 0) {\n\t\treturn 'true'\n\t} else {\n\t\treturn ''\n\t}\n})\nfunction handleFile() {\n\tif (props.disabled) return false\n\tfileInput.value.click()\n}\nasync function handleChange(e) {\n\tlet newFileList = []\n\tnewFileList = Array.from(e.target.files)\n\n\terrorTip.value = ''\n\tlet flag = true\n\tif (typeof props.beforeSelect === 'boolean') {\n\t\tflag = props.beforeSelect\n\t} else {\n\t\tif (props.beforeSelect) {\n\t\t\tif (typeof props.beforeSelect === 'function') {\n\t\t\t\tconst result = props.beforeSelect(newFileList)\n\t\t\t\tif (result && typeof (result as Promise<boolean>).then === 'function') {\n\t\t\t\t\tflag = await result\n\t\t\t\t} else {\n\t\t\t\t\tflag = !!result\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tflag = !!props.beforeSelect\n\t\t\t}\n\t\t}\n\t}\n\tif (!flag) return false\n\tnewFileList.forEach(item => {\n\t\titem.uid = getFileUid(item)\n\t})\n\tif (fileList.value.length + newFileList.length <= props.maxLength) {\n\t\tuploadList.value = Array.from(e.target.files)\n\t\temit('change', newFileList)\n\t\tif (props.duplicatable) {\n\t\t\te.target.value = ''\n\t\t}\n\t\tif (props.type === 'img') {\n\t\t\tnewFileList.forEach(item => {\n\t\t\t\tlet reader = new FileReader()\n\t\t\t\treader.addEventListener('load', () => {\n\t\t\t\t\titem.src = reader.result\n\t\t\t\t\tfileList.value.push(item)\n\t\t\t\t\tif (props.auto) {\n\t\t\t\t\t\thandleUpload(item)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\treader.readAsDataURL(item)\n\t\t\t})\n\t\t} else {\n\t\t\tfileList.value = [...fileList.value, ...newFileList]\n\t\t\tif (newFileList.length && props.auto) {\n\t\t\t\tnextTick(() => {\n\t\t\t\t\tnewFileList.forEach(file => {\n\t\t\t\t\t\thandleUpload(file)\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else {\n\t\t$tip.danger(t('to.upload.tip.error.count', props.maxLength)).catch(() => {})\n\t}\n}\n\nasync function handleUpload(file) {\n\tif (!props.action) return false\n\tlet flag = true\n\tif (typeof props.beforeStart === 'boolean') {\n\t\tflag = props.beforeStart\n\t} else {\n\t\tif (props.beforeStart) {\n\t\t\tif (typeof props.beforeStart === 'function') {\n\t\t\t\tconst result = props.beforeStart(file)\n\t\t\t\tif (result && typeof (result as Promise<boolean>).then === 'function') {\n\t\t\t\t\tflag = await result\n\t\t\t\t} else {\n\t\t\t\t\tflag = !!result\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tflag = !!props.beforeStart\n\t\t\t}\n\t\t}\n\t}\n\tif (!flag) return false\n\tsetFilePropertyByUid(file.uid, 'status', 'start')\n\temit('start', file)\n\tlet formData = new FormData()\n\tformData.append(props.name, file)\n\tif (props.data) {\n\t\tObject.keys(props.data).forEach(key => {\n\t\t\tformData.append(key, props.data[key])\n\t\t})\n\t}\n\tfileAjax({\n\t\taction: props.action,\n\t\tdata: formData,\n\t\theaders: props.headers,\n\t\twithCredentials: props.withCredentials,\n\t\tonError: (err, status) => {\n\t\t\tsetFilePropertyByUid(file.uid, 'status', 'error')\n\t\t\temit('error', err, status, file)\n\t\t},\n\t\tonSuccess: (data, status) => {\n\t\t\tlet _data = JSON.parse(data)\n\t\t\tsetFilePropertyByUid(file.uid, 'status', 'success')\n\t\t\tsetFilePropertyByUid(file.uid, props.fileIdText, _data[props.fileIdText])\n\t\t\temit('success', _data, status, file)\n\t\t},\n\t\tonProgress: e => {\n\t\t\tsetFilePropertyByUid(file.uid, 'progress', Math.round((e.loaded / e.total) * 100))\n\t\t\temit('progress', e.loaded, e.total, file)\n\t\t}\n\t})\n}\n\nfunction handleDelete(index: number, item) {\n\tif (props.disabled) return false\n\tlet file = fileList.value.splice(index, 1)\n\tif (fileInput.value.value.includes(item.name)) {\n\t\tfileInput.value.value = ''\n\t}\n\temit('remove', file[0])\n}\nfunction getFileUid(fileObj) {\n\tif (!fileObj) return\n\tlet str = (fileObj.lastModifiedDate ? new Date().getTime() : fileObj.modificationdate) + fileObj.name + fileObj.size\n\treturn md5(str)\n}\nfunction setFilePropertyByUid(uid, key, value) {\n\tlet idx = fileList.value.findIndex(item => item.uid === uid)\n\tif (idx === -1) return\n\tfileList.value[idx][key] = value\n\tconst updatedItem = {\n\t\tlastModified: fileList.value[idx].lastModified,\n\t\tlastModifiedDate: fileList.value[idx].lastModifiedDate,\n\t\tname: fileList.value[idx].name,\n\t\tsize: fileList.value[idx].size,\n\t\ttype: fileList.value[idx].type,\n\t\tuid: fileList.value[idx].uid,\n\t\tsrc: fileList.value[idx].src,\n\t\tstatus: fileList.value[idx].status,\n\t\tprogress: fileList.value[idx].progress,\n\t\t[props.fileIdText]: fileList.value[idx][props.fileIdText],\n\t\t[key]: value\n\t}\n\tfileList.value.splice(idx, 1, updatedItem)\n}\nfunction handleDownload(fileId) {\n\temit('download', fileId)\n}\nfunction clear() {\n\tlet tem = fileList.value.filter(item => item[props.fileIdText])\n\tfileList.value = tem\n}\nasync function submit() {\n\terrorTip.value = ''\n\tlet flag = true\n\tif (typeof props.beforeSelect === 'boolean') {\n\t\tflag = props.beforeSelect\n\t} else {\n\t\tif (props.beforeSelect) {\n\t\t\tif (typeof props.beforeSelect === 'function') {\n\t\t\t\tconst result = props.beforeSelect(uploadList.value)\n\t\t\t\tif (result && typeof (result as Promise<boolean>).then === 'function') {\n\t\t\t\t\tflag = await result\n\t\t\t\t} else {\n\t\t\t\t\tflag = !!result\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tflag = !!props.beforeSelect\n\t\t\t}\n\t\t}\n\t}\n\tif (!flag) return false\n\tuploadList.value.forEach(item => {\n\t\titem.uid = getFileUid(item)\n\t})\n\tif (uploadList.value.length <= props.maxLength) {\n\t\tuploadList.value.forEach(file => {\n\t\t\thandleUpload(file)\n\t\t})\n\t} else {\n\t\t$tip.danger(t('to.upload.tip.error.count', props.maxLength)).catch(() => {})\n\t}\n}\ndefineExpose({\n\tclear,\n\terrorTip,\n\terrorType,\n\tsubmit\n})\n</script>\n"],"names":["DO_defineComponent","ref","inject","onMounted","watch","computed","nextTick","$tip","t","fileAjax","md5","_createElementBlock","id","_unref","langKey","flex","_normalizeClass","verifiable","_createElementVNode","accept","type","_createBlock","ToInput","placeholder","_createVNode","ToIcon","ToButton","$slots","showList","_renderSlot","_openBlock","_Fragment","_renderList","_normalizeStyle","_createTextVNode","_toDisplayString","fileIdText","downloadable"],"mappings":"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"}
1
+ {"version":3,"file":"upload.vue2.js","sources":["../../../../../../packages/components/upload/src/upload.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: 'ToUpload'\n});\n</script>\n<template>\n\t<div :id=\"id\" :key=\"langKey\" :flex=\"flex ? flex : null\" class=\"to-upload\" :class=\"setClass\" :style=\"setStyle\">\n\t\t<span v-if=\"verifiable && validateRequired\" v-show=\"false\" class=\"to-validate\" :req=\"validateRequired\" :desc=\"validateDesc\" :value=\"validateValue\"></span>\n\t\t<input ref=\"fileInput\" type=\"file\" :accept=\"accept\" :multiple=\"props.multiple\" style=\"display: none\" @change=\"handleChange\" />\n\t\t<div v-if=\"type === 'input'\" class=\"to-upload-content\">\n\t\t\t<to-input class=\"to-upload-input\" link disabled width=\"full\" :placeholder=\"placeholder || t('to.common.placeholder.select')\" :verifiable=\"false\" @click=\"handleFile\">\n\t\t\t\t<template #suffix>\n\t\t\t\t\t<to-icon value=\"browse\"></to-icon>\n\t\t\t\t</template>\n\t\t\t</to-input>\n\t\t\t<to-button v-if=\"!auto && fileList.length - files.length > 0\" icon=\"upload\" class=\"to-upload-upload-button\" @click.stop=\"submit\">上传</to-button>\n\t\t\t<div v-if=\"tip\" class=\"to-upload-tip\">\n\t\t\t\t<div class=\"to-upload-tip-text\">\n\t\t\t\t\t{{ tip }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div v-if=\"type === 'button'\" class=\"to-upload-content\">\n\t\t\t<to-button class=\"to-upload-button\" :disabled=\"props.disabled\" icon=\"upload\" icon-position=\"left\" @click=\"handleFile\">{{ props.text || t('to.upload.button') }}</to-button>\n\t\t\t<div v-if=\"tip\" class=\"to-upload-tip\">\n\t\t\t\t<div class=\"to-upload-tip-text\">\n\t\t\t\t\t{{ tip }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div v-if=\"showList\" class=\"to-upload-list\">\n\t\t\t<slot :file-list=\"fileList\">\n\t\t\t\t<template v-if=\"type === 'img'\">\n\t\t\t\t\t<div v-for=\"(item, index) in fileList\" :key=\"index\" :style=\"{ backgroundImage: `url(${item.src})` }\" class=\"to-upload-item\">\n\t\t\t\t\t\t<to-icon value=\"close\" class=\"to-upload-item-remove\" link @click=\"handleDelete(index, item)\"></to-icon>\n\t\t\t\t\t\t<to-progress v-if=\"item.progress\" class=\"to-upload-item-progress\" text-position=\"none\" :value=\"item.progress\"></to-progress>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"to-upload-add\" @click=\"handleFile\">\n\t\t\t\t\t\t<to-icon value=\"add\" class=\"to-upload-add-icon\"></to-icon>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t<template v-else>\n\t\t\t\t\t<div v-for=\"(item, index) in fileList\" :key=\"index\" class=\"to-upload-item\">\n\t\t\t\t\t\t<to-icon :value=\"getFileIcon(item.name)\" class=\"to-upload-item-icon\"></to-icon>\n\t\t\t\t\t\t<div class=\"to-upload-item-name\">\n\t\t\t\t\t\t\t{{ item.name }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"to-upload-item-state\">{{ item.status }}</div>\n\t\t\t\t\t\t<to-icon v-if=\"item[fileIdText] && downloadable\" class=\"to-upload-item-download\" value=\"download\" link @click=\"handleDownload(item[fileIdText])\"></to-icon>\n\t\t\t\t\t\t<to-icon value=\"close\" class=\"to-upload-item-remove\" link @click=\"handleDelete(index, item)\"></to-icon>\n\t\t\t\t\t\t<to-progress v-if=\"item.progress\" class=\"to-upload-item-progress\" text-position=\"none\" :value=\"item.progress\"></to-progress>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</slot>\n\t\t</div>\n\t\t<div v-if=\"tip && type === 'img'\" class=\"to-upload-tip\">\n\t\t\t<div class=\"to-upload-tip-text\">\n\t\t\t\t{{ tip }}\n\t\t\t</div>\n\t\t</div>\n\t\t<span v-if=\"errorTip\" v-color=\"'danger'\" class=\"to-box-tip\">\n\t\t\t<template v-if=\"errorType === 'rule'\">\n\t\t\t\t{{ t('to.upload.selectError') }}\n\t\t\t\t<to-icon v-tip.danger=\"errorTip\" value=\"help\" color=\"danger\" mode=\"toast\"></to-icon>\n\t\t\t</template>\n\t\t\t<template v-else> {{ t('to.upload.required') }} </template>\n\t\t</span>\n\t</div>\n</template>\n<script lang=\"ts\" setup>\nimport { fileAjax, md5 } from '@touchvue/utils'\nimport { CSSProperties, computed, nextTick, onMounted, ref, inject, watch } from 'vue'\nimport { ToInput, ToIcon, ToButton, $tip } from '@touchvue/components'\nimport { t, langKey } from '@touchvue/locale'\n\n\nconst emit = defineEmits(['start', 'success', 'error', 'clear', 'change', 'progress', 'remove', 'download'])\n\nexport type UploadType = 'input' | 'img' | 'button'\n\nexport interface FileProps {\n\ttip?: string\n\tflex?: boolean\n\tmode?: string\n\tmultiple?: boolean\n\tauto?: boolean\n\taction?: string\n\theaders?: object\n\tplaceholder?: string\n\tdesc?: string\n\tid?: string\n\trequired?: boolean\n\ttype?: UploadType\n\tpicSize?: string | number\n\twidth?: string | number\n\tmaxLength?: number\n\taccept?: string\n\tmaxSize?: string | number\n\tduplicatable?: boolean\n\tfileIdText?: string\n\tdisabled?: boolean\n\tdownloadable?: boolean\n\tname?: string\n\twithCredentials?: boolean\n\tfiles?: any[]\n\tdata?: object\n\tbeforeSelect?: ((fileList) => boolean | Promise<any>) | null\n\tbeforeStart?: ((file) => boolean | Promise<any>) | null\n\tverifiable?: boolean\n\tshowList?: boolean\n\ttext?: string\n}\n\nconst props = withDefaults(defineProps<FileProps>(), {\n\ttip: '',\n\tflex: false,\n\tmode: 'default',\n\tmultiple: false,\n\taction: '',\n\tplaceholder: '',\n\tauto: false,\n\tdesc: '',\n\tid: 'upload' + new Date().getTime(),\n\trequired: false,\n\ttype: 'input',\n\tpicSize: '',\n\twidth: 'auto',\n\tmaxLength: Infinity,\n\taccept: props => (props.type === 'img' ? '.jpg,.jpeg,.png,.gif' : ''),\n\tmaxSize: '',\n\tduplicatable: false,\n\tfileIdText: 'fileId',\n\tdisabled: false,\n\tdownloadable: false,\n\tname: 'uploadfile',\n\twithCredentials: false,\n\tfiles: () => [],\n\tdata: () => ({}),\n\theaders: () => ({}),\n\tbeforeSelect: null,\n\tbeforeStart: null,\n\tverifiable: true,\n\tshowList: true,\n\ttext: ''\n})\n\nconst fileTypeIcons = {\n\timg: ['.png', '.jpg', '.jpeg', '.gif', '.apng', '.webp', '.bmp', '.svg', '.ico'],\n\tword: ['.doc', '.docx'],\n\texcel: ['.xls', '.xlsx', '.csv'],\n\tppt: ['.ppt', '.pptx', '.ppsx'],\n\tpdf: ['.pdf'],\n\tvideo: ['.rm', '.rmvb', '.avi', '.mkv', '.mp4', '.wmv', '.mov', '.movie', '.mpeg', '.mpg', '.qt', '.flv'],\n\tvoice: ['.mp2', '.mp3', '.wma', '.midi', '.wav', '.aac', '.ogg'],\n\trar: ['.rar', '.zip', '.tar', '.gz', '.tgz', '.bz2', '.7z']\n}\n\nfunction getFileIcon(name: string) {\n\tif (!name || typeof name !== 'string') {\n\t\treturn 'file'\n\t}\n\tconst lastDotIndex = name.lastIndexOf('.')\n\tif (lastDotIndex === -1) {\n\t\treturn 'file'\n\t}\n\tconst ext = name.slice(lastDotIndex).toLowerCase()\n\tfor (const [iconType, extList] of Object.entries(fileTypeIcons)) {\n\t\tif (extList.includes(ext)) {\n\t\t\treturn iconType\n\t\t}\n\t}\n\treturn 'file'\n}\n\nconst fileInput = ref(null)\nconst fileList = ref([])\nconst errorTip = ref('')\nconst errorType = ref('rule')\nconst ToFormItem = inject<{ required?: boolean; label?: string }>('ToFormItem', {})\nconst uploadList = ref([])\n\nonMounted(() => {\n\tfileList.value = [...props.files]\n})\nwatch(\n\t() => props.files,\n\tval => {\n\t\tfileList.value = [...val]\n\t},\n\t{\n\t\tdeep: true\n\t}\n)\nconst setClass = computed(() => {\n\tconst arr = ['to-disable-target']\n\tif (errorTip.value) {\n\t\tarr.push('to-upload-mode-line')\n\t\tarr.push('to-upload-color-danger')\n\t\tarr.push('to-upload-tip-show')\n\t} else {\n\t\tif (props.mode) {\n\t\t\tarr.push(`mode-${props.mode}`)\n\t\t}\n\t\tif (props.type) {\n\t\t\tarr.push(`type-${props.type}`)\n\t\t}\n\t}\n\treturn arr\n})\nconst setStyle = computed(() => {\n\tconst style: CSSProperties = {}\n\tif (props.width) {\n\t\tstyle.width = isNaN(Number(props.width)) ? props.width : props.width + 'em'\n\t}\n\treturn style\n})\nconst validateRequired = computed(() => {\n\tif (props.required) {\n\t\treturn 'true'\n\t} else if (ToFormItem && ToFormItem.required) {\n\t\treturn 'true'\n\t} else {\n\t\treturn 'false'\n\t}\n})\nconst validateDesc = computed(() => {\n\tif (props.desc) {\n\t\treturn props.desc\n\t} else if (ToFormItem && ToFormItem.label) {\n\t\treturn ToFormItem.label\n\t} else {\n\t\treturn ''\n\t}\n})\nconst validateValue = computed(() => {\n\tif (Object.keys(fileList.value).length > 0) {\n\t\treturn 'true'\n\t} else {\n\t\treturn ''\n\t}\n})\nfunction handleFile() {\n\tif (props.disabled) return false\n\tfileInput.value.click()\n}\nasync function handleChange(e) {\n\tlet newFileList = []\n\tnewFileList = Array.from(e.target.files)\n\n\terrorTip.value = ''\n\tlet flag = true\n\tif (typeof props.beforeSelect === 'boolean') {\n\t\tflag = props.beforeSelect\n\t} else {\n\t\tif (props.beforeSelect) {\n\t\t\tif (typeof props.beforeSelect === 'function') {\n\t\t\t\tconst result = props.beforeSelect(newFileList)\n\t\t\t\tif (result && typeof (result as Promise<boolean>).then === 'function') {\n\t\t\t\t\tflag = await result\n\t\t\t\t} else {\n\t\t\t\t\tflag = !!result\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tflag = !!props.beforeSelect\n\t\t\t}\n\t\t}\n\t}\n\tif (!flag) return false\n\tnewFileList.forEach(item => {\n\t\titem.uid = getFileUid(item)\n\t})\n\tconst addedCount = newFileList.filter(item => !fileList.value.some(f => f.name === item.name)).length\n\tconst willAddCount = props.duplicatable ? newFileList.length : addedCount\n\tif (fileList.value.length + willAddCount <= props.maxLength) {\n\t\tuploadList.value = Array.from(e.target.files)\n\t\temit('change', newFileList)\n\t\te.target.value = ''\n\t\tif (props.type === 'img') {\n\t\t\tnewFileList.forEach(item => {\n\t\t\t\tlet reader = new FileReader()\n\t\t\t\treader.addEventListener('load', () => {\n\t\t\t\t\titem.src = reader.result\n\t\t\t\t\tif (props.duplicatable) {\n\t\t\t\t\t\tfileList.value.push(item)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treplaceOrAddToFileList(item)\n\t\t\t\t\t}\n\t\t\t\t\tif (props.auto) {\n\t\t\t\t\t\thandleUpload(item)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\treader.readAsDataURL(item)\n\t\t\t})\n\t\t} else {\n\t\t\tif (props.duplicatable) {\n\t\t\t\tfileList.value = [...fileList.value, ...newFileList]\n\t\t\t} else {\n\t\t\t\tnewFileList.forEach(item => replaceOrAddToFileList(item))\n\t\t\t}\n\t\t\tif (newFileList.length && props.auto) {\n\t\t\t\tnextTick(() => {\n\t\t\t\t\tnewFileList.forEach(file => {\n\t\t\t\t\t\thandleUpload(file)\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else {\n\t\t$tip.danger(t('to.upload.tip.error.count', props.maxLength)).catch(() => {})\n\t}\n}\n\nasync function handleUpload(file) {\n\tif (!props.action) return false\n\tlet flag = true\n\tif (typeof props.beforeStart === 'boolean') {\n\t\tflag = props.beforeStart\n\t} else {\n\t\tif (props.beforeStart) {\n\t\t\tif (typeof props.beforeStart === 'function') {\n\t\t\t\tconst result = props.beforeStart(file)\n\t\t\t\tif (result && typeof (result as Promise<boolean>).then === 'function') {\n\t\t\t\t\tflag = await result\n\t\t\t\t} else {\n\t\t\t\t\tflag = !!result\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tflag = !!props.beforeStart\n\t\t\t}\n\t\t}\n\t}\n\tif (!flag) return false\n\tsetFilePropertyByUid(file.uid, 'status', 'start')\n\temit('start', file)\n\tlet formData = new FormData()\n\tformData.append(props.name, file)\n\tif (props.data) {\n\t\tObject.keys(props.data).forEach(key => {\n\t\t\tformData.append(key, props.data[key])\n\t\t})\n\t}\n\tfileAjax({\n\t\taction: props.action,\n\t\tdata: formData,\n\t\theaders: props.headers,\n\t\twithCredentials: props.withCredentials,\n\t\tonError: (err, status) => {\n\t\t\tsetFilePropertyByUid(file.uid, 'status', 'error')\n\t\t\temit('error', err, status, file)\n\t\t},\n\t\tonSuccess: (data, status) => {\n\t\t\tlet _data = JSON.parse(data)\n\t\t\tsetFilePropertyByUid(file.uid, 'status', 'success')\n\t\t\tsetFilePropertyByUid(file.uid, props.fileIdText, _data[props.fileIdText])\n\t\t\temit('success', _data, status, file)\n\t\t},\n\t\tonProgress: e => {\n\t\t\tsetFilePropertyByUid(file.uid, 'progress', Math.round((e.loaded / e.total) * 100))\n\t\t\temit('progress', e.loaded, e.total, file)\n\t\t}\n\t})\n}\n\nfunction handleDelete(index: number, item) {\n\tif (props.disabled) return false\n\tlet file = fileList.value.splice(index, 1)\n\tif (fileInput.value.value.includes(item.name)) {\n\t\tfileInput.value.value = ''\n\t}\n\temit('remove', file[0])\n}\nfunction getFileUid(fileObj) {\n\tif (!fileObj) return\n\tlet str = (fileObj.lastModifiedDate ? new Date().getTime() : fileObj.modificationdate) + fileObj.name + fileObj.size\n\treturn md5(str)\n}\nfunction replaceOrAddToFileList(file) {\n\tconst idx = fileList.value.findIndex(item => item.name === file.name)\n\tif (idx !== -1) {\n\t\tfileList.value.splice(idx, 1, file)\n\t} else {\n\t\tfileList.value.push(file)\n\t}\n}\nfunction setFilePropertyByUid(uid, key, value) {\n\tlet idx = fileList.value.findIndex(item => item.uid === uid)\n\tif (idx === -1) return\n\tfileList.value[idx][key] = value\n\tconst updatedItem = {\n\t\tlastModified: fileList.value[idx].lastModified,\n\t\tlastModifiedDate: fileList.value[idx].lastModifiedDate,\n\t\tname: fileList.value[idx].name,\n\t\tsize: fileList.value[idx].size,\n\t\ttype: fileList.value[idx].type,\n\t\tuid: fileList.value[idx].uid,\n\t\tsrc: fileList.value[idx].src,\n\t\tstatus: fileList.value[idx].status,\n\t\tprogress: fileList.value[idx].progress,\n\t\t[props.fileIdText]: fileList.value[idx][props.fileIdText],\n\t\t[key]: value\n\t}\n\tfileList.value.splice(idx, 1, updatedItem)\n}\nfunction handleDownload(fileId) {\n\temit('download', fileId)\n}\nfunction clear() {\n\tlet tem = fileList.value.filter(item => item[props.fileIdText])\n\tfileList.value = tem\n}\nasync function submit() {\n\terrorTip.value = ''\n\tlet flag = true\n\tif (typeof props.beforeSelect === 'boolean') {\n\t\tflag = props.beforeSelect\n\t} else {\n\t\tif (props.beforeSelect) {\n\t\t\tif (typeof props.beforeSelect === 'function') {\n\t\t\t\tconst result = props.beforeSelect(uploadList.value)\n\t\t\t\tif (result && typeof (result as Promise<boolean>).then === 'function') {\n\t\t\t\t\tflag = await result\n\t\t\t\t} else {\n\t\t\t\t\tflag = !!result\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tflag = !!props.beforeSelect\n\t\t\t}\n\t\t}\n\t}\n\tif (!flag) return false\n\tuploadList.value.forEach(item => {\n\t\titem.uid = getFileUid(item)\n\t})\n\tif (uploadList.value.length <= props.maxLength) {\n\t\tuploadList.value.forEach(file => {\n\t\t\thandleUpload(file)\n\t\t})\n\t} else {\n\t\t$tip.danger(t('to.upload.tip.error.count', props.maxLength)).catch(() => {})\n\t}\n}\ndefineExpose({\n\tclear,\n\terrorTip,\n\terrorType,\n\tsubmit\n})\n</script>\n"],"names":["DO_defineComponent","ref","inject","onMounted","watch","computed","nextTick","$tip","t","fileAjax","md5","_createElementBlock","id","_unref","langKey","flex","_normalizeClass","verifiable","_createElementVNode","accept","type","_createVNode","ToInput","placeholder","ToIcon","auto","files","_createBlock","ToButton","tip","showList","_renderSlot","_Fragment","_openBlock","_renderList","_normalizeStyle","_toDisplayString","fileIdText","downloadable","_createTextVNode"],"mappings":"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"}