persagy-vant 0.0.42 → 0.0.44

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 (67) hide show
  1. package/es/action-sheet/ActionSheet.d.ts +4 -0
  2. package/es/action-sheet/ActionSheet.mjs +4 -1
  3. package/es/action-sheet/index.css +1 -1
  4. package/es/action-sheet/index.d.ts +3 -0
  5. package/es/action-sheet/index.less +4 -0
  6. package/es/index.d.ts +1 -1
  7. package/es/index.mjs +1 -1
  8. package/es/locale/lang/en-US.d.ts +6 -0
  9. package/es/locale/lang/en-US.mjs +6 -0
  10. package/es/locale/lang/zh-CN.d.ts +6 -0
  11. package/es/locale/lang/zh-CN.mjs +6 -0
  12. package/es/object-select/ObjectSelect.d.ts +7 -2
  13. package/es/object-select/ObjectSelect.mjs +26 -13
  14. package/es/object-select/index.d.ts +5 -1
  15. package/es/tree-select/TreeSelect.d.ts +7 -1
  16. package/es/tree-select/TreeSelect.mjs +107 -54
  17. package/es/tree-select/index.css +1 -1
  18. package/es/tree-select/index.d.ts +6 -2
  19. package/es/tree-select/index.less +6 -0
  20. package/es/tree-select/style/index.mjs +1 -0
  21. package/es/tree-select/style/less.mjs +1 -0
  22. package/es/uploader/Uploader.d.ts +6 -1
  23. package/es/uploader/Uploader.mjs +80 -19
  24. package/es/uploader/index.css +1 -1
  25. package/es/uploader/index.d.ts +6 -2
  26. package/es/uploader/index.less +4 -0
  27. package/es/uploader/style/index.mjs +3 -0
  28. package/es/uploader/style/less.mjs +3 -0
  29. package/es/uploader/types.d.ts +2 -1
  30. package/lib/action-sheet/ActionSheet.d.ts +4 -0
  31. package/lib/action-sheet/ActionSheet.js +4 -1
  32. package/lib/action-sheet/index.css +1 -1
  33. package/lib/action-sheet/index.d.ts +3 -0
  34. package/lib/action-sheet/index.less +4 -0
  35. package/lib/index.css +1 -1
  36. package/lib/index.d.ts +1 -1
  37. package/lib/index.js +1 -1
  38. package/lib/locale/lang/en-US.d.ts +6 -0
  39. package/lib/locale/lang/en-US.js +6 -0
  40. package/lib/locale/lang/zh-CN.d.ts +6 -0
  41. package/lib/locale/lang/zh-CN.js +6 -0
  42. package/lib/object-select/ObjectSelect.d.ts +7 -2
  43. package/lib/object-select/ObjectSelect.js +25 -12
  44. package/lib/object-select/index.d.ts +5 -1
  45. package/lib/tree-select/TreeSelect.d.ts +7 -1
  46. package/lib/tree-select/TreeSelect.js +107 -52
  47. package/lib/tree-select/index.css +1 -1
  48. package/lib/tree-select/index.d.ts +6 -2
  49. package/lib/tree-select/index.less +6 -0
  50. package/lib/tree-select/style/index.js +1 -0
  51. package/lib/tree-select/style/less.js +1 -0
  52. package/lib/uploader/Uploader.d.ts +6 -1
  53. package/lib/uploader/Uploader.js +79 -18
  54. package/lib/uploader/index.css +1 -1
  55. package/lib/uploader/index.d.ts +6 -2
  56. package/lib/uploader/index.less +4 -0
  57. package/lib/uploader/style/index.js +3 -0
  58. package/lib/uploader/style/less.js +3 -0
  59. package/lib/uploader/types.d.ts +2 -1
  60. package/lib/vant.cjs.js +232 -98
  61. package/lib/vant.es.js +233 -99
  62. package/lib/vant.js +232 -98
  63. package/lib/vant.min.js +1 -1
  64. package/lib/web-types.json +1 -1
  65. package/package.json +1 -1
  66. package/skills/use-persagy-vant/references/business-component-catalog.md +1 -1
  67. package/skills/use-persagy-vant/references/component-catalog.md +2 -2
