zartui 3.2.1 → 3.2.3

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 +29 -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 +2 -1
  18. package/es/index.mjs +4 -1
  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 +73 -25
  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 +51 -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 +28 -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 +2 -1
  67. package/lib/index.js +4 -1
  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 +72 -24
  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 +51 -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 -0
  100. package/lib/zartui.cjs.js +1360 -992
  101. package/lib/zartui.es.js +1360 -992
  102. package/lib/zartui.js +1408 -1023
  103. package/lib/zartui.min.js +1 -0
  104. package/package.json +9 -9
@@ -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";
@@ -101,7 +101,7 @@ const mediaPickerProps = {
101
101
  var stdin_default = defineComponent({
102
102
  name,
103
103
  props: mediaPickerProps,
104
- emits: ["update:mediaList", "delete"],
104
+ emits: ["update:mediaList", "delete", "processing"],
105
105
  setup(props, {
106
106
  emit,
107
107
  slots
@@ -119,6 +119,7 @@ var stdin_default = defineComponent({
119
119
  const audioRecorderInputRef = ref();
120
120
  const audioFileInputRef = ref();
121
121
  const fileInputRef = ref();
122
+ const mediaListPlaceholder = ref([]);
122
123
  const checkFileCountBeforeAdd = (mediaType) => {
123
124
  if (props.mediaList.length === props.maxMediaCount) {
124
125
  showFailToast("\u5DF2\u8FBE\u5230\u6587\u4EF6\u6700\u5927\u6570\u91CF\u9650\u5236");
@@ -141,7 +142,7 @@ var stdin_default = defineComponent({
141
142
  const triggerHiddenInput = (ref2) => {
142
143
  ref2 && ref2.click();
143
144
  };
144
- const mediaPick = (mediaType, mediaAddType) => {
145
+ const mediaPickAction = (mediaType, mediaAddType) => {
145
146
  if (props.disabled) {
146
147
  return;
147
148
  }
@@ -217,24 +218,24 @@ var stdin_default = defineComponent({
217
218
  return [{
218
219
  name: "\u62CD\u6444",
219
220
  callback: () => {
220
- mediaPick("video", "take");
221
+ mediaPickAction("video", "take");
221
222
  }
222
223
  }, {
223
224
  name: "\u89C6\u9891\u6587\u4EF6",
224
225
  callback: () => {
225
- mediaPick("video", "pick");
226
+ mediaPickAction("video", "pick");
226
227
  }
227
228
  }];
228
229
  } else if (audioOptionsVisible.value) {
229
230
  return [{
230
231
  name: "\u5F55\u97F3",
231
232
  callback: () => {
232
- mediaPick("audio", "take");
233
+ mediaPickAction("audio", "take");
233
234
  }
234
235
  }, {
235
236
  name: "\u97F3\u9891\u6587\u4EF6",
236
237
  callback: () => {
237
- mediaPick("audio", "pick");
238
+ mediaPickAction("audio", "pick");
238
239
  }
239
240
  }];
240
241
  }
@@ -300,6 +301,7 @@ var stdin_default = defineComponent({
300
301
  fileName: f.name,
301
302
  originalName: f.name,
302
303
  originalSize: f.size,
304
+ originalFile: f,
303
305
  deletable: true,
304
306
  message: ""
305
307
  };
@@ -322,17 +324,13 @@ var stdin_default = defineComponent({
322
324
  message: "",
323
325
  originalName: file.name,
324
326
  // 原始名称
325
- originalSize: file.size
327
+ originalSize: file.size,
326
328
  // 原始大小
329
+ originalFile: file
327
330
  };
328
331
  return media;
329
332
  });
330
333
  });
331
- showLoadingToast({
332
- message: "\u5904\u7406\u4E2D...",
333
- forbidClick: true,
334
- duration: 0
335
- });
336
334
  return Promise.all(mediaList).then((medias) => {
337
335
  const _medias = [];
338
336
  medias.forEach((media) => {
@@ -342,7 +340,6 @@ var stdin_default = defineComponent({
342
340
  });
343
341
  return _medias;
344
342
  }).finally(() => {
345
- closeToast();
346
343
  });
347
344
  };
348
345
  const transformImageFiles = (files) => {
@@ -401,11 +398,6 @@ var stdin_default = defineComponent({
401
398
  });
402
399
  promisesTodo.push(promise);
403
400
  }
404
- showLoadingToast({
405
- message: "\u5904\u7406\u4E2D...",
406
- forbidClick: true,
407
- duration: 0
408
- });
409
401
  return Promise.all(promisesTodo).then((medias) => {
410
402
  const _medias = [];
411
403
  medias.forEach((media) => {
@@ -415,10 +407,47 @@ var stdin_default = defineComponent({
415
407
  });
416
408
  return _medias;
417
409
  }).finally(() => {
418
- closeToast();
419
410
  });
420
411
  };
421
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
+ });
422
451
  const notImages = files.filter((f) => !isImageType(f)).map((f) => transformNotImageFile(f));
423
452
  let newMedias = [];
424
453
  if (notImages.length > 0) {
@@ -441,6 +470,8 @@ var stdin_default = defineComponent({
441
470
  newMedia.label = newMedia.originalName;
442
471
  });
443
472
  }
473
+ mediaListPlaceholder.value = [];
474
+ emit("processing", false);
444
475
  emit("update:mediaList", [...props.mediaList, ...newMedias]);
445
476
  if (props.afterRead) {
446
477
  props.afterRead(newMedias);
@@ -576,7 +607,7 @@ var stdin_default = defineComponent({
576
607
  "class": bem("box")
577
608
  }, [_createVNode("div", {
578
609
  "class": bem("button"),
579
- "onClick": () => mediaPick(mediaType, mediaAddType)
610
+ "onClick": () => mediaPickAction(mediaType, mediaAddType)
580
611
  }, [renderIcon(mediaType, mediaAddType)]), _createVNode("div", {
581
612
  "class": bem("label")
582
613
  }, [label])]);
@@ -617,7 +648,7 @@ var stdin_default = defineComponent({
617
648
  status,
618
649
  message
619
650
  } = media;
620
- if (status === "uploading" || status === "failed") {
651
+ if (status === "processing" || status === "uploading" || status === "failed") {
621
652
  const MaskIcon = status === "failed" ? _createVNode(ZtIcon, {
622
653
  "name": "close",
623
654
  "class": bem("mask-icon")
@@ -672,7 +703,7 @@ var stdin_default = defineComponent({
672
703
  }
673
704
  return _createVNode("div", {
674
705
  "class": bem("thumbnail-label")
675
- }, [media.label, _createTextVNode("12312")]);
706
+ }, [media.label]);
676
707
  };
677
708
  const onDelete = (media, index) => {
678
709
  if (props.beforeDelete) {
@@ -750,6 +781,15 @@ var stdin_default = defineComponent({
750
781
  showFailToast("\u6682\u4E0D\u652F\u6301\u6B64\u7C7B\u6587\u4EF6\u7684\u9884\u89C8");
751
782
  }
752
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
+ };
753
793
  const renderMediaList = () => props.mediaList.map((media, index) => {
754
794
  const showDelete = media.deletable && media.status !== "uploading";
755
795
  const deleteIcon = showDelete && _createVNode(DeleteIcon, {
@@ -771,7 +811,7 @@ var stdin_default = defineComponent({
771
811
  action.func && action.func();
772
812
  };
773
813
  useExpose({
774
- mediaPick
814
+ mediaPickAction
775
815
  });
776
816
  return () => {
777
817
  const title = props.showTitle && _createVNode("div", {
@@ -803,7 +843,15 @@ var stdin_default = defineComponent({
803
843
  "class": bem("grid")
804
844
  }, {
805
845
  default: () => [renderMediaList()]
806
- }), [[_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]])]);
807
855
  };
808
856
  }
809
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
  } & {