vxe-pc-ui 4.20.7 → 4.20.9

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 (92) hide show
  1. package/dist/all.esm.js +915 -820
  2. package/dist/style.css +1 -1
  3. package/dist/style.min.css +1 -1
  4. package/es/card/src/card.js +8 -6
  5. package/es/drawer/src/drawer.js +7 -5
  6. package/es/icon/style.css +1 -1
  7. package/es/layout-aside/src/layout-aside.js +6 -4
  8. package/es/layout-body/src/layout-body.js +6 -4
  9. package/es/layout-container/src/layout-container.js +11 -3
  10. package/es/list/src/list.js +79 -50
  11. package/es/menu/src/menu.js +7 -5
  12. package/es/modal/src/modal.js +7 -5
  13. package/es/scrollbar/src/scrollbar.js +8 -0
  14. package/es/style.css +1 -1
  15. package/es/style.min.css +1 -1
  16. package/es/tabs/src/tabs.js +5 -4
  17. package/es/tooltip/src/tooltip.js +15 -7
  18. package/es/tree/src/tree.js +74 -45
  19. package/es/ui/index.js +1 -1
  20. package/es/ui/src/log.js +1 -1
  21. package/lib/card/src/card.js +9 -6
  22. package/lib/card/src/card.min.js +1 -1
  23. package/lib/drawer/src/drawer.js +7 -4
  24. package/lib/drawer/src/drawer.min.js +1 -1
  25. package/lib/icon/style/style.css +1 -1
  26. package/lib/icon/style/style.min.css +1 -1
  27. package/lib/index.umd.js +371 -163
  28. package/lib/index.umd.min.js +1 -1
  29. package/lib/layout-aside/src/layout-aside.js +7 -4
  30. package/lib/layout-aside/src/layout-aside.min.js +1 -1
  31. package/lib/layout-body/src/layout-body.js +7 -4
  32. package/lib/layout-body/src/layout-body.min.js +1 -1
  33. package/lib/layout-container/src/layout-container.js +20 -4
  34. package/lib/layout-container/src/layout-container.min.js +1 -1
  35. package/lib/list/src/list.js +79 -47
  36. package/lib/list/src/list.min.js +1 -1
  37. package/lib/menu/src/menu.js +8 -4
  38. package/lib/menu/src/menu.min.js +1 -1
  39. package/lib/modal/src/modal.js +7 -4
  40. package/lib/modal/src/modal.min.js +1 -1
  41. package/lib/scrollbar/src/scrollbar.js +8 -0
  42. package/lib/style.css +1 -1
  43. package/lib/style.min.css +1 -1
  44. package/lib/tabs/src/tabs.js +6 -5
  45. package/lib/tabs/src/tabs.min.js +1 -1
  46. package/lib/tooltip/src/tooltip.js +15 -6
  47. package/lib/tooltip/src/tooltip.min.js +1 -1
  48. package/lib/tree/src/tree.js +74 -43
  49. package/lib/tree/src/tree.min.js +1 -1
  50. package/lib/ui/index.js +1 -1
  51. package/lib/ui/index.min.js +1 -1
  52. package/lib/ui/src/log.js +1 -1
  53. package/lib/ui/src/log.min.js +1 -1
  54. package/package.json +2 -2
  55. package/packages/card/src/card.ts +8 -6
  56. package/packages/drawer/src/drawer.ts +7 -5
  57. package/packages/layout-aside/src/layout-aside.ts +6 -4
  58. package/packages/layout-body/src/layout-body.ts +6 -4
  59. package/packages/layout-container/src/layout-container.ts +13 -3
  60. package/packages/list/src/list.ts +81 -50
  61. package/packages/menu/src/menu.ts +7 -5
  62. package/packages/modal/src/modal.ts +7 -5
  63. package/packages/scrollbar/src/scrollbar.ts +8 -1
  64. package/packages/tabs/src/tabs.ts +5 -4
  65. package/packages/tooltip/src/tooltip.ts +15 -7
  66. package/packages/tree/src/tree.ts +76 -45
  67. package/types/components/card.d.ts +2 -2
  68. package/types/components/drawer.d.ts +2 -2
  69. package/types/components/grid.d.ts +3 -1
  70. package/types/components/layout-aside.d.ts +2 -2
  71. package/types/components/layout-body.d.ts +2 -2
  72. package/types/components/layout-container.d.ts +3 -1
  73. package/types/components/list.d.ts +2 -2
  74. package/types/components/menu.d.ts +2 -2
  75. package/types/components/modal.d.ts +2 -2
  76. package/types/components/scrollbar.d.ts +10 -0
  77. package/types/components/table.d.ts +9 -5
  78. package/types/components/tabs.d.ts +2 -2
  79. package/types/components/tooltip.d.ts +2 -2
  80. package/types/components/tree.d.ts +2 -2
  81. /package/es/icon/{iconfont.1792080138286.ttf → iconfont.1792139440389.ttf} +0 -0
  82. /package/es/icon/{iconfont.1792080138286.woff → iconfont.1792139440389.woff} +0 -0
  83. /package/es/icon/{iconfont.1792080138286.woff2 → iconfont.1792139440389.woff2} +0 -0
  84. /package/es/{iconfont.1792080138286.ttf → iconfont.1792139440389.ttf} +0 -0
  85. /package/es/{iconfont.1792080138286.woff → iconfont.1792139440389.woff} +0 -0
  86. /package/es/{iconfont.1792080138286.woff2 → iconfont.1792139440389.woff2} +0 -0
  87. /package/lib/icon/style/{iconfont.1792080138286.ttf → iconfont.1792139440389.ttf} +0 -0
  88. /package/lib/icon/style/{iconfont.1792080138286.woff → iconfont.1792139440389.woff} +0 -0
  89. /package/lib/icon/style/{iconfont.1792080138286.woff2 → iconfont.1792139440389.woff2} +0 -0
  90. /package/lib/{iconfont.1792080138286.ttf → iconfont.1792139440389.ttf} +0 -0
  91. /package/lib/{iconfont.1792080138286.woff → iconfont.1792139440389.woff} +0 -0
  92. /package/lib/{iconfont.1792080138286.woff2 → iconfont.1792139440389.woff2} +0 -0
