vant 4.3.2 → 4.4.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 (89) hide show
  1. package/es/address-edit/AddressEdit.mjs +1 -0
  2. package/es/area/Area.d.ts +6 -8
  3. package/es/area/Area.mjs +1 -1
  4. package/es/area/index.d.ts +4 -6
  5. package/es/back-top/BackTop.d.ts +1 -1
  6. package/es/back-top/BackTop.mjs +6 -3
  7. package/es/back-top/index.css +1 -1
  8. package/es/back-top/index.d.ts +1 -1
  9. package/es/barrage/Barrage.d.ts +93 -0
  10. package/es/barrage/Barrage.mjs +134 -0
  11. package/es/barrage/index.css +1 -0
  12. package/es/barrage/index.d.ts +69 -0
  13. package/es/barrage/index.mjs +10 -0
  14. package/es/barrage/style/index.d.ts +1 -0
  15. package/es/barrage/style/index.mjs +2 -0
  16. package/es/barrage/types.d.ts +7 -0
  17. package/es/barrage/types.mjs +0 -0
  18. package/es/cascader/Cascader.mjs +14 -0
  19. package/es/contact-list/ContactList.mjs +1 -1
  20. package/es/contact-list/index.css +1 -1
  21. package/es/date-picker/DatePicker.mjs +5 -2
  22. package/es/dialog/index.css +1 -1
  23. package/es/divider/Divider.d.ts +4 -0
  24. package/es/divider/Divider.mjs +4 -2
  25. package/es/divider/index.css +1 -1
  26. package/es/divider/index.d.ts +3 -0
  27. package/es/image-preview/ImagePreviewItem.mjs +28 -15
  28. package/es/index.d.ts +2 -1
  29. package/es/index.mjs +4 -1
  30. package/es/notice-bar/NoticeBar.d.ts +1 -1
  31. package/es/notice-bar/index.d.ts +1 -1
  32. package/es/signature/Signature.d.ts +13 -0
  33. package/es/signature/Signature.mjs +24 -8
  34. package/es/signature/index.css +1 -1
  35. package/es/signature/index.d.ts +9 -0
  36. package/es/uploader/Uploader.d.ts +6 -1
  37. package/es/uploader/Uploader.mjs +25 -10
  38. package/es/uploader/UploaderPreviewItem.d.ts +5 -1
  39. package/es/uploader/UploaderPreviewItem.mjs +6 -3
  40. package/es/uploader/index.d.ts +5 -1
  41. package/es/uploader/types.d.ts +1 -0
  42. package/lib/address-edit/AddressEdit.js +1 -0
  43. package/lib/area/Area.d.ts +6 -8
  44. package/lib/area/Area.js +1 -1
  45. package/lib/area/index.d.ts +4 -6
  46. package/lib/back-top/BackTop.d.ts +1 -1
  47. package/lib/back-top/BackTop.js +6 -3
  48. package/lib/back-top/index.css +1 -1
  49. package/lib/back-top/index.d.ts +1 -1
  50. package/lib/barrage/Barrage.d.ts +93 -0
  51. package/lib/barrage/Barrage.js +153 -0
  52. package/lib/barrage/index.css +1 -0
  53. package/lib/barrage/index.d.ts +69 -0
  54. package/lib/barrage/index.js +39 -0
  55. package/lib/barrage/style/index.d.ts +1 -0
  56. package/lib/barrage/style/index.js +2 -0
  57. package/lib/barrage/types.d.ts +7 -0
  58. package/lib/barrage/types.js +15 -0
  59. package/lib/cascader/Cascader.js +14 -0
  60. package/lib/contact-list/ContactList.js +1 -1
  61. package/lib/contact-list/index.css +1 -1
  62. package/lib/date-picker/DatePicker.js +5 -2
  63. package/lib/dialog/index.css +1 -1
  64. package/lib/divider/Divider.d.ts +4 -0
  65. package/lib/divider/Divider.js +4 -2
  66. package/lib/divider/index.css +1 -1
  67. package/lib/divider/index.d.ts +3 -0
  68. package/lib/image-preview/ImagePreviewItem.js +28 -15
  69. package/lib/index.css +1 -1
  70. package/lib/index.d.ts +2 -1
  71. package/lib/index.js +4 -1
  72. package/lib/notice-bar/NoticeBar.d.ts +1 -1
  73. package/lib/notice-bar/index.d.ts +1 -1
  74. package/lib/signature/Signature.d.ts +13 -0
  75. package/lib/signature/Signature.js +23 -7
  76. package/lib/signature/index.css +1 -1
  77. package/lib/signature/index.d.ts +9 -0
  78. package/lib/uploader/Uploader.d.ts +6 -1
  79. package/lib/uploader/Uploader.js +25 -10
  80. package/lib/uploader/UploaderPreviewItem.d.ts +5 -1
  81. package/lib/uploader/UploaderPreviewItem.js +6 -3
  82. package/lib/uploader/index.d.ts +5 -1
  83. package/lib/uploader/types.d.ts +1 -0
  84. package/lib/vant.cjs.js +523 -324
  85. package/lib/vant.es.js +523 -324
  86. package/lib/vant.js +523 -324
  87. package/lib/vant.min.js +1 -1
  88. package/lib/web-types.json +1 -1
  89. package/package.json +1 -1
