vxe-pc-ui 4.1.19 → 4.1.21

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 (259) hide show
  1. package/README.md +83 -2
  2. package/es/anchor/src/anchor-link.js +1 -1
  3. package/es/anchor/src/anchor.js +1 -1
  4. package/es/breadcrumb/src/breadcrumb.js +1 -1
  5. package/es/button/src/button-group.js +4 -1
  6. package/es/button/src/button.js +2 -1
  7. package/es/calendar/src/calendar.js +64 -32
  8. package/es/card/src/card.js +4 -3
  9. package/es/carousel/src/carousel-item.js +13 -3
  10. package/es/carousel/src/carousel.js +16 -8
  11. package/es/checkbox/src/checkbox.js +30 -14
  12. package/es/checkbox/src/group.js +17 -8
  13. package/es/collapse-pane/index.js +1 -1
  14. package/es/countdown/src/countdown.js +17 -8
  15. package/es/date-picker/src/date-picker.js +148 -69
  16. package/es/drawer/src/drawer.js +86 -46
  17. package/es/form/render/index.js +1 -2
  18. package/es/form/src/form-config-item.js +4 -3
  19. package/es/form/src/form-gather.js +5 -3
  20. package/es/form/src/form-item.js +15 -10
  21. package/es/form/src/form.js +11 -8
  22. package/es/form/src/render.js +2 -1
  23. package/es/form/src/util.js +2 -1
  24. package/es/icon/src/icon.js +3 -0
  25. package/es/icon/style.css +1 -1
  26. package/es/icon-picker/src/icon-picker.js +24 -11
  27. package/es/image/src/group.js +4 -1
  28. package/es/image/src/preview.js +1 -1
  29. package/es/input/src/input.js +131 -66
  30. package/es/layout-aside/src/layout-aside.js +1 -1
  31. package/es/list/src/list.js +7 -5
  32. package/es/list-design/src/list-design.js +1 -1
  33. package/es/list-design/src/list-view.js +1 -1
  34. package/es/loading/src/loading.js +4 -1
  35. package/es/menu/src/menu.js +4 -3
  36. package/es/number-input/src/number-input.js +100 -77
  37. package/es/pager/src/pager.js +85 -45
  38. package/es/password-input/src/password-input.js +2 -2
  39. package/es/print/src/page-break.js +11 -2
  40. package/es/print/src/print.js +6 -4
  41. package/es/pulldown/src/pulldown.js +19 -13
  42. package/es/radio/src/button.js +2 -2
  43. package/es/radio/src/group.js +8 -4
  44. package/es/row/src/row.js +1 -1
  45. package/es/select/src/optgroup.js +19 -10
  46. package/es/select/src/option.js +17 -9
  47. package/es/select/src/select.js +64 -41
  48. package/es/select/src/util.js +2 -2
  49. package/es/style.css +1 -1
  50. package/es/style.min.css +1 -1
  51. package/es/tabs/src/tab-pane.js +13 -3
  52. package/es/tabs/src/tabs.js +57 -47
  53. package/es/textarea/src/textarea.js +28 -10
  54. package/es/tooltip/src/tooltip.js +107 -78
  55. package/es/tree/src/tree.js +6 -3
  56. package/es/tree-select/src/tree-select.js +18 -10
  57. package/es/ui/index.js +1 -7
  58. package/es/ui/src/log.js +1 -1
  59. package/es/upload/src/upload.js +5 -5
  60. package/lib/anchor/src/anchor-link.js +1 -1
  61. package/lib/anchor/src/anchor-link.min.js +1 -1
  62. package/lib/anchor/src/anchor.js +1 -1
  63. package/lib/anchor/src/anchor.min.js +1 -1
  64. package/lib/breadcrumb/src/breadcrumb.js +1 -1
  65. package/lib/breadcrumb/src/breadcrumb.min.js +1 -1
  66. package/lib/button/src/button-group.js +4 -1
  67. package/lib/button/src/button-group.min.js +1 -1
  68. package/lib/button/src/button.js +2 -1
  69. package/lib/button/src/button.min.js +1 -1
  70. package/lib/calendar/src/calendar.js +42 -24
  71. package/lib/calendar/src/calendar.min.js +1 -1
  72. package/lib/card/src/card.js +6 -5
  73. package/lib/card/src/card.min.js +1 -1
  74. package/lib/carousel/src/carousel-item.js +16 -3
  75. package/lib/carousel/src/carousel-item.min.js +1 -1
  76. package/lib/carousel/src/carousel.js +18 -8
  77. package/lib/carousel/src/carousel.min.js +1 -1
  78. package/lib/checkbox/src/checkbox.js +16 -12
  79. package/lib/checkbox/src/checkbox.min.js +1 -1
  80. package/lib/checkbox/src/group.js +10 -7
  81. package/lib/checkbox/src/group.min.js +1 -1
  82. package/lib/collapse-pane/index.js +1 -1
  83. package/lib/collapse-pane/index.min.js +1 -1
  84. package/lib/countdown/src/countdown.js +15 -7
  85. package/lib/countdown/src/countdown.min.js +1 -1
  86. package/lib/date-picker/src/date-picker.js +124 -62
  87. package/lib/date-picker/src/date-picker.min.js +1 -1
  88. package/lib/drawer/src/drawer.js +15 -30
  89. package/lib/drawer/src/drawer.min.js +1 -1
  90. package/lib/form/render/index.js +1 -4
  91. package/lib/form/render/index.min.js +1 -1
  92. package/lib/form/src/form-config-item.js +4 -5
  93. package/lib/form/src/form-config-item.min.js +1 -1
  94. package/lib/form/src/form-gather.js +11 -9
  95. package/lib/form/src/form-gather.min.js +1 -1
  96. package/lib/form/src/form-item.js +11 -12
  97. package/lib/form/src/form-item.min.js +1 -1
  98. package/lib/form/src/form.js +7 -7
  99. package/lib/form/src/form.min.js +1 -1
  100. package/lib/form/src/render.js +2 -1
  101. package/lib/form/src/util.js +2 -1
  102. package/lib/icon/src/icon.js +3 -0
  103. package/lib/icon/src/icon.min.js +1 -1
  104. package/lib/icon/style/style.css +1 -1
  105. package/lib/icon/style/style.min.css +1 -1
  106. package/lib/icon-picker/src/icon-picker.js +22 -12
  107. package/lib/icon-picker/src/icon-picker.min.js +1 -1
  108. package/lib/image/src/group.js +4 -1
  109. package/lib/image/src/group.min.js +1 -1
  110. package/lib/image/src/preview.js +1 -1
  111. package/lib/image/src/preview.min.js +1 -1
  112. package/lib/index.umd.js +884 -649
  113. package/lib/index.umd.min.js +1 -1
  114. package/lib/input/src/input.js +79 -51
  115. package/lib/input/src/input.min.js +1 -1
  116. package/lib/layout-aside/src/layout-aside.js +1 -1
  117. package/lib/layout-aside/src/layout-aside.min.js +1 -1
  118. package/lib/list/src/list.js +9 -5
  119. package/lib/list/src/list.min.js +1 -1
  120. package/lib/list-design/src/list-design.js +1 -1
  121. package/lib/list-design/src/list-design.min.js +1 -1
  122. package/lib/list-design/src/list-view.js +1 -1
  123. package/lib/list-design/src/list-view.min.js +1 -1
  124. package/lib/loading/src/loading.js +4 -1
  125. package/lib/loading/src/loading.min.js +1 -1
  126. package/lib/menu/src/menu.js +4 -3
  127. package/lib/menu/src/menu.min.js +1 -1
  128. package/lib/number-input/src/number-input.js +67 -69
  129. package/lib/number-input/src/number-input.min.js +1 -1
  130. package/lib/pager/src/pager.js +40 -39
  131. package/lib/pager/src/pager.min.js +1 -1
  132. package/lib/password-input/src/password-input.js +2 -2
  133. package/lib/print/src/page-break.js +14 -2
  134. package/lib/print/src/page-break.min.js +1 -1
  135. package/lib/print/src/print.js +8 -6
  136. package/lib/print/src/print.min.js +1 -1
  137. package/lib/pulldown/src/pulldown.js +19 -13
  138. package/lib/pulldown/src/pulldown.min.js +1 -1
  139. package/lib/radio/src/button.js +2 -2
  140. package/lib/radio/src/group.js +8 -4
  141. package/lib/radio/src/group.min.js +1 -1
  142. package/lib/row/src/row.js +1 -1
  143. package/lib/row/src/row.min.js +1 -1
  144. package/lib/select/src/optgroup.js +12 -9
  145. package/lib/select/src/optgroup.min.js +1 -1
  146. package/lib/select/src/option.js +9 -7
  147. package/lib/select/src/option.min.js +1 -1
  148. package/lib/select/src/select.js +52 -41
  149. package/lib/select/src/select.min.js +1 -1
  150. package/lib/select/src/util.js +2 -2
  151. package/lib/select/src/util.min.js +1 -1
  152. package/lib/style.css +1 -1
  153. package/lib/style.min.css +1 -1
  154. package/lib/tabs/src/tab-pane.js +16 -3
  155. package/lib/tabs/src/tab-pane.min.js +1 -1
  156. package/lib/tabs/src/tabs.js +62 -50
  157. package/lib/tabs/src/tabs.min.js +1 -1
  158. package/lib/textarea/src/textarea.js +4 -4
  159. package/lib/tooltip/src/tooltip.js +96 -88
  160. package/lib/tooltip/src/tooltip.min.js +1 -1
  161. package/lib/tree/src/tree.js +2 -2
  162. package/lib/tree/src/tree.min.js +1 -1
  163. package/lib/tree-select/src/tree-select.js +13 -8
  164. package/lib/tree-select/src/tree-select.min.js +1 -1
  165. package/lib/ui/index.js +3 -10
  166. package/lib/ui/index.min.js +1 -1
  167. package/lib/ui/src/log.js +1 -1
  168. package/lib/ui/src/log.min.js +1 -1
  169. package/lib/upload/src/upload.js +5 -5
  170. package/lib/upload/src/upload.min.js +1 -1
  171. package/package.json +2 -2
  172. package/packages/anchor/src/anchor-link.ts +2 -2
  173. package/packages/anchor/src/anchor.ts +2 -2
  174. package/packages/breadcrumb/src/breadcrumb.ts +2 -2
  175. package/packages/button/src/button-group.ts +4 -1
  176. package/packages/button/src/button.ts +6 -5
  177. package/packages/calendar/src/calendar.ts +67 -35
  178. package/packages/card/src/card.ts +6 -4
  179. package/packages/carousel/src/carousel-item.ts +19 -4
  180. package/packages/carousel/src/carousel.ts +19 -11
  181. package/packages/checkbox/src/checkbox.ts +34 -15
  182. package/packages/checkbox/src/group.ts +22 -10
  183. package/packages/collapse-pane/index.ts +1 -1
  184. package/packages/countdown/src/countdown.ts +20 -11
  185. package/packages/date-picker/src/date-picker.ts +160 -80
  186. package/packages/drawer/src/drawer.ts +91 -50
  187. package/packages/form/render/index.ts +1 -3
  188. package/packages/form/src/form-config-item.ts +4 -3
  189. package/packages/form/src/form-gather.ts +5 -3
  190. package/packages/form/src/form-item.ts +15 -10
  191. package/packages/form/src/form.ts +12 -10
  192. package/packages/form/src/render.ts +2 -1
  193. package/packages/form/src/util.ts +2 -1
  194. package/packages/icon/src/icon.ts +3 -0
  195. package/packages/icon-picker/src/icon-picker.ts +31 -17
  196. package/packages/image/src/group.ts +4 -1
  197. package/packages/image/src/preview.ts +2 -2
  198. package/packages/input/src/input.ts +138 -75
  199. package/packages/layout-aside/src/layout-aside.ts +2 -2
  200. package/packages/list/src/list.ts +12 -11
  201. package/packages/list-design/src/list-design.ts +2 -2
  202. package/packages/list-design/src/list-view.ts +2 -2
  203. package/packages/loading/src/loading.ts +5 -2
  204. package/packages/menu/src/menu.ts +5 -4
  205. package/packages/number-input/src/number-input.ts +102 -79
  206. package/packages/pager/src/pager.ts +91 -50
  207. package/packages/password-input/src/password-input.ts +2 -2
  208. package/packages/print/src/page-break.ts +18 -4
  209. package/packages/print/src/print.ts +10 -5
  210. package/packages/pulldown/src/pulldown.ts +28 -22
  211. package/packages/radio/src/button.ts +2 -2
  212. package/packages/radio/src/group.ts +9 -5
  213. package/packages/row/src/row.ts +2 -2
  214. package/packages/select/src/optgroup.ts +22 -13
  215. package/packages/select/src/option.ts +18 -10
  216. package/packages/select/src/select.ts +79 -52
  217. package/packages/select/src/util.ts +3 -3
  218. package/packages/tabs/src/tab-pane.ts +20 -5
  219. package/packages/tabs/src/tabs.ts +59 -49
  220. package/packages/textarea/src/textarea.ts +28 -10
  221. package/packages/tooltip/src/tooltip.ts +118 -84
  222. package/packages/tree/src/tree.ts +7 -4
  223. package/packages/tree-select/src/tree-select.ts +25 -16
  224. package/packages/ui/index.ts +0 -7
  225. package/packages/upload/src/upload.ts +6 -6
  226. package/types/components/calendar.d.ts +6 -0
  227. package/types/components/carousel.d.ts +5 -0
  228. package/types/components/countdown.d.ts +4 -0
  229. package/types/components/date-picker.d.ts +23 -5
  230. package/types/components/drawer.d.ts +0 -1
  231. package/types/components/form.d.ts +4 -2
  232. package/types/components/icon-picker.d.ts +4 -0
  233. package/types/components/input.d.ts +9 -1
  234. package/types/components/list.d.ts +1 -0
  235. package/types/components/number-input.d.ts +6 -2
  236. package/types/components/optgroup.d.ts +10 -4
  237. package/types/components/pulldown.d.ts +5 -1
  238. package/types/components/select.d.ts +4 -0
  239. package/types/components/tabs.d.ts +4 -0
  240. package/types/components/toolbar.d.ts +5 -0
  241. package/types/components/tooltip.d.ts +4 -0
  242. package/types/components/tree-select.d.ts +4 -0
  243. package/types/ui/index.d.ts +0 -22
  244. /package/es/{collapse-pane → collapse}/src/collapse-pane.js +0 -0
  245. /package/es/icon/style/{iconfont.1725597808239.ttf → iconfont.1725941866604.ttf} +0 -0
  246. /package/es/icon/style/{iconfont.1725597808239.woff → iconfont.1725941866604.woff} +0 -0
  247. /package/es/icon/style/{iconfont.1725597808239.woff2 → iconfont.1725941866604.woff2} +0 -0
  248. /package/es/{iconfont.1725597808239.ttf → iconfont.1725941866604.ttf} +0 -0
  249. /package/es/{iconfont.1725597808239.woff → iconfont.1725941866604.woff} +0 -0
  250. /package/es/{iconfont.1725597808239.woff2 → iconfont.1725941866604.woff2} +0 -0
  251. /package/lib/{collapse-pane → collapse}/src/collapse-pane.js +0 -0
  252. /package/lib/{collapse-pane → collapse}/src/collapse-pane.min.js +0 -0
  253. /package/lib/icon/style/{iconfont.1725597808239.ttf → iconfont.1725941866604.ttf} +0 -0
  254. /package/lib/icon/style/{iconfont.1725597808239.woff → iconfont.1725941866604.woff} +0 -0
  255. /package/lib/icon/style/{iconfont.1725597808239.woff2 → iconfont.1725941866604.woff2} +0 -0
  256. /package/lib/{iconfont.1725597808239.ttf → iconfont.1725941866604.ttf} +0 -0
  257. /package/lib/{iconfont.1725597808239.woff → iconfont.1725941866604.woff} +0 -0
  258. /package/lib/{iconfont.1725597808239.woff2 → iconfont.1725941866604.woff2} +0 -0
  259. /package/packages/{collapse-pane → collapse}/src/collapse-pane.ts +0 -0
