vxe-pc-ui 3.20.8 → 3.20.10

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 (141) hide show
  1. package/es/card/src/card.js +2 -1
  2. package/es/date-panel/src/date-panel.js +70 -39
  3. package/es/date-panel/style.css +22 -20
  4. package/es/date-panel/style.min.css +1 -1
  5. package/es/drawer/src/drawer.js +1 -0
  6. package/es/icon/style.css +1 -1
  7. package/es/icon-picker/src/icon-picker.js +11 -3
  8. package/es/icon-picker/style.css +9 -3
  9. package/es/icon-picker/style.min.css +1 -1
  10. package/es/layout-aside/src/layout-aside.js +2 -1
  11. package/es/layout-body/src/layout-body.js +2 -1
  12. package/es/layout-container/src/layout-container.js +9 -2
  13. package/es/list/src/list.js +80 -223
  14. package/es/menu/src/menu.js +1 -0
  15. package/es/modal/src/modal.js +1 -0
  16. package/es/scrollbar/src/scrollbar.js +32 -188
  17. package/es/select/src/select.js +273 -8
  18. package/es/select/style.css +44 -0
  19. package/es/select/style.min.css +1 -1
  20. package/es/style.css +1 -1
  21. package/es/style.min.css +1 -1
  22. package/es/tabs/src/tabs.js +2 -1
  23. package/es/tooltip/src/tooltip.js +7 -6
  24. package/es/tooltip/style.css +2 -0
  25. package/es/tooltip/style.min.css +1 -1
  26. package/es/tree/src/tree.js +85 -228
  27. package/es/ui/index.js +1 -1
  28. package/es/ui/src/log.js +1 -1
  29. package/es/vxe-date-panel/style.css +22 -20
  30. package/es/vxe-date-panel/style.min.css +1 -1
  31. package/es/vxe-icon-picker/style.css +9 -3
  32. package/es/vxe-icon-picker/style.min.css +1 -1
  33. package/es/vxe-select/style.css +44 -0
  34. package/es/vxe-select/style.min.css +1 -1
  35. package/es/vxe-tooltip/style.css +2 -0
  36. package/es/vxe-tooltip/style.min.css +1 -1
  37. package/lib/card/src/card.js +1 -1
  38. package/lib/card/src/card.min.js +1 -1
  39. package/lib/date-panel/src/date-panel.js +74 -43
  40. package/lib/date-panel/src/date-panel.min.js +1 -1
  41. package/lib/date-panel/style/style.css +22 -20
  42. package/lib/date-panel/style/style.min.css +1 -1
  43. package/lib/drawer/src/drawer.js +1 -1
  44. package/lib/drawer/src/drawer.min.js +1 -1
  45. package/lib/icon/style/style.css +1 -1
  46. package/lib/icon/style/style.min.css +1 -1
  47. package/lib/icon-picker/src/icon-picker.js +56 -38
  48. package/lib/icon-picker/src/icon-picker.min.js +1 -1
  49. package/lib/icon-picker/style/style.css +9 -3
  50. package/lib/icon-picker/style/style.min.css +1 -1
  51. package/lib/index.umd.js +894 -816
  52. package/lib/index.umd.min.js +1 -1
  53. package/lib/layout-aside/src/layout-aside.js +1 -1
  54. package/lib/layout-aside/src/layout-aside.min.js +1 -1
  55. package/lib/layout-body/src/layout-body.js +1 -1
  56. package/lib/layout-body/src/layout-body.min.js +1 -1
  57. package/lib/layout-container/src/layout-container.js +13 -3
  58. package/lib/layout-container/src/layout-container.min.js +1 -1
  59. package/lib/list/src/list.js +72 -225
  60. package/lib/list/src/list.min.js +1 -1
  61. package/lib/menu/src/menu.js +1 -1
  62. package/lib/menu/src/menu.min.js +1 -1
  63. package/lib/modal/src/modal.js +1 -1
  64. package/lib/modal/src/modal.min.js +1 -1
  65. package/lib/scrollbar/src/scrollbar.js +29 -192
  66. package/lib/scrollbar/src/scrollbar.min.js +1 -1
  67. package/lib/select/src/select.js +322 -69
  68. package/lib/select/src/select.min.js +1 -1
  69. package/lib/select/style/style.css +44 -0
  70. package/lib/select/style/style.min.css +1 -1
  71. package/lib/style.css +1 -1
  72. package/lib/style.min.css +1 -1
  73. package/lib/tabs/src/tabs.js +1 -1
  74. package/lib/tabs/src/tabs.min.js +1 -1
  75. package/lib/tooltip/src/tooltip.js +5 -6
  76. package/lib/tooltip/src/tooltip.min.js +1 -1
  77. package/lib/tooltip/style/style.css +2 -0
  78. package/lib/tooltip/style/style.min.css +1 -1
  79. package/lib/tree/src/tree.js +77 -229
  80. package/lib/tree/src/tree.min.js +1 -1
  81. package/lib/ui/index.js +1 -1
  82. package/lib/ui/index.min.js +1 -1
  83. package/lib/ui/src/log.js +1 -1
  84. package/lib/ui/src/log.min.js +1 -1
  85. package/lib/vxe-date-panel/style/style.css +22 -20
  86. package/lib/vxe-date-panel/style/style.min.css +1 -1
  87. package/lib/vxe-icon-picker/style/style.css +9 -3
  88. package/lib/vxe-icon-picker/style/style.min.css +1 -1
  89. package/lib/vxe-select/style/style.css +44 -0
  90. package/lib/vxe-select/style/style.min.css +1 -1
  91. package/lib/vxe-tooltip/style/style.css +2 -0
  92. package/lib/vxe-tooltip/style/style.min.css +1 -1
  93. package/package.json +2 -2
  94. package/packages/card/src/card.ts +4 -2
  95. package/packages/date-panel/src/date-panel.ts +70 -39
  96. package/packages/drawer/src/drawer.ts +4 -2
  97. package/packages/icon-picker/src/icon-picker.ts +12 -3
  98. package/packages/layout-aside/src/layout-aside.ts +4 -2
  99. package/packages/layout-body/src/layout-body.ts +4 -2
  100. package/packages/layout-container/src/layout-container.ts +13 -3
  101. package/packages/list/src/list.ts +85 -241
  102. package/packages/menu/src/menu.ts +3 -1
  103. package/packages/modal/src/modal.ts +3 -1
  104. package/packages/scrollbar/src/scrollbar.ts +32 -199
  105. package/packages/select/src/select.ts +304 -11
  106. package/packages/tabs/src/tabs.ts +4 -4
  107. package/packages/tooltip/src/tooltip.ts +10 -8
  108. package/packages/tree/src/tree.ts +90 -247
  109. package/styles/components/date-panel.scss +31 -29
  110. package/styles/components/icon-picker.scss +9 -3
  111. package/styles/components/select.scss +77 -0
  112. package/styles/components/tooltip.scss +1 -0
  113. package/types/components/card.d.ts +2 -2
  114. package/types/components/drawer.d.ts +2 -2
  115. package/types/components/gantt-module/gantt-view.d.ts +8 -17
  116. package/types/components/grid.d.ts +3 -2
  117. package/types/components/icon-picker.d.ts +21 -1
  118. package/types/components/layout-aside.d.ts +2 -2
  119. package/types/components/layout-body.d.ts +2 -2
  120. package/types/components/layout-container.d.ts +3 -1
  121. package/types/components/list.d.ts +6 -2
  122. package/types/components/menu.d.ts +2 -2
  123. package/types/components/modal.d.ts +2 -2
  124. package/types/components/scrollbar.d.ts +17 -14
  125. package/types/components/select.d.ts +28 -3
  126. package/types/components/table.d.ts +26 -22
  127. package/types/components/tabs.d.ts +2 -2
  128. package/types/components/tooltip.d.ts +2 -2
  129. package/types/components/tree.d.ts +8 -17
  130. /package/es/icon/{iconfont.1792115554173.ttf → iconfont.1792219842866.ttf} +0 -0
  131. /package/es/icon/{iconfont.1792115554173.woff → iconfont.1792219842866.woff} +0 -0
  132. /package/es/icon/{iconfont.1792115554173.woff2 → iconfont.1792219842866.woff2} +0 -0
  133. /package/es/{iconfont.1792115554173.ttf → iconfont.1792219842866.ttf} +0 -0
  134. /package/es/{iconfont.1792115554173.woff → iconfont.1792219842866.woff} +0 -0
  135. /package/es/{iconfont.1792115554173.woff2 → iconfont.1792219842866.woff2} +0 -0
  136. /package/lib/icon/style/{iconfont.1792115554173.ttf → iconfont.1792219842866.ttf} +0 -0
  137. /package/lib/icon/style/{iconfont.1792115554173.woff → iconfont.1792219842866.woff} +0 -0
  138. /package/lib/icon/style/{iconfont.1792115554173.woff2 → iconfont.1792219842866.woff2} +0 -0
  139. /package/lib/{iconfont.1792115554173.ttf → iconfont.1792219842866.ttf} +0 -0
  140. /package/lib/{iconfont.1792115554173.woff → iconfont.1792219842866.woff} +0 -0
  141. /package/lib/{iconfont.1792115554173.woff2 → iconfont.1792219842866.woff2} +0 -0
