vxe-pc-ui 4.1.20 → 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 (231) hide show
  1. package/README.md +82 -1
  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/calendar/src/calendar.js +64 -32
  7. package/es/carousel/src/carousel-item.js +13 -3
  8. package/es/carousel/src/carousel.js +16 -8
  9. package/es/checkbox/src/checkbox.js +30 -14
  10. package/es/checkbox/src/group.js +17 -8
  11. package/es/collapse-pane/index.js +1 -1
  12. package/es/countdown/src/countdown.js +1 -1
  13. package/es/date-picker/src/date-picker.js +12 -12
  14. package/es/drawer/src/drawer.js +1 -1
  15. package/es/form/render/index.js +1 -2
  16. package/es/form/src/form-config-item.js +4 -3
  17. package/es/form/src/form-gather.js +5 -3
  18. package/es/form/src/form-item.js +15 -10
  19. package/es/form/src/form.js +11 -8
  20. package/es/form/src/render.js +2 -1
  21. package/es/form/src/util.js +2 -1
  22. package/es/icon/style.css +1 -1
  23. package/es/icon-picker/src/icon-picker.js +22 -10
  24. package/es/image/src/group.js +4 -1
  25. package/es/image/src/preview.js +1 -1
  26. package/es/input/src/input.js +129 -65
  27. package/es/layout-aside/src/layout-aside.js +1 -1
  28. package/es/list/src/list.js +7 -5
  29. package/es/list-design/src/list-design.js +1 -1
  30. package/es/list-design/src/list-view.js +1 -1
  31. package/es/loading/src/loading.js +1 -1
  32. package/es/menu/src/menu.js +1 -1
  33. package/es/number-input/src/number-input.js +6 -6
  34. package/es/pager/src/pager.js +85 -45
  35. package/es/password-input/src/password-input.js +2 -2
  36. package/es/print/src/page-break.js +11 -2
  37. package/es/print/src/print.js +6 -4
  38. package/es/radio/src/group.js +5 -2
  39. package/es/row/src/row.js +1 -1
  40. package/es/select/src/optgroup.js +11 -8
  41. package/es/select/src/option.js +9 -7
  42. package/es/select/src/select.js +32 -29
  43. package/es/select/src/util.js +2 -2
  44. package/es/style.css +1 -1
  45. package/es/style.min.css +1 -1
  46. package/es/tabs/src/tab-pane.js +13 -3
  47. package/es/tabs/src/tabs.js +57 -47
  48. package/es/textarea/src/textarea.js +4 -4
  49. package/es/tooltip/src/tooltip.js +1 -1
  50. package/es/tree/src/tree.js +6 -3
  51. package/es/tree-select/src/tree-select.js +16 -9
  52. package/es/ui/index.js +1 -7
  53. package/es/ui/src/log.js +1 -1
  54. package/es/upload/src/upload.js +5 -5
  55. package/lib/anchor/src/anchor-link.js +1 -1
  56. package/lib/anchor/src/anchor-link.min.js +1 -1
  57. package/lib/anchor/src/anchor.js +1 -1
  58. package/lib/anchor/src/anchor.min.js +1 -1
  59. package/lib/breadcrumb/src/breadcrumb.js +1 -1
  60. package/lib/breadcrumb/src/breadcrumb.min.js +1 -1
  61. package/lib/button/src/button-group.js +4 -1
  62. package/lib/button/src/button-group.min.js +1 -1
  63. package/lib/calendar/src/calendar.js +42 -24
  64. package/lib/calendar/src/calendar.min.js +1 -1
  65. package/lib/carousel/src/carousel-item.js +16 -3
  66. package/lib/carousel/src/carousel-item.min.js +1 -1
  67. package/lib/carousel/src/carousel.js +18 -8
  68. package/lib/carousel/src/carousel.min.js +1 -1
  69. package/lib/checkbox/src/checkbox.js +16 -12
  70. package/lib/checkbox/src/checkbox.min.js +1 -1
  71. package/lib/checkbox/src/group.js +10 -7
  72. package/lib/checkbox/src/group.min.js +1 -1
  73. package/lib/collapse-pane/index.js +1 -1
  74. package/lib/collapse-pane/index.min.js +1 -1
  75. package/lib/countdown/src/countdown.js +1 -1
  76. package/lib/countdown/src/countdown.min.js +1 -1
  77. package/lib/date-picker/src/date-picker.js +12 -12
  78. package/lib/drawer/src/drawer.js +1 -1
  79. package/lib/drawer/src/drawer.min.js +1 -1
  80. package/lib/form/render/index.js +1 -4
  81. package/lib/form/render/index.min.js +1 -1
  82. package/lib/form/src/form-config-item.js +4 -5
  83. package/lib/form/src/form-config-item.min.js +1 -1
  84. package/lib/form/src/form-gather.js +11 -9
  85. package/lib/form/src/form-gather.min.js +1 -1
  86. package/lib/form/src/form-item.js +11 -12
  87. package/lib/form/src/form-item.min.js +1 -1
  88. package/lib/form/src/form.js +7 -7
  89. package/lib/form/src/form.min.js +1 -1
  90. package/lib/form/src/render.js +2 -1
  91. package/lib/form/src/util.js +2 -1
  92. package/lib/icon/style/style.css +1 -1
  93. package/lib/icon/style/style.min.css +1 -1
  94. package/lib/icon-picker/src/icon-picker.js +20 -11
  95. package/lib/icon-picker/src/icon-picker.min.js +1 -1
  96. package/lib/image/src/group.js +4 -1
  97. package/lib/image/src/group.min.js +1 -1
  98. package/lib/image/src/preview.js +1 -1
  99. package/lib/image/src/preview.min.js +1 -1
  100. package/lib/index.umd.js +522 -377
  101. package/lib/index.umd.min.js +1 -1
  102. package/lib/input/src/input.js +77 -50
  103. package/lib/input/src/input.min.js +1 -1
  104. package/lib/layout-aside/src/layout-aside.js +1 -1
  105. package/lib/layout-aside/src/layout-aside.min.js +1 -1
  106. package/lib/list/src/list.js +9 -5
  107. package/lib/list/src/list.min.js +1 -1
  108. package/lib/list-design/src/list-design.js +1 -1
  109. package/lib/list-design/src/list-design.min.js +1 -1
  110. package/lib/list-design/src/list-view.js +1 -1
  111. package/lib/list-design/src/list-view.min.js +1 -1
  112. package/lib/loading/src/loading.js +1 -1
  113. package/lib/loading/src/loading.min.js +1 -1
  114. package/lib/menu/src/menu.js +1 -1
  115. package/lib/menu/src/menu.min.js +1 -1
  116. package/lib/number-input/src/number-input.js +6 -6
  117. package/lib/pager/src/pager.js +40 -39
  118. package/lib/pager/src/pager.min.js +1 -1
  119. package/lib/password-input/src/password-input.js +2 -2
  120. package/lib/print/src/page-break.js +14 -2
  121. package/lib/print/src/page-break.min.js +1 -1
  122. package/lib/print/src/print.js +8 -6
  123. package/lib/print/src/print.min.js +1 -1
  124. package/lib/radio/src/group.js +5 -2
  125. package/lib/radio/src/group.min.js +1 -1
  126. package/lib/row/src/row.js +1 -1
  127. package/lib/row/src/row.min.js +1 -1
  128. package/lib/select/src/optgroup.js +12 -9
  129. package/lib/select/src/optgroup.min.js +1 -1
  130. package/lib/select/src/option.js +9 -7
  131. package/lib/select/src/option.min.js +1 -1
  132. package/lib/select/src/select.js +33 -32
  133. package/lib/select/src/select.min.js +1 -1
  134. package/lib/select/src/util.js +2 -2
  135. package/lib/select/src/util.min.js +1 -1
  136. package/lib/style.css +1 -1
  137. package/lib/style.min.css +1 -1
  138. package/lib/tabs/src/tab-pane.js +16 -3
  139. package/lib/tabs/src/tab-pane.min.js +1 -1
  140. package/lib/tabs/src/tabs.js +62 -50
  141. package/lib/tabs/src/tabs.min.js +1 -1
  142. package/lib/textarea/src/textarea.js +4 -4
  143. package/lib/tooltip/src/tooltip.js +1 -1
  144. package/lib/tooltip/src/tooltip.min.js +1 -1
  145. package/lib/tree/src/tree.js +2 -2
  146. package/lib/tree/src/tree.min.js +1 -1
  147. package/lib/tree-select/src/tree-select.js +11 -7
  148. package/lib/tree-select/src/tree-select.min.js +1 -1
  149. package/lib/ui/index.js +3 -10
  150. package/lib/ui/index.min.js +1 -1
  151. package/lib/ui/src/log.js +1 -1
  152. package/lib/ui/src/log.min.js +1 -1
  153. package/lib/upload/src/upload.js +5 -5
  154. package/lib/upload/src/upload.min.js +1 -1
  155. package/package.json +2 -2
  156. package/packages/anchor/src/anchor-link.ts +2 -2
  157. package/packages/anchor/src/anchor.ts +2 -2
  158. package/packages/breadcrumb/src/breadcrumb.ts +2 -2
  159. package/packages/button/src/button-group.ts +4 -1
  160. package/packages/calendar/src/calendar.ts +67 -35
  161. package/packages/carousel/src/carousel-item.ts +19 -4
  162. package/packages/carousel/src/carousel.ts +19 -11
  163. package/packages/checkbox/src/checkbox.ts +34 -15
  164. package/packages/checkbox/src/group.ts +22 -10
  165. package/packages/collapse-pane/index.ts +1 -1
  166. package/packages/countdown/src/countdown.ts +2 -2
  167. package/packages/date-picker/src/date-picker.ts +12 -12
  168. package/packages/drawer/src/drawer.ts +2 -2
  169. package/packages/form/render/index.ts +1 -3
  170. package/packages/form/src/form-config-item.ts +4 -3
  171. package/packages/form/src/form-gather.ts +5 -3
  172. package/packages/form/src/form-item.ts +15 -10
  173. package/packages/form/src/form.ts +12 -10
  174. package/packages/form/src/render.ts +2 -1
  175. package/packages/form/src/util.ts +2 -1
  176. package/packages/icon-picker/src/icon-picker.ts +26 -13
  177. package/packages/image/src/group.ts +4 -1
  178. package/packages/image/src/preview.ts +2 -2
  179. package/packages/input/src/input.ts +133 -71
  180. package/packages/layout-aside/src/layout-aside.ts +2 -2
  181. package/packages/list/src/list.ts +12 -11
  182. package/packages/list-design/src/list-design.ts +2 -2
  183. package/packages/list-design/src/list-view.ts +2 -2
  184. package/packages/loading/src/loading.ts +2 -2
  185. package/packages/menu/src/menu.ts +2 -2
  186. package/packages/number-input/src/number-input.ts +6 -6
  187. package/packages/pager/src/pager.ts +91 -50
  188. package/packages/password-input/src/password-input.ts +2 -2
  189. package/packages/print/src/page-break.ts +18 -4
  190. package/packages/print/src/print.ts +10 -5
  191. package/packages/radio/src/group.ts +6 -3
  192. package/packages/row/src/row.ts +2 -2
  193. package/packages/select/src/optgroup.ts +16 -13
  194. package/packages/select/src/option.ts +10 -8
  195. package/packages/select/src/select.ts +42 -36
  196. package/packages/select/src/util.ts +3 -3
  197. package/packages/tabs/src/tab-pane.ts +20 -5
  198. package/packages/tabs/src/tabs.ts +59 -49
  199. package/packages/textarea/src/textarea.ts +4 -4
  200. package/packages/tooltip/src/tooltip.ts +2 -2
  201. package/packages/tree/src/tree.ts +7 -4
  202. package/packages/tree-select/src/tree-select.ts +20 -12
  203. package/packages/ui/index.ts +0 -7
  204. package/packages/upload/src/upload.ts +6 -6
  205. package/types/components/calendar.d.ts +6 -0
  206. package/types/components/carousel.d.ts +5 -0
  207. package/types/components/form.d.ts +4 -2
  208. package/types/components/icon-picker.d.ts +4 -0
  209. package/types/components/input.d.ts +9 -1
  210. package/types/components/list.d.ts +1 -0
  211. package/types/components/optgroup.d.ts +10 -4
  212. package/types/components/tabs.d.ts +4 -0
  213. package/types/components/toolbar.d.ts +5 -0
  214. package/types/components/tree-select.d.ts +4 -0
  215. package/types/ui/index.d.ts +0 -22
  216. /package/es/{collapse-pane → collapse}/src/collapse-pane.js +0 -0
  217. /package/es/icon/style/{iconfont.1725680652286.ttf → iconfont.1725941866604.ttf} +0 -0
  218. /package/es/icon/style/{iconfont.1725680652286.woff → iconfont.1725941866604.woff} +0 -0
  219. /package/es/icon/style/{iconfont.1725680652286.woff2 → iconfont.1725941866604.woff2} +0 -0
  220. /package/es/{iconfont.1725680652286.ttf → iconfont.1725941866604.ttf} +0 -0
  221. /package/es/{iconfont.1725680652286.woff → iconfont.1725941866604.woff} +0 -0
  222. /package/es/{iconfont.1725680652286.woff2 → iconfont.1725941866604.woff2} +0 -0
  223. /package/lib/{collapse-pane → collapse}/src/collapse-pane.js +0 -0
  224. /package/lib/{collapse-pane → collapse}/src/collapse-pane.min.js +0 -0
  225. /package/lib/icon/style/{iconfont.1725680652286.ttf → iconfont.1725941866604.ttf} +0 -0
  226. /package/lib/icon/style/{iconfont.1725680652286.woff → iconfont.1725941866604.woff} +0 -0
  227. /package/lib/icon/style/{iconfont.1725680652286.woff2 → iconfont.1725941866604.woff2} +0 -0
  228. /package/lib/{iconfont.1725680652286.ttf → iconfont.1725941866604.ttf} +0 -0
  229. /package/lib/{iconfont.1725680652286.woff → iconfont.1725941866604.woff} +0 -0
  230. /package/lib/{iconfont.1725680652286.woff2 → iconfont.1725941866604.woff2} +0 -0
  231. /package/packages/{collapse-pane → collapse}/src/collapse-pane.ts +0 -0