package/lib/index.d.ts CHANGED
@@ -7,6 +7,7 @@ export * from "./address-list";
7
7
  export * from "./area";
8
8
  export * from "./back-top";
9
9
  export * from "./badge";
10
+ export * from "./barrage";
10
11
  export * from "./button";
11
12
  export * from "./calendar";
12
13
  export * from "./card";
@@ -101,4 +102,4 @@ declare namespace _default {
101
102
  }
102
103
  export default _default;
103
104
  export function install(app: any): void;
104
- export const version: "4.3.2";
105
+ export const version: "4.4.0";
package/lib/index.js CHANGED
@@ -32,6 +32,7 @@ var import_address_list = require("./address-list");
32
32
  var import_area = require("./area");
33
33
  var import_back_top = require("./back-top");
34
34
  var import_badge = require("./badge");
35
+ var import_barrage = require("./barrage");
35
36
  var import_button = require("./button");
36
37
  var import_calendar = require("./calendar");
37
38
  var import_card = require("./card");
@@ -128,6 +129,7 @@ __reExport(stdin_exports, require("./address-list"), module.exports);
128
129
  __reExport(stdin_exports, require("./area"), module.exports);
129
130
  __reExport(stdin_exports, require("./back-top"), module.exports);
130
131
  __reExport(stdin_exports, require("./badge"), module.exports);
132
+ __reExport(stdin_exports, require("./barrage"), module.exports);
131
133
  __reExport(stdin_exports, require("./button"), module.exports);
132
134
  __reExport(stdin_exports, require("./calendar"), module.exports);
133
135
  __reExport(stdin_exports, require("./card"), module.exports);
@@ -216,7 +218,7 @@ __reExport(stdin_exports, require("./toast"), module.exports);
216
218
  __reExport(stdin_exports, require("./tree-select"), module.exports);
217
219
  __reExport(stdin_exports, require("./uploader"), module.exports);
218
220
  __reExport(stdin_exports, require("./watermark"), module.exports);
