vxe-pc-ui 3.20.0 → 3.20.2
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 +20 -4
- package/es/drawer/src/drawer.js +75 -16
- package/es/drawer/style.css +13 -6
- package/es/drawer/style.min.css +1 -1
- package/es/icon/style.css +1 -1
- package/es/language/fr-FR.js +29 -29
- package/es/layout-aside/src/layout-aside.js +10 -6
- package/es/layout-body/src/layout-body.js +24 -12
- package/es/list/src/list.js +131 -49
- package/es/list/style.css +25 -8
- package/es/list/style.min.css +1 -1
- package/es/menu/src/menu.js +2 -2
- package/es/modal/src/modal.js +73 -14
- package/es/modal/style.css +4 -0
- package/es/modal/style.min.css +1 -1
- package/es/scrollbar/src/scrollbar.js +87 -19
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/tabs/src/tabs.js +21 -5
- package/es/tree/src/tree.js +460 -54
- 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-drawer/style.css +13 -6
- package/es/vxe-drawer/style.min.css +1 -1
- package/es/vxe-list/style.css +25 -8
- package/es/vxe-list/style.min.css +1 -1
- package/es/vxe-modal/style.css +4 -0
- package/es/vxe-modal/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 +20 -4
- package/lib/card/src/card.min.js +1 -1
- package/lib/drawer/src/drawer.js +76 -12
- package/lib/drawer/src/drawer.min.js +1 -1
- package/lib/drawer/style/style.css +13 -6
- package/lib/drawer/style/style.min.css +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/index.umd.js +956 -185
- 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 +10 -9
- package/lib/layout-aside/src/layout-aside.min.js +1 -1
- package/lib/layout-body/src/layout-body.js +28 -20
- package/lib/layout-body/src/layout-body.min.js +1 -1
- package/lib/list/src/list.js +119 -46
- 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/menu/src/menu.js +1 -1
- package/lib/menu/src/menu.min.js +1 -1
- package/lib/modal/src/modal.js +74 -12
- package/lib/modal/src/modal.min.js +1 -1
- package/lib/modal/style/style.css +4 -0
- package/lib/modal/style/style.min.css +1 -1
- package/lib/scrollbar/src/scrollbar.js +92 -17
- 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 +21 -8
- package/lib/tabs/src/tabs.min.js +1 -1
- package/lib/tree/src/tree.js +438 -51
- 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-drawer/style/style.css +13 -6
- package/lib/vxe-drawer/style/style.min.css +1 -1
- package/lib/vxe-list/style/style.css +25 -8
- package/lib/vxe-list/style/style.min.css +1 -1
- package/lib/vxe-modal/style/style.css +4 -0
- package/lib/vxe-modal/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 +2 -2
- package/packages/card/src/card.ts +21 -4
- package/packages/drawer/src/drawer.ts +80 -16
- package/packages/language/fr-FR.ts +903 -903
- package/packages/layout-aside/src/layout-aside.ts +10 -6
- package/packages/layout-body/src/layout-body.ts +28 -15
- package/packages/list/src/list.ts +149 -55
- package/packages/menu/src/menu.ts +2 -2
- package/packages/modal/src/modal.ts +83 -19
- package/packages/scrollbar/src/scrollbar.ts +101 -19
- package/packages/tabs/src/tabs.ts +22 -9
- package/packages/tree/src/tree.ts +508 -65
- package/packages/ui/src/utils.ts +4 -0
- package/styles/components/drawer.scss +13 -6
- package/styles/components/list.scss +35 -10
- package/styles/components/modal.scss +4 -0
- package/styles/components/tree.scss +76 -0
- package/types/components/card.d.ts +10 -1
- package/types/components/drawer.d.ts +20 -0
- package/types/components/gantt-module/gantt-view.d.ts +24 -1
- package/types/components/gantt.d.ts +2 -0
- package/types/components/layout-aside.d.ts +10 -1
- package/types/components/layout-body.d.ts +10 -1
- package/types/components/list.d.ts +13 -2
- package/types/components/modal.d.ts +20 -0
- package/types/components/scrollbar.d.ts +16 -2
- package/types/components/table.d.ts +80 -6
- package/types/components/tabs.d.ts +10 -1
- package/types/components/tree.d.ts +35 -2
- /package/es/icon/{iconfont.1791880407207.ttf → iconfont.1792034961185.ttf} +0 -0
- /package/es/icon/{iconfont.1791880407207.woff → iconfont.1792034961185.woff} +0 -0
- /package/es/icon/{iconfont.1791880407207.woff2 → iconfont.1792034961185.woff2} +0 -0
- /package/es/{iconfont.1791880407207.ttf → iconfont.1792034961185.ttf} +0 -0
- /package/es/{iconfont.1791880407207.woff → iconfont.1792034961185.woff} +0 -0
- /package/es/{iconfont.1791880407207.woff2 → iconfont.1792034961185.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1791880407207.ttf → iconfont.1792034961185.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1791880407207.woff → iconfont.1792034961185.woff} +0 -0
- /package/lib/icon/style/{iconfont.1791880407207.woff2 → iconfont.1792034961185.woff2} +0 -0
- /package/lib/{iconfont.1791880407207.ttf → iconfont.1792034961185.ttf} +0 -0
- /package/lib/{iconfont.1791880407207.woff → iconfont.1792034961185.woff} +0 -0
- /package/lib/{iconfont.1791880407207.woff2 → iconfont.1792034961185.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,17 @@ function createInternalData (): TreeInternalData {
|
|
|
552
584
|
treeExpandedMaps: {},
|
|
553
585
|
treeExpandLazyLoadedMaps: {},
|
|
554
586
|
|
|
555
|
-
|
|
587
|
+
// resizeObserver: undefined,
|
|
588
|
+
|
|
589
|
+
// 滚动条
|
|
590
|
+
// scrollObserver: undefined,
|
|
591
|
+
// isThumbDrag: false,
|
|
592
|
+
thumbDragOffset: 0,
|
|
593
|
+
yThumbTop: 0,
|
|
594
|
+
xThumbLeft: 0,
|
|
556
595
|
lastScrollTop: 0,
|
|
596
|
+
lastScrollLeft: 0,
|
|
597
|
+
|
|
557
598
|
scrollYStore: {
|
|
558
599
|
startIndex: 0,
|
|
559
600
|
endIndex: 0,
|
|
@@ -574,32 +615,6 @@ function createInternalData (): TreeInternalData {
|
|
|
574
615
|
}
|
|
575
616
|
}
|
|
576
617
|
|
|
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
618
|
export default /* define-vxe-component start */ defineVxeComponent({
|
|
604
619
|
name: 'VxeTree',
|
|
605
620
|
mixins: [
|
|
@@ -732,7 +747,12 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
732
747
|
type: String as PropType<VxeTreePropTypes.Size>,
|
|
733
748
|
default: () => getConfig().tree.size || getConfig().size
|
|
734
749
|
},
|
|
735
|
-
virtualYConfig: Object as PropType<VxeTreePropTypes.VirtualYConfig
|
|
750
|
+
virtualYConfig: Object as PropType<VxeTreePropTypes.VirtualYConfig>,
|
|
751
|
+
useScrollbar: {
|
|
752
|
+
type: Boolean as PropType<VxeTreePropTypes.UseScrollbar>,
|
|
753
|
+
default: () => getDefaultConfig(getConfig().tree.useScrollbar, getConfig().useScrollbar)
|
|
754
|
+
},
|
|
755
|
+
scrollbarConfig: Object as PropType<VxeTreePropTypes.ScrollbarConfig>
|
|
736
756
|
},
|
|
737
757
|
provide () {
|
|
738
758
|
const $xeTree = this
|
|
@@ -751,7 +771,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
751
771
|
reactData,
|
|
752
772
|
crossTreeDragNodeInfo: crossTreeDragNodeGlobal,
|
|
753
773
|
|
|
754
|
-
|
|
774
|
+
reFlag: 0,
|
|
755
775
|
dataFlag: 0
|
|
756
776
|
}
|
|
757
777
|
},
|
|
@@ -872,6 +892,18 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
872
892
|
|
|
873
893
|
return Object.assign({}, getConfig().tree.menuConfig, props.menuConfig)
|
|
874
894
|
},
|
|
895
|
+
computeWrapperStyles () {
|
|
896
|
+
const $xeTree = this
|
|
897
|
+
|
|
898
|
+
const barWidth = $xeTree.computeScrollYWidth
|
|
899
|
+
const barHeight = $xeTree.computeScrollXHeight
|
|
900
|
+
const stys: VxeComponentStyleType = {}
|
|
901
|
+
if (barWidth || barHeight) {
|
|
902
|
+
stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(barWidth || barHeight)
|
|
903
|
+
stys['--vxe-ui-scrollbar-x-height'] = toCssUnit(barHeight || barWidth)
|
|
904
|
+
}
|
|
905
|
+
return stys
|
|
906
|
+
},
|
|
875
907
|
computeTreeStyle () {
|
|
876
908
|
const $xeTree = this
|
|
877
909
|
const props = $xeTree
|
|
@@ -881,7 +913,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
881
913
|
const { customHeight, customMinHeight, customMaxHeight } = reactData
|
|
882
914
|
const checkboxOpts = $xeTree.computeCheckboxOpts
|
|
883
915
|
const { nodeStyle } = checkboxOpts
|
|
884
|
-
const stys:
|
|
916
|
+
const stys: VxeComponentStyleType = {}
|
|
885
917
|
if (customHeight) {
|
|
886
918
|
stys.height = toCssUnit(customHeight)
|
|
887
919
|
}
|
|
@@ -910,6 +942,100 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
910
942
|
const props = $xeTree
|
|
911
943
|
|
|
912
944
|
return Object.assign({}, getConfig().tree.filterConfig, props.filterConfig)
|
|
945
|
+
},
|
|
946
|
+
computeScrollbarOpts () {
|
|
947
|
+
const $xeTree = this
|
|
948
|
+
const props = $xeTree
|
|
949
|
+
|
|
950
|
+
return Object.assign({}, getConfig().tree.scrollbarConfig, props.scrollbarConfig)
|
|
951
|
+
},
|
|
952
|
+
computeScrollbarXOpts () {
|
|
953
|
+
const $xeTree = this
|
|
954
|
+
|
|
955
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts as VxeTreePropTypes.ScrollbarConfig
|
|
956
|
+
return Object.assign({}, getConfig().scrollbar.xConfig, scrollbarOpts.xConfig, {
|
|
957
|
+
visible: false
|
|
958
|
+
})
|
|
959
|
+
},
|
|
960
|
+
computeScrollbarYOpts () {
|
|
961
|
+
const $xeTree = this
|
|
962
|
+
|
|
963
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts as VxeTreePropTypes.ScrollbarConfig
|
|
964
|
+
return Object.assign({}, getConfig().scrollbar.yConfig, scrollbarOpts.yConfig)
|
|
965
|
+
},
|
|
966
|
+
computeScrollXHeight () {
|
|
967
|
+
const $xeTree = this
|
|
968
|
+
|
|
969
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts as VxeTreePropTypes.ScrollbarConfig
|
|
970
|
+
const scrollbarXOpts = $xeTree.computeScrollbarXOpts as VxeScrollbarPropTypes.XConfig
|
|
971
|
+
return getDefaultConfig(getDefaultConfig(scrollbarXOpts.height, scrollbarOpts.height), getConfig().scrollbar.height)
|
|
972
|
+
},
|
|
973
|
+
computeScrollYWidth () {
|
|
974
|
+
const $xeTree = this
|
|
975
|
+
|
|
976
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts as VxeTreePropTypes.ScrollbarConfig
|
|
977
|
+
const scrollbarYOpts = $xeTree.computeScrollbarYOpts as VxeScrollbarPropTypes.YConfig
|
|
978
|
+
return getDefaultConfig(getDefaultConfig(scrollbarYOpts.width, scrollbarOpts.width), getConfig().scrollbar.width)
|
|
979
|
+
},
|
|
980
|
+
computeScrollXVisible () {
|
|
981
|
+
const $xeTree = this
|
|
982
|
+
|
|
983
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts as VxeTreePropTypes.ScrollbarConfig
|
|
984
|
+
const scrollbarXOpts = $xeTree.computeScrollbarXOpts as VxeScrollbarPropTypes.XConfig
|
|
985
|
+
return getDefaultConfig(scrollbarXOpts.visible, scrollbarOpts.visible)
|
|
986
|
+
},
|
|
987
|
+
computeScrollYVisible () {
|
|
988
|
+
const $xeTree = this
|
|
989
|
+
|
|
990
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts as VxeTreePropTypes.ScrollbarConfig
|
|
991
|
+
const scrollbarYOpts = $xeTree.computeScrollbarYOpts as VxeScrollbarPropTypes.YConfig
|
|
992
|
+
return getDefaultConfig(scrollbarYOpts.visible, scrollbarOpts.visible)
|
|
993
|
+
},
|
|
994
|
+
computeScrollXAutoHide () {
|
|
995
|
+
const $xeTree = this
|
|
996
|
+
|
|
997
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts as VxeTreePropTypes.ScrollbarConfig
|
|
998
|
+
const scrollbarXOpts = $xeTree.computeScrollbarXOpts as VxeScrollbarPropTypes.XConfig
|
|
999
|
+
return getDefaultConfig(getDefaultConfig(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide)
|
|
1000
|
+
},
|
|
1001
|
+
computeScrollYAutoHide () {
|
|
1002
|
+
const $xeTree = this
|
|
1003
|
+
|
|
1004
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts as VxeTreePropTypes.ScrollbarConfig
|
|
1005
|
+
const scrollbarYOpts = $xeTree.computeScrollbarYOpts as VxeScrollbarPropTypes.YConfig
|
|
1006
|
+
return getDefaultConfig(getDefaultConfig(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide)
|
|
1007
|
+
},
|
|
1008
|
+
computeScrollbarWrapperClss () {
|
|
1009
|
+
const $xeTree = this
|
|
1010
|
+
const reactData = ($xeTree as any).reactData as TreeReactData
|
|
1011
|
+
|
|
1012
|
+
const { yThumbHeight, xThumbWidth } = reactData
|
|
1013
|
+
const scrollbarXToTop = $xeTree.computeScrollbarXToTop
|
|
1014
|
+
const scrollbarYToLeft = $xeTree.computeScrollbarYToLeft
|
|
1015
|
+
const scrollXVisible = $xeTree.computeScrollXVisible
|
|
1016
|
+
const scrollYVisible = $xeTree.computeScrollYVisible
|
|
1017
|
+
return domUtils.buildClass([
|
|
1018
|
+
'vxe-scrollbar is--virtual',
|
|
1019
|
+
`ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}`,
|
|
1020
|
+
`ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}`,
|
|
1021
|
+
`sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`,
|
|
1022
|
+
`sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`
|
|
1023
|
+
], {
|
|
1024
|
+
'overflow-y': yThumbHeight,
|
|
1025
|
+
'overflow-x': xThumbWidth
|
|
1026
|
+
})
|
|
1027
|
+
},
|
|
1028
|
+
computeScrollbarXToTop () {
|
|
1029
|
+
const $xeTree = this
|
|
1030
|
+
|
|
1031
|
+
const scrollbarXOpts = $xeTree.computeScrollbarXOpts as VxeScrollbarPropTypes.XConfig
|
|
1032
|
+
return scrollbarXOpts.position === 'top'
|
|
1033
|
+
},
|
|
1034
|
+
computeScrollbarYToLeft () {
|
|
1035
|
+
const $xeTree = this
|
|
1036
|
+
|
|
1037
|
+
const scrollbarYOpts = $xeTree.computeScrollbarYOpts as VxeScrollbarPropTypes.YConfig
|
|
1038
|
+
return scrollbarYOpts.position === 'left'
|
|
913
1039
|
}
|
|
914
1040
|
},
|
|
915
1041
|
methods: {
|
|
@@ -1562,6 +1688,12 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1562
1688
|
}
|
|
1563
1689
|
})
|
|
1564
1690
|
},
|
|
1691
|
+
updateScrollbar () {
|
|
1692
|
+
const $xeTree = this
|
|
1693
|
+
|
|
1694
|
+
$xeTree.updateThumbSize()
|
|
1695
|
+
$xeTree.updateThumbOffset()
|
|
1696
|
+
},
|
|
1565
1697
|
/**
|
|
1566
1698
|
* 重新计算列表
|
|
1567
1699
|
*/
|
|
@@ -1587,6 +1719,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1587
1719
|
const parentPaddingSize = getPaddingTopBottomSize(parentEl)
|
|
1588
1720
|
reactData.parentHeight = Math.max(headHeight + footHeight + rowHeight, parentEl.clientHeight - parentPaddingSize - headHeight - footHeight)
|
|
1589
1721
|
}
|
|
1722
|
+
$xeTree.updateScrollbar()
|
|
1590
1723
|
$xeTree.updateHeight()
|
|
1591
1724
|
return $xeTree.computeScrollLoad().then(() => {
|
|
1592
1725
|
$xeTree.updateHeight()
|
|
@@ -1634,6 +1767,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
1634
1767
|
const scrollLeft = scrollBodyElem.scrollLeft
|
|
1635
1768
|
const isX = scrollLeft !== internalData.lastScrollLeft
|
|
1636
1769
|
const isY = scrollTop !== internalData.lastScrollTop
|
|
1770
|
+
$xeTree.updateThumbOffset()
|
|
1637
1771
|
internalData.lastScrollTop = scrollTop
|
|
1638
1772
|
internalData.lastScrollLeft = scrollLeft
|
|
1639
1773
|
if (reactData.scrollYLoad) {
|
|
@@ -2521,15 +2655,6 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
2521
2655
|
$xeTree.emitRadioMode(value)
|
|
2522
2656
|
$xeTree.dispatchEvent('radio-change', { node, value, checked: isChecked }, evnt)
|
|
2523
2657
|
},
|
|
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
2658
|
reloadData (data: any[]) {
|
|
2534
2659
|
const $xeTree = this
|
|
2535
2660
|
|
|
@@ -3325,6 +3450,201 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
3325
3450
|
}
|
|
3326
3451
|
},
|
|
3327
3452
|
|
|
3453
|
+
// 滚动条
|
|
3454
|
+
updateThumbSize () {
|
|
3455
|
+
const $xeTree = this
|
|
3456
|
+
const reactData = $xeTree.reactData
|
|
3457
|
+
|
|
3458
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
|
|
3459
|
+
if (!viewEl) {
|
|
3460
|
+
return
|
|
3461
|
+
}
|
|
3462
|
+
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
3463
|
+
return
|
|
3464
|
+
}
|
|
3465
|
+
const trackXEl = $xeTree.$refs.refTrackXElem as HTMLDivElement
|
|
3466
|
+
const xThumbWidth = trackXEl ? getThumbSize(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0
|
|
3467
|
+
const thumbXElem = $xeTree.$refs.refThumbXElem as HTMLDivElement
|
|
3468
|
+
if (thumbXElem) {
|
|
3469
|
+
thumbXElem.style.width = xThumbWidth + 'px'
|
|
3470
|
+
}
|
|
3471
|
+
reactData.xThumbWidth = xThumbWidth
|
|
3472
|
+
|
|
3473
|
+
const trackYEl = $xeTree.$refs.refTrackYElem as HTMLDivElement
|
|
3474
|
+
|
|
3475
|
+
const yThumbHeight = trackYEl ? getThumbSize(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0
|
|
3476
|
+
const thumbYElem = $xeTree.$refs.refThumbYElem as HTMLDivElement
|
|
3477
|
+
if (thumbYElem) {
|
|
3478
|
+
thumbYElem.style.height = yThumbHeight + 'px'
|
|
3479
|
+
}
|
|
3480
|
+
reactData.yThumbHeight = yThumbHeight
|
|
3481
|
+
},
|
|
3482
|
+
updateThumbOffset () {
|
|
3483
|
+
const $xeTree = this
|
|
3484
|
+
const reactData = $xeTree.reactData
|
|
3485
|
+
const internalData = $xeTree.internalData
|
|
3486
|
+
|
|
3487
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
|
|
3488
|
+
if (!viewEl) {
|
|
3489
|
+
return
|
|
3490
|
+
}
|
|
3491
|
+
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
3492
|
+
return
|
|
3493
|
+
}
|
|
3494
|
+
const { xThumbWidth, yThumbHeight } = reactData
|
|
3495
|
+
const trackXEl = $xeTree.$refs.refTrackXElem as HTMLDivElement
|
|
3496
|
+
const thumbXElem = $xeTree.$refs.refThumbXElem as HTMLDivElement
|
|
3497
|
+
const xThumbLeft = trackXEl && xThumbWidth ? getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0
|
|
3498
|
+
internalData.xThumbLeft = xThumbLeft
|
|
3499
|
+
if (thumbXElem && xThumbWidth) {
|
|
3500
|
+
thumbXElem.style.width = xThumbWidth + 'px'
|
|
3501
|
+
thumbXElem.style.transform = `translateX(${xThumbLeft}px)`
|
|
3502
|
+
}
|
|
3503
|
+
|
|
3504
|
+
const trackYEl = $xeTree.$refs.refTrackYElem as HTMLDivElement
|
|
3505
|
+
const thumbYElem = $xeTree.$refs.refThumbYElem as HTMLDivElement
|
|
3506
|
+
const yThumbTop = trackYEl && yThumbHeight ? getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0
|
|
3507
|
+
internalData.yThumbTop = yThumbTop
|
|
3508
|
+
if (thumbYElem && yThumbHeight) {
|
|
3509
|
+
thumbYElem.style.height = yThumbHeight + 'px'
|
|
3510
|
+
thumbYElem.style.transform = `translateY(${yThumbTop}px)`
|
|
3511
|
+
}
|
|
3512
|
+
},
|
|
3513
|
+
clickTrackXEvent (evnt: MouseEvent) {
|
|
3514
|
+
const $xeTree = this
|
|
3515
|
+
const reactData = $xeTree.reactData
|
|
3516
|
+
|
|
3517
|
+
const trackEl = evnt.currentTarget as HTMLDivElement
|
|
3518
|
+
if (trackEl !== evnt.target) {
|
|
3519
|
+
return
|
|
3520
|
+
}
|
|
3521
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
|
|
3522
|
+
if (!viewEl) {
|
|
3523
|
+
return
|
|
3524
|
+
}
|
|
3525
|
+
const { xThumbWidth } = reactData
|
|
3526
|
+
const trackRect = trackEl.getBoundingClientRect()
|
|
3527
|
+
viewEl.scrollTo({
|
|
3528
|
+
left: getScrollFromClick(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
|
|
3529
|
+
behavior: 'auto'
|
|
3530
|
+
})
|
|
3531
|
+
},
|
|
3532
|
+
clickTrackYEvent (evnt: MouseEvent) {
|
|
3533
|
+
const $xeTree = this
|
|
3534
|
+
const reactData = $xeTree.reactData
|
|
3535
|
+
|
|
3536
|
+
const trackEl = evnt.currentTarget as HTMLDivElement
|
|
3537
|
+
if (trackEl !== evnt.target) {
|
|
3538
|
+
return
|
|
3539
|
+
}
|
|
3540
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
|
|
3541
|
+
if (!viewEl) {
|
|
3542
|
+
return
|
|
3543
|
+
}
|
|
3544
|
+
const { yThumbHeight } = reactData
|
|
3545
|
+
const trackRect = trackEl.getBoundingClientRect()
|
|
3546
|
+
viewEl.scrollTo({
|
|
3547
|
+
top: getScrollFromClick(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
|
|
3548
|
+
behavior: 'auto'
|
|
3549
|
+
})
|
|
3550
|
+
},
|
|
3551
|
+
pointerdownThumbXEvent (evnt: PointerEvent) {
|
|
3552
|
+
const $xeTree = this
|
|
3553
|
+
const reactData = $xeTree.reactData
|
|
3554
|
+
const internalData = $xeTree.internalData
|
|
3555
|
+
|
|
3556
|
+
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
3557
|
+
internalData.isThumbDrag = true
|
|
3558
|
+
thumbEl.setPointerCapture(evnt.pointerId)
|
|
3559
|
+
|
|
3560
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
|
|
3561
|
+
if (!viewEl) {
|
|
3562
|
+
return
|
|
3563
|
+
}
|
|
3564
|
+
const { xThumbWidth } = reactData
|
|
3565
|
+
const trackEl = thumbEl.parentElement as HTMLDivElement
|
|
3566
|
+
const trackRect = trackEl.getBoundingClientRect()
|
|
3567
|
+
const pointerPosition = evnt.clientX - trackRect.left
|
|
3568
|
+
// 记录 thumb 的偏移
|
|
3569
|
+
const thumbOffset = getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth)
|
|
3570
|
+
internalData.thumbDragOffset = pointerPosition - thumbOffset
|
|
3571
|
+
},
|
|
3572
|
+
pointermoveThumbXEvent (evnt: PointerEvent) {
|
|
3573
|
+
const $xeTree = this
|
|
3574
|
+
const reactData = $xeTree.reactData
|
|
3575
|
+
const internalData = $xeTree.internalData
|
|
3576
|
+
|
|
3577
|
+
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
3578
|
+
if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
|
|
3579
|
+
return
|
|
3580
|
+
}
|
|
3581
|
+
const { isThumbDrag, thumbDragOffset } = internalData
|
|
3582
|
+
if (isThumbDrag) {
|
|
3583
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
|
|
3584
|
+
if (!viewEl) {
|
|
3585
|
+
return
|
|
3586
|
+
}
|
|
3587
|
+
const { xThumbWidth } = reactData
|
|
3588
|
+
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
3589
|
+
const trackEl = thumbEl.parentElement as HTMLDivElement
|
|
3590
|
+
const trackRect = trackEl.getBoundingClientRect()
|
|
3591
|
+
// 更新偏移
|
|
3592
|
+
viewEl.scrollLeft = getScrollFromDrag(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth)
|
|
3593
|
+
}
|
|
3594
|
+
},
|
|
3595
|
+
cleatPointerThumbEvent (evnt: PointerEvent) {
|
|
3596
|
+
const $xeTree = this
|
|
3597
|
+
const internalData = $xeTree.internalData
|
|
3598
|
+
|
|
3599
|
+
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
3600
|
+
thumbEl.releasePointerCapture(evnt.pointerId)
|
|
3601
|
+
internalData.isThumbDrag = false
|
|
3602
|
+
},
|
|
3603
|
+
pointerdownThumbYEvent (evnt: PointerEvent) {
|
|
3604
|
+
const $xeTree = this
|
|
3605
|
+
const reactData = $xeTree.reactData
|
|
3606
|
+
const internalData = $xeTree.internalData
|
|
3607
|
+
|
|
3608
|
+
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
3609
|
+
internalData.isThumbDrag = true
|
|
3610
|
+
thumbEl.setPointerCapture(evnt.pointerId)
|
|
3611
|
+
|
|
3612
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
|
|
3613
|
+
if (!viewEl) {
|
|
3614
|
+
return
|
|
3615
|
+
}
|
|
3616
|
+
const { yThumbHeight } = reactData
|
|
3617
|
+
const trackEl = thumbEl.parentElement as HTMLDivElement
|
|
3618
|
+
const trackRect = trackEl.getBoundingClientRect()
|
|
3619
|
+
const pointerPosition = evnt.clientY - trackRect.top
|
|
3620
|
+
// 记录 thumb 的偏移
|
|
3621
|
+
const thumbOffset = getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight)
|
|
3622
|
+
internalData.thumbDragOffset = pointerPosition - thumbOffset
|
|
3623
|
+
},
|
|
3624
|
+
pointermoveThumbYEvent (evnt: PointerEvent) {
|
|
3625
|
+
const $xeTree = this
|
|
3626
|
+
const reactData = $xeTree.reactData
|
|
3627
|
+
const internalData = $xeTree.internalData
|
|
3628
|
+
|
|
3629
|
+
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
3630
|
+
if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
|
|
3631
|
+
return
|
|
3632
|
+
}
|
|
3633
|
+
const { isThumbDrag, thumbDragOffset } = internalData
|
|
3634
|
+
if (isThumbDrag) {
|
|
3635
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper as HTMLDivElement
|
|
3636
|
+
if (!viewEl) {
|
|
3637
|
+
return
|
|
3638
|
+
}
|
|
3639
|
+
const { yThumbHeight } = reactData
|
|
3640
|
+
const thumbEl = evnt.currentTarget as HTMLDivElement
|
|
3641
|
+
const trackEl = thumbEl.parentElement as HTMLDivElement
|
|
3642
|
+
const trackRect = trackEl.getBoundingClientRect()
|
|
3643
|
+
// 更新偏移
|
|
3644
|
+
viewEl.scrollTop = getScrollFromDrag(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight)
|
|
3645
|
+
}
|
|
3646
|
+
},
|
|
3647
|
+
|
|
3328
3648
|
//
|
|
3329
3649
|
// Render
|
|
3330
3650
|
//
|
|
@@ -3690,13 +4010,14 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
3690
4010
|
const slots = $xeTree.$scopedSlots
|
|
3691
4011
|
const reactData = $xeTree.reactData
|
|
3692
4012
|
|
|
3693
|
-
const { loading, trigger, showLine } = props
|
|
3694
|
-
const { bodyHeight, topSpaceHeight, treeList, tooltipStore } = reactData
|
|
4013
|
+
const { loading, trigger, showLine, useScrollbar } = props
|
|
4014
|
+
const { bodyHeight, topSpaceHeight, treeList, tooltipStore, xThumbWidth, yThumbHeight } = reactData
|
|
3695
4015
|
const vSize = $xeTree.computeSize
|
|
3696
4016
|
const radioOpts = $xeTree.computeRadioOpts
|
|
3697
4017
|
const checkboxOpts = $xeTree.computeCheckboxOpts
|
|
3698
4018
|
const loadingOpts = $xeTree.computeLoadingOpts
|
|
3699
4019
|
const isNodeHover = $xeTree.computeIsNodeHover
|
|
4020
|
+
const wrapperStyles = $xeTree.computeWrapperStyles
|
|
3700
4021
|
const treeStyle = $xeTree.computeTreeStyle
|
|
3701
4022
|
const dragOpts = $xeTree.computeDragOpts
|
|
3702
4023
|
const tooltipOpts = $xeTree.computeTooltipOpts
|
|
@@ -3704,6 +4025,14 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
3704
4025
|
const headerSlot = slots.header
|
|
3705
4026
|
const footerSlot = slots.footer
|
|
3706
4027
|
const tooltipSlot = slots.tooltip
|
|
4028
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts
|
|
4029
|
+
const scrollXVisible = $xeTree.computeScrollXVisible
|
|
4030
|
+
const scrollYVisible = $xeTree.computeScrollYVisible
|
|
4031
|
+
const scrollbarXToTop = $xeTree.computeScrollbarXToTop
|
|
4032
|
+
const scrollbarYToLeft = $xeTree.computeScrollbarYToLeft
|
|
4033
|
+
const scrollXAutoHide = $xeTree.computeScrollXAutoHide
|
|
4034
|
+
const scrollYAutoHide = $xeTree.computeScrollYAutoHide
|
|
4035
|
+
const scrollbarWrapperClss = $xeTree.computeScrollbarWrapperClss
|
|
3707
4036
|
|
|
3708
4037
|
const teOns: {
|
|
3709
4038
|
dragover?: (...args: any[]) => void
|
|
@@ -3714,15 +4043,29 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
3714
4043
|
|
|
3715
4044
|
return h('div', {
|
|
3716
4045
|
ref: 'refElem',
|
|
3717
|
-
class: [
|
|
3718
|
-
|
|
3719
|
-
'
|
|
3720
|
-
'
|
|
3721
|
-
'
|
|
3722
|
-
'
|
|
3723
|
-
|
|
3724
|
-
|
|
3725
|
-
|
|
4046
|
+
class: [
|
|
4047
|
+
'vxe-tree',
|
|
4048
|
+
useScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '',
|
|
4049
|
+
useScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '',
|
|
4050
|
+
useScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '',
|
|
4051
|
+
useScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '',
|
|
4052
|
+
{
|
|
4053
|
+
[`size--${vSize}`]: vSize,
|
|
4054
|
+
'show--line': showLine,
|
|
4055
|
+
'is--virtual-scrollbar': useScrollbar,
|
|
4056
|
+
'ov-padding': useScrollbar && scrollbarOpts.padding,
|
|
4057
|
+
'ov-x--auto-hide': useScrollbar && scrollXAutoHide,
|
|
4058
|
+
'ov-y--auto-hide': useScrollbar && scrollYAutoHide,
|
|
4059
|
+
'overflow-y': yThumbHeight,
|
|
4060
|
+
'overflow-x': xThumbWidth,
|
|
4061
|
+
'checkbox--highlight': checkboxOpts.highlight,
|
|
4062
|
+
'radio--highlight': radioOpts.highlight,
|
|
4063
|
+
'node--hover': isNodeHover,
|
|
4064
|
+
'node--trigger': trigger === 'node',
|
|
4065
|
+
'is--loading': loading
|
|
4066
|
+
}
|
|
4067
|
+
],
|
|
4068
|
+
style: wrapperStyles,
|
|
3726
4069
|
on: teOns
|
|
3727
4070
|
}, [
|
|
3728
4071
|
headerSlot
|
|
@@ -3759,6 +4102,57 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
3759
4102
|
class: 'vxe-tree--footer-wrapper'
|
|
3760
4103
|
}, footerSlot({ $tree: $xeTree }))
|
|
3761
4104
|
: renderEmptyElement($xeTree),
|
|
4105
|
+
/**
|
|
4106
|
+
* 滚动条
|
|
4107
|
+
*/
|
|
4108
|
+
useScrollbar
|
|
4109
|
+
? h('div', {
|
|
4110
|
+
class: scrollbarWrapperClss
|
|
4111
|
+
}, [
|
|
4112
|
+
scrollXVisible === false
|
|
4113
|
+
? renderEmptyElement($xeTree)
|
|
4114
|
+
: h('div', {
|
|
4115
|
+
ref: 'refTrackXElem',
|
|
4116
|
+
class: 'vxe-scrollbar--track-x',
|
|
4117
|
+
on: {
|
|
4118
|
+
click: $xeTree.clickTrackXEvent
|
|
4119
|
+
}
|
|
4120
|
+
}, [
|
|
4121
|
+
h('div', {
|
|
4122
|
+
ref: 'refThumbXElem',
|
|
4123
|
+
class: 'vxe-scrollbar--thumb-x',
|
|
4124
|
+
on: {
|
|
4125
|
+
pointerdown: $xeTree.pointerdownThumbXEvent,
|
|
4126
|
+
pointermove: $xeTree.pointermoveThumbXEvent,
|
|
4127
|
+
pointerup: $xeTree.cleatPointerThumbEvent,
|
|
4128
|
+
pointercancel: $xeTree.cleatPointerThumbEvent,
|
|
4129
|
+
lostpointercapture: $xeTree.cleatPointerThumbEvent
|
|
4130
|
+
}
|
|
4131
|
+
})
|
|
4132
|
+
]),
|
|
4133
|
+
scrollYVisible === false
|
|
4134
|
+
? renderEmptyElement($xeTree)
|
|
4135
|
+
: h('div', {
|
|
4136
|
+
ref: 'refTrackYElem',
|
|
4137
|
+
class: 'vxe-scrollbar--track-y',
|
|
4138
|
+
on: {
|
|
4139
|
+
click: $xeTree.clickTrackYEvent
|
|
4140
|
+
}
|
|
4141
|
+
}, [
|
|
4142
|
+
h('div', {
|
|
4143
|
+
ref: 'refThumbYElem',
|
|
4144
|
+
class: 'vxe-scrollbar--thumb-y',
|
|
4145
|
+
on: {
|
|
4146
|
+
pointerdown: $xeTree.pointerdownThumbYEvent,
|
|
4147
|
+
pointermove: $xeTree.pointermoveThumbYEvent,
|
|
4148
|
+
pointerup: $xeTree.cleatPointerThumbEvent,
|
|
4149
|
+
pointercancel: $xeTree.cleatPointerThumbEvent,
|
|
4150
|
+
lostpointercapture: $xeTree.cleatPointerThumbEvent
|
|
4151
|
+
}
|
|
4152
|
+
})
|
|
4153
|
+
])
|
|
4154
|
+
])
|
|
4155
|
+
: renderEmptyElement($xeTree),
|
|
3762
4156
|
/**
|
|
3763
4157
|
* 拖拽提示
|
|
3764
4158
|
*/
|
|
@@ -3857,22 +4251,53 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
3857
4251
|
height () {
|
|
3858
4252
|
const $xeTree = this
|
|
3859
4253
|
|
|
3860
|
-
$xeTree.
|
|
4254
|
+
$xeTree.reFlag++
|
|
3861
4255
|
},
|
|
3862
4256
|
minHeight () {
|
|
3863
4257
|
const $xeTree = this
|
|
3864
4258
|
|
|
3865
|
-
$xeTree.
|
|
4259
|
+
$xeTree.reFlag++
|
|
3866
4260
|
},
|
|
3867
4261
|
maxHeight () {
|
|
3868
4262
|
const $xeTree = this
|
|
3869
4263
|
|
|
3870
|
-
$xeTree.
|
|
4264
|
+
$xeTree.reFlag++
|
|
4265
|
+
},
|
|
4266
|
+
useScrollbar () {
|
|
4267
|
+
const $xeTree = this
|
|
4268
|
+
|
|
4269
|
+
$xeTree.reFlag++
|
|
4270
|
+
},
|
|
4271
|
+
computeScrollYWidth () {
|
|
4272
|
+
const $xeTree = this
|
|
4273
|
+
|
|
4274
|
+
$xeTree.reFlag++
|
|
4275
|
+
},
|
|
4276
|
+
computeScrollXHeight () {
|
|
4277
|
+
const $xeTree = this
|
|
4278
|
+
|
|
4279
|
+
$xeTree.reFlag++
|
|
4280
|
+
},
|
|
4281
|
+
computeScrollXVisible () {
|
|
4282
|
+
const $xeTree = this
|
|
4283
|
+
|
|
4284
|
+
$xeTree.$nextTick(() => {
|
|
4285
|
+
$xeTree.reFlag++
|
|
4286
|
+
})
|
|
4287
|
+
},
|
|
4288
|
+
computeScrollYVisible () {
|
|
4289
|
+
const $xeTree = this
|
|
4290
|
+
|
|
4291
|
+
$xeTree.$nextTick(() => {
|
|
4292
|
+
$xeTree.reFlag++
|
|
4293
|
+
})
|
|
3871
4294
|
},
|
|
3872
|
-
|
|
4295
|
+
reFlag () {
|
|
3873
4296
|
const $xeTree = this
|
|
3874
4297
|
|
|
3875
|
-
$xeTree.recalculate()
|
|
4298
|
+
$xeTree.recalculate().then(() => {
|
|
4299
|
+
$xeTree.recalculate()
|
|
4300
|
+
})
|
|
3876
4301
|
}
|
|
3877
4302
|
},
|
|
3878
4303
|
created () {
|
|
@@ -3890,7 +4315,7 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
3890
4315
|
const props = $xeTree
|
|
3891
4316
|
const internalData = $xeTree.internalData
|
|
3892
4317
|
|
|
3893
|
-
const { transform, drag, menuConfig, showOverflow, lazy, loadMethod } = props
|
|
4318
|
+
const { transform, drag, menuConfig, showOverflow, lazy, loadMethod, autoResize, useScrollbar } = props
|
|
3894
4319
|
const dragOpts = $xeTree.computeDragOpts
|
|
3895
4320
|
if (!showOverflow) {
|
|
3896
4321
|
errLog('vxe.error.errProp', ['show-overflow=false', 'show-overflow=true'])
|
|
@@ -3911,12 +4336,25 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
3911
4336
|
if (menuConfig && !VxeUIContextMenu) {
|
|
3912
4337
|
errLog('vxe.error.reqComp', ['vxe-context-menu'])
|
|
3913
4338
|
}
|
|
3914
|
-
|
|
3915
|
-
|
|
4339
|
+
const el = $xeTree.$refs.refElem as HTMLDivElement
|
|
4340
|
+
if (useScrollbar) {
|
|
4341
|
+
const viewInnerEl = $xeTree.$refs.refVirtualBody as HTMLDivElement
|
|
4342
|
+
const scrollObserver = globalResize.create(() => {
|
|
4343
|
+
$xeTree.updateScrollbar()
|
|
4344
|
+
})
|
|
4345
|
+
if (el) {
|
|
4346
|
+
scrollObserver.observe(el)
|
|
4347
|
+
}
|
|
4348
|
+
if (viewInnerEl) {
|
|
4349
|
+
scrollObserver.observe(viewInnerEl)
|
|
4350
|
+
}
|
|
4351
|
+
internalData.scrollObserver = scrollObserver
|
|
4352
|
+
}
|
|
4353
|
+
if (autoResize) {
|
|
3916
4354
|
const parentEl = $xeTree.getParentElem()
|
|
3917
4355
|
const resizeObserver = globalResize.create(() => {
|
|
3918
4356
|
if (props.autoResize) {
|
|
3919
|
-
$xeTree.
|
|
4357
|
+
$xeTree.reFlag++
|
|
3920
4358
|
}
|
|
3921
4359
|
})
|
|
3922
4360
|
if (el) {
|
|
@@ -3928,18 +4366,23 @@ export default /* define-vxe-component start */ defineVxeComponent({
|
|
|
3928
4366
|
internalData.resizeObserver = resizeObserver
|
|
3929
4367
|
}
|
|
3930
4368
|
|
|
3931
|
-
$xeTree.
|
|
3932
|
-
globalEvents.on($xeTree, 'resize',
|
|
4369
|
+
$xeTree.reFlag++
|
|
4370
|
+
globalEvents.on($xeTree, 'resize', () => {
|
|
4371
|
+
$xeTree.reFlag++
|
|
4372
|
+
})
|
|
3933
4373
|
},
|
|
3934
4374
|
beforeDestroy () {
|
|
3935
4375
|
const $xeTree = this
|
|
3936
4376
|
const reactData = $xeTree.reactData
|
|
3937
4377
|
const internalData = $xeTree.internalData
|
|
3938
4378
|
|
|
3939
|
-
const { resizeObserver } = internalData
|
|
4379
|
+
const { scrollObserver, resizeObserver } = internalData
|
|
3940
4380
|
if (resizeObserver) {
|
|
3941
4381
|
resizeObserver.disconnect()
|
|
3942
4382
|
}
|
|
4383
|
+
if (scrollObserver) {
|
|
4384
|
+
scrollObserver.disconnect()
|
|
4385
|
+
}
|
|
3943
4386
|
globalEvents.off($xeTree, 'resize')
|
|
3944
4387
|
XEUtils.assign(reactData, createReactData())
|
|
3945
4388
|
XEUtils.assign(internalData, createInternalData())
|