persagy-vant 0.0.41 → 0.0.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) 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/blue-mark/BlueMarkHeader.d.ts +13 -0
  7. package/es/blue-mark/BlueMarkHeader.mjs +3 -1
  8. package/es/blue-mark/CollapseToggle.d.ts +13 -0
  9. package/es/blue-mark/CollapseToggle.mjs +5 -1
  10. package/es/blue-mark/index.d.ts +18 -0
  11. package/es/checkbox-panel/CheckboxPanel.d.ts +41 -1
  12. package/es/checkbox-panel/CheckboxPanel.mjs +87 -25
  13. package/es/checkbox-panel/index.css +1 -1
  14. package/es/checkbox-panel/index.d.ts +29 -1
  15. package/es/checkbox-panel/index.less +82 -1
  16. package/es/index.d.ts +2 -1
  17. package/es/index.mjs +4 -1
  18. package/es/locale/lang/en-US.d.ts +9 -0
  19. package/es/locale/lang/en-US.mjs +9 -0
  20. package/es/locale/lang/zh-CN.d.ts +9 -0
  21. package/es/locale/lang/zh-CN.mjs +9 -0
  22. package/es/material-action-bar/MaterialActionBar.mjs +3 -1
  23. package/es/material-action-bar/index.css +1 -1
  24. package/es/material-action-bar/index.less +1 -1
  25. package/es/material-add/index.css +1 -1
  26. package/es/notice-bar/index.css +1 -1
  27. package/es/notice-bar/index.less +13 -0
  28. package/es/tabs/Tabs.mjs +3 -2
  29. package/es/tabs/index.css +1 -1
  30. package/es/tabs/index.less +15 -5
  31. package/es/tabs/var.less +1 -0
  32. package/es/title-bar/TitleBar.d.ts +15 -1
  33. package/es/title-bar/TitleBar.mjs +2 -0
  34. package/es/title-bar/index.css +1 -1
  35. package/es/title-bar/index.d.ts +10 -1
  36. package/es/title-bar/index.less +6 -1
  37. package/es/title-bar/var.less +2 -1
  38. package/es/tree-select/TreeSelect.d.ts +3 -0
  39. package/es/tree-select/TreeSelect.mjs +18 -2
  40. package/es/tree-select/index.d.ts +2 -0
  41. package/es/tree-select-panel/TreeSelectPanel.d.ts +181 -0
  42. package/es/tree-select-panel/TreeSelectPanel.mjs +213 -0
  43. package/es/tree-select-panel/index.css +1 -0
  44. package/es/tree-select-panel/index.d.ts +134 -0
  45. package/es/tree-select-panel/index.less +107 -0
  46. package/es/tree-select-panel/index.mjs +8 -0
  47. package/es/tree-select-panel/style/index.mjs +23 -0
  48. package/es/tree-select-panel/style/less.mjs +23 -0
  49. package/es/uploader/Uploader.d.ts +6 -1
  50. package/es/uploader/Uploader.mjs +80 -19
  51. package/es/uploader/index.css +1 -1
  52. package/es/uploader/index.d.ts +6 -2
  53. package/es/uploader/index.less +4 -0
  54. package/es/uploader/style/index.mjs +3 -0
  55. package/es/uploader/style/less.mjs +3 -0
  56. package/es/uploader/types.d.ts +2 -1
  57. package/lib/action-sheet/ActionSheet.d.ts +4 -0
  58. package/lib/action-sheet/ActionSheet.js +4 -1
  59. package/lib/action-sheet/index.css +1 -1
  60. package/lib/action-sheet/index.d.ts +3 -0
  61. package/lib/action-sheet/index.less +4 -0
  62. package/lib/blue-mark/BlueMarkHeader.d.ts +13 -0
  63. package/lib/blue-mark/BlueMarkHeader.js +2 -0
  64. package/lib/blue-mark/CollapseToggle.d.ts +13 -0
  65. package/lib/blue-mark/CollapseToggle.js +5 -1
  66. package/lib/blue-mark/index.d.ts +18 -0
  67. package/lib/checkbox-panel/CheckboxPanel.d.ts +41 -1
  68. package/lib/checkbox-panel/CheckboxPanel.js +86 -24
  69. package/lib/checkbox-panel/index.css +1 -1
  70. package/lib/checkbox-panel/index.d.ts +29 -1
  71. package/lib/checkbox-panel/index.less +82 -1
  72. package/lib/index.css +1 -1
  73. package/lib/index.d.ts +2 -1
  74. package/lib/index.js +4 -1
  75. package/lib/index.less +1 -0
  76. package/lib/locale/lang/en-US.d.ts +9 -0
  77. package/lib/locale/lang/en-US.js +9 -0
  78. package/lib/locale/lang/zh-CN.d.ts +9 -0
  79. package/lib/locale/lang/zh-CN.js +9 -0
  80. package/lib/material-action-bar/MaterialActionBar.js +3 -1
  81. package/lib/material-action-bar/index.css +1 -1
  82. package/lib/material-action-bar/index.less +1 -1
  83. package/lib/material-add/index.css +1 -1
  84. package/lib/notice-bar/index.css +1 -1
  85. package/lib/notice-bar/index.less +13 -0
  86. package/lib/tabs/Tabs.js +3 -2
  87. package/lib/tabs/index.css +1 -1
  88. package/lib/tabs/index.less +15 -5
  89. package/lib/tabs/var.less +1 -0
  90. package/lib/title-bar/TitleBar.d.ts +15 -1
  91. package/lib/title-bar/TitleBar.js +2 -0
  92. package/lib/title-bar/index.css +1 -1
  93. package/lib/title-bar/index.d.ts +10 -1
  94. package/lib/title-bar/index.less +6 -1
  95. package/lib/title-bar/var.less +2 -1
  96. package/lib/tree-select/TreeSelect.d.ts +3 -0
  97. package/lib/tree-select/TreeSelect.js +18 -2
  98. package/lib/tree-select/index.d.ts +2 -0
  99. package/lib/tree-select-panel/TreeSelectPanel.d.ts +181 -0
  100. package/lib/tree-select-panel/TreeSelectPanel.js +232 -0
  101. package/lib/tree-select-panel/index.css +1 -0
  102. package/lib/tree-select-panel/index.d.ts +134 -0
  103. package/lib/tree-select-panel/index.js +37 -0
  104. package/lib/tree-select-panel/index.less +107 -0
  105. package/lib/tree-select-panel/style/index.js +23 -0
  106. package/lib/tree-select-panel/style/less.js +23 -0
  107. package/lib/uploader/Uploader.d.ts +6 -1
  108. package/lib/uploader/Uploader.js +79 -18
  109. package/lib/uploader/index.css +1 -1
  110. package/lib/uploader/index.d.ts +6 -2
  111. package/lib/uploader/index.less +4 -0
  112. package/lib/uploader/style/index.js +3 -0
  113. package/lib/uploader/style/less.js +3 -0
  114. package/lib/uploader/types.d.ts +2 -1
  115. package/lib/vant.cjs.js +1663 -1300
  116. package/lib/vant.es.js +1663 -1300
  117. package/lib/vant.js +1663 -1300
  118. package/lib/vant.min.js +1 -1
  119. package/lib/web-types.json +1 -1
  120. package/package.json +1 -1
  121. package/skills/use-persagy-vant/references/component-catalog.md +1 -1