219
- const version = "4.3.2";
221
+ const version = "4.4.0";
220
222
  function install(app) {
221
223
  const components = [
222
224
  import_action_bar.ActionBar,
@@ -228,6 +230,7 @@ function install(app) {
228
230
  import_area.Area,
229
231
  import_back_top.BackTop,
230
232
  import_badge.Badge,
233
+ import_barrage.Barrage,
231
234
  import_button.Button,
232
235
  import_calendar.Calendar,
233
236
  import_card.Card,
@@ -64,8 +64,8 @@ declare const _default: import("vue").DefineComponent<{
64
64
  onReplay?: ((...args: any[]) => any) | undefined;
65
65
  }, {
66
66
  scrollable: boolean | null;
67
- speed: string | number;
68
67
  delay: string | number;
68
+ speed: string | number;
69
69
  wrapable: boolean;
70
70
  }>;
71
71
  export default _default;
@@ -42,8 +42,8 @@ export declare const NoticeBar: import("../utils").WithInstall<import("vue").Def
42
42
  onReplay?: ((...args: any[]) => any) | undefined;
43
43
  }, {
44
44
  scrollable: boolean | null;
45
- speed: string | number;
46
45
  delay: string | number;
46
+ speed: string | number;
47
47
  wrapable: boolean;
48
48
  }>>;
49
49
  export default NoticeBar;
@@ -14,6 +14,10 @@ export declare const signatureProps: {
14
14
  default: number;
15
15
  };
16
16
  clearButtonText: StringConstructor;
17
+ backgroundColor: {
18
+ type: import("vue").PropType<string>;
19
+ default: string;
20
+ };
17
21
  confirmButtonText: StringConstructor;
18
22
  };
19
23
  export type SignatureProps = ExtractPropTypes<typeof signatureProps>;
@@ -32,6 +36,10 @@ declare const _default: import("vue").DefineComponent<{
32
36
  default: number;
33
37
  };
34
38
  clearButtonText: StringConstructor;
39
+ backgroundColor: {
40
+ type: import("vue").PropType<string>;
41
+ default: string;
42
+ };
35
43
  confirmButtonText: StringConstructor;
36
44
  }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("submit" | "start" | "clear" | "end" | "signing")[], "submit" | "start" | "clear" | "end" | "signing", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
37
45
  tips: StringConstructor;
@@ -48,6 +56,10 @@ declare const _default: import("vue").DefineComponent<{
48
56
  default: number;
49
57
  };
50
58
  clearButtonText: StringConstructor;
59
+ backgroundColor: {
60
+ type: import("vue").PropType<string>;
61
+ default: string;
62
+ };
51
63
  confirmButtonText: StringConstructor;
