vxe-table 3.25.0-beta.1 → 3.25.0-beta.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/index.css +1 -1
- package/es/index.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table/src/methods.js +246 -44
- package/es/table/src/props.js +2 -1
- package/es/table/src/scrollbar.js +54 -0
- package/es/table/src/table.js +266 -64
- package/es/table/src/util.js +11 -2
- package/es/table/style.css +30 -0
- package/es/table/style.min.css +1 -1
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/es/vxe-table/style.css +30 -0
- package/es/vxe-table/style.min.css +1 -1
- package/lib/index.css +1 -1
- package/lib/index.min.css +1 -1
- package/lib/index.umd.js +337 -66
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/src/methods.js +21 -11
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/props.js +2 -1
- package/lib/table/src/props.min.js +1 -1
- package/lib/table/src/scrollbar.js +63 -0
- package/lib/table/src/scrollbar.min.js +1 -0
- package/lib/table/src/table.js +249 -52
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +11 -2
- package/lib/table/src/util.min.js +1 -1
- package/lib/table/style/style.css +30 -0
- package/lib/table/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/vxe-table/style/style.css +30 -0
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/table/src/methods.ts +258 -44
- package/packages/table/src/props.ts +2 -1
- package/packages/table/src/scrollbar.ts +57 -0
- package/packages/table/src/table.ts +300 -69
- package/packages/table/src/util.ts +15 -2
- package/styles/components/table.scss +65 -0
- /package/es/{iconfont.1791954189007.ttf → iconfont.1792035018941.ttf} +0 -0
- /package/es/{iconfont.1791954189007.woff → iconfont.1792035018941.woff} +0 -0
- /package/es/{iconfont.1791954189007.woff2 → iconfont.1792035018941.woff2} +0 -0
- /package/lib/{iconfont.1791954189007.ttf → iconfont.1792035018941.ttf} +0 -0
- /package/lib/{iconfont.1791954189007.woff → iconfont.1792035018941.woff} +0 -0
- /package/lib/{iconfont.1791954189007.woff2 → iconfont.1792035018941.woff2} +0 -0
package/es/table/src/table.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import XEUtils from 'xe-utils';
|
|
2
2
|
import { getDefaultConfig, getFuncText, hasEnableConf, isEnableConf } from '../../ui/src/utils';
|
|
3
3
|
import { initTpImg, toCssUnit } from '../../ui/src/dom';
|
|
4
|
-
import { createReactData, createInternalData, createHandleGetRowId, getCalcHeight, hasDeepKey } from './util';
|
|
4
|
+
import { createReactData, createInternalData, createHandleGetRowId, getCalcHeight, hasDeepKey, getRefElem } from './util';
|
|
5
5
|
import { VxeUI } from '../../ui';
|
|
6
6
|
import methods from './methods';
|
|
7
7
|
import TableBodyComponent from './body';
|
|
@@ -24,7 +24,7 @@ import keyboardMixin from '../module/keyboard/mixin';
|
|
|
24
24
|
import validatorMixin from '../module/validator/mixin';
|
|
25
25
|
import customMixin from '../module/custom/mixin';
|
|
26
26
|
const { warnLog, errLog } = createComponentLog('table');
|
|
27
|
-
const { getConfig, getIcon, getI18n, renderer, globalResize, globalEvents, globalMixins, renderEmptyElement } = VxeUI;
|
|
27
|
+
const { getConfig, getIcon, getI18n, renderer, globalResize, globalEvents, domUtils, globalMixins, renderEmptyElement } = VxeUI;
|
|
28
28
|
function handleUpdateMergeBodyCells($xeTable, merges) {
|
|
29
29
|
const internalData = $xeTable;
|
|
30
30
|
internalData.mergeBodyList = [];
|
|
@@ -95,6 +95,8 @@ function renderViewFixed(h, $xeTable, fixedType) {
|
|
|
95
95
|
const scrollbarOpts = $xeTable.computeScrollbarOpts;
|
|
96
96
|
const scrollbarXOpts = $xeTable.computeScrollbarXOpts;
|
|
97
97
|
const scrollbarYOpts = $xeTable.computeScrollbarYOpts;
|
|
98
|
+
const scrollXVisible = $xeTable.computeScrollXVisible;
|
|
99
|
+
const scrollYVisible = $xeTable.computeScrollYVisible;
|
|
98
100
|
const { overscrollBehavior: overscrollXBehavior } = scrollbarXOpts;
|
|
99
101
|
const { overscrollBehavior: overscrollYBehavior } = scrollbarYOpts;
|
|
100
102
|
const isFixedLeft = fixedType === 'left';
|
|
@@ -105,8 +107,8 @@ function renderViewFixed(h, $xeTable, fixedType) {
|
|
|
105
107
|
ref: isFixedLeft ? 'refLeftContainer' : 'refRightContainer',
|
|
106
108
|
class: [
|
|
107
109
|
`vxe-table--fixed-${fixedType}-wrapper`,
|
|
108
|
-
`sx--${(
|
|
109
|
-
`sy--${(
|
|
110
|
+
`sx--${(scrollXVisible === false || scrollXVisible === 'hidden') ? 'hidden' : 'visible'}`,
|
|
111
|
+
`sy--${(scrollYVisible === false || scrollYVisible === 'hidden') ? 'hidden' : 'visible'}`,
|
|
110
112
|
{
|
|
111
113
|
[`x-ob--${osXBehavior}`]: osXBehavior,
|
|
112
114
|
[`y-ob--${osYBehavior}`]: osYBehavior
|
|
@@ -403,6 +405,7 @@ function renderScrollX(h, $xeTable) {
|
|
|
403
405
|
}
|
|
404
406
|
function renderScrollY(h, $xeTable) {
|
|
405
407
|
return h('div', {
|
|
408
|
+
key: 'vsy',
|
|
406
409
|
ref: 'refScrollYVirtualElem',
|
|
407
410
|
class: 'vxe-table--scroll-y-virtual'
|
|
408
411
|
}, [
|
|
@@ -441,12 +444,15 @@ function renderViewport(h, $xeTable) {
|
|
|
441
444
|
const scrollbarOpts = $xeTable.computeScrollbarOpts;
|
|
442
445
|
const scrollbarXOpts = $xeTable.computeScrollbarXOpts;
|
|
443
446
|
const scrollbarYOpts = $xeTable.computeScrollbarYOpts;
|
|
447
|
+
const scrollXVisible = $xeTable.computeScrollXVisible;
|
|
448
|
+
const scrollYVisible = $xeTable.computeScrollYVisible;
|
|
444
449
|
const { overscrollBehavior: overscrollXBehavior } = scrollbarXOpts;
|
|
445
450
|
const { overscrollBehavior: overscrollYBehavior } = scrollbarYOpts;
|
|
446
451
|
const { leftList, rightList } = columnStore;
|
|
447
452
|
const osXBehavior = XEUtils.eqNull(overscrollXBehavior) ? scrollbarOpts.overscrollBehavior : overscrollXBehavior;
|
|
448
453
|
const osYBehavior = XEUtils.eqNull(overscrollYBehavior) ? scrollbarOpts.overscrollBehavior : overscrollYBehavior;
|
|
449
454
|
return h('div', {
|
|
455
|
+
key: 'tvw',
|
|
450
456
|
ref: 'refTableViewportElem',
|
|
451
457
|
class: ['vxe-table--viewport-wrapper', {
|
|
452
458
|
[`x-ob--${osXBehavior}`]: osXBehavior,
|
|
@@ -456,8 +462,8 @@ function renderViewport(h, $xeTable) {
|
|
|
456
462
|
h('div', {
|
|
457
463
|
class: [
|
|
458
464
|
'vxe-table--main-wrapper',
|
|
459
|
-
`sx--${(
|
|
460
|
-
`sy--${(
|
|
465
|
+
`sx--${(scrollXVisible === false || scrollXVisible === 'hidden') ? 'hidden' : 'visible'}`,
|
|
466
|
+
`sy--${(scrollYVisible === false || scrollYVisible === 'hidden') ? 'hidden' : 'visible'}`
|
|
461
467
|
]
|
|
462
468
|
}, [
|
|
463
469
|
/**
|
|
@@ -505,9 +511,10 @@ function renderViewport(h, $xeTable) {
|
|
|
505
511
|
renderRowExpandedVNs(h, $xeTable)
|
|
506
512
|
]);
|
|
507
513
|
}
|
|
508
|
-
function
|
|
514
|
+
function renderNativeBody(h, $xeTable) {
|
|
509
515
|
const scrollbarYToLeft = $xeTable.computeScrollbarYToLeft;
|
|
510
516
|
return h('div', {
|
|
517
|
+
key: 'lnb',
|
|
511
518
|
class: 'vxe-table--layout-wrapper'
|
|
512
519
|
}, scrollbarYToLeft
|
|
513
520
|
? [
|
|
@@ -519,6 +526,84 @@ function renderBody(h, $xeTable) {
|
|
|
519
526
|
renderScrollY(h, $xeTable)
|
|
520
527
|
]);
|
|
521
528
|
}
|
|
529
|
+
function renderVirtualBody(h, $xeTable) {
|
|
530
|
+
const props = $xeTable;
|
|
531
|
+
const reactData = $xeTable;
|
|
532
|
+
const internalData = $xeTable;
|
|
533
|
+
const $xeGantt = $xeTable.$xeGantt;
|
|
534
|
+
const $xeGanttView = internalData.xeGanttView;
|
|
535
|
+
const { useScrollbar } = props;
|
|
536
|
+
const { xThumbWidth, yThumbHeight } = reactData;
|
|
537
|
+
const scrollbarOpts = $xeTable.computeScrollbarOpts;
|
|
538
|
+
const scrollXAutoHide = $xeTable.computeScrollXAutoHide;
|
|
539
|
+
const scrollYAutoHide = $xeTable.computeScrollYAutoHide;
|
|
540
|
+
const scrollXVisible = $xeTable.computeScrollXVisible;
|
|
541
|
+
const scrollYVisible = $xeTable.computeScrollYVisible;
|
|
542
|
+
const scrollbarXToTop = $xeTable.computeScrollbarXToTop;
|
|
543
|
+
const scrollbarYToLeft = $xeTable.computeScrollbarYToLeft;
|
|
544
|
+
const scrollbarWrapperClss = $xeTable.computeScrollbarWrapperClss;
|
|
545
|
+
const hideXScroll = scrollXVisible === false || scrollXVisible === 'hidden';
|
|
546
|
+
const hideYScroll = scrollYVisible === false || scrollYVisible === 'hidden';
|
|
547
|
+
return h('div', {
|
|
548
|
+
key: 'lvb',
|
|
549
|
+
class: ['vxe-table--layout-wrapper', `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`, {
|
|
550
|
+
'is--virtual-scrollbar': useScrollbar,
|
|
551
|
+
'ov-padding': useScrollbar && scrollbarOpts.padding,
|
|
552
|
+
'ov-x--auto-hide': useScrollbar && scrollXAutoHide,
|
|
553
|
+
'ov-y--auto-hide': useScrollbar && scrollYAutoHide,
|
|
554
|
+
'overflow-y': yThumbHeight,
|
|
555
|
+
'overflow-x': xThumbWidth
|
|
556
|
+
}]
|
|
557
|
+
}, [
|
|
558
|
+
renderViewport(h, $xeTable),
|
|
559
|
+
h('div', {
|
|
560
|
+
class: scrollbarWrapperClss
|
|
561
|
+
}, [
|
|
562
|
+
hideXScroll
|
|
563
|
+
? renderEmptyElement($xeTable)
|
|
564
|
+
: h('div', {
|
|
565
|
+
ref: 'refTrackXElem',
|
|
566
|
+
class: 'vxe-scrollbar--track-x',
|
|
567
|
+
on: {
|
|
568
|
+
click: $xeTable.clickTrackXEvent
|
|
569
|
+
}
|
|
570
|
+
}, [
|
|
571
|
+
h('div', {
|
|
572
|
+
ref: 'refThumbXElem',
|
|
573
|
+
class: 'vxe-scrollbar--thumb-x',
|
|
574
|
+
on: {
|
|
575
|
+
pointerdown: $xeTable.pointerdownThumbXEvent,
|
|
576
|
+
pointermove: $xeTable.pointermoveThumbXEvent,
|
|
577
|
+
pointerup: $xeTable.cleatPointerThumbEvent,
|
|
578
|
+
pointercancel: $xeTable.cleatPointerThumbEvent,
|
|
579
|
+
lostpointercapture: $xeTable.cleatPointerThumbEvent
|
|
580
|
+
}
|
|
581
|
+
})
|
|
582
|
+
]),
|
|
583
|
+
hideYScroll || (($xeGantt && $xeGanttView && $xeGantt.reactData.showRightView) && !scrollbarYToLeft)
|
|
584
|
+
? renderEmptyElement($xeTable)
|
|
585
|
+
: h('div', {
|
|
586
|
+
ref: 'refTrackYElem',
|
|
587
|
+
class: 'vxe-scrollbar--track-y',
|
|
588
|
+
on: {
|
|
589
|
+
click: $xeTable.clickTrackYEvent
|
|
590
|
+
}
|
|
591
|
+
}, [
|
|
592
|
+
h('div', {
|
|
593
|
+
ref: 'refThumbYElem',
|
|
594
|
+
class: 'vxe-scrollbar--thumb-y',
|
|
595
|
+
on: {
|
|
596
|
+
pointerdown: $xeTable.pointerdownThumbYEvent,
|
|
597
|
+
pointermove: $xeTable.pointermoveThumbYEvent,
|
|
598
|
+
pointerup: $xeTable.cleatPointerThumbEvent,
|
|
599
|
+
pointercancel: $xeTable.cleatPointerThumbEvent,
|
|
600
|
+
lostpointercapture: $xeTable.cleatPointerThumbEvent
|
|
601
|
+
}
|
|
602
|
+
})
|
|
603
|
+
])
|
|
604
|
+
])
|
|
605
|
+
]);
|
|
606
|
+
}
|
|
522
607
|
export default {
|
|
523
608
|
name: 'VxeTable',
|
|
524
609
|
mixins: [
|
|
@@ -560,9 +645,9 @@ export default {
|
|
|
560
645
|
data() {
|
|
561
646
|
const xID = XEUtils.uniqueId();
|
|
562
647
|
const reactData = createReactData();
|
|
563
|
-
return Object.assign(Object.assign(
|
|
648
|
+
return Object.assign(Object.assign({ xID }, reactData), {
|
|
564
649
|
// 私有属性
|
|
565
|
-
reScrollFlag: 0, reLayoutFlag: 0, footFlag: 0, kfFlag: 0, layoutReFlag: 0, mergeFooteCellFlag: 0, crossTableDragRowInfo: crossTableDragRowGlobal });
|
|
650
|
+
reScrollFlag: 0, reLayoutFlag: 0, footFlag: 0, kfFlag: 0, layoutReFlag: 0, mergeFooteCellFlag: 0, crossTableDragRowInfo: crossTableDragRowGlobal, scrollDefaultConf: Object.assign({}, getConfig().scrollbar) });
|
|
566
651
|
},
|
|
567
652
|
computed: Object.assign(Object.assign({}, {}), { tableId() {
|
|
568
653
|
return this.computeTableId;
|
|
@@ -674,6 +759,46 @@ export default {
|
|
|
674
759
|
const scrollbarOpts = $xeTable.computeScrollbarOpts;
|
|
675
760
|
return scrollbarOpts.y ? Object.assign({}, scrollbarOpts.y, scrollbarOpts.yConfig) : (scrollbarOpts.yConfig || {});
|
|
676
761
|
},
|
|
762
|
+
computeScrollXHeight() {
|
|
763
|
+
const $xeTable = this;
|
|
764
|
+
const scrollDefaultConf = $xeTable.scrollDefaultConf;
|
|
765
|
+
const scrollbarOpts = $xeTable.computeScrollbarOpts;
|
|
766
|
+
const scrollbarXOpts = $xeTable.computeScrollbarXOpts;
|
|
767
|
+
return XEUtils.toNumber(getDefaultConfig(getDefaultConfig(scrollbarXOpts.height, scrollbarOpts.height), scrollDefaultConf.height));
|
|
768
|
+
},
|
|
769
|
+
computeScrollYWidth() {
|
|
770
|
+
const $xeTable = this;
|
|
771
|
+
const scrollDefaultConf = $xeTable.scrollDefaultConf;
|
|
772
|
+
const scrollbarOpts = $xeTable.computeScrollbarOpts;
|
|
773
|
+
const scrollbarYOpts = $xeTable.computeScrollbarYOpts;
|
|
774
|
+
return XEUtils.toNumber(getDefaultConfig(getDefaultConfig(scrollbarYOpts.width, scrollbarOpts.width), scrollDefaultConf.width));
|
|
775
|
+
},
|
|
776
|
+
computeScrollXVisible() {
|
|
777
|
+
const $xeTable = this;
|
|
778
|
+
const scrollbarOpts = $xeTable.computeScrollbarOpts;
|
|
779
|
+
const scrollbarXOpts = $xeTable.computeScrollbarXOpts;
|
|
780
|
+
return getDefaultConfig(scrollbarXOpts.visible, scrollbarOpts.visible);
|
|
781
|
+
},
|
|
782
|
+
computeScrollYVisible() {
|
|
783
|
+
const $xeTable = this;
|
|
784
|
+
const scrollbarOpts = $xeTable.computeScrollbarOpts;
|
|
785
|
+
const scrollbarYOpts = $xeTable.computeScrollbarYOpts;
|
|
786
|
+
return getDefaultConfig(scrollbarYOpts.visible, scrollbarOpts.visible);
|
|
787
|
+
},
|
|
788
|
+
computeScrollXAutoHide() {
|
|
789
|
+
const $xeTable = this;
|
|
790
|
+
const scrollDefaultConf = $xeTable.scrollDefaultConf;
|
|
791
|
+
const scrollbarOpts = $xeTable.computeScrollbarOpts;
|
|
792
|
+
const scrollbarXOpts = $xeTable.computeScrollbarXOpts;
|
|
793
|
+
return getDefaultConfig(getDefaultConfig(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), scrollDefaultConf.autoHide);
|
|
794
|
+
},
|
|
795
|
+
computeScrollYAutoHide() {
|
|
796
|
+
const $xeTable = this;
|
|
797
|
+
const scrollDefaultConf = $xeTable.scrollDefaultConf;
|
|
798
|
+
const scrollbarOpts = $xeTable.computeScrollbarOpts;
|
|
799
|
+
const scrollbarYOpts = $xeTable.computeScrollbarYOpts;
|
|
800
|
+
return getDefaultConfig(getDefaultConfig(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), scrollDefaultConf.autoHide);
|
|
801
|
+
},
|
|
677
802
|
computeScrollbarXToTop() {
|
|
678
803
|
const $xeTable = this;
|
|
679
804
|
const scrollbarXOpts = $xeTable.computeScrollbarXOpts;
|
|
@@ -684,6 +809,25 @@ export default {
|
|
|
684
809
|
const scrollbarYOpts = $xeTable.computeScrollbarYOpts;
|
|
685
810
|
return scrollbarYOpts.position === 'left';
|
|
686
811
|
},
|
|
812
|
+
computeScrollbarWrapperClss() {
|
|
813
|
+
const $xeTable = this;
|
|
814
|
+
const reactData = $xeTable;
|
|
815
|
+
const { yThumbHeight, xThumbWidth } = reactData;
|
|
816
|
+
const scrollbarXToTop = $xeTable.computeScrollbarXToTop;
|
|
817
|
+
const scrollbarYToLeft = $xeTable.computeScrollbarYToLeft;
|
|
818
|
+
const scrollXVisible = $xeTable.computeScrollXVisible;
|
|
819
|
+
const scrollYVisible = $xeTable.computeScrollYVisible;
|
|
820
|
+
return domUtils.buildClass([
|
|
821
|
+
'vxe-scrollbar is--virtual',
|
|
822
|
+
`ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}`,
|
|
823
|
+
`ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}`,
|
|
824
|
+
`sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`,
|
|
825
|
+
`sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`
|
|
826
|
+
], {
|
|
827
|
+
'overflow-y': yThumbHeight,
|
|
828
|
+
'overflow-x': xThumbWidth
|
|
829
|
+
});
|
|
830
|
+
},
|
|
687
831
|
computeScrollYThreshold() {
|
|
688
832
|
const $xeTable = this;
|
|
689
833
|
const virtualYOpts = $xeTable.computeVirtualYOpts;
|
|
@@ -729,6 +873,11 @@ export default {
|
|
|
729
873
|
}
|
|
730
874
|
return cellOpts;
|
|
731
875
|
},
|
|
876
|
+
computeCellHeitht() {
|
|
877
|
+
const $xeTable = this;
|
|
878
|
+
const cellOpts = $xeTable.computeCellOpts;
|
|
879
|
+
return cellOpts.height;
|
|
880
|
+
},
|
|
732
881
|
computeHeaderCellOpts() {
|
|
733
882
|
const $xeTable = this;
|
|
734
883
|
const $xeGantt = $xeTable.$xeGantt;
|
|
@@ -1194,12 +1343,8 @@ export default {
|
|
|
1194
1343
|
},
|
|
1195
1344
|
computeTableStyle() {
|
|
1196
1345
|
const $xeTable = this;
|
|
1197
|
-
const
|
|
1198
|
-
const
|
|
1199
|
-
const scrollbarXOpts = $xeTable.computeScrollbarXOpts;
|
|
1200
|
-
const scrollbarYOpts = $xeTable.computeScrollbarYOpts;
|
|
1201
|
-
const barWidth = getDefaultConfig(getDefaultConfig(scrollbarYOpts.width, scrollbarOpts.width), scrollDefaultConf.width);
|
|
1202
|
-
const barHeight = getDefaultConfig(getDefaultConfig(scrollbarXOpts.height, scrollbarOpts.height), scrollDefaultConf.height);
|
|
1346
|
+
const barWidth = $xeTable.computeScrollYWidth;
|
|
1347
|
+
const barHeight = $xeTable.computeScrollXHeight;
|
|
1203
1348
|
const stys = {};
|
|
1204
1349
|
if (barWidth || barHeight) {
|
|
1205
1350
|
stys['--vxe-ui-table-view-scrollbar-width'] = toCssUnit(barWidth || barHeight);
|
|
@@ -1408,17 +1553,6 @@ export default {
|
|
|
1408
1553
|
},
|
|
1409
1554
|
computeVxeLanguage() {
|
|
1410
1555
|
return VxeUI.getLanguage();
|
|
1411
|
-
},
|
|
1412
|
-
computeScrollbarVisible() {
|
|
1413
|
-
const $xeTable = this;
|
|
1414
|
-
const scrollbarXOpts = $xeTable.computeScrollbarXOpts;
|
|
1415
|
-
const scrollbarYOpts = $xeTable.computeScrollbarYOpts;
|
|
1416
|
-
return `${scrollbarXOpts.visible}${scrollbarYOpts.visible}`;
|
|
1417
|
-
},
|
|
1418
|
-
computeCellConfHeitht() {
|
|
1419
|
-
const $xeTable = this;
|
|
1420
|
-
const cellOpts = $xeTable.computeCellOpts;
|
|
1421
|
-
return cellOpts.height;
|
|
1422
1556
|
} }),
|
|
1423
1557
|
watch: {
|
|
1424
1558
|
data(value) {
|
|
@@ -1459,55 +1593,98 @@ export default {
|
|
|
1459
1593
|
this.$nextTick().then(() => this.refreshColumn());
|
|
1460
1594
|
},
|
|
1461
1595
|
computeSize() {
|
|
1462
|
-
this
|
|
1596
|
+
const $xeTable = this;
|
|
1597
|
+
$xeTable.reLayoutFlag++;
|
|
1463
1598
|
},
|
|
1464
1599
|
showHeader() {
|
|
1465
|
-
this
|
|
1600
|
+
const $xeTable = this;
|
|
1601
|
+
$xeTable.reLayoutFlag++;
|
|
1466
1602
|
},
|
|
1467
1603
|
showFooter() {
|
|
1468
|
-
this
|
|
1604
|
+
const $xeTable = this;
|
|
1605
|
+
$xeTable.reLayoutFlag++;
|
|
1469
1606
|
},
|
|
1470
1607
|
showHeaderOverflow() {
|
|
1471
|
-
this
|
|
1608
|
+
const $xeTable = this;
|
|
1609
|
+
$xeTable.reLayoutFlag++;
|
|
1472
1610
|
},
|
|
1473
1611
|
showOverflow() {
|
|
1474
1612
|
const $xeTable = this;
|
|
1475
1613
|
updateColumnAllOverflow($xeTable);
|
|
1476
|
-
|
|
1614
|
+
$xeTable.reLayoutFlag++;
|
|
1477
1615
|
},
|
|
1478
1616
|
showFooterOverflow() {
|
|
1479
|
-
this
|
|
1617
|
+
const $xeTable = this;
|
|
1618
|
+
$xeTable.reLayoutFlag++;
|
|
1480
1619
|
},
|
|
1481
1620
|
overflowX() {
|
|
1482
|
-
this
|
|
1621
|
+
const $xeTable = this;
|
|
1622
|
+
$xeTable.reLayoutFlag++;
|
|
1483
1623
|
},
|
|
1484
1624
|
overflowY() {
|
|
1485
|
-
this
|
|
1625
|
+
const $xeTable = this;
|
|
1626
|
+
$xeTable.reLayoutFlag++;
|
|
1486
1627
|
},
|
|
1487
1628
|
height() {
|
|
1488
|
-
this
|
|
1629
|
+
const $xeTable = this;
|
|
1630
|
+
$xeTable.reLayoutFlag++;
|
|
1489
1631
|
},
|
|
1490
1632
|
maxHeight() {
|
|
1491
|
-
this
|
|
1633
|
+
const $xeTable = this;
|
|
1634
|
+
$xeTable.reLayoutFlag++;
|
|
1635
|
+
},
|
|
1636
|
+
computeVxeLanguage() {
|
|
1637
|
+
const $xeTable = this;
|
|
1638
|
+
$xeTable.reLayoutFlag++;
|
|
1492
1639
|
},
|
|
1493
1640
|
computeScrollbarXToTop() {
|
|
1494
|
-
this
|
|
1641
|
+
const $xeTable = this;
|
|
1642
|
+
$xeTable.reScrollFlag++;
|
|
1643
|
+
$xeTable.reLayoutFlag++;
|
|
1495
1644
|
},
|
|
1496
1645
|
computeScrollbarYToLeft() {
|
|
1497
|
-
this
|
|
1646
|
+
const $xeTable = this;
|
|
1647
|
+
$xeTable.reScrollFlag++;
|
|
1648
|
+
$xeTable.reLayoutFlag++;
|
|
1498
1649
|
},
|
|
1499
|
-
|
|
1500
|
-
this
|
|
1650
|
+
computeScrollXVisible() {
|
|
1651
|
+
const $xeTable = this;
|
|
1652
|
+
$xeTable.reScrollFlag++;
|
|
1653
|
+
$xeTable.reLayoutFlag++;
|
|
1654
|
+
},
|
|
1655
|
+
computeScrollYVisible() {
|
|
1656
|
+
const $xeTable = this;
|
|
1657
|
+
$xeTable.reScrollFlag++;
|
|
1658
|
+
$xeTable.reLayoutFlag++;
|
|
1501
1659
|
},
|
|
1502
|
-
|
|
1503
|
-
this
|
|
1660
|
+
computeScrollXHeight() {
|
|
1661
|
+
const $xeTable = this;
|
|
1662
|
+
$xeTable.reScrollFlag++;
|
|
1663
|
+
$xeTable.reLayoutFlag++;
|
|
1664
|
+
},
|
|
1665
|
+
computeScrollYWidth() {
|
|
1666
|
+
const $xeTable = this;
|
|
1667
|
+
$xeTable.reScrollFlag++;
|
|
1668
|
+
$xeTable.reLayoutFlag++;
|
|
1504
1669
|
},
|
|
1505
|
-
|
|
1506
|
-
this
|
|
1670
|
+
computeCellHeitht() {
|
|
1671
|
+
const $xeTable = this;
|
|
1672
|
+
$xeTable.reLayoutFlag++;
|
|
1507
1673
|
},
|
|
1508
1674
|
reLayoutFlag() {
|
|
1509
1675
|
const $xeTable = this;
|
|
1510
|
-
$xeTable.$nextTick(() =>
|
|
1676
|
+
$xeTable.$nextTick(() => {
|
|
1677
|
+
$xeTable.recalculate(true);
|
|
1678
|
+
});
|
|
1679
|
+
},
|
|
1680
|
+
reScrollFlag() {
|
|
1681
|
+
const $xeTable = this;
|
|
1682
|
+
$xeTable.$nextTick(() => {
|
|
1683
|
+
$xeTable.updateScrollbar();
|
|
1684
|
+
$xeTable.$nextTick(() => {
|
|
1685
|
+
$xeTable.updateScrollbar();
|
|
1686
|
+
});
|
|
1687
|
+
});
|
|
1511
1688
|
},
|
|
1512
1689
|
footerData() {
|
|
1513
1690
|
this.footFlag++;
|
|
@@ -1607,7 +1784,6 @@ export default {
|
|
|
1607
1784
|
const $xeTable = this;
|
|
1608
1785
|
const props = $xeTable;
|
|
1609
1786
|
const internalData = $xeTable;
|
|
1610
|
-
$xeTable.scrollDefaultConf = Object.assign({}, getConfig().scrollbar);
|
|
1611
1787
|
XEUtils.assign(internalData, createInternalData());
|
|
1612
1788
|
handleKeyField($xeTable);
|
|
1613
1789
|
const { editConfig, exportConfig, importConfig, treeConfig, minHeight, keepSource, areaConfig } = props;
|
|
@@ -1953,6 +2129,8 @@ export default {
|
|
|
1953
2129
|
warnLog('vxe.error.reqProp', ['tooltip-config']);
|
|
1954
2130
|
}
|
|
1955
2131
|
$xeTable.$nextTick(() => {
|
|
2132
|
+
const { useScrollbar, autoResize } = props;
|
|
2133
|
+
const { elemStore } = internalData;
|
|
1956
2134
|
// 使用已安装的组件,如果未安装则不渲染
|
|
1957
2135
|
const VxeUILoadingComponent = VxeUI.getComponent('VxeLoading');
|
|
1958
2136
|
const VxeUITooltipComponent = VxeUI.getComponent('VxeTooltip');
|
|
@@ -1996,15 +2174,34 @@ export default {
|
|
|
1996
2174
|
errLog('vxe.error.reqComp', ['vxe-tooltip']);
|
|
1997
2175
|
}
|
|
1998
2176
|
}
|
|
1999
|
-
|
|
2177
|
+
const el = $xeTable.$refs.refElem;
|
|
2178
|
+
if (useScrollbar) {
|
|
2179
|
+
const viewInnerEl = getRefElem(elemStore['main-body-table']);
|
|
2180
|
+
const scrollObserver = globalResize.create(() => {
|
|
2181
|
+
$xeTable.reScrollFlag++;
|
|
2182
|
+
});
|
|
2183
|
+
if (el) {
|
|
2184
|
+
scrollObserver.observe(el);
|
|
2185
|
+
}
|
|
2186
|
+
if (viewInnerEl) {
|
|
2187
|
+
scrollObserver.observe(viewInnerEl);
|
|
2188
|
+
}
|
|
2189
|
+
internalData.scrollObserver = scrollObserver;
|
|
2190
|
+
}
|
|
2191
|
+
if (autoResize) {
|
|
2192
|
+
const parentEl = $xeTable.getParentElem();
|
|
2000
2193
|
const resizeObserver = globalResize.create(() => {
|
|
2001
|
-
if (
|
|
2002
|
-
|
|
2194
|
+
if (props.autoResize) {
|
|
2195
|
+
$xeTable.handleResizeEvent();
|
|
2003
2196
|
}
|
|
2004
2197
|
});
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2198
|
+
if (el) {
|
|
2199
|
+
resizeObserver.observe(el);
|
|
2200
|
+
}
|
|
2201
|
+
if (parentEl) {
|
|
2202
|
+
resizeObserver.observe(parentEl);
|
|
2203
|
+
}
|
|
2204
|
+
internalData.resizeObserver = resizeObserver;
|
|
2008
2205
|
}
|
|
2009
2206
|
});
|
|
2010
2207
|
if (virtualYOpts.mode !== 'scroll') {
|
|
@@ -2035,7 +2232,7 @@ export default {
|
|
|
2035
2232
|
const $xeTable = this;
|
|
2036
2233
|
const reactData = $xeTable;
|
|
2037
2234
|
const internalData = $xeTable;
|
|
2038
|
-
const { _sToTime } = internalData;
|
|
2235
|
+
const { scrollObserver, resizeObserver, _sToTime } = internalData;
|
|
2039
2236
|
if (_sToTime) {
|
|
2040
2237
|
clearTimeout(_sToTime);
|
|
2041
2238
|
}
|
|
@@ -2055,8 +2252,11 @@ export default {
|
|
|
2055
2252
|
if (tableViewportEl) {
|
|
2056
2253
|
tableViewportEl.removeEventListener('wheel', $xeTable.triggerBodyWheelEvent);
|
|
2057
2254
|
}
|
|
2058
|
-
if (
|
|
2059
|
-
|
|
2255
|
+
if (scrollObserver) {
|
|
2256
|
+
scrollObserver.disconnect();
|
|
2257
|
+
}
|
|
2258
|
+
if (resizeObserver) {
|
|
2259
|
+
resizeObserver.disconnect();
|
|
2060
2260
|
}
|
|
2061
2261
|
$xeTable.closeTooltip();
|
|
2062
2262
|
$xeTable.closeFilter();
|
|
@@ -2202,15 +2402,17 @@ export default {
|
|
|
2202
2402
|
h('div', {
|
|
2203
2403
|
key: 'tw',
|
|
2204
2404
|
class: 'vxe-table--render-wrapper'
|
|
2205
|
-
},
|
|
2206
|
-
? [
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2405
|
+
}, useScrollbar
|
|
2406
|
+
? [renderVirtualBody(h, $xeTable)]
|
|
2407
|
+
: (scrollbarXToTop
|
|
2408
|
+
? [
|
|
2409
|
+
renderScrollX(h, $xeTable),
|
|
2410
|
+
renderNativeBody(h, $xeTable)
|
|
2411
|
+
]
|
|
2412
|
+
: [
|
|
2413
|
+
renderNativeBody(h, $xeTable),
|
|
2414
|
+
renderScrollX(h, $xeTable)
|
|
2415
|
+
])),
|
|
2214
2416
|
/**
|
|
2215
2417
|
* 空数据
|
|
2216
2418
|
*/
|
package/es/table/src/util.js
CHANGED
|
@@ -43,9 +43,15 @@ export function createInternalData() {
|
|
|
43
43
|
// 当前行
|
|
44
44
|
currentRow: null,
|
|
45
45
|
currentCol: null,
|
|
46
|
-
//
|
|
47
|
-
|
|
46
|
+
// resizeObserver: undefined,
|
|
47
|
+
// 滚动条
|
|
48
|
+
// scrollObserver: undefined,
|
|
49
|
+
// isThumbDrag: false,
|
|
50
|
+
thumbDragOffset: 0,
|
|
51
|
+
yThumbTop: 0,
|
|
52
|
+
xThumbLeft: 0,
|
|
48
53
|
lastScrollTop: 0,
|
|
54
|
+
lastScrollLeft: 0,
|
|
49
55
|
// 单选框属性,已选中保留的行
|
|
50
56
|
radioReserveRow: null,
|
|
51
57
|
// 复选框属性,已选中保留的行集合
|
|
@@ -177,6 +183,9 @@ export function createReactData() {
|
|
|
177
183
|
scrollbarWidth: 0,
|
|
178
184
|
// 横向滚动条的高度
|
|
179
185
|
scrollbarHeight: 0,
|
|
186
|
+
// 滚动条
|
|
187
|
+
yThumbHeight: 0,
|
|
188
|
+
xThumbWidth: 0,
|
|
180
189
|
// 行高
|
|
181
190
|
rowHeight: 0,
|
|
182
191
|
// 表格父容器的高度
|
package/es/table/style.css
CHANGED
|
@@ -4024,4 +4024,34 @@ div.vxe-table--tooltip-wrapper.vxe-table--valid-error.old-cell-valid {
|
|
|
4024
4024
|
}
|
|
4025
4025
|
.vxe-table--footer-wrapper.body--wrapper {
|
|
4026
4026
|
outline: 0;
|
|
4027
|
+
}
|
|
4028
|
+
|
|
4029
|
+
.vxe-table--layout-wrapper.is--virtual-scrollbar.ov-padding.overflow-x.sx-pos--top > .vxe-table--viewport-wrapper {
|
|
4030
|
+
padding-top: var(--vxe-ui-scrollbar-x-height);
|
|
4031
|
+
}
|
|
4032
|
+
.vxe-table--layout-wrapper.is--virtual-scrollbar.ov-padding.overflow-x.sx-pos--bottom > .vxe-table--viewport-wrapper {
|
|
4033
|
+
padding-bottom: var(--vxe-ui-scrollbar-x-height);
|
|
4034
|
+
}
|
|
4035
|
+
.vxe-table--layout-wrapper.is--virtual-scrollbar.ov-padding.overflow-y.sy-pos--left > .vxe-table--viewport-wrapper {
|
|
4036
|
+
padding-left: var(--vxe-ui-scrollbar-y-width);
|
|
4037
|
+
}
|
|
4038
|
+
.vxe-table--layout-wrapper.is--virtual-scrollbar.ov-padding.overflow-y.sy-pos--right > .vxe-table--viewport-wrapper {
|
|
4039
|
+
padding-right: var(--vxe-ui-scrollbar-y-width);
|
|
4040
|
+
}
|
|
4041
|
+
.vxe-table--layout-wrapper.is--virtual-scrollbar.ov-x--auto-hide:hover > .vxe-scrollbar > .vxe-scrollbar--track-x {
|
|
4042
|
+
opacity: 1;
|
|
4043
|
+
}
|
|
4044
|
+
.vxe-table--layout-wrapper.is--virtual-scrollbar.ov-x--auto-hide > .vxe-scrollbar > .vxe-scrollbar--track-x {
|
|
4045
|
+
opacity: 0;
|
|
4046
|
+
transition: opacity 0.8s ease-in-out;
|
|
4047
|
+
}
|
|
4048
|
+
.vxe-table--layout-wrapper.is--virtual-scrollbar.ov-y--auto-hide:hover > .vxe-scrollbar > .vxe-scrollbar--track-y {
|
|
4049
|
+
opacity: 1;
|
|
4050
|
+
}
|
|
4051
|
+
.vxe-table--layout-wrapper.is--virtual-scrollbar.ov-y--auto-hide > .vxe-scrollbar > .vxe-scrollbar--track-y {
|
|
4052
|
+
opacity: 0;
|
|
4053
|
+
transition: opacity 0.8s ease-in-out;
|
|
4054
|
+
}
|
|
4055
|
+
.vxe-table--layout-wrapper > .vxe-scrollbar {
|
|
4056
|
+
position: unset;
|
|
4027
4057
|
}
|