vxe-pc-ui 3.20.0 → 3.20.1
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.
- package/es/card/src/card.js +18 -3
- package/es/icon/style.css +1 -1
- package/es/language/fr-FR.js +29 -29
- package/es/layout-aside/src/layout-aside.js +8 -5
- package/es/layout-body/src/layout-body.js +22 -11
- package/es/list/src/list.js +86 -35
- package/es/list/style.css +25 -8
- package/es/list/style.min.css +1 -1
- package/es/scrollbar/src/scrollbar.js +69 -17
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/tabs/src/tabs.js +19 -3
- package/es/tree/src/tree.js +439 -56
- package/es/tree/style.css +43 -0
- package/es/tree/style.min.css +1 -1
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/es/ui/src/utils.js +3 -0
- package/es/vxe-list/style.css +25 -8
- package/es/vxe-list/style.min.css +1 -1
- package/es/vxe-tree/style.css +43 -0
- package/es/vxe-tree/style.min.css +1 -1
- package/lib/card/src/card.js +18 -3
- package/lib/card/src/card.min.js +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/index.umd.js +640 -139
- package/lib/index.umd.min.js +1 -1
- package/lib/language/fr-FR.js +29 -29
- package/lib/language/fr-FR.min.js +1 -1
- package/lib/language/fr-FR.umd.js +29 -29
- package/lib/layout-aside/src/layout-aside.js +8 -8
- package/lib/layout-aside/src/layout-aside.min.js +1 -1
- package/lib/layout-body/src/layout-body.js +26 -19
- package/lib/layout-body/src/layout-body.min.js +1 -1
- package/lib/list/src/list.js +73 -32
- package/lib/list/src/list.min.js +1 -1
- package/lib/list/style/style.css +25 -8
- package/lib/list/style/style.min.css +1 -1
- package/lib/scrollbar/src/scrollbar.js +74 -15
- package/lib/scrollbar/src/scrollbar.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/tabs/src/tabs.js +20 -7
- package/lib/tabs/src/tabs.min.js +1 -1
- package/lib/tree/src/tree.js +416 -53
- package/lib/tree/src/tree.min.js +1 -1
- package/lib/tree/style/style.css +43 -0
- package/lib/tree/style/style.min.css +1 -1
- package/lib/ui/index.js +1 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/ui/src/utils.js +4 -0
- package/lib/ui/src/utils.min.js +1 -1
- package/lib/vxe-list/style/style.css +25 -8
- package/lib/vxe-list/style/style.min.css +1 -1
- package/lib/vxe-tree/style/style.css +43 -0
- package/lib/vxe-tree/style/style.min.css +1 -1
- package/package.json +1 -1
- package/packages/card/src/card.ts +19 -3
- package/packages/language/fr-FR.ts +903 -903
- package/packages/layout-aside/src/layout-aside.ts +8 -5
- package/packages/layout-body/src/layout-body.ts +26 -14
- package/packages/list/src/list.ts +97 -41
- package/packages/scrollbar/src/scrollbar.ts +79 -17
- package/packages/tabs/src/tabs.ts +20 -7
- package/packages/tree/src/tree.ts +482 -67
- package/packages/ui/src/utils.ts +4 -0
- package/styles/components/list.scss +35 -10
- package/styles/components/tree.scss +76 -0
- package/types/components/card.d.ts +10 -1
- package/types/components/layout-aside.d.ts +10 -1
- package/types/components/layout-body.d.ts +10 -1
- package/types/components/list.d.ts +10 -1
- package/types/components/scrollbar.d.ts +16 -2
- package/types/components/table.d.ts +47 -4
- package/types/components/tabs.d.ts +10 -1
- package/types/components/tree.d.ts +33 -2
- /package/es/icon/{iconfont.1791880407207.ttf → iconfont.1791950618327.ttf} +0 -0
- /package/es/icon/{iconfont.1791880407207.woff → iconfont.1791950618327.woff} +0 -0
- /package/es/icon/{iconfont.1791880407207.woff2 → iconfont.1791950618327.woff2} +0 -0
- /package/es/{iconfont.1791880407207.ttf → iconfont.1791950618327.ttf} +0 -0
- /package/es/{iconfont.1791880407207.woff → iconfont.1791950618327.woff} +0 -0
- /package/es/{iconfont.1791880407207.woff2 → iconfont.1791950618327.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1791880407207.ttf → iconfont.1791950618327.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1791880407207.woff → iconfont.1791950618327.woff} +0 -0
- /package/lib/icon/style/{iconfont.1791880407207.woff2 → iconfont.1791950618327.woff2} +0 -0
- /package/lib/{iconfont.1791880407207.ttf → iconfont.1791950618327.ttf} +0 -0
- /package/lib/{iconfont.1791880407207.woff → iconfont.1791950618327.woff} +0 -0
- /package/lib/{iconfont.1791880407207.woff2 → iconfont.1791950618327.woff2} +0 -0
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import { PropType, CreateElement, VNode } from 'vue'
|
|
2
2
|
import { defineVxeComponent } from '../../ui/src/comp'
|
|
3
3
|
import XEUtils from 'xe-utils'
|
|
4
|
-
import { VxeUI, createEvent, globalEvents, globalResize, renderEmptyElement, globalMixins } from '../../ui'
|
|
4
|
+
import { VxeUI, domUtils, createEvent, globalEvents, globalResize, renderEmptyElement, globalMixins } from '../../ui'
|
|
5
5
|
import { calcTreeLine, getItemCacheObj } from './util'
|
|
6
6
|
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 } from '../../ui/src/utils'
|
|
10
|
+
import { isEnableConf, enModelValue, deModelValue, getText, getDefaultConfig } from '../../ui/src/utils'
|
|
11
11
|
import { moveRowAnimateToTb, clearRowAnimate } from '../../ui/src/anime'
|
|
12
|
+
import { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } from '../../scrollbar/src/util'
|
|
12
13
|
import VxeLoadingComponent from '../../loading'
|
|
13
14
|
import VxeTooltipComponent from '../../tooltip'
|
|
14
15
|
|
|
15
|
-
import type { TreeReactData, VxeTreeEmits, VxeTreeConstructor, VxeTreePropTypes, TreeInternalData, VxeTreeDefines, VxeTreePrivateMethods, VxeComponentSizeType, ValueOf, VxeTooltipInstance } from '../../../types'
|
|
16
|
+
import type { TreeReactData, VxeTreeEmits, VxeTreeConstructor, VxeTreePropTypes, TreeInternalData, VxeTreeDefines, VxeTreePrivateMethods, VxeComponentSizeType, ValueOf, VxeTooltipInstance, VxeComponentStyleType, VxeScrollbarPropTypes } from '../../../types'
|
|
16
17
|
|
|
17
18
|
const { warnLog, errLog } = createComponentLog('tree')
|
|
18
19
|
|
|
@@ -539,6 +540,37 @@ function insertTreeNode ($xeTree: VxeTreeConstructor, newRecords: any[], isAppen
|
|
|
539
540
|
})
|
|
540
541
|
}
|
|
541
542
|
|
|
543
|
+
function createReactData ():TreeReactData {
|
|
544
|
+
return {
|
|
545
|
+
parentHeight: 0,
|
|
546
|
+
customHeight: 0,
|
|
547
|
+
customMinHeight: 0,
|
|
548
|
+
customMaxHeight: 0,
|
|
549
|
+
currentNode: null,
|
|
550
|
+
scrollYLoad: false,
|
|
551
|
+
bodyHeight: 0,
|
|
552
|
+
topSpaceHeight: 0,
|
|
553
|
+
selectRadioKey: null,
|
|
554
|
+
treeList: [],
|
|
555
|
+
updateExpandedFlag: 1,
|
|
556
|
+
updateCheckboxFlag: 1,
|
|
557
|
+
|
|
558
|
+
// 滚动条
|
|
559
|
+
yThumbHeight: 0,
|
|
560
|
+
xThumbWidth: 0,
|
|
561
|
+
|
|
562
|
+
insertNodeFlag: 1,
|
|
563
|
+
removeNodeFlag: 1,
|
|
564
|
+
dragNode: null,
|
|
565
|
+
dragTipText: '',
|
|
566
|
+
isCrossDragNode: false,
|
|
567
|
+
tooltipStore: {
|
|
568
|
+
visible: false,
|
|
569
|
+
node: null
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
|
|
542
574
|
function createInternalData (): TreeInternalData {
|
|
543
575
|
return {
|
|
544
576
|
// initialized: false,
|
|
@@ -552,8 +584,15 @@ function createInternalData (): TreeInternalData {
|
|
|
552
584
|
treeExpandedMaps: {},
|
|
553
585
|
treeExpandLazyLoadedMaps: {},
|
|
554
586
|
|
|
555
|
-
|
|
587
|
+
// 滚动条
|
|
588
|
+
// resizeObserver: undefined,
|
|
589
|
+
// isThumbDrag: false,
|
|
590
|
+
thumbDragOffset: 0,
|
|
591
|
+
yThumbTop: 0,
|
|
592
|
+
xThumbLeft: 0,
|
|
556
593
|
lastScrollTop: 0,
|
|
594
|
+
lastScrollLeft: 0,
|
|
595
|
+
|
|
557
596
|
scrollYStore: {
|
|
558
597
|
startIndex: 0,
|
|
559
598
|
endIndex: 0,
|
|
@@ -574,32 +613,6 @@ function createInternalData (): TreeInternalData {
|
|
|
574
613
|
}
|
|
575
614
|
}
|
|
576
615
|
|
|
577
|
-
function createReactData ():TreeReactData {
|
|
578
|
-
return {
|
|
579
|
-
parentHeight: 0,
|
|
580
|
-
customHeight: 0,
|
|
581
|
-
customMinHeight: 0,
|
|
582
|
-
customMaxHeight: 0,
|
|
583
|
-
currentNode: null,
|
|
584
|
-
scrollYLoad: false,
|
|
585
|
-
bodyHeight: 0,
|
|
586
|
-
topSpaceHeight: 0,
|
|
587
|
-
selectRadioKey: null,
|
|
588
|
-
treeList: [],
|
|
589
|
-
updateExpandedFlag: 1,
|
|
590
|
-
updateCheckboxFlag: 1,
|
|
591
|
-
insertNodeFlag: 1,
|
|
592
|
-
removeNodeFlag: 1,
|
|
593
|
-
dragNode: null,
|
|
594
|
-
dragTipText: '',
|
|
595
|
-
isCrossDragNode: false,
|
|
596
|
-
tooltipStore: {
|
|
597
|
-
visible: false,
|
|
598
|
-
node: null
|
|
599
|
-
}
|
|
600
|
-
}
|
|
601
|
-
}
|
|
602
|
-
|
|
603
616
|
export default /* define-vxe-component start */ defineVxeComponent({
|
|
604
617
|
name: 'VxeTree',
|
|
605
618
|
mixins: [
|
|
@@ -732,7 +745,12 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
732
745
|
type: String as PropType<VxeTreePropTypes.Size>,
|
|
733
746
|
default: () => getConfig().tree.size || getConfig().size
|
|
734
747
|
},
|
|
735
|
-
virtualYConfig: Object as PropType<VxeTreePropTypes.VirtualYConfig
|
|
748
|
+
virtualYConfig: Object as PropType<VxeTreePropTypes.VirtualYConfig>,
|
|
749
|
+
useScrollbar: {
|
|
750
|
+
type: Boolean as PropType<VxeTreePropTypes.UseScrollbar>,
|
|
751
|
+
default: () => getConfig().tree.useScrollbar
|
|
752
|
+
},
|
|
753
|
+
scrollbarConfig: Object as PropType<VxeTreePropTypes.ScrollbarConfig>
|
|
736
754
|
},
|
|
737
755
|
provide () {
|
|
738
756
|
const $xeTree = this
|
|
@@ -751,7 +769,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
751
769
|
reactData,
|
|
752
770
|
crossTreeDragNodeInfo: crossTreeDragNodeGlobal,
|
|
753
771
|
|
|
754
|
-
|
|
772
|
+
reFlag: 0,
|
|
755
773
|
dataFlag: 0
|
|
756
774
|
}
|
|
757
775
|
},
|
|
@@ -872,6 +890,21 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
872
890
|
|
|
873
891
|
return Object.assign({}, getConfig().tree.menuConfig, props.menuConfig)
|
|
874
892
|
},
|
|
893
|
+
computeWrapperStyles () {
|
|
894
|
+
const $xeTree = this
|
|
895
|
+
|
|
896
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts
|
|
897
|
+
const scrollbarXOpts = $xeTree.computeScrollbarXOpts
|
|
898
|
+
const scrollbarYOpts = $xeTree.computeScrollbarYOpts
|
|
899
|
+
const barWidth = getDefaultConfig(getDefaultConfig(scrollbarYOpts.width, scrollbarOpts.width), getConfig().scrollbar.width)
|
|
900
|
+
const barHeight = getDefaultConfig(getDefaultConfig(scrollbarXOpts.height, scrollbarOpts.height), getConfig().scrollbar.height)
|
|
901
|
+
const stys: VxeComponentStyleType = {}
|
|
902
|
+
if (barWidth || barHeight) {
|
|
903
|
+
stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(barWidth || barHeight)
|
|
904
|
+
stys['--vxe-ui-scrollbar-x-height'] = toCssUnit(barHeight || barWidth)
|
|
905
|
+
}
|
|
906
|
+
return stys
|
|
907
|
+
},
|
|
875
908
|
computeTreeStyle () {
|
|
876
909
|
const $xeTree = this
|
|
877
910
|
const props = $xeTree
|
|
@@ -881,7 +914,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
881
914
|
const { customHeight, customMinHeight, customMaxHeight } = reactData
|
|
882
915
|
const checkboxOpts = $xeTree.computeCheckboxOpts
|
|
883
916
|
const { nodeStyle } = checkboxOpts
|
|
884
|
-
const stys:
|
|
917
|
+
const stys: VxeComponentStyleType = {}
|
|
885
918
|
if (customHeight) {
|
|
886
919
|
stys.height = toCssUnit(customHeight)
|
|
887
920
|
}
|
|
@@ -910,6 +943,93 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
910
943
|
const props = $xeTree
|
|
911
944
|
|
|
912
945
|
return Object.assign({}, getConfig().tree.filterConfig, props.filterConfig)
|
|
946
|
+
},
|
|
947
|
+
computeScrollbarOpts () {
|
|
948
|
+
const $xeTree = this
|
|
949
|
+
const props = $xeTree
|
|
950
|
+
|
|
951
|
+
return Object.assign({}, getConfig().tree.scrollbarConfig, props.scrollbarConfig)
|
|
952
|
+
},
|
|
953
|
+
computeScrollbarXOpts () {
|
|
954
|
+
const $xeTree = this
|
|
955
|
+
|
|
956
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts as VxeTreePropTypes.ScrollbarConfig
|
|
957
|
+
return Object.assign({}, getConfig().scrollbar.xConfig, scrollbarOpts.xConfig, {
|
|
958
|
+
visible: false
|
|
959
|
+
})
|
|
960
|
+
},
|
|
961
|
+
computeScrollbarYOpts () {
|
|
962
|
+
const $xeTree = this
|
|
963
|
+
|
|
964
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts as VxeTreePropTypes.ScrollbarConfig
|
|
965
|
+
return Object.assign({}, getConfig().scrollbar.yConfig, scrollbarOpts.yConfig)
|
|
966
|
+
},
|
|
967
|
+
computeScrollXVisible () {
|
|
968
|
+
const $xeTree = this
|
|
969
|
+
|
|
970
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts as VxeTreePropTypes.ScrollbarConfig
|
|
971
|
+
const scrollbarXOpts = $xeTree.computeScrollbarXOpts as VxeScrollbarPropTypes.XConfig
|
|
972
|
+
return getDefaultConfig(scrollbarXOpts.visible, scrollbarOpts.visible)
|
|
973
|
+
},
|
|
974
|
+
computeScrollYVisible () {
|
|
975
|
+
const $xeTree = this
|
|
976
|
+
|
|
977
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts as VxeTreePropTypes.ScrollbarConfig
|
|
978
|
+
const scrollbarYOpts = $xeTree.computeScrollbarYOpts as VxeScrollbarPropTypes.YConfig
|
|
979
|
+
return getDefaultConfig(scrollbarYOpts.visible, scrollbarOpts.visible)
|
|
980
|
+
},
|
|
981
|
+
computeScrollXAutoHide () {
|
|
982
|
+
const $xeTree = this
|
|
983
|
+
|
|
984
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts as VxeTreePropTypes.ScrollbarConfig
|
|
985
|
+
const scrollbarXOpts = $xeTree.computeScrollbarXOpts as VxeScrollbarPropTypes.XConfig
|
|
986
|
+
return getDefaultConfig(getDefaultConfig(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide)
|
|
987
|
+
},
|
|
988
|
+
computeScrollYAutoHide () {
|
|
989
|
+
const $xeTree = this
|
|
990
|
+
|
|
991
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts as VxeTreePropTypes.ScrollbarConfig
|
|
992
|
+
const scrollbarYOpts = $xeTree.computeScrollbarYOpts as VxeScrollbarPropTypes.YConfig
|
|
993
|
+
return getDefaultConfig(getDefaultConfig(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide)
|
|
994
|
+
},
|
|
995
|
+
computeScrollbarWrapperClss () {
|
|
996
|
+
const $xeTree = this
|
|
997
|
+
const reactData = ($xeTree as any).reactData
|
|
998
|
+
|
|
999
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts as VxeTreePropTypes.ScrollbarConfig
|
|
1000
|
+
const { padding } = scrollbarOpts
|
|
1001
|
+
const { yThumbHeight, xThumbWidth } = reactData
|
|
1002
|
+
const scrollbarXToTop = $xeTree.computeScrollbarXToTop
|
|
1003
|
+
const scrollbarYToLeft = $xeTree.computeScrollbarYToLeft
|
|
1004
|
+
const scrollXVisible = $xeTree.computeScrollXVisible
|
|
1005
|
+
const scrollYVisible = $xeTree.computeScrollYVisible
|
|
1006
|
+
const scrollXAutoHide = $xeTree.computeScrollXAutoHide as boolean
|
|
1007
|
+
const scrollYAutoHide = $xeTree.computeScrollYAutoHide as boolean
|
|
1008
|
+
return domUtils.buildClass([
|
|
1009
|
+
'vxe-scrollbar is--virtual',
|
|
1010
|
+
`ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}`,
|
|
1011
|
+
`ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}`,
|
|
1012
|
+
`sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`,
|
|
1013
|
+
`sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`
|
|
1014
|
+
], {
|
|
1015
|
+
'is--padding': padding,
|
|
1016
|
+
'ov-x--auto-hide': scrollXAutoHide,
|
|
1017
|
+
'ov-y--auto-hide': scrollYAutoHide,
|
|
1018
|
+
'overflow-y': yThumbHeight,
|
|
1019
|
+
'overflow-x': xThumbWidth
|
|
1020
|
+
})
|
|
1021
|
+
},
|
|
1022
|
+
computeScrollbarXToTop () {
|
|
1023
|
+
const $xeTree = this
|
|
1024
|
+
|
|
1025
|
+
const scrollbarXOpts = $xeTree.computeScrollbarXOpts as VxeScrollbarPropTypes.XConfig
|
|
1026
|
+
return scrollbarXOpts.position === 'top'
|
|
1027
|
+
},
|
|
1028
|
+
computeScrollbarYToLeft () {
|
|
1029
|
+
const $xeTree = this
|
|
1030
|
+
|
|
1031
|
+
const scrollbarYOpts = $xeTree.computeScrollbarYOpts as VxeScrollbarPropTypes.YConfig
|
|
1032
|
+
return scrollbarYOpts.position === 'left'
|
|
913
1033
|
}
|
|
914
1034
|
},
|
|
915
1035
|
methods: {
|
|
@@ -1562,6 +1682,12 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1562
1682
|
}
|
|
1563
1683
|
})
|
|
1564
1684
|
},
|
|
1685
|
+
updateScrollbar () {
|
|
1686
|
+
const $xeTree = this
|
|
1687
|
+
|
|
1688
|
+
$xeTree.updateThumbSize()
|
|
1689
|
+
$xeTree.updateThumbOffset()
|
|
1690
|
+
},
|
|
1565
1691
|
/**
|
|
1566
1692
|
* 重新计算列表
|
|
1567
1693
|
*/
|
|
@@ -1587,6 +1713,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1587
1713
|
const parentPaddingSize = getPaddingTopBottomSize(parentEl)
|
|
1588
1714
|
reactData.parentHeight = Math.max(headHeight + footHeight + rowHeight, parentEl.clientHeight - parentPaddingSize - headHeight - footHeight)
|
|
1589
1715
|
}
|
|
1716
|
+
$xeTree.updateScrollbar()
|
|
1590
1717
|
$xeTree.updateHeight()
|
|
1591
1718
|
return $xeTree.computeScrollLoad().then(() => {
|
|
1592
1719
|
$xeTree.updateHeight()
|
|
@@ -1634,6 +1761,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1634
1761
|
const scrollLeft = scrollBodyElem.scrollLeft
|
|
1635
1762
|
const isX = scrollLeft !== internalData.lastScrollLeft
|
|
1636
1763
|
const isY = scrollTop !== internalData.lastScrollTop
|
|
1764
|
+
$xeTree.updateThumbOffset()
|
|
1637
1765
|
internalData.lastScrollTop = scrollTop
|
|
1638
1766
|
internalData.lastScrollLeft = scrollLeft
|
|
1639
1767
|
if (reactData.scrollYLoad) {
|
|
@@ -2521,15 +2649,6 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
2521
2649
|
$xeTree.emitRadioMode(value)
|
|
2522
2650
|
$xeTree.dispatchEvent('radio-change', { node, value, checked: isChecked }, evnt)
|
|
2523
2651
|
},
|
|
2524
|
-
handleGlobalResizeEvent () {
|
|
2525
|
-
const $xeTree = this
|
|
2526
|
-
|
|
2527
|
-
const el = $xeTree.$refs.refElem as HTMLDivElement
|
|
2528
|
-
if (!el || !el.clientWidth) {
|
|
2529
|
-
return
|
|
2530
|
-
}
|
|
2531
|
-
$xeTree.recalculate()
|
|
2532
|
-
},
|
|
2533
2652
|
reloadData (data: any[]) {
|
|
2534
2653
|
const $xeTree = this
|
|
2535
2654
|
|
|
@@ -3325,6 +3444,201 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
3325
3444
|
}
|
|
3326
3445
|
},
|
|
3327
3446
|
|
|
3447
|
+
// 滚动条
|
|
3448
|
+
updateThumbSize () {
|
|
3449
|
+
const $xeTree = this
|
|
3450
|
+
const reactData = $xeTree.reactData
|
|
3451
|
+
|
|
3452
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
|
|
3453
|
+
if (!viewEl) {
|
|
3454
|
+
return
|
|
3455
|
+
}
|
|
3456
|
+
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
3457
|
+
return
|
|
3458
|
+
}
|
|
3459
|
+
const trackXEl = $xeTree.$refs.refTrackXElem as HTMLDivElement
|
|
3460
|
+
const xThumbWidth = trackXEl ? getThumbSize(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0
|
|
3461
|
+
const thumbXElem = $xeTree.$refs.refThumbXElem as HTMLDivElement
|
|
3462
|
+
if (thumbXElem) {
|
|
3463
|
+
thumbXElem.style.width = xThumbWidth + 'px'
|
|
3464
|
+
}
|
|
3465
|
+
reactData.xThumbWidth = xThumbWidth
|
|
3466
|
+
|
|
3467
|
+
const trackYEl = $xeTree.$refs.refTrackYElem as HTMLDivElement
|
|
3468
|
+
|
|
3469
|
+
const yThumbHeight = trackYEl ? getThumbSize(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0
|
|
3470
|
+
const thumbYElem = $xeTree.$refs.refThumbYElem as HTMLDivElement
|
|
3471
|
+
if (thumbYElem) {
|
|
3472
|
+
thumbYElem.style.height = yThumbHeight + 'px'
|
|
3473
|
+
}
|
|
3474
|
+
reactData.yThumbHeight = yThumbHeight
|
|
3475
|
+
},
|
|
3476
|
+
updateThumbOffset () {
|
|
3477
|
+
const $xeTree = this
|
|
3478
|
+
const reactData = $xeTree.reactData
|
|
3479
|
+
const internalData = $xeTree.internalData
|
|
3480
|
+
|
|
3481
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
|
|
3482
|
+
if (!viewEl) {
|
|
3483
|
+
return
|
|
3484
|
+
}
|
|
3485
|
+
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
3486
|
+
return
|
|
3487
|
+
}
|
|
3488
|
+
const { xThumbWidth, yThumbHeight } = reactData
|
|
3489
|
+
const trackXEl = $xeTree.$refs.refTrackXElem as HTMLDivElement
|
|
3490
|
+
const thumbXElem = $xeTree.$refs.refThumbXElem as HTMLDivElement
|
|
3491
|
+
const xThumbLeft = trackXEl && xThumbWidth ? getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0
|
|
3492
|
+
internalData.xThumbLeft = xThumbLeft
|
|
3493
|
+
if (thumbXElem && xThumbWidth) {
|
|
3494
|
+
thumbXElem.style.width = xThumbWidth + 'px'
|
|
3495
|
+
thumbXElem.style.transform = `translateX(${xThumbLeft}px)`
|
|
3496
|
+
}
|
|
3497
|
+
|
|
3498
|
+
const trackYEl = $xeTree.$refs.refTrackYElem as HTMLDivElement
|
|
3499
|
+
const thumbYElem = $xeTree.$refs.refThumbYElem as HTMLDivElement
|
|
3500
|
+
const yThumbTop = trackYEl && yThumbHeight ? getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0
|
|
3501
|
+
internalData.yThumbTop = yThumbTop
|
|
3502
|
+
if (thumbYElem && yThumbHeight) {
|
|
3503
|
+
thumbYElem.style.height = yThumbHeight + 'px'
|
|
3504
|
+
thumbYElem.style.transform = `translateY(${yThumbTop}px)`
|
|
3505
|
+
}
|
|
3506
|
+
},
|
|
3507
|
+
clickTrackXEvent (evnt: MouseEvent) {
|
|
3508
|
+
const $xeTree = this
|
|
3509
|
+
const reactData = $xeTree.reactData
|
|
3510
|
+
|
|
3511
|
+
const trackEl = evnt.currentTarget as HTMLDivElement
|
|
3512
|
+
if (trackEl !== evnt.target) {
|
|
3513
|
+
return
|
|
3514
|
+
}
|
|
3515
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
|
|
3516
|
+
if (!viewEl) {
|
|
3517
|
+
return
|
|
3518
|
+
}
|
|
3519
|
+
const { xThumbWidth } = reactData
|
|
3520
|
+
const trackRect = trackEl.getBoundingClientRect()
|
|
3521
|
+
viewEl.scrollTo({
|
|
3522
|
+
left: getScrollFromClick(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
|
|
3523
|
+
behavior: 'auto'
|
|
3524
|
+
})
|
|
3525
|
+
},
|
|
3526
|
+
clickTrackYEvent (evnt: MouseEvent) {
|
|
3527
|
+
const $xeTree = this
|
|
3528
|
+
const reactData = $xeTree.reactData
|
|
3529
|
+
|
|
3530
|
+
const trackEl = evnt.currentTarget as HTMLDivElement
|
|
3531
|
+
if (trackEl !== evnt.target) {
|
|
3532
|
+
return
|
|
3533
|
+
}
|
|
3534
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
|
|
3535
|
+
if (!viewEl) {
|
|
3536
|
+
return
|
|
3537
|
+
}
|
|
3538
|
+
const { yThumbHeight } = reactData
|
|
3539
|
+
const trackRect = trackEl.getBoundingClientRect()
|
|
3540
|
+
viewEl.scrollTo({
|
|
3541
|
+
top: getScrollFromClick(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
|
|
3542
|
+
behavior: 'auto'
|
|
3543
|
+
})
|
|
3544
|
+
},
|
|
3545
|
+
pointerdownThumbXEvent (evnt: PointerEvent) {
|
|
3546
|
+
const $xeTree = this
|
|
3547
|
+
const reactData = $xeTree.reactData
|
|
3548
|
+
const internalData = $xeTree.internalData
|
|
3549
|
+
|
|
3550
|
+
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
3551
|
+
internalData.isThumbDrag = true
|
|
3552
|
+
thumbEl.setPointerCapture(evnt.pointerId)
|
|
3553
|
+
|
|
3554
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
|
|
3555
|
+
if (!viewEl) {
|
|
3556
|
+
return
|
|
3557
|
+
}
|
|
3558
|
+
const { xThumbWidth } = reactData
|
|
3559
|
+
const trackEl = thumbEl.parentElement as HTMLDivElement
|
|
3560
|
+
const trackRect = trackEl.getBoundingClientRect()
|
|
3561
|
+
const pointerPosition = evnt.clientX - trackRect.left
|
|
3562
|
+
// 记录 thumb 的偏移
|
|
3563
|
+
const thumbOffset = getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth)
|
|
3564
|
+
internalData.thumbDragOffset = pointerPosition - thumbOffset
|
|
3565
|
+
},
|
|
3566
|
+
pointermoveThumbXEvent (evnt: PointerEvent) {
|
|
3567
|
+
const $xeTree = this
|
|
3568
|
+
const reactData = $xeTree.reactData
|
|
3569
|
+
const internalData = $xeTree.internalData
|
|
3570
|
+
|
|
3571
|
+
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
3572
|
+
if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
|
|
3573
|
+
return
|
|
3574
|
+
}
|
|
3575
|
+
const { isThumbDrag, thumbDragOffset } = internalData
|
|
3576
|
+
if (isThumbDrag) {
|
|
3577
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
|
|
3578
|
+
if (!viewEl) {
|
|
3579
|
+
return
|
|
3580
|
+
}
|
|
3581
|
+
const { xThumbWidth } = reactData
|
|
3582
|
+
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
3583
|
+
const trackEl = thumbEl.parentElement as HTMLDivElement
|
|
3584
|
+
const trackRect = trackEl.getBoundingClientRect()
|
|
3585
|
+
// 更新偏移
|
|
3586
|
+
viewEl.scrollLeft = getScrollFromDrag(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth)
|
|
3587
|
+
}
|
|
3588
|
+
},
|
|
3589
|
+
cleatPointerThumbEvent (evnt: PointerEvent) {
|
|
3590
|
+
const $xeTree = this
|
|
3591
|
+
const internalData = $xeTree.internalData
|
|
3592
|
+
|
|
3593
|
+
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
3594
|
+
thumbEl.releasePointerCapture(evnt.pointerId)
|
|
3595
|
+
internalData.isThumbDrag = false
|
|
3596
|
+
},
|
|
3597
|
+
pointerdownThumbYEvent (evnt: PointerEvent) {
|
|
3598
|
+
const $xeTree = this
|
|
3599
|
+
const reactData = $xeTree.reactData
|
|
3600
|
+
const internalData = $xeTree.internalData
|
|
3601
|
+
|
|
3602
|
+
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
3603
|
+
internalData.isThumbDrag = true
|
|
3604
|
+
thumbEl.setPointerCapture(evnt.pointerId)
|
|
3605
|
+
|
|
3606
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
|
|
3607
|
+
if (!viewEl) {
|
|
3608
|
+
return
|
|
3609
|
+
}
|
|
3610
|
+
const { yThumbHeight } = reactData
|
|
3611
|
+
const trackEl = thumbEl.parentElement as HTMLDivElement
|
|
3612
|
+
const trackRect = trackEl.getBoundingClientRect()
|
|
3613
|
+
const pointerPosition = evnt.clientY - trackRect.top
|
|
3614
|
+
// 记录 thumb 的偏移
|
|
3615
|
+
const thumbOffset = getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight)
|
|
3616
|
+
internalData.thumbDragOffset = pointerPosition - thumbOffset
|
|
3617
|
+
},
|
|
3618
|
+
pointermoveThumbYEvent (evnt: PointerEvent) {
|
|
3619
|
+
const $xeTree = this
|
|
3620
|
+
const reactData = $xeTree.reactData
|
|
3621
|
+
const internalData = $xeTree.internalData
|
|
3622
|
+
|
|
3623
|
+
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
3624
|
+
if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
|
|
3625
|
+
return
|
|
3626
|
+
}
|
|
3627
|
+
const { isThumbDrag, thumbDragOffset } = internalData
|
|
3628
|
+
if (isThumbDrag) {
|
|
3629
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
|
|
3630
|
+
if (!viewEl) {
|
|
3631
|
+
return
|
|
3632
|
+
}
|
|
3633
|
+
const { yThumbHeight } = reactData
|
|
3634
|
+
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
3635
|
+
const trackEl = thumbEl.parentElement as HTMLDivElement
|
|
3636
|
+
const trackRect = trackEl.getBoundingClientRect()
|
|
3637
|
+
// 更新偏移
|
|
3638
|
+
viewEl.scrollTop = getScrollFromDrag(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight)
|
|
3639
|
+
}
|
|
3640
|
+
},
|
|
3641
|
+
|
|
3328
3642
|
//
|
|
3329
3643
|
// Render
|
|
3330
3644
|
//
|
|
@@ -3690,13 +4004,14 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
3690
4004
|
const slots = $xeTree.$scopedSlots
|
|
3691
4005
|
const reactData = $xeTree.reactData
|
|
3692
4006
|
|
|
3693
|
-
const { loading, trigger, showLine } = props
|
|
3694
|
-
const { bodyHeight, topSpaceHeight, treeList, tooltipStore } = reactData
|
|
4007
|
+
const { loading, trigger, showLine, useScrollbar } = props
|
|
4008
|
+
const { bodyHeight, topSpaceHeight, treeList, tooltipStore, xThumbWidth, yThumbHeight } = reactData
|
|
3695
4009
|
const vSize = $xeTree.computeSize
|
|
3696
4010
|
const radioOpts = $xeTree.computeRadioOpts
|
|
3697
4011
|
const checkboxOpts = $xeTree.computeCheckboxOpts
|
|
3698
4012
|
const loadingOpts = $xeTree.computeLoadingOpts
|
|
3699
4013
|
const isNodeHover = $xeTree.computeIsNodeHover
|
|
4014
|
+
const wrapperStyles = $xeTree.computeWrapperStyles
|
|
3700
4015
|
const treeStyle = $xeTree.computeTreeStyle
|
|
3701
4016
|
const dragOpts = $xeTree.computeDragOpts
|
|
3702
4017
|
const tooltipOpts = $xeTree.computeTooltipOpts
|
|
@@ -3704,6 +4019,14 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
3704
4019
|
const headerSlot = slots.header
|
|
3705
4020
|
const footerSlot = slots.footer
|
|
3706
4021
|
const tooltipSlot = slots.tooltip
|
|
4022
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts
|
|
4023
|
+
const scrollXVisible = $xeTree.computeScrollXVisible
|
|
4024
|
+
const scrollYVisible = $xeTree.computeScrollYVisible
|
|
4025
|
+
const scrollbarXToTop = $xeTree.computeScrollbarXToTop
|
|
4026
|
+
const scrollbarYToLeft = $xeTree.computeScrollbarYToLeft
|
|
4027
|
+
const scrollXAutoHide = $xeTree.computeScrollXAutoHide
|
|
4028
|
+
const scrollYAutoHide = $xeTree.computeScrollYAutoHide
|
|
4029
|
+
const scrollbarWrapperClss = $xeTree.computeScrollbarWrapperClss
|
|
3707
4030
|
|
|
3708
4031
|
const teOns: {
|
|
3709
4032
|
dragover?: (...args: any[]) => void
|
|
@@ -3714,15 +4037,29 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
3714
4037
|
|
|
3715
4038
|
return h('div', {
|
|
3716
4039
|
ref: 'refElem',
|
|
3717
|
-
class: [
|
|
3718
|
-
|
|
3719
|
-
'
|
|
3720
|
-
'
|
|
3721
|
-
'
|
|
3722
|
-
'
|
|
3723
|
-
|
|
3724
|
-
|
|
3725
|
-
|
|
4040
|
+
class: [
|
|
4041
|
+
'vxe-tree',
|
|
4042
|
+
useScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '',
|
|
4043
|
+
useScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '',
|
|
4044
|
+
useScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '',
|
|
4045
|
+
useScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '',
|
|
4046
|
+
{
|
|
4047
|
+
[`size--${vSize}`]: vSize,
|
|
4048
|
+
'show--line': showLine,
|
|
4049
|
+
'is--virtual-scrollbar': useScrollbar,
|
|
4050
|
+
'ov-padding': useScrollbar && scrollbarOpts.padding,
|
|
4051
|
+
'ov-x--auto-hide': useScrollbar && scrollXAutoHide,
|
|
4052
|
+
'ov-y--auto-hide': useScrollbar && scrollYAutoHide,
|
|
4053
|
+
'overflow-y': yThumbHeight,
|
|
4054
|
+
'overflow-x': xThumbWidth,
|
|
4055
|
+
'checkbox--highlight': checkboxOpts.highlight,
|
|
4056
|
+
'radio--highlight': radioOpts.highlight,
|
|
4057
|
+
'node--hover': isNodeHover,
|
|
4058
|
+
'node--trigger': trigger === 'node',
|
|
4059
|
+
'is--loading': loading
|
|
4060
|
+
}
|
|
4061
|
+
],
|
|
4062
|
+
style: wrapperStyles,
|
|
3726
4063
|
on: teOns
|
|
3727
4064
|
}, [
|
|
3728
4065
|
headerSlot
|
|
@@ -3759,6 +4096,57 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
3759
4096
|
class: 'vxe-tree--footer-wrapper'
|
|
3760
4097
|
}, footerSlot({ $tree: $xeTree }))
|
|
3761
4098
|
: renderEmptyElement($xeTree),
|
|
4099
|
+
/**
|
|
4100
|
+
* 滚动条
|
|
4101
|
+
*/
|
|
4102
|
+
useScrollbar
|
|
4103
|
+
? h('div', {
|
|
4104
|
+
class: scrollbarWrapperClss
|
|
4105
|
+
}, [
|
|
4106
|
+
scrollXVisible === false
|
|
4107
|
+
? renderEmptyElement($xeTree)
|
|
4108
|
+
: h('div', {
|
|
4109
|
+
ref: 'refTrackXElem',
|
|
4110
|
+
class: 'vxe-scrollbar--track-x',
|
|
4111
|
+
on: {
|
|
4112
|
+
click: $xeTree.clickTrackXEvent
|
|
4113
|
+
}
|
|
4114
|
+
}, [
|
|
4115
|
+
h('div', {
|
|
4116
|
+
ref: 'refThumbXElem',
|
|
4117
|
+
class: 'vxe-scrollbar--thumb-x',
|
|
4118
|
+
on: {
|
|
4119
|
+
pointerdown: $xeTree.pointerdownThumbXEvent,
|
|
4120
|
+
pointermove: $xeTree.pointermoveThumbXEvent,
|
|
4121
|
+
pointerup: $xeTree.cleatPointerThumbEvent,
|
|
4122
|
+
pointercancel: $xeTree.cleatPointerThumbEvent,
|
|
4123
|
+
lostpointercapture: $xeTree.cleatPointerThumbEvent
|
|
4124
|
+
}
|
|
4125
|
+
})
|
|
4126
|
+
]),
|
|
4127
|
+
scrollYVisible === false
|
|
4128
|
+
? renderEmptyElement($xeTree)
|
|
4129
|
+
: h('div', {
|
|
4130
|
+
ref: 'refTrackYElem',
|
|
4131
|
+
class: 'vxe-scrollbar--track-y',
|
|
4132
|
+
on: {
|
|
4133
|
+
click: $xeTree.clickTrackYEvent
|
|
4134
|
+
}
|
|
4135
|
+
}, [
|
|
4136
|
+
h('div', {
|
|
4137
|
+
ref: 'refThumbYElem',
|
|
4138
|
+
class: 'vxe-scrollbar--thumb-y',
|
|
4139
|
+
on: {
|
|
4140
|
+
pointerdown: $xeTree.pointerdownThumbYEvent,
|
|
4141
|
+
pointermove: $xeTree.pointermoveThumbYEvent,
|
|
4142
|
+
pointerup: $xeTree.cleatPointerThumbEvent,
|
|
4143
|
+
pointercancel: $xeTree.cleatPointerThumbEvent,
|
|
4144
|
+
lostpointercapture: $xeTree.cleatPointerThumbEvent
|
|
4145
|
+
}
|
|
4146
|
+
})
|
|
4147
|
+
])
|
|
4148
|
+
])
|
|
4149
|
+
: renderEmptyElement($xeTree),
|
|
3762
4150
|
/**
|
|
3763
4151
|
* 拖拽提示
|
|
3764
4152
|
*/
|
|
@@ -3857,22 +4245,43 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
3857
4245
|
height () {
|
|
3858
4246
|
const $xeTree = this
|
|
3859
4247
|
|
|
3860
|
-
$xeTree.
|
|
4248
|
+
$xeTree.reFlag++
|
|
3861
4249
|
},
|
|
3862
4250
|
minHeight () {
|
|
3863
4251
|
const $xeTree = this
|
|
3864
4252
|
|
|
3865
|
-
$xeTree.
|
|
4253
|
+
$xeTree.reFlag++
|
|
3866
4254
|
},
|
|
3867
4255
|
maxHeight () {
|
|
3868
4256
|
const $xeTree = this
|
|
3869
4257
|
|
|
3870
|
-
$xeTree.
|
|
4258
|
+
$xeTree.reFlag++
|
|
4259
|
+
},
|
|
4260
|
+
useScrollbar () {
|
|
4261
|
+
const $xeTree = this
|
|
4262
|
+
|
|
4263
|
+
$xeTree.reFlag++
|
|
3871
4264
|
},
|
|
3872
|
-
|
|
4265
|
+
computeScrollXVisible () {
|
|
3873
4266
|
const $xeTree = this
|
|
3874
4267
|
|
|
3875
|
-
$xeTree
|
|
4268
|
+
$xeTree.$nextTick(() => {
|
|
4269
|
+
$xeTree.reFlag++
|
|
4270
|
+
})
|
|
4271
|
+
},
|
|
4272
|
+
computeScrollYVisible () {
|
|
4273
|
+
const $xeTree = this
|
|
4274
|
+
|
|
4275
|
+
$xeTree.$nextTick(() => {
|
|
4276
|
+
$xeTree.reFlag++
|
|
4277
|
+
})
|
|
4278
|
+
},
|
|
4279
|
+
reFlag () {
|
|
4280
|
+
const $xeTree = this
|
|
4281
|
+
|
|
4282
|
+
$xeTree.recalculate().then(() => {
|
|
4283
|
+
$xeTree.recalculate()
|
|
4284
|
+
})
|
|
3876
4285
|
}
|
|
3877
4286
|
},
|
|
3878
4287
|
created () {
|
|
@@ -3890,7 +4299,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
3890
4299
|
const props = $xeTree
|
|
3891
4300
|
const internalData = $xeTree.internalData
|
|
3892
4301
|
|
|
3893
|
-
const { transform, drag, menuConfig, showOverflow, lazy, loadMethod } = props
|
|
4302
|
+
const { transform, drag, menuConfig, showOverflow, lazy, loadMethod, autoResize, useScrollbar } = props
|
|
3894
4303
|
const dragOpts = $xeTree.computeDragOpts
|
|
3895
4304
|
if (!showOverflow) {
|
|
3896
4305
|
errLog('vxe.error.errProp', ['show-overflow=false', 'show-overflow=true'])
|
|
@@ -3911,25 +4320,31 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
3911
4320
|
if (menuConfig && !VxeUIContextMenu) {
|
|
3912
4321
|
errLog('vxe.error.reqComp', ['vxe-context-menu'])
|
|
3913
4322
|
}
|
|
3914
|
-
if (
|
|
4323
|
+
if (useScrollbar || autoResize) {
|
|
3915
4324
|
const el = $xeTree.$refs.refElem as HTMLDivElement
|
|
4325
|
+
const viewInnerEl = $xeTree.$refs.refVirtualBody as HTMLDivElement
|
|
3916
4326
|
const parentEl = $xeTree.getParentElem()
|
|
3917
4327
|
const resizeObserver = globalResize.create(() => {
|
|
3918
|
-
|
|
3919
|
-
$xeTree.recalculate()
|
|
3920
|
-
}
|
|
4328
|
+
$xeTree.reFlag++
|
|
3921
4329
|
})
|
|
3922
4330
|
if (el) {
|
|
3923
4331
|
resizeObserver.observe(el)
|
|
4332
|
+
if (autoResize) {
|
|
4333
|
+
if (parentEl) {
|
|
4334
|
+
resizeObserver.observe(parentEl)
|
|
4335
|
+
}
|
|
4336
|
+
}
|
|
3924
4337
|
}
|
|
3925
|
-
if (
|
|
3926
|
-
resizeObserver.observe(
|
|
4338
|
+
if (viewInnerEl) {
|
|
4339
|
+
resizeObserver.observe(viewInnerEl)
|
|
3927
4340
|
}
|
|
3928
4341
|
internalData.resizeObserver = resizeObserver
|
|
3929
4342
|
}
|
|
3930
4343
|
|
|
3931
|
-
$xeTree.
|
|
3932
|
-
globalEvents.on($xeTree, 'resize',
|
|
4344
|
+
$xeTree.reFlag++
|
|
4345
|
+
globalEvents.on($xeTree, 'resize', () => {
|
|
4346
|
+
$xeTree.reFlag++
|
|
4347
|
+
})
|
|
3933
4348
|
},
|
|
3934
4349
|
beforeDestroy () {
|
|
3935
4350
|
const $xeTree = this
|