vxe-table 4.17.5 → 4.17.7
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/style.css +1 -1
- package/es/table/module/export/hook.js +5 -3
- package/es/table/src/body.js +12 -20
- package/es/table/src/cell.js +43 -37
- package/es/table/src/footer.js +3 -12
- package/es/table/src/header.js +4 -12
- package/es/table/src/table.js +109 -54
- package/es/toolbar/src/toolbar.js +3 -3
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/lib/index.umd.js +65 -82
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/table/module/export/hook.js +5 -3
- package/lib/table/module/export/hook.min.js +1 -1
- package/lib/table/src/body.js +10 -23
- package/lib/table/src/body.min.js +1 -1
- package/lib/table/src/cell.js +10 -6
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/footer.js +4 -15
- package/lib/table/src/footer.min.js +1 -1
- package/lib/table/src/header.js +5 -14
- package/lib/table/src/header.min.js +1 -1
- package/lib/table/src/table.js +29 -18
- package/lib/table/src/table.min.js +1 -1
- package/lib/toolbar/src/toolbar.js +3 -3
- package/lib/toolbar/src/toolbar.min.js +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/package.json +1 -1
- package/packages/table/module/export/hook.ts +5 -3
- package/packages/table/src/body.ts +8 -20
- package/packages/table/src/cell.ts +43 -37
- package/packages/table/src/footer.ts +3 -11
- package/packages/table/src/header.ts +4 -12
- package/packages/table/src/table.ts +109 -53
- package/packages/toolbar/src/toolbar.ts +3 -3
- /package/es/{iconfont.1761786608199.ttf → iconfont.1762136085329.ttf} +0 -0
- /package/es/{iconfont.1761786608199.woff → iconfont.1762136085329.woff} +0 -0
- /package/es/{iconfont.1761786608199.woff2 → iconfont.1762136085329.woff2} +0 -0
- /package/lib/{iconfont.1761786608199.ttf → iconfont.1762136085329.ttf} +0 -0
- /package/lib/{iconfont.1761786608199.woff → iconfont.1762136085329.woff} +0 -0
- /package/lib/{iconfont.1761786608199.woff2 → iconfont.1762136085329.woff2} +0 -0
|
@@ -677,6 +677,77 @@ export default defineVxeComponent({
|
|
|
677
677
|
return leftWidth
|
|
678
678
|
})
|
|
679
679
|
|
|
680
|
+
const computeBodyMergeCoverFixed = computed(() => {
|
|
681
|
+
const { columnStore, mergeBodyFlag } = reactData
|
|
682
|
+
const { mergeBodyList, visibleColumn } = internalData
|
|
683
|
+
const { leftList, rightList } = columnStore
|
|
684
|
+
const rscIndex = visibleColumn.length - rightList.length
|
|
685
|
+
if (mergeBodyFlag && (leftList.length || rightList.length)) {
|
|
686
|
+
const lecIndex = leftList.length
|
|
687
|
+
for (let i = 0; i < mergeBodyList.length; i++) {
|
|
688
|
+
const { col, colspan } = mergeBodyList[i]
|
|
689
|
+
if (col < lecIndex || (col + colspan) > rscIndex) {
|
|
690
|
+
return true
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
return false
|
|
695
|
+
})
|
|
696
|
+
|
|
697
|
+
const computeIsHeaderRenderOptimize = computed(() => {
|
|
698
|
+
const { spanMethod, footerSpanMethod, showHeaderOverflow: allColumnHeaderOverflow } = props
|
|
699
|
+
const { isGroup, scrollXLoad } = reactData
|
|
700
|
+
let isOptimizeMode = false
|
|
701
|
+
if (isGroup) {
|
|
702
|
+
// 分组表头
|
|
703
|
+
} else {
|
|
704
|
+
// 如果是使用优化模式
|
|
705
|
+
if (scrollXLoad && allColumnHeaderOverflow) {
|
|
706
|
+
if (spanMethod || footerSpanMethod) {
|
|
707
|
+
// 如果不支持优化模式
|
|
708
|
+
} else {
|
|
709
|
+
isOptimizeMode = true
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
return isOptimizeMode
|
|
714
|
+
})
|
|
715
|
+
|
|
716
|
+
const computeIsBodyRenderOptimize = computed(() => {
|
|
717
|
+
const { spanMethod, footerSpanMethod } = props
|
|
718
|
+
const { scrollXLoad, scrollYLoad, isAllOverflow, expandColumn } = reactData
|
|
719
|
+
const bodyMergeCoverFixed = computeBodyMergeCoverFixed.value
|
|
720
|
+
const expandOpts = computeExpandOpts.value
|
|
721
|
+
let isOptimizeMode = false
|
|
722
|
+
// 如果是使用优化模式
|
|
723
|
+
if (scrollXLoad || scrollYLoad || isAllOverflow) {
|
|
724
|
+
// 如果是展开行,内联模式,不支持优化
|
|
725
|
+
// 如果是方法合并,不支持优化
|
|
726
|
+
// 如果固定列且配置式合并,不支持优化
|
|
727
|
+
if ((expandColumn && expandOpts.mode !== 'fixed') || bodyMergeCoverFixed || spanMethod || footerSpanMethod) {
|
|
728
|
+
// 如果不支持优化模式
|
|
729
|
+
} else {
|
|
730
|
+
isOptimizeMode = true
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
return isOptimizeMode
|
|
734
|
+
})
|
|
735
|
+
|
|
736
|
+
const computeIsFooterRenderOptimize = computed(() => {
|
|
737
|
+
const { spanMethod, footerSpanMethod, showFooterOverflow: allColumnFooterOverflow } = props
|
|
738
|
+
const { scrollXLoad } = reactData
|
|
739
|
+
let isOptimizeMode = false
|
|
740
|
+
// 如果是使用优化模式
|
|
741
|
+
if (scrollXLoad && allColumnFooterOverflow) {
|
|
742
|
+
if (spanMethod || footerSpanMethod) {
|
|
743
|
+
// 如果不支持优化模式
|
|
744
|
+
} else {
|
|
745
|
+
isOptimizeMode = true
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
return isOptimizeMode
|
|
749
|
+
})
|
|
750
|
+
|
|
680
751
|
const computeHeaderMenu = computed(() => {
|
|
681
752
|
const menuOpts = computeMenuOpts.value
|
|
682
753
|
const headerOpts = menuOpts.header
|
|
@@ -949,9 +1020,13 @@ export default defineVxeComponent({
|
|
|
949
1020
|
computeCustomOpts,
|
|
950
1021
|
computeLeftFixedWidth,
|
|
951
1022
|
computeRightFixedWidth,
|
|
1023
|
+
computeBodyMergeCoverFixed,
|
|
952
1024
|
computeFixedColumnSize,
|
|
953
1025
|
computeIsMaxFixedColumn,
|
|
954
1026
|
computeIsAllCheckboxDisabled,
|
|
1027
|
+
computeIsHeaderRenderOptimize,
|
|
1028
|
+
computeIsBodyRenderOptimize,
|
|
1029
|
+
computeIsFooterRenderOptimize,
|
|
955
1030
|
computeVirtualScrollBars,
|
|
956
1031
|
computeRowGroupFields,
|
|
957
1032
|
computeRowGroupColumns,
|
|
@@ -2474,8 +2549,8 @@ export default defineVxeComponent({
|
|
|
2474
2549
|
}
|
|
2475
2550
|
|
|
2476
2551
|
const updateStyle = () => {
|
|
2477
|
-
const {
|
|
2478
|
-
const { isGroup, currentRow, tableColumn,
|
|
2552
|
+
const { mouseConfig } = props
|
|
2553
|
+
const { isGroup, currentRow, tableColumn, overflowX, scrollbarWidth, overflowY, scrollbarHeight, scrollXWidth, columnStore, editStore, isColLoading } = reactData
|
|
2479
2554
|
const { visibleColumn, tableHeight, elemStore, customHeight, customMinHeight, customMaxHeight, tHeaderHeight, tFooterHeight } = internalData
|
|
2480
2555
|
const $xeGanttView = internalData.xeGanttView
|
|
2481
2556
|
const el = refElem.value
|
|
@@ -2483,12 +2558,15 @@ export default defineVxeComponent({
|
|
|
2483
2558
|
return
|
|
2484
2559
|
}
|
|
2485
2560
|
const containerList = ['main', 'left', 'right']
|
|
2561
|
+
const { leftList, rightList } = columnStore
|
|
2486
2562
|
let osbWidth = overflowY ? scrollbarWidth : 0
|
|
2487
2563
|
let osbHeight = overflowX ? scrollbarHeight : 0
|
|
2488
2564
|
const emptyPlaceholderElem = refEmptyPlaceholder.value
|
|
2565
|
+
const isHeaderRenderOptimize = computeIsHeaderRenderOptimize.value
|
|
2566
|
+
const isBodyRenderOptimize = computeIsBodyRenderOptimize.value
|
|
2567
|
+
const isFooterRenderOptimize = computeIsFooterRenderOptimize.value
|
|
2489
2568
|
const scrollbarOpts = computeScrollbarOpts.value
|
|
2490
2569
|
const mouseOpts = computeMouseOpts.value
|
|
2491
|
-
const expandOpts = computeExpandOpts.value
|
|
2492
2570
|
const bodyWrapperElem = getRefElem(elemStore['main-body-wrapper'])
|
|
2493
2571
|
const bodyTableElem = getRefElem(elemStore['main-body-table'])
|
|
2494
2572
|
if (emptyPlaceholderElem) {
|
|
@@ -2610,7 +2688,7 @@ export default defineVxeComponent({
|
|
|
2610
2688
|
let fixedColumn: VxeTableDefines.ColumnInfo[] = []
|
|
2611
2689
|
let fixedWrapperElem: HTMLDivElement
|
|
2612
2690
|
if (fixedType) {
|
|
2613
|
-
fixedColumn = isFixedLeft ?
|
|
2691
|
+
fixedColumn = isFixedLeft ? leftList : rightList
|
|
2614
2692
|
fixedWrapperElem = isFixedLeft ? refLeftContainer.value : refRightContainer.value
|
|
2615
2693
|
}
|
|
2616
2694
|
layoutList.forEach(layout => {
|
|
@@ -2621,20 +2699,11 @@ export default defineVxeComponent({
|
|
|
2621
2699
|
// 表头体样式处理
|
|
2622
2700
|
// 横向滚动渲染
|
|
2623
2701
|
let renderColumnList = tableColumn
|
|
2624
|
-
|
|
2702
|
+
const isOptimizeMode = isHeaderRenderOptimize
|
|
2625
2703
|
|
|
2626
2704
|
if (isGroup) {
|
|
2627
2705
|
renderColumnList = visibleColumn
|
|
2628
2706
|
} else {
|
|
2629
|
-
// 如果是使用优化模式
|
|
2630
|
-
if (scrollXLoad && allColumnHeaderOverflow) {
|
|
2631
|
-
if (spanMethod || footerSpanMethod) {
|
|
2632
|
-
// 如果不支持优化模式
|
|
2633
|
-
} else {
|
|
2634
|
-
isOptimizeMode = true
|
|
2635
|
-
}
|
|
2636
|
-
}
|
|
2637
|
-
|
|
2638
2707
|
if (!isOptimizeMode || (!isColLoading && (fixedType || !overflowX))) {
|
|
2639
2708
|
renderColumnList = visibleColumn
|
|
2640
2709
|
}
|
|
@@ -2691,16 +2760,7 @@ export default defineVxeComponent({
|
|
|
2691
2760
|
}
|
|
2692
2761
|
|
|
2693
2762
|
let renderColumnList = tableColumn
|
|
2694
|
-
|
|
2695
|
-
let isOptimizeMode = false
|
|
2696
|
-
// 如果是使用优化模式
|
|
2697
|
-
if (scrollXLoad || scrollYLoad || isAllOverflow) {
|
|
2698
|
-
if ((expandColumn && expandOpts.mode !== 'fixed') || spanMethod || footerSpanMethod) {
|
|
2699
|
-
// 如果不支持优化模式
|
|
2700
|
-
} else {
|
|
2701
|
-
isOptimizeMode = true
|
|
2702
|
-
}
|
|
2703
|
-
}
|
|
2763
|
+
const isOptimizeMode = isBodyRenderOptimize
|
|
2704
2764
|
|
|
2705
2765
|
if (fixedType) {
|
|
2706
2766
|
renderColumnList = visibleColumn
|
|
@@ -2734,15 +2794,7 @@ export default defineVxeComponent({
|
|
|
2734
2794
|
}
|
|
2735
2795
|
} else if (layout === 'footer') {
|
|
2736
2796
|
let renderColumnList = tableColumn
|
|
2737
|
-
|
|
2738
|
-
// 如果是使用优化模式
|
|
2739
|
-
if (scrollXLoad && allColumnFooterOverflow) {
|
|
2740
|
-
if (spanMethod || footerSpanMethod) {
|
|
2741
|
-
// 如果不支持优化模式
|
|
2742
|
-
} else {
|
|
2743
|
-
isOptimizeMode = true
|
|
2744
|
-
}
|
|
2745
|
-
}
|
|
2797
|
+
const isOptimizeMode = isFooterRenderOptimize
|
|
2746
2798
|
|
|
2747
2799
|
if (!isOptimizeMode || (!isColLoading && (fixedType || !overflowX))) {
|
|
2748
2800
|
renderColumnList = visibleColumn
|
|
@@ -4190,6 +4242,7 @@ export default defineVxeComponent({
|
|
|
4190
4242
|
* @returns
|
|
4191
4243
|
*/
|
|
4192
4244
|
const handleVirtualTreeExpand = (rows: any[], expanded: boolean) => {
|
|
4245
|
+
const { lastScrollLeft, lastScrollTop } = internalData
|
|
4193
4246
|
return handleBaseTreeExpand(rows, expanded).then(() => {
|
|
4194
4247
|
handleVirtualTreeToList()
|
|
4195
4248
|
$xeTable.handleTableData()
|
|
@@ -4197,9 +4250,9 @@ export default defineVxeComponent({
|
|
|
4197
4250
|
updateAfterDataIndex()
|
|
4198
4251
|
return nextTick()
|
|
4199
4252
|
}).then(() => {
|
|
4200
|
-
|
|
4201
|
-
return handleLazyRecalculate(true, true, true)
|
|
4253
|
+
return handleRecalculateStyle(true, true, true)
|
|
4202
4254
|
}).then(() => {
|
|
4255
|
+
restoreScrollLocation($xeTable, lastScrollLeft, lastScrollTop)
|
|
4203
4256
|
updateTreeLineStyle()
|
|
4204
4257
|
setTimeout(() => {
|
|
4205
4258
|
$xeTable.updateCellAreas()
|
|
@@ -11879,7 +11932,7 @@ export default defineVxeComponent({
|
|
|
11879
11932
|
},
|
|
11880
11933
|
// 更新纵向 Y 可视渲染上下剩余空间大小
|
|
11881
11934
|
updateScrollYSpace () {
|
|
11882
|
-
const { isAllOverflow, overflowY, scrollYLoad, expandColumn } = reactData
|
|
11935
|
+
const { isAllOverflow, overflowY, scrollYLoad, scrollYHeight, expandColumn } = reactData
|
|
11883
11936
|
const { scrollYStore, elemStore, isResizeCellHeight, afterFullData, fullAllDataRowIdData, rowExpandedMaps } = internalData
|
|
11884
11937
|
const $xeGanttView = internalData.xeGanttView
|
|
11885
11938
|
const { startIndex } = scrollYStore
|
|
@@ -11894,13 +11947,13 @@ export default defineVxeComponent({
|
|
|
11894
11947
|
const rightbodyTableElem = getRefElem(elemStore['right-body-table'])
|
|
11895
11948
|
const containerList = ['main', 'left', 'right']
|
|
11896
11949
|
let ySpaceTop = 0
|
|
11897
|
-
let
|
|
11950
|
+
let sYHeight = scrollYHeight
|
|
11898
11951
|
let isScrollYBig = false
|
|
11899
11952
|
if (scrollYLoad) {
|
|
11900
11953
|
const isCustomCellHeight = isResizeCellHeight || cellOpts.height || rowOpts.height
|
|
11901
11954
|
if (!isCustomCellHeight && !expandColumn && isAllOverflow) {
|
|
11902
|
-
|
|
11903
|
-
if (
|
|
11955
|
+
sYHeight = afterFullData.length * defaultRowHeight
|
|
11956
|
+
if (sYHeight > maxYHeight) {
|
|
11904
11957
|
isScrollYBig = true
|
|
11905
11958
|
}
|
|
11906
11959
|
ySpaceTop = Math.max(0, startIndex * defaultRowHeight)
|
|
@@ -11913,18 +11966,21 @@ export default defineVxeComponent({
|
|
|
11913
11966
|
const lastRow = afterFullData[afterFullData.length - 1]
|
|
11914
11967
|
rowid = getRowid($xeTable, lastRow)
|
|
11915
11968
|
rowRest = fullAllDataRowIdData[rowid] || {}
|
|
11916
|
-
|
|
11917
|
-
|
|
11918
|
-
|
|
11919
|
-
|
|
11969
|
+
// 如果为空时还没计算完数据,保持原高度不变
|
|
11970
|
+
if (rowRest.oTop) {
|
|
11971
|
+
sYHeight = (rowRest.oTop || 0) + (rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight)
|
|
11972
|
+
// 是否展开行
|
|
11973
|
+
if (expandColumn && rowExpandedMaps[rowid]) {
|
|
11974
|
+
sYHeight += rowRest.expandHeight || expandOpts.height || 0
|
|
11975
|
+
}
|
|
11920
11976
|
}
|
|
11921
|
-
if (
|
|
11977
|
+
if (sYHeight > maxYHeight) {
|
|
11922
11978
|
isScrollYBig = true
|
|
11923
11979
|
}
|
|
11924
11980
|
}
|
|
11925
11981
|
} else {
|
|
11926
11982
|
if (bodyTableElem) {
|
|
11927
|
-
|
|
11983
|
+
sYHeight = bodyTableElem.clientHeight
|
|
11928
11984
|
}
|
|
11929
11985
|
}
|
|
11930
11986
|
let clientHeight = 0
|
|
@@ -11932,7 +11988,7 @@ export default defineVxeComponent({
|
|
|
11932
11988
|
clientHeight = bodyScrollElem.clientHeight
|
|
11933
11989
|
}
|
|
11934
11990
|
// 虚拟渲染
|
|
11935
|
-
let ySpaceHeight =
|
|
11991
|
+
let ySpaceHeight = sYHeight
|
|
11936
11992
|
let scrollYTop = ySpaceTop
|
|
11937
11993
|
if (isScrollYBig) {
|
|
11938
11994
|
// 触底
|
|
@@ -11976,7 +12032,7 @@ export default defineVxeComponent({
|
|
|
11976
12032
|
rowExpandYSpaceEl.style.height = ySpaceHeight ? `${ySpaceHeight}px` : ''
|
|
11977
12033
|
}
|
|
11978
12034
|
reactData.scrollYTop = scrollYTop
|
|
11979
|
-
reactData.scrollYHeight =
|
|
12035
|
+
reactData.scrollYHeight = ySpaceHeight
|
|
11980
12036
|
reactData.isScrollYBig = isScrollYBig
|
|
11981
12037
|
|
|
11982
12038
|
calcScrollbar()
|
|
@@ -13175,12 +13231,12 @@ export default defineVxeComponent({
|
|
|
13175
13231
|
if (props.resizable) {
|
|
13176
13232
|
warnLog('vxe.error.delProp', ['resizable', 'column-config.resizable'])
|
|
13177
13233
|
}
|
|
13178
|
-
if (props.virtualXConfig && props.scrollX) {
|
|
13179
|
-
|
|
13180
|
-
}
|
|
13181
|
-
if (props.virtualYConfig && props.scrollY) {
|
|
13182
|
-
|
|
13183
|
-
}
|
|
13234
|
+
// if (props.virtualXConfig && props.scrollX) {
|
|
13235
|
+
// warnLog('vxe.error.notSupportProp', ['virtual-x-config', 'scroll-x', 'scroll-x=null'])
|
|
13236
|
+
// }
|
|
13237
|
+
// if (props.virtualYConfig && props.scrollY) {
|
|
13238
|
+
// warnLog('vxe.error.notSupportProp', ['virtual-y-config', 'scroll-y', 'scroll-y=null'])
|
|
13239
|
+
// }
|
|
13184
13240
|
if (props.aggregateConfig && props.rowGroupConfig) {
|
|
13185
13241
|
warnLog('vxe.error.notSupportProp', ['aggregate-config', 'row-group-config', 'row-group-config=null'])
|
|
13186
13242
|
}
|
|
@@ -380,7 +380,7 @@ export default defineVxeComponent({
|
|
|
380
380
|
? h(VxeUIButtonComponent, {
|
|
381
381
|
key: index,
|
|
382
382
|
...Object.assign({}, child, {
|
|
383
|
-
content: child.name,
|
|
383
|
+
content: child.content || child.name,
|
|
384
384
|
options: undefined
|
|
385
385
|
}),
|
|
386
386
|
onClick: (eventParams) => isBtn ? btnEvent(eventParams, child) : tolEvent(eventParams, child)
|
|
@@ -424,7 +424,7 @@ export default defineVxeComponent({
|
|
|
424
424
|
h(VxeUIButtonComponent, {
|
|
425
425
|
key: `bd${item.code || index}`,
|
|
426
426
|
...Object.assign({}, item, {
|
|
427
|
-
content: item.name,
|
|
427
|
+
content: item.content || item.name,
|
|
428
428
|
options: undefined
|
|
429
429
|
}),
|
|
430
430
|
onClick: (eventParams) => btnEvent(eventParams, item)
|
|
@@ -479,7 +479,7 @@ export default defineVxeComponent({
|
|
|
479
479
|
h(VxeUIButtonComponent, {
|
|
480
480
|
key: tIndex,
|
|
481
481
|
...Object.assign({}, item, {
|
|
482
|
-
content: item.name,
|
|
482
|
+
content: item.content || item.name,
|
|
483
483
|
options: undefined
|
|
484
484
|
}),
|
|
485
485
|
onClick: (eventParams) => tolEvent(eventParams, item)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|