zartui 3.1.13 → 3.1.14

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 (112) hide show
  1. package/es/cell/index.css +1 -1
  2. package/es/dropdown-item/DropdownItem.d.ts +7 -0
  3. package/es/dropdown-item/DropdownItem.mjs +39 -25
  4. package/es/dropdown-item/index.css +1 -1
  5. package/es/dropdown-item/index.d.ts +4 -0
  6. package/es/dropdown-item/style/index.mjs +1 -0
  7. package/es/dropdown-item/types.d.ts +2 -1
  8. package/es/dropdown-menu/index.css +1 -1
  9. package/es/field/index.css +1 -1
  10. package/es/form/index.css +1 -0
  11. package/es/form/style/index.mjs +1 -0
  12. package/es/icon/config.mjs +3 -1
  13. package/es/icon/index.css +1 -1
  14. package/es/image-preview/ImagePreview.d.ts +1 -1
  15. package/es/image-preview/index.d.ts +1 -1
  16. package/es/index.d.ts +1 -0
  17. package/es/index.mjs +3 -0
  18. package/es/lazyload/vue-lazyload/index.d.ts +55 -55
  19. package/es/media-picker/MediaPicker.mjs +12 -2
  20. package/es/media-picker/type.d.ts +3 -0
  21. package/es/multiple-picker/MultiplePicker.d.ts +28 -2
  22. package/es/multiple-picker/MultiplePicker.mjs +26 -16
  23. package/es/multiple-picker/MultiplePickerOptions.mjs +2 -1
  24. package/es/multiple-picker/index.css +1 -1
  25. package/es/multiple-picker/index.d.ts +20 -2
  26. package/es/picker/Picker.d.ts +30 -4
  27. package/es/picker/Picker.mjs +69 -16
  28. package/es/picker/PickerOptions.d.ts +75 -0
  29. package/es/picker/PickerOptions.mjs +93 -0
  30. package/es/picker/index.css +1 -1
  31. package/es/picker/index.d.ts +21 -3
  32. package/es/picker/types.d.ts +5 -1
  33. package/es/popup/Popup.mjs +3 -3
  34. package/es/radio-picker/RadioPicker.d.ts +11 -11
  35. package/es/radio-picker/index.d.ts +9 -9
  36. package/es/radio-picker/style/index.mjs +1 -1
  37. package/es/skeleton/index.css +1 -1
  38. package/es/slider/Slider.d.ts +139 -0
  39. package/es/slider/Slider.mjs +335 -0
  40. package/es/slider/index.css +1 -0
  41. package/es/slider/index.d.ts +103 -0
  42. package/es/slider/index.mjs +10 -0
  43. package/es/slider/style/index.d.ts +1 -0
  44. package/es/slider/style/index.mjs +2 -0
  45. package/es/slider/types.d.ts +11 -0
  46. package/es/slider/types.mjs +0 -0
  47. package/es/style/base.css +1 -1
  48. package/es/style/css-variables.css +1 -1
  49. package/es/tabbar-item/index.css +1 -1
  50. package/es/utils/mount-component.mjs +1 -1
  51. package/es/vue-sfc-shim.d.ts +6 -6
  52. package/es/vue-tsx-shim.d.ts +23 -23
  53. package/lib/cell/index.css +1 -1
  54. package/lib/dropdown-item/DropdownItem.d.ts +7 -0
  55. package/lib/dropdown-item/DropdownItem.js +37 -23
  56. package/lib/dropdown-item/index.css +1 -1
  57. package/lib/dropdown-item/index.d.ts +4 -0
  58. package/lib/dropdown-item/style/index.js +1 -0
  59. package/lib/dropdown-item/types.d.ts +2 -1
  60. package/lib/dropdown-menu/index.css +1 -1
  61. package/lib/field/index.css +1 -1
  62. package/lib/form/index.css +1 -0
  63. package/lib/form/style/index.js +1 -0
  64. package/lib/icon/config.js +3 -1
  65. package/lib/icon/index.css +1 -1
  66. package/lib/image-preview/ImagePreview.d.ts +1 -1
  67. package/lib/image-preview/index.d.ts +1 -1
  68. package/lib/index.css +1 -1
  69. package/lib/index.d.ts +1 -0
  70. package/lib/index.js +3 -0
  71. package/lib/lazyload/vue-lazyload/index.d.ts +55 -55
  72. package/lib/media-picker/MediaPicker.js +12 -2
  73. package/lib/media-picker/type.d.ts +3 -0
  74. package/lib/multiple-picker/MultiplePicker.d.ts +28 -2
  75. package/lib/multiple-picker/MultiplePicker.js +26 -16
  76. package/lib/multiple-picker/MultiplePickerOptions.js +2 -1
  77. package/lib/multiple-picker/index.css +1 -1
  78. package/lib/multiple-picker/index.d.ts +20 -2
  79. package/lib/picker/Picker.d.ts +30 -4
  80. package/lib/picker/Picker.js +68 -15
  81. package/lib/picker/PickerOptions.d.ts +75 -0
  82. package/lib/picker/PickerOptions.js +112 -0
  83. package/lib/picker/index.css +1 -1
  84. package/lib/picker/index.d.ts +21 -3
  85. package/lib/picker/types.d.ts +5 -1
  86. package/lib/popup/Popup.js +3 -3
  87. package/lib/radio-picker/RadioPicker.d.ts +11 -11
  88. package/lib/radio-picker/index.d.ts +9 -9
  89. package/lib/radio-picker/style/index.js +1 -1
  90. package/lib/skeleton/index.css +1 -1
  91. package/lib/slider/Slider.d.ts +139 -0
  92. package/lib/slider/Slider.js +354 -0
  93. package/lib/slider/index.css +1 -0
  94. package/lib/slider/index.d.ts +103 -0
  95. package/lib/slider/index.js +39 -0
  96. package/lib/slider/style/index.d.ts +1 -0
  97. package/lib/slider/style/index.js +2 -0
  98. package/lib/slider/types.d.ts +11 -0
  99. package/lib/slider/types.js +15 -0
  100. package/lib/style/base.css +1 -1
  101. package/lib/style/css-variables.css +1 -1
  102. package/lib/tabbar-item/index.css +1 -1
  103. package/lib/utils/mount-component.js +1 -1
  104. package/lib/vue-sfc-shim.d.ts +6 -6
  105. package/lib/vue-tsx-shim.d.ts +23 -23
  106. package/lib/web-types.json +1 -1
  107. package/lib/zartui.cjs.js +1419 -915
  108. package/lib/zartui.es.js +1419 -915
  109. package/lib/zartui.js +1419 -915
  110. package/lib/zartui.min.js +1 -1
  111. package/package.json +79 -79
  112. package/README.md +0 -23