52
64
  }>> & {
53
65
  onSubmit?: ((...args: any[]) => any) | undefined;
@@ -57,6 +69,7 @@ declare const _default: import("vue").DefineComponent<{
57
69
  onSigning?: ((...args: any[]) => any) | undefined;
58
70
  }, {
59
71
  type: string;
72
+ backgroundColor: string;
60
73
  lineWidth: number;
61
74
  penColor: string;
62
75
  }>;
@@ -33,6 +33,7 @@ const signatureProps = {
33
33
  penColor: (0, import_utils.makeStringProp)("#000"),
34
34
  lineWidth: (0, import_utils.makeNumberProp)(3),
35
35
  clearButtonText: String,
36
+ backgroundColor: (0, import_utils.makeStringProp)(""),
36
37
  confirmButtonText: String
37
38
  };
38
39
  const hasCanvasSupport = () => {
@@ -52,7 +53,8 @@ var stdin_default = (0, import_vue2.defineComponent)({
52
53
  const state = (0, import_vue2.reactive)({
53
54
  width: 0,
54
55
  height: 0,
55
- ctx: null
56
+ ctx: null,
57
+ ratio: import_utils.inBrowser ? window.devicePixelRatio : 1
56
58
  });
57
59
  let canvasRect;
58
60
  const isRenderCanvas = import_utils.inBrowser ? hasCanvasSupport() : true;
@@ -61,7 +63,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
61
63
  return false;
62
64
  }
63
65
  state.ctx.beginPath();
64
- state.ctx.lineWidth = props.lineWidth;
66
+ state.ctx.lineWidth = props.lineWidth * state.ratio;
65
67
  state.ctx.strokeStyle = props.penColor;
66
68
  canvasRect = (0, import_use.useRect)(canvasRef);
67
69
  emit("start");
@@ -73,8 +75,8 @@ var stdin_default = (0, import_vue2.defineComponent)({
73
75
  }
74
76
  (0, import_utils.preventDefault)(event);
75
77
  const touch = event.touches[0];
76
- const mouseX = touch.clientX - ((canvasRect == null ? void 0 : canvasRect.left) || 0);
77
- const mouseY = touch.clientY - ((canvasRect == null ? void 0 : canvasRect.top) || 0);
78
+ const mouseX = (touch.clientX - ((canvasRect == null ? void 0 : canvasRect.left) || 0)) * state.ratio;
79
+ const mouseY = (touch.clientY - ((canvasRect == null ? void 0 : canvasRect.top) || 0)) * state.ratio;
78
80
  state.ctx.lineCap = "round";
79
81
  state.ctx.lineJoin = "round";
80
82
  (_a = state.ctx) == null ? void 0 : _a.lineTo(mouseX, mouseY);
@@ -91,13 +93,23 @@ var stdin_default = (0, import_vue2.defineComponent)({
91
93
  empty.height = canvas.height;
92
94
  return canvas.toDataURL() === empty.toDataURL();
93
95
  };
96
+ const setCanvasBgColor = () => {
97
+ if (state.ctx && props.backgroundColor) {
98
+ state.ctx.fillStyle = props.backgroundColor;
99
+ state.ctx.fillRect(0, 0, state.width, state.height);
100
+ }
101
+ };
94
102
  const submit = () => {
103
+ var _a, _b;
95
104
  const canvas = canvasRef.value;
96
105
  if (!canvas) {
97
106
  return;
98
107
  }
99
108
  const isEmpty = isCanvasEmpty(canvas);
100
- const image = isEmpty ? "" : canvas.toDataURL(`image/${props.type}`, props.type === "jpg" ? 0.9 : null);
109
+ const image = isEmpty ? "" : ((_b = (_a = {
110
+ jpg: () => canvas.toDataURL("image/jpeg", 0.8),
111
+ jpeg: () => canvas.toDataURL("image/jpeg", 0.8)
112
+ })[props.type]) == null ? void 0 : _b.call(_a)) || canvas.toDataURL(`image/${props.type}`);
101
113
  emit("submit", {
102
114
  image,
103
115
  canvas
@@ -107,6 +119,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
107
119
  if (state.ctx) {
108
120
  state.ctx.clearRect(0, 0, state.width, state.height);
109
121
  state.ctx.closePath();
122
+ setCanvasBgColor();
110
123
  }
111
124
  emit("clear");
112
125
  };
@@ -114,8 +127,11 @@ var stdin_default = (0, import_vue2.defineComponent)({
114
127
  var _a, _b, _c;
115
128
  if (isRenderCanvas) {
116
129
  state.ctx = (_a = canvasRef.value) == null ? void 0 : _a.getContext("2d");
117
- state.width = ((_b = wrapRef.value) == null ? void 0 : _b.offsetWidth) || 0;
118
- state.height = ((_c = wrapRef.value) == null ? void 0 : _c.offsetHeight) || 0;
130
+ state.width = (((_b = wrapRef.value) == null ? void 0 : _b.offsetWidth) || 0) * state.ratio;
131
+ state.height = (((_c = wrapRef.value) == null ? void 0 : _c.offsetHeight) || 0) * state.ratio;
132
+ (0, import_vue2.nextTick)(() => {
133
+ setCanvasBgColor();
134
+ });
119
135
  }
120
136
  });
121
137
  return () => (0, import_vue.createVNode)("div", {
@@ -1 +1 @@
1
- :root{--van-signature-padding: var(--van-padding-xs);--van-signature-content-height: 200px;--van-signature-content-background: var(--van-background-2);--van-signature-content-border: 1px dotted #dadada}.van-signature{padding:var(--van-signature-padding)}.van-signature__content{display:flex;justify-content:center;align-items:center;height:var(--van-signature-content-height);background-color:var(--van-signature-content-background);border:var(--van-signature-content-border);border-radius:var(--van-radius-lg);overflow:hidden}.van-signature__footer{display:flex;justify-content:flex-end}.van-signature__footer .van-button{padding:0 var(--van-padding-md);margin-top:var(--van-padding-xs);margin-left:var(--van-padding-xs)}
1
+ :root{--van-signature-padding: var(--van-padding-xs);--van-signature-content-height: 200px;--van-signature-content-background: var(--van-background-2);--van-signature-content-border: 1px dotted #dadada}.van-signature{padding:var(--van-signature-padding)}.van-signature__content{display:flex;justify-content:center;align-items:center;height:var(--van-signature-content-height);background-color:var(--van-signature-content-background);border:var(--van-signature-content-border);border-radius:var(--van-radius-lg);overflow:hidden}.van-signature__content canvas{width:100%;height:100%}.van-signature__footer{display:flex;justify-content:flex-end}.van-signature__footer .van-button{padding:0 var(--van-padding-md);margin-top:var(--van-padding-xs);margin-left:var(--van-padding-xs)}
@@ -13,6 +13,10 @@ export declare const Signature: import("../utils").WithInstall<import("vue").Def
13
13
  default: number;
14
14
  };
15
15
  clearButtonText: StringConstructor;
16
+ backgroundColor: {
17
+ type: import("vue").PropType<string>;
18
+ default: string;
19
+ };
16
20
  confirmButtonText: StringConstructor;
17
21
  }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("submit" | "start" | "clear" | "end" | "signing")[], "submit" | "start" | "clear" | "end" | "signing", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
18
22
  tips: StringConstructor;
@@ -29,6 +33,10 @@ export declare const Signature: import("../utils").WithInstall<import("vue").Def
29
33
  default: number;
30
34
  };
31
35
  clearButtonText: StringConstructor;
36
+ backgroundColor: {
37
+ type: import("vue").PropType<string>;
38
+ default: string;
39
+ };
32
40
  confirmButtonText: StringConstructor;
33
41
  }>> & {
34
42
  onSubmit?: ((...args: any[]) => any) | undefined;
@@ -38,6 +46,7 @@ export declare const Signature: import("../utils").WithInstall<import("vue").Def
38
46
  onSigning?: ((...args: any[]) => any) | undefined;
39
47
  }, {
40
48
  type: string;
49
+ backgroundColor: string;
41
50
  lineWidth: number;
42
51
  penColor: string;
43
52
  }>>;
@@ -38,6 +38,7 @@ export declare const uploaderProps: {
38
38
  type: BooleanConstructor;
39
39
  default: true;
40
40
  };
41
+ reupload: BooleanConstructor;
41
42
  afterRead: PropType<UploaderAfterRead>;
42
43
  showUpload: {
43
44
  type: BooleanConstructor;
@@ -100,6 +101,7 @@ declare const _default: import("vue").DefineComponent<{
100
101
  type: BooleanConstructor;
101
102
  default: true;
102
103
  };
104
+ reupload: BooleanConstructor;
103
105
  afterRead: PropType<UploaderAfterRead>;
104
106
  showUpload: {
105
107
  type: BooleanConstructor;
@@ -125,7 +127,7 @@ declare const _default: import("vue").DefineComponent<{
125
127
  type: PropType<UploaderMaxSize>;
126
128
  default: number;
127
129
  };
128
- }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:modelValue" | "delete" | "oversize" | "clickUpload" | "closePreview" | "clickPreview")[], "update:modelValue" | "delete" | "oversize" | "clickUpload" | "closePreview" | "clickPreview", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
130
+ }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:modelValue" | "delete" | "oversize" | "clickUpload" | "closePreview" | "clickPreview" | "clickReupload")[], "update:modelValue" | "delete" | "oversize" | "clickUpload" | "closePreview" | "clickPreview" | "clickReupload", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
129
131
  name: {
130
132
  type: (NumberConstructor | StringConstructor)[];
131
133
  default: string;
@@ -160,6 +162,7 @@ declare const _default: import("vue").DefineComponent<{
160
162
  type: BooleanConstructor;
161
163
  default: true;
162
164
  };
165
+ reupload: BooleanConstructor;
163
166
  afterRead: PropType<UploaderAfterRead>;
164
167
  showUpload: {
165
168
  type: BooleanConstructor;
@@ -192,6 +195,7 @@ declare const _default: import("vue").DefineComponent<{
192
195
  onClickUpload?: ((...args: any[]) => any) | undefined;
193
196
  onClosePreview?: ((...args: any[]) => any) | undefined;
194
197
  onClickPreview?: ((...args: any[]) => any) | undefined;
198
+ onClickReupload?: ((...args: any[]) => any) | undefined;
195
199
  }, {
196
200
  name: string | number;
197
201
  accept: string;
@@ -205,6 +209,7 @@ declare const _default: import("vue").DefineComponent<{
205
209
  resultType: UploaderResultType;
206
210
  uploadIcon: string;
207
211
  deletable: boolean;
212
+ reupload: boolean;
208
213
  showUpload: boolean;
209
214
  previewImage: boolean;
210
215
  previewFullImage: boolean;
@@ -54,6 +54,7 @@ const uploaderProps = {
54
54
  uploadIcon: (0, import_utils.makeStringProp)("photograph"),
55
55
  uploadText: String,
56
56
  deletable: import_utils.truthProp,
57
+ reupload: Boolean,
57
58
  afterRead: Function,
58
59
  showUpload: import_utils.truthProp,
59
60
  modelValue: (0, import_utils.makeArrayProp)(),
@@ -71,13 +72,14 @@ const uploaderProps = {
71
72
  var stdin_default = (0, import_vue2.defineComponent)({
72
73
  name: import_utils2.name,
73
74
  props: uploaderProps,
74
- emits: ["delete", "oversize", "clickUpload", "closePreview", "clickPreview", "update:modelValue"],
75
+ emits: ["delete", "oversize", "clickUpload", "closePreview", "clickPreview", "clickReupload", "update:modelValue"],
75
76
  setup(props, {
76
77
  emit,
77
78
  slots
78
79
  }) {
79
80
  const inputRef = (0, import_vue2.ref)();
80
81
  const urls = [];
82
+ const reuploadIndex = (0, import_vue2.ref)(-1);
81
83
  const getDetail = (index = props.modelValue.length) => ({
82
84
  name: props.name,
83
85
  index
@@ -103,7 +105,14 @@ var stdin_default = (0, import_vue2.defineComponent)({
103
105
  }
104
106
  }
105
107
  items = (0, import_vue2.reactive)(items);
106
- emit("update:modelValue", [...props.modelValue, ...(0, import_utils.toArray)(items)]);
108
+ if (reuploadIndex.value > -1) {
109
+ const arr = [...props.modelValue];
110
+ arr.splice(reuploadIndex.value, 1, items);
111
+ emit("update:modelValue", arr);
112
+ reuploadIndex.value = -1;
113
+ } else {
114
+ emit("update:modelValue", [...props.modelValue, ...(0, import_utils.toArray)(items)]);
115
+ }
107
116
  if (props.afterRead) {
108
117
  props.afterRead(items, getDetail());
109
118
  }
@@ -204,15 +213,20 @@ var stdin_default = (0, import_vue2.defineComponent)({
204
213
  emit("update:modelValue", fileList);
205
214
  emit("delete", item, getDetail(index));
206
215
  };
216
+ const reuploadImage = (index) => {
217
+ chooseFile();
218
+ reuploadIndex.value = index;
219
+ };
207
220
  const renderPreviewItem = (item, index) => {
208
- const needPickData = ["imageFit", "deletable", "previewSize", "beforeDelete"];
221
+ const needPickData = ["imageFit", "deletable", "reupload", "previewSize", "beforeDelete"];
209
222
  const previewData = (0, import_utils.extend)((0, import_utils.pick)(props, needPickData), (0, import_utils.pick)(item, needPickData, true));
210
223
  return (0, import_vue.createVNode)(import_UploaderPreviewItem.default, (0, import_vue.mergeProps)({
211
224
  "item": item,
212
225
  "index": index,
213
- "onClick": () => emit("clickPreview", item, getDetail(index)),
226
+ "onClick": () => emit(props.reupload ? "clickReupload" : "clickPreview", item, getDetail(index)),
214
227
  "onDelete": () => deleteFile(item, index),
215
- "onPreview": () => previewImage(item)
228
+ "onPreview": () => previewImage(item),
229
+ "onReupload": () => reuploadImage(index)
216
230
  }, (0, import_utils.pick)(props, ["name", "lazyLoad"]), previewData), (0, import_utils.pick)(slots, ["preview-cover", "preview-delete"]));
217
231
  };
218
232
  const renderPreviewList = () => {
@@ -222,24 +236,25 @@ var stdin_default = (0, import_vue2.defineComponent)({
222
236
  };
223
237
  const onClickUpload = (event) => emit("clickUpload", event);
224
238
  const renderUpload = () => {
225
- if (props.modelValue.length >= +props.maxCount) {
239
+ if (props.modelValue.length >= +props.maxCount && !props.reupload) {
226
240
  return;
227
241
  }
242
+ const hideUploader = props.modelValue.length >= +props.maxCount && props.reupload;
228
243
  const Input = props.readonly ? null : (0, import_vue.createVNode)("input", {
229
244
  "ref": inputRef,
230
245
  "type": "file",
231
246
  "class": (0, import_utils2.bem)("input"),
232
247
  "accept": props.accept,
233
248
  "capture": props.capture,
234
- "multiple": props.multiple,
249
+ "multiple": props.multiple && reuploadIndex.value === -1,
235
250
  "disabled": props.disabled,
236
251
  "onChange": onChange
237
252
  }, null);
238
253
  if (slots.default) {
239
- return (0, import_vue.createVNode)("div", {
254
+ return (0, import_vue.withDirectives)((0, import_vue.createVNode)("div", {
240
255
  "class": (0, import_utils2.bem)("input-wrapper"),
241
256
  "onClick": onClickUpload
242
- }, [slots.default(), Input]);
257
+ }, [slots.default(), Input]), [[import_vue.vShow, !hideUploader]]);
243
258
  }
244
259
  return (0, import_vue.withDirectives)((0, import_vue.createVNode)("div", {
245
260
  "class": (0, import_utils2.bem)("upload", {
@@ -252,7 +267,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
252
267
  "class": (0, import_utils2.bem)("upload-icon")
253
268
  }, null), props.uploadText && (0, import_vue.createVNode)("span", {
254
269
  "class": (0, import_utils2.bem)("upload-text")
255
- }, [props.uploadText]), Input]), [[import_vue.vShow, props.showUpload]]);
270
+ }, [props.uploadText]), Input]), [[import_vue.vShow, props.showUpload && !hideUploader]]);
256
271
  };
257
272
  const chooseFile = () => {
258
273
  if (inputRef.value && !props.disabled) {
@@ -12,9 +12,10 @@ declare const _default: import("vue").DefineComponent<{
12
12
  imageFit: PropType<ImageFit>;
13
13
  lazyLoad: BooleanConstructor;
14
14
  deletable: BooleanConstructor;
15
+ reupload: BooleanConstructor;
15
16
  previewSize: PropType<Numeric | [Numeric, Numeric]>;
16
17
  beforeDelete: PropType<Interceptor>;
17
- }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("delete" | "preview")[], "delete" | "preview", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
18
+ }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("delete" | "reupload" | "preview")[], "delete" | "reupload" | "preview", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
18
19
  name: (NumberConstructor | StringConstructor)[];
19
20
  item: {
20
21
  type: PropType<UploaderFileListItem>;
@@ -24,13 +25,16 @@ declare const _default: import("vue").DefineComponent<{
24
25
  imageFit: PropType<ImageFit>;
25
26
  lazyLoad: BooleanConstructor;
26
27
  deletable: BooleanConstructor;
28
+ reupload: BooleanConstructor;
27
29
  previewSize: PropType<Numeric | [Numeric, Numeric]>;
28
30
  beforeDelete: PropType<Interceptor>;
29
31
  }>> & {
30
32
  onDelete?: ((...args: any[]) => any) | undefined;
33
+ onReupload?: ((...args: any[]) => any) | undefined;
31
34
  onPreview?: ((...args: any[]) => any) | undefined;
32
35
  }, {
33
36
  lazyLoad: boolean;
34
37
  deletable: boolean;
38
+ reupload: boolean;
35
39
  }>;
36
40
  export default _default;
@@ -35,10 +35,11 @@ var stdin_default = (0, import_vue2.defineComponent)({
35
35
  imageFit: String,
36
36
  lazyLoad: Boolean,
37
37
  deletable: Boolean,
38
+ reupload: Boolean,
38
39
  previewSize: [Number, String, Array],
39
40
  beforeDelete: Function
40
41
  },
41
- emits: ["delete", "preview"],
42
+ emits: ["delete", "preview", "reupload"],
42
43
  setup(props, {
43
44
  emit,
44
45
  slots
@@ -80,6 +81,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
80
81
  });
81
82
  };
82
83
  const onPreview = () => emit("preview");
84
+ const onReupload = () => emit("reupload");
83
85
  const renderDeleteIcon = () => {
84
86
  if (props.deletable && props.item.status !== "uploading") {
85
87
  const slot = slots["preview-delete"];
@@ -115,7 +117,8 @@ var stdin_default = (0, import_vue2.defineComponent)({
115
117
  item,
116
118
  lazyLoad,
117
119
  imageFit,
118
- previewSize
120
+ previewSize,
121
+ reupload
119
122
  } = props;
120
123
  if ((0, import_utils.isImageFile)(item)) {
121
124
  return (0, import_vue.createVNode)(import_image.Image, {
@@ -125,7 +128,7 @@ var stdin_default = (0, import_vue2.defineComponent)({
125
128
  "width": Array.isArray(previewSize) ? previewSize[0] : previewSize,
126
129
  "height": Array.isArray(previewSize) ? previewSize[1] : previewSize,
127
130
  "lazyLoad": lazyLoad,
128
- "onClick": onPreview
131
+ "onClick": reupload ? onReupload : onPreview
129
132
  }, {
130
133
  default: renderCover
131
134
  });
@@ -34,6 +34,7 @@ export declare const Uploader: import("../utils").WithInstall<import("vue").Defi
34
34
  type: BooleanConstructor;
35
35
  default: true;
36
36
  };
37
+ reupload: BooleanConstructor;
37
38
  afterRead: import("vue").PropType<import("./types").UploaderAfterRead>;
38
39
  showUpload: {
39
40
  type: BooleanConstructor;
@@ -59,7 +60,7 @@ export declare const Uploader: import("../utils").WithInstall<import("vue").Defi
59
60
  type: import("vue").PropType<import("./types").UploaderMaxSize>;
60
61
  default: number;
61
62
  };
62
- }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:modelValue" | "delete" | "oversize" | "clickUpload" | "closePreview" | "clickPreview")[], "update:modelValue" | "delete" | "oversize" | "clickUpload" | "closePreview" | "clickPreview", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
63
+ }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:modelValue" | "delete" | "oversize" | "clickUpload" | "closePreview" | "clickPreview" | "clickReupload")[], "update:modelValue" | "delete" | "oversize" | "clickUpload" | "closePreview" | "clickPreview" | "clickReupload", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
63
64
  name: {
64
65
  type: (NumberConstructor | StringConstructor)[];
65
66
  default: string;
@@ -94,6 +95,7 @@ export declare const Uploader: import("../utils").WithInstall<import("vue").Defi
94
95
  type: BooleanConstructor;
95
96
  default: true;
96
97
  };
98
+ reupload: BooleanConstructor;
97
99
  afterRead: import("vue").PropType<import("./types").UploaderAfterRead>;
98
100
  showUpload: {
99
101
  type: BooleanConstructor;
@@ -126,6 +128,7 @@ export declare const Uploader: import("../utils").WithInstall<import("vue").Defi
126
128
  onClickUpload?: ((...args: any[]) => any) | undefined;
127
129
  onClosePreview?: ((...args: any[]) => any) | undefined;
128
130
  onClickPreview?: ((...args: any[]) => any) | undefined;
131
+ onClickReupload?: ((...args: any[]) => any) | undefined;
129
132
  }, {
130
133
  name: string | number;
131
134
  accept: string;
@@ -139,6 +142,7 @@ export declare const Uploader: import("../utils").WithInstall<import("vue").Defi
139
142
  resultType: import("./types").UploaderResultType;
140
143
  uploadIcon: string;
141
144
  deletable: boolean;
145
+ reupload: boolean;
142
146
  showUpload: boolean;
143
147
  previewImage: boolean;
144
148
  previewFullImage: boolean;
@@ -12,6 +12,7 @@ export type UploaderFileListItem = {
12
12
  message?: string;
13
13
  imageFit?: ImageFit;
14
14
  deletable?: boolean;
15
+ reupload?: boolean;
15
16
  previewSize?: Numeric;
16
17
  beforeDelete?: Interceptor;
17
18
  };