@@ -14,6 +14,7 @@ declare const uploaderProps: {
14
14
  };
15
15
  capture: StringConstructor;
16
16
  multiple: BooleanConstructor;
17
+ sourcePicker: BooleanConstructor;
17
18
  label: StringConstructor;
18
19
  required: BooleanConstructor;
19
20
  disabled: BooleanConstructor;
@@ -79,6 +80,7 @@ declare const _default: import("vue").DefineComponent<{
79
80
  };
80
81
  capture: StringConstructor;
81
82
  multiple: BooleanConstructor;
83
+ sourcePicker: BooleanConstructor;
82
84
  label: StringConstructor;
83
85
  required: BooleanConstructor;
84
86
  disabled: BooleanConstructor;
@@ -131,7 +133,7 @@ declare const _default: import("vue").DefineComponent<{
131
133
  type: PropType<UploaderMaxSize>;
132
134
  default: number;
133
135
  };
134
- }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:modelValue" | "delete" | "oversize" | "click-upload" | "close-preview" | "click-preview")[], "update:modelValue" | "delete" | "oversize" | "click-upload" | "close-preview" | "click-preview", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
136
+ }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:modelValue" | "delete" | "oversize" | "click-upload" | "close-preview" | "click-preview" | "select-source")[], "update:modelValue" | "delete" | "oversize" | "click-upload" | "close-preview" | "click-preview" | "select-source", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
135
137
  name: {
136
138
  type: (NumberConstructor | StringConstructor)[];
137
139
  default: string;
@@ -142,6 +144,7 @@ declare const _default: import("vue").DefineComponent<{
142
144
  };
143
145
  capture: StringConstructor;
144
146
  multiple: BooleanConstructor;
147
+ sourcePicker: BooleanConstructor;
145
148
  label: StringConstructor;
146
149
  required: BooleanConstructor;
147
150
  disabled: BooleanConstructor;
@@ -201,6 +204,7 @@ declare const _default: import("vue").DefineComponent<{
201
204
  "onClick-upload"?: ((...args: any[]) => any) | undefined;
202
205
  "onClose-preview"?: ((...args: any[]) => any) | undefined;
203
206
  "onClick-preview"?: ((...args: any[]) => any) | undefined;
207
+ "onSelect-source"?: ((...args: any[]) => any) | undefined;
204
208
  }, {
205
209
  required: boolean;
206
210
  name: string | number;
@@ -210,6 +214,7 @@ declare const _default: import("vue").DefineComponent<{
210
214
  readonly: boolean;
211
215
  multiple: boolean;
212
216
  lazyLoad: boolean;
217
+ sourcePicker: boolean;
213
218
  maxCount: string | number;
214
219
  imageFit: ImageFit;
215
220
  resultType: UploaderResultType;
@@ -56,6 +56,7 @@ var import_utils2 = require("./utils");
56
56
  var import_use = require("@vant/use");
57
57
  var import_use_expose = require("../composables/use-expose");
58
58
  var import_icon = require("../icon");
59
+ var import_action_sheet = require("../action-sheet");
59
60
  var import_image_preview = require("../image-preview");
60
61
  var import_UploaderPreviewItem = __toESM(require("./UploaderPreviewItem"));
61
62
  const uploaderProps = {
@@ -63,6 +64,7 @@ const uploaderProps = {
63
64
  accept: (0, import_utils.makeStringProp)("image/*"),
64
65
  capture: String,
65
66
  multiple: Boolean,
67
+ sourcePicker: Boolean,
66
68
  label: String,
67
69
  required: Boolean,
68
70
  disabled: Boolean,
@@ -92,21 +94,26 @@ const uploaderProps = {
92
94
  var stdin_default = (0, import_vue.defineComponent)({
93
95
  name: import_utils2.name,
94
96
  props: uploaderProps,
95
- emits: ["delete", "oversize", "click-upload", "close-preview", "click-preview", "update:modelValue"],
97
+ emits: ["delete", "oversize", "click-upload", "close-preview", "click-preview", "select-source", "update:modelValue"],
96
98
  setup(props, {
97
99
  emit,
98
100
  slots
99
101
  }) {
100
102
  const inputRef = (0, import_vue.ref)();
103
+ const cameraInputRef = (0, import_vue.ref)();
104
+ const videoInputRef = (0, import_vue.ref)();
105
+ const sourcePickerVisible = (0, import_vue.ref)(false);
101
106
  const urls = [];
102
107
  const getDetail = (index = props.modelValue.length) => ({
103
108
  name: props.name,
104
109
  index
105
110
  });
106
111
  const resetInput = () => {
107
- if (inputRef.value) {
108
- inputRef.value.value = "";
109
- }
112
+ [inputRef, cameraInputRef, videoInputRef].forEach((input) => {
113
+ if (input.value) {
114
+ input.value.value = "";
115
+ }
116
+ });
110
117
  };
111
118
  const onAfterRead = (items) => {
112
119
  resetInput();
@@ -242,21 +249,69 @@ var stdin_default = (0, import_vue.defineComponent)({
242
249
  "class": (0, import_utils2.bem)("required")
243
250
  }, [(0, import_vue.createTextVNode)("*")]), props.label]);
244
251
  };
245
- const onClickUpload = (event) => emit("click-upload", event);
252
+ const acceptTypes = () => props.accept.split(",").map((type) => type.trim().toLowerCase()).filter(Boolean);
253
+ const acceptsMediaType = (type) => acceptTypes().some((accept) => accept === `${type}/*` || accept.startsWith(`${type}/`));
254
+ const triggerInput = (source) => {
255
+ const target = source === "camera" ? cameraInputRef.value : source === "video" ? videoInputRef.value : inputRef.value;
256
+ if (target && !props.disabled && !props.readonly) {
257
+ emit("select-source", source);
258
+ target.click();
259
+ }
260
+ };
261
+ const onClickUpload = (event) => {
262
+ emit("click-upload", event);
263
+ if (props.sourcePicker && !props.disabled && !props.readonly) {
264
+ sourcePickerVisible.value = true;
265
+ }
266
+ };
267
+ const renderInput = (input, accept, capture, multiple = false, hidden = false) => (0, import_vue.createVNode)("input", {
268
+ "ref": input,
269
+ "type": "file",
270
+ "class": (0, import_utils2.bem)("input", {
271
+ hidden
272
+ }),
273
+ "accept": accept,
274
+ "capture": capture,
275
+ "multiple": multiple,
276
+ "disabled": props.disabled,
277
+ "onChange": onChange
278
+ }, null);
279
+ const renderSourcePicker = () => {
280
+ if (!props.sourcePicker)
281
+ return;
282
+ const actions = [];
283
+ if (acceptsMediaType("image")) {
284
+ actions.push({
285
+ name: (0, import_utils2.t)("takePhoto"),
286
+ callback: () => triggerInput("camera")
287
+ });
288
+ }
289
+ if (acceptsMediaType("video")) {
290
+ actions.push({
291
+ name: (0, import_utils2.t)("recordVideo"),
292
+ callback: () => triggerInput("video")
293
+ });
294
+ }
295
+ actions.push({
296
+ name: (0, import_utils2.t)("chooseFromAlbum"),
297
+ callback: () => triggerInput("album")
298
+ });
299
+ return (0, import_vue.createVNode)(import_action_sheet.ActionSheet, {
300
+ "show": sourcePickerVisible.value,
301
+ "title": (0, import_utils2.t)("sourcePickerTitle"),
302
+ "actions": actions,
303
+ "contentAdaptive": true,
304
+ "closeOnClickAction": true,
305
+ "onUpdate:show": (show) => {
306
+ sourcePickerVisible.value = show;
307
+ }
308
+ }, null);
309
+ };
246
310
  const renderUpload = () => {
247
311
  if (props.modelValue.length >= props.maxCount || !props.showUpload) {
248
312
  return;
249
313
  }
250
- const Input = props.readonly ? null : (0, import_vue.createVNode)("input", {
251
- "ref": inputRef,
252
- "type": "file",
253
- "class": (0, import_utils2.bem)("input"),
254
- "accept": props.accept,
255
- "capture": props.capture,
256
- "multiple": props.multiple,
257
- "disabled": props.disabled,
258
- "onChange": onChange
259
- }, null);
314
+ const Input = props.readonly ? null : props.sourcePicker ? [renderInput(inputRef, props.accept, void 0, props.multiple, true), acceptsMediaType("image") && renderInput(cameraInputRef, "image/*", props.capture || "environment", false, true), acceptsMediaType("video") && renderInput(videoInputRef, "video/*", props.capture || "environment", false, true)] : renderInput(inputRef, props.accept, props.capture, props.multiple);
260
315
  if (slots.default) {
261
316
  return (0, import_vue.createVNode)("div", {
262
317
  "class": (0, import_utils2.bem)("input-wrapper"),
@@ -276,8 +331,14 @@ var stdin_default = (0, import_vue.defineComponent)({
276
331
  "class": (0, import_utils2.bem)("upload-text")
277
332
  }, [props.uploadText]), Input]);
278
333
  };
279
- const chooseFile = () => {
280
- if (inputRef.value && !props.disabled) {
334
+ const chooseFile = (source) => {
335
+ if (props.disabled || props.readonly)
336
+ return;
337
+ if (source) {
338
+ triggerInput(source);
339
+ } else if (props.sourcePicker) {
340
+ sourcePickerVisible.value = true;
341
+ } else if (inputRef.value) {
281
342
  inputRef.value.click();
282
343
  }
283
344
  };
@@ -297,6 +358,6 @@ var stdin_default = (0, import_vue.defineComponent)({
297
358
  "class": (0, import_utils2.bem)("wrapper", {
298
359
  disabled: props.disabled
299
360
  })
300
- }, [props.uploadFirst ? (0, import_vue.createVNode)(import_vue.Fragment, null, [renderUpload(), renderPreviewList()]) : (0, import_vue.createVNode)(import_vue.Fragment, null, [renderPreviewList(), renderUpload()])])]);
361
+ }, [props.uploadFirst ? (0, import_vue.createVNode)(import_vue.Fragment, null, [renderUpload(), renderPreviewList()]) : (0, import_vue.createVNode)(import_vue.Fragment, null, [renderPreviewList(), renderUpload()])]), renderSourcePicker()]);
301
362
  }
302
363
  });
@@ -1 +1 @@
1
- :root{--van-uploader-size: 72px;--van-uploader-border-radius: 8px;--van-uploader-border: 1px solid var(--van-grey-50);--van-uploader-icon-size: 24px;--van-uploader-icon-color: var(--van-gray-4);--van-uploader-text-color: var(--van-text-color-2);--van-uploader-text-font-size: var(--van-font-size-sm);--van-uploader-upload-background-color: var(--van-gray-1);--van-uploader-upload-active-color: var(--van-active-color);--van-uploader-delete-color: var(--van-white);--van-uploader-delete-icon-size: 14px;--van-uploader-delete-background-color: rgba(0, 0, 0, .7);--van-uploader-file-background-color: var(--van-background-color);--van-uploader-file-icon-size: 20px;--van-uploader-file-icon-color: var(--van-gray-7);--van-uploader-file-name-padding: 0 var(--van-padding-base);--van-uploader-file-name-margin-top: var(--van-padding-xs);--van-uploader-file-name-font-size: var(--van-font-size-sm);--van-uploader-file-name-text-color: var(--van-gray-7);--van-uploader-mask-text-color: var(--van-white);--van-uploader-mask-background-color: rgba(50, 50, 51, .88);--van-uploader-mask-icon-size: 22px;--van-uploader-mask-message-font-size: var(--van-font-size-sm);--van-uploader-mask-message-line-height: var(--van-line-height-xs);--van-uploader-loading-icon-size: 22px;--van-uploader-loading-icon-color: var(--van-white);--van-uploader-disabled-opacity: var(--van-disabled-opacity);--van-uploader-required-color: var(--van-danger-color);--van-uploader-label-color: var(--van-text-color);--van-uploader-label-font-size: var(--van-font-size-md);--van-uploader-label-line-height: var(--van-line-height-md);--van-uploader-label-margin-bottom: var(--van-padding-sm)}.van-uploader{position:relative;display:inline-block}.van-uploader--required:before{position:absolute;top:0;left:calc(-1 * var(--van-padding-sm));color:var(--van-uploader-required-color);font-size:var(--van-font-size-md);line-height:var(--van-line-height-md);content:"*"}.van-uploader__label{position:relative;margin-bottom:var(--van-uploader-label-margin-bottom);color:var(--van-uploader-label-color);font-size:var(--van-uploader-label-font-size);line-height:var(--van-uploader-label-line-height)}.van-uploader__required{position:absolute;top:0;left:calc(-1 * (var(--van-padding-md) - var(--van-padding-xs)));color:var(--van-uploader-required-color)}.van-uploader__wrapper{display:flex;flex-wrap:wrap;gap:var(--van-padding-xs)}.van-uploader__wrapper--disabled{opacity:var(--van-uploader-disabled-opacity)}.van-uploader__input{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;cursor:pointer;opacity:0}.van-uploader__input-wrapper{position:relative}.van-uploader__input:disabled{cursor:not-allowed}.van-uploader__upload{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;width:var(--van-uploader-size);height:var(--van-uploader-size);background:var(--van-uploader-upload-background-color);border-radius:var(--van-uploader-border-radius);border:var(--van-uploader-border)}.van-uploader__upload:active{background-color:var(--van-uploader-upload-active-color)}.van-uploader__upload--readonly:active{background-color:var(--van-uploader-upload-background-color)}.van-uploader__upload-icon{color:var(--van-uploader-icon-color);font-size:var(--van-uploader-icon-size)}.van-uploader__upload-text{margin-top:var(--van-padding-xs);color:var(--van-uploader-text-color);font-size:var(--van-uploader-text-font-size)}.van-uploader__preview{position:relative;cursor:pointer;border-radius:var(--van-uploader-border-radius);overflow:hidden}.van-uploader__preview-image{display:block;width:var(--van-uploader-size);height:var(--van-uploader-size);border-radius:var(--van-uploader-border-radius);border:var(--van-uploader-border);overflow:hidden;box-sizing:border-box}.van-uploader__preview-delete{position:absolute;top:0;right:0}.van-uploader__preview-delete--shadow{width:var(--van-uploader-delete-icon-size);height:var(--van-uploader-delete-icon-size);background:var(--van-uploader-delete-background-color);border-radius:0 0 0 12px}.van-uploader__preview-delete-icon{position:absolute;top:0;right:0;color:var(--van-uploader-delete-color);font-size:var(--van-uploader-delete-icon-size);transform:scale(.7) translate(10%,-10%)}.van-uploader__preview-cover{position:absolute;top:0;right:0;bottom:0;left:0}.van-uploader__mask{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--van-uploader-mask-text-color);background:var(--van-uploader-mask-background-color);border-radius:var(--van-uploader-border-radius);border:var(--van-uploader-border)}.van-uploader__mask-icon{font-size:var(--van-uploader-mask-icon-size)}.van-uploader__mask-message{margin-top:6px;padding:0 var(--van-padding-base);font-size:var(--van-uploader-mask-message-font-size);line-height:var(--van-uploader-mask-message-line-height)}.van-uploader__loading{width:var(--van-uploader-loading-icon-size);height:var(--van-uploader-loading-icon-size);color:var(--van-uploader-loading-icon-color)}.van-uploader__file{display:flex;flex-direction:column;align-items:center;justify-content:center;width:var(--van-uploader-size);height:var(--van-uploader-size);background:var(--van-uploader-file-background-color)}.van-uploader__file-icon{color:var(--van-uploader-file-icon-color);font-size:var(--van-uploader-file-icon-size)}.van-uploader__file-name{box-sizing:border-box;width:100%;margin-top:var(--van-uploader-file-name-margin-top);padding:var(--van-uploader-file-name-padding);color:var(--van-uploader-file-name-text-color);font-size:var(--van-uploader-file-name-font-size);text-align:center}
1
+ :root{--van-uploader-size: 72px;--van-uploader-border-radius: 8px;--van-uploader-border: 1px solid var(--van-grey-50);--van-uploader-icon-size: 24px;--van-uploader-icon-color: var(--van-gray-4);--van-uploader-text-color: var(--van-text-color-2);--van-uploader-text-font-size: var(--van-font-size-sm);--van-uploader-upload-background-color: var(--van-gray-1);--van-uploader-upload-active-color: var(--van-active-color);--van-uploader-delete-color: var(--van-white);--van-uploader-delete-icon-size: 14px;--van-uploader-delete-background-color: rgba(0, 0, 0, .7);--van-uploader-file-background-color: var(--van-background-color);--van-uploader-file-icon-size: 20px;--van-uploader-file-icon-color: var(--van-gray-7);--van-uploader-file-name-padding: 0 var(--van-padding-base);--van-uploader-file-name-margin-top: var(--van-padding-xs);--van-uploader-file-name-font-size: var(--van-font-size-sm);--van-uploader-file-name-text-color: var(--van-gray-7);--van-uploader-mask-text-color: var(--van-white);--van-uploader-mask-background-color: rgba(50, 50, 51, .88);--van-uploader-mask-icon-size: 22px;--van-uploader-mask-message-font-size: var(--van-font-size-sm);--van-uploader-mask-message-line-height: var(--van-line-height-xs);--van-uploader-loading-icon-size: 22px;--van-uploader-loading-icon-color: var(--van-white);--van-uploader-disabled-opacity: var(--van-disabled-opacity);--van-uploader-required-color: var(--van-danger-color);--van-uploader-label-color: var(--van-text-color);--van-uploader-label-font-size: var(--van-font-size-md);--van-uploader-label-line-height: var(--van-line-height-md);--van-uploader-label-margin-bottom: var(--van-padding-sm)}.van-uploader{position:relative;display:inline-block}.van-uploader--required:before{position:absolute;top:0;left:calc(-1 * var(--van-padding-sm));color:var(--van-uploader-required-color);font-size:var(--van-font-size-md);line-height:var(--van-line-height-md);content:"*"}.van-uploader__label{position:relative;margin-bottom:var(--van-uploader-label-margin-bottom);color:var(--van-uploader-label-color);font-size:var(--van-uploader-label-font-size);line-height:var(--van-uploader-label-line-height)}.van-uploader__required{position:absolute;top:0;left:calc(-1 * (var(--van-padding-md) - var(--van-padding-xs)));color:var(--van-uploader-required-color)}.van-uploader__wrapper{display:flex;flex-wrap:wrap;gap:var(--van-padding-xs)}.van-uploader__wrapper--disabled{opacity:var(--van-uploader-disabled-opacity)}.van-uploader__input{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;cursor:pointer;opacity:0}.van-uploader__input--hidden{display:none}.van-uploader__input-wrapper{position:relative}.van-uploader__input:disabled{cursor:not-allowed}.van-uploader__upload{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;width:var(--van-uploader-size);height:var(--van-uploader-size);background:var(--van-uploader-upload-background-color);border-radius:var(--van-uploader-border-radius);border:var(--van-uploader-border)}.van-uploader__upload:active{background-color:var(--van-uploader-upload-active-color)}.van-uploader__upload--readonly:active{background-color:var(--van-uploader-upload-background-color)}.van-uploader__upload-icon{color:var(--van-uploader-icon-color);font-size:var(--van-uploader-icon-size)}.van-uploader__upload-text{margin-top:var(--van-padding-xs);color:var(--van-uploader-text-color);font-size:var(--van-uploader-text-font-size)}.van-uploader__preview{position:relative;cursor:pointer;border-radius:var(--van-uploader-border-radius);overflow:hidden}.van-uploader__preview-image{display:block;width:var(--van-uploader-size);height:var(--van-uploader-size);border-radius:var(--van-uploader-border-radius);border:var(--van-uploader-border);overflow:hidden;box-sizing:border-box}.van-uploader__preview-delete{position:absolute;top:0;right:0}.van-uploader__preview-delete--shadow{width:var(--van-uploader-delete-icon-size);height:var(--van-uploader-delete-icon-size);background:var(--van-uploader-delete-background-color);border-radius:0 0 0 12px}.van-uploader__preview-delete-icon{position:absolute;top:0;right:0;color:var(--van-uploader-delete-color);font-size:var(--van-uploader-delete-icon-size);transform:scale(.7) translate(10%,-10%)}.van-uploader__preview-cover{position:absolute;top:0;right:0;bottom:0;left:0}.van-uploader__mask{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--van-uploader-mask-text-color);background:var(--van-uploader-mask-background-color);border-radius:var(--van-uploader-border-radius);border:var(--van-uploader-border)}.van-uploader__mask-icon{font-size:var(--van-uploader-mask-icon-size)}.van-uploader__mask-message{margin-top:6px;padding:0 var(--van-padding-base);font-size:var(--van-uploader-mask-message-font-size);line-height:var(--van-uploader-mask-message-line-height)}.van-uploader__loading{width:var(--van-uploader-loading-icon-size);height:var(--van-uploader-loading-icon-size);color:var(--van-uploader-loading-icon-color)}.van-uploader__file{display:flex;flex-direction:column;align-items:center;justify-content:center;width:var(--van-uploader-size);height:var(--van-uploader-size);background:var(--van-uploader-file-background-color)}.van-uploader__file-icon{color:var(--van-uploader-file-icon-color);font-size:var(--van-uploader-file-icon-size)}.van-uploader__file-name{box-sizing:border-box;width:100%;margin-top:var(--van-uploader-file-name-margin-top);padding:var(--van-uploader-file-name-padding);color:var(--van-uploader-file-name-text-color);font-size:var(--van-uploader-file-name-font-size);text-align:center}
@@ -10,6 +10,7 @@ export declare const Uploader: import("../utils").WithInstall<import("vue").Defi
10
10
  };
