vxe-table 4.17.0-beta.9 → 4.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -4
- package/README.zh-TW.md +1 -1
- package/es/grid/src/grid.js +13 -5
- package/es/index.css +1 -1
- package/es/index.min.css +1 -1
- package/es/locale/lang/en-US.js +22 -22
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table/module/menu/hook.js +2 -2
- package/es/table/src/body.js +3 -0
- package/es/table/src/footer.js +2 -0
- package/es/table/src/header.js +3 -0
- package/es/table/src/table.js +146 -35
- package/es/table/src/util.js +22 -19
- package/es/table/style.css +48 -2
- 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 +48 -2
- package/es/vxe-table/style.min.css +1 -1
- package/helper/vetur/attributes.json +1 -1
- package/helper/vetur/tags.json +1 -1
- package/lib/grid/src/grid.js +12 -4
- package/lib/grid/src/grid.min.js +1 -1
- package/lib/index.css +1 -1
- package/lib/index.min.css +1 -1
- package/lib/index.umd.js +59 -41
- package/lib/index.umd.min.js +1 -1
- package/lib/locale/lang/en-US.js +22 -22
- package/lib/locale/lang/en-US.min.js +1 -1
- package/lib/locale/lang/en-US.umd.js +22 -22
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/module/menu/hook.js +2 -0
- package/lib/table/module/menu/hook.min.js +1 -1
- package/lib/table/src/body.js +3 -0
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/footer.js +2 -0
- package/lib/table/src/footer.min.js +1 -1
- package/lib/table/src/header.js +3 -0
- package/lib/table/src/header.min.js +1 -1
- package/lib/table/src/table.js +25 -16
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +10 -19
- package/lib/table/src/util.min.js +1 -1
- package/lib/table/style/style.css +48 -2
- 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 +48 -2
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +2 -2
- package/packages/grid/src/grid.ts +53 -45
- package/packages/locale/lang/en-US.ts +22 -22
- package/packages/table/module/menu/hook.ts +2 -2
- package/packages/table/src/body.ts +3 -0
- package/packages/table/src/footer.ts +2 -0
- package/packages/table/src/header.ts +3 -0
- package/packages/table/src/table.ts +147 -35
- package/packages/table/src/util.ts +30 -19
- package/styles/components/table.scss +90 -2
- /package/es/{iconfont.1760602279303.ttf → iconfont.1761181613193.ttf} +0 -0
- /package/es/{iconfont.1760602279303.woff → iconfont.1761181613193.woff} +0 -0
- /package/es/{iconfont.1760602279303.woff2 → iconfont.1761181613193.woff2} +0 -0
- /package/lib/{iconfont.1760602279303.ttf → iconfont.1761181613193.ttf} +0 -0
- /package/lib/{iconfont.1760602279303.woff → iconfont.1761181613193.woff} +0 -0
- /package/lib/{iconfont.1760602279303.woff2 → iconfont.1761181613193.woff2} +0 -0
package/es/table/src/body.js
CHANGED
|
@@ -7,6 +7,7 @@ import { updateCellTitle, getPropClass } from '../../ui/src/dom';
|
|
|
7
7
|
import { isEnableConf } from '../../ui/src/utils';
|
|
8
8
|
import { getSlotVNs } from '../../ui/src/vn';
|
|
9
9
|
const { getI18n, renderer, renderEmptyElement } = VxeUI;
|
|
10
|
+
const sourceType = 'table';
|
|
10
11
|
const renderType = 'body';
|
|
11
12
|
export default defineVxeComponent({
|
|
12
13
|
name: 'VxeTableBody',
|
|
@@ -149,6 +150,7 @@ export default defineVxeComponent({
|
|
|
149
150
|
$columnIndex,
|
|
150
151
|
_columnIndex,
|
|
151
152
|
fixed: fixedType,
|
|
153
|
+
source: sourceType,
|
|
152
154
|
type: renderType,
|
|
153
155
|
isHidden: !!fixedHiddenColumn,
|
|
154
156
|
level: rowLevel,
|
|
@@ -569,6 +571,7 @@ export default defineVxeComponent({
|
|
|
569
571
|
$columnIndex,
|
|
570
572
|
_columnIndex,
|
|
571
573
|
fixed: fixedType,
|
|
574
|
+
source: sourceType,
|
|
572
575
|
type: renderType,
|
|
573
576
|
level: rowLevel,
|
|
574
577
|
row,
|
package/es/table/src/footer.js
CHANGED
|
@@ -5,6 +5,7 @@ import { VxeUI } from '../../ui';
|
|
|
5
5
|
import { updateCellTitle, getPropClass } from '../../ui/src/dom';
|
|
6
6
|
import { getCalcHeight } from './util';
|
|
7
7
|
const { renderer, renderEmptyElement } = VxeUI;
|
|
8
|
+
const sourceType = 'table';
|
|
8
9
|
const renderType = 'footer';
|
|
9
10
|
export default defineVxeComponent({
|
|
10
11
|
name: 'VxeTableFooter',
|
|
@@ -88,6 +89,7 @@ export default defineVxeComponent({
|
|
|
88
89
|
itemIndex,
|
|
89
90
|
items: row,
|
|
90
91
|
fixed: fixedType,
|
|
92
|
+
source: sourceType,
|
|
91
93
|
type: renderType,
|
|
92
94
|
data: footerTableData
|
|
93
95
|
};
|
package/es/table/src/header.js
CHANGED
|
@@ -6,6 +6,7 @@ import { isEnableConf } from '../../ui/src/utils';
|
|
|
6
6
|
import { getCalcHeight, convertHeaderColumnToRows, convertHeaderToGridRows } from './util';
|
|
7
7
|
import { getSlotVNs } from '../../ui/src/vn';
|
|
8
8
|
const { renderer, renderEmptyElement } = VxeUI;
|
|
9
|
+
const sourceType = 'table';
|
|
9
10
|
const renderType = 'header';
|
|
10
11
|
function getColumnFirstChild(column) {
|
|
11
12
|
const { children } = column;
|
|
@@ -109,6 +110,7 @@ export default defineVxeComponent({
|
|
|
109
110
|
_columnIndex,
|
|
110
111
|
firstFilterOption: firstFilterOption,
|
|
111
112
|
fixed: fixedType,
|
|
113
|
+
source: sourceType,
|
|
112
114
|
type: renderType,
|
|
113
115
|
isHidden: fixedHiddenColumn,
|
|
114
116
|
hasFilter
|
|
@@ -286,6 +288,7 @@ export default defineVxeComponent({
|
|
|
286
288
|
_columnIndex,
|
|
287
289
|
option: firstFilterOption,
|
|
288
290
|
fixed: fixedType,
|
|
291
|
+
source: sourceType,
|
|
289
292
|
type: renderType,
|
|
290
293
|
isHidden: fixedHiddenColumn,
|
|
291
294
|
hasFilter
|
package/es/table/src/table.js
CHANGED
|
@@ -413,13 +413,23 @@ export default defineVxeComponent({
|
|
|
413
413
|
const computeScrollbarOpts = computed(() => {
|
|
414
414
|
return Object.assign({}, getConfig().table.scrollbarConfig, props.scrollbarConfig);
|
|
415
415
|
});
|
|
416
|
-
const
|
|
416
|
+
const computeScrollbarXOpts = computed(() => {
|
|
417
|
+
var _a;
|
|
417
418
|
const scrollbarOpts = computeScrollbarOpts.value;
|
|
418
|
-
return
|
|
419
|
+
return Object.assign({}, scrollbarOpts.x, ((_a = props.scrollbarConfig) === null || _a === void 0 ? void 0 : _a.x) || {});
|
|
419
420
|
});
|
|
420
|
-
const
|
|
421
|
+
const computeScrollbarYOpts = computed(() => {
|
|
422
|
+
var _a;
|
|
421
423
|
const scrollbarOpts = computeScrollbarOpts.value;
|
|
422
|
-
return
|
|
424
|
+
return Object.assign({}, scrollbarOpts.y, ((_a = props.scrollbarConfig) === null || _a === void 0 ? void 0 : _a.y) || {});
|
|
425
|
+
});
|
|
426
|
+
const computeScrollbarXToTop = computed(() => {
|
|
427
|
+
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
428
|
+
return scrollbarXOpts.position === 'top';
|
|
429
|
+
});
|
|
430
|
+
const computeScrollbarYToLeft = computed(() => {
|
|
431
|
+
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
432
|
+
return scrollbarYOpts.position === 'left';
|
|
423
433
|
});
|
|
424
434
|
const computeScrollYThreshold = computed(() => {
|
|
425
435
|
const virtualYOpts = computeVirtualYOpts.value;
|
|
@@ -770,6 +780,8 @@ export default defineVxeComponent({
|
|
|
770
780
|
computeVirtualXOpts,
|
|
771
781
|
computeVirtualYOpts,
|
|
772
782
|
computeScrollbarOpts,
|
|
783
|
+
computeScrollbarXOpts,
|
|
784
|
+
computeScrollbarYOpts,
|
|
773
785
|
computeScrollbarXToTop,
|
|
774
786
|
computeScrollbarYToLeft,
|
|
775
787
|
computeColumnOpts,
|
|
@@ -1457,7 +1469,7 @@ export default defineVxeComponent({
|
|
|
1457
1469
|
});
|
|
1458
1470
|
};
|
|
1459
1471
|
const calcTableHeight = (key) => {
|
|
1460
|
-
const { editConfig } = props;
|
|
1472
|
+
const { editConfig, editRules } = props;
|
|
1461
1473
|
const { parentHeight } = reactData;
|
|
1462
1474
|
let val = props[key];
|
|
1463
1475
|
if (key === 'minHeight') {
|
|
@@ -1465,7 +1477,7 @@ export default defineVxeComponent({
|
|
|
1465
1477
|
if (XEUtils.eqNull(val)) {
|
|
1466
1478
|
if (eqEmptyValue(defMinHeight)) {
|
|
1467
1479
|
// 编辑模式默认最小高度
|
|
1468
|
-
if (isEnableConf(editConfig)) {
|
|
1480
|
+
if (editRules && isEnableConf(editConfig)) {
|
|
1469
1481
|
val = 144;
|
|
1470
1482
|
}
|
|
1471
1483
|
}
|
|
@@ -2316,7 +2328,7 @@ export default defineVxeComponent({
|
|
|
2316
2328
|
const { visibleColumn, tableHeight, elemStore, customHeight, customMinHeight, customMaxHeight, tHeaderHeight, tFooterHeight } = internalData;
|
|
2317
2329
|
const $xeGanttView = internalData.xeGanttView;
|
|
2318
2330
|
const el = refElem.value;
|
|
2319
|
-
if (!el || !el.clientHeight) {
|
|
2331
|
+
if (!el || (internalData.tBodyHeight && !el.clientHeight)) {
|
|
2320
2332
|
return;
|
|
2321
2333
|
}
|
|
2322
2334
|
const containerList = ['main', 'left', 'right'];
|
|
@@ -2333,7 +2345,6 @@ export default defineVxeComponent({
|
|
|
2333
2345
|
emptyPlaceholderElem.style.height = bodyWrapperElem ? `${bodyWrapperElem.offsetHeight - osbHeight}px` : '';
|
|
2334
2346
|
}
|
|
2335
2347
|
const scrollbarXConf = scrollbarOpts.x || {};
|
|
2336
|
-
const scrollbarXToTop = computeScrollbarXToTop.value;
|
|
2337
2348
|
const scrollbarYConf = scrollbarOpts.y || {};
|
|
2338
2349
|
const scrollbarYToLeft = computeScrollbarYToLeft.value;
|
|
2339
2350
|
let xScrollbarVisible = overflowX ? 'visible' : 'hidden';
|
|
@@ -2383,16 +2394,31 @@ export default defineVxeComponent({
|
|
|
2383
2394
|
}
|
|
2384
2395
|
const xWrapperEl = refScrollXWrapperElem.value;
|
|
2385
2396
|
if (xWrapperEl) {
|
|
2386
|
-
xWrapperEl.style.left = scrollbarXToTop ? `${osbWidth}px` : '';
|
|
2387
2397
|
xWrapperEl.style.width = `${el.clientWidth - osbWidth}px`;
|
|
2398
|
+
if (scrollbarYToLeft) {
|
|
2399
|
+
xWrapperEl.style.left = `${osbWidth}px`;
|
|
2400
|
+
}
|
|
2401
|
+
else {
|
|
2402
|
+
xWrapperEl.style.left = '';
|
|
2403
|
+
}
|
|
2388
2404
|
}
|
|
2389
2405
|
if (xLeftCornerEl) {
|
|
2390
|
-
|
|
2391
|
-
|
|
2406
|
+
if (scrollbarYToLeft) {
|
|
2407
|
+
xLeftCornerEl.style.width = `${osbWidth}px`;
|
|
2408
|
+
xLeftCornerEl.style.display = overflowY && osbWidth ? 'block' : '';
|
|
2409
|
+
}
|
|
2410
|
+
else {
|
|
2411
|
+
xLeftCornerEl.style.display = '';
|
|
2412
|
+
}
|
|
2392
2413
|
}
|
|
2393
2414
|
if (xRightCornerEl) {
|
|
2394
|
-
|
|
2395
|
-
|
|
2415
|
+
if (scrollbarYToLeft) {
|
|
2416
|
+
xRightCornerEl.style.display = '';
|
|
2417
|
+
}
|
|
2418
|
+
else {
|
|
2419
|
+
xRightCornerEl.style.width = `${osbWidth}px`;
|
|
2420
|
+
xRightCornerEl.style.display = xScrollbarVisible === 'visible' ? 'block' : '';
|
|
2421
|
+
}
|
|
2396
2422
|
}
|
|
2397
2423
|
const scrollYVirtualEl = refScrollYVirtualElem.value;
|
|
2398
2424
|
if (scrollYVirtualEl) {
|
|
@@ -3970,8 +3996,10 @@ export default defineVxeComponent({
|
|
|
3970
3996
|
updateAfterDataIndex();
|
|
3971
3997
|
return nextTick();
|
|
3972
3998
|
}).then(() => {
|
|
3999
|
+
updateTreeLineStyle();
|
|
3973
4000
|
return handleLazyRecalculate(true, true, true);
|
|
3974
4001
|
}).then(() => {
|
|
4002
|
+
updateTreeLineStyle();
|
|
3975
4003
|
setTimeout(() => {
|
|
3976
4004
|
$xeTable.updateCellAreas();
|
|
3977
4005
|
}, 30);
|
|
@@ -4329,6 +4357,9 @@ export default defineVxeComponent({
|
|
|
4329
4357
|
}
|
|
4330
4358
|
}
|
|
4331
4359
|
};
|
|
4360
|
+
/**
|
|
4361
|
+
* 更新展开行样式
|
|
4362
|
+
*/
|
|
4332
4363
|
const updateRowExpandStyle = () => {
|
|
4333
4364
|
const { expandColumn, scrollYLoad, scrollYTop, isScrollYBig } = reactData;
|
|
4334
4365
|
const expandOpts = computeExpandOpts.value;
|
|
@@ -4384,6 +4415,12 @@ export default defineVxeComponent({
|
|
|
4384
4415
|
}
|
|
4385
4416
|
}
|
|
4386
4417
|
};
|
|
4418
|
+
/**
|
|
4419
|
+
* 更新树连接线样式
|
|
4420
|
+
*/
|
|
4421
|
+
const updateTreeLineStyle = () => {
|
|
4422
|
+
// 待优化
|
|
4423
|
+
};
|
|
4387
4424
|
const handleRowExpandScroll = () => {
|
|
4388
4425
|
const { elemStore } = internalData;
|
|
4389
4426
|
const rowExpandEl = refRowExpandElem.value;
|
|
@@ -6817,14 +6854,40 @@ export default defineVxeComponent({
|
|
|
6817
6854
|
* 获取表格的滚动状态
|
|
6818
6855
|
*/
|
|
6819
6856
|
getScroll() {
|
|
6820
|
-
|
|
6857
|
+
return $xeTable.getScrollData();
|
|
6858
|
+
},
|
|
6859
|
+
/**
|
|
6860
|
+
* 获取表格的滚动数据
|
|
6861
|
+
*/
|
|
6862
|
+
getScrollData() {
|
|
6863
|
+
const { scrollXLoad, scrollYLoad, scrollbarHeight, scrollbarWidth } = reactData;
|
|
6821
6864
|
const { elemStore } = internalData;
|
|
6822
6865
|
const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
|
|
6866
|
+
const scrollTop = bodyScrollElem ? bodyScrollElem.scrollTop : 0;
|
|
6867
|
+
const scrollLeft = bodyScrollElem ? bodyScrollElem.scrollLeft : 0;
|
|
6868
|
+
const clientHeight = bodyScrollElem ? bodyScrollElem.clientHeight : 0;
|
|
6869
|
+
const clientWidth = bodyScrollElem ? bodyScrollElem.clientWidth : 0;
|
|
6870
|
+
const scrollHeight = bodyScrollElem ? bodyScrollElem.scrollHeight : 0;
|
|
6871
|
+
const scrollWidth = bodyScrollElem ? bodyScrollElem.scrollWidth : 0;
|
|
6872
|
+
const isTop = scrollTop <= 0;
|
|
6873
|
+
const isBottom = scrollTop + clientHeight >= scrollHeight;
|
|
6874
|
+
const isLeft = scrollLeft <= 0;
|
|
6875
|
+
const isRight = scrollLeft + clientWidth >= scrollWidth;
|
|
6823
6876
|
return {
|
|
6824
6877
|
virtualX: scrollXLoad,
|
|
6825
6878
|
virtualY: scrollYLoad,
|
|
6826
|
-
|
|
6827
|
-
|
|
6879
|
+
isTop,
|
|
6880
|
+
isBottom,
|
|
6881
|
+
isLeft,
|
|
6882
|
+
isRight,
|
|
6883
|
+
scrollbarHeight,
|
|
6884
|
+
scrollbarWidth,
|
|
6885
|
+
scrollTop,
|
|
6886
|
+
scrollLeft,
|
|
6887
|
+
scrollHeight,
|
|
6888
|
+
scrollWidth,
|
|
6889
|
+
clientHeight,
|
|
6890
|
+
clientWidth
|
|
6828
6891
|
};
|
|
6829
6892
|
},
|
|
6830
6893
|
/**
|
|
@@ -6944,6 +7007,8 @@ export default defineVxeComponent({
|
|
|
6944
7007
|
scrollYStore.endIndex = scrollYStore.visibleSize;
|
|
6945
7008
|
scrollYStore.visibleEndIndex = scrollYStore.visibleSize;
|
|
6946
7009
|
return nextTick().then(() => {
|
|
7010
|
+
internalData.lastScrollLeft = 0;
|
|
7011
|
+
internalData.lastScrollTop = 0;
|
|
6947
7012
|
internalData.intoRunScroll = false;
|
|
6948
7013
|
});
|
|
6949
7014
|
},
|
|
@@ -8165,7 +8230,7 @@ export default defineVxeComponent({
|
|
|
8165
8230
|
const el = refElem.value;
|
|
8166
8231
|
if (el) {
|
|
8167
8232
|
const parentElem = el.parentNode;
|
|
8168
|
-
|
|
8233
|
+
let parentPaddingSize = 0;
|
|
8169
8234
|
let parentWrapperHeight = 0;
|
|
8170
8235
|
if (parentElem) {
|
|
8171
8236
|
if ($xeGantt && hasClass(parentElem, 'vxe-gantt--table-wrapper')) {
|
|
@@ -8176,6 +8241,7 @@ export default defineVxeComponent({
|
|
|
8176
8241
|
}
|
|
8177
8242
|
else {
|
|
8178
8243
|
parentWrapperHeight = parentElem.clientHeight;
|
|
8244
|
+
parentPaddingSize = height === '100%' || height === 'auto' ? getPaddingTopBottomSize(parentElem) : 0;
|
|
8179
8245
|
}
|
|
8180
8246
|
}
|
|
8181
8247
|
return Math.floor(parentWrapperHeight - parentPaddingSize);
|
|
@@ -11205,11 +11271,10 @@ export default defineVxeComponent({
|
|
|
11205
11271
|
const { scrollXLoad, scrollYLoad, expandColumn } = reactData;
|
|
11206
11272
|
const leftFixedWidth = computeLeftFixedWidth.value;
|
|
11207
11273
|
const rightFixedWidth = computeRightFixedWidth.value;
|
|
11208
|
-
if (!(leftFixedWidth || rightFixedWidth || expandColumn)) {
|
|
11209
|
-
return;
|
|
11210
|
-
}
|
|
11211
11274
|
const { elemStore, lastScrollTop, lastScrollLeft } = internalData;
|
|
11212
11275
|
const rowOpts = computeRowOpts.value;
|
|
11276
|
+
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
11277
|
+
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
11213
11278
|
const xHandleEl = refScrollXHandleElem.value;
|
|
11214
11279
|
const yHandleEl = refScrollYHandleElem.value;
|
|
11215
11280
|
const leftScrollElem = getRefElem(elemStore['left-body-scroll']);
|
|
@@ -11218,12 +11283,6 @@ export default defineVxeComponent({
|
|
|
11218
11283
|
const footerScrollElem = getRefElem(elemStore['main-footer-scroll']);
|
|
11219
11284
|
const rightScrollElem = getRefElem(elemStore['right-body-scroll']);
|
|
11220
11285
|
const rowExpandEl = refRowExpandElem.value;
|
|
11221
|
-
if (!xHandleEl) {
|
|
11222
|
-
return;
|
|
11223
|
-
}
|
|
11224
|
-
if (!yHandleEl) {
|
|
11225
|
-
return;
|
|
11226
|
-
}
|
|
11227
11286
|
if (!bodyScrollElem) {
|
|
11228
11287
|
return;
|
|
11229
11288
|
}
|
|
@@ -11236,13 +11295,28 @@ export default defineVxeComponent({
|
|
|
11236
11295
|
const scrollLeft = currScrollLeft + deltaLeft;
|
|
11237
11296
|
const isRollX = scrollLeft !== lastScrollLeft;
|
|
11238
11297
|
const isRollY = scrollTop !== lastScrollTop;
|
|
11298
|
+
if (isRollX) {
|
|
11299
|
+
// 如果禁用滚动
|
|
11300
|
+
if (scrollbarXOpts.visible === 'hidden') {
|
|
11301
|
+
evnt.preventDefault();
|
|
11302
|
+
return;
|
|
11303
|
+
}
|
|
11304
|
+
}
|
|
11239
11305
|
if (isRollY) {
|
|
11306
|
+
// 如果禁用滚动
|
|
11307
|
+
if (scrollbarYOpts.visible === 'hidden') {
|
|
11308
|
+
evnt.preventDefault();
|
|
11309
|
+
return;
|
|
11310
|
+
}
|
|
11240
11311
|
const isTopWheel = deltaTop < 0;
|
|
11241
11312
|
// 如果滚动位置已经是顶部或底部,则不需要触发
|
|
11242
11313
|
if (isTopWheel ? currScrollTop <= 0 : currScrollTop >= bodyScrollElem.scrollHeight - bodyScrollElem.clientHeight) {
|
|
11243
11314
|
return;
|
|
11244
11315
|
}
|
|
11245
11316
|
}
|
|
11317
|
+
if (!(leftFixedWidth || rightFixedWidth || expandColumn)) {
|
|
11318
|
+
return;
|
|
11319
|
+
}
|
|
11246
11320
|
if (rowOpts.isHover || highlightHoverRow) {
|
|
11247
11321
|
$xeTable.clearHoverRow();
|
|
11248
11322
|
}
|
|
@@ -11745,14 +11819,24 @@ export default defineVxeComponent({
|
|
|
11745
11819
|
* 如果宽度足够情况下,则不需要渲染固定列
|
|
11746
11820
|
* @param {String} fixedType 固定列类型
|
|
11747
11821
|
*/
|
|
11748
|
-
const
|
|
11822
|
+
const renderViewFixed = (fixedType) => {
|
|
11749
11823
|
const { showHeader, showFooter } = props;
|
|
11750
11824
|
const { tableData, tableColumn, tableGroupColumn, columnStore, footerTableData } = reactData;
|
|
11825
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
11826
|
+
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
11827
|
+
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
11828
|
+
const { overscrollBehavior: overscrollXBehavior } = scrollbarXOpts;
|
|
11829
|
+
const { overscrollBehavior: overscrollYBehavior } = scrollbarYOpts;
|
|
11751
11830
|
const isFixedLeft = fixedType === 'left';
|
|
11752
11831
|
const fixedColumn = isFixedLeft ? columnStore.leftList : columnStore.rightList;
|
|
11832
|
+
const osXBehavior = XEUtils.eqNull(overscrollXBehavior) ? scrollbarOpts.overscrollBehavior : overscrollXBehavior;
|
|
11833
|
+
const osYBehavior = XEUtils.eqNull(overscrollYBehavior) ? scrollbarOpts.overscrollBehavior : overscrollYBehavior;
|
|
11753
11834
|
return h('div', {
|
|
11754
11835
|
ref: isFixedLeft ? refLeftContainer : refRightContainer,
|
|
11755
|
-
class: `vxe-table--fixed-${fixedType}-wrapper`
|
|
11836
|
+
class: [`vxe-table--fixed-${fixedType}-wrapper`, `sx--${scrollbarXOpts.visible}`, `sy--${scrollbarYOpts.visible}`, {
|
|
11837
|
+
[`x-ob--${osXBehavior}`]: osXBehavior,
|
|
11838
|
+
[`y-ob--${osYBehavior}`]: osYBehavior
|
|
11839
|
+
}]
|
|
11756
11840
|
}, [
|
|
11757
11841
|
showHeader
|
|
11758
11842
|
? h(TableHeaderComponent, {
|
|
@@ -11940,6 +12024,7 @@ export default defineVxeComponent({
|
|
|
11940
12024
|
$columnIndex,
|
|
11941
12025
|
_columnIndex,
|
|
11942
12026
|
fixed: '',
|
|
12027
|
+
source: 'table',
|
|
11943
12028
|
type: 'body',
|
|
11944
12029
|
level: rowLevel,
|
|
11945
12030
|
rowid,
|
|
@@ -12039,13 +12124,23 @@ export default defineVxeComponent({
|
|
|
12039
12124
|
const renderViewport = () => {
|
|
12040
12125
|
const { showHeader, showFooter } = props;
|
|
12041
12126
|
const { overflowX, tableData, tableColumn, tableGroupColumn, footerTableData, columnStore } = reactData;
|
|
12127
|
+
const scrollbarOpts = computeScrollbarOpts.value;
|
|
12128
|
+
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
12129
|
+
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
12130
|
+
const { overscrollBehavior: overscrollXBehavior } = scrollbarXOpts;
|
|
12131
|
+
const { overscrollBehavior: overscrollYBehavior } = scrollbarYOpts;
|
|
12042
12132
|
const { leftList, rightList } = columnStore;
|
|
12133
|
+
const osXBehavior = XEUtils.eqNull(overscrollXBehavior) ? scrollbarOpts.overscrollBehavior : overscrollXBehavior;
|
|
12134
|
+
const osYBehavior = XEUtils.eqNull(overscrollYBehavior) ? scrollbarOpts.overscrollBehavior : overscrollYBehavior;
|
|
12043
12135
|
return h('div', {
|
|
12044
12136
|
ref: refTableViewportElem,
|
|
12045
|
-
class: 'vxe-table--viewport-wrapper'
|
|
12137
|
+
class: ['vxe-table--viewport-wrapper', {
|
|
12138
|
+
[`x-ob--${osXBehavior}`]: osXBehavior,
|
|
12139
|
+
[`y-ob--${osYBehavior}`]: osYBehavior
|
|
12140
|
+
}]
|
|
12046
12141
|
}, [
|
|
12047
12142
|
h('div', {
|
|
12048
|
-
class: 'vxe-table--main-wrapper'
|
|
12143
|
+
class: ['vxe-table--main-wrapper', `sx--${scrollbarXOpts.visible}`, `sy--${scrollbarYOpts.visible}`]
|
|
12049
12144
|
}, [
|
|
12050
12145
|
/**
|
|
12051
12146
|
* 表头
|
|
@@ -12080,8 +12175,8 @@ export default defineVxeComponent({
|
|
|
12080
12175
|
h('div', {
|
|
12081
12176
|
class: 'vxe-table--fixed-wrapper'
|
|
12082
12177
|
}, [
|
|
12083
|
-
leftList && leftList.length && overflowX ?
|
|
12084
|
-
rightList && rightList.length && overflowX ?
|
|
12178
|
+
leftList && leftList.length && overflowX ? renderViewFixed('left') : renderEmptyElement($xeTable),
|
|
12179
|
+
rightList && rightList.length && overflowX ? renderViewFixed('right') : renderEmptyElement($xeTable)
|
|
12085
12180
|
]),
|
|
12086
12181
|
renderRowExpandedVNs()
|
|
12087
12182
|
]);
|
|
@@ -12211,11 +12306,15 @@ export default defineVxeComponent({
|
|
|
12211
12306
|
h('div', {
|
|
12212
12307
|
key: 'tn',
|
|
12213
12308
|
ref: refEmptyPlaceholder,
|
|
12214
|
-
class: 'vxe-table--empty-
|
|
12309
|
+
class: 'vxe-table--empty-place-wrapper'
|
|
12215
12310
|
}, [
|
|
12216
12311
|
h('div', {
|
|
12217
|
-
class: 'vxe-table--empty-
|
|
12218
|
-
},
|
|
12312
|
+
class: 'vxe-table--empty-placeholder'
|
|
12313
|
+
}, [
|
|
12314
|
+
h('div', {
|
|
12315
|
+
class: 'vxe-table--empty-content'
|
|
12316
|
+
}, renderEmptyBody())
|
|
12317
|
+
])
|
|
12219
12318
|
]),
|
|
12220
12319
|
/**
|
|
12221
12320
|
* 边框线
|
|
@@ -12522,6 +12621,18 @@ export default defineVxeComponent({
|
|
|
12522
12621
|
watch(() => VxeUI.getLanguage(), () => {
|
|
12523
12622
|
reLayoutFlag.value++;
|
|
12524
12623
|
});
|
|
12624
|
+
watch(() => {
|
|
12625
|
+
const scrollbarXOpts = computeScrollbarXOpts.value;
|
|
12626
|
+
return scrollbarXOpts.visible;
|
|
12627
|
+
}, () => {
|
|
12628
|
+
reLayoutFlag.value++;
|
|
12629
|
+
});
|
|
12630
|
+
watch(() => {
|
|
12631
|
+
const scrollbarYOpts = computeScrollbarYOpts.value;
|
|
12632
|
+
return scrollbarYOpts.visible;
|
|
12633
|
+
}, () => {
|
|
12634
|
+
reLayoutFlag.value++;
|
|
12635
|
+
});
|
|
12525
12636
|
watch(reLayoutFlag, () => {
|
|
12526
12637
|
$xeTable.recalculate(true);
|
|
12527
12638
|
});
|
package/es/table/src/util.js
CHANGED
|
@@ -566,7 +566,7 @@ const lineOffsetSizes = {
|
|
|
566
566
|
medium: 1,
|
|
567
567
|
large: 0
|
|
568
568
|
};
|
|
569
|
-
function
|
|
569
|
+
function countTreeExpandSize(prevRow, params) {
|
|
570
570
|
let count = 1;
|
|
571
571
|
if (!prevRow) {
|
|
572
572
|
return count;
|
|
@@ -583,7 +583,7 @@ function countTreeExpand(prevRow, params) {
|
|
|
583
583
|
const rowChildren = prevRow[transform ? mapChildrenField : childrenField];
|
|
584
584
|
if (rowChildren && treeExpandedFlag && treeExpandedMaps[getRowid($table, prevRow)]) {
|
|
585
585
|
for (let index = 0; index < rowChildren.length; index++) {
|
|
586
|
-
count +=
|
|
586
|
+
count += countTreeExpandSize(rowChildren[index], params);
|
|
587
587
|
}
|
|
588
588
|
}
|
|
589
589
|
return count;
|
|
@@ -613,7 +613,7 @@ export function calcTreeLine(params, prevRow) {
|
|
|
613
613
|
const currCellHeight = rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight;
|
|
614
614
|
let expandSize = 1;
|
|
615
615
|
if (prevRow) {
|
|
616
|
-
expandSize =
|
|
616
|
+
expandSize = countTreeExpandSize(prevRow, params);
|
|
617
617
|
}
|
|
618
618
|
let cellHeight = currCellHeight;
|
|
619
619
|
const vnHeight = rowRest.height;
|
|
@@ -627,28 +627,31 @@ export function calcTreeLine(params, prevRow) {
|
|
|
627
627
|
export function clearTableDefaultStatus($xeTable) {
|
|
628
628
|
const { props, internalData } = $xeTable;
|
|
629
629
|
internalData.initStatus = false;
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
630
|
+
const actionList = [
|
|
631
|
+
$xeTable.clearSort(),
|
|
632
|
+
$xeTable.clearCurrentRow(),
|
|
633
|
+
$xeTable.clearCurrentColumn(),
|
|
634
|
+
$xeTable.clearRadioRow(),
|
|
635
|
+
$xeTable.clearRadioReserve(),
|
|
636
|
+
$xeTable.clearCheckboxRow(),
|
|
637
|
+
$xeTable.clearCheckboxReserve(),
|
|
638
|
+
$xeTable.clearRowExpand(),
|
|
639
|
+
$xeTable.clearTreeExpand(),
|
|
640
|
+
$xeTable.clearTreeExpandReserve(),
|
|
641
|
+
$xeTable.clearPendingRow()
|
|
642
|
+
];
|
|
641
643
|
if ($xeTable.clearFilter) {
|
|
642
|
-
$xeTable.clearFilter();
|
|
644
|
+
actionList.push($xeTable.clearFilter());
|
|
643
645
|
}
|
|
644
646
|
if ($xeTable.clearSelected && (props.keyboardConfig || props.mouseConfig)) {
|
|
645
|
-
$xeTable.clearSelected();
|
|
647
|
+
actionList.push($xeTable.clearSelected());
|
|
646
648
|
}
|
|
647
649
|
if ($xeTable.clearCellAreas && props.mouseConfig) {
|
|
648
|
-
$xeTable.clearCellAreas();
|
|
649
|
-
$xeTable.clearCopyCellArea();
|
|
650
|
+
actionList.push($xeTable.clearCellAreas(), $xeTable.clearCopyCellArea());
|
|
650
651
|
}
|
|
651
|
-
return
|
|
652
|
+
return Promise.all(actionList).then(() => {
|
|
653
|
+
return $xeTable.clearScroll();
|
|
654
|
+
});
|
|
652
655
|
}
|
|
653
656
|
export function clearTableAllStatus($xeTable) {
|
|
654
657
|
if ($xeTable.clearFilter) {
|
package/es/table/style.css
CHANGED
|
@@ -1788,6 +1788,18 @@
|
|
|
1788
1788
|
overflow: hidden;
|
|
1789
1789
|
flex-grow: 1;
|
|
1790
1790
|
}
|
|
1791
|
+
.vxe-table--viewport-wrapper.x-ob--contain > .vxe-table--main-wrapper > .vxe-table--header-wrapper > .vxe-table--header-inner-wrapper {
|
|
1792
|
+
overscroll-behavior-x: contain;
|
|
1793
|
+
}
|
|
1794
|
+
.vxe-table--viewport-wrapper.x-ob--contain > .vxe-table--main-wrapper > .vxe-table--body-wrapper > .vxe-table--body-inner-wrapper {
|
|
1795
|
+
overscroll-behavior-x: contain;
|
|
1796
|
+
}
|
|
1797
|
+
.vxe-table--viewport-wrapper.x-ob--contain > .vxe-table--main-wrapper > .vxe-table--footer-wrapper > .vxe-table--footer-inner-wrapper {
|
|
1798
|
+
overscroll-behavior-x: contain;
|
|
1799
|
+
}
|
|
1800
|
+
.vxe-table--viewport-wrapper.y-ob--contain > .vxe-table--main-wrapper > .vxe-table--body-wrapper > .vxe-table--body-inner-wrapper {
|
|
1801
|
+
overscroll-behavior-y: contain;
|
|
1802
|
+
}
|
|
1791
1803
|
|
|
1792
1804
|
.vxe-table--header-wrapper,
|
|
1793
1805
|
.vxe-table--body-wrapper,
|
|
@@ -1827,6 +1839,28 @@
|
|
|
1827
1839
|
overflow-x: scroll;
|
|
1828
1840
|
}
|
|
1829
1841
|
|
|
1842
|
+
.vxe-table--main-wrapper.sx--hidden > .vxe-table--header-wrapper > .vxe-table--header-inner-wrapper {
|
|
1843
|
+
overflow-x: hidden;
|
|
1844
|
+
}
|
|
1845
|
+
.vxe-table--main-wrapper.sx--hidden > .vxe-table--body-wrapper > .vxe-table--body-inner-wrapper {
|
|
1846
|
+
overflow-x: hidden;
|
|
1847
|
+
}
|
|
1848
|
+
.vxe-table--main-wrapper.sx--hidden > .vxe-table--footer-wrapper > .vxe-table--footer-inner-wrapper {
|
|
1849
|
+
overflow-x: hidden;
|
|
1850
|
+
}
|
|
1851
|
+
.vxe-table--main-wrapper.sy--hidden > .vxe-table--body-wrapper > .vxe-table--body-inner-wrapper {
|
|
1852
|
+
overflow-y: hidden;
|
|
1853
|
+
}
|
|
1854
|
+
|
|
1855
|
+
.vxe-table--fixed-left-wrapper.sx--hidden > .vxe-table--body-wrapper > .vxe-table--body-inner-wrapper,
|
|
1856
|
+
.vxe-table--fixed-right-wrapper.sx--hidden > .vxe-table--body-wrapper > .vxe-table--body-inner-wrapper {
|
|
1857
|
+
overflow-x: hidden;
|
|
1858
|
+
}
|
|
1859
|
+
.vxe-table--fixed-left-wrapper.sy--hidden > .vxe-table--body-wrapper > .vxe-table--body-inner-wrapper,
|
|
1860
|
+
.vxe-table--fixed-right-wrapper.sy--hidden > .vxe-table--body-wrapper > .vxe-table--body-inner-wrapper {
|
|
1861
|
+
overflow-y: hidden;
|
|
1862
|
+
}
|
|
1863
|
+
|
|
1830
1864
|
.vxe-loading--custom-wrapper {
|
|
1831
1865
|
display: none;
|
|
1832
1866
|
position: absolute;
|
|
@@ -2212,6 +2246,9 @@
|
|
|
2212
2246
|
left: 0;
|
|
2213
2247
|
bottom: 0;
|
|
2214
2248
|
}
|
|
2249
|
+
.vxe-table .vxe-table--scroll-x-wrapper {
|
|
2250
|
+
height: 100%;
|
|
2251
|
+
}
|
|
2215
2252
|
.vxe-table .vxe-table--scroll-x-handle {
|
|
2216
2253
|
overflow-y: hidden;
|
|
2217
2254
|
overflow-x: scroll;
|
|
@@ -3151,6 +3188,10 @@
|
|
|
3151
3188
|
outline: 0;
|
|
3152
3189
|
background-color: var(--vxe-ui-layout-background-color);
|
|
3153
3190
|
}
|
|
3191
|
+
.vxe-table--render-default .vxe-table--fixed-left-wrapper.y-ob--contain > .vxe-table--body-wrapper > .vxe-table--body-inner-wrapper,
|
|
3192
|
+
.vxe-table--render-default .vxe-table--fixed-right-wrapper.y-ob--contain > .vxe-table--body-wrapper > .vxe-table--body-inner-wrapper {
|
|
3193
|
+
overscroll-behavior-y: contain;
|
|
3194
|
+
}
|
|
3154
3195
|
.vxe-table--render-default .vxe-table--fixed-left-wrapper .vxe-table--body-wrapper,
|
|
3155
3196
|
.vxe-table--render-default .vxe-table--fixed-right-wrapper .vxe-table--body-wrapper {
|
|
3156
3197
|
outline: 0;
|
|
@@ -3477,11 +3518,16 @@
|
|
|
3477
3518
|
display: none;
|
|
3478
3519
|
visibility: hidden;
|
|
3479
3520
|
}
|
|
3480
|
-
.vxe-table--render-default .vxe-table--empty-
|
|
3521
|
+
.vxe-table--render-default .vxe-table--empty-place-wrapper {
|
|
3481
3522
|
display: none;
|
|
3482
3523
|
position: absolute;
|
|
3524
|
+
width: 100%;
|
|
3483
3525
|
top: 0;
|
|
3484
3526
|
z-index: 5;
|
|
3527
|
+
overflow: hidden;
|
|
3528
|
+
}
|
|
3529
|
+
.vxe-table--render-default .vxe-table--empty-placeholder {
|
|
3530
|
+
display: flex;
|
|
3485
3531
|
}
|
|
3486
3532
|
.vxe-table--render-default .vxe-table--empty-content {
|
|
3487
3533
|
display: block;
|
|
@@ -3489,7 +3535,7 @@
|
|
|
3489
3535
|
pointer-events: auto;
|
|
3490
3536
|
}
|
|
3491
3537
|
.vxe-table--render-default.is--empty .vxe-table--empty-block,
|
|
3492
|
-
.vxe-table--render-default.is--empty .vxe-table--empty-
|
|
3538
|
+
.vxe-table--render-default.is--empty .vxe-table--empty-place-wrapper {
|
|
3493
3539
|
display: flex;
|
|
3494
3540
|
}
|
|
3495
3541
|
.vxe-table--render-default .vxe-body--column.col--selected {
|