vxe-table 3.25.0-beta.3 → 3.25.0-beta.5
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/module/filter/mixin.js +4 -7
- package/es/table/module/filter/panel.js +47 -48
- package/es/table/src/methods.js +29 -197
- package/es/table/src/table.js +50 -27
- package/es/table/src/util.js +1 -2
- package/es/table/style.css +31 -12
- package/es/table/style.min.css +1 -1
- package/es/ui/index.js +2 -2
- package/es/ui/src/log.js +1 -1
- package/es/vxe-table/style.css +31 -12
- 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 +108 -94
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/module/filter/mixin.js +5 -7
- package/lib/table/module/filter/mixin.min.js +1 -1
- package/lib/table/module/filter/panel.js +41 -37
- package/lib/table/module/filter/panel.min.js +1 -1
- package/lib/table/src/methods.js +7 -13
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/table.js +51 -32
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +1 -2
- package/lib/table/src/util.min.js +1 -1
- package/lib/table/style/style.css +31 -12
- package/lib/table/style/style.min.css +1 -1
- package/lib/ui/index.js +2 -2
- 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 +31 -12
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/grid/src/grid.ts +2 -1
- package/packages/table/module/filter/mixin.ts +4 -7
- package/packages/table/module/filter/panel.ts +50 -48
- package/packages/table/src/methods.ts +32 -213
- package/packages/table/src/table.ts +68 -42
- package/packages/table/src/util.ts +1 -2
- package/packages/ui/index.ts +1 -1
- package/styles/components/table-module/filter.scss +25 -14
- /package/es/{iconfont.1792117667851.ttf → iconfont.1792220310836.ttf} +0 -0
- /package/es/{iconfont.1792117667851.woff → iconfont.1792220310836.woff} +0 -0
- /package/es/{iconfont.1792117667851.woff2 → iconfont.1792220310836.woff2} +0 -0
- /package/lib/{iconfont.1792117667851.ttf → iconfont.1792220310836.ttf} +0 -0
- /package/lib/{iconfont.1792117667851.woff → iconfont.1792220310836.woff} +0 -0
- /package/lib/{iconfont.1792117667851.woff2 → iconfont.1792220310836.woff2} +0 -0
package/es/table/src/table.js
CHANGED
|
@@ -25,6 +25,25 @@ import validatorMixin from '../module/validator/mixin';
|
|
|
25
25
|
import customMixin from '../module/custom/mixin';
|
|
26
26
|
const { warnLog, errLog } = createComponentLog('table');
|
|
27
27
|
const { getConfig, getIcon, getI18n, renderer, globalResize, globalEvents, domUtils, globalMixins, renderEmptyElement } = VxeUI;
|
|
28
|
+
function bindScrollbarResize($xeTable) {
|
|
29
|
+
const internalData = $xeTable;
|
|
30
|
+
const { elemStore } = internalData;
|
|
31
|
+
const isVScrollbar = $xeTable.computeIsVScrollbar;
|
|
32
|
+
if (isVScrollbar) {
|
|
33
|
+
const el = $xeTable.$refs.refElem;
|
|
34
|
+
const viewInnerEl = getRefElem(elemStore['main-body-table']);
|
|
35
|
+
const scrollObserver = globalResize.create(() => {
|
|
36
|
+
$xeTable.reScrollFlag++;
|
|
37
|
+
});
|
|
38
|
+
if (el) {
|
|
39
|
+
scrollObserver.observe(el);
|
|
40
|
+
}
|
|
41
|
+
if (viewInnerEl) {
|
|
42
|
+
scrollObserver.observe(viewInnerEl);
|
|
43
|
+
}
|
|
44
|
+
internalData.scrollObserver = scrollObserver;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
28
47
|
function handleUpdateMergeBodyCells($xeTable, merges) {
|
|
29
48
|
const internalData = $xeTable;
|
|
30
49
|
internalData.mergeBodyList = [];
|
|
@@ -527,13 +546,12 @@ function renderNativeBody(h, $xeTable) {
|
|
|
527
546
|
]);
|
|
528
547
|
}
|
|
529
548
|
function renderVirtualBody(h, $xeTable) {
|
|
530
|
-
const props = $xeTable;
|
|
531
549
|
const reactData = $xeTable;
|
|
532
550
|
const internalData = $xeTable;
|
|
533
551
|
const $xeGantt = $xeTable.$xeGantt;
|
|
534
552
|
const $xeGanttView = internalData.xeGanttView;
|
|
535
|
-
const { useScrollbar } = props;
|
|
536
553
|
const { xThumbWidth, yThumbHeight } = reactData;
|
|
554
|
+
const isVScrollbar = $xeTable.computeIsVScrollbar;
|
|
537
555
|
const scrollbarOpts = $xeTable.computeScrollbarOpts;
|
|
538
556
|
const scrollXAutoHide = $xeTable.computeScrollXAutoHide;
|
|
539
557
|
const scrollYAutoHide = $xeTable.computeScrollYAutoHide;
|
|
@@ -547,10 +565,10 @@ function renderVirtualBody(h, $xeTable) {
|
|
|
547
565
|
return h('div', {
|
|
548
566
|
key: 'lvb',
|
|
549
567
|
class: ['vxe-table--layout-wrapper', `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`, {
|
|
550
|
-
'is--virtual-scrollbar':
|
|
551
|
-
'ov-padding':
|
|
552
|
-
'ov-x--auto-hide':
|
|
553
|
-
'ov-y--auto-hide':
|
|
568
|
+
'is--virtual-scrollbar': isVScrollbar,
|
|
569
|
+
'ov-padding': isVScrollbar && scrollbarOpts.padding,
|
|
570
|
+
'ov-x--auto-hide': isVScrollbar && scrollXAutoHide,
|
|
571
|
+
'ov-y--auto-hide': isVScrollbar && scrollYAutoHide,
|
|
554
572
|
'overflow-y': yThumbHeight,
|
|
555
573
|
'overflow-x': xThumbWidth
|
|
556
574
|
}]
|
|
@@ -608,6 +626,8 @@ export default {
|
|
|
608
626
|
name: 'VxeTable',
|
|
609
627
|
mixins: [
|
|
610
628
|
globalMixins.sizeMixin,
|
|
629
|
+
globalMixins.vScrollbarMixin,
|
|
630
|
+
globalMixins.initVScrollbarMixin,
|
|
611
631
|
filterMixin,
|
|
612
632
|
menuMixin,
|
|
613
633
|
editMixin,
|
|
@@ -992,8 +1012,8 @@ export default {
|
|
|
992
1012
|
computeTooltipOpts() {
|
|
993
1013
|
const $xeTable = this;
|
|
994
1014
|
const props = $xeTable;
|
|
995
|
-
const
|
|
996
|
-
return Object.assign({ useScrollbar }, getConfig().tooltip, getConfig().table.tooltipConfig, props.tooltipConfig);
|
|
1015
|
+
const isVScrollbar = $xeTable.computeIsVScrollbar;
|
|
1016
|
+
return Object.assign({ useScrollbar: isVScrollbar }, getConfig().tooltip, getConfig().table.tooltipConfig, props.tooltipConfig);
|
|
997
1017
|
},
|
|
998
1018
|
tipConfig() {
|
|
999
1019
|
return Object.assign({}, this.tooltipOpts);
|
|
@@ -1056,7 +1076,8 @@ export default {
|
|
|
1056
1076
|
computeFilterOpts() {
|
|
1057
1077
|
const $xeTable = this;
|
|
1058
1078
|
const props = $xeTable;
|
|
1059
|
-
|
|
1079
|
+
const isVScrollbar = $xeTable.computeIsVScrollbar;
|
|
1080
|
+
return Object.assign({ useScrollbar: isVScrollbar }, getConfig().table.filterConfig, props.filterConfig);
|
|
1060
1081
|
},
|
|
1061
1082
|
computeFloatingFilterOpts() {
|
|
1062
1083
|
const $xeTable = this;
|
|
@@ -1638,34 +1659,37 @@ export default {
|
|
|
1638
1659
|
const $xeTable = this;
|
|
1639
1660
|
$xeTable.reLayoutFlag++;
|
|
1640
1661
|
},
|
|
1662
|
+
computeIsVScrollbar() {
|
|
1663
|
+
const $xeTable = this;
|
|
1664
|
+
$xeTable.$nextTick(() => {
|
|
1665
|
+
bindScrollbarResize($xeTable);
|
|
1666
|
+
$xeTable.$nextTick(() => {
|
|
1667
|
+
$xeTable.reLayoutFlag++;
|
|
1668
|
+
});
|
|
1669
|
+
});
|
|
1670
|
+
},
|
|
1641
1671
|
computeScrollbarXToTop() {
|
|
1642
1672
|
const $xeTable = this;
|
|
1643
|
-
$xeTable.reScrollFlag++;
|
|
1644
1673
|
$xeTable.reLayoutFlag++;
|
|
1645
1674
|
},
|
|
1646
1675
|
computeScrollbarYToLeft() {
|
|
1647
1676
|
const $xeTable = this;
|
|
1648
|
-
$xeTable.reScrollFlag++;
|
|
1649
1677
|
$xeTable.reLayoutFlag++;
|
|
1650
1678
|
},
|
|
1651
1679
|
computeScrollXVisible() {
|
|
1652
1680
|
const $xeTable = this;
|
|
1653
|
-
$xeTable.reScrollFlag++;
|
|
1654
1681
|
$xeTable.reLayoutFlag++;
|
|
1655
1682
|
},
|
|
1656
1683
|
computeScrollYVisible() {
|
|
1657
1684
|
const $xeTable = this;
|
|
1658
|
-
$xeTable.reScrollFlag++;
|
|
1659
1685
|
$xeTable.reLayoutFlag++;
|
|
1660
1686
|
},
|
|
1661
1687
|
computeScrollXHeight() {
|
|
1662
1688
|
const $xeTable = this;
|
|
1663
|
-
$xeTable.reScrollFlag++;
|
|
1664
1689
|
$xeTable.reLayoutFlag++;
|
|
1665
1690
|
},
|
|
1666
1691
|
computeScrollYWidth() {
|
|
1667
1692
|
const $xeTable = this;
|
|
1668
|
-
$xeTable.reScrollFlag++;
|
|
1669
1693
|
$xeTable.reLayoutFlag++;
|
|
1670
1694
|
},
|
|
1671
1695
|
computeCellHeitht() {
|
|
@@ -1674,17 +1698,14 @@ export default {
|
|
|
1674
1698
|
},
|
|
1675
1699
|
reLayoutFlag() {
|
|
1676
1700
|
const $xeTable = this;
|
|
1677
|
-
$xeTable.$nextTick(() => {
|
|
1701
|
+
$xeTable.$nextTick().then(() => {
|
|
1678
1702
|
$xeTable.recalculate(true);
|
|
1679
1703
|
});
|
|
1680
1704
|
},
|
|
1681
1705
|
reScrollFlag() {
|
|
1682
1706
|
const $xeTable = this;
|
|
1683
|
-
$xeTable
|
|
1707
|
+
$xeTable.updateScrollbar().then(() => {
|
|
1684
1708
|
$xeTable.updateScrollbar();
|
|
1685
|
-
$xeTable.$nextTick(() => {
|
|
1686
|
-
$xeTable.updateScrollbar();
|
|
1687
|
-
});
|
|
1688
1709
|
});
|
|
1689
1710
|
},
|
|
1690
1711
|
footerData() {
|
|
@@ -2130,12 +2151,13 @@ export default {
|
|
|
2130
2151
|
warnLog('vxe.error.reqProp', ['tooltip-config']);
|
|
2131
2152
|
}
|
|
2132
2153
|
$xeTable.$nextTick(() => {
|
|
2133
|
-
const {
|
|
2154
|
+
const { autoResize } = props;
|
|
2134
2155
|
const { elemStore } = internalData;
|
|
2135
2156
|
// 使用已安装的组件,如果未安装则不渲染
|
|
2136
2157
|
const VxeUILoadingComponent = VxeUI.getComponent('VxeLoading');
|
|
2137
2158
|
const VxeUITooltipComponent = VxeUI.getComponent('VxeTooltip');
|
|
2138
2159
|
const { showOverflow, showHeaderOverflow, showFooterOverflow } = props;
|
|
2160
|
+
const isVScrollbar = $xeTable.computeIsVScrollbar;
|
|
2139
2161
|
const tooltipOpts = $xeTable.computeTooltipOpts;
|
|
2140
2162
|
const headerTooltipOpts = $xeTable.computeHeaderTooltipOpts;
|
|
2141
2163
|
const footerTooltipOpts = $xeTable.computeFooterTooltipOpts;
|
|
@@ -2176,7 +2198,7 @@ export default {
|
|
|
2176
2198
|
}
|
|
2177
2199
|
}
|
|
2178
2200
|
const el = $xeTable.$refs.refElem;
|
|
2179
|
-
if (
|
|
2201
|
+
if (isVScrollbar) {
|
|
2180
2202
|
const viewInnerEl = getRefElem(elemStore['main-body-table']);
|
|
2181
2203
|
const scrollObserver = globalResize.create(() => {
|
|
2182
2204
|
$xeTable.reScrollFlag++;
|
|
@@ -2291,9 +2313,10 @@ export default {
|
|
|
2291
2313
|
const slots = $xeTable.$scopedSlots;
|
|
2292
2314
|
const reactData = $xeTable;
|
|
2293
2315
|
const { xID } = $xeTable;
|
|
2294
|
-
const { loading, stripe,
|
|
2316
|
+
const { loading, stripe, showHeader, height, treeConfig, mouseConfig, showFooter, highlightCell, highlightHoverRow, highlightHoverColumn, editConfig, editRules, importConfig, exportConfig, printConfig } = props;
|
|
2295
2317
|
const { isGroup, overflowX, overflowY, scrollXLoad, scrollYLoad, tableData, initStore, isRowGroupStatus, columnStore, filterStore, customStore, tooltipStore } = reactData;
|
|
2296
2318
|
const { leftList, rightList } = columnStore;
|
|
2319
|
+
const isVScrollbar = $xeTable.computeIsVScrollbar;
|
|
2297
2320
|
const loadingSlot = slots.loading;
|
|
2298
2321
|
const tipSlots = {
|
|
2299
2322
|
header: slots.headerTooltip || slots['header-tooltip'],
|
|
@@ -2335,7 +2358,7 @@ export default {
|
|
|
2335
2358
|
}
|
|
2336
2359
|
return h('div', {
|
|
2337
2360
|
ref: 'refElem',
|
|
2338
|
-
class: ['vxe-table', 'vxe-table--render-default', `tid_${xID}`, `border--${tableBorder}`,
|
|
2361
|
+
class: ['vxe-table', 'vxe-table--render-default', `tid_${xID}`, `border--${tableBorder}`, isVScrollbar ? 'is--virtual-scrollbar' : 'is--native-scrollbar', `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`, {
|
|
2339
2362
|
[`size--${vSize}`]: vSize,
|
|
2340
2363
|
[`valid-msg--${validOpts.msgMode}`]: !!editRules,
|
|
2341
2364
|
'vxe-editable': !!editConfig,
|
|
@@ -2403,7 +2426,7 @@ export default {
|
|
|
2403
2426
|
h('div', {
|
|
2404
2427
|
key: 'tw',
|
|
2405
2428
|
class: 'vxe-table--render-wrapper'
|
|
2406
|
-
},
|
|
2429
|
+
}, isVScrollbar
|
|
2407
2430
|
? [renderVirtualBody(h, $xeTable)]
|
|
2408
2431
|
: (scrollbarXToTop
|
|
2409
2432
|
? [
|
|
@@ -2591,7 +2614,7 @@ export default {
|
|
|
2591
2614
|
props: {
|
|
2592
2615
|
isArrow: false,
|
|
2593
2616
|
enterable: false,
|
|
2594
|
-
useScrollbar
|
|
2617
|
+
useScrollbar: isVScrollbar
|
|
2595
2618
|
}
|
|
2596
2619
|
})
|
|
2597
2620
|
: renderEmptyElement($xeTable),
|
|
@@ -2663,7 +2686,7 @@ export default {
|
|
|
2663
2686
|
enterable: validTipConfig.enterable,
|
|
2664
2687
|
enterDelay: validTipConfig.enterDelay,
|
|
2665
2688
|
leaveDelay: validTipConfig.leaveDelay,
|
|
2666
|
-
useScrollbar
|
|
2689
|
+
useScrollbar: validTipConfig.useScrollbar
|
|
2667
2690
|
}
|
|
2668
2691
|
})
|
|
2669
2692
|
: renderEmptyElement($xeTable)
|
package/es/table/src/util.js
CHANGED
package/es/table/style.css
CHANGED
|
@@ -1606,6 +1606,7 @@
|
|
|
1606
1606
|
.vxe-table--filter-wrapper {
|
|
1607
1607
|
display: none;
|
|
1608
1608
|
position: absolute;
|
|
1609
|
+
flex-direction: column;
|
|
1609
1610
|
top: 0;
|
|
1610
1611
|
min-width: 100px;
|
|
1611
1612
|
font-size: var(--vxe-ui-font-size-default);
|
|
@@ -1615,16 +1616,30 @@
|
|
|
1615
1616
|
color: var(--vxe-ui-font-color);
|
|
1616
1617
|
box-shadow: var(--vxe-ui-base-popup-box-shadow);
|
|
1617
1618
|
z-index: 15;
|
|
1619
|
+
max-height: var(--vxe-ui-vxe-table-filter-default-max-height);
|
|
1618
1620
|
}
|
|
1619
1621
|
.vxe-table--filter-wrapper:not(.is--multiple) .vxe-table--filter-header,
|
|
1620
1622
|
.vxe-table--filter-wrapper:not(.is--multiple) .vxe-table--filter-body {
|
|
1621
1623
|
text-align: center;
|
|
1622
1624
|
}
|
|
1623
1625
|
.vxe-table--filter-wrapper.is--active {
|
|
1624
|
-
display:
|
|
1626
|
+
display: flex;
|
|
1625
1627
|
}
|
|
1626
|
-
.vxe-table--filter-wrapper .vxe-table--filter-
|
|
1627
|
-
.vxe-table--filter-wrapper .vxe-table--filter-body
|
|
1628
|
+
.vxe-table--filter-wrapper .vxe-table--filter-body,
|
|
1629
|
+
.vxe-table--filter-wrapper .vxe-table--scrollbar-filter-body {
|
|
1630
|
+
overflow: auto;
|
|
1631
|
+
flex-grow: 1;
|
|
1632
|
+
}
|
|
1633
|
+
.vxe-table--filter-wrapper .vxe-table--scrollbar-filter-body {
|
|
1634
|
+
display: flex;
|
|
1635
|
+
flex-direction: column;
|
|
1636
|
+
}
|
|
1637
|
+
.vxe-table--filter-wrapper .vxe-table--scrollbar-filter-body .vxe-table--scrollbar-filter-body-view {
|
|
1638
|
+
flex-grow: 1;
|
|
1639
|
+
}
|
|
1640
|
+
.vxe-table--filter-wrapper .vxe-table--filter-header .vxe-table--filter-option,
|
|
1641
|
+
.vxe-table--filter-wrapper .vxe-table--filter-body .vxe-table--filter-option,
|
|
1642
|
+
.vxe-table--filter-wrapper .vxe-table--scrollbar-filter-body .vxe-table--filter-option {
|
|
1628
1643
|
overflow: hidden;
|
|
1629
1644
|
text-overflow: ellipsis;
|
|
1630
1645
|
white-space: nowrap;
|
|
@@ -1632,22 +1647,25 @@
|
|
|
1632
1647
|
padding: 0.25em 0.8em;
|
|
1633
1648
|
cursor: pointer;
|
|
1634
1649
|
}
|
|
1635
|
-
.vxe-table--filter-wrapper .vxe-table--filter-header
|
|
1636
|
-
.vxe-table--filter-wrapper .vxe-table--filter-body
|
|
1650
|
+
.vxe-table--filter-wrapper .vxe-table--filter-header .vxe-table--filter-option.is--checked,
|
|
1651
|
+
.vxe-table--filter-wrapper .vxe-table--filter-body .vxe-table--filter-option.is--checked,
|
|
1652
|
+
.vxe-table--filter-wrapper .vxe-table--scrollbar-filter-body .vxe-table--filter-option.is--checked {
|
|
1637
1653
|
color: var(--vxe-ui-font-primary-color);
|
|
1638
1654
|
}
|
|
1639
|
-
.vxe-table--filter-wrapper .vxe-table--filter-header
|
|
1640
|
-
.vxe-table--filter-wrapper .vxe-table--filter-body
|
|
1655
|
+
.vxe-table--filter-wrapper .vxe-table--filter-header .vxe-table--filter-option:hover,
|
|
1656
|
+
.vxe-table--filter-wrapper .vxe-table--filter-body .vxe-table--filter-option:hover,
|
|
1657
|
+
.vxe-table--filter-wrapper .vxe-table--scrollbar-filter-body .vxe-table--filter-option:hover {
|
|
1641
1658
|
background-color: var(--vxe-ui-table-row-hover-background-color);
|
|
1642
1659
|
}
|
|
1643
1660
|
.vxe-table--filter-wrapper .vxe-table--filter-header {
|
|
1644
1661
|
padding-top: 0.2em;
|
|
1645
1662
|
}
|
|
1646
|
-
.vxe-table--filter-wrapper .vxe-table--filter-body
|
|
1647
|
-
|
|
1663
|
+
.vxe-table--filter-wrapper .vxe-table--filter-body,
|
|
1664
|
+
.vxe-table--filter-wrapper .vxe-table--scrollbar-filter-body {
|
|
1648
1665
|
padding-bottom: 0.2em;
|
|
1649
1666
|
}
|
|
1650
|
-
.vxe-table--filter-wrapper
|
|
1667
|
+
.vxe-table--filter-wrapper .vxe-table--filter-header,
|
|
1668
|
+
.vxe-table--filter-wrapper .vxe-table--filter-body {
|
|
1651
1669
|
list-style-type: none;
|
|
1652
1670
|
padding: 0;
|
|
1653
1671
|
margin: 0;
|
|
@@ -1657,8 +1675,9 @@
|
|
|
1657
1675
|
-moz-user-select: none;
|
|
1658
1676
|
user-select: none;
|
|
1659
1677
|
}
|
|
1660
|
-
.vxe-table--filter-wrapper.
|
|
1661
|
-
|
|
1678
|
+
.vxe-table--filter-wrapper .vxe-table--filter-header,
|
|
1679
|
+
.vxe-table--filter-wrapper .vxe-table--filter-footer {
|
|
1680
|
+
flex-shrink: 0;
|
|
1662
1681
|
}
|
|
1663
1682
|
.vxe-table--filter-wrapper .vxe-table--filter-footer {
|
|
1664
1683
|
border-top: 1px solid var(--vxe-ui-base-popup-border-color);
|