@@ -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
+ }
@@ -265,6 +265,9 @@ var stdin_default = defineComponent({
265
265
  uniqueCode: getFileUniqueCode(f),
266
266
  lastModified: f.lastModified,
267
267
  fileSize: f.size,
268
+ fileName: f.name,
269
+ originalName: f.name,
270
+ originalSize: f.size,
268
271
  deletable: true,
269
272
  message: ""
270
273
  };
@@ -310,8 +313,15 @@ var stdin_default = defineComponent({
310
313
  uniqueCode: getFileUniqueCode(file),
311
314
  lastModified: f.lastModified,
312
315
  fileSize: f.size,
316
+ // 修改后大小,水印,压缩等
317
+ fileName: f.name,
318
+ // 修改后名称
313
319
  deletable: true,
314
- message: ""
320
+ message: "",
321
+ originalName: file.name,
322
+ // 原始名称
323
+ originalSize: file.size
324
+ // 原始大小
315
325
  };
316
326
  return Promise.resolve(media);
317
327
  });
@@ -595,7 +605,7 @@ var stdin_default = defineComponent({
595
605
  const imageIndex = imageList.value.indexOf(media);
596
606
  showImagePreview({
597
607
  images: imageList.value.map((image) => ({
598
- url: image.showSrc || ""
608
+ url: image.url || image.showSrc || ""
599
609
  })),
600
610
  startPosition: imageIndex
601
611
  });
@@ -8,6 +8,9 @@ export type Media = {
8
8
  uniqueCode: string;
9
9
  showSrc?: string;
10
10
  fileSize: number;
11
+ fileName: string;
12
+ originalName: string;
13
+ originalSize: number;
11
14
  lastModified: number;
12
15
  deletable: boolean;
13
16
  status?: MediaUploadStatus;
@@ -27,6 +27,10 @@ declare const multiplePickerProps: {
27
27
  type: BooleanConstructor;
28
28
  default: true;
29
29
  };
30
+ showTitle: {
31
+ type: BooleanConstructor;
32
+ default: true;
33
+ };
30
34
  options: {
31
35
  type: import("vue").PropType<PickerOption[]>;
32
36
  default: () => PickerOption[];
@@ -47,6 +51,10 @@ declare const multiplePickerProps: {
47
51
  type: import("vue").PropType<number[]>;
48
52
  default: () => number[];
49
53
  };
54
+ popup: {
55
+ type: BooleanConstructor;
56
+ default: true;
57
+ };
50
58
  };
51
59
  export type MultiplePickerProps = ExtractPropTypes<typeof multiplePickerProps>;
52
60
  declare const _default: import("vue").DefineComponent<{
@@ -76,6 +84,10 @@ declare const _default: import("vue").DefineComponent<{
76
84
  type: BooleanConstructor;
77
85
  default: true;
78
86
  };
87
+ showTitle: {
88
+ type: BooleanConstructor;
89
+ default: true;
90
+ };
79
91
  options: {
80
92
  type: import("vue").PropType<PickerOption[]>;
81
93
  default: () => PickerOption[];
@@ -96,6 +108,10 @@ declare const _default: import("vue").DefineComponent<{
96
108
  type: import("vue").PropType<number[]>;
97
109
  default: () => number[];
98
110
  };
111
+ popup: {
112
+ type: BooleanConstructor;
113
+ default: true;
114
+ };
99
115
  }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("cancel" | "change" | "confirm" | "update:showPicker" | "update:selectedIndex")[], "cancel" | "change" | "confirm" | "update:showPicker" | "update:selectedIndex", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
100
116
  title: StringConstructor;
101
117
  loading: BooleanConstructor;
@@ -123,6 +139,10 @@ declare const _default: import("vue").DefineComponent<{
123
139
  type: BooleanConstructor;
124
140
  default: true;
125
141
  };
142
+ showTitle: {
143
+ type: BooleanConstructor;
144
+ default: true;
145
+ };
126
146
  options: {
127
147
  type: import("vue").PropType<PickerOption[]>;
128
148
  default: () => PickerOption[];
@@ -143,6 +163,10 @@ declare const _default: import("vue").DefineComponent<{
143
163
  type: import("vue").PropType<number[]>;
144
164
  default: () => number[];
145
165
  };
166
+ popup: {
167
+ type: BooleanConstructor;
168
+ default: true;
169
+ };
146
170
  }>> & {
147
171
  onChange?: ((...args: any[]) => any) | undefined;
148
172
  onCancel?: ((...args: any[]) => any) | undefined;
@@ -153,14 +177,16 @@ declare const _default: import("vue").DefineComponent<{
153
177
  readonly: boolean;
154
178
  closeOnClickOverlay: boolean;
155
179
  closeOnPopstate: boolean;
180
+ popup: boolean;
156
181
  loading: boolean;
182
+ showTitle: boolean;
157
183
  options: PickerOption[];
158
184
  allowHtml: boolean;
185
+ showToolbar: boolean;
186
+ showPicker: boolean;
159
187
  textKey: string;
160
188
  itemHeight: string | number;
161
189
  columnCounts: number;
162
- showPicker: boolean;
163
- showToolbar: boolean;
164
190
  toolbarPosition: string;
165
191
  selectedIndex: number[];
166
192
  }, {}>;
@@ -19,11 +19,13 @@ const multiplePickerProps = {
19
19
  closeOnPopstate: truthProp,
20
20
  closeOnClickOverlay: truthProp,
21
21
  showToolbar: truthProp,
22
+ showTitle: truthProp,
22
23
  options: makeArrayProp(),
23
24
  toolbarPosition: makeStringProp("bottom"),
24
25
  textKey: makeStringProp("text"),
25
26
  columnCounts: makeNumberProp(3),
26
- selectedIndex: makeArrayProp([])
27
+ selectedIndex: makeArrayProp([]),
28
+ popup: truthProp
27
29
  };
28
30
  var stdin_default = defineComponent({
29
31
  name,
@@ -78,12 +80,14 @@ var stdin_default = defineComponent({
78
80
  emit("confirm", options);
79
81
  };
80
82
  const genTitle = () => {
81
- if (slots.title) {
82
- return slots.title();
83
+ if (props.showTitle) {
84
+ if (slots.title) {
85
+ return slots.title();
86
+ }
87
+ return _createVNode("div", {
88
+ "class": ["zt-ellipsis", bem("title")]
89
+ }, [props.title ? props.title : "\u8BF7\u9009\u62E9"]);
83
90
  }
84
- return _createVNode("div", {
85
- "class": ["zt-ellipsis", bem("title")]
86
- }, [props.title ? props.title : "\u8BF7\u9009\u62E9"]);
87
91
  };
88
92
  const genCancel = () => {
89
93
  const text = props.cancelButtonText || "\u53D6\u6D88";
@@ -152,16 +156,22 @@ var stdin_default = defineComponent({
152
156
  }, [genTitle(), props.loading ? _createVNode(Loading, {
153
157
  "class": bem("loading")
154
158
  }, null) : "", genOptions(), props.toolbarPosition === "bottom" ? genToolbar() : ""]);
155
- return () => _createVNode(Popup, {
156
- "show": currentShow.value,
157
- "onUpdate:show": [($event) => currentShow.value = $event, updateShow],
158
- "round": true,
159
- "position": "bottom",
160
- "closeOnPopstate": props.closeOnPopstate,
161
- "closeOnClickOverlay": props.closeOnClickOverlay
162
- }, {
163
- default: renderMultiplePicker
164
- });
159
+ return () => {
160
+ if (props.popup) {
161
+ return _createVNode(Popup, {
162
+ "show": currentShow.value,
163
+ "onUpdate:show": [($event) => currentShow.value = $event, updateShow],
164
+ "round": true,
165
+ "position": "bottom",
166
+ "closeOnPopstate": props.closeOnPopstate,
167
+ "closeOnClickOverlay": props.closeOnClickOverlay
168
+ }, {
169
+ default: renderMultiplePicker
170
+ });
171
+ } else {
172
+ return renderMultiplePicker();
173
+ }
174
+ };
165
175
  }
166
176
  });
167
177
  export {
@@ -49,7 +49,7 @@ var stdin_default = defineComponent({
49
49
  }
50
50
  return option;
51
51
  };
52
- const isOptionDisabled = (option) => isObject(option) && option.disabled;
52
+ const isOptionDisabled = (option) => props.readonly || isObject(option) && option.disabled;
53
53
  const genOptions = () => {
54
54
  columnCounts.value = Number(props.columnCounts);
55
55
  if (columnCounts.value && columnCounts.value > 3) {
@@ -77,6 +77,7 @@ var stdin_default = defineComponent({
77
77
  "class": [bem("item", {
78
78
  disabled,
79
79
  selected: currentIndexes.value.indexOf(index) > -1,
80
+ "disabled-selected": disabled && currentIndexes.value.indexOf(index) > -1,
80
81
  last: (index + 1) % columnCounts.value === 0
81
82
  })]
82
83
  }, [slots.options ? slots.options(option) : _createVNode("div", childData, null)]);
@@ -1 +1 @@
1
- :root{--zt-multiple-picker-warpper-padding: 12px 16px 4px 16px;--zt-multiple-picker-option-text-color: var(--zt-gray-a6);--zt-multiple-picker-background-color: var(--zt-background-popup);--zt-multiple-picker-toolbar-height: 44px;--zt-multiple-picker-title-text-color: var(--zt-gray-a4);--zt-multiple-picker-title-padding: 12px 0;--zt-multiple-picker-item-padding: 0 4px 8px 0;--zt-multiple-picker-option-disabled-opacity: var(--zt-disabled-opacity);--zt-multiple-picker-max-height: 84vh;--zt-multiple-picker-loading-icon-color: var(--zt-primary-color);--zt-multiple-picker-loading-mask-color: var(--zt-picker-loading-mask-color);--zt-multiple-picker-toolbar-padding: 8px 16px;--zt-multiple-picker-ellipsis-border: 1px solid var(--zt-gray-a2);--zt-multiple-picker-title-background: var(--zt-background-popup);--zt-multiple-picker-ellipsis-height: 38px}:root[zt-theme-size=large]{--zt-multiple-picker-ellipsis-height: 50px}.zt-multiple-picker{display:flex;flex-direction:column;justify-content:space-between;position:relative;background-color:var(--zt-multiple-picker-background-color);-webkit-user-select:none;user-select:none;max-height:var(--zt-multiple-picker-max-height)}.zt-multiple-picker__toolbar{display:flex;align-items:center;justify-content:space-between;box-sizing:content-box;flex-shrink:0;background:var(--zt-multiple-picker-title-background);height:var(--zt-multiple-picker-toolbar-height);padding:var(--zt-multiple-picker-toolbar-padding)}.zt-multiple-picker__title{flex-shrink:0;font-weight:var(--zt-multiple-picker-cancel-action-font-weight);font-size:var(--zt-font-size-md);line-height:var(--zt-line-height-md);text-align:center;background:var(--zt-multiple-picker-title-background);color:var(--zt-multiple-picker-title-text-color);padding:var(--zt-multiple-picker-title-padding)}.zt-multiple-picker__options{position:relative;display:flex;cursor:-webkit-grab;cursor:grab;overflow-y:scroll}.zt-multiple-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-multiple-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-multiple-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-multiple-picker-loading-icon-color);background-color:var(--zt-multiple-picker-loading-mask-color)}.zt-multiple-picker-options{flex:1;overflow-y:scroll;font-size:var(--zt-font-size-md);margin:0;outline:0 none;padding:0}.zt-multiple-picker-options__wrapper{display:flex;flex-wrap:wrap;background-color:var(--zt-multiple-picker-background-color);padding:var(--zt-multiple-picker-warpper-padding)}.zt-multiple-picker-options__item{color:var(--zt-multiple-picker-option-text-color);padding:var(--zt-multiple-picker-item-padding);box-sizing:border-box;text-align:center;font-size:var(--zt-font-size-md)}.zt-multiple-picker-options__item .zt-ellipsis{height:var(--zt-multiple-picker-ellipsis-height);line-height:var(--zt-multiple-picker-ellipsis-height);border-radius:calc(var(--zt-multiple-picker-ellipsis-height) / 2);border:var(--zt-multiple-picker-ellipsis-border);padding:0 var(--zt-padding-md)}.zt-multiple-picker-options__item:active{opacity:var(--zt-active-opacity)}.zt-multiple-picker-options__item--disabled{cursor:not-allowed;opacity:var(--zt-multiple-picker-option-disabled-opacity)}.zt-multiple-picker-options__item--last{padding-right:0}.zt-multiple-picker-options__item--selected{color:var(--zt-primary-color)}.zt-multiple-picker-options__item--selected .zt-ellipsis{background:var(--zt-primary-color-a1)}
1
+ :root{--zt-multiple-picker-warpper-padding: 12px 16px 4px 16px;--zt-multiple-picker-option-text-color: var(--zt-gray-a6);--zt-multiple-picker-background-color: var(--zt-background-popup);--zt-multiple-picker-toolbar-height: 44px;--zt-multiple-picker-title-text-color: var(--zt-gray-a4);--zt-multiple-picker-title-padding: 12px 0;--zt-multiple-picker-item-padding: 0 4px 8px 0;--zt-multiple-picker-option-disabled-opacity: var(--zt-disabled-opacity);--zt-multiple-picker-option-disabled-background: var(--zt-gray-a04);--zt-multiple-picker-max-height: 84vh;--zt-multiple-picker-loading-icon-color: var(--zt-primary-color);--zt-multiple-picker-loading-mask-color: var(--zt-picker-loading-mask-color);--zt-multiple-picker-toolbar-padding: 8px 16px;--zt-multiple-picker-ellipsis-border: 1px solid var(--zt-gray-a2);--zt-multiple-picker-ellipsis-border-selected: 1px solid var(--zt-blue-a6);--zt-multiple-picker-title-background: var(--zt-background-popup);--zt-multiple-picker-ellipsis-height: 38px}:root[zt-theme-size=large]{--zt-multiple-picker-ellipsis-height: 50px}.zt-multiple-picker{display:flex;flex-direction:column;justify-content:space-between;position:relative;background-color:var(--zt-multiple-picker-background-color);-webkit-user-select:none;user-select:none;max-height:var(--zt-multiple-picker-max-height)}.zt-multiple-picker__toolbar{display:flex;align-items:center;justify-content:space-between;box-sizing:content-box;flex-shrink:0;background:var(--zt-multiple-picker-title-background);height:var(--zt-multiple-picker-toolbar-height);padding:var(--zt-multiple-picker-toolbar-padding)}.zt-multiple-picker__title{flex-shrink:0;font-weight:var(--zt-multiple-picker-cancel-action-font-weight);font-size:var(--zt-font-size-md);line-height:var(--zt-line-height-md);text-align:center;background:var(--zt-multiple-picker-title-background);color:var(--zt-multiple-picker-title-text-color);padding:var(--zt-multiple-picker-title-padding)}.zt-multiple-picker__options{position:relative;display:flex;cursor:-webkit-grab;cursor:grab;overflow-y:scroll}.zt-multiple-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-multiple-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-multiple-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-multiple-picker-loading-icon-color);background-color:var(--zt-multiple-picker-loading-mask-color)}.zt-multiple-picker-options{flex:1;overflow-y:scroll;font-size:var(--zt-font-size-md);margin:0;outline:0 none;padding:0}.zt-multiple-picker-options__wrapper{display:flex;flex-wrap:wrap;background-color:var(--zt-multiple-picker-background-color);padding:var(--zt-multiple-picker-warpper-padding)}.zt-multiple-picker-options__item{color:var(--zt-multiple-picker-option-text-color);padding:var(--zt-multiple-picker-item-padding);box-sizing:border-box;text-align:center;font-size:var(--zt-font-size-md)}.zt-multiple-picker-options__item .zt-ellipsis{height:var(--zt-multiple-picker-ellipsis-height);line-height:var(--zt-multiple-picker-ellipsis-height);border-radius:calc(var(--zt-multiple-picker-ellipsis-height) / 2);border:var(--zt-multiple-picker-ellipsis-border);padding:0 var(--zt-padding-md)}.zt-multiple-picker-options__item:active{opacity:var(--zt-active-opacity)}.zt-multiple-picker-options__item--disabled{cursor:not-allowed;color:var(--zt-gray-a2)}.zt-multiple-picker-options__item--disabled .zt-ellipsis{background:var(--zt-multiple-picker-option-disabled-background);border:0}.zt-multiple-picker-options__item--last{padding-right:0}.zt-multiple-picker-options__item--selected{color:var(--zt-primary-color)}.zt-multiple-picker-options__item--selected .zt-ellipsis{background:var(--zt-primary-color-a1);border:var(--zt-multiple-picker-ellipsis-border-selected)}.zt-multiple-picker-options__item--disabled-selected{cursor:not-allowed;color:var(--zt-gray)!important}.zt-multiple-picker-options__item--disabled-selected .zt-ellipsis{background:var(--zt-picker-option-disabled-background)!important;border:0!important}
@@ -27,6 +27,10 @@ export declare const MultiplePicker: import("../utils").WithInstall<import("vue"
27
27
  type: BooleanConstructor;
28
28
  default: true;
29
29
  };
30
+ showTitle: {
31
+ type: BooleanConstructor;
32
+ default: true;
33
+ };
30
34
  options: {
31
35
  type: import("vue").PropType<import("./types").PickerOption[]>;
32
36
  default: () => import("./types").PickerOption[];
@@ -47,6 +51,10 @@ export declare const MultiplePicker: import("../utils").WithInstall<import("vue"
47
51
  type: import("vue").PropType<number[]>;
48
52
  default: () => number[];
49
53
  };
54
+ popup: {
55
+ type: BooleanConstructor;
56
+ default: true;
57
+ };
50
58
  }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("cancel" | "change" | "confirm" | "update:showPicker" | "update:selectedIndex")[], "cancel" | "change" | "confirm" | "update:showPicker" | "update:selectedIndex", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
51
59
  title: StringConstructor;
52
60
  loading: BooleanConstructor;
@@ -74,6 +82,10 @@ export declare const MultiplePicker: import("../utils").WithInstall<import("vue"
74
82
  type: BooleanConstructor;
75
83
  default: true;
76
84
  };
85
+ showTitle: {
86
+ type: BooleanConstructor;
87
+ default: true;
88
+ };
77
89
  options: {
78
90
  type: import("vue").PropType<import("./types").PickerOption[]>;
79
91
  default: () => import("./types").PickerOption[];
@@ -94,6 +106,10 @@ export declare const MultiplePicker: import("../utils").WithInstall<import("vue"
94
106
  type: import("vue").PropType<number[]>;
95
107
  default: () => number[];
96
108
  };
109
+ popup: {
110
+ type: BooleanConstructor;
111
+ default: true;
112
+ };
97
113
  }>> & {
98
114
  onChange?: ((...args: any[]) => any) | undefined;
99
115
  onCancel?: ((...args: any[]) => any) | undefined;
@@ -104,14 +120,16 @@ export declare const MultiplePicker: import("../utils").WithInstall<import("vue"
104
120
  readonly: boolean;
105
121
  closeOnClickOverlay: boolean;
106
122
  closeOnPopstate: boolean;
123
+ popup: boolean;
107
124
  loading: boolean;
125
+ showTitle: boolean;
108
126
  options: import("./types").PickerOption[];
109
127
  allowHtml: boolean;
128
+ showToolbar: boolean;
129
+ showPicker: boolean;
110
130
  textKey: string;
111
131
  itemHeight: string | number;
112
132
  columnCounts: number;
113
- showPicker: boolean;
114
- showToolbar: boolean;
115
133
  toolbarPosition: string;
116
134
  selectedIndex: number[];
117
135
  }, {}>>;
@@ -1,6 +1,6 @@
1
1
  import type { PropType, ExtractPropTypes } from 'vue';
2
2
  import { Numeric } from '../utils';
3
- import type { PickerColumn, PickerOption, PickerFieldNames, PickerToolbarPosition } from './types';
3
+ import type { PickerColumn, PickerOption, PickerFieldNames, PickerShowType, PickerToolbarPosition } from './types';
4
4
  export declare const pickerSharedProps: {
5
5
  loading: BooleanConstructor;
6
6
  readonly: BooleanConstructor;
@@ -87,6 +87,14 @@ export declare const pickerProps: {
87
87
  type: BooleanConstructor;
88
88
  default: true;
89
89
  };
90
+ showType: {
91
+ type: PropType<PickerShowType>;
92
+ default: PickerShowType;
93
+ };
94
+ columnCounts: {
95
+ type: NumberConstructor;
96
+ default: number;
97
+ };
90
98
  };
91
99
  export type PickerProps = ExtractPropTypes<typeof pickerProps>;
92
100
  declare const _default: import("vue").DefineComponent<{
@@ -143,7 +151,15 @@ declare const _default: import("vue").DefineComponent<{
143
151
  type: BooleanConstructor;
144
152
  default: true;
145
153
  };
146
- }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:modelValue" | "cancel" | "change" | "confirm" | "update:showPicker" | "clickOption")[], "update:modelValue" | "cancel" | "change" | "confirm" | "update:showPicker" | "clickOption", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
154
+ showType: {
155
+ type: PropType<PickerShowType>;
156
+ default: PickerShowType;
157
+ };
158
+ columnCounts: {
159
+ type: NumberConstructor;
160
+ default: number;
161
+ };
162
+ }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("update:modelValue" | "cancel" | "change" | "confirm" | "clickOption" | "update:showPicker")[], "update:modelValue" | "cancel" | "change" | "confirm" | "clickOption" | "update:showPicker", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
147
163
  loading: BooleanConstructor;
148
164
  readonly: BooleanConstructor;
149
165
  allowHtml: BooleanConstructor;
@@ -197,25 +213,35 @@ declare const _default: import("vue").DefineComponent<{
197
213
  type: BooleanConstructor;
198
214
  default: true;
199
215
  };
216
+ showType: {
217
+ type: PropType<PickerShowType>;
218
+ default: PickerShowType;
219
+ };
220
+ columnCounts: {
221
+ type: NumberConstructor;
222
+ default: number;
223
+ };
200
224
  }>> & {
201
225
  onChange?: ((...args: any[]) => any) | undefined;
202
226
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
203
227
  onCancel?: ((...args: any[]) => any) | undefined;
204
228
  onConfirm?: ((...args: any[]) => any) | undefined;
205
- "onUpdate:showPicker"?: ((...args: any[]) => any) | undefined;
206
229
  onClickOption?: ((...args: any[]) => any) | undefined;
230
+ "onUpdate:showPicker"?: ((...args: any[]) => any) | undefined;
207
231
  }, {
208
232
  title: string;
209
233
  modelValue: Numeric[];
210
234
  readonly: boolean;
211
235
  popup: boolean;
212
236
  loading: boolean;
237
+ showType: PickerShowType;
213
238
  showTitle: boolean;
214
239
  columns: (PickerColumn | PickerOption)[];
215
240
  allowHtml: boolean;
216
241
  swipeDuration: string | number;
217
- showPicker: boolean;
218
242
  showToolbar: boolean;
243
+ showPicker: boolean;
244
+ columnCounts: number;
219
245
  toolbarPosition: PickerToolbarPosition;
220
246
  optionHeight: string | number;
221
247
  visibleOptionNum: string | number;
@@ -1,6 +1,6 @@
1
1
  import { mergeProps as _mergeProps, createVNode as _createVNode } from "vue";
2
2
  import { ref, watch, computed, defineComponent, nextTick } from "vue";
3
- import { pick, extend, unitToPx, truthProp, HAPTICS_FEEDBACK, isSameValue, makeArrayProp, preventDefault, makeStringProp, makeNumericProp } from "../utils/index.mjs";
3
+ import { pick, extend, unitToPx, truthProp, HAPTICS_FEEDBACK, isSameValue, makeArrayProp, preventDefault, makeStringProp, makeNumericProp, makeNumberProp } from "../utils/index.mjs";
4
4
  import { bem, name, isOptionExist, getColumnsType, findOptionByValue, assignDefaultFields, formatCascadeColumns, getFirstEnabledOption } from "./utils.mjs";
5
5
  import { useChildren, useEventListener } from "@zartui/use";
6
6
  import { useExpose } from "../composables/use-expose.mjs";
@@ -9,6 +9,7 @@ import Column, { PICKER_KEY } from "./PickerColumn.mjs";
9
9
  import { Divider } from "../divider/index.mjs";
10
10
  import Toolbar, { pickerToolbarPropKeys, pickerToolbarProps, pickerToolbarSlots } from "./PickerToolbar.mjs";
11
11
  import Popup from "../popup/index.mjs";
12
+ import PickerOptions from "./PickerOptions.mjs";
12
13
  const pickerSharedProps = extend({
13
14
  loading: Boolean,
14
15
  readonly: Boolean,
@@ -27,7 +28,9 @@ const pickerProps = extend({}, pickerSharedProps, {
27
28
  toolbarPosition: makeStringProp("top"),
28
29
  columnsFieldNames: Object,
29
30
  showPicker: Boolean,
30
- popup: truthProp
31
+ popup: truthProp,
32
+ showType: makeStringProp("default"),
33
+ columnCounts: makeNumberProp(3)
31
34
  });
32
35
  var stdin_default = defineComponent({
33
36
  name,
@@ -37,6 +40,7 @@ var stdin_default = defineComponent({
37
40
  emit,
38
41
  slots
39
42
  }) {
43
+ const pickerOptions = ref();
40
44
  const columnsRef = ref();
41
45
  const selectedValues = ref(props.modelValue.slice(0));
42
46
  const showPicker = ref(props.showPicker);
@@ -63,6 +67,9 @@ var stdin_default = defineComponent({
63
67
  });
64
68
  const hasOptions = computed(() => currentColumns.value.some((options) => options.length));
65
69
  const selectedOptions = computed(() => currentColumns.value.map((options, index) => findOptionByValue(options, selectedValues.value[index], fields.value)));
70
+ const isButtonPicker = computed(() => {
71
+ return props.showType === "button" && columnsType.value === "default";
72
+ });
66
73
  watch(showPicker, (newValue) => {
67
74
  if (newValue !== props.showPicker) {
68
75
  emit("update:showPicker", newValue);
@@ -100,10 +107,12 @@ var stdin_default = defineComponent({
100
107
  }, getEventParams()));
101
108
  });
102
109
  };
103
- const onClickOption = (currentOption, columnIndex) => emit("clickOption", extend({
104
- columnIndex,
105
- currentOption
106
- }, getEventParams()));
110
+ const onClickOption = (currentOption, columnIndex) => {
111
+ emit("clickOption", extend({
112
+ columnIndex,
113
+ currentOption
114
+ }, getEventParams()));
115
+ };
107
116
  const confirm = () => {
108
117
  children.forEach((child) => child.stopMomentum());
109
118
  const params = getEventParams();
@@ -185,7 +194,8 @@ var stdin_default = defineComponent({
185
194
  }, null) : null;
186
195
  watch(currentColumns, (columns) => {
187
196
  columns.forEach((options, index) => {
188
- if (options.length && !isOptionExist(options, selectedValues.value[index], fields.value)) {
197
+ const judgeSelectedValue = isButtonPicker.value ? selectedValues.value[index] : true;
198
+ if (options.length && judgeSelectedValue && !isOptionExist(options, selectedValues.value[index], fields.value)) {
189
199
  setValue(index, getFirstEnabledOption(options)[fields.value.value]);
190
200
  }
191
201
  });
@@ -225,18 +235,61 @@ var stdin_default = defineComponent({
225
235
  "class": bem("loading")
226
236
  }, null) : null, topDivider(), (_a = slots["columns-top"]) == null ? void 0 : _a.call(slots), renderColumns(), (_b = slots["columns-bottom"]) == null ? void 0 : _b.call(slots), buttomDivider(), renderToolbar()]);
227
237
  };
228
- return () => {
229
- if (props.popup) {
230
- return _createVNode(Popup, {
231
- "show": showPicker.value,
232
- "onUpdate:show": [($event) => showPicker.value = $event, updateShow],
233
- "round": true,
234
- "position": "bottom"
238
+ const renderOptionItems = () => {
239
+ return currentColumns.value.map((options, columnIndex) => {
240
+ return _createVNode(PickerOptions, {
241
+ "ref": pickerOptions,
242
+ "value": selectedValues.value[columnIndex],
243
+ "columnCounts": props.columnCounts,
244
+ "fields": fields.value,
245
+ "options": options,
246
+ "allowHtml": props.allowHtml,
247
+ "readonly": props.readonly,
248
+ "itemHeight": optionHeight.value,
249
+ "onChange": (value) => onChange(value, columnIndex),
250
+ "onClickOption": (option) => onClickOption(option, columnIndex)
235
251
  }, {
236
- default: renderPicker
252
+ option: slots.option
237
253
  });
254
+ });
255
+ };
256
+ const renderOptions = () => _createVNode("div", {
257
+ "class": bem("options")
258
+ }, [renderOptionItems()]);
259
+ const renderTiledPicker = () => {
260
+ var _a, _b;
261
+ return _createVNode("div", {
262
+ "class": bem()
263
+ }, [renderTitleBar(), props.loading ? _createVNode(Loading, {
264
+ "class": bem("loading")
265
+ }, null) : null, topDivider(), (_a = slots["columns-top"]) == null ? void 0 : _a.call(slots), renderOptions(), (_b = slots["columns-bottom"]) == null ? void 0 : _b.call(slots), buttomDivider(), renderToolbar()]);
266
+ };
267
+ return () => {
268
+ if (isButtonPicker.value) {
269
+ if (props.popup) {
270
+ return _createVNode(Popup, {
271
+ "show": showPicker.value,
272
+ "onUpdate:show": [($event) => showPicker.value = $event, updateShow],
273
+ "round": true,
274
+ "position": "bottom"
275
+ }, {
276
+ default: renderTiledPicker
277
+ });
278
+ }
279
+ return renderTiledPicker();
280
+ } else {
281
+ if (props.popup) {
282
+ return _createVNode(Popup, {
283
+ "show": showPicker.value,
284
+ "onUpdate:show": [($event) => showPicker.value = $event, updateShow],
285
+ "round": true,
286
+ "position": "bottom"
287
+ }, {
288
+ default: renderPicker
289
+ });
290
+ }
291
+ return renderPicker();
238
292
  }
239
- return renderPicker();
240
293
  };
241
294
  }
242
295
  });