@@ -1,14 +1,22 @@
1
1
  import { ref, h, reactive, PropType } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
- import { getConfig, useSize, createEvent } from '../../ui'
3
+ import { VxeUI, useFns } from '../../ui'
4
4
  import XEUtils from 'xe-utils'
5
5
 
6
6
  import type { VxeLayoutContainerPropTypes, LayoutContainerReactData, LayoutContainerPrivateMethods, VxeLayoutContainerEmits, LayoutContainerMethods, LayoutContainerPrivateRef, VxeLayoutContainerPrivateComputed, VxeLayoutContainerConstructor, VxeLayoutContainerPrivateMethods, ValueOf } from '../../../types'
7
7
 
8
+ const { getConfig, baseUtils, createEvent } = VxeUI
9
+
10
+ const { getDefVal } = baseUtils
11
+
8
12
  export default defineVxeComponent({
9
13
  name: 'VxeLayoutContainer',
10
14
  props: {
11
15
  vertical: Boolean as PropType<VxeLayoutContainerPropTypes.Vertical>,
16
+ useScrollbar: {
17
+ type: Boolean as PropType<VxeLayoutContainerPropTypes.UseScrollbar>,
18
+ default: () => getDefVal(getConfig().layoutContainer.useScrollbar, getConfig().useScrollbar)
19
+ },
12
20
  size: {
13
21
  type: String as PropType<VxeLayoutContainerPropTypes.Size>,
14
22
  default: () => getConfig().layoutContainer.size || getConfig().size
@@ -22,7 +30,8 @@ export default defineVxeComponent({
22
30
 
23
31
  const refElem = ref<HTMLDivElement>()
24
32
 
25
- const { computeSize } = useSize(props)
33
+ const { computeSize } = useFns.useSize(props)
34
+ const { computeIsVScrollbar } = useFns.useVScrollbar(props)
26
35
 
27
36
  const reactData = reactive<LayoutContainerReactData>({
28
37
  })
@@ -32,7 +41,8 @@ export default defineVxeComponent({
32
41
  }
33
42
 
34
43
  const computeMaps: VxeLayoutContainerPrivateComputed = {
35
- computeSize
44
+ computeSize,
45
+ computeIsVScrollbar
36
46
  }
37
47
 
38
48
  const $xeLayoutContainer = {
@@ -1,7 +1,7 @@
1
1
  import { h, PropType, ref, Ref, computed, onBeforeUnmount, watch, reactive, nextTick, onActivated, onMounted, VNode } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import XEUtils from 'xe-utils'
4
- import { VxeUI, useSize, createEvent, renderEmptyElement } from '../../ui'
4
+ import { VxeUI, createEvent, renderEmptyElement } from '../../ui'
5
5
  import { getCrossListDragRowInfo } from './store'
6
6
  import { isScale, removeClass, addClass, getTpImg, toCssUnit, hasClass } from '../../ui/src/dom'
7
7
  import { isEnableConf, getText, enModelValue, deModelValue, getDefaultConfig } from '../../ui/src/utils'
@@ -12,7 +12,7 @@ import VxeLoadingComponent from '../../loading'
12
12
 
13
13
  import type { VxeListConstructor, VxeListPropTypes, VxeListEmits, ListReactData, VxeListPrivateMethods, ListInternalData, VxeListDefines, ValueOf, ListMethods, ListPrivateMethods, ListPrivateRef, VxeComponentStyleType } from '../../../types'
14
14
 
15
- const { getConfig, getIcon, getI18n, domUtils, scrollbarUtils, menus, globalEvents, globalResize } = VxeUI
15
+ const { getConfig, getIcon, getI18n, domUtils, scrollbarUtils, useFns, menus, globalEvents, globalResize } = VxeUI
16
16
 
17
17
  const { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } = scrollbarUtils
18
18
 
@@ -167,7 +167,8 @@ export default defineVxeComponent({
167
167
 
168
168
  const browseObj = XEUtils.browse()
169
169
 
170
- const { computeSize } = useSize(props)
170
+ const { computeSize } = useFns.useSize(props)
171
+ const { computeIsVScrollbar } = useFns.useVScrollbar(props)
171
172
 
172
173
  const reactData = reactive(createReactData())
173
174
 
@@ -179,6 +180,7 @@ export default defineVxeComponent({
179
180
  const refHeaderElem = ref() as Ref<HTMLDivElement>
180
181
  const refFooterElem = ref() as Ref<HTMLDivElement>
181
182
  const refVirtualWrapper = ref() as Ref<HTMLDivElement>
183
+ const refVirtualSpaceElem = ref() as Ref<HTMLDivElement>
182
184
  const refVirtualBody = ref() as Ref<HTMLDivElement>
183
185
 
184
186
  const refTrackXElem = ref<HTMLDivElement>()
@@ -521,7 +523,6 @@ export default defineVxeComponent({
521
523
  */
522
524
  const refreshScroll = () => {
523
525
  const { lastScrollLeft, lastScrollTop } = internalData
524
- updateScrollbar()
525
526
  return clearScroll().then(() => {
526
527
  if (lastScrollLeft || lastScrollTop) {
527
528
  internalData.lastScrollLeft = 0
@@ -532,8 +533,14 @@ export default defineVxeComponent({
532
533
  }
533
534
 
534
535
  const updateScrollbar = () => {
535
- updateThumbSize()
536
- updateThumbOffset()
536
+ const isVScrollbar = computeIsVScrollbar.value
537
+ if (isVScrollbar) {
538
+ return nextTick().then(() => {
539
+ updateThumbSize()
540
+ updateThumbOffset()
541
+ })
542
+ }
543
+ return Promise.resolve()
537
544
  }
538
545
 
539
546
  /**
@@ -553,10 +560,11 @@ export default defineVxeComponent({
553
560
  parentHeight = parentEl.clientHeight - Math.ceil(XEUtils.toNumber(parentStyle.paddingLeft) + XEUtils.toNumber(parentStyle.paddingRight))
554
561
  }
555
562
  reactData.parentHeight = parentHeight
556
- updateScrollbar()
557
563
  updateHeight()
558
564
  if (el.clientWidth && el.clientHeight) {
559
- return computeScrollLoad()
565
+ return computeScrollLoad().then(() => {
566
+ updateScrollbar()
567
+ })
560
568
  }
561
569
  }
562
570
  return nextTick()
@@ -565,7 +573,7 @@ export default defineVxeComponent({
565
573
  const loadYData = (evnt: Event) => {
566
574
  const { scrollYStore } = internalData
567
575
  const { startIndex, endIndex, visibleSize, offsetSize, rowHeight } = scrollYStore
568
- const scrollBodyElem = evnt.target as HTMLDivElement
576
+ const scrollBodyElem = evnt.currentTarget as HTMLDivElement
569
577
  const scrollTop = scrollBodyElem.scrollTop
570
578
  const toVisibleIndex = Math.floor(scrollTop / rowHeight)
571
579
  const offsetStartIndex = Math.max(0, toVisibleIndex - 1 - offsetSize)
@@ -580,7 +588,7 @@ export default defineVxeComponent({
580
588
  }
581
589
 
582
590
  const scrollEvent = (evnt: Event) => {
583
- const scrollBodyElem = evnt.target as HTMLDivElement
591
+ const scrollBodyElem = evnt.currentTarget as HTMLDivElement
584
592
  const scrollTop = scrollBodyElem.scrollTop
585
593
  const scrollLeft = scrollBodyElem.scrollLeft
586
594
  const isX = scrollLeft !== internalData.lastScrollLeft
@@ -1940,6 +1948,27 @@ export default defineVxeComponent({
1940
1948
  }
1941
1949
  }
1942
1950
 
1951
+ const bindScrollbarResize = () => {
1952
+ const { scrollObserver } = internalData
1953
+ const isVScrollbar = computeIsVScrollbar.value
1954
+ if (isVScrollbar) {
1955
+ if (!scrollObserver) {
1956
+ const el = refElem.value
1957
+ const viewInnerEl = refVirtualSpaceElem.value
1958
+ const scrollObserver = globalResize.create(() => {
1959
+ reScrollFlag.value++
1960
+ })
1961
+ if (el) {
1962
+ scrollObserver.observe(el)
1963
+ }
1964
+ if (viewInnerEl) {
1965
+ scrollObserver.observe(viewInnerEl)
1966
+ }
1967
+ internalData.scrollObserver = scrollObserver
1968
+ }
1969
+ }
1970
+ }
1971
+
1943
1972
  const updateThumbSize = () => {
1944
1973
  const viewEl = refVirtualWrapper.value
1945
1974
  if (!viewEl) {
@@ -2348,12 +2377,13 @@ export default defineVxeComponent({
2348
2377
  }
2349
2378
 
2350
2379
  const renderVN = () => {
2351
- const { showCheckbox, className, loading, useScrollbar } = props
2380
+ const { showCheckbox, className, loading } = props
2352
2381
  const { bodyHeight, topSpaceHeight, rowList, isAllChecked, isAllIndeterminate, xThumbWidth, yThumbHeight } = reactData
2353
2382
  const defaultSlot = slots.default
2354
2383
  const headerSlot = slots.header
2355
2384
  const footerSlot = slots.footer
2356
2385
  const vSize = computeSize.value
2386
+ const isVScrollbar = computeIsVScrollbar.value
2357
2387
  const wrapperStyles = computeWrapperStyles.value
2358
2388
  const virtualStyles = computeVirtualStyles.value
2359
2389
  const radioOpts = computeRadioOpts.value
@@ -2384,17 +2414,17 @@ export default defineVxeComponent({
2384
2414
  ref: refElem,
2385
2415
  class: [
2386
2416
  'vxe-list',
2387
- useScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '',
2388
- useScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '',
2389
- useScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '',
2390
- useScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '',
2417
+ isVScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '',
2418
+ isVScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '',
2419
+ isVScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '',
2420
+ isVScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '',
2391
2421
  className ? (XEUtils.isFunction(className) ? className({ $list: $xeList }) : className) : '',
2392
2422
  {
2393
2423
  [`size--${vSize}`]: vSize,
2394
- 'is--virtual-scrollbar': useScrollbar,
2395
- 'ov-padding': useScrollbar && scrollbarOpts.padding,
2396
- 'ov-x--auto-hide': useScrollbar && scrollXAutoHide,
2397
- 'ov-y--auto-hide': useScrollbar && scrollYAutoHide,
2424
+ 'is--virtual-scrollbar': isVScrollbar,
2425
+ 'ov-padding': isVScrollbar && scrollbarOpts.padding,
2426
+ 'ov-x--auto-hide': isVScrollbar && scrollXAutoHide,
2427
+ 'ov-y--auto-hide': isVScrollbar && scrollYAutoHide,
2398
2428
  'overflow-y': yThumbHeight,
2399
2429
  'overflow-x': xThumbWidth,
2400
2430
  'is--drag': isDrag,
@@ -2443,6 +2473,7 @@ export default defineVxeComponent({
2443
2473
  onScroll: scrollEvent
2444
2474
  }, [
2445
2475
  h('div', {
2476
+ ref: refVirtualSpaceElem,
2446
2477
  class: 'vxe-list--y-space',
2447
2478
  style: {
2448
2479
  height: bodyHeight ? `${bodyHeight}px` : ''
@@ -2471,7 +2502,7 @@ export default defineVxeComponent({
2471
2502
  /**
2472
2503
  * 滚动条
2473
2504
  */
2474
- useScrollbar
2505
+ isVScrollbar
2475
2506
  ? h('div', {
2476
2507
  class: scrollbarWrapperClss
2477
2508
  }, [
@@ -2536,44 +2567,56 @@ export default defineVxeComponent({
2536
2567
  loadData(props.data || [])
2537
2568
  })
2538
2569
 
2539
- const reFlag = ref(0)
2570
+ const reScrollFlag = ref(0)
2571
+ const reLayoutFlag = ref(0)
2540
2572
  watch(() => props.height, () => {
2541
- reFlag.value++
2573
+ reLayoutFlag.value++
2542
2574
  })
2543
2575
  watch(() => props.maxHeight, () => {
2544
- reFlag.value++
2576
+ reLayoutFlag.value++
2545
2577
  })
2546
2578
  watch(() => props.syncResize, () => {
2547
- reFlag.value++
2579
+ reLayoutFlag.value++
2548
2580
  })
2549
- watch(() => props.useScrollbar, () => {
2550
- reFlag.value++
2581
+ watch(computeIsVScrollbar, () => {
2582
+ nextTick(() => {
2583
+ bindScrollbarResize()
2584
+ nextTick(() => {
2585
+ reLayoutFlag.value++
2586
+ })
2587
+ })
2551
2588
  })
2552
2589
  watch(computeRowHeight, () => {
2553
- reFlag.value++
2590
+ reLayoutFlag.value++
2554
2591
  })
2555
2592
  watch(computeScrollYWidth, () => {
2556
- reFlag.value++
2593
+ reLayoutFlag.value++
2557
2594
  })
2558
2595
  watch(computeScrollXHeight, () => {
2559
- reFlag.value++
2596
+ reLayoutFlag.value++
2560
2597
  })
2561
2598
  watch(computeScrollXVisible, () => {
2562
2599
  nextTick(() => {
2563
- reFlag.value++
2600
+ reLayoutFlag.value++
2564
2601
  })
2565
2602
  })
2566
2603
  watch(computeScrollYVisible, () => {
2567
2604
  nextTick(() => {
2568
- reFlag.value++
2605
+ reLayoutFlag.value++
2569
2606
  })
2570
2607
  })
2571
- watch(reFlag, () => {
2608
+ watch(reLayoutFlag, () => {
2572
2609
  recalculate().then(() => {
2573
2610
  recalculate()
2574
2611
  })
2575
2612
  })
2576
2613
 
2614
+ watch(reScrollFlag, () => {
2615
+ updateScrollbar().then(() => {
2616
+ updateScrollbar()
2617
+ })
2618
+ })
2619
+
2577
2620
  watch(() => props.checkRowKey, () => {
2578
2621
  updateRadioModeValue()
2579
2622
  })
@@ -2600,7 +2643,7 @@ export default defineVxeComponent({
2600
2643
  })
2601
2644
 
2602
2645
  onMounted(() => {
2603
- const { showSeq, showRadio, showCheckbox, autoResize, useScrollbar } = props
2646
+ const { showSeq, showRadio, showCheckbox, autoResize } = props
2604
2647
  const rowOpts = computeRowOpts.value
2605
2648
  const { useKey } = rowOpts
2606
2649
 
@@ -2623,25 +2666,12 @@ export default defineVxeComponent({
2623
2666
  if (useKey && !keyField) {
2624
2667
  errLog('vxe.error.reqSupportProp', ['row-config.useKey', 'row-config.keyField'])
2625
2668
  }
2626
- const el = refElem.value
2627
- if (useScrollbar) {
2628
- const viewInnerEl = refVirtualBody.value
2629
- const scrollObserver = globalResize.create(() => {
2630
- reFlag.value++
2631
- })
2632
- if (el) {
2633
- scrollObserver.observe(el)
2634
- }
2635
- if (viewInnerEl) {
2636
- scrollObserver.observe(viewInnerEl)
2637
- }
2638
- internalData.scrollObserver = scrollObserver
2639
- }
2640
2669
  if (autoResize) {
2670
+ const el = refElem.value
2641
2671
  const parentEl = getParentElem()
2642
2672
  const resizeObserver = globalResize.create(() => {
2643
2673
  if (props.autoResize) {
2644
- reFlag.value++
2674
+ reLayoutFlag.value++
2645
2675
  }
2646
2676
  })
2647
2677
  if (el) {
@@ -2652,9 +2682,10 @@ export default defineVxeComponent({
2652
2682
  }
2653
2683
  internalData.resizeObserver = resizeObserver
2654
2684
  }
2655
- reFlag.value++
2685
+ reLayoutFlag.value++
2686
+ bindScrollbarResize()
2656
2687
  globalEvents.on($xeList, 'resize', () => {
2657
- reFlag.value++
2688
+ reLayoutFlag.value++
2658
2689
  })
2659
2690
  })
2660
2691
 
@@ -1,7 +1,7 @@
1
1
  import { ref, h, reactive, Teleport, PropType, inject, resolveComponent, watch, VNode, computed, nextTick, onBeforeUnmount, onMounted } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import XEUtils from 'xe-utils'
4
- import { VxeUI, createEvent, permission, useSize, globalEvents, renderEmptyElement } from '../../ui'
4
+ import { VxeUI, createEvent, permission, globalEvents, renderEmptyElement } from '../../ui'
5
5
  import { getPopupContainer, scrollToView, toCssUnit } from '../../ui/src/dom'
6
6
  import { getLastZIndex, nextZIndex, isEnableConf, getDefaultConfig } from '../../ui/src/utils'
7
7
  import { getSlotVNs } from '../../ui/src/vn'
@@ -13,7 +13,7 @@ import type { VxeMenuDefines, VxeMenuPropTypes, MenuInternalData, MenuReactData,
13
13
 
14
14
  const { errLog } = createComponentLog('menu')
15
15
 
16
- const { menus, getConfig, getIcon } = VxeUI
16
+ const { menus, useFns, getConfig, getIcon } = VxeUI
17
17
 
18
18
  function createInternalData (): MenuInternalData {
19
19
  return {
@@ -100,7 +100,8 @@ export default defineVxeComponent({
100
100
  const refCollapseBodyElem = ref<HTMLDivElement>()
101
101
  const refCollapseBodyScrollbar = ref<VxeScrollbarInstance>()
102
102
 
103
- const { computeSize } = useSize(props)
103
+ const { computeSize } = useFns.useSize(props)
104
+ const { computeIsVScrollbar } = useFns.useVScrollbar(props)
104
105
 
105
106
  const reactData = reactive(createReactData())
106
107
  const internalData = createInternalData()
@@ -701,9 +702,10 @@ export default defineVxeComponent({
701
702
  }
702
703
 
703
704
  const renderVN = () => {
704
- const { loading, collapseFixed, appendTo, useScrollbar } = props
705
+ const { loading, collapseFixed, appendTo } = props
705
706
  const { initialized, menuList, collapseStyle, isEnterCollapse } = reactData
706
707
  const vSize = computeSize.value
708
+ const isVScrollbar = computeIsVScrollbar.value
707
709
  const isCollapsed = computeIsCollapsed.value
708
710
  const currBorder = computeCurrBorder.value
709
711
  const varStyle = computeVarStyle.value
@@ -762,7 +764,7 @@ export default defineVxeComponent({
762
764
  class: 'vxe-menu--header'
763
765
  }, headerSlot(stParams))
764
766
  : renderEmptyElement($xeMenu),
765
- useScrollbar && isEnterCollapse
767
+ isVScrollbar && isEnterCollapse
766
768
  ? h(VxeScrollbarComponent, {
767
769
  ref: refCollapseBodyScrollbar,
768
770
  class: 'vxe-menu--scrollbar-body',
@@ -3,7 +3,7 @@ import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import XEUtils from 'xe-utils'
4
4
  import { getEventTargetNode, getPopupContainer, getPopupWrapperElement, isScale, toCssUnit } from '../../ui/src/dom'
5
5
  import { getLastZIndex, nextZIndex, getSubLastZIndex, nextSubZIndex, getFuncText, handleBooleanDefaultValue, getDefaultConfig } from '../../ui/src/utils'
6
- import { VxeUI, getConfig, getIcon, getI18n, globalEvents, GLOBAL_EVENT_KEYS, createEvent, useSize, renderEmptyElement } from '../../ui'
6
+ import { VxeUI, getConfig, getIcon, getI18n, globalEvents, GLOBAL_EVENT_KEYS, createEvent, useFns, renderEmptyElement } from '../../ui'
7
7
  import { getSlotVNs } from '../../ui/src/vn'
8
8
  import { createComponentLog } from '../../ui/src/log'
9
9
  import { allActiveModals } from './store'
@@ -266,7 +266,8 @@ export default defineVxeComponent({
266
266
  const $xeTable = inject<(VxeTableConstructor & VxeTablePrivateMethods) | null>('$xeTable', null)
267
267
  const $xeForm = inject<(VxeFormConstructor & VxeFormPrivateMethods)| null>('$xeForm', null)
268
268
 
269
- const { computeSize } = useSize(props)
269
+ const { computeSize } = useFns.useSize(props)
270
+ const { computeIsVScrollbar } = useFns.useVScrollbar(props)
270
271
 
271
272
  const reactData = reactive(createReactData())
272
273
  const internalData = createInternalData()
@@ -1398,8 +1399,9 @@ export default defineVxeComponent({
1398
1399
  }
1399
1400
 
1400
1401
  const renderBody = () => {
1401
- const { slots: propSlots = {}, status, message, iconStatus, useScrollbar, useHtml } = props
1402
+ const { slots: propSlots = {}, status, message, iconStatus, useHtml } = props
1402
1403
  const content = props.content || message
1404
+ const isVScrollbar = computeIsVScrollbar.value
1403
1405
  const isMsg = computeIsMsg.value
1404
1406
  const scrollbarProps = computeScrollbarProps.value
1405
1407
  const defaultSlot = slots.default || propSlots.default
@@ -1420,7 +1422,7 @@ export default defineVxeComponent({
1420
1422
 
1421
1423
  if (useHtml && !defaultSlot) {
1422
1424
  contVNs.push(
1423
- useScrollbar
1425
+ isVScrollbar
1424
1426
  ? h(VxeScrollbarComponent, {
1425
1427
  key: 'shc',
1426
1428
  class: 'vxe-modal--scrollbar-content',
@@ -1443,7 +1445,7 @@ export default defineVxeComponent({
1443
1445
  )
1444
1446
  } else {
1445
1447
  contVNs.push(
1446
- useScrollbar
1448
+ isVScrollbar
1447
1449
  ? h(VxeScrollbarComponent, {
1448
1450
  key: 'sdc',
1449
1451
  class: 'vxe-modal--scrollbar-content',
@@ -85,10 +85,18 @@ export default defineVxeComponent({
85
85
  type: String as PropType<VxeScrollbarPropTypes.ViewInnerClassName>,
86
86
  default: () => getConfig().scrollbar.viewInnerClassName
87
87
  },
88
+ /**
89
+ * 已废弃
90
+ * @deprecated
91
+ */
88
92
  autoResize: {
89
93
  type: Boolean as PropType<VxeScrollbarPropTypes.AutoResize>,
90
94
  default: () => getConfig().scrollbar.autoResize
91
95
  },
96
+ /**
97
+ * 已废弃
98
+ * @deprecated
99
+ */
92
100
  syncResize: [Boolean, String, Number] as PropType<VxeScrollbarPropTypes.SyncResize>
93
101
  },
94
102
  emits: [
@@ -711,7 +719,6 @@ export default defineVxeComponent({
711
719
  }
712
720
 
713
721
  reFlag.value++
714
-
715
722
  globalEvents.on($xeScrollbar, 'resize', () => {
716
723
  reFlag.value++
717
724
  })
@@ -1,6 +1,6 @@
1
1
  import { ref, h, reactive, inject, PropType, provide, computed, onUnmounted, watch, nextTick, onMounted } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
- import { VxeUI, useSize } from '../../ui'
3
+ import { VxeUI, useFns } from '../../ui'
4
4
  import { getSlotVNs } from '../../ui/src/vn'
5
5
  import { toCssUnit, addClass, removeClass } from '../../ui/src/dom'
6
6
  import { isEnableConf } from '../../ui/src/utils'
@@ -81,7 +81,8 @@ export default defineVxeComponent({
81
81
 
82
82
  const $xeParentTabs = inject<(VxeTabsConstructor & VxeTabsPrivateMethods) | null>('$xeTabs', null)
83
83
 
84
- const { computeSize } = useSize(props)
84
+ const { computeSize } = useFns.useSize(props)
85
+ const { computeIsVScrollbar } = useFns.useVScrollbar(props)
85
86
 
86
87
  const refElem = ref<HTMLDivElement>()
87
88
  const refHeadWrapperElem = ref<HTMLDivElement>()
@@ -791,13 +792,13 @@ export default defineVxeComponent({
791
792
  }
792
793
 
793
794
  const renderTabPane = (item: VxeTabPaneProps | VxeTabPaneDefines.TabConfig) => {
794
- const { useScrollbar } = props
795
795
  const { initNames, activeName } = reactData
796
796
  const { name, slots } = item
797
797
  const defaultSlot = slots ? slots.default : null
798
798
  const scrollbarProps = computeScrollbarProps.value
799
+ const isVScrollbar = computeIsVScrollbar.value
799
800
  if (name && initNames.includes(name)) {
800
- return useScrollbar
801
+ return isVScrollbar
801
802
  ? h(VxeScrollbarComponent, {
802
803
  key: `${name}`,
803
804
  class: ['vxe-tabs-pane--scrollbar-item', {
@@ -1,7 +1,7 @@
1
1
  import { h, ref, nextTick, onBeforeUnmount, onMounted, computed, reactive, watch, PropType, VNode } from 'vue'
2
2
  import { defineVxeComponent } from '../../ui/src/comp'
3
3
  import XEUtils from 'xe-utils'
4
- import { VxeUI, useSize } from '../../ui'
4
+ import { VxeUI, useFns } from '../../ui'
5
5
  import { getLastZIndex, nextZIndex } from '../../ui/src/utils'
6
6
  import { getPopupAppendElement, toCssUnit, updatePanelPlacement } from '../../ui/src/dom'
7
7
  import { getSlotVNs } from '../../ui/src/vn'
@@ -137,7 +137,8 @@ export default defineVxeComponent({
137
137
 
138
138
  const xID = XEUtils.uniqueId()
139
139
 
140
- const { computeSize } = useSize(props)
140
+ const { computeSize } = useFns.useSize(props)
141
+ const { computeIsVScrollbar } = useFns.useVScrollbar(props)
141
142
 
142
143
  const reactData = reactive(createReactData())
143
144
 
@@ -331,7 +332,7 @@ export default defineVxeComponent({
331
332
  const { tipTarget: targetElem, tipStore, tipPos, tipZindex } = reactData
332
333
  const panelElem = refElem.value
333
334
  if (!targetElem || !panelElem) {
334
- return
335
+ return nextTick()
335
336
  }
336
337
  const targetRect = targetElem.getBoundingClientRect()
337
338
 
@@ -371,6 +372,7 @@ export default defineVxeComponent({
371
372
  tipStore.placement = ppObj.placement
372
373
  tipStore.style = panelStyle
373
374
  tipStore.arrowStyle.left = ppObj.arrowLeft ? `${ppObj.arrowLeft}px` : ''
375
+ return nextTick()
374
376
  }
375
377
 
376
378
  const tooltipMethods: TooltipMethods = {
@@ -398,8 +400,13 @@ export default defineVxeComponent({
398
400
  return handleVisible(target, content)
399
401
  },
400
402
  updatePlacement () {
401
- updateTipStyle()
402
- return nextTick().then(updateTipStyle)
403
+ return updateTipStyle().then(() => {
404
+ return updateTipStyle()
405
+ }).then(() => {
406
+ setTimeout(() => {
407
+ updateTipStyle()
408
+ }, 15)
409
+ })
403
410
  },
404
411
  isActived () {
405
412
  return reactData.tipActive
@@ -430,8 +437,9 @@ export default defineVxeComponent({
430
437
  Object.assign($xeTooltip, tooltipMethods, tooltipPrivateMethods)
431
438
 
432
439
  const renderContent = () => {
433
- const { useScrollbar, theme, useHtml, useHTML } = props
440
+ const { theme, useHtml, useHTML } = props
434
441
  const { tipContent } = reactData
442
+ const isVScrollbar = computeIsVScrollbar.value
435
443
  const wrapperStyle = computeWrapperStyle.value
436
444
  const contentSlot = slots.content
437
445
  const contVNs: VNode[] = []
@@ -453,7 +461,7 @@ export default defineVxeComponent({
453
461
  key: 'cd'
454
462
  }, `${tipContent}`))
455
463
  }
456
- if (useScrollbar) {
464
+ if (isVScrollbar) {
457
465
  return h(VxeScrollbarComponent, {
458
466
  key: 5,
459
467
  ref: contentScrollbar,