@@ -9,7 +9,10 @@ export default defineComponent({
9
9
  modelValue: String,
10
10
  placeholder: String,
11
11
  clearable: Boolean,
12
- size: { type: String, default: () => getConfig().iconPicker.size || getConfig().size },
12
+ size: {
13
+ type: String,
14
+ default: () => getConfig().iconPicker.size || getConfig().size
15
+ },
13
16
  className: [String, Function],
14
17
  popupClassName: [String, Function],
15
18
  showIconTitle: {
@@ -40,6 +43,7 @@ export default defineComponent({
40
43
  setup(props, context) {
41
44
  const { emit } = context;
42
45
  const $xeModal = inject('$xeModal', null);
46
+ const $xeDrawer = inject('$xeDrawer', null);
43
47
  const $xeTable = inject('$xeTable', null);
44
48
  const $xeForm = inject('$xeForm', null);
45
49
  const formItemInfo = inject('xeFormItemInfo', null);
@@ -47,7 +51,7 @@ export default defineComponent({
47
51
  const { computeSize } = useSize(props);
48
52
  const reactData = reactive({
49
53
  initialized: false,
50
- selectIcon: '',
54
+ selectIcon: `${props.modelValue || ''}`,
51
55
  panelIndex: 0,
52
56
  panelStyle: {},
53
57
  panelPlacement: null,
@@ -55,6 +59,9 @@ export default defineComponent({
55
59
  isAniVisible: false,
56
60
  isActivated: false
57
61
  });
62
+ const internalData = {
63
+ hpTimeout: undefined
64
+ };
58
65
  const refElem = ref();
59
66
  const refInput = ref();
60
67
  const refOptionPanel = ref();
@@ -96,7 +103,7 @@ export default defineComponent({
96
103
  if (XEUtils.isBoolean(globalTransfer)) {
97
104
  return globalTransfer;
98
105
  }
99
- if ($xeTable || $xeModal || $xeForm) {
106
+ if ($xeTable || $xeModal || $xeDrawer || $xeForm) {
100
107
  return true;
101
108
  }
102
109
  }
@@ -207,11 +214,14 @@ export default defineComponent({
207
214
  }
208
215
  });
209
216
  };
210
- let hidePanelTimeout;
211
217
  const showOptionPanel = () => {
218
+ const { hpTimeout } = internalData;
212
219
  const isDisabled = computeIsDisabled.value;
213
220
  if (!isDisabled) {
214
- clearTimeout(hidePanelTimeout);
221
+ if (hpTimeout) {
222
+ clearTimeout(hpTimeout);
223
+ internalData.hpTimeout = undefined;
224
+ }
215
225
  if (!reactData.initialized) {
216
226
  reactData.initialized = true;
217
227
  }
@@ -226,7 +236,7 @@ export default defineComponent({
226
236
  };
227
237
  const hideOptionPanel = () => {
228
238
  reactData.visiblePanel = false;
229
- hidePanelTimeout = window.setTimeout(() => {
239
+ internalData.hpTimeout = window.setTimeout(() => {
230
240
  reactData.isAniVisible = false;
231
241
  }, 350);
232
242
  };
@@ -351,10 +361,11 @@ export default defineComponent({
351
361
  const handleGlobalBlurEvent = () => {
352
362
  hideOptionPanel();
353
363
  };
364
+ const dispatchEvent = (type, params, evnt) => {
365
+ emit(type, createEvent(evnt, { $iconPicker: $xeIconPicker }, params));
366
+ };
354
367
  iconPickerMethods = {
355
- dispatchEvent(type, params, evnt) {
356
- emit(type, createEvent(evnt, { $iconPicker: $xeIconPicker }, params));
357
- },
368
+ dispatchEvent,
358
369
  isPanelVisible() {
359
370
  return reactData.visiblePanel;
360
371
  },
@@ -519,13 +530,14 @@ export default defineComponent({
519
530
  initialized
520
531
  ? h('div', {
521
532
  class: 'vxe-ico-picker--panel-wrapper'
522
- }, renderIconWrapper())
533
+ }, [
534
+ renderIconWrapper()
535
+ ])
523
536
  : createCommentVNode()
524
537
  ])
525
538
  ])
526
539
  ]);
527
540
  };
528
- $xeIconPicker.renderVN = renderVN;
529
541
  watch(() => props.modelValue, (val) => {
530
542
  reactData.selectIcon = `${val || ''}`;
531
543
  });
@@ -542,6 +554,7 @@ export default defineComponent({
542
554
  globalEvents.off($xeIconPicker, 'blur');
543
555
  });
544
556
  provide('$xeIconPicker', $xeIconPicker);
557
+ $xeIconPicker.renderVN = renderVN;
545
558
  return $xeIconPicker;
546
559
  },
547
560
  render() {
@@ -103,6 +103,9 @@ export default defineComponent({
103
103
  };
104
104
  $xeImageGroup.renderVN = renderVN;
105
105
  provide('$xeImageGroup', $xeImageGroup);
106
- return renderVN;
106
+ return $xeImageGroup;
107
+ },
108
+ render() {
109
+ return this.renderVN();
107
110
  }
108
111
  });
@@ -582,7 +582,6 @@ export default defineComponent({
582
582
  renderBtnWrapper()
583
583
  ]);
584
584
  };
585
- $xeImagePreview.renderVN = renderVN;
586
585
  watch(() => props.modelValue, val => {
587
586
  reactData.activeIndex = val;
588
587
  resetStyle();
@@ -600,6 +599,7 @@ export default defineComponent({
600
599
  globalEvents.off($xeImagePreview, 'keydown');
601
600
  });
602
601
  provide('$xeImagePreview', $xeImagePreview);
602
+ $xeImagePreview.renderVN = renderVN;
603
603
  return renderVN;
604
604
  }
605
605
  });
@@ -10,10 +10,19 @@ export default defineComponent({
10
10
  name: 'VxeInput',
11
11
  props: {
12
12
  modelValue: [String, Number, Date],
13
- immediate: { type: Boolean, default: true },
13
+ immediate: {
14
+ type: Boolean,
15
+ default: true
16
+ },
14
17
  name: String,
15
- type: { type: String, default: 'text' },
16
- clearable: { type: Boolean, default: () => getConfig().input.clearable },
18
+ type: {
19
+ type: String,
20
+ default: 'text'
21
+ },
22
+ clearable: {
23
+ type: Boolean,
24
+ default: () => getConfig().input.clearable
25
+ },
17
26
  readonly: {
18
27
  type: Boolean,
19
28
  default: null
@@ -24,39 +33,81 @@ export default defineComponent({
24
33
  },
25
34
  placeholder: String,
26
35
  maxLength: [String, Number],
27
- autoComplete: { type: String, default: 'off' },
36
+ autoComplete: {
37
+ type: String,
38
+ default: 'off'
39
+ },
28
40
  align: String,
29
41
  form: String,
30
42
  className: String,
31
- size: { type: String, default: () => getConfig().input.size || getConfig().size },
43
+ size: {
44
+ type: String,
45
+ default: () => getConfig().input.size || getConfig().size
46
+ },
32
47
  multiple: Boolean,
33
48
  // text
34
49
  showWordCount: Boolean,
35
50
  countMethod: Function,
36
51
  // number、integer、float
37
- min: { type: [String, Number], default: null },
38
- max: { type: [String, Number], default: null },
52
+ min: {
53
+ type: [String, Number],
54
+ default: null
55
+ },
56
+ max: {
57
+ type: [String, Number],
58
+ default: null
59
+ },
39
60
  step: [String, Number],
40
- exponential: { type: Boolean, default: () => getConfig().input.exponential },
61
+ exponential: {
62
+ type: Boolean,
63
+ default: () => getConfig().input.exponential
64
+ },
41
65
  // number、integer、float、password
42
- controls: { type: Boolean, default: () => getConfig().input.controls },
66
+ controls: {
67
+ type: Boolean,
68
+ default: () => getConfig().input.controls
69
+ },
43
70
  // float
44
- digits: { type: [String, Number], default: () => getConfig().input.digits },
71
+ digits: {
72
+ type: [String, Number],
73
+ default: () => getConfig().input.digits
74
+ },
45
75
  // date、week、month、quarter、year
46
- startDate: { type: [String, Number, Date], default: () => getConfig().input.startDate },
47
- endDate: { type: [String, Number, Date], default: () => getConfig().input.endDate },
76
+ startDate: {
77
+ type: [String, Number, Date],
78
+ default: () => getConfig().input.startDate
79
+ },
80
+ endDate: {
81
+ type: [String, Number, Date],
82
+ default: () => getConfig().input.endDate
83
+ },
48
84
  minDate: [String, Number, Date],
49
85
  maxDate: [String, Number, Date],
50
86
  // 已废弃 startWeek,被 startDay 替换
51
87
  startWeek: Number,
52
- startDay: { type: [String, Number], default: () => getConfig().input.startDay },
88
+ startDay: {
89
+ type: [String, Number],
90
+ default: () => getConfig().input.startDay
91
+ },
53
92
  labelFormat: String,
54
93
  valueFormat: String,
55
- editable: { type: Boolean, default: true },
56
- festivalMethod: { type: Function, default: () => getConfig().input.festivalMethod },
57
- disabledMethod: { type: Function, default: () => getConfig().input.disabledMethod },
94
+ editable: {
95
+ type: Boolean,
96
+ default: true
97
+ },
98
+ festivalMethod: {
99
+ type: Function,
100
+ default: () => getConfig().input.festivalMethod
101
+ },
102
+ disabledMethod: {
103
+ type: Function,
104
+ default: () => getConfig().input.disabledMethod
105
+ },
58
106
  // week
59
- selectDay: { type: [String, Number], default: () => getConfig().input.selectDay },
107
+ selectDay: {
108
+ type: [String, Number],
109
+ default: () => getConfig().input.selectDay
110
+ },
60
111
  prefixIcon: String,
61
112
  suffixIcon: String,
62
113
  placement: String,
@@ -93,21 +144,19 @@ export default defineComponent({
93
144
  setup(props, context) {
94
145
  const { slots, emit } = context;
95
146
  const $xeModal = inject('$xeModal', null);
147
+ const $xeDrawer = inject('$xeDrawer', null);
96
148
  const $xeTable = inject('$xeTable', null);
97
149
  const $xeForm = inject('$xeForm', null);
98
150
  const formItemInfo = inject('xeFormItemInfo', null);
99
151
  const xID = XEUtils.uniqueId();
100
152
  const { computeSize } = useSize(props);
101
- const yearSize = 12;
102
- const monthSize = 20;
103
- const quarterSize = 8;
104
153
  const reactData = reactive({
105
154
  initialized: false,
106
155
  panelIndex: 0,
107
156
  showPwd: false,
108
157
  visiblePanel: false,
109
158
  isAniVisible: false,
110
- panelStyle: null,
159
+ panelStyle: {},
111
160
  panelPlacement: '',
112
161
  isActivated: false,
113
162
  inputValue: props.modelValue,
@@ -118,6 +167,13 @@ export default defineComponent({
118
167
  selectMonth: null,
119
168
  currentDate: null
120
169
  });
170
+ const internalData = {
171
+ yearSize: 12,
172
+ monthSize: 20,
173
+ quarterSize: 8,
174
+ hpTimeout: undefined,
175
+ dnTimeout: undefined
176
+ };
121
177
  const refElem = ref();
122
178
  const refInputTarget = ref();
123
179
  const refInputPanel = ref();
@@ -132,6 +188,7 @@ export default defineComponent({
132
188
  props,
133
189
  context,
134
190
  reactData,
191
+ internalData,
135
192
  getRefMaps: () => refMaps
136
193
  };
137
194
  let inputMethods = {};
@@ -149,7 +206,7 @@ export default defineComponent({
149
206
  if (XEUtils.isBoolean(globalTransfer)) {
150
207
  return globalTransfer;
151
208
  }
152
- if ($xeTable || $xeModal || $xeForm) {
209
+ if ($xeTable || $xeModal || $xeDrawer || $xeForm) {
153
210
  return true;
154
211
  }
155
212
  }
@@ -324,10 +381,11 @@ export default defineComponent({
324
381
  if (isDatePickerType) {
325
382
  return labelFormat || dateValueFormat || getI18n(`vxe.input.date.labelFormat.${props.type}`);
326
383
  }
327
- return null;
384
+ return '';
328
385
  });
329
386
  const computeYearList = computed(() => {
330
387
  const { selectMonth, currentDate } = reactData;
388
+ const { yearSize } = internalData;
331
389
  const years = [];
332
390
  if (selectMonth && currentDate) {
333
391
  const currFullYear = currentDate.getFullYear();
@@ -421,6 +479,7 @@ export default defineComponent({
421
479
  });
422
480
  const computeQuarterList = computed(() => {
423
481
  const { selectMonth, currentDate } = reactData;
482
+ const { quarterSize } = internalData;
424
483
  const quarters = [];
425
484
  if (selectMonth && currentDate) {
426
485
  const currFullYear = currentDate.getFullYear();
@@ -450,6 +509,7 @@ export default defineComponent({
450
509
  });
451
510
  const computeMonthList = computed(() => {
452
511
  const { selectMonth, currentDate } = reactData;
512
+ const { monthSize } = internalData;
453
513
  const months = [];
454
514
  if (selectMonth && currentDate) {
455
515
  const currFullYear = currentDate.getFullYear();
@@ -594,12 +654,6 @@ export default defineComponent({
594
654
  }
595
655
  return getI18n('vxe.base.pleaseInput');
596
656
  });
597
- const computeInpMaxlength = computed(() => {
598
- const isNumType = computeIsNumType.value;
599
- const inpMaxLength = computeInpMaxLength.value;
600
- // 数值最大长度限制 16 位,包含小数
601
- return isNumType && !XEUtils.toNumber(inpMaxLength) ? 16 : inpMaxLength;
602
- });
603
657
  const computeInpImmediate = computed(() => {
604
658
  const { type, immediate } = props;
605
659
  return immediate || !(type === 'text' || type === 'number' || type === 'integer' || type === 'float');
@@ -637,19 +691,19 @@ export default defineComponent({
637
691
  });
638
692
  const getNumberValue = (val) => {
639
693
  const { type, exponential } = props;
640
- const inpMaxlength = computeInpMaxlength.value;
694
+ const inpMaxLength = computeInpMaxLength.value;
641
695
  const digitsValue = computeDigitsValue.value;
642
696
  const restVal = (type === 'float' ? toFloatValueFixed(val, digitsValue) : XEUtils.toValueString(val));
643
697
  if (exponential && (val === restVal || XEUtils.toValueString(val).toLowerCase() === XEUtils.toNumber(restVal).toExponential())) {
644
698
  return val;
645
699
  }
646
- return restVal.slice(0, inpMaxlength);
700
+ return restVal.slice(0, inpMaxLength);
647
701
  };
648
702
  const triggerEvent = (evnt) => {
649
703
  const { inputValue } = reactData;
650
704
  inputMethods.dispatchEvent(evnt.type, { value: inputValue }, evnt);
651
705
  };
652
- const emitModel = (value, evnt) => {
706
+ const handleChange = (value, evnt) => {
653
707
  reactData.inputValue = value;
654
708
  emit('update:modelValue', value);
655
709
  inputMethods.dispatchEvent('input', { value }, evnt);
@@ -667,7 +721,7 @@ export default defineComponent({
667
721
  reactData.inputValue = value;
668
722
  if (!isDatePickerType) {
669
723
  if (inpImmediate) {
670
- emitModel(value, evnt);
724
+ handleChange(value, evnt);
671
725
  }
672
726
  else {
673
727
  inputMethods.dispatchEvent('input', { value }, evnt);
@@ -700,11 +754,10 @@ export default defineComponent({
700
754
  inputMethods.dispatchEvent('prefix-click', { value: inputValue }, evnt);
701
755
  }
702
756
  };
703
- let hidePanelTimeout;
704
757
  const hidePanel = () => {
705
758
  return new Promise(resolve => {
706
759
  reactData.visiblePanel = false;
707
- hidePanelTimeout = window.setTimeout(() => {
760
+ internalData.hpTimeout = window.setTimeout(() => {
708
761
  reactData.isAniVisible = false;
709
762
  resolve();
710
763
  }, 350);
@@ -720,7 +773,7 @@ export default defineComponent({
720
773
  if (isNumType || ['text', 'search', 'password'].indexOf(type) > -1) {
721
774
  focus();
722
775
  }
723
- emitModel('', evnt);
776
+ handleChange('', evnt);
724
777
  inputMethods.dispatchEvent('clear', { value }, evnt);
725
778
  };
726
779
  const clickSuffixEvent = (evnt) => {
@@ -788,7 +841,7 @@ export default defineComponent({
788
841
  if (inputValue) {
789
842
  const validValue = toFloatValueFixed(inputValue, digitsValue);
790
843
  if (inputValue !== validValue) {
791
- emitModel(validValue, { type: 'init' });
844
+ handleChange(validValue, { type: 'init' });
792
845
  }
793
846
  }
794
847
  }
@@ -847,22 +900,22 @@ export default defineComponent({
847
900
  datetimeRest.push(item);
848
901
  }
849
902
  });
850
- emitModel(datetimeRest.map(date => XEUtils.toDateString(date, dateValueFormat)).join(','), { type: 'update' });
903
+ handleChange(datetimeRest.map(date => XEUtils.toDateString(date, dateValueFormat)).join(','), { type: 'update' });
851
904
  }
852
905
  else {
853
906
  // 如果是日期类型
854
907
  if (dateMultipleValue.some(val => XEUtils.isEqual(val, inpVal))) {
855
- emitModel(dateMultipleValue.filter(val => !XEUtils.isEqual(val, inpVal)).join(','), { type: 'update' });
908
+ handleChange(dateMultipleValue.filter(val => !XEUtils.isEqual(val, inpVal)).join(','), { type: 'update' });
856
909
  }
857
910
  else {
858
- emitModel(dateMultipleValue.concat([inpVal]).join(','), { type: 'update' });
911
+ handleChange(dateMultipleValue.concat([inpVal]).join(','), { type: 'update' });
859
912
  }
860
913
  }
861
914
  }
862
915
  else {
863
916
  // 如果为单选
864
917
  if (!XEUtils.isEqual(modelValue, inpVal)) {
865
- emitModel(inpVal, { type: 'update' });
918
+ handleChange(inpVal, { type: 'update' });
866
919
  }
867
920
  }
868
921
  };
@@ -889,7 +942,7 @@ export default defineComponent({
889
942
  inpNumVal = inpStringVal;
890
943
  }
891
944
  }
892
- emitModel(getNumberValue(inpNumVal), { type: 'check' });
945
+ handleChange(getNumberValue(inpNumVal), { type: 'check' });
893
946
  }
894
947
  }
895
948
  else if (isDatePickerType) {
@@ -899,7 +952,7 @@ export default defineComponent({
899
952
  if (type === 'time') {
900
953
  inpDateVal = XEUtils.toDateString(inpDateVal, dateLabelFormat);
901
954
  if (inputValue !== inpDateVal) {
902
- emitModel(inpDateVal, { type: 'check' });
955
+ handleChange(inpDateVal, { type: 'check' });
903
956
  }
904
957
  reactData.inputValue = inpDateVal;
905
958
  }
@@ -929,7 +982,7 @@ export default defineComponent({
929
982
  }
930
983
  }
931
984
  else {
932
- emitModel('', { type: 'check' });
985
+ handleChange('', { type: 'check' });
933
986
  }
934
987
  }
935
988
  }
@@ -938,7 +991,7 @@ export default defineComponent({
938
991
  const { inputValue } = reactData;
939
992
  const inpImmediate = computeInpImmediate.value;
940
993
  if (!inpImmediate) {
941
- emitModel(inputValue, evnt);
994
+ handleChange(inputValue, evnt);
942
995
  }
943
996
  afterCheckValue();
944
997
  if (!reactData.visiblePanel) {
@@ -981,19 +1034,18 @@ export default defineComponent({
981
1034
  }
982
1035
  emitInputEvent(getNumberValue(restNum), evnt);
983
1036
  };
984
- let downbumTimeout;
985
1037
  const numberNextEvent = (evnt) => {
986
1038
  const isDisabled = computeIsDisabled.value;
987
1039
  const isReadonly = computeIsReadonly.value;
988
1040
  const isDisabledSubtractNumber = computeIsDisabledSubtractNumber.value;
989
- clearTimeout(downbumTimeout);
1041
+ numberStopDown();
990
1042
  if (!isDisabled && !isReadonly && !isDisabledSubtractNumber) {
991
1043
  numberChange(false, evnt);
992
1044
  }
993
1045
  inputMethods.dispatchEvent('next-number', {}, evnt);
994
1046
  };
995
1047
  const numberDownNextEvent = (evnt) => {
996
- downbumTimeout = window.setTimeout(() => {
1048
+ internalData.dnTimeout = window.setTimeout(() => {
997
1049
  numberNextEvent(evnt);
998
1050
  numberDownNextEvent(evnt);
999
1051
  }, 60);
@@ -1002,7 +1054,7 @@ export default defineComponent({
1002
1054
  const isDisabled = computeIsDisabled.value;
1003
1055
  const isReadonly = computeIsReadonly.value;
1004
1056
  const isDisabledAddNumber = computeIsDisabledAddNumber.value;
1005
- clearTimeout(downbumTimeout);
1057
+ numberStopDown();
1006
1058
  if (!isDisabled && !isReadonly && !isDisabledAddNumber) {
1007
1059
  numberChange(true, evnt);
1008
1060
  }
@@ -1051,10 +1103,14 @@ export default defineComponent({
1051
1103
  };
1052
1104
  // 数值
1053
1105
  const numberStopDown = () => {
1054
- clearTimeout(downbumTimeout);
1106
+ const { dnTimeout } = internalData;
1107
+ if (dnTimeout) {
1108
+ clearTimeout(dnTimeout);
1109
+ internalData.dnTimeout = undefined;
1110
+ }
1055
1111
  };
1056
1112
  const numberDownPrevEvent = (evnt) => {
1057
- downbumTimeout = window.setTimeout(() => {
1113
+ internalData.dnTimeout = window.setTimeout(() => {
1058
1114
  numberPrevEvent(evnt);
1059
1115
  numberDownPrevEvent(evnt);
1060
1116
  }, 60);
@@ -1069,7 +1125,7 @@ export default defineComponent({
1069
1125
  else {
1070
1126
  numberNextEvent(evnt);
1071
1127
  }
1072
- downbumTimeout = window.setTimeout(() => {
1128
+ internalData.dnTimeout = window.setTimeout(() => {
1073
1129
  if (isPrevNumber) {
1074
1130
  numberDownPrevEvent(evnt);
1075
1131
  }
@@ -1117,6 +1173,7 @@ export default defineComponent({
1117
1173
  const datePrevEvent = (evnt) => {
1118
1174
  const { type } = props;
1119
1175
  const { datePanelType, selectMonth } = reactData;
1176
+ const { yearSize } = internalData;
1120
1177
  const isDisabledPrevDateBtn = computeIsDisabledPrevDateBtn.value;
1121
1178
  if (!isDisabledPrevDateBtn) {
1122
1179
  if (type === 'year') {
@@ -1155,6 +1212,7 @@ export default defineComponent({
1155
1212
  const dateNextEvent = (evnt) => {
1156
1213
  const { type } = props;
1157
1214
  const { datePanelType, selectMonth } = reactData;
1215
+ const { yearSize } = internalData;
1158
1216
  const isDisabledNextDateBtn = computeIsDisabledNextDateBtn.value;
1159
1217
  if (!isDisabledNextDateBtn) {
1160
1218
  if (type === 'year') {
@@ -1337,11 +1395,11 @@ export default defineComponent({
1337
1395
  datetimeRest.push(item);
1338
1396
  }
1339
1397
  });
1340
- emitModel(datetimeRest.map(date => XEUtils.toDateString(date, dateValueFormat)).join(','), { type: 'update' });
1398
+ handleChange(datetimeRest.map(date => XEUtils.toDateString(date, dateValueFormat)).join(','), { type: 'update' });
1341
1399
  }
1342
1400
  else {
1343
1401
  // 如果是日期类型
1344
- emitModel(dateMultipleValue.join(','), { type: 'update' });
1402
+ handleChange(dateMultipleValue.join(','), { type: 'update' });
1345
1403
  }
1346
1404
  }
1347
1405
  else {
@@ -1468,7 +1526,9 @@ export default defineComponent({
1468
1526
  reactData.datetimePanelValue = reactData.datePanelValue || XEUtils.getWhatDay(Date.now(), 0, 'first');
1469
1527
  nextTick(() => {
1470
1528
  const timeBodyElem = refInputTimeBody.value;
1471
- XEUtils.arrayEach(timeBodyElem.querySelectorAll('li.is--selected'), updateTimePos);
1529
+ XEUtils.arrayEach(timeBodyElem.querySelectorAll('li.is--selected'), (elem) => {
1530
+ updateTimePos(elem);
1531
+ });
1472
1532
  });
1473
1533
  }
1474
1534
  };
@@ -1556,13 +1616,17 @@ export default defineComponent({
1556
1616
  };
1557
1617
  const showPanel = () => {
1558
1618
  const { visiblePanel } = reactData;
1619
+ const { hpTimeout } = internalData;
1559
1620
  const isDisabled = computeIsDisabled.value;
1560
1621
  const isDatePickerType = computeIsDatePickerType.value;
1561
1622
  if (!isDisabled && !visiblePanel) {
1562
1623
  if (!reactData.initialized) {
1563
1624
  reactData.initialized = true;
1564
1625
  }
1565
- clearTimeout(hidePanelTimeout);
1626
+ if (hpTimeout) {
1627
+ clearTimeout(hpTimeout);
1628
+ internalData.hpTimeout = undefined;
1629
+ }
1566
1630
  reactData.isActivated = true;
1567
1631
  reactData.isAniVisible = true;
1568
1632
  if (isDatePickerType) {
@@ -1721,13 +1785,13 @@ export default defineComponent({
1721
1785
  }]
1722
1786
  }, extraItem && extraItem.label
1723
1787
  ? [
1724
- h('span', label),
1788
+ h('span', `${label || ''}`),
1725
1789
  h('span', {
1726
1790
  class: ['vxe-input--date-label--extra', extraItem.important ? 'is-important' : '', extraItem.className],
1727
1791
  style: extraItem.style
1728
1792
  }, XEUtils.toValueString(extraItem.label))
1729
1793
  ]
1730
- : label)
1794
+ : [`${label || ''}`])
1731
1795
  ];
1732
1796
  const festivalLabel = festivalItem.label;
1733
1797
  if (festivalLabel) {
@@ -1748,7 +1812,7 @@ export default defineComponent({
1748
1812
  }
1749
1813
  return labels;
1750
1814
  }
1751
- return label;
1815
+ return [`${label || ''}`];
1752
1816
  };
1753
1817
  const renderDateDayTable = () => {
1754
1818
  const { multiple } = props;
@@ -2298,10 +2362,11 @@ export default defineComponent({
2298
2362
  }
2299
2363
  return createCommentVNode();
2300
2364
  };
2365
+ const dispatchEvent = (type, params, evnt) => {
2366
+ emit(type, createEvent(evnt, { $input: $xeInput }, params));
2367
+ };
2301
2368
  inputMethods = {
2302
- dispatchEvent(type, params, evnt) {
2303
- emit(type, createEvent(evnt, { $input: $xeInput }, params));
2304
- },
2369
+ dispatchEvent,
2305
2370
  focus() {
2306
2371
  const inputElem = refInputTarget.value;
2307
2372
  reactData.isActivated = true;
@@ -2340,7 +2405,7 @@ export default defineComponent({
2340
2405
  const isCountError = computeIsCountError.value;
2341
2406
  const inputCount = computeInputCount.value;
2342
2407
  const inputReadonly = computeInputReadonly.value;
2343
- const inpMaxlength = computeInpMaxlength.value;
2408
+ const inpMaxLength = computeInpMaxLength.value;
2344
2409
  const inputType = computeInputType.value;
2345
2410
  const inpPlaceholder = computeInpPlaceholder.value;
2346
2411
  const isClearable = computeIsClearable.value;
@@ -2374,7 +2439,7 @@ export default defineComponent({
2374
2439
  name,
2375
2440
  type: inputType,
2376
2441
  placeholder: inpPlaceholder,
2377
- maxlength: inpMaxlength,
2442
+ maxlength: inpMaxLength,
2378
2443
  readonly: inputReadonly,
2379
2444
  disabled: isDisabled,
2380
2445
  autocomplete: autoComplete || autocomplete,
@@ -2397,11 +2462,10 @@ export default defineComponent({
2397
2462
  class: ['vxe-input--count', {
2398
2463
  'is--error': isCountError
2399
2464
  }]
2400
- }, countMethod ? `${countMethod({ value: inputValue })}` : `${inputCount}${inpMaxlength ? `/${inpMaxlength}` : ''}`)
2465
+ }, countMethod ? `${countMethod({ value: inputValue })}` : `${inputCount}${inpMaxLength ? `/${inpMaxLength}` : ''}`)
2401
2466
  : createCommentVNode()
2402
2467
  ]);
2403
2468
  };
2404
- $xeInput.renderVN = renderVN;
2405
2469
  watch(() => props.modelValue, (val) => {
2406
2470
  reactData.inputValue = val;
2407
2471
  changeValue();
@@ -2441,6 +2505,7 @@ export default defineComponent({
2441
2505
  globalEvents.off($xeInput, 'blur');
2442
2506
  });
2443
2507
  initValue();
2508
+ $xeInput.renderVN = renderVN;
2444
2509
  return $xeInput;
2445
2510
  },
2446
2511
  render() {
@@ -91,8 +91,8 @@ export default defineComponent({
91
91
  })
92
92
  ]);
93
93
  };
94
- $xeLayoutAside.renderVN = renderVN;
95
94
  provide('$xeLayoutAside', $xeLayoutAside);
95
+ $xeLayoutAside.renderVN = renderVN;
96
96
  return $xeLayoutAside;
97
97
  },
98
98
  render() {