@@ -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,
@@ -99,16 +150,13 @@ export default defineComponent({
99
150
  const formItemInfo = inject('xeFormItemInfo', null);
100
151
  const xID = XEUtils.uniqueId();
101
152
  const { computeSize } = useSize(props);
102
- const yearSize = 12;
103
- const monthSize = 20;
104
- const quarterSize = 8;
105
153
  const reactData = reactive({
106
154
  initialized: false,
107
155
  panelIndex: 0,
108
156
  showPwd: false,
109
157
  visiblePanel: false,
110
158
  isAniVisible: false,
111
- panelStyle: null,
159
+ panelStyle: {},
112
160
  panelPlacement: '',
113
161
  isActivated: false,
114
162
  inputValue: props.modelValue,
@@ -119,6 +167,13 @@ export default defineComponent({
119
167
  selectMonth: null,
120
168
  currentDate: null
121
169
  });
170
+ const internalData = {
171
+ yearSize: 12,
172
+ monthSize: 20,
173
+ quarterSize: 8,
174
+ hpTimeout: undefined,
175
+ dnTimeout: undefined
176
+ };
122
177
  const refElem = ref();
123
178
  const refInputTarget = ref();
124
179
  const refInputPanel = ref();
@@ -133,6 +188,7 @@ export default defineComponent({
133
188
  props,
134
189
  context,
135
190
  reactData,
191
+ internalData,
136
192
  getRefMaps: () => refMaps
137
193
  };
138
194
  let inputMethods = {};
@@ -325,10 +381,11 @@ export default defineComponent({
325
381
  if (isDatePickerType) {
326
382
  return labelFormat || dateValueFormat || getI18n(`vxe.input.date.labelFormat.${props.type}`);
327
383
  }
328
- return null;
384
+ return '';
329
385
  });
330
386
  const computeYearList = computed(() => {
331
387
  const { selectMonth, currentDate } = reactData;
388
+ const { yearSize } = internalData;
332
389
  const years = [];
333
390
  if (selectMonth && currentDate) {
334
391
  const currFullYear = currentDate.getFullYear();
@@ -422,6 +479,7 @@ export default defineComponent({
422
479
  });
423
480
  const computeQuarterList = computed(() => {
424
481
  const { selectMonth, currentDate } = reactData;
482
+ const { quarterSize } = internalData;
425
483
  const quarters = [];
426
484
  if (selectMonth && currentDate) {
427
485
  const currFullYear = currentDate.getFullYear();
@@ -451,6 +509,7 @@ export default defineComponent({
451
509
  });
452
510
  const computeMonthList = computed(() => {
453
511
  const { selectMonth, currentDate } = reactData;
512
+ const { monthSize } = internalData;
454
513
  const months = [];
455
514
  if (selectMonth && currentDate) {
456
515
  const currFullYear = currentDate.getFullYear();
@@ -595,12 +654,6 @@ export default defineComponent({
595
654
  }
596
655
  return getI18n('vxe.base.pleaseInput');
597
656
  });
598
- const computeInpMaxlength = computed(() => {
599
- const isNumType = computeIsNumType.value;
600
- const inpMaxLength = computeInpMaxLength.value;
601
- // 数值最大长度限制 16 位,包含小数
602
- return isNumType && !XEUtils.toNumber(inpMaxLength) ? 16 : inpMaxLength;
603
- });
604
657
  const computeInpImmediate = computed(() => {
605
658
  const { type, immediate } = props;
606
659
  return immediate || !(type === 'text' || type === 'number' || type === 'integer' || type === 'float');
@@ -638,19 +691,19 @@ export default defineComponent({
638
691
  });
639
692
  const getNumberValue = (val) => {
640
693
  const { type, exponential } = props;
641
- const inpMaxlength = computeInpMaxlength.value;
694
+ const inpMaxLength = computeInpMaxLength.value;
642
695
  const digitsValue = computeDigitsValue.value;
643
696
  const restVal = (type === 'float' ? toFloatValueFixed(val, digitsValue) : XEUtils.toValueString(val));
644
697
  if (exponential && (val === restVal || XEUtils.toValueString(val).toLowerCase() === XEUtils.toNumber(restVal).toExponential())) {
645
698
  return val;
646
699
  }
647
- return restVal.slice(0, inpMaxlength);
700
+ return restVal.slice(0, inpMaxLength);
648
701
  };
649
702
  const triggerEvent = (evnt) => {
650
703
  const { inputValue } = reactData;
651
704
  inputMethods.dispatchEvent(evnt.type, { value: inputValue }, evnt);
652
705
  };
653
- const emitModel = (value, evnt) => {
706
+ const handleChange = (value, evnt) => {
654
707
  reactData.inputValue = value;
655
708
  emit('update:modelValue', value);
656
709
  inputMethods.dispatchEvent('input', { value }, evnt);
@@ -668,7 +721,7 @@ export default defineComponent({
668
721
  reactData.inputValue = value;
669
722
  if (!isDatePickerType) {
670
723
  if (inpImmediate) {
671
- emitModel(value, evnt);
724
+ handleChange(value, evnt);
672
725
  }
673
726
  else {
674
727
  inputMethods.dispatchEvent('input', { value }, evnt);
@@ -701,11 +754,10 @@ export default defineComponent({
701
754
  inputMethods.dispatchEvent('prefix-click', { value: inputValue }, evnt);
702
755
  }
703
756
  };
704
- let hidePanelTimeout;
705
757
  const hidePanel = () => {
706
758
  return new Promise(resolve => {
707
759
  reactData.visiblePanel = false;
708
- hidePanelTimeout = window.setTimeout(() => {
760
+ internalData.hpTimeout = window.setTimeout(() => {
709
761
  reactData.isAniVisible = false;
710
762
  resolve();
711
763
  }, 350);
@@ -721,7 +773,7 @@ export default defineComponent({
721
773
  if (isNumType || ['text', 'search', 'password'].indexOf(type) > -1) {
722
774
  focus();
723
775
  }
724
- emitModel('', evnt);
776
+ handleChange('', evnt);
725
777
  inputMethods.dispatchEvent('clear', { value }, evnt);
726
778
  };
727
779
  const clickSuffixEvent = (evnt) => {
@@ -789,7 +841,7 @@ export default defineComponent({
789
841
  if (inputValue) {
790
842
  const validValue = toFloatValueFixed(inputValue, digitsValue);
791
843
  if (inputValue !== validValue) {
792
- emitModel(validValue, { type: 'init' });
844
+ handleChange(validValue, { type: 'init' });
793
845
  }
794
846
  }
795
847
  }
@@ -848,22 +900,22 @@ export default defineComponent({
848
900
  datetimeRest.push(item);
849
901
  }
850
902
  });
851
- emitModel(datetimeRest.map(date => XEUtils.toDateString(date, dateValueFormat)).join(','), { type: 'update' });
903
+ handleChange(datetimeRest.map(date => XEUtils.toDateString(date, dateValueFormat)).join(','), { type: 'update' });
852
904
  }
853
905
  else {
854
906
  // 如果是日期类型
855
907
  if (dateMultipleValue.some(val => XEUtils.isEqual(val, inpVal))) {
856
- emitModel(dateMultipleValue.filter(val => !XEUtils.isEqual(val, inpVal)).join(','), { type: 'update' });
908
+ handleChange(dateMultipleValue.filter(val => !XEUtils.isEqual(val, inpVal)).join(','), { type: 'update' });
857
909
  }
858
910
  else {
859
- emitModel(dateMultipleValue.concat([inpVal]).join(','), { type: 'update' });
911
+ handleChange(dateMultipleValue.concat([inpVal]).join(','), { type: 'update' });
860
912
  }
861
913
  }
862
914
  }
863
915
  else {
864
916
  // 如果为单选
865
917
  if (!XEUtils.isEqual(modelValue, inpVal)) {
866
- emitModel(inpVal, { type: 'update' });
918
+ handleChange(inpVal, { type: 'update' });
867
919
  }
868
920
  }
869
921
  };
@@ -890,7 +942,7 @@ export default defineComponent({
890
942
  inpNumVal = inpStringVal;
891
943
  }
892
944
  }
893
- emitModel(getNumberValue(inpNumVal), { type: 'check' });
945
+ handleChange(getNumberValue(inpNumVal), { type: 'check' });
894
946
  }
895
947
  }
896
948
  else if (isDatePickerType) {
@@ -900,7 +952,7 @@ export default defineComponent({
900
952
  if (type === 'time') {
901
953
  inpDateVal = XEUtils.toDateString(inpDateVal, dateLabelFormat);
902
954
  if (inputValue !== inpDateVal) {
903
- emitModel(inpDateVal, { type: 'check' });
955
+ handleChange(inpDateVal, { type: 'check' });
904
956
  }
905
957
  reactData.inputValue = inpDateVal;
906
958
  }
@@ -930,7 +982,7 @@ export default defineComponent({
930
982
  }
931
983
  }
932
984
  else {
933
- emitModel('', { type: 'check' });
985
+ handleChange('', { type: 'check' });
934
986
  }
935
987
  }
936
988
  }
@@ -939,7 +991,7 @@ export default defineComponent({
939
991
  const { inputValue } = reactData;
940
992
  const inpImmediate = computeInpImmediate.value;
941
993
  if (!inpImmediate) {
942
- emitModel(inputValue, evnt);
994
+ handleChange(inputValue, evnt);
943
995
  }
944
996
  afterCheckValue();
945
997
  if (!reactData.visiblePanel) {
@@ -982,19 +1034,18 @@ export default defineComponent({
982
1034
  }
983
1035
  emitInputEvent(getNumberValue(restNum), evnt);
984
1036
  };
985
- let downbumTimeout;
986
1037
  const numberNextEvent = (evnt) => {
987
1038
  const isDisabled = computeIsDisabled.value;
988
1039
  const isReadonly = computeIsReadonly.value;
989
1040
  const isDisabledSubtractNumber = computeIsDisabledSubtractNumber.value;
990
- clearTimeout(downbumTimeout);
1041
+ numberStopDown();
991
1042
  if (!isDisabled && !isReadonly && !isDisabledSubtractNumber) {
992
1043
  numberChange(false, evnt);
993
1044
  }
994
1045
  inputMethods.dispatchEvent('next-number', {}, evnt);
995
1046
  };
996
1047
  const numberDownNextEvent = (evnt) => {
997
- downbumTimeout = window.setTimeout(() => {
1048
+ internalData.dnTimeout = window.setTimeout(() => {
998
1049
  numberNextEvent(evnt);
999
1050
  numberDownNextEvent(evnt);
1000
1051
  }, 60);
@@ -1003,7 +1054,7 @@ export default defineComponent({
1003
1054
  const isDisabled = computeIsDisabled.value;
1004
1055
  const isReadonly = computeIsReadonly.value;
1005
1056
  const isDisabledAddNumber = computeIsDisabledAddNumber.value;
1006
- clearTimeout(downbumTimeout);
1057
+ numberStopDown();
1007
1058
  if (!isDisabled && !isReadonly && !isDisabledAddNumber) {
1008
1059
  numberChange(true, evnt);
1009
1060
  }
@@ -1052,10 +1103,14 @@ export default defineComponent({
1052
1103
  };
1053
1104
  // 数值
1054
1105
  const numberStopDown = () => {
1055
- clearTimeout(downbumTimeout);
1106
+ const { dnTimeout } = internalData;
1107
+ if (dnTimeout) {
1108
+ clearTimeout(dnTimeout);
1109
+ internalData.dnTimeout = undefined;
1110
+ }
1056
1111
  };
1057
1112
  const numberDownPrevEvent = (evnt) => {
1058
- downbumTimeout = window.setTimeout(() => {
1113
+ internalData.dnTimeout = window.setTimeout(() => {
1059
1114
  numberPrevEvent(evnt);
1060
1115
  numberDownPrevEvent(evnt);
1061
1116
  }, 60);
@@ -1070,7 +1125,7 @@ export default defineComponent({
1070
1125
  else {
1071
1126
  numberNextEvent(evnt);
1072
1127
  }
1073
- downbumTimeout = window.setTimeout(() => {
1128
+ internalData.dnTimeout = window.setTimeout(() => {
1074
1129
  if (isPrevNumber) {
1075
1130
  numberDownPrevEvent(evnt);
1076
1131
  }
@@ -1118,6 +1173,7 @@ export default defineComponent({
1118
1173
  const datePrevEvent = (evnt) => {
1119
1174
  const { type } = props;
1120
1175
  const { datePanelType, selectMonth } = reactData;
1176
+ const { yearSize } = internalData;
1121
1177
  const isDisabledPrevDateBtn = computeIsDisabledPrevDateBtn.value;
1122
1178
  if (!isDisabledPrevDateBtn) {
1123
1179
  if (type === 'year') {
@@ -1156,6 +1212,7 @@ export default defineComponent({
1156
1212
  const dateNextEvent = (evnt) => {
1157
1213
  const { type } = props;
1158
1214
  const { datePanelType, selectMonth } = reactData;
1215
+ const { yearSize } = internalData;
1159
1216
  const isDisabledNextDateBtn = computeIsDisabledNextDateBtn.value;
1160
1217
  if (!isDisabledNextDateBtn) {
1161
1218
  if (type === 'year') {
@@ -1338,11 +1395,11 @@ export default defineComponent({
1338
1395
  datetimeRest.push(item);
1339
1396
  }
1340
1397
  });
1341
- emitModel(datetimeRest.map(date => XEUtils.toDateString(date, dateValueFormat)).join(','), { type: 'update' });
1398
+ handleChange(datetimeRest.map(date => XEUtils.toDateString(date, dateValueFormat)).join(','), { type: 'update' });
1342
1399
  }
1343
1400
  else {
1344
1401
  // 如果是日期类型
1345
- emitModel(dateMultipleValue.join(','), { type: 'update' });
1402
+ handleChange(dateMultipleValue.join(','), { type: 'update' });
1346
1403
  }
1347
1404
  }
1348
1405
  else {
@@ -1469,7 +1526,9 @@ export default defineComponent({
1469
1526
  reactData.datetimePanelValue = reactData.datePanelValue || XEUtils.getWhatDay(Date.now(), 0, 'first');
1470
1527
  nextTick(() => {
1471
1528
  const timeBodyElem = refInputTimeBody.value;
1472
- XEUtils.arrayEach(timeBodyElem.querySelectorAll('li.is--selected'), updateTimePos);
1529
+ XEUtils.arrayEach(timeBodyElem.querySelectorAll('li.is--selected'), (elem) => {
1530
+ updateTimePos(elem);
1531
+ });
1473
1532
  });
1474
1533
  }
1475
1534
  };
@@ -1557,13 +1616,17 @@ export default defineComponent({
1557
1616
  };
1558
1617
  const showPanel = () => {
1559
1618
  const { visiblePanel } = reactData;
1619
+ const { hpTimeout } = internalData;
1560
1620
  const isDisabled = computeIsDisabled.value;
1561
1621
  const isDatePickerType = computeIsDatePickerType.value;
1562
1622
  if (!isDisabled && !visiblePanel) {
1563
1623
  if (!reactData.initialized) {
1564
1624
  reactData.initialized = true;
1565
1625
  }
1566
- clearTimeout(hidePanelTimeout);
1626
+ if (hpTimeout) {
1627
+ clearTimeout(hpTimeout);
1628
+ internalData.hpTimeout = undefined;
1629
+ }
1567
1630
  reactData.isActivated = true;
1568
1631
  reactData.isAniVisible = true;
1569
1632
  if (isDatePickerType) {
@@ -1722,13 +1785,13 @@ export default defineComponent({
1722
1785
  }]
1723
1786
  }, extraItem && extraItem.label
1724
1787
  ? [
1725
- h('span', label),
1788
+ h('span', `${label || ''}`),
1726
1789
  h('span', {
1727
1790
  class: ['vxe-input--date-label--extra', extraItem.important ? 'is-important' : '', extraItem.className],
1728
1791
  style: extraItem.style
1729
1792
  }, XEUtils.toValueString(extraItem.label))
1730
1793
  ]
1731
- : label)
1794
+ : [`${label || ''}`])
1732
1795
  ];
1733
1796
  const festivalLabel = festivalItem.label;
1734
1797
  if (festivalLabel) {
@@ -1749,7 +1812,7 @@ export default defineComponent({
1749
1812
  }
1750
1813
  return labels;
1751
1814
  }
1752
- return label;
1815
+ return [`${label || ''}`];
1753
1816
  };
1754
1817
  const renderDateDayTable = () => {
1755
1818
  const { multiple } = props;
@@ -2299,10 +2362,11 @@ export default defineComponent({
2299
2362
  }
2300
2363
  return createCommentVNode();
2301
2364
  };
2365
+ const dispatchEvent = (type, params, evnt) => {
2366
+ emit(type, createEvent(evnt, { $input: $xeInput }, params));
2367
+ };
2302
2368
  inputMethods = {
2303
- dispatchEvent(type, params, evnt) {
2304
- emit(type, createEvent(evnt, { $input: $xeInput }, params));
2305
- },
2369
+ dispatchEvent,
2306
2370
  focus() {
2307
2371
  const inputElem = refInputTarget.value;
2308
2372
  reactData.isActivated = true;
@@ -2341,7 +2405,7 @@ export default defineComponent({
2341
2405
  const isCountError = computeIsCountError.value;
2342
2406
  const inputCount = computeInputCount.value;
2343
2407
  const inputReadonly = computeInputReadonly.value;
2344
- const inpMaxlength = computeInpMaxlength.value;
2408
+ const inpMaxLength = computeInpMaxLength.value;
2345
2409
  const inputType = computeInputType.value;
2346
2410
  const inpPlaceholder = computeInpPlaceholder.value;
2347
2411
  const isClearable = computeIsClearable.value;
@@ -2375,7 +2439,7 @@ export default defineComponent({
2375
2439
  name,
2376
2440
  type: inputType,
2377
2441
  placeholder: inpPlaceholder,
2378
- maxlength: inpMaxlength,
2442
+ maxlength: inpMaxLength,
2379
2443
  readonly: inputReadonly,
2380
2444
  disabled: isDisabled,
2381
2445
  autocomplete: autoComplete || autocomplete,
@@ -2398,11 +2462,10 @@ export default defineComponent({
2398
2462
  class: ['vxe-input--count', {
2399
2463
  'is--error': isCountError
2400
2464
  }]
2401
- }, countMethod ? `${countMethod({ value: inputValue })}` : `${inputCount}${inpMaxlength ? `/${inpMaxlength}` : ''}`)
2465
+ }, countMethod ? `${countMethod({ value: inputValue })}` : `${inputCount}${inpMaxLength ? `/${inpMaxLength}` : ''}`)
2402
2466
  : createCommentVNode()
2403
2467
  ]);
2404
2468
  };
2405
- $xeInput.renderVN = renderVN;
2406
2469
  watch(() => props.modelValue, (val) => {
2407
2470
  reactData.inputValue = val;
2408
2471
  changeValue();
@@ -2442,6 +2505,7 @@ export default defineComponent({
2442
2505
  globalEvents.off($xeInput, 'blur');
2443
2506
  });
2444
2507
  initValue();
2508
+ $xeInput.renderVN = renderVN;
2445
2509
  return $xeInput;
2446
2510
  },
2447
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() {
@@ -30,10 +30,8 @@ export default defineComponent({
30
30
  topSpaceHeight: 0,
31
31
  items: []
32
32
  });
33
- const refElem = ref();
34
- const refVirtualWrapper = ref();
35
- const refVirtualBody = ref();
36
33
  const internalData = {
34
+ resizeObserver: undefined,
37
35
  fullData: [],
38
36
  lastScrollLeft: 0,
39
37
  lastScrollTop: 0,
@@ -45,6 +43,9 @@ export default defineComponent({
45
43
  rowHeight: 0
46
44
  }
47
45
  };
46
+ const refElem = ref();
47
+ const refVirtualWrapper = ref();
48
+ const refVirtualBody = ref();
48
49
  const refMaps = {
49
50
  refElem
50
51
  };
@@ -269,19 +270,20 @@ export default defineComponent({
269
270
  onActivated(() => {
270
271
  recalculate().then(() => refreshScroll());
271
272
  });
272
- let resizeObserver;
273
273
  nextTick(() => {
274
274
  globalEvents.on($xeList, 'resize', () => {
275
275
  recalculate();
276
276
  });
277
277
  if (props.autoResize) {
278
278
  const el = refElem.value;
279
- resizeObserver = globalResize.create(() => recalculate());
279
+ const resizeObserver = globalResize.create(() => recalculate());
280
280
  resizeObserver.observe(el);
281
+ internalData.resizeObserver = resizeObserver;
281
282
  }
282
283
  listMethods.loadData(props.data || []);
283
284
  });
284
285
  onUnmounted(() => {
286
+ const { resizeObserver } = internalData;
285
287
  if (resizeObserver) {
286
288
  resizeObserver.disconnect();
287
289
  }
@@ -296,7 +296,6 @@ export default defineComponent({
296
296
  ])
297
297
  ]);
298
298
  };
299
- $xeListDesign.renderVN = renderVN;
300
299
  provide('$xeListDesign', $xeListDesign);
301
300
  watch(() => props.config, (value) => {
302
301
  loadConfig(value || {});
@@ -305,6 +304,7 @@ export default defineComponent({
305
304
  if (props.config) {
306
305
  loadConfig(props.config);
307
306
  }
307
+ $xeListDesign.renderVN = renderVN;
308
308
  return $xeListDesign;
309
309
  },
310
310
  render() {
@@ -414,7 +414,6 @@ export default defineComponent({
414
414
  })
415
415
  ]);
416
416
  };
417
- $xeListView.renderVN = renderVN;
418
417
  watch(() => props.config, (value) => {
419
418
  loadConfig(value || {});
420
419
  });
@@ -429,6 +428,7 @@ export default defineComponent({
429
428
  }
430
429
  });
431
430
  }
431
+ $xeListView.renderVN = renderVN;
432
432
  return $xeListView;
433
433
  },
434
434
  render() {
@@ -114,11 +114,11 @@ export default defineComponent({
114
114
  ])
115
115
  ]);
116
116
  };
117
- $xeLoading.renderVN = renderVN;
118
117
  watch(() => props.modelValue, () => {
119
118
  handleInit();
120
119
  });
121
120
  handleInit();
121
+ $xeLoading.renderVN = renderVN;
122
122
  return $xeLoading;
123
123
  },
124
124
  render() {
@@ -246,7 +246,6 @@ export default defineComponent({
246
246
  })
247
247
  ]);
248
248
  };
249
- $xeMenu.renderVN = renderVN;
250
249
  const optFlag = ref(0);
251
250
  watch(() => props.options ? props.options.length : -1, () => {
252
251
  optFlag.value++;
@@ -271,6 +270,7 @@ export default defineComponent({
271
270
  });
272
271
  updateMenuConfig();
273
272
  updateActiveMenu(true);
273
+ $xeMenu.renderVN = renderVN;
274
274
  return $xeMenu;
275
275
  },
276
276
  render() {