@@ -7,18 +7,17 @@ import { createComponentLog } from '../../ui/src/log'
7
7
  import { getSlotVNs } from '../../ui/src/vn'
8
8
  import { crossTreeDragNodeGlobal, getCrossTreeDragNodeInfo } from './store'
9
9
  import { toCssUnit, isScale, getPaddingTopBottomSize, addClass, removeClass, getTpImg, hasControlKey, getEventTargetNode, hasClass } from '../../ui/src/dom'
10
- import { isEnableConf, enModelValue, deModelValue, getText, getDefaultConfig } from '../../ui/src/utils'
10
+ import { isEnableConf, enModelValue, deModelValue, getText } from '../../ui/src/utils'
11
11
  import { moveRowAnimateToTb, clearRowAnimate } from '../../ui/src/anime'
12
12
  import VxeLoadingComponent from '../../loading'
13
13
  import VxeTooltipComponent from '../../tooltip'
14
14
 
15
- import type { TreeReactData, VxeTreeEmits, VxeTreeConstructor, VxeTreePropTypes, TreeInternalData, VxeTreeDefines, VxeTreePrivateMethods, VxeComponentSizeType, ValueOf, VxeTooltipInstance, VxeComponentStyleType, VxeScrollbarPropTypes } from '../../../types'
15
+ import type { TreeReactData, VxeTreeEmits, VxeTreeConstructor, VxeTreePropTypes, TreeInternalData, VxeTreeDefines, VxeTreePrivateMethods, ValueOf, VxeTooltipInstance, VxeComponentStyleType, VxeScrollbarPropTypes, VxeUseSizeComputed, VxeUseVScrollbarComputed, VxeUseInitVScrollbarComputed } from '../../../types'
16
16
 