11
11
  capture: StringConstructor;
12
12
  multiple: BooleanConstructor;
13
+ sourcePicker: BooleanConstructor;
13
14
  label: StringConstructor;
14
15
  required: BooleanConstructor;
15
16
  disabled: BooleanConstructor;
@@ -62,7 +63,7 @@ export declare const Uploader: import("../utils").WithInstall<import("vue").Defi
62
63
  type: import("vue").PropType<import("./types").UploaderMaxSize>;
63
64
  default: number;
64
65
  };
65
- }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:modelValue" | "delete" | "oversize" | "click-upload" | "close-preview" | "click-preview")[], "update:modelValue" | "delete" | "oversize" | "click-upload" | "close-preview" | "click-preview", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
66
+ }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:modelValue" | "delete" | "oversize" | "click-upload" | "close-preview" | "click-preview" | "select-source")[], "update:modelValue" | "delete" | "oversize" | "click-upload" | "close-preview" | "click-preview" | "select-source", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
66
67
  name: {
67
68
  type: (NumberConstructor | StringConstructor)[];
68
69
  default: string;
@@ -73,6 +74,7 @@ export declare const Uploader: import("../utils").WithInstall<import("vue").Defi
73
74
  };
74
75
  capture: StringConstructor;
75
76
  multiple: BooleanConstructor;
