zartui 3.2.0 → 3.2.2

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 (104) hide show
  1. package/README.md +27 -27
  2. package/es/action-sheet/ActionSheet.d.ts +16 -3
  3. package/es/action-sheet/ActionSheet.mjs +30 -26
  4. package/es/action-sheet/index.css +1 -1
  5. package/es/action-sheet/index.d.ts +9 -2
  6. package/es/button/index.css +1 -1
  7. package/es/date-time-picker/DateTimePicker.d.ts +8 -0
  8. package/es/date-time-picker/DateTimePickerWrapper.d.ts +12 -0
  9. package/es/date-time-picker/index.d.ts +8 -0
  10. package/es/date-time-picker/utils.d.ts +4 -0
  11. package/es/dialog/Dialog.d.ts +6 -0
  12. package/es/dialog/Dialog.mjs +6 -2
  13. package/es/dialog/function-call.mjs +2 -0
  14. package/es/dialog/index.css +1 -1
  15. package/es/dialog/index.d.ts +4 -0
  16. package/es/dropdown-item/DropdownItem.mjs +1 -0
  17. package/es/index.d.ts +1 -0
  18. package/es/index.mjs +3 -0
  19. package/es/lazyload/vue-lazyload/index.d.ts +55 -55
  20. package/es/media-picker/MediaPicker.d.ts +7 -3
  21. package/es/media-picker/MediaPicker.mjs +76 -24
  22. package/es/media-picker/index.d.ts +3 -2
  23. package/es/media-picker/type.d.ts +2 -1
  24. package/es/picker/Picker.d.ts +16 -0
  25. package/es/picker/Picker.mjs +5 -15
  26. package/es/picker/PickerToolbar.d.ts +15 -1
  27. package/es/picker/PickerToolbar.mjs +17 -15
  28. package/es/picker/index.css +1 -1
  29. package/es/picker/index.d.ts +8 -0
  30. package/es/search/index.css +1 -1
  31. package/es/speech-recognizer/SpeechRecognizer.d.ts +51 -0
  32. package/es/speech-recognizer/SpeechRecognizer.mjs +209 -0
  33. package/es/speech-recognizer/index.css +1 -0
  34. package/es/speech-recognizer/index.d.ts +43 -0
  35. package/es/speech-recognizer/index.mjs +8 -0
  36. package/es/speech-recognizer/recorder.d.ts +53 -0
  37. package/es/speech-recognizer/recorder.mjs +75 -0
  38. package/es/speech-recognizer/style/index.d.ts +1 -0
  39. package/es/speech-recognizer/style/index.mjs +10 -0
  40. package/es/speech-recognizer/types.d.ts +0 -0
  41. package/es/speech-recognizer/types.mjs +0 -0
  42. package/es/tab/style/index.mjs +1 -0
  43. package/es/tabs/Tabs.mjs +47 -2
  44. package/es/tabs/index.css +1 -1
  45. package/es/tabs/style/index.mjs +1 -0
  46. package/es/time-picker/TimePicker.d.ts +12 -0
  47. package/es/time-picker/index.d.ts +8 -0
  48. package/es/vue-sfc-shim.d.ts +6 -6
  49. package/es/vue-tsx-shim.d.ts +23 -23
  50. package/lib/action-sheet/ActionSheet.d.ts +16 -3
  51. package/lib/action-sheet/ActionSheet.js +29 -25
  52. package/lib/action-sheet/index.css +1 -1
  53. package/lib/action-sheet/index.d.ts +9 -2
  54. package/lib/button/index.css +1 -1
  55. package/lib/date-time-picker/DateTimePicker.d.ts +8 -0
  56. package/lib/date-time-picker/DateTimePickerWrapper.d.ts +12 -0
  57. package/lib/date-time-picker/index.d.ts +8 -0
  58. package/lib/date-time-picker/utils.d.ts +4 -0
  59. package/lib/dialog/Dialog.d.ts +6 -0
  60. package/lib/dialog/Dialog.js +6 -2
  61. package/lib/dialog/function-call.js +2 -0
  62. package/lib/dialog/index.css +1 -1
  63. package/lib/dialog/index.d.ts +4 -0
  64. package/lib/dropdown-item/DropdownItem.js +1 -0
  65. package/lib/index.css +1 -1
  66. package/lib/index.d.ts +1 -0
  67. package/lib/index.js +3 -0
  68. package/lib/lazyload/vue-lazyload/index.d.ts +55 -55
  69. package/lib/media-picker/MediaPicker.d.ts +7 -3
  70. package/lib/media-picker/MediaPicker.js +75 -23
  71. package/lib/media-picker/index.d.ts +3 -2
  72. package/lib/media-picker/type.d.ts +2 -1
  73. package/lib/picker/Picker.d.ts +16 -0
  74. package/lib/picker/Picker.js +4 -14
  75. package/lib/picker/PickerToolbar.d.ts +15 -1
  76. package/lib/picker/PickerToolbar.js +16 -14
  77. package/lib/picker/index.css +1 -1
  78. package/lib/picker/index.d.ts +8 -0
  79. package/lib/search/index.css +1 -1
  80. package/lib/speech-recognizer/SpeechRecognizer.d.ts +51 -0
  81. package/lib/speech-recognizer/SpeechRecognizer.js +238 -0
  82. package/lib/speech-recognizer/index.css +1 -0
  83. package/lib/speech-recognizer/index.d.ts +43 -0
  84. package/lib/speech-recognizer/index.js +37 -0
  85. package/lib/speech-recognizer/recorder.d.ts +53 -0
  86. package/lib/speech-recognizer/recorder.js +94 -0
  87. package/lib/speech-recognizer/style/index.d.ts +1 -0
  88. package/lib/speech-recognizer/style/index.js +10 -0
  89. package/lib/speech-recognizer/types.d.ts +0 -0
  90. package/lib/speech-recognizer/types.js +0 -0
  91. package/lib/tab/style/index.js +1 -0
  92. package/lib/tabs/Tabs.js +47 -2
  93. package/lib/tabs/index.css +1 -1
  94. package/lib/tabs/style/index.js +1 -0
  95. package/lib/time-picker/TimePicker.d.ts +12 -0
  96. package/lib/time-picker/index.d.ts +8 -0
  97. package/lib/vue-sfc-shim.d.ts +6 -6
  98. package/lib/vue-tsx-shim.d.ts +23 -23
  99. package/lib/web-types.json +1 -1
  100. package/lib/zartui.cjs.js +1358 -990
  101. package/lib/zartui.es.js +1358 -990
  102. package/lib/zartui.js +1406 -1021
  103. package/lib/zartui.min.js +1 -1
  104. package/package.json +11 -11
