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
package/es/tree/src/tree.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { defineVxeComponent } from '../../ui/src/comp';
|
|
2
2
|
import XEUtils from 'xe-utils';
|
|
3
|
-
import { VxeUI, createEvent, globalEvents, globalResize, renderEmptyElement, globalMixins } from '../../ui';
|
|
3
|
+
import { VxeUI, domUtils, createEvent, globalEvents, globalResize, renderEmptyElement, globalMixins } from '../../ui';
|
|
4
4
|
import { calcTreeLine, getItemCacheObj } from './util';
|
|
5
5
|
import { createComponentLog } from '../../ui/src/log';
|
|
6
6
|
import { getSlotVNs } from '../../ui/src/vn';
|
|
7
7
|
import { crossTreeDragNodeGlobal, getCrossTreeDragNodeInfo } from './store';
|
|
8
8
|
import { toCssUnit, isScale, getPaddingTopBottomSize, addClass, removeClass, getTpImg, hasControlKey, getEventTargetNode, hasClass } from '../../ui/src/dom';
|
|
9
|
-
import { isEnableConf, enModelValue, deModelValue, getText } from '../../ui/src/utils';
|
|
9
|
+
import { isEnableConf, enModelValue, deModelValue, getText, getDefaultConfig } from '../../ui/src/utils';
|
|
10
10
|
import { moveRowAnimateToTb, clearRowAnimate } from '../../ui/src/anime';
|
|
11
|
+
import { getThumbOffsetSize, getThumbSize, getScrollFromClick, getScrollFromDrag } from '../../scrollbar/src/util';
|
|
11
12
|
import VxeLoadingComponent from '../../loading';
|
|
12
13
|
import VxeTooltipComponent from '../../tooltip';
|
|
13
14
|
const { warnLog, errLog } = createComponentLog('tree');
|
|
@@ -498,6 +499,34 @@ function insertTreeNode($xeTree, newRecords, isAppend) {
|
|
|
498
499
|
nodeMaps[nodeid] = itemRest;
|
|
499
500
|
});
|
|
500
501
|
}
|
|
502
|
+
function createReactData() {
|
|
503
|
+
return {
|
|
504
|
+
parentHeight: 0,
|
|
505
|
+
customHeight: 0,
|
|
506
|
+
customMinHeight: 0,
|
|
507
|
+
customMaxHeight: 0,
|
|
508
|
+
currentNode: null,
|
|
509
|
+
scrollYLoad: false,
|
|
510
|
+
bodyHeight: 0,
|
|
511
|
+
topSpaceHeight: 0,
|
|
512
|
+
selectRadioKey: null,
|
|
513
|
+
treeList: [],
|
|
514
|
+
updateExpandedFlag: 1,
|
|
515
|
+
updateCheckboxFlag: 1,
|
|
516
|
+
// 滚动条
|
|
517
|
+
yThumbHeight: 0,
|
|
518
|
+
xThumbWidth: 0,
|
|
519
|
+
insertNodeFlag: 1,
|
|
520
|
+
removeNodeFlag: 1,
|
|
521
|
+
dragNode: null,
|
|
522
|
+
dragTipText: '',
|
|
523
|
+
isCrossDragNode: false,
|
|
524
|
+
tooltipStore: {
|
|
525
|
+
visible: false,
|
|
526
|
+
node: null
|
|
527
|
+
}
|
|
528
|
+
};
|
|
529
|
+
}
|
|
501
530
|
function createInternalData() {
|
|
502
531
|
return {
|
|
503
532
|
// initialized: false,
|
|
@@ -510,8 +539,15 @@ function createInternalData() {
|
|
|
510
539
|
indeterminateNodeMaps: {},
|
|
511
540
|
treeExpandedMaps: {},
|
|
512
541
|
treeExpandLazyLoadedMaps: {},
|
|
513
|
-
|
|
542
|
+
// resizeObserver: undefined,
|
|
543
|
+
// 滚动条
|
|
544
|
+
// scrollObserver: undefined,
|
|
545
|
+
// isThumbDrag: false,
|
|
546
|
+
thumbDragOffset: 0,
|
|
547
|
+
yThumbTop: 0,
|
|
548
|
+
xThumbLeft: 0,
|
|
514
549
|
lastScrollTop: 0,
|
|
550
|
+
lastScrollLeft: 0,
|
|
515
551
|
scrollYStore: {
|
|
516
552
|
startIndex: 0,
|
|
517
553
|
endIndex: 0,
|
|
@@ -528,31 +564,6 @@ function createInternalData() {
|
|
|
528
564
|
// hpTimeout: undefined
|
|
529
565
|
};
|
|
530
566
|
}
|
|
531
|
-
function createReactData() {
|
|
532
|
-
return {
|
|
533
|
-
parentHeight: 0,
|
|
534
|
-
customHeight: 0,
|
|
535
|
-
customMinHeight: 0,
|
|
536
|
-
customMaxHeight: 0,
|
|
537
|
-
currentNode: null,
|
|
538
|
-
scrollYLoad: false,
|
|
539
|
-
bodyHeight: 0,
|
|
540
|
-
topSpaceHeight: 0,
|
|
541
|
-
selectRadioKey: null,
|
|
542
|
-
treeList: [],
|
|
543
|
-
updateExpandedFlag: 1,
|
|
544
|
-
updateCheckboxFlag: 1,
|
|
545
|
-
insertNodeFlag: 1,
|
|
546
|
-
removeNodeFlag: 1,
|
|
547
|
-
dragNode: null,
|
|
548
|
-
dragTipText: '',
|
|
549
|
-
isCrossDragNode: false,
|
|
550
|
-
tooltipStore: {
|
|
551
|
-
visible: false,
|
|
552
|
-
node: null
|
|
553
|
-
}
|
|
554
|
-
};
|
|
555
|
-
}
|
|
556
567
|
export default {
|
|
557
568
|
name: 'VxeTree',
|
|
558
569
|
mixins: [
|
|
@@ -685,7 +696,12 @@ export default {
|
|
|
685
696
|
type: String,
|
|
686
697
|
default: () => getConfig().tree.size || getConfig().size
|
|
687
698
|
},
|
|
688
|
-
virtualYConfig: Object
|
|
699
|
+
virtualYConfig: Object,
|
|
700
|
+
useScrollbar: {
|
|
701
|
+
type: Boolean,
|
|
702
|
+
default: () => getDefaultConfig(getConfig().tree.useScrollbar, getConfig().useScrollbar)
|
|
703
|
+
},
|
|
704
|
+
scrollbarConfig: Object
|
|
689
705
|
},
|
|
690
706
|
provide() {
|
|
691
707
|
const $xeTree = this;
|
|
@@ -697,7 +713,7 @@ export default {
|
|
|
697
713
|
const xID = XEUtils.uniqueId();
|
|
698
714
|
const reactData = createReactData();
|
|
699
715
|
return Object.assign(Object.assign({}, {}), { xID,
|
|
700
|
-
reactData, crossTreeDragNodeInfo: crossTreeDragNodeGlobal,
|
|
716
|
+
reactData, crossTreeDragNodeInfo: crossTreeDragNodeGlobal, reFlag: 0, dataFlag: 0 });
|
|
701
717
|
},
|
|
702
718
|
computed: Object.assign(Object.assign({}, {}), { computeTitleField() {
|
|
703
719
|
const $xeTree = this;
|
|
@@ -795,6 +811,17 @@ export default {
|
|
|
795
811
|
const props = $xeTree;
|
|
796
812
|
return Object.assign({}, getConfig().tree.menuConfig, props.menuConfig);
|
|
797
813
|
},
|
|
814
|
+
computeWrapperStyles() {
|
|
815
|
+
const $xeTree = this;
|
|
816
|
+
const barWidth = $xeTree.computeScrollYWidth;
|
|
817
|
+
const barHeight = $xeTree.computeScrollXHeight;
|
|
818
|
+
const stys = {};
|
|
819
|
+
if (barWidth || barHeight) {
|
|
820
|
+
stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(barWidth || barHeight);
|
|
821
|
+
stys['--vxe-ui-scrollbar-x-height'] = toCssUnit(barHeight || barWidth);
|
|
822
|
+
}
|
|
823
|
+
return stys;
|
|
824
|
+
},
|
|
798
825
|
computeTreeStyle() {
|
|
799
826
|
const $xeTree = this;
|
|
800
827
|
const props = $xeTree;
|
|
@@ -831,6 +858,88 @@ export default {
|
|
|
831
858
|
const $xeTree = this;
|
|
832
859
|
const props = $xeTree;
|
|
833
860
|
return Object.assign({}, getConfig().tree.filterConfig, props.filterConfig);
|
|
861
|
+
},
|
|
862
|
+
computeScrollbarOpts() {
|
|
863
|
+
const $xeTree = this;
|
|
864
|
+
const props = $xeTree;
|
|
865
|
+
return Object.assign({}, getConfig().tree.scrollbarConfig, props.scrollbarConfig);
|
|
866
|
+
},
|
|
867
|
+
computeScrollbarXOpts() {
|
|
868
|
+
const $xeTree = this;
|
|
869
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts;
|
|
870
|
+
return Object.assign({}, getConfig().scrollbar.xConfig, scrollbarOpts.xConfig, {
|
|
871
|
+
visible: false
|
|
872
|
+
});
|
|
873
|
+
},
|
|
874
|
+
computeScrollbarYOpts() {
|
|
875
|
+
const $xeTree = this;
|
|
876
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts;
|
|
877
|
+
return Object.assign({}, getConfig().scrollbar.yConfig, scrollbarOpts.yConfig);
|
|
878
|
+
},
|
|
879
|
+
computeScrollXHeight() {
|
|
880
|
+
const $xeTree = this;
|
|
881
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts;
|
|
882
|
+
const scrollbarXOpts = $xeTree.computeScrollbarXOpts;
|
|
883
|
+
return getDefaultConfig(getDefaultConfig(scrollbarXOpts.height, scrollbarOpts.height), getConfig().scrollbar.height);
|
|
884
|
+
},
|
|
885
|
+
computeScrollYWidth() {
|
|
886
|
+
const $xeTree = this;
|
|
887
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts;
|
|
888
|
+
const scrollbarYOpts = $xeTree.computeScrollbarYOpts;
|
|
889
|
+
return getDefaultConfig(getDefaultConfig(scrollbarYOpts.width, scrollbarOpts.width), getConfig().scrollbar.width);
|
|
890
|
+
},
|
|
891
|
+
computeScrollXVisible() {
|
|
892
|
+
const $xeTree = this;
|
|
893
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts;
|
|
894
|
+
const scrollbarXOpts = $xeTree.computeScrollbarXOpts;
|
|
895
|
+
return getDefaultConfig(scrollbarXOpts.visible, scrollbarOpts.visible);
|
|
896
|
+
},
|
|
897
|
+
computeScrollYVisible() {
|
|
898
|
+
const $xeTree = this;
|
|
899
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts;
|
|
900
|
+
const scrollbarYOpts = $xeTree.computeScrollbarYOpts;
|
|
901
|
+
return getDefaultConfig(scrollbarYOpts.visible, scrollbarOpts.visible);
|
|
902
|
+
},
|
|
903
|
+
computeScrollXAutoHide() {
|
|
904
|
+
const $xeTree = this;
|
|
905
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts;
|
|
906
|
+
const scrollbarXOpts = $xeTree.computeScrollbarXOpts;
|
|
907
|
+
return getDefaultConfig(getDefaultConfig(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
|
|
908
|
+
},
|
|
909
|
+
computeScrollYAutoHide() {
|
|
910
|
+
const $xeTree = this;
|
|
911
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts;
|
|
912
|
+
const scrollbarYOpts = $xeTree.computeScrollbarYOpts;
|
|
913
|
+
return getDefaultConfig(getDefaultConfig(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), getConfig().scrollbar.autoHide);
|
|
914
|
+
},
|
|
915
|
+
computeScrollbarWrapperClss() {
|
|
916
|
+
const $xeTree = this;
|
|
917
|
+
const reactData = $xeTree.reactData;
|
|
918
|
+
const { yThumbHeight, xThumbWidth } = reactData;
|
|
919
|
+
const scrollbarXToTop = $xeTree.computeScrollbarXToTop;
|
|
920
|
+
const scrollbarYToLeft = $xeTree.computeScrollbarYToLeft;
|
|
921
|
+
const scrollXVisible = $xeTree.computeScrollXVisible;
|
|
922
|
+
const scrollYVisible = $xeTree.computeScrollYVisible;
|
|
923
|
+
return domUtils.buildClass([
|
|
924
|
+
'vxe-scrollbar is--virtual',
|
|
925
|
+
`ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}`,
|
|
926
|
+
`ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}`,
|
|
927
|
+
`sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`,
|
|
928
|
+
`sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`
|
|
929
|
+
], {
|
|
930
|
+
'overflow-y': yThumbHeight,
|
|
931
|
+
'overflow-x': xThumbWidth
|
|
932
|
+
});
|
|
933
|
+
},
|
|
934
|
+
computeScrollbarXToTop() {
|
|
935
|
+
const $xeTree = this;
|
|
936
|
+
const scrollbarXOpts = $xeTree.computeScrollbarXOpts;
|
|
937
|
+
return scrollbarXOpts.position === 'top';
|
|
938
|
+
},
|
|
939
|
+
computeScrollbarYToLeft() {
|
|
940
|
+
const $xeTree = this;
|
|
941
|
+
const scrollbarYOpts = $xeTree.computeScrollbarYOpts;
|
|
942
|
+
return scrollbarYOpts.position === 'left';
|
|
834
943
|
} }),
|
|
835
944
|
methods: {
|
|
836
945
|
//
|
|
@@ -1455,6 +1564,11 @@ export default {
|
|
|
1455
1564
|
}
|
|
1456
1565
|
});
|
|
1457
1566
|
},
|
|
1567
|
+
updateScrollbar() {
|
|
1568
|
+
const $xeTree = this;
|
|
1569
|
+
$xeTree.updateThumbSize();
|
|
1570
|
+
$xeTree.updateThumbOffset();
|
|
1571
|
+
},
|
|
1458
1572
|
/**
|
|
1459
1573
|
* 重新计算列表
|
|
1460
1574
|
*/
|
|
@@ -1479,6 +1593,7 @@ export default {
|
|
|
1479
1593
|
const parentPaddingSize = getPaddingTopBottomSize(parentEl);
|
|
1480
1594
|
reactData.parentHeight = Math.max(headHeight + footHeight + rowHeight, parentEl.clientHeight - parentPaddingSize - headHeight - footHeight);
|
|
1481
1595
|
}
|
|
1596
|
+
$xeTree.updateScrollbar();
|
|
1482
1597
|
$xeTree.updateHeight();
|
|
1483
1598
|
return $xeTree.computeScrollLoad().then(() => {
|
|
1484
1599
|
$xeTree.updateHeight();
|
|
@@ -1523,6 +1638,7 @@ export default {
|
|
|
1523
1638
|
const scrollLeft = scrollBodyElem.scrollLeft;
|
|
1524
1639
|
const isX = scrollLeft !== internalData.lastScrollLeft;
|
|
1525
1640
|
const isY = scrollTop !== internalData.lastScrollTop;
|
|
1641
|
+
$xeTree.updateThumbOffset();
|
|
1526
1642
|
internalData.lastScrollTop = scrollTop;
|
|
1527
1643
|
internalData.lastScrollLeft = scrollLeft;
|
|
1528
1644
|
if (reactData.scrollYLoad) {
|
|
@@ -2397,14 +2513,6 @@ export default {
|
|
|
2397
2513
|
$xeTree.emitRadioMode(value);
|
|
2398
2514
|
$xeTree.dispatchEvent('radio-change', { node, value, checked: isChecked }, evnt);
|
|
2399
2515
|
},
|
|
2400
|
-
handleGlobalResizeEvent() {
|
|
2401
|
-
const $xeTree = this;
|
|
2402
|
-
const el = $xeTree.$refs.refElem;
|
|
2403
|
-
if (!el || !el.clientWidth) {
|
|
2404
|
-
return;
|
|
2405
|
-
}
|
|
2406
|
-
$xeTree.recalculate();
|
|
2407
|
-
},
|
|
2408
2516
|
reloadData(data) {
|
|
2409
2517
|
const $xeTree = this;
|
|
2410
2518
|
return $xeTree.loadData(data || []);
|
|
@@ -3165,6 +3273,186 @@ export default {
|
|
|
3165
3273
|
}, evnt);
|
|
3166
3274
|
}
|
|
3167
3275
|
},
|
|
3276
|
+
// 滚动条
|
|
3277
|
+
updateThumbSize() {
|
|
3278
|
+
const $xeTree = this;
|
|
3279
|
+
const reactData = $xeTree.reactData;
|
|
3280
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper;
|
|
3281
|
+
if (!viewEl) {
|
|
3282
|
+
return;
|
|
3283
|
+
}
|
|
3284
|
+
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
3285
|
+
return;
|
|
3286
|
+
}
|
|
3287
|
+
const trackXEl = $xeTree.$refs.refTrackXElem;
|
|
3288
|
+
const xThumbWidth = trackXEl ? getThumbSize(viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth) : 0;
|
|
3289
|
+
const thumbXElem = $xeTree.$refs.refThumbXElem;
|
|
3290
|
+
if (thumbXElem) {
|
|
3291
|
+
thumbXElem.style.width = xThumbWidth + 'px';
|
|
3292
|
+
}
|
|
3293
|
+
reactData.xThumbWidth = xThumbWidth;
|
|
3294
|
+
const trackYEl = $xeTree.$refs.refTrackYElem;
|
|
3295
|
+
const yThumbHeight = trackYEl ? getThumbSize(viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight) : 0;
|
|
3296
|
+
const thumbYElem = $xeTree.$refs.refThumbYElem;
|
|
3297
|
+
if (thumbYElem) {
|
|
3298
|
+
thumbYElem.style.height = yThumbHeight + 'px';
|
|
3299
|
+
}
|
|
3300
|
+
reactData.yThumbHeight = yThumbHeight;
|
|
3301
|
+
},
|
|
3302
|
+
updateThumbOffset() {
|
|
3303
|
+
const $xeTree = this;
|
|
3304
|
+
const reactData = $xeTree.reactData;
|
|
3305
|
+
const internalData = $xeTree.internalData;
|
|
3306
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper;
|
|
3307
|
+
if (!viewEl) {
|
|
3308
|
+
return;
|
|
3309
|
+
}
|
|
3310
|
+
if (!viewEl.clientHeight || !viewEl.clientHeight) {
|
|
3311
|
+
return;
|
|
3312
|
+
}
|
|
3313
|
+
const { xThumbWidth, yThumbHeight } = reactData;
|
|
3314
|
+
const trackXEl = $xeTree.$refs.refTrackXElem;
|
|
3315
|
+
const thumbXElem = $xeTree.$refs.refThumbXElem;
|
|
3316
|
+
const xThumbLeft = trackXEl && xThumbWidth ? getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackXEl.clientWidth, xThumbWidth) : 0;
|
|
3317
|
+
internalData.xThumbLeft = xThumbLeft;
|
|
3318
|
+
if (thumbXElem && xThumbWidth) {
|
|
3319
|
+
thumbXElem.style.width = xThumbWidth + 'px';
|
|
3320
|
+
thumbXElem.style.transform = `translateX(${xThumbLeft}px)`;
|
|
3321
|
+
}
|
|
3322
|
+
const trackYEl = $xeTree.$refs.refTrackYElem;
|
|
3323
|
+
const thumbYElem = $xeTree.$refs.refThumbYElem;
|
|
3324
|
+
const yThumbTop = trackYEl && yThumbHeight ? getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackYEl.clientHeight, yThumbHeight) : 0;
|
|
3325
|
+
internalData.yThumbTop = yThumbTop;
|
|
3326
|
+
if (thumbYElem && yThumbHeight) {
|
|
3327
|
+
thumbYElem.style.height = yThumbHeight + 'px';
|
|
3328
|
+
thumbYElem.style.transform = `translateY(${yThumbTop}px)`;
|
|
3329
|
+
}
|
|
3330
|
+
},
|
|
3331
|
+
clickTrackXEvent(evnt) {
|
|
3332
|
+
const $xeTree = this;
|
|
3333
|
+
const reactData = $xeTree.reactData;
|
|
3334
|
+
const trackEl = evnt.currentTarget;
|
|
3335
|
+
if (trackEl !== evnt.target) {
|
|
3336
|
+
return;
|
|
3337
|
+
}
|
|
3338
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper;
|
|
3339
|
+
if (!viewEl) {
|
|
3340
|
+
return;
|
|
3341
|
+
}
|
|
3342
|
+
const { xThumbWidth } = reactData;
|
|
3343
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
3344
|
+
viewEl.scrollTo({
|
|
3345
|
+
left: getScrollFromClick(evnt.clientX - trackRect.left, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth),
|
|
3346
|
+
behavior: 'auto'
|
|
3347
|
+
});
|
|
3348
|
+
},
|
|
3349
|
+
clickTrackYEvent(evnt) {
|
|
3350
|
+
const $xeTree = this;
|
|
3351
|
+
const reactData = $xeTree.reactData;
|
|
3352
|
+
const trackEl = evnt.currentTarget;
|
|
3353
|
+
if (trackEl !== evnt.target) {
|
|
3354
|
+
return;
|
|
3355
|
+
}
|
|
3356
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper;
|
|
3357
|
+
if (!viewEl) {
|
|
3358
|
+
return;
|
|
3359
|
+
}
|
|
3360
|
+
const { yThumbHeight } = reactData;
|
|
3361
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
3362
|
+
viewEl.scrollTo({
|
|
3363
|
+
top: getScrollFromClick(evnt.clientY - trackRect.top, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight),
|
|
3364
|
+
behavior: 'auto'
|
|
3365
|
+
});
|
|
3366
|
+
},
|
|
3367
|
+
pointerdownThumbXEvent(evnt) {
|
|
3368
|
+
const $xeTree = this;
|
|
3369
|
+
const reactData = $xeTree.reactData;
|
|
3370
|
+
const internalData = $xeTree.internalData;
|
|
3371
|
+
const thumbEl = evnt.currentTarget;
|
|
3372
|
+
internalData.isThumbDrag = true;
|
|
3373
|
+
thumbEl.setPointerCapture(evnt.pointerId);
|
|
3374
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper;
|
|
3375
|
+
if (!viewEl) {
|
|
3376
|
+
return;
|
|
3377
|
+
}
|
|
3378
|
+
const { xThumbWidth } = reactData;
|
|
3379
|
+
const trackEl = thumbEl.parentElement;
|
|
3380
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
3381
|
+
const pointerPosition = evnt.clientX - trackRect.left;
|
|
3382
|
+
// 记录 thumb 的偏移
|
|
3383
|
+
const thumbOffset = getThumbOffsetSize(viewEl.scrollLeft, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
|
|
3384
|
+
internalData.thumbDragOffset = pointerPosition - thumbOffset;
|
|
3385
|
+
},
|
|
3386
|
+
pointermoveThumbXEvent(evnt) {
|
|
3387
|
+
const $xeTree = this;
|
|
3388
|
+
const reactData = $xeTree.reactData;
|
|
3389
|
+
const internalData = $xeTree.internalData;
|
|
3390
|
+
const thumbEl = evnt.currentTarget;
|
|
3391
|
+
if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
|
|
3392
|
+
return;
|
|
3393
|
+
}
|
|
3394
|
+
const { isThumbDrag, thumbDragOffset } = internalData;
|
|
3395
|
+
if (isThumbDrag) {
|
|
3396
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper;
|
|
3397
|
+
if (!viewEl) {
|
|
3398
|
+
return;
|
|
3399
|
+
}
|
|
3400
|
+
const { xThumbWidth } = reactData;
|
|
3401
|
+
const thumbEl = evnt.currentTarget;
|
|
3402
|
+
const trackEl = thumbEl.parentElement;
|
|
3403
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
3404
|
+
// 更新偏移
|
|
3405
|
+
viewEl.scrollLeft = getScrollFromDrag(evnt.clientX - trackRect.left, thumbDragOffset, viewEl.clientWidth, viewEl.scrollWidth, trackEl.clientWidth, xThumbWidth);
|
|
3406
|
+
}
|
|
3407
|
+
},
|
|
3408
|
+
cleatPointerThumbEvent(evnt) {
|
|
3409
|
+
const $xeTree = this;
|
|
3410
|
+
const internalData = $xeTree.internalData;
|
|
3411
|
+
const thumbEl = evnt.currentTarget;
|
|
3412
|
+
thumbEl.releasePointerCapture(evnt.pointerId);
|
|
3413
|
+
internalData.isThumbDrag = false;
|
|
3414
|
+
},
|
|
3415
|
+
pointerdownThumbYEvent(evnt) {
|
|
3416
|
+
const $xeTree = this;
|
|
3417
|
+
const reactData = $xeTree.reactData;
|
|
3418
|
+
const internalData = $xeTree.internalData;
|
|
3419
|
+
const thumbEl = evnt.currentTarget;
|
|
3420
|
+
internalData.isThumbDrag = true;
|
|
3421
|
+
thumbEl.setPointerCapture(evnt.pointerId);
|
|
3422
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper;
|
|
3423
|
+
if (!viewEl) {
|
|
3424
|
+
return;
|
|
3425
|
+
}
|
|
3426
|
+
const { yThumbHeight } = reactData;
|
|
3427
|
+
const trackEl = thumbEl.parentElement;
|
|
3428
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
3429
|
+
const pointerPosition = evnt.clientY - trackRect.top;
|
|
3430
|
+
// 记录 thumb 的偏移
|
|
3431
|
+
const thumbOffset = getThumbOffsetSize(viewEl.scrollTop, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
|
|
3432
|
+
internalData.thumbDragOffset = pointerPosition - thumbOffset;
|
|
3433
|
+
},
|
|
3434
|
+
pointermoveThumbYEvent(evnt) {
|
|
3435
|
+
const $xeTree = this;
|
|
3436
|
+
const reactData = $xeTree.reactData;
|
|
3437
|
+
const internalData = $xeTree.internalData;
|
|
3438
|
+
const thumbEl = evnt.currentTarget;
|
|
3439
|
+
if (!thumbEl.hasPointerCapture(evnt.pointerId)) {
|
|
3440
|
+
return;
|
|
3441
|
+
}
|
|
3442
|
+
const { isThumbDrag, thumbDragOffset } = internalData;
|
|
3443
|
+
if (isThumbDrag) {
|
|
3444
|
+
const viewEl = $xeTree.$refs.refVirtualWrapper;
|
|
3445
|
+
if (!viewEl) {
|
|
3446
|
+
return;
|
|
3447
|
+
}
|
|
3448
|
+
const { yThumbHeight } = reactData;
|
|
3449
|
+
const thumbEl = evnt.currentTarget;
|
|
3450
|
+
const trackEl = thumbEl.parentElement;
|
|
3451
|
+
const trackRect = trackEl.getBoundingClientRect();
|
|
3452
|
+
// 更新偏移
|
|
3453
|
+
viewEl.scrollTop = getScrollFromDrag(evnt.clientY - trackRect.top, thumbDragOffset, viewEl.clientHeight, viewEl.scrollHeight, trackEl.clientHeight, yThumbHeight);
|
|
3454
|
+
}
|
|
3455
|
+
},
|
|
3168
3456
|
//
|
|
3169
3457
|
// Render
|
|
3170
3458
|
//
|
|
@@ -3505,13 +3793,14 @@ export default {
|
|
|
3505
3793
|
const props = $xeTree;
|
|
3506
3794
|
const slots = $xeTree.$scopedSlots;
|
|
3507
3795
|
const reactData = $xeTree.reactData;
|
|
3508
|
-
const { loading, trigger, showLine } = props;
|
|
3509
|
-
const { bodyHeight, topSpaceHeight, treeList, tooltipStore } = reactData;
|
|
3796
|
+
const { loading, trigger, showLine, useScrollbar } = props;
|
|
3797
|
+
const { bodyHeight, topSpaceHeight, treeList, tooltipStore, xThumbWidth, yThumbHeight } = reactData;
|
|
3510
3798
|
const vSize = $xeTree.computeSize;
|
|
3511
3799
|
const radioOpts = $xeTree.computeRadioOpts;
|
|
3512
3800
|
const checkboxOpts = $xeTree.computeCheckboxOpts;
|
|
3513
3801
|
const loadingOpts = $xeTree.computeLoadingOpts;
|
|
3514
3802
|
const isNodeHover = $xeTree.computeIsNodeHover;
|
|
3803
|
+
const wrapperStyles = $xeTree.computeWrapperStyles;
|
|
3515
3804
|
const treeStyle = $xeTree.computeTreeStyle;
|
|
3516
3805
|
const dragOpts = $xeTree.computeDragOpts;
|
|
3517
3806
|
const tooltipOpts = $xeTree.computeTooltipOpts;
|
|
@@ -3519,21 +3808,43 @@ export default {
|
|
|
3519
3808
|
const headerSlot = slots.header;
|
|
3520
3809
|
const footerSlot = slots.footer;
|
|
3521
3810
|
const tooltipSlot = slots.tooltip;
|
|
3811
|
+
const scrollbarOpts = $xeTree.computeScrollbarOpts;
|
|
3812
|
+
const scrollXVisible = $xeTree.computeScrollXVisible;
|
|
3813
|
+
const scrollYVisible = $xeTree.computeScrollYVisible;
|
|
3814
|
+
const scrollbarXToTop = $xeTree.computeScrollbarXToTop;
|
|
3815
|
+
const scrollbarYToLeft = $xeTree.computeScrollbarYToLeft;
|
|
3816
|
+
const scrollXAutoHide = $xeTree.computeScrollXAutoHide;
|
|
3817
|
+
const scrollYAutoHide = $xeTree.computeScrollYAutoHide;
|
|
3818
|
+
const scrollbarWrapperClss = $xeTree.computeScrollbarWrapperClss;
|
|
3522
3819
|
const teOns = {};
|
|
3523
3820
|
if (dragOpts.isCrossTreeDrag && !treeList.length) {
|
|
3524
3821
|
teOns.dragover = $xeTree.handleCrossTreeNodeDragoverEmptyEvent;
|
|
3525
3822
|
}
|
|
3526
3823
|
return h('div', {
|
|
3527
3824
|
ref: 'refElem',
|
|
3528
|
-
class: [
|
|
3825
|
+
class: [
|
|
3826
|
+
'vxe-tree',
|
|
3827
|
+
useScrollbar ? `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}` : '',
|
|
3828
|
+
useScrollbar ? `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}` : '',
|
|
3829
|
+
useScrollbar ? `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}` : '',
|
|
3830
|
+
useScrollbar ? `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}` : '',
|
|
3831
|
+
{
|
|
3529
3832
|
[`size--${vSize}`]: vSize,
|
|
3530
3833
|
'show--line': showLine,
|
|
3834
|
+
'is--virtual-scrollbar': useScrollbar,
|
|
3835
|
+
'ov-padding': useScrollbar && scrollbarOpts.padding,
|
|
3836
|
+
'ov-x--auto-hide': useScrollbar && scrollXAutoHide,
|
|
3837
|
+
'ov-y--auto-hide': useScrollbar && scrollYAutoHide,
|
|
3838
|
+
'overflow-y': yThumbHeight,
|
|
3839
|
+
'overflow-x': xThumbWidth,
|
|
3531
3840
|
'checkbox--highlight': checkboxOpts.highlight,
|
|
3532
3841
|
'radio--highlight': radioOpts.highlight,
|
|
3533
3842
|
'node--hover': isNodeHover,
|
|
3534
3843
|
'node--trigger': trigger === 'node',
|
|
3535
3844
|
'is--loading': loading
|
|
3536
|
-
}
|
|
3845
|
+
}
|
|
3846
|
+
],
|
|
3847
|
+
style: wrapperStyles,
|
|
3537
3848
|
on: teOns
|
|
3538
3849
|
}, [
|
|
3539
3850
|
headerSlot
|
|
@@ -3570,6 +3881,57 @@ export default {
|
|
|
3570
3881
|
class: 'vxe-tree--footer-wrapper'
|
|
3571
3882
|
}, footerSlot({ $tree: $xeTree }))
|
|
3572
3883
|
: renderEmptyElement($xeTree),
|
|
3884
|
+
/**
|
|
3885
|
+
* 滚动条
|
|
3886
|
+
*/
|
|
3887
|
+
useScrollbar
|
|
3888
|
+
? h('div', {
|
|
3889
|
+
class: scrollbarWrapperClss
|
|
3890
|
+
}, [
|
|
3891
|
+
scrollXVisible === false
|
|
3892
|
+
? renderEmptyElement($xeTree)
|
|
3893
|
+
: h('div', {
|
|
3894
|
+
ref: 'refTrackXElem',
|
|
3895
|
+
class: 'vxe-scrollbar--track-x',
|
|
3896
|
+
on: {
|
|
3897
|
+
click: $xeTree.clickTrackXEvent
|
|
3898
|
+
}
|
|
3899
|
+
}, [
|
|
3900
|
+
h('div', {
|
|
3901
|
+
ref: 'refThumbXElem',
|
|
3902
|
+
class: 'vxe-scrollbar--thumb-x',
|
|
3903
|
+
on: {
|
|
3904
|
+
pointerdown: $xeTree.pointerdownThumbXEvent,
|
|
3905
|
+
pointermove: $xeTree.pointermoveThumbXEvent,
|
|
3906
|
+
pointerup: $xeTree.cleatPointerThumbEvent,
|
|
3907
|
+
pointercancel: $xeTree.cleatPointerThumbEvent,
|
|
3908
|
+
lostpointercapture: $xeTree.cleatPointerThumbEvent
|
|
3909
|
+
}
|
|
3910
|
+
})
|
|
3911
|
+
]),
|
|
3912
|
+
scrollYVisible === false
|
|
3913
|
+
? renderEmptyElement($xeTree)
|
|
3914
|
+
: h('div', {
|
|
3915
|
+
ref: 'refTrackYElem',
|
|
3916
|
+
class: 'vxe-scrollbar--track-y',
|
|
3917
|
+
on: {
|
|
3918
|
+
click: $xeTree.clickTrackYEvent
|
|
3919
|
+
}
|
|
3920
|
+
}, [
|
|
3921
|
+
h('div', {
|
|
3922
|
+
ref: 'refThumbYElem',
|
|
3923
|
+
class: 'vxe-scrollbar--thumb-y',
|
|
3924
|
+
on: {
|
|
3925
|
+
pointerdown: $xeTree.pointerdownThumbYEvent,
|
|
3926
|
+
pointermove: $xeTree.pointermoveThumbYEvent,
|
|
3927
|
+
pointerup: $xeTree.cleatPointerThumbEvent,
|
|
3928
|
+
pointercancel: $xeTree.cleatPointerThumbEvent,
|
|
3929
|
+
lostpointercapture: $xeTree.cleatPointerThumbEvent
|
|
3930
|
+
}
|
|
3931
|
+
})
|
|
3932
|
+
])
|
|
3933
|
+
])
|
|
3934
|
+
: renderEmptyElement($xeTree),
|
|
3573
3935
|
/**
|
|
3574
3936
|
* 拖拽提示
|
|
3575
3937
|
*/
|
|
@@ -3659,19 +4021,45 @@ export default {
|
|
|
3659
4021
|
},
|
|
3660
4022
|
height() {
|
|
3661
4023
|
const $xeTree = this;
|
|
3662
|
-
$xeTree.
|
|
4024
|
+
$xeTree.reFlag++;
|
|
3663
4025
|
},
|
|
3664
4026
|
minHeight() {
|
|
3665
4027
|
const $xeTree = this;
|
|
3666
|
-
$xeTree.
|
|
4028
|
+
$xeTree.reFlag++;
|
|
3667
4029
|
},
|
|
3668
4030
|
maxHeight() {
|
|
3669
4031
|
const $xeTree = this;
|
|
3670
|
-
$xeTree.
|
|
4032
|
+
$xeTree.reFlag++;
|
|
4033
|
+
},
|
|
4034
|
+
useScrollbar() {
|
|
4035
|
+
const $xeTree = this;
|
|
4036
|
+
$xeTree.reFlag++;
|
|
4037
|
+
},
|
|
4038
|
+
computeScrollYWidth() {
|
|
4039
|
+
const $xeTree = this;
|
|
4040
|
+
$xeTree.reFlag++;
|
|
3671
4041
|
},
|
|
3672
|
-
|
|
4042
|
+
computeScrollXHeight() {
|
|
3673
4043
|
const $xeTree = this;
|
|
3674
|
-
$xeTree.
|
|
4044
|
+
$xeTree.reFlag++;
|
|
4045
|
+
},
|
|
4046
|
+
computeScrollXVisible() {
|
|
4047
|
+
const $xeTree = this;
|
|
4048
|
+
$xeTree.$nextTick(() => {
|
|
4049
|
+
$xeTree.reFlag++;
|
|
4050
|
+
});
|
|
4051
|
+
},
|
|
4052
|
+
computeScrollYVisible() {
|
|
4053
|
+
const $xeTree = this;
|
|
4054
|
+
$xeTree.$nextTick(() => {
|
|
4055
|
+
$xeTree.reFlag++;
|
|
4056
|
+
});
|
|
4057
|
+
},
|
|
4058
|
+
reFlag() {
|
|
4059
|
+
const $xeTree = this;
|
|
4060
|
+
$xeTree.recalculate().then(() => {
|
|
4061
|
+
$xeTree.recalculate();
|
|
4062
|
+
});
|
|
3675
4063
|
}
|
|
3676
4064
|
},
|
|
3677
4065
|
created() {
|
|
@@ -3686,7 +4074,7 @@ export default {
|
|
|
3686
4074
|
const $xeTree = this;
|
|
3687
4075
|
const props = $xeTree;
|
|
3688
4076
|
const internalData = $xeTree.internalData;
|
|
3689
|
-
const { transform, drag, menuConfig, showOverflow, lazy, loadMethod } = props;
|
|
4077
|
+
const { transform, drag, menuConfig, showOverflow, lazy, loadMethod, autoResize, useScrollbar } = props;
|
|
3690
4078
|
const dragOpts = $xeTree.computeDragOpts;
|
|
3691
4079
|
if (!showOverflow) {
|
|
3692
4080
|
errLog('vxe.error.errProp', ['show-overflow=false', 'show-overflow=true']);
|
|
@@ -3707,12 +4095,25 @@ export default {
|
|
|
3707
4095
|
if (menuConfig && !VxeUIContextMenu) {
|
|
3708
4096
|
errLog('vxe.error.reqComp', ['vxe-context-menu']);
|
|
3709
4097
|
}
|
|
3710
|
-
|
|
3711
|
-
|
|
4098
|
+
const el = $xeTree.$refs.refElem;
|
|
4099
|
+
if (useScrollbar) {
|
|
4100
|
+
const viewInnerEl = $xeTree.$refs.refVirtualBody;
|
|
4101
|
+
const scrollObserver = globalResize.create(() => {
|
|
4102
|
+
$xeTree.updateScrollbar();
|
|
4103
|
+
});
|
|
4104
|
+
if (el) {
|
|
4105
|
+
scrollObserver.observe(el);
|
|
4106
|
+
}
|
|
4107
|
+
if (viewInnerEl) {
|
|
4108
|
+
scrollObserver.observe(viewInnerEl);
|
|
4109
|
+
}
|
|
4110
|
+
internalData.scrollObserver = scrollObserver;
|
|
4111
|
+
}
|
|
4112
|
+
if (autoResize) {
|
|
3712
4113
|
const parentEl = $xeTree.getParentElem();
|
|
3713
4114
|
const resizeObserver = globalResize.create(() => {
|
|
3714
4115
|
if (props.autoResize) {
|
|
3715
|
-
$xeTree.
|
|
4116
|
+
$xeTree.reFlag++;
|
|
3716
4117
|
}
|
|
3717
4118
|
});
|
|
3718
4119
|
if (el) {
|
|
@@ -3723,17 +4124,22 @@ export default {
|
|
|
3723
4124
|
}
|
|
3724
4125
|
internalData.resizeObserver = resizeObserver;
|
|
3725
4126
|
}
|
|
3726
|
-
$xeTree.
|
|
3727
|
-
globalEvents.on($xeTree, 'resize',
|
|
4127
|
+
$xeTree.reFlag++;
|
|
4128
|
+
globalEvents.on($xeTree, 'resize', () => {
|
|
4129
|
+
$xeTree.reFlag++;
|
|
4130
|
+
});
|
|
3728
4131
|
},
|
|
3729
4132
|
beforeDestroy() {
|
|
3730
4133
|
const $xeTree = this;
|
|
3731
4134
|
const reactData = $xeTree.reactData;
|
|
3732
4135
|
const internalData = $xeTree.internalData;
|
|
3733
|
-
const { resizeObserver } = internalData;
|
|
4136
|
+
const { scrollObserver, resizeObserver } = internalData;
|
|
3734
4137
|
if (resizeObserver) {
|
|
3735
4138
|
resizeObserver.disconnect();
|
|
3736
4139
|
}
|
|
4140
|
+
if (scrollObserver) {
|
|
4141
|
+
scrollObserver.disconnect();
|
|
4142
|
+
}
|
|
3737
4143
|
globalEvents.off($xeTree, 'resize');
|
|
3738
4144
|
XEUtils.assign(reactData, createReactData());
|
|
3739
4145
|
XEUtils.assign(internalData, createInternalData());
|