77
+ sourcePicker: BooleanConstructor;
76
78
  label: StringConstructor;
77
79
  required: BooleanConstructor;
78
80
  disabled: BooleanConstructor;
@@ -132,6 +134,7 @@ export declare const Uploader: import("../utils").WithInstall<import("vue").Defi
132
134
  "onClick-upload"?: ((...args: any[]) => any) | undefined;
133
135
  "onClose-preview"?: ((...args: any[]) => any) | undefined;
134
136
  "onClick-preview"?: ((...args: any[]) => any) | undefined;
137
+ "onSelect-source"?: ((...args: any[]) => any) | undefined;
135
138
  }, {
136
139
  required: boolean;
137
140
  name: string | number;
@@ -141,6 +144,7 @@ export declare const Uploader: import("../utils").WithInstall<import("vue").Defi
141
144
  readonly: boolean;
142
145
  multiple: boolean;
143
146
  lazyLoad: boolean;
147
+ sourcePicker: boolean;
144
148
  maxCount: string | number;
145
149
  imageFit: import("..").ImageFit;
146
150
  resultType: import("./types").UploaderResultType;
@@ -154,7 +158,7 @@ export declare const Uploader: import("../utils").WithInstall<import("vue").Defi
154
158
  }>>;
155
159
  export default Uploader;