17
17
  const { warnLog, errLog } = createComponentLog('tree')
18
18
 
19
- const { menus, scrollbarUtils, getConfig, getI18n, getIcon } = VxeUI
20
-
21
- const { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } = scrollbarUtils
19
+ const { menus, getConfig, getI18n, getIcon, baseUtils } = VxeUI
20
+ const { getDefVal } = baseUtils
22
21
 
23
22
  let crossTreeDragNodeObj: {
24
23
  $oldTree: VxeTreeConstructor & VxeTreePrivateMethods
@@ -619,7 +618,9 @@ function createInternalData (): TreeInternalData {
619
618
  export default /* define-vxe-component start */ defineVxeComponent({
620
619
  name: 'VxeTree',
621
620
  mixins: [
622
- globalMixins.sizeMixin
621
+ globalMixins.sizeMixin,
622
+ globalMixins.vScrollbarMixin,
623
+ globalMixins.initVScrollbarMixin
623
624
  ],
624
625
  props: {
625
626
  data: Array as PropType<VxeTreePropTypes.Data>,
@@ -751,7 +752,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
751
752
  virtualYConfig: Object as PropType<VxeTreePropTypes.VirtualYConfig>,
752
753
  useScrollbar: {
753
754
  type: Boolean as PropType<VxeTreePropTypes.UseScrollbar>,
754
- default: () => getDefaultConfig(getConfig().tree.useScrollbar, getConfig().useScrollbar)
755
+ default: () => getDefVal(getConfig().tree.useScrollbar, getConfig().useScrollbar)
755
756
  },
756
757
  scrollbarConfig: Object as PropType<VxeTreePropTypes.ScrollbarConfig>
757
758
  },
@@ -772,14 +773,13 @@ export default /* define-vxe-component start */ defineVxeComponent({
772
773
  reactData,
773
774
  crossTreeDragNodeInfo: crossTreeDragNodeGlobal,
774
775
 
775
- reFlag: 0,
776
+ reLayoutFlag: 0,
777
+ reScrollFlag: 0,
776
778
  dataFlag: 0
777
779
  }
778
780
  },
779
781
  computed: {
780
- ...({} as {
781
- computeSize(): VxeComponentSizeType
782
- }),
782
+ ...({} as VxeUseSizeComputed & VxeUseVScrollbarComputed & VxeUseInitVScrollbarComputed),
783
783
  computeTitleField () {
784
784
  const $xeTree = this
785
785
  const props = $xeTree
@@ -969,42 +969,42 @@ export default /* define-vxe-component start */ defineVxeComponent({
969
969
 
970
970
  const scrollbarOpts = $xeTree.computeScrollbarOpts as VxeTreePropTypes.ScrollbarConfig
971
971
  const scrollbarXOpts = $xeTree.computeScrollbarXOpts as VxeScrollbarPropTypes.XConfig
972
- return getDefaultConfig(getDefaultConfig(scrollbarXOpts.height, scrollbarOpts.height), getConfig().scrollbar.height)
972
+ return getDefVal(getDefVal(scrollbarXOpts.height, scrollbarOpts.height), getConfig().scrollbar.height)
973
973
  },
974
974
  computeScrollYWidth () {
975
975
  const $xeTree = this
976
976
 
977
977
  const scrollbarOpts = $xeTree.computeScrollbarOpts as VxeTreePropTypes.ScrollbarConfig
978
978
  const scrollbarYOpts = $xeTree.computeScrollbarYOpts as VxeScrollbarPropTypes.YConfig
979
- return getDefaultConfig(getDefaultConfig(scrollbarYOpts.width, scrollbarOpts.width), getConfig().scrollbar.width)
979
+ return getDefVal(getDefVal(scrollbarYOpts.width, scrollbarOpts.width), getConfig().scrollbar.width)
980
980
  },
981
981
  computeScrollXVisible () {
982
982
  const $xeTree = this
983
983
 
984
984
  const scrollbarOpts = $xeTree.computeScrollbarOpts as VxeTreePropTypes.ScrollbarConfig
985
985
  const scrollbarXOpts = $xeTree.computeScrollbarXOpts as VxeScrollbarPropTypes.XConfig
986
- return getDefaultConfig(scrollbarXOpts.visible, scrollbarOpts.visible)
986
+ return getDefVal(scrollbarXOpts.visible, scrollbarOpts.visible)
987
987
  },
988
988
  computeScrollYVisible () {
989
989
  const $xeTree = this
990
990
 
991
991
  const scrollbarOpts = $xeTree.computeScrollbarOpts as VxeTreePropTypes.ScrollbarConfig
992
992
  const scrollbarYOpts = $xeTree.computeScrollbarYOpts as VxeScrollbarPropTypes.YConfig
993
- return getDefaultConfig(scrollbarYOpts.visible, scrollbarOpts.visible)
993
+ return getDefVal(scrollbarYOpts.visible, scrollbarOpts.visible)
994
994
  },
995
995
  computeScrollXAutoHide () {
996
996
  const $xeTree = this
997
997
 
998
998
  const scrollbarOpts = $xeTree.computeScrollbarOpts as VxeTreePropTypes.ScrollbarConfig
999
999
  const scrollbarXOpts = $xeTree.computeScrollbarXOpts as VxeScrollbarPropTypes.XConfig
1000
- return getDefaultConfig(getDefaultConfig(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide)
1000
+ return getDefVal(getDefVal(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide)
1001
1001
  },
1002
1002
  computeScrollYAutoHide () {
1003
1003
  const $xeTree = this
1004
1004
 
1005
1005
  const scrollbarOpts = $xeTree.computeScrollbarOpts as VxeTreePropTypes.ScrollbarConfig
1006
1006
  const scrollbarYOpts = $xeTree.computeScrollbarYOpts as VxeScrollbarPropTypes.YConfig
1007
- return getDefaultConfig(getDefaultConfig(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide)
1007
+ return getDefVal(getDefVal(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide)
1008
1008
  },
1009
1009
  computeScrollbarWrapperClss () {
1010
1010
  const $xeTree = this
@@ -1047,6 +1047,12 @@ export default /* define-vxe-component start */ defineVxeComponent({
1047
1047
  const $xeTree = this
1048
1048
  $xeTree.$emit(type, createEvent(evnt, { $tree: $xeTree }, params))
1049
1049
  },
1050
+ getScrollViewElem () {
1051
+ const $xeTree = this
1052
+
1053
+ const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
1054
+ return viewEl || null
1055
+ },
1050
1056
  getNodeId (node: any) {
1051
1057
  const $xeTree = this
1052
1058
 
@@ -1692,8 +1698,14 @@ export default /* define-vxe-component start */ defineVxeComponent({
1692
1698
  updateScrollbar () {
1693
1699
  const $xeTree = this
1694
1700
 
1695
- $xeTree.updateThumbSize()
1696
- $xeTree.updateThumbOffset()
1701
+ const isVScrollbar = $xeTree.computeIsVScrollbar
1702
+ if (isVScrollbar) {
1703
+ return $xeTree.$nextTick().then(() => {
1704
+ $xeTree.updateThumbSize()
1705
+ $xeTree.updateThumbOffset()
1706
+ })
1707
+ }
1708
+ return Promise.resolve()
1697
1709
  },
1698
1710
  /**
1699
1711
  * 重新计算列表
@@ -1720,11 +1732,11 @@ export default /* define-vxe-component start */ defineVxeComponent({
1720
1732
  const parentPaddingSize = getPaddingTopBottomSize(parentEl)
1721
1733
  reactData.parentHeight = Math.max(headHeight + footHeight + rowHeight, parentEl.clientHeight - parentPaddingSize - headHeight - footHeight)
1722
1734
  }
1723
- $xeTree.updateScrollbar()
1724
1735
  $xeTree.updateHeight()
1725
1736
  return $xeTree.computeScrollLoad().then(() => {
1726
1737
  $xeTree.updateHeight()
1727
1738
  $xeTree.updateYSpace()
1739
+ $xeTree.updateScrollbar()
1728
1740
  })
1729
1741
  }
1730
1742
  return $xeTree.$nextTick()
@@ -1763,7 +1775,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
1763
1775
  const reactData = $xeTree.reactData
1764
1776
  const internalData = $xeTree.internalData
1765
1777
 
1766
- const scrollBodyElem = evnt.target as HTMLDivElement
1778
+ const scrollBodyElem = evnt.currentTarget as HTMLDivElement
1767
1779
  const scrollTop = scrollBodyElem.scrollTop
1768
1780
  const scrollLeft = scrollBodyElem.scrollLeft
1769
1781
  const isX = scrollLeft !== internalData.lastScrollLeft
@@ -3450,199 +3462,28 @@ export default /* define-vxe-component start */ defineVxeComponent({
3450
3462
  }, evnt)
3451
3463
  }
3452
3464
  },
3453
-
3454
3465
  // 滚动条
3455
- updateThumbSize () {
3456
- const $xeTree = this
3457
- const reactData = $xeTree.reactData
3458
-
3459
- const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
3460
- if (!viewEl) {
3461
- return
3462
- }
3463
- if (!viewEl.clientHeight || !viewEl.clientHeight) {
3464
- return
3465
- }
3466
- const trackXEl = $xeTree.$refs.refTrackXElem as HTMLDivElement
3467
- const xThumbWidth = trackXEl ? getThumbSize(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0
3468
- const thumbXElem = $xeTree.$refs.refThumbXElem as HTMLDivElement
3469
- if (thumbXElem) {
3470
- thumbXElem.style.width = xThumbWidth + 'px'
3471
- }
3472
- reactData.xThumbWidth = xThumbWidth
3473
-
3474
- const trackYEl = $xeTree.$refs.refTrackYElem as HTMLDivElement
3475
-
3476
- const yThumbHeight = trackYEl ? getThumbSize(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0
3477
- const thumbYElem = $xeTree.$refs.refThumbYElem as HTMLDivElement
3478
- if (thumbYElem) {
3479
- thumbYElem.style.height = yThumbHeight + 'px'
3480
- }
3481
- reactData.yThumbHeight = yThumbHeight
3482
- },
3483
- updateThumbOffset () {
3466
+ bindScrollbarResize () {
3484
3467
  const $xeTree = this
3485
- const reactData = $xeTree.reactData
3486
3468
  const internalData = $xeTree.internalData
3487
3469
 
3488
- const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
3489
- if (!viewEl) {
3490
- return
3491
- }
3492
- if (!viewEl.clientHeight || !viewEl.clientHeight) {
3493
- return
3494
- }
3495
- const { xThumbWidth, yThumbHeight } = reactData
3496
- const trackXEl = $xeTree.$refs.refTrackXElem as HTMLDivElement
3497
- const thumbXElem = $xeTree.$refs.refThumbXElem as HTMLDivElement
3498
- const xThumbLeft = trackXEl && xThumbWidth ? getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0
3499
- internalData.xThumbLeft = xThumbLeft
3500
- if (thumbXElem && xThumbWidth) {
3501
- thumbXElem.style.width = xThumbWidth + 'px'
3502
- thumbXElem.style.transform = `translateX(${xThumbLeft}px)`
3503
- }
3504
-
3505
- const trackYEl = $xeTree.$refs.refTrackYElem as HTMLDivElement
3506
- const thumbYElem = $xeTree.$refs.refThumbYElem as HTMLDivElement
3507
- const yThumbTop = trackYEl && yThumbHeight ? getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0
3508
- internalData.yThumbTop = yThumbTop
3509
- if (thumbYElem && yThumbHeight) {
3510
- thumbYElem.style.height = yThumbHeight + 'px'
3511
- thumbYElem.style.transform = `translateY(${yThumbTop}px)`
3512
- }
3513
- },
3514
- clickTrackXEvent (evnt: MouseEvent) {
3515
- const $xeTree = this
3516
- const reactData = $xeTree.reactData
3517
-
3518
- const trackEl = evnt.currentTarget as HTMLDivElement
3519
- if (trackEl !== evnt.target) {
3520
- return
3521
- }
3522
- const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
3523
- if (!viewEl) {
3524
- return
3525
- }
3526
- const { xThumbWidth } = reactData
3527
- const trackRect = trackEl.getBoundingClientRect()
3528
- viewEl.scrollTo({
3529
- left: getScrollFromClick(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
3530
- behavior: 'auto'
3531
- })
3532
- },
3533
- clickTrackYEvent (evnt: MouseEvent) {
3534
- const $xeTree = this
3535
- const reactData = $xeTree.reactData
3536
-
3537
- const trackEl = evnt.currentTarget as HTMLDivElement
3538
- if (trackEl !== evnt.target) {
3539
- return
3540
- }
3541
- const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
3542
- if (!viewEl) {
3543
- return
3544
- }
3545
- const { yThumbHeight } = reactData
3546
- const trackRect = trackEl.getBoundingClientRect()
3547
- viewEl.scrollTo({
3548
- top: getScrollFromClick(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
3549
- behavior: 'auto'
3550
- })
3551
- },
3552
- pointerdownThumbXEvent (evnt: PointerEvent) {
3553
- const $xeTree = this
3554
- const reactData = $xeTree.reactData
3555
- const internalData = $xeTree.internalData
3556
-
3557
- const thumbEl = evnt.currentTarget as HTMLDivElement
3558
- internalData.isThumbDrag = true
3559
- thumbEl.setPointerCapture(evnt.pointerId)
3560
-
3561
- const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
3562
- if (!viewEl) {
3563
- return
3564
- }
3565
- const { xThumbWidth } = reactData
3566
- const trackEl = thumbEl.parentElement as HTMLDivElement
3567
- const trackRect = trackEl.getBoundingClientRect()
3568
- const pointerPosition = evnt.clientX - trackRect.left
3569
- // 记录 thumb 的偏移
3570
- const thumbOffset = getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth)
3571
- internalData.thumbDragOffset = pointerPosition - thumbOffset
3572
- },
3573
- pointermoveThumbXEvent (evnt: PointerEvent) {
3574
- const $xeTree = this
3575
- const reactData = $xeTree.reactData
3576
- const internalData = $xeTree.internalData
3577
-
3578
- const thumbEl = evnt.currentTarget as HTMLDivElement
3579
- if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
3580
- return
3581
- }
3582
- const { isThumbDrag, thumbDragOffset } = internalData
3583
- if (isThumbDrag) {
3584
- const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
3585
- if (!viewEl) {
3586
- return
3587
- }
3588
- const { xThumbWidth } = reactData
3589
- const thumbEl = evnt.currentTarget as HTMLDivElement
3590
- const trackEl = thumbEl.parentElement as HTMLDivElement
3591
- const trackRect = trackEl.getBoundingClientRect()
3592
- // 更新偏移
3593
- viewEl.scrollLeft = getScrollFromDrag(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth)
3594
- }
3595
- },
3596
- cleatPointerThumbEvent (evnt: PointerEvent) {
3597
- const $xeTree = this
3598
- const internalData = $xeTree.internalData
3599
-
3600
- const thumbEl = evnt.currentTarget as HTMLDivElement
3601
- thumbEl.releasePointerCapture(evnt.pointerId)
3602
- internalData.isThumbDrag = false
3603
- },
3604
- pointerdownThumbYEvent (evnt: PointerEvent) {
3605
- const $xeTree = this
3606
- const reactData = $xeTree.reactData
3607
- const internalData = $xeTree.internalData
3608
-
3609
- const thumbEl = evnt.currentTarget as HTMLDivElement
3610
- internalData.isThumbDrag = true
3611
- thumbEl.setPointerCapture(evnt.pointerId)
3612
-
3613
- const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
3614
- if (!viewEl) {
3615
- return
3616
- }
3617
- const { yThumbHeight } = reactData
3618
- const trackEl = thumbEl.parentElement as HTMLDivElement
3619
- const trackRect = trackEl.getBoundingClientRect()
3620
- const pointerPosition = evnt.clientY - trackRect.top
3621
- // 记录 thumb 的偏移
3622
- const thumbOffset = getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight)
3623
- internalData.thumbDragOffset = pointerPosition - thumbOffset
3624
- },
3625
- pointermoveThumbYEvent (evnt: PointerEvent) {
3626
- const $xeTree = this
3627
- const reactData = $xeTree.reactData
3628
- const internalData = $xeTree.internalData
3629
-
3630
- const thumbEl = evnt.currentTarget as HTMLDivElement
3631
- if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
3632
- return
3633
- }
3634
- const { isThumbDrag, thumbDragOffset } = internalData
3635
- if (isThumbDrag) {
3636
- const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
3637
- if (!viewEl) {
3638
- return
3470
+ const isVScrollbar = $xeTree.computeIsVScrollbar
3471
+ const { scrollObserver } = internalData
3472
+ if (isVScrollbar) {
3473
+ if (!scrollObserver) {
3474
+ const el = $xeTree.$refs.refElem as HTMLDivElement
3475
+ const viewInnerEl = $xeTree.$refs.refVirtualSpaceElem as HTMLDivElement
3476
+ const scrollObserver = globalResize.create(() => {
3477
+ $xeTree.reScrollFlag++
3478
+ })
3479
+ if (el) {
3480
+ scrollObserver.observe(el)
3481
+ }
3482
+ if (viewInnerEl) {
3483
+ scrollObserver.observe(viewInnerEl)
3484
+ }
3485
+ internalData.scrollObserver = scrollObserver
3639
3486
  }
3640
- const { yThumbHeight } = reactData
3641
- const thumbEl = evnt.currentTarget as HTMLDivElement
3642
- const trackEl = thumbEl.parentElement as HTMLDivElement
3643
- const trackRect = trackEl.getBoundingClientRect()
3644
- // 更新偏移
3645
- viewEl.scrollTop = getScrollFromDrag(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight)
3646
3487
  }
3647
3488
  },
3648
3489
 
@@ -4011,9 +3852,10 @@ export default /* define-vxe-component start */ defineVxeComponent({
4011
3852
  const slots = $xeTree.$scopedSlots
4012
3853
  const reactData = $xeTree.reactData
4013
3854
 
4014
- const { loading, trigger, showLine, useScrollbar } = props
3855
+ const { loading, trigger, showLine } = props
4015
3856
  const { bodyHeight, topSpaceHeight, treeList, tooltipStore, xThumbWidth, yThumbHeight } = reactData
4016
3857
  const vSize = $xeTree.computeSize
3858
+ const isVScrollbar = $xeTree.computeIsVScrollbar
4017
3859
  const radioOpts = $xeTree.computeRadioOpts
4018
3860
  const checkboxOpts = $xeTree.computeCheckboxOpts
4019
3861
  const loadingOpts = $xeTree.computeLoadingOpts
@@ -4046,17 +3888,17 @@ export default /* define-vxe-component start */ defineVxeComponent({
4046
3888
  ref: 'refElem',
4047
3889
  class: [
4048
3890
  'vxe-tree',
4049
- useScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '',
4050
- useScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '',
4051
- useScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '',
4052
- useScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '',
3891
+ isVScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '',
3892
+ isVScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '',
3893
+ isVScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '',
3894
+ isVScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '',
4053
3895
  {
4054
3896
  [`size--${vSize}`]: vSize,
4055
3897
  'show--line': showLine,
4056
- 'is--virtual-scrollbar': useScrollbar,
4057
- 'ov-padding': useScrollbar && scrollbarOpts.padding,
4058
- 'ov-x--auto-hide': useScrollbar && scrollXAutoHide,
4059
- 'ov-y--auto-hide': useScrollbar && scrollYAutoHide,
3898
+ 'is--virtual-scrollbar': isVScrollbar,
3899
+ 'ov-padding': isVScrollbar && scrollbarOpts.padding,
3900
+ 'ov-x--auto-hide': isVScrollbar && scrollXAutoHide,
3901
+ 'ov-y--auto-hide': isVScrollbar && scrollYAutoHide,
4060
3902
  'overflow-y': yThumbHeight,
4061
3903
  'overflow-x': xThumbWidth,
4062
3904
  'checkbox--highlight': checkboxOpts.highlight,
@@ -4084,6 +3926,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
4084
3926
  }
4085
3927
  }, [
4086
3928
  h('div', {
3929
+ ref: 'refVirtualSpaceElem',
4087
3930
  class: 'vxe-tree--y-space',
4088
3931
  style: {
4089
3932
  height: bodyHeight ? `${bodyHeight}px` : ''
@@ -4106,7 +3949,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
4106
3949
  /**
4107
3950
  * 滚动条
4108
3951
  */
4109
- useScrollbar
3952
+ isVScrollbar
4110
3953
  ? h('div', {
4111
3954
  class: scrollbarWrapperClss
4112
3955
  }, [
@@ -4252,53 +4095,65 @@ export default /* define-vxe-component start */ defineVxeComponent({
4252
4095
  height () {
4253
4096
  const $xeTree = this
4254
4097
 
4255
- $xeTree.reFlag++
4098
+ $xeTree.reLayoutFlag++
4256
4099
  },
4257
4100
  minHeight () {
4258
4101
  const $xeTree = this
4259
4102
 
4260
- $xeTree.reFlag++
4103
+ $xeTree.reLayoutFlag++
4261
4104
  },
4262
4105
  maxHeight () {
4263
4106
  const $xeTree = this
4264
4107
 
4265
- $xeTree.reFlag++
4108
+ $xeTree.reLayoutFlag++
4266
4109
  },
4267
- useScrollbar () {
4110
+ computeIsVScrollbar () {
4268
4111
  const $xeTree = this
4269
4112
 
4270
- $xeTree.reFlag++
4113
+ $xeTree.$nextTick(() => {
4114
+ $xeTree.bindScrollbarResize()
4115
+ $xeTree.$nextTick(() => {
4116
+ $xeTree.reLayoutFlag++
4117
+ })
4118
+ })
4271
4119
  },
4272
4120
  computeScrollYWidth () {
4273
4121
  const $xeTree = this
4274
4122
 
4275
- $xeTree.reFlag++
4123
+ $xeTree.reLayoutFlag++
4276
4124
  },
4277
4125
  computeScrollXHeight () {
4278
4126
  const $xeTree = this
4279
4127
 
4280
- $xeTree.reFlag++
4128
+ $xeTree.reLayoutFlag++
4281
4129
  },
4282
4130
  computeScrollXVisible () {
4283
4131
  const $xeTree = this
4284
4132
 
4285
4133
  $xeTree.$nextTick(() => {
4286
- $xeTree.reFlag++
4134
+ $xeTree.reLayoutFlag++
4287
4135
  })
4288
4136
  },
4289
4137
  computeScrollYVisible () {
4290
4138
  const $xeTree = this
4291
4139
 
4292
4140
  $xeTree.$nextTick(() => {
4293
- $xeTree.reFlag++
4141
+ $xeTree.reLayoutFlag++
4294
4142
  })
4295
4143
  },
4296
- reFlag () {
4144
+ reLayoutFlag () {
4297
4145
  const $xeTree = this
4298
4146
 
4299
4147
  $xeTree.recalculate().then(() => {
4300
4148
  $xeTree.recalculate()
4301
4149
  })
4150
+ },
4151
+ reScrollFlag () {
4152
+ const $xeTree = this
4153
+
4154
+ $xeTree.updateScrollbar().then(() => {
4155
+ $xeTree.updateScrollbar()
4156
+ })
4302
4157
  }
4303
4158
  },
4304
4159
  created () {
@@ -4316,7 +4171,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
4316
4171
  const props = $xeTree
4317
4172
  const internalData = $xeTree.internalData
4318
4173
 
4319
- const { transform, drag, menuConfig, showOverflow, lazy, loadMethod, autoResize, useScrollbar } = props
4174
+ const { transform, drag, menuConfig, showOverflow, lazy, loadMethod, autoResize } = props
4320
4175
  const dragOpts = $xeTree.computeDragOpts
4321
4176
  if (!showOverflow) {
4322
4177
  errLog('vxe.error.errProp', ['show-overflow=false', 'show-overflow=true'])
@@ -4337,25 +4192,12 @@ export default /* define-vxe-component start */ defineVxeComponent({
4337
4192
  if (menuConfig && !VxeUIContextMenu) {
4338
4193
  errLog('vxe.error.reqComp', ['vxe-context-menu'])
4339
4194
  }
4340
- const el = $xeTree.$refs.refElem as HTMLDivElement
4341
- if (useScrollbar) {
4342
- const viewInnerEl = $xeTree.$refs.refVirtualBody as HTMLDivElement
4343
- const scrollObserver = globalResize.create(() => {
4344
- $xeTree.updateScrollbar()
4345
- })
4346
- if (el) {
4347
- scrollObserver.observe(el)
4348
- }
4349
- if (viewInnerEl) {
4350
- scrollObserver.observe(viewInnerEl)
4351
- }
4352
- internalData.scrollObserver = scrollObserver
4353
- }
4354
4195
  if (autoResize) {
4196
+ const el = $xeTree.$refs.refElem as HTMLDivElement
4355
4197
  const parentEl = $xeTree.getParentElem()
4356
4198
  const resizeObserver = globalResize.create(() => {
4357
4199
  if (props.autoResize) {
4358
- $xeTree.reFlag++
4200
+ $xeTree.reLayoutFlag++
4359
4201
  }
4360
4202
  })
4361
4203
  if (el) {
@@ -4367,9 +4209,10 @@ export default /* define-vxe-component start */ defineVxeComponent({
4367
4209
  internalData.resizeObserver = resizeObserver
4368
4210
  }
4369
4211
 
4370
- $xeTree.reFlag++
4212
+ $xeTree.reLayoutFlag++
4213
+ $xeTree.bindScrollbarResize()
4371
4214
  globalEvents.on($xeTree, 'resize', () => {
4372
- $xeTree.reFlag++
4215
+ $xeTree.reLayoutFlag++
4373
4216
  })
4374
4217
  },
4375
4218
  beforeDestroy () {
@@ -434,41 +434,22 @@
434
434
  flex-grow: 1;
435
435
  border-radius: var(--vxe-ui-base-border-radius);
436
436
  user-select: none;
437
- & > ul {
437
+ .vxe-date-panel--time-hour-list,
438
+ .vxe-date-panel--time-minute-list,
439
+ .vxe-date-panel--time-second-list {
438
440
  height: 100%;
439
441
  overflow: hidden;
440
442
  margin: 0;
441
443
  padding: 0;
442
- width: 3.2em;
444
+ width: 3em;
445
+ }
446
+ .vxe-date-panel--time-list-inner {
443
447
  &:before,
444
448
  &:after {
445
449
  content: " ";
446
450
  display: block;
447
451
  height: 6em;
448
452
  }
449
- &:hover {
450
- overflow-y: auto;
451
- }
452
- & > li {
453
- display: block;
454
- height: 2em;
455
- line-height: 2em;
456
- padding-left: 0.4em;
457
- &:not(.is--disabled) {
458
- &:hover {
459
- background-color: var(--vxe-ui-input-date-picker-hover-background-color);
460
- cursor: pointer;
461
- }
462
- }
463
- &.is--selected {
464
- font-weight: 700;
465
- color: var(--vxe-ui-font-primary-color);
466
- }
467
- &.is--disabled {
468
- color: var(--vxe-ui-font-disabled-color);
469
- cursor: no-drop;
470
- }
471
- }
472
453
  }
473
454
  .vxe-date-panel--time-minute-list {
474
455
  border-left: 1px solid var(--vxe-ui-base-popup-border-color);
@@ -476,16 +457,37 @@
476
457
  .vxe-date-panel--time-second-list {
477
458
  border-left: 1px solid var(--vxe-ui-base-popup-border-color);
478
459
  }
460
+ .vxe-date-panel--time-item {
461
+ display: block;
462
+ height: 2em;
463
+ line-height: 2em;
464
+ text-align: center;
465
+ &:not(.is--disabled) {
466
+ &:hover {
467
+ background-color: var(--vxe-ui-input-date-picker-hover-background-color);
468
+ cursor: pointer;
469
+ }
470
+ }
471
+ &.is--selected {
472
+ font-weight: 700;
473
+ color: var(--vxe-ui-font-primary-color);
474
+ }
475
+ &.is--disabled {
476
+ color: var(--vxe-ui-font-disabled-color);
477
+ cursor: no-drop;
478
+ }
479
+ }
479
480
  }
480
481
  .vxe-date-panel {
481
482
  &.type--time {
482
483
  .vxe-date-panel--time-body {
483
- & > ul {
484
- width: 4em;
485
- & > li {
484
+ .vxe-date-panel--time-hour-list,
485
+ .vxe-date-panel--time-minute-list,
486
+ .vxe-date-panel--time-second-list {
487
+ width: 3.6em;
488
+ .vxe-date-panel--time-item {
486
489
  height: 2.2em;
487
490
  line-height: 2.2em;
488
- padding-left: 0.8em;
489
491
  }
490
492
  }
491
493
  }
@@ -122,14 +122,20 @@
122
122
  }
123
123
  }
124
124
 
125
- .vxe-ico-picker--list-wrapper {
125
+ .vxe-ico-picker--list-wrapper,
126
+ .vxe-ico-picker--scrollbar-list-wrapper {
126
127
  overflow-x: hidden;
127
128
  overflow-y: auto;
128
129
  height: var(--vxe-ui-icon-picker-panel-height);
129
- max-height: var(--vxe-ui-icon-picker-panel-max-height, var(--vxe-ui-icon-picker-panel-height, 22.3em));
130
130
  padding: var(--vxe-ui-layout-padding-qtr);
131
131
  }
132
- .vxe-ico-picker--list {
132
+ .vxe-ico-picker--list-wrapper,
133
+ .vxe-ico-picker--scrollbar-list-wrapper-view {
134
+ max-height: var(--vxe-ui-icon-picker-panel-max-height, var(--vxe-ui-icon-picker-panel-height, 22.6em));
135
+ }
136
+
137
+ .vxe-ico-picker--list,
138
+ .vxe-ico-picker--scrollbar-list-wrapper-inner {
133
139
  display: flex;
134
140
  flex-direction: row;
135
141
  flex-wrap: wrap;