@@ -1,55 +1,55 @@
1
- import type { App } from 'vue';
2
-
3
- declare type ListenEvent =
4
- | 'scroll'
5
- | 'wheel'
6
- | 'mousewheel'
7
- | 'resize'
8
- | 'animationend'
9
- | 'transitionend'
10
- | 'touchmove';
11
-
12
- // eslint-disable-next-line
13
- declare type Callback = (listener: any, options: LazyloadOptions) => void;
14
-
15
- declare type Filter = {
16
- webp?: Callback;
17
- progressive?: Callback;
18
- };
19
-
20
- declare type Adapter = {
21
- error?: Callback;
22
- loaded?: Callback;
23
- loading?: Callback;
24
- };
25
-
26
- export declare type LazyloadOptions = {
27
- error?: string;
28
- filter?: Filter;
29
- silent?: boolean;
30
- adapter?: Adapter;
31
- loading?: string;
32
- attempt?: number;
33
- preLoad?: number;
34
- observer?: boolean;
35
- lazyImage?: boolean;
36
- throttleWait?: number;
37
- listenEvents?: ListenEvent[];
38
- dispatchEvent?: boolean;
39
- lazyComponent?: boolean;
40
- observerOptions?: IntersectionObserverInit;
41
- };
42
-
43
- export declare const Lazyload: {
44
- install(app: App, options?: LazyloadOptions): void;
45
- };
46
-
47
- declare module '@vue/runtime-core' {
48
- interface ComponentCustomProperties {
49
- $Lazyload: {
50
- $on: (event: string, handler: Callback) => void;
51
- $off: (event: string, handler?: Callback) => void;
52
- $once: (event: string, handler: Callback) => void;
53
- };
54
- }
55
- }
1
+ import type { App } from 'vue';
2
+
3
+ declare type ListenEvent =
4
+ | 'scroll'
5
+ | 'wheel'
6
+ | 'mousewheel'
7
+ | 'resize'
8
+ | 'animationend'
9
+ | 'transitionend'
10
+ | 'touchmove';
11
+
12
+ // eslint-disable-next-line
13
+ declare type Callback = (listener: any, options: LazyloadOptions) => void;
14
+
15
+ declare type Filter = {
16
+ webp?: Callback;
17
+ progressive?: Callback;
18
+ };
19
+
20
+ declare type Adapter = {
21
+ error?: Callback;
22
+ loaded?: Callback;
23
+ loading?: Callback;
24
+ };
25
+
26
+ export declare type LazyloadOptions = {
27
+ error?: string;
28
+ filter?: Filter;
29
+ silent?: boolean;
30
+ adapter?: Adapter;
31
+ loading?: string;
32
+ attempt?: number;
33
+ preLoad?: number;
34
+ observer?: boolean;
35
+ lazyImage?: boolean;
36
+ throttleWait?: number;
37
+ listenEvents?: ListenEvent[];
38
+ dispatchEvent?: boolean;
39
+ lazyComponent?: boolean;
40
+ observerOptions?: IntersectionObserverInit;
41
+ };
42
+
43
+ export declare const Lazyload: {
44
+ install(app: App, options?: LazyloadOptions): void;
45
+ };
46
+
47
+ declare module '@vue/runtime-core' {
48
+ interface ComponentCustomProperties {
49
+ $Lazyload: {
50
+ $on: (event: string, handler: Callback) => void;
51
+ $off: (event: string, handler?: Callback) => void;
52
+ $once: (event: string, handler: Callback) => void;
53
+ };
54
+ }
55
+ }
@@ -1,5 +1,5 @@
1
- import { ExtractPropTypes, PropType } from 'vue';
2
- import type { Media, MediaAfterRead, MediaBeforeDelete, MediaBeforeRead, MediaPick, MediaPreview, MediaSizeType } from './type';
1
+ import { ComponentPublicInstance, ExtractPropTypes, PropType } from 'vue';
2
+ import type { Media, MediaAddType, MediaAfterRead, MediaBeforeDelete, MediaBeforeRead, MediaPick, MediaPreview, MediaSizeType, MediaType } from './type';
3
3
  import { MediaPlayerProps } from '../media-player';