@@ -0,0 +1,107 @@
1
+ .van-tree-select-panel {
2
+ box-sizing: border-box;
3
+ display: flex;
4
+ height: calc(100% - 96px);
5
+ max-height: calc(100% - 96px);
6
+ overflow: hidden;
7
+ background: var(--van-gray-1);
8
+
9
+ .van-action-sheet__content,
10
+ &__content {
11
+ display: flex;
12
+ flex: 1;
13
+ flex-direction: column;
14
+ min-height: 0;
15
+ padding: 0;
16
+ overflow: hidden;
17
+ background: var(--van-gray-1);
18
+ }
19
+
20
+ &__nav {
21
+ flex: none;
22
+ --van-nav-bar-background-color: var(--van-gray-1);
23
+ .van-nav-bar__left--slot { padding: 0; }
24
+ .van-nav-bar__left--slot { left: var(--van-padding-md); }
25
+ }
26
+
27
+ &__search-wrapper { margin: 0 var(--van-padding-md) 6px; }
28
+
29
+ &__body { flex: 1; min-height: 0; padding: 0 var(--van-padding-md) var(--van-padding-md); overflow-y: auto; }
30
+ &__footer {
31
+ position: relative;
32
+ flex: none;
33
+ background: var(--van-white);
34
+ box-shadow: 0 -2px 5px rgb(27 33 41 / 10%);
35
+
36
+ .van-bottom-action-bar { box-shadow: none; }
37
+ }
38
+ &__selected-panel {
39
+ position: absolute;
40
+ right: 0;
41
+ bottom: 60px;
42
+ left: 0;
43
+ display: flex;
44
+ flex-direction: column;
45
+ max-height: min(340px, calc(100vh - 156px));
46
+ overflow: hidden;
47
+ background: var(--van-white);
48
+ box-shadow: 0 -2px 5px rgb(27 33 41 / 10%);
49
+ }
50
+ &__selected-header {
51
+ display: flex;
52
+ flex: none;
53
+ align-items: center;
54
+ justify-content: space-between;
55
+ padding: 12px var(--van-padding-md) 4px;
56
+ }
57
+ &__clear,
58
+ &__collapse {
59
+ display: inline-flex;
60
+ align-items: center;
61
+ padding: 0;
62
+ font: inherit;
63
+ font-size: var(--van-font-size-md);
64
+ line-height: var(--van-line-height-lg);
65
+ background: transparent;
66
+ border: 0;
67
+ }
68
+ &__clear { color: var(--van-primary-color); }
69
+ &__collapse,
70
+ &__remove {
71
+ color: var(--van-gray-6);
72
+
73
+ .van-icon { color: var(--van-gray-6); }
74
+ }
75
+ &__collapse { gap: 2px; }
76
+ &__selected-list {
77
+ display: flex;
78
+ flex: 0 1 auto;
79
+ flex-direction: column;
80
+ gap: 6px;
81
+ min-height: 0;
82
+ padding: var(--van-padding-xs) var(--van-padding-md);
83
+ overflow-y: auto;
84
+ overscroll-behavior: contain;
85
+ }
86
+ &__selected-item {
87
+ flex: none;
88
+ min-height: 44px;
89
+ padding: 11px var(--van-padding-md);
90
+ background: var(--van-gray-1);
91
+ border-radius: 8px;
92
+ }
93
+ &__remove {
94
+ display: inline-flex;
95
+ align-self: flex-start;
96
+ align-items: center;
97
+ justify-content: center;
98
+ width: 22px;
99
+ height: 22px;
100
+ padding: 0;
101
+ background: transparent;
102
+ border: 0;
103
+ }
104
+ &__card { overflow: hidden; background: var(--van-white); border-radius: var(--van-border-radius-lg); }
105
+ &__match { color: var(--van-primary-color); }
106
+ .van-list { min-height: 100%; }
107
+ }
@@ -0,0 +1,23 @@
1
+ require("../../style/base.css");
2
+ require("../../badge/index.css");
3
+ require("../../icon/index.css");
4
+ require("../../tag/index.css");
5
+ require("../../loading/index.css");
6
+ require("../../list/index.css");
7
+ require("../../button/index.css");
8
+ require("../../overlay/index.css");
9
+ require("../../popup/index.css");
10
+ require("../../popover/index.css");
11
+ require("../../nav-bar/index.css");
12
+ require("../../action-sheet/index.css");
13
+ require("../../checkbox-group/index.css");
14
+ require("../../checkbox/index.css");
15
+ require("../../bottom-action-bar/index.css");
16
+ require("../../radio-group/index.css");
17
+ require("../../radio/index.css");
18
+ require("../../cell/index.css");
19
+ require("../../tree-select/index.css");
20
+ require("../../field/index.css");
21
+ require("../../search/index.css");
22
+ require("../../empty/index.css");
23
+ require("../index.css");
@@ -0,0 +1,23 @@
1
+ require("../../style/base.less");
2
+ require("../../badge/index.less");
3
+ require("../../icon/index.less");
4
+ require("../../tag/index.less");
5
+ require("../../loading/index.less");
6
+ require("../../list/index.less");
7
+ require("../../button/index.less");
8
+ require("../../overlay/index.less");
9
+ require("../../popup/index.less");
10
+ require("../../popover/index.less");
11
+ require("../../nav-bar/index.less");
12
+ require("../../action-sheet/index.less");
13
+ require("../../checkbox-group/index.less");
14
+ require("../../checkbox/index.less");
15
+ require("../../bottom-action-bar/index.less");
16
+ require("../../radio-group/index.less");
17
+ require("../../radio/index.less");
18
+ require("../../cell/index.less");
19
+ require("../../tree-select/index.less");
20
+ require("../../field/index.less");
21
+ require("../../search/index.less");
22
+ require("../../empty/index.less");
23
+ require("../index.less");
@@ -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>;