156
160
  export type { UploaderProps };
157
- export type { UploaderInstance, UploaderResultType, UploaderFileListItem, } from './types';
161
+ export type { UploaderInstance, UploaderResultType, UploaderSourceType, UploaderFileListItem, } from './types';
158
162
  declare module 'vue' {
159
163
  interface GlobalComponents {
160
164
  VanUploader: typeof Uploader;
@@ -84,6 +84,10 @@
84
84
  cursor: pointer;
85
85
  opacity: 0;
86
86
 
87
+ &--hidden {
88
+ display: none;
89
+ }
90
+
87
91
  &-wrapper {
88
92
  position: relative;
89
93
  }
@@ -5,6 +5,9 @@ require("../../image/index.css");
5
5
  require("../../loading/index.css");
6
6
  require("../../overlay/index.css");
7
7
  require("../../popup/index.css");
8
+ require("../../popover/index.css");
9
+ require("../../nav-bar/index.css");
10
+ require("../../action-sheet/index.css");
8
11
  require("../../swipe/index.css");
9
12
  require("../../swipe-item/index.css");
10
13
  require("../../image-preview/index.css");
@@ -5,6 +5,9 @@ require("../../image/index.less");
5
5
  require("../../loading/index.less");
6
6
  require("../../overlay/index.less");
7
7
  require("../../popup/index.less");
8
+ require("../../popover/index.less");
9
+ require("../../nav-bar/index.less");
10
+ require("../../action-sheet/index.less");
8
11
  require("../../swipe/index.less");
9
12
  require("../../swipe-item/index.less");
10
13
  require("../../image-preview/index.less");
@@ -3,6 +3,7 @@ import type { ImageFit } from '../image';
3
3
  import type { Numeric, Interceptor } from '../utils';
4
4
  import type { UploaderProps } from './Uploader';
5
5
  export declare type UploaderResultType = 'dataUrl' | 'text' | 'file';
6
+ export declare type UploaderSourceType = 'camera' | 'video' | 'album';
6
7
  export declare type UploaderFileListItem = {
7
8
  url?: string;
8
9
  file?: File;
@@ -26,7 +27,7 @@ export declare type UploaderAfterRead = (items: UploaderFileListItem | UploaderF
26
27
  index: number;
27
28
  }) => void;
28
29
  export declare type UploaderExpose = {
29
- chooseFile: () => void;
30
+ chooseFile: (source?: UploaderSourceType) => void;
30
31
  closeImagePreview: () => void;
31
32
  };
32
33
  export declare type UploaderInstance = ComponentPublicInstance<UploaderProps, UploaderExpose>;