4
4
  declare const mediaPickerProps: {
5
5
  disabled: BooleanConstructor;
@@ -81,6 +81,9 @@ declare const mediaPickerProps: {
81
81
  mediaPlayerProps: PropType<Partial<MediaPlayerProps>>;
82
82
  };
83
83
  export type MediaPickerProps = ExtractPropTypes<typeof mediaPickerProps>;
84
+ export type MediaPickerInstance = ComponentPublicInstance<{
85
+ mediaPickAction: (mediaType: MediaType, mediaAddType: MediaAddType) => void;
86
+ }>;
84
87
  declare const _default: import("vue").DefineComponent<ExtractPropTypes<{
85
88
  disabled: BooleanConstructor;
86
89
  showTitle: BooleanConstructor;
@@ -159,7 +162,7 @@ declare const _default: import("vue").DefineComponent<ExtractPropTypes<{
159
162
  default: MediaSizeType;
160
163
  };
161
164
  mediaPlayerProps: PropType<Partial<MediaPlayerProps>>;
162
- }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("delete" | "update:mediaList")[], "delete" | "update:mediaList", import("vue").PublicProps, Readonly<ExtractPropTypes<{
165
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("delete" | "processing" | "update:mediaList")[], "delete" | "processing" | "update:mediaList", import("vue").PublicProps, Readonly<ExtractPropTypes<{
163
166
  disabled: BooleanConstructor;
164
167
  showTitle: BooleanConstructor;
165
168
  useFileNameAsLabel: BooleanConstructor;
@@ -239,6 +242,7 @@ declare const _default: import("vue").DefineComponent<ExtractPropTypes<{
239
242
  mediaPlayerProps: PropType<Partial<MediaPlayerProps>>;
240
243
  }>> & Readonly<{
241
244
  onDelete?: ((...args: any[]) => any) | undefined;
245
+ onProcessing?: ((...args: any[]) => any) | undefined;
242
246
  "onUpdate:mediaList"?: ((...args: any[]) => any) | undefined;
243
247
  }>, {
244
248
  title: string;
@@ -18,7 +18,7 @@ var __async = (__this, __arguments, generator) => {
18
18
  step((generator = generator.apply(__this, __arguments)).next());
19
19
  });
20
20
  };
21
- import { createVNode as _createVNode, createTextVNode as _createTextVNode, mergeProps as _mergeProps, vShow as _vShow, withDirectives as _withDirectives } from "vue";
21
+ import { createVNode as _createVNode, mergeProps as _mergeProps, vShow as _vShow, withDirectives as _withDirectives } from "vue";
22
22
  import { createNamespace, isDef, isPromise, isWeixin, makeArrayProp, makeNumberProp, makeStringProp, truthProp } from "../utils/index.mjs";
23
23
  import { computed, defineComponent, ref } from "vue";
24
24
  import { showFailToast, showLoadingToast, closeToast } from "../toast/index.mjs";
@@ -42,6 +42,7 @@ import { file2DataURL, getFileUniqueCode, getUniqueFileName, isAudioType, isImag
42
42
  import { showImagePreview } from "../image-preview/index.mjs";
43
43
  import { ImageProcessor, checkWatermarkConfigSupported, CompressOptions, ResizeOptions } from "@egova-mobile/app-media-utils";
44
44
  import { wxUploadImage } from "./util/wx-util.mjs";
45
+ import { useExpose } from "../composables/use-expose.mjs";
45
46
  const [name, bem] = createNamespace("media-picker");
46
47
  const FILE_SIZE_LIMIT = 100;
47
48
  const mediaPickerProps = {
@@ -100,7 +101,7 @@ const mediaPickerProps = {
100
101
  var stdin_default = defineComponent({
101
102
  name,
102
103
  props: mediaPickerProps,
103
- emits: ["update:mediaList", "delete"],
104
+ emits: ["update:mediaList", "delete", "processing"],
104
105
  setup(props, {
105
106
  emit,
106
107
  slots
@@ -118,6 +119,7 @@ var stdin_default = defineComponent({
118
119
  const audioRecorderInputRef = ref();
119
120
  const audioFileInputRef = ref();
120
121
  const fileInputRef = ref();
122
+ const mediaListPlaceholder = ref([]);
121
123
  const checkFileCountBeforeAdd = (mediaType) => {
122
124
  if (props.mediaList.length === props.maxMediaCount) {
123
125
  showFailToast("\u5DF2\u8FBE\u5230\u6587\u4EF6\u6700\u5927\u6570\u91CF\u9650\u5236");
@@ -140,7 +142,7 @@ var stdin_default = defineComponent({
140
142
  const triggerHiddenInput = (ref2) => {
141
143
  ref2 && ref2.click();
142
144
  };
143
- const mediaPick = (mediaType, mediaAddType) => {
145
+ const mediaPickAction = (mediaType, mediaAddType) => {
144
146
  if (props.disabled) {
145
147
  return;
146
148
  }
@@ -216,24 +218,24 @@ var stdin_default = defineComponent({
216
218
  return [{
217
219
  name: "\u62CD\u6444",
218
220
  callback: () => {
219
- mediaPick("video", "take");
221
+ mediaPickAction("video", "take");
220
222
  }
221
223
  }, {
222
224
  name: "\u89C6\u9891\u6587\u4EF6",
223
225
  callback: () => {
224
- mediaPick("video", "pick");
226
+ mediaPickAction("video", "pick");
225
227
  }
226
228
  }];
227
229
  } else if (audioOptionsVisible.value) {
228
230
  return [{
229
231
  name: "\u5F55\u97F3",
230
232
  callback: () => {
231
- mediaPick("audio", "take");
233
+ mediaPickAction("audio", "take");
232
234
  }
233
235
  }, {
234
236
  name: "\u97F3\u9891\u6587\u4EF6",
235
237
  callback: () => {
236
- mediaPick("audio", "pick");
238
+ mediaPickAction("audio", "pick");
237
239
  }
238
240
  }];
239
241
  }
@@ -299,6 +301,7 @@ var stdin_default = defineComponent({
299
301
  fileName: f.name,
300
302
  originalName: f.name,
301
303
  originalSize: f.size,
304
+ originalFile: f,
302
305
  deletable: true,
303
306
  message: ""
304
307
  };
@@ -321,17 +324,13 @@ var stdin_default = defineComponent({
321
324
  message: "",
322
325
  originalName: file.name,
323
326
  // 原始名称
324
- originalSize: file.size
327
+ originalSize: file.size,
325
328
  // 原始大小
329
+ originalFile: file
326
330
  };
327
331
  return media;
328
332
  });
329
333
  });
330
- showLoadingToast({
331
- message: "\u5904\u7406\u4E2D...",
332
- forbidClick: true,
333
- duration: 0
334
- });
335
334
  return Promise.all(mediaList).then((medias) => {
336
335
  const _medias = [];
337
336
  medias.forEach((media) => {
@@ -341,7 +340,6 @@ var stdin_default = defineComponent({
341
340
  });
342
341
  return _medias;
343
342
  }).finally(() => {
344
- closeToast();
345
343
  });
346
344
  };
347
345
  const transformImageFiles = (files) => {
@@ -400,11 +398,6 @@ var stdin_default = defineComponent({
400
398
  });
401
399
  promisesTodo.push(promise);
402
400
  }
403
- showLoadingToast({
404
- message: "\u5904\u7406\u4E2D...",
405
- forbidClick: true,
406
- duration: 0
407
- });
408
401
  return Promise.all(promisesTodo).then((medias) => {
409
402
  const _medias = [];
410
403
  medias.forEach((media) => {
@@ -414,10 +407,47 @@ var stdin_default = defineComponent({
414
407
  });
415
408
  return _medias;
416
409
  }).finally(() => {
417
- closeToast();
418
410
  });
419
411
  };
420
412
  const readFiles = (files) => {
413
+ emit("processing", true);
414
+ mediaListPlaceholder.value = files.map((file) => {
415
+ let type;
416
+ if (isAudioType(file)) {
417
+ type = "audio";
418
+ } else if (isVideoType(file)) {
419
+ type = "video";
420
+ } else if (isImageType(file)) {
421
+ type = "photo";
422
+ } else {
423
+ type = "file";
424
+ }
425
+ return {
426
+ file,
427
+ message: "\u5904\u7406\u4E2D...",
428
+ status: "processing",
429
+ type
430
+ };
431
+ });
432
+ emit("processing", true);
433
+ mediaListPlaceholder.value = files.map((file) => {
434
+ let type;
435
+ if (isAudioType(file)) {
436
+ type = "audio";
437
+ } else if (isVideoType(file)) {
438
+ type = "video";
439
+ } else if (isImageType(file)) {
440
+ type = "photo";
441
+ } else {
442
+ type = "file";
443
+ }
444
+ return {
445
+ file,
446
+ message: "\u5904\u7406\u4E2D...",
447
+ status: "processing",
448
+ type
449
+ };
450
+ });
421
451
  const notImages = files.filter((f) => !isImageType(f)).map((f) => transformNotImageFile(f));
422
452
  let newMedias = [];
423
453
  if (notImages.length > 0) {
@@ -440,6 +470,8 @@ var stdin_default = defineComponent({
440
470
  newMedia.label = newMedia.originalName;
441
471
  });
442
472
  }
473
+ mediaListPlaceholder.value = [];
474
+ emit("processing", false);
443
475
  emit("update:mediaList", [...props.mediaList, ...newMedias]);
444
476
  if (props.afterRead) {
445
477
  props.afterRead(newMedias);
@@ -575,7 +607,7 @@ var stdin_default = defineComponent({
575
607
  "class": bem("box")
576
608
  }, [_createVNode("div", {
577
609
  "class": bem("button"),
578
- "onClick": () => mediaPick(mediaType, mediaAddType)
610
+ "onClick": () => mediaPickAction(mediaType, mediaAddType)
579
611
  }, [renderIcon(mediaType, mediaAddType)]), _createVNode("div", {
580
612
  "class": bem("label")
581
613
  }, [label])]);
@@ -616,7 +648,7 @@ var stdin_default = defineComponent({
616
648
  status,
617
649
  message
618
650
  } = media;
619
- if (status === "uploading" || status === "failed") {
651
+ if (status === "processing" || status === "uploading" || status === "failed") {
620
652
  const MaskIcon = status === "failed" ? _createVNode(ZtIcon, {
621
653
  "name": "close",
622
654
  "class": bem("mask-icon")
@@ -671,7 +703,7 @@ var stdin_default = defineComponent({
671
703
  }
672
704
  return _createVNode("div", {
673
705
  "class": bem("thumbnail-label")
674
- }, [media.label, _createTextVNode("12312")]);
706
+ }, [media.label]);
675
707
  };
676
708
  const onDelete = (media, index) => {
677
709
  if (props.beforeDelete) {
@@ -749,6 +781,15 @@ var stdin_default = defineComponent({
749
781
  showFailToast("\u6682\u4E0D\u652F\u6301\u6B64\u7C7B\u6587\u4EF6\u7684\u9884\u89C8");
750
782
  }
751
783
  });
784
+ const renderMediaListPlaceholder = () => {
785
+ return mediaListPlaceholder.value.map((media) => {
786
+ return _createVNode(ZtGridItem, {
787
+ "key": media.uniqueCode
788
+ }, {
789
+ default: () => [renderMediaThumbnail(media), renderMediaLabel(media), genThumbnailMask(media)]
790
+ });
791
+ });
792
+ };
752
793
  const renderMediaList = () => props.mediaList.map((media, index) => {
753
794
  const showDelete = media.deletable && media.status !== "uploading";
754
795
  const deleteIcon = showDelete && _createVNode(DeleteIcon, {
@@ -769,6 +810,9 @@ var stdin_default = defineComponent({
769
810
  actionVisible.value = false;
770
811
  action.func && action.func();
771
812
  };
813
+ useExpose({
814
+ mediaPickAction
815
+ });
772
816
  return () => {
773
817
  const title = props.showTitle && _createVNode("div", {
774
818
  "class": bem("title")
@@ -799,7 +843,15 @@ var stdin_default = defineComponent({
799
843
  "class": bem("grid")
800
844
  }, {
801
845
  default: () => [renderMediaList()]
802
- }), [[_vShow, props.mediaList.length]])]);
846
+ }), [[_vShow, props.mediaList.length]]), _withDirectives(_createVNode(ZtGrid, {
847
+ "column-num": "3",
848
+ "border": false,
849
+ "square": true,
850
+ "gutter": "4",
851
+ "class": bem("grid")
852
+ }, {
853
+ default: () => [renderMediaListPlaceholder()]
854
+ }), [[_vShow, mediaListPlaceholder.value.length]])]);
803
855
  };
804
856
  }
805
857
  });
@@ -66,7 +66,7 @@ export declare const MediaPicker: import("../utils").WithInstall<import("vue").D
66
66
  default: import("./type").MediaSizeType;
67
67
  };
68
68
  mediaPlayerProps: import("vue").PropType<Partial<import("..").MediaPlayerProps>>;
69
- }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("delete" | "update:mediaList")[], "delete" | "update:mediaList", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
69
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("delete" | "processing" | "update:mediaList")[], "delete" | "processing" | "update:mediaList", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
70
70
  disabled: BooleanConstructor;
71
71
  showTitle: BooleanConstructor;
72
72
  useFileNameAsLabel: BooleanConstructor;
@@ -136,6 +136,7 @@ export declare const MediaPicker: import("../utils").WithInstall<import("vue").D
136
136
  mediaPlayerProps: import("vue").PropType<Partial<import("..").MediaPlayerProps>>;
137
137
  }>> & Readonly<{
138
138
  onDelete?: ((...args: any[]) => any) | undefined;
139
+ onProcessing?: ((...args: any[]) => any) | undefined;
139
140
  "onUpdate:mediaList"?: ((...args: any[]) => any) | undefined;
140
141
  }>, {
141
142
  title: string;
@@ -162,7 +163,7 @@ export declare const MediaPicker: import("../utils").WithInstall<import("vue").D
162
163
  imageSizeType: import("./type").MediaSizeType;
163
164
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>>;
164
165
  export default MediaPicker;
165
- export type { MediaPickerProps } from './MediaPicker';
166
+ export type { MediaPickerProps, MediaPickerInstance } from './MediaPicker';
166
167
  export type { Media, MediaType, MediaAddType, MediaUploadStatus, MediaPreview, MediaPick, MediaBeforeRead, MediaAfterRead, MediaBeforeDelete, MediaPickerThemeVars, MediaSizeType, } from './type';
167
168
  export { defaultMedia } from './type';
168
169
  declare module 'vue' {
@@ -1,6 +1,6 @@
1
1
  export type MediaType = 'photo' | 'audio' | 'video' | 'file';
2
2
  export type MediaAddType = 'take' | 'pick' | 'take_and_pick';
3
- export type MediaUploadStatus = 'uploading' | 'done' | 'failed';
3
+ export type MediaUploadStatus = 'processing' | 'uploading' | 'done' | 'failed';
4
4
  export type WxMediaType = 'camera' | 'album';
5
5
  export type MediaSizeType = 'original' | 'compressed';
6
6
  export type Media = {
@@ -13,6 +13,7 @@ export type Media = {
13
13
  fileName: string;
14
14
  originalName: string;
15
15
  originalSize: number;
16
+ originalFile?: File;
16
17
  lastModified: number;
17
18
  deletable: boolean;
18
19
  status?: MediaUploadStatus;
@@ -30,6 +30,10 @@ export declare const pickerSharedProps: {
30
30
  default: string;
31
31
  };
32
32
  } & {
33
+ title: {
34
+ type: PropType<string>;
35
+ default: string;
36
+ };
33
37
  cancelButtonText: StringConstructor;
34
38
  confirmButtonText: StringConstructor;
35
39
  };
@@ -62,6 +66,10 @@ export declare const pickerProps: {
62
66
  default: string;
63
67
  };
64
68
  } & {
69
+ title: {
70
+ type: PropType<string>;
71
+ default: string;
72
+ };
65
73
  cancelButtonText: StringConstructor;
66
74
  confirmButtonText: StringConstructor;
67
75
  } & {
@@ -126,6 +134,10 @@ declare const _default: import("vue").DefineComponent<ExtractPropTypes<{
126
134
  default: string;
127
135
  };
128
136
  } & {
137
+ title: {
138
+ type: PropType<string>;
139
+ default: string;
140
+ };
129
141
  cancelButtonText: StringConstructor;
130
142
  confirmButtonText: StringConstructor;
131
143
  } & {
@@ -188,6 +200,10 @@ declare const _default: import("vue").DefineComponent<ExtractPropTypes<{
188
200
  default: string;
189
201
  };
190
202
  } & {
203
+ title: {
204
+ type: PropType<string>;
205
+ default: string;
206
+ };
191
207
  cancelButtonText: StringConstructor;
192
208
  confirmButtonText: StringConstructor;
193
209
  } & {
@@ -1,5 +1,5 @@
1
1
  import { ref, watch, computed, defineComponent, nextTick, createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
2
- import { pick, extend, unitToPx, truthProp, HAPTICS_FEEDBACK, isSameValue, makeArrayProp, preventDefault, makeStringProp, makeNumericProp, makeNumberProp } from "../utils/index.mjs";
2
+ import { pick, extend, unitToPx, truthProp, isSameValue, makeArrayProp, preventDefault, makeStringProp, makeNumericProp, makeNumberProp } from "../utils/index.mjs";
3
3
  import { bem, name, isOptionExist, getColumnsType, findOptionByValue, assignDefaultFields, formatCascadeColumns, getFirstEnabledOption } from "./utils.mjs";
4
4
  import { useChildren, useEventListener } from "@zartui/use";
5
5
  import { useExpose } from "../composables/use-expose.mjs";
@@ -175,16 +175,6 @@ var stdin_default = defineComponent({
175
175
  }), pick(slots, pickerToolbarSlots));
176
176
  }
177
177
  };
178
- const renderTitleBar = () => {
179
- if (props.showTitle) {
180
- if (slots["title-bar"]) {
181
- return slots["title-bar"]();
182
- }
183
- return _createVNode("div", {
184
- "class": [bem("title"), HAPTICS_FEEDBACK]
185
- }, [props.title]);
186
- }
187
- };
188
178
  const buttomDivider = () => props.showToolbar ? _createVNode(Divider, {
189
179
  "style": "margin: 0"
190
180
  }, null) : null;
@@ -227,9 +217,9 @@ var stdin_default = defineComponent({
227
217
  var _a, _b;
228
218
  return _createVNode("div", {
229
219
  "class": bem()
230
- }, [renderTitleBar(), props.loading ? _createVNode(Loading, {
220
+ }, [renderToolbar(), props.loading ? _createVNode(Loading, {
231
221
  "class": bem("loading")
232
- }, null) : null, (_a = slots["columns-top"]) == null ? void 0 : _a.call(slots), renderColumns(), (_b = slots["columns-bottom"]) == null ? void 0 : _b.call(slots), buttomDivider(), renderToolbar()]);
222
+ }, null) : null, (_a = slots["columns-top"]) == null ? void 0 : _a.call(slots), renderColumns(), (_b = slots["columns-bottom"]) == null ? void 0 : _b.call(slots)]);
233
223
  };
234
224
  const renderOptionItems = () => {
235
225
  return currentColumns.value.map((options, columnIndex) => {
@@ -256,9 +246,9 @@ var stdin_default = defineComponent({
256
246
  var _a, _b;
257
247
  return _createVNode("div", {
258
248
  "class": bem()
259
- }, [renderTitleBar(), props.loading ? _createVNode(Loading, {
249
+ }, [renderToolbar(), props.loading ? _createVNode(Loading, {
260
250
  "class": bem("loading")
261
- }, null) : null, (_a = slots["columns-top"]) == null ? void 0 : _a.call(slots), renderOptions(), (_b = slots["columns-bottom"]) == null ? void 0 : _b.call(slots), buttomDivider(), renderToolbar()]);
251
+ }, null) : null, (_a = slots["columns-top"]) == null ? void 0 : _a.call(slots), renderOptions(), (_b = slots["columns-bottom"]) == null ? void 0 : _b.call(slots)]);
262
252
  };
263
253
  return () => {
264
254
  if (isButtonPicker.value) {
@@ -1,4 +1,8 @@
1
1
  export declare const pickerToolbarProps: {
2
+ title: {
3
+ type: import("vue").PropType<string>;
4
+ default: string;
5
+ };
2
6
  cancelButtonText: StringConstructor;
3
7
  confirmButtonText: StringConstructor;
4
8
  };
@@ -6,13 +10,23 @@ export declare const pickerToolbarSlots: string[];
6
10
  export type PickerToolbarPropKeys = Array<keyof typeof pickerToolbarProps>;
7
11
  export declare const pickerToolbarPropKeys: PickerToolbarPropKeys;
8
12
  declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
13
+ title: {
14
+ type: import("vue").PropType<string>;
15
+ default: string;
16
+ };
9
17
  cancelButtonText: StringConstructor;
10
18
  confirmButtonText: StringConstructor;
11
19
  }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("cancel" | "confirm")[], "cancel" | "confirm", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
20
+ title: {
21
+ type: import("vue").PropType<string>;
22
+ default: string;
23
+ };
12
24
  cancelButtonText: StringConstructor;
13
25
  confirmButtonText: StringConstructor;
14
26
  }>> & Readonly<{
15
27
  onCancel?: ((...args: any[]) => any) | undefined;
16
28
  onConfirm?: ((...args: any[]) => any) | undefined;
17
- }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
29
+ }>, {
30
+ title: string;
31
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
18
32
  export default _default;
@@ -1,10 +1,9 @@
1
1
  import { defineComponent, createVNode as _createVNode } from "vue";
2
2
  import { bem, t } from "./utils.mjs";
3
- import { createNamespace, HAPTICS_FEEDBACK } from "../utils/index.mjs";
4
- import { Button } from "../button/index.mjs";
3
+ import { createNamespace, HAPTICS_FEEDBACK, makeStringProp } from "../utils/index.mjs";
5
4
  const [name] = createNamespace("picker-toolbar");
6
5
  const pickerToolbarProps = {
7
- // title: String,
6
+ title: makeStringProp("\u8BF7\u9009\u62E9"),
8
7
  cancelButtonText: String,
9
8
  confirmButtonText: String
10
9
  };
@@ -18,32 +17,35 @@ var stdin_default = defineComponent({
18
17
  emit,
19
18
  slots
20
19
  }) {
20
+ const renderTitle = () => {
21
+ if (slots.title) {
22
+ return slots.title();
23
+ }
24
+ if (props.title) {
25
+ return _createVNode("div", {
26
+ "class": [bem("title"), "zt-ellipsis"]
27
+ }, [props.title]);
28
+ }
29
+ };
21
30
  const onCancel = () => emit("cancel");
22
31
  const onConfirm = () => emit("confirm");
23
32
  const renderCancel = () => {
24
33
  const text = props.cancelButtonText || t("cancel");
25
- return _createVNode(Button, {
26
- "type": "default",
27
- "hairline": true,
34
+ return _createVNode("div", {
28
35
  "class": bem("cancel"),
29
36
  "onClick": onCancel
30
- }, {
31
- default: () => [slots.cancel ? slots.cancel() : text]
32
- });
37
+ }, [slots.cancel ? slots.cancel() : text]);
33
38
  };
34
39
  const renderConfirm = () => {
35
40
  const text = props.confirmButtonText || t("confirm");
36
- return _createVNode(Button, {
37
- "type": "primary",
41
+ return _createVNode("div", {
38
42
  "class": [bem("confirm"), HAPTICS_FEEDBACK],
39
43
  "onClick": onConfirm
40
- }, {
41
- default: () => [slots.confirm ? slots.confirm() : text]
42
- });
44
+ }, [slots.confirm ? slots.confirm() : text]);
43
45
  };
44
46
  return () => _createVNode("div", {
45
47
  "class": bem("toolbar")
46
- }, [slots.toolbar ? slots.toolbar() : [renderCancel(), renderConfirm()]]);
48
+ }, [slots.toolbar ? slots.toolbar() : [renderCancel(), renderTitle(), renderConfirm()]]);
47
49
  }
48
50
  });
49
51
  export {
@@ -1 +1 @@
1
- :root{--zt-picker-cancel-margin: 8px 4px 8px 16px;--zt-picker-confirm-margin: 8px 16px 8px 4px;--zt-picker-title-height: 56px;--zt-picker-title-border-radius: 16px 16px 0 0;--zt-picker-title-text-color: var(--zt-gray-60);--zt-picker-background: var(--zt-background-popup);--zt-picker-toolbar-height: 60px;--zt-picker-title-background: var(--zt-background-popup);--zt-picker-option-padding: 0 var(--zt-padding-base);--zt-picker-option-text-color: var(--zt-text-color);--zt-picker-option-disabled-opacity: var(--zt-disabled-opacity);--zt-picker-option-disabled-background: var(--zt-gray-10);--zt-picker-loading-icon-color: var(--zt-primary-color);--zt-picker-loading-mask-color: rgba(255, 255, 255, .9);--zt-picker-mask-color: linear-gradient(180deg, rgba(255, 255, 255, .9), rgba(255, 255, 255, .4)), linear-gradient(0deg, rgba(255, 255, 255, .9), rgba(255, 255, 255, .4));--zt-picker-warpper-padding: 12px 16px 4px 16px;--zt-picker-option-item-text-color: var(--zt-gray-40);--zt-picker-option-item-padding: 0 4px 8px 0;--zt-picker-options-ellipsis-height: 36px;--zt-picker-options-ellipsis-border: 1px solid var(--zt-gray-20);--zt-picker-option-item-disabled-opacity: var(--zt-disabled-opacity);--zt-picker-frame-background-color: rgba(0, 0, 0, .02)}:root[zt-theme-size=large]{--zt-picker-options-ellipsis-height: 50px}.zt-theme-dark{--zt-picker-loading-mask-color: rgba(0, 0, 0, .6);--zt-picker-mask-color: linear-gradient(180deg, rgba(0, 0, 0, .6), rgba(0, 0, 0, .1)), linear-gradient(0deg, rgba(0, 0, 0, .6), rgba(0, 0, 0, .1))}.zt-picker{position:relative;background:var(--zt-picker-background);-webkit-user-select:none;-moz-user-select:none;user-select:none}.zt-picker__toolbar{display:flex;align-items:center;justify-content:space-between;height:var(--zt-picker-toolbar-height)}.zt-picker__cancel,.zt-picker__confirm{width:50%}.zt-picker__cancel{background:var(--zt-button-default-background);margin:var(--zt-picker-cancel-margin)}.zt-picker__confirm{margin:var(--zt-picker-confirm-margin)}.zt-picker__title{display:flex;justify-content:center;align-items:center;width:100%;height:var(--zt-picker-title-height);border-radius:var(--zt-picker-title-border-radius);font-size:var(--zt-font-size-xl);background:var(--zt-picker-title-background);color:var(--zt-picker-title-text-color);font-weight:500}.zt-picker__columns{position:relative;display:flex;cursor:grab}.zt-picker__options{position:relative;display:flex;cursor:grab;overflow-y:scroll}.zt-picker__options:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;right:0;bottom:0;left:0;border-bottom:1px solid var(--zt-border-color);transform:scaleY(.5)}.zt-picker__options:before{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;top:0;right:0;left:0;border-top:1px solid var(--zt-border-color);transform:scaleY(.5)}.zt-picker__loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;display:flex;align-items:center;justify-content:center;color:var(--zt-picker-loading-icon-color);background:var(--zt-picker-loading-mask-color)}.zt-picker__frame{position:absolute;top:50%;z-index:2;transform:translateY(-50%);pointer-events:none;width:100%;background:var(--zt-picker-frame-background-color)}.zt-picker__mask{position:absolute;top:0;left:0;z-index:1;width:100%;height:100%;background-image:linear-gradient(180deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.4)),linear-gradient(0deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.4));background-repeat:no-repeat;background-position:top,bottom;transform:translateZ(0);pointer-events:none}.zt-picker-column{flex:1;overflow:hidden;font-size:var(--zt-font-size-lg)}.zt-picker-column__wrapper{transition-timing-function:cubic-bezier(.23,1,.68,1)}.zt-picker-column__item{display:flex;align-items:center;justify-content:center;padding:var(--zt-picker-option-padding);color:var(--zt-picker-option-text-color)}.zt-picker-column__item--disabled{cursor:not-allowed;opacity:var(--zt-picker-option-disabled-opacity)}.zt-picker-column__item--selected{font-weight:700;font-size:var(--zt-font-size-xl)}.zt-picker-column__unit{background:var(--zt-picker-title-background);position:absolute;display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--zt-picker-option-text-color);font-size:var(--zt-font-size-lg);width:100%;height:100%}.zt-picker-column__unit-text{margin:0 4px;font-size:var(--zt-font-size-md)}.zt-picker-options{flex:1;overflow-y:scroll;font-size:var(--zt-font-size-md);margin:0;outline:0 none;padding:0}.zt-picker-options__wrapper{display:flex;flex-wrap:wrap;background-color:var(--zt-picker-background);padding:var(--zt-picker-warpper-padding)}.zt-picker-options__item{color:var(--zt-picker-option-item-text-color);padding:var(--zt-picker-option-item-padding);box-sizing:border-box;text-align:center;font-size:var(--zt-font-size-md)}.zt-picker-options__item .zt-ellipsis{height:var(--zt-picker-options-ellipsis-height);line-height:var(--zt-picker-options-ellipsis-height);border-radius:calc(var(--zt-picker-options-ellipsis-height) / 2);background:var(--zt-gray-10);padding:0 var(--zt-padding-md)}.zt-picker-options__item:active{opacity:var(--zt-active-opacity)}.zt-picker-options__item--disabled{cursor:not-allowed;color:var(--zt-gray-20)}.zt-picker-options__item--disabled .zt-ellipsis{background:var(--zt-picker-option-disabled-background)!important}.zt-picker-options__item--last{padding-right:0}.zt-picker-options__item--selected{color:var(--zt-white)}.zt-picker-options__item--selected .zt-ellipsis{background:var(--zt-primary-color)}.zt-picker-options__item--disabled-selected{cursor:not-allowed;color:var(--zt-gray)!important}.zt-picker-options__item--disabled-selected .zt-ellipsis{background:var(--zt-picker-option-disabled-background)!important}
1
+ :root{--zt-picker-cancel-padding: 15px 20px;--zt-picker-confirm-padding: 15px 20px;--zt-picker-title-margin: 0 20px;--zt-picker-title-height: 56px;--zt-picker-title-border-radius: 16px 16px 0 0;--zt-picker-title-text-color: var(--zt-gray-60);--zt-picker-background: var(--zt-background-popup);--zt-picker-toolbar-height: 52px;--zt-picker-toolbar-background: var(--zt-background-popup);--zt-picker-title-background: var(--zt-background-popup);--zt-picker-option-padding: 0 var(--zt-padding-base);--zt-picker-option-text-color: var(--zt-text-color);--zt-picker-option-disabled-opacity: var(--zt-disabled-opacity);--zt-picker-option-disabled-background: var(--zt-gray-10);--zt-picker-loading-icon-color: var(--zt-primary-color);--zt-picker-loading-mask-color: rgba(255, 255, 255, .9);--zt-picker-mask-color: linear-gradient(180deg, rgba(255, 255, 255, .9), rgba(255, 255, 255, .4)), linear-gradient(0deg, rgba(255, 255, 255, .9), rgba(255, 255, 255, .4));--zt-picker-warpper-padding: 12px 16px 4px 16px;--zt-picker-option-item-text-color: var(--zt-gray-40);--zt-picker-option-item-padding: 0 4px 8px 0;--zt-picker-options-ellipsis-height: 36px;--zt-picker-options-ellipsis-border: 1px solid var(--zt-gray-20);--zt-picker-option-item-disabled-opacity: var(--zt-disabled-opacity);--zt-picker-frame-background-color: rgba(0, 0, 0, .02)}:root[zt-theme-size=large]{--zt-picker-options-ellipsis-height: 50px}.zt-theme-dark{--zt-picker-loading-mask-color: rgba(0, 0, 0, .6);--zt-picker-mask-color: linear-gradient(180deg, rgba(0, 0, 0, .6), rgba(0, 0, 0, .1)), linear-gradient(0deg, rgba(0, 0, 0, .6), rgba(0, 0, 0, .1))}.zt-picker{position:relative;background:var(--zt-picker-background);-webkit-user-select:none;-moz-user-select:none;user-select:none}.zt-picker__toolbar{display:flex;align-items:center;justify-content:space-between;height:var(--zt-picker-toolbar-height);background:var(--zt-picker-toolbar-background)}.zt-picker__cancel,.zt-picker__confirm{flex:0 0 auto}.zt-picker__cancel{padding:var(--zt-picker-cancel-padding);font-size:var(--zt-font-size-md);color:var(--zt-primary-color)}.zt-picker__confirm{margin:var(--zt-picker-confirm-padding);font-size:var(--zt-font-size-md);color:var(--zt-primary-color)}.zt-picker__title{min-width:0;font-size:var(--zt-font-size-xl);color:var(--zt-picker-title-text-color);font-weight:700;margin:var(--zt-picker-title-margin)}.zt-picker__columns{position:relative;display:flex;cursor:grab}.zt-picker__options{position:relative;display:flex;cursor:grab;overflow-y:scroll}.zt-picker__options:after{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;right:0;bottom:0;left:0;border-bottom:1px solid var(--zt-border-color);transform:scaleY(.5)}.zt-picker__options:before{position:absolute;box-sizing:border-box;content:" ";pointer-events:none;top:0;right:0;left:0;border-top:1px solid var(--zt-border-color);transform:scaleY(.5)}.zt-picker__loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;display:flex;align-items:center;justify-content:center;color:var(--zt-picker-loading-icon-color);background:var(--zt-picker-loading-mask-color)}.zt-picker__frame{position:absolute;top:50%;z-index:2;transform:translateY(-50%);pointer-events:none;width:100%;background:var(--zt-picker-frame-background-color)}.zt-picker__mask{position:absolute;top:0;left:0;z-index:1;width:100%;height:100%;background-image:linear-gradient(180deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.4)),linear-gradient(0deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.4));background-repeat:no-repeat;background-position:top,bottom;transform:translateZ(0);pointer-events:none}.zt-picker-column{flex:1;overflow:hidden;font-size:var(--zt-font-size-lg)}.zt-picker-column__wrapper{transition-timing-function:cubic-bezier(.23,1,.68,1)}.zt-picker-column__item{display:flex;align-items:center;justify-content:center;padding:var(--zt-picker-option-padding);color:var(--zt-picker-option-text-color)}.zt-picker-column__item--disabled{cursor:not-allowed;opacity:var(--zt-picker-option-disabled-opacity)}.zt-picker-column__item--selected{font-weight:700;font-size:var(--zt-font-size-xl)}.zt-picker-column__unit{background:var(--zt-picker-title-background);position:absolute;display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--zt-picker-option-text-color);font-size:var(--zt-font-size-lg);width:100%;height:100%}.zt-picker-column__unit-text{margin:0 4px;font-size:var(--zt-font-size-md)}.zt-picker-options{flex:1;overflow-y:scroll;font-size:var(--zt-font-size-md);margin:0;outline:0 none;padding:0}.zt-picker-options__wrapper{display:flex;flex-wrap:wrap;background-color:var(--zt-picker-background);padding:var(--zt-picker-warpper-padding)}.zt-picker-options__item{color:var(--zt-picker-option-item-text-color);padding:var(--zt-picker-option-item-padding);box-sizing:border-box;text-align:center;font-size:var(--zt-font-size-md)}.zt-picker-options__item .zt-ellipsis{height:var(--zt-picker-options-ellipsis-height);line-height:var(--zt-picker-options-ellipsis-height);border-radius:calc(var(--zt-picker-options-ellipsis-height) / 2);background:var(--zt-gray-10);padding:0 var(--zt-padding-md)}.zt-picker-options__item:active{opacity:var(--zt-active-opacity)}.zt-picker-options__item--disabled{cursor:not-allowed;color:var(--zt-gray-20)}.zt-picker-options__item--disabled .zt-ellipsis{background:var(--zt-picker-option-disabled-background)!important}.zt-picker-options__item--last{padding-right:0}.zt-picker-options__item--selected{color:var(--zt-white)}.zt-picker-options__item--selected .zt-ellipsis{background:var(--zt-primary-color)}.zt-picker-options__item--disabled-selected{cursor:not-allowed;color:var(--zt-gray)!important}.zt-picker-options__item--disabled-selected .zt-ellipsis{background:var(--zt-picker-option-disabled-background)!important}
@@ -28,6 +28,10 @@ export declare const Picker: import("../utils").WithInstall<import("vue").Define
28
28
  default: string;
29
29
  };
30
30
  } & {
31
+ title: {
32
+ type: import("vue").PropType<string>;
33
+ default: string;
34
+ };
31
35
  cancelButtonText: StringConstructor;
32
36
  confirmButtonText: StringConstructor;
33
37
  } & {
@@ -90,6 +94,10 @@ export declare const Picker: import("../utils").WithInstall<import("vue").Define
90
94
  default: string;
91
95
  };
92
96
  } & {
97
+ title: {
98
+ type: import("vue").PropType<string>;
99
+ default: string;
100
+ };
93
101
  cancelButtonText: StringConstructor;
94
102
  confirmButtonText: StringConstructor;
95
103
  } & {