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
@@ -1,5 +1,6 @@
1
1
  import { defineComponent, ref, h, reactive, watch, inject, onMounted, onUnmounted } from 'vue';
2
2
  import XEUtils from 'xe-utils';
3
+ import { createEvent } from '../../ui';
3
4
  import { assembleAnchorTab, destroyAnchorTab } from './util';
4
5
  export default defineComponent({
5
6
  name: 'VxeTabPane',
@@ -14,7 +15,7 @@ export default defineComponent({
14
15
  },
15
16
  emits: [],
16
17
  setup(props, context) {
17
- const { slots } = context;
18
+ const { slots, emit } = context;
18
19
  const xID = XEUtils.uniqueId();
19
20
  const refElem = ref();
20
21
  const $xeTabs = inject('$xeTabs', null);
@@ -44,6 +45,14 @@ export default defineComponent({
44
45
  getRefMaps: () => refMaps,
45
46
  getComputeMaps: () => computeMaps
46
47
  };
48
+ const dispatchEvent = (type, params, evnt) => {
49
+ emit(type, createEvent(evnt, { $tabPane: $xeTabPane }, params));
50
+ };
51
+ const tabPaneMethods = {
52
+ dispatchEvent
53
+ };
54
+ const tabPanePrivateMethods = {};
55
+ Object.assign($xeTabPane, tabPaneMethods, tabPanePrivateMethods);
47
56
  watch(() => props.title, (val) => {
48
57
  tabConfig.title = val;
49
58
  });
@@ -57,8 +66,9 @@ export default defineComponent({
57
66
  tabConfig.permissionCode = val;
58
67
  });
59
68
  onMounted(() => {
60
- if ($xeTabs && refElem.value) {
61
- assembleAnchorTab($xeTabs, refElem.value, tabConfig);
69
+ const elem = refElem.value;
70
+ if ($xeTabs && elem) {
71
+ assembleAnchorTab($xeTabs, elem, tabConfig);
62
72
  }
63
73
  });
64
74
  onUnmounted(() => {
@@ -47,25 +47,19 @@ export default defineComponent({
47
47
  isTabOver: false,
48
48
  resizeFlag: 1
49
49
  });
50
+ const internalData = {
51
+ slTimeout: undefined
52
+ };
50
53
  const refMaps = {
51
54
  refElem
52
55
  };
53
- const handleFilterTab = (item) => {
54
- const { permissionCode } = item;
55
- if (permissionCode) {
56
- if (!permission.checkVisible(permissionCode)) {
57
- return false;
58
- }
59
- }
60
- return true;
61
- };
62
56
  const computeTabOptions = computed(() => {
63
57
  const { options } = props;
64
- return (options || []).filter(handleFilterTab);
58
+ return (options || []).filter((item) => handleFilterTab(item));
65
59
  });
66
60
  const computeTabStaticOptions = computed(() => {
67
61
  const { staticTabs } = reactData;
68
- return staticTabs.filter(handleFilterTab);
62
+ return staticTabs.filter((item) => handleFilterTab(item));
69
63
  });
70
64
  const computeMaps = {};
71
65
  const $xeTabs = {
@@ -76,6 +70,15 @@ export default defineComponent({
76
70
  getRefMaps: () => refMaps,
77
71
  getComputeMaps: () => computeMaps
78
72
  };
73
+ const handleFilterTab = (item) => {
74
+ const { permissionCode } = item;
75
+ if (permissionCode) {
76
+ if (!permission.checkVisible(permissionCode)) {
77
+ return false;
78
+ }
79
+ }
80
+ return true;
81
+ };
79
82
  const callSlot = (slotFunc, params) => {
80
83
  if (slotFunc) {
81
84
  if (XEUtils.isString(slotFunc)) {
@@ -199,12 +202,15 @@ export default defineComponent({
199
202
  dispatchEvent('tab-close-fail', { value, name, nextName }, evnt);
200
203
  }
201
204
  };
202
- let scrollTimeout = null;
203
205
  const startScrollAnimation = (offsetPos, offsetSize) => {
206
+ const { slTimeout } = internalData;
204
207
  let offsetLeft = offsetSize;
205
208
  let scrollCount = 6;
206
209
  let delayNum = 35;
207
- clearTimeout(scrollTimeout);
210
+ if (slTimeout) {
211
+ clearTimeout(slTimeout);
212
+ internalData.slTimeout = undefined;
213
+ }
208
214
  const scrollAnimate = () => {
209
215
  const headerWrapperEl = refHeadWrapperElem.value;
210
216
  if (scrollCount > 0) {
@@ -216,14 +222,14 @@ export default defineComponent({
216
222
  if (clientWidth + scrollLeft < scrollWidth) {
217
223
  headerWrapperEl.scrollLeft += offsetLeft;
218
224
  delayNum -= 4;
219
- scrollTimeout = setTimeout(scrollAnimate, delayNum);
225
+ internalData.slTimeout = setTimeout(scrollAnimate, delayNum);
220
226
  }
221
227
  }
222
228
  else {
223
229
  if (scrollLeft > 0) {
224
230
  headerWrapperEl.scrollLeft -= offsetLeft;
225
231
  delayNum -= 4;
226
- scrollTimeout = setTimeout(scrollAnimate, delayNum);
232
+ internalData.slTimeout = setTimeout(scrollAnimate, delayNum);
227
233
  }
228
234
  }
229
235
  updateTabStyle();
@@ -273,41 +279,43 @@ export default defineComponent({
273
279
  }
274
280
  });
275
281
  };
276
- const createHandlePrevNext = (isNext) => {
277
- return () => {
278
- const { activeName } = reactData;
279
- const tabOptions = computeTabOptions.value;
280
- const tabStaticOptions = computeTabStaticOptions.value;
281
- const list = tabStaticOptions.length ? tabStaticOptions : tabOptions;
282
- const index = XEUtils.findIndexOf(list, item => item.name === activeName);
283
- if (index > -1) {
284
- let item = null;
285
- if (isNext) {
286
- if (index < list.length - 1) {
287
- item = list[index + 1];
288
- }
289
- }
290
- else {
291
- if (index > 0) {
292
- item = list[index - 1];
293
- }
282
+ const handlePrevNext = (isNext) => {
283
+ const { activeName } = reactData;
284
+ const tabOptions = computeTabOptions.value;
285
+ const tabStaticOptions = computeTabStaticOptions.value;
286
+ const list = tabStaticOptions.length ? tabStaticOptions : tabOptions;
287
+ const index = XEUtils.findIndexOf(list, item => item.name === activeName);
288
+ if (index > -1) {
289
+ let item = null;
290
+ if (isNext) {
291
+ if (index < list.length - 1) {
292
+ item = list[index + 1];
294
293
  }
295
- if (item) {
296
- const name = item.name;
297
- const value = name;
298
- reactData.activeName = name;
299
- emit('update:modelValue', value);
300
- addInitName(name, null);
294
+ }
295
+ else {
296
+ if (index > 0) {
297
+ item = list[index - 1];
301
298
  }
302
299
  }
303
- return nextTick();
304
- };
300
+ if (item) {
301
+ const name = item.name;
302
+ const value = name;
303
+ reactData.activeName = name;
304
+ emit('update:modelValue', value);
305
+ addInitName(name, null);
306
+ }
307
+ }
308
+ return nextTick();
305
309
  };
306
310
  const tabsMethods = {
307
311
  dispatchEvent,
308
312
  scrollToTab,
309
- prev: createHandlePrevNext(false),
310
- next: createHandlePrevNext(true),
313
+ prev() {
314
+ return handlePrevNext(false);
315
+ },
316
+ next() {
317
+ return handlePrevNext(true);
318
+ },
311
319
  prevTab() {
312
320
  if (process.env.NODE_ENV === 'development') {
313
321
  warnLog('vxe.error.delFunc', ['prevTab', 'prev']);
@@ -445,9 +453,9 @@ export default defineComponent({
445
453
  const { activeName } = reactData;
446
454
  const activeDefaultTab = tabList.find(item => item.name === activeName);
447
455
  if (destroyOnClose) {
448
- return activeDefaultTab ? [renderTabPane(activeDefaultTab)] : createCommentVNode();
456
+ return [activeDefaultTab ? renderTabPane(activeDefaultTab) : createCommentVNode()];
449
457
  }
450
- return tabList.map(renderTabPane);
458
+ return tabList.map((item) => renderTabPane(item));
451
459
  };
452
460
  const renderVN = () => {
453
461
  const { type, height, padding, trigger } = props;
@@ -514,7 +522,9 @@ export default defineComponent({
514
522
  });
515
523
  }
516
524
  watch(() => reactData.resizeFlag, () => {
517
- nextTick(updateTabStyle);
525
+ nextTick(() => {
526
+ updateTabStyle();
527
+ });
518
528
  });
519
529
  nextTick(() => {
520
530
  globalEvents.on($xeTabs, 'resize', updateTabStyle);
@@ -525,10 +535,10 @@ export default defineComponent({
525
535
  onUnmounted(() => {
526
536
  globalEvents.off($xeTabs, 'resize');
527
537
  });
528
- $xeTabs.renderVN = renderVN;
529
538
  provide('$xeTabs', $xeTabs);
530
539
  addInitName(props.modelValue, null);
531
540
  initDefaultName(reactData.staticTabs.length ? reactData.staticTabs : props.options);
541
+ $xeTabs.renderVN = renderVN;
532
542
  return $xeTabs;
533
543
  },
534
544
  render() {
@@ -8,27 +8,45 @@ export default defineComponent({
8
8
  props: {
9
9
  modelValue: [String, Number],
10
10
  className: String,
11
- immediate: { type: Boolean, default: true },
11
+ immediate: {
12
+ type: Boolean,
13
+ default: true
14
+ },
12
15
  name: String,
13
16
  readonly: {
14
17
  type: Boolean,
15
18
  default: null
16
19
  },
17
- editable: { type: Boolean, default: true },
20
+ editable: {
21
+ type: Boolean,
22
+ default: true
23
+ },
18
24
  disabled: {
19
25
  type: Boolean,
20
26
  default: null
21
27
  },
22
28
  placeholder: String,
23
29
  maxLength: [String, Number],
24
- rows: { type: [String, Number], default: null },
25
- cols: { type: [String, Number], default: null },
30
+ rows: {
31
+ type: [String, Number],
32
+ default: null
33
+ },
34
+ cols: {
35
+ type: [String, Number],
36
+ default: null
37
+ },
26
38
  showWordCount: Boolean,
27
39
  countMethod: Function,
28
40
  autosize: [Boolean, Object],
29
41
  form: String,
30
- resize: { type: String, default: () => getConfig().textarea.resize },
31
- size: { type: String, default: () => getConfig().textarea.size || getConfig().size },
42
+ resize: {
43
+ type: String,
44
+ default: () => getConfig().textarea.resize
45
+ },
46
+ size: {
47
+ type: String,
48
+ default: () => getConfig().textarea.size || getConfig().size
49
+ },
32
50
  // 已废弃
33
51
  maxlength: [String, Number]
34
52
  },
@@ -171,7 +189,7 @@ export default defineComponent({
171
189
  const value = reactData.inputValue;
172
190
  $xeTextarea.dispatchEvent(evnt.type, { value }, evnt);
173
191
  };
174
- const emitUpdate = (value, evnt) => {
192
+ const handleChange = (value, evnt) => {
175
193
  reactData.inputValue = value;
176
194
  emit('update:modelValue', value);
177
195
  if (XEUtils.toValueString(props.modelValue) !== value) {
@@ -188,7 +206,7 @@ export default defineComponent({
188
206
  const value = textElem.value;
189
207
  reactData.inputValue = value;
190
208
  if (immediate) {
191
- emitUpdate(value, evnt);
209
+ handleChange(value, evnt);
192
210
  }
193
211
  $xeTextarea.dispatchEvent('input', { value }, evnt);
194
212
  handleResize();
@@ -199,14 +217,14 @@ export default defineComponent({
199
217
  triggerEvent(evnt);
200
218
  }
201
219
  else {
202
- emitUpdate(reactData.inputValue, evnt);
220
+ handleChange(reactData.inputValue, evnt);
203
221
  }
204
222
  };
205
223
  const blurEvent = (evnt) => {
206
224
  const { immediate } = props;
207
225
  const { inputValue } = reactData;
208
226
  if (!immediate) {
209
- emitUpdate(inputValue, evnt);
227
+ handleChange(inputValue, evnt);
210
228
  }
211
229
  $xeTextarea.dispatchEvent('blur', { value: inputValue }, evnt);
212
230
  };
@@ -8,17 +8,38 @@ export default defineComponent({
8
8
  name: 'VxeTooltip',
9
9
  props: {
10
10
  modelValue: Boolean,
11
- size: { type: String, default: () => getConfig().tooltip.size || getConfig().size },
12
- trigger: { type: String, default: () => getConfig().tooltip.trigger || 'hover' },
13
- theme: { type: String, default: () => getConfig().tooltip.theme || 'dark' },
14
- content: { type: [String, Number], default: null },
11
+ size: {
12
+ type: String,
13
+ default: () => getConfig().tooltip.size || getConfig().size
14
+ },
15
+ trigger: {
16
+ type: String,
17
+ default: () => getConfig().tooltip.trigger || 'hover'
18
+ },
19
+ theme: {
20
+ type: String,
21
+ default: () => getConfig().tooltip.theme || 'dark'
22
+ },
23
+ content: {
24
+ type: [String, Number],
25
+ default: null
26
+ },
15
27
  useHTML: Boolean,
16
28
  zIndex: [String, Number],
17
29
  popupClassName: [String, Function],
18
- isArrow: { type: Boolean, default: true },
30
+ isArrow: {
31
+ type: Boolean,
32
+ default: true
33
+ },
19
34
  enterable: Boolean,
20
- enterDelay: { type: Number, default: () => getConfig().tooltip.enterDelay },
21
- leaveDelay: { type: Number, default: () => getConfig().tooltip.leaveDelay }
35
+ enterDelay: {
36
+ type: Number,
37
+ default: () => getConfig().tooltip.enterDelay
38
+ },
39
+ leaveDelay: {
40
+ type: Number,
41
+ default: () => getConfig().tooltip.leaveDelay
42
+ }
22
43
  },
23
44
  emits: [
24
45
  'update:modelValue'
@@ -41,6 +62,7 @@ export default defineComponent({
41
62
  arrowStyle: {}
42
63
  }
43
64
  });
65
+ const internalData = {};
44
66
  const refElem = ref();
45
67
  const refMaps = {
46
68
  refElem
@@ -50,6 +72,7 @@ export default defineComponent({
50
72
  props,
51
73
  context,
52
74
  reactData,
75
+ internalData,
53
76
  getRefMaps: () => refMaps
54
77
  };
55
78
  let tooltipMethods = {};
@@ -144,23 +167,28 @@ export default defineComponent({
144
167
  tipStore.arrowStyle = { left: '50%' };
145
168
  return tooltipMethods.updatePlacement();
146
169
  };
147
- const showDelayTip = XEUtils.debounce(() => {
148
- if (reactData.tipActive) {
149
- showTip();
150
- }
151
- }, props.enterDelay, { leading: false, trailing: true });
170
+ const handleDelayFn = () => {
171
+ internalData.showDelayTip = XEUtils.debounce(() => {
172
+ if (reactData.tipActive) {
173
+ showTip();
174
+ }
175
+ }, props.enterDelay, { leading: false, trailing: true });
176
+ };
152
177
  const handleVisible = (target, content) => {
153
178
  const contentSlot = slots.content;
154
179
  if (!contentSlot && (content === '' || XEUtils.eqNull(content))) {
155
180
  return nextTick();
156
181
  }
157
182
  if (target) {
183
+ const { showDelayTip } = internalData;
158
184
  const { trigger, enterDelay } = props;
159
185
  reactData.tipActive = true;
160
186
  reactData.tipTarget = target;
161
187
  reactData.tipContent = content;
162
188
  if (enterDelay && trigger === 'hover') {
163
- showDelayTip();
189
+ if (showDelayTip) {
190
+ showDelayTip();
191
+ }
164
192
  }
165
193
  else {
166
194
  return showTip();
@@ -195,20 +223,75 @@ export default defineComponent({
195
223
  const el = refElem.value;
196
224
  if (tipTarget && el) {
197
225
  updateTipStyle();
198
- return nextTick().then(updateTipStyle);
226
+ return nextTick().then(() => {
227
+ updateTipStyle();
228
+ });
199
229
  }
200
230
  });
201
231
  },
202
232
  isActived() {
203
233
  return reactData.tipActive;
204
234
  },
205
- setActived(actived) {
206
- reactData.tipActive = !!actived;
235
+ setActived(active) {
236
+ reactData.tipActive = !!active;
207
237
  }
208
238
  };
209
239
  Object.assign($xeTooltip, tooltipMethods);
210
- watch(() => props.content, () => {
211
- reactData.tipContent = props.content;
240
+ const renderContent = () => {
241
+ const { useHTML } = props;
242
+ const { tipContent } = reactData;
243
+ const contentSlot = slots.content;
244
+ if (contentSlot) {
245
+ return h('div', {
246
+ key: 1,
247
+ class: 'vxe-table--tooltip-content'
248
+ }, getSlotVNs(contentSlot({})));
249
+ }
250
+ if (useHTML) {
251
+ return h('div', {
252
+ key: 2,
253
+ class: 'vxe-table--tooltip-content',
254
+ innerHTML: tipContent
255
+ });
256
+ }
257
+ return h('div', {
258
+ key: 3,
259
+ class: 'vxe-table--tooltip-content'
260
+ }, `${tipContent}`);
261
+ };
262
+ const renderVN = () => {
263
+ const { popupClassName, theme, isArrow, enterable } = props;
264
+ const { tipActive, visible, tipStore } = reactData;
265
+ const defaultSlot = slots.default;
266
+ const vSize = computeSize.value;
267
+ let ons;
268
+ if (enterable) {
269
+ ons = {
270
+ onMouseenter: wrapperMouseenterEvent,
271
+ onMouseleave: wrapperMouseleaveEvent
272
+ };
273
+ }
274
+ return h('div', Object.assign({ ref: refElem, class: ['vxe-table--tooltip-wrapper', `theme--${theme}`, popupClassName ? (XEUtils.isFunction(popupClassName) ? popupClassName({ $tooltip: $xeTooltip }) : popupClassName) : '', {
275
+ [`size--${vSize}`]: vSize,
276
+ [`placement--${tipStore.placement}`]: tipStore.placement,
277
+ 'is--enterable': enterable,
278
+ 'is--visible': visible,
279
+ 'is--arrow': isArrow,
280
+ 'is--active': tipActive
281
+ }], style: tipStore.style }, ons), [
282
+ renderContent(),
283
+ h('div', {
284
+ class: 'vxe-table--tooltip-arrow',
285
+ style: tipStore.arrowStyle
286
+ }),
287
+ ...(defaultSlot ? getSlotVNs(defaultSlot({})) : [])
288
+ ]);
289
+ };
290
+ watch(() => props.enterDelay, () => {
291
+ handleDelayFn();
292
+ });
293
+ watch(() => props.content, (val) => {
294
+ reactData.tipContent = val;
212
295
  });
213
296
  watch(() => props.modelValue, (val) => {
214
297
  if (!reactData.isUpdate) {
@@ -223,7 +306,7 @@ export default defineComponent({
223
306
  });
224
307
  onMounted(() => {
225
308
  nextTick(() => {
226
- const { trigger, content, modelValue } = props;
309
+ const { trigger, content } = props;
227
310
  const wrapperElem = refElem.value;
228
311
  if (wrapperElem) {
229
312
  const parentNode = wrapperElem.parentNode;
@@ -249,7 +332,7 @@ export default defineComponent({
249
332
  target.onclick = clickEvent;
250
333
  }
251
334
  }
252
- if (modelValue) {
335
+ if (props.modelValue) {
253
336
  handleVisible(target, content);
254
337
  }
255
338
  }
@@ -257,17 +340,12 @@ export default defineComponent({
257
340
  });
258
341
  });
259
342
  onBeforeUnmount(() => {
260
- const { trigger } = props;
261
343
  const { target } = reactData;
262
344
  const wrapperElem = refElem.value;
263
345
  if (target) {
264
- if (trigger === 'hover') {
265
- target.onmouseenter = null;
266
- target.onmouseleave = null;
267
- }
268
- else if (trigger === 'click') {
269
- target.onclick = null;
270
- }
346
+ target.onmouseenter = null;
347
+ target.onmouseleave = null;
348
+ target.onclick = null;
271
349
  }
272
350
  if (wrapperElem) {
273
351
  const parentNode = wrapperElem.parentNode;
@@ -276,56 +354,7 @@ export default defineComponent({
276
354
  }
277
355
  }
278
356
  });
279
- const renderContent = () => {
280
- const { useHTML } = props;
281
- const { tipContent } = reactData;
282
- const contentSlot = slots.content;
283
- if (contentSlot) {
284
- return h('div', {
285
- key: 1,
286
- class: 'vxe-table--tooltip-content'
287
- }, getSlotVNs(contentSlot({})));
288
- }
289
- if (useHTML) {
290
- return h('div', {
291
- key: 2,
292
- class: 'vxe-table--tooltip-content',
293
- innerHTML: tipContent
294
- });
295
- }
296
- return h('div', {
297
- key: 3,
298
- class: 'vxe-table--tooltip-content'
299
- }, `${tipContent}`);
300
- };
301
- const renderVN = () => {
302
- const { popupClassName, theme, isArrow, enterable } = props;
303
- const { tipActive, visible, tipStore } = reactData;
304
- const defaultSlot = slots.default;
305
- const vSize = computeSize.value;
306
- let ons;
307
- if (enterable) {
308
- ons = {
309
- onMouseenter: wrapperMouseenterEvent,
310
- onMouseleave: wrapperMouseleaveEvent
311
- };
312
- }
313
- return h('div', Object.assign({ ref: refElem, class: ['vxe-table--tooltip-wrapper', `theme--${theme}`, popupClassName ? (XEUtils.isFunction(popupClassName) ? popupClassName({ $tooltip: $xeTooltip }) : popupClassName) : '', {
314
- [`size--${vSize}`]: vSize,
315
- [`placement--${tipStore.placement}`]: tipStore.placement,
316
- 'is--enterable': enterable,
317
- 'is--visible': visible,
318
- 'is--arrow': isArrow,
319
- 'is--active': tipActive
320
- }], style: tipStore.style }, ons), [
321
- renderContent(),
322
- h('div', {
323
- class: 'vxe-table--tooltip-arrow',
324
- style: tipStore.arrowStyle
325
- }),
326
- ...(defaultSlot ? getSlotVNs(defaultSlot({})) : [])
327
- ]);
328
- };
357
+ handleDelayFn();
329
358
  $xeTooltip.renderVN = renderVN;
330
359
  return $xeTooltip;
331
360
  },
@@ -105,7 +105,10 @@ export default defineComponent({
105
105
  type: String,
106
106
  default: () => getConfig().tree.iconLoaded
107
107
  },
108
- size: { type: String, default: () => getConfig().tree.size || getConfig().size }
108
+ size: {
109
+ type: String,
110
+ default: () => getConfig().tree.size || getConfig().size
111
+ }
109
112
  },
110
113
  emits: [
111
114
  'update:modelValue',
@@ -444,7 +447,7 @@ export default defineComponent({
444
447
  const { lazy, transform } = props;
445
448
  const { nodeMaps } = reactData;
446
449
  if (!lazy) {
447
- return nextTick();
450
+ return Promise.resolve([]);
448
451
  }
449
452
  const childrenField = computeChildrenField.value;
450
453
  const parentNodeItem = nodeMaps[getNodeId(node)];
@@ -1069,7 +1072,6 @@ export default defineComponent({
1069
1072
  : {})
1070
1073
  ]);
1071
1074
  };
1072
- $xeTree.renderVN = renderVN;
1073
1075
  const dataFlag = ref(0);
1074
1076
  watch(() => props.data ? props.data.length : 0, () => {
1075
1077
  dataFlag.value++;
@@ -1100,6 +1102,7 @@ export default defineComponent({
1100
1102
  });
1101
1103
  updateData(props.data || []);
1102
1104
  updateCheckboxChecked(props.checkNodeKeys || []);
1105
+ $xeTree.renderVN = renderVN;
1103
1106
  return $xeTree;
1104
1107
  },
1105
1108
  render() {