vxe-table 3.18.0 → 3.18.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/module/edit/mixin.js +58 -20
- package/es/table/module/filter/mixin.js +12 -10
- package/es/table/module/menu/mixin.js +16 -9
- package/es/table/module/validator/mixin.js +4 -2
- package/es/table/src/column.js +2 -0
- package/es/table/src/columnInfo.js +1 -0
- package/es/table/src/footer.js +7 -5
- package/es/table/src/header.js +67 -28
- package/es/table/src/methods.js +577 -85
- package/es/table/src/props.js +23 -6
- package/es/table/src/store.js +8 -0
- package/es/table/src/table.js +67 -26
- package/es/table/src/util.js +70 -2
- package/es/table/style.css +11 -17
- 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 +11 -17
- 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 +1002 -200
- 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/edit/mixin.js +55 -16
- package/lib/table/module/edit/mixin.min.js +1 -1
- package/lib/table/module/filter/mixin.js +12 -10
- package/lib/table/module/filter/mixin.min.js +1 -1
- package/lib/table/module/menu/mixin.js +20 -13
- package/lib/table/module/menu/mixin.min.js +1 -1
- package/lib/table/module/validator/mixin.js +4 -2
- package/lib/table/module/validator/mixin.min.js +1 -1
- package/lib/table/src/column.js +2 -0
- package/lib/table/src/column.min.js +1 -1
- package/lib/table/src/columnInfo.js +1 -0
- package/lib/table/src/columnInfo.min.js +1 -1
- package/lib/table/src/footer.js +7 -5
- package/lib/table/src/header.js +82 -25
- package/lib/table/src/header.min.js +1 -1
- package/lib/table/src/methods.js +647 -94
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/props.js +11 -3
- package/lib/table/src/props.min.js +1 -1
- package/lib/table/src/store.js +15 -0
- package/lib/table/src/store.min.js +1 -0
- package/lib/table/src/table.js +74 -25
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +74 -2
- package/lib/table/src/util.min.js +1 -1
- package/lib/table/style/style.css +11 -17
- 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 +11 -17
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +1 -1
- package/packages/table/module/edit/mixin.ts +59 -23
- package/packages/table/module/filter/mixin.ts +17 -13
- package/packages/table/module/menu/mixin.ts +16 -9
- package/packages/table/module/validator/mixin.ts +8 -4
- package/packages/table/src/column.ts +4 -2
- package/packages/table/src/columnInfo.ts +1 -0
- package/packages/table/src/footer.ts +11 -9
- package/packages/table/src/header.ts +76 -34
- package/packages/table/src/methods.ts +607 -90
- package/packages/table/src/props.ts +29 -12
- package/packages/table/src/store.ts +15 -0
- package/packages/table/src/table.ts +79 -24
- package/packages/table/src/util.ts +76 -2
- package/styles/components/table.scss +33 -55
- /package/es/{iconfont.1756083626568.ttf → iconfont.1756452257212.ttf} +0 -0
- /package/es/{iconfont.1756083626568.woff → iconfont.1756452257212.woff} +0 -0
- /package/es/{iconfont.1756083626568.woff2 → iconfont.1756452257212.woff2} +0 -0
- /package/lib/{iconfont.1756083626568.ttf → iconfont.1756452257212.ttf} +0 -0
- /package/lib/{iconfont.1756083626568.woff → iconfont.1756452257212.woff} +0 -0
- /package/lib/{iconfont.1756083626568.woff2 → iconfont.1756452257212.woff2} +0 -0
package/es/table/src/props.js
CHANGED
|
@@ -10,7 +10,7 @@ export const tableProps = {
|
|
|
10
10
|
// 表格的最小高度
|
|
11
11
|
minHeight: {
|
|
12
12
|
type: [Number, String],
|
|
13
|
-
default: () =>
|
|
13
|
+
default: () => null
|
|
14
14
|
},
|
|
15
15
|
// 表格的最大高度
|
|
16
16
|
maxHeight: [Number, String],
|
|
@@ -129,20 +129,37 @@ export const tableProps = {
|
|
|
129
129
|
headerRowStyle: [Object, Function],
|
|
130
130
|
// 给表尾行附加样式
|
|
131
131
|
footerRowStyle: [Object, Function],
|
|
132
|
-
//
|
|
132
|
+
// 用于分组表头,显示为自定义列头,配合 mergeHeaderCells 灵活实现自定义合并
|
|
133
|
+
showCustomHeader: {
|
|
134
|
+
type: Boolean,
|
|
135
|
+
default: () => getConfig().table.showCustomHeader
|
|
136
|
+
},
|
|
137
|
+
// 临时合并指定的表头单元格
|
|
138
|
+
mergeHeaderCells: Array,
|
|
139
|
+
// 临时合并指定的单元格
|
|
133
140
|
mergeCells: Array,
|
|
134
|
-
//
|
|
141
|
+
// 临时合并指定的表尾单元格
|
|
142
|
+
mergeFooterCells: Array,
|
|
135
143
|
mergeFooterItems: Array,
|
|
136
144
|
// 自定义合并行或列的方法
|
|
137
145
|
spanMethod: Function,
|
|
138
146
|
// 表尾合并行或列
|
|
139
147
|
footerSpanMethod: Function,
|
|
140
148
|
// 设置所有内容过长时显示为省略号
|
|
141
|
-
showOverflow: {
|
|
149
|
+
showOverflow: {
|
|
150
|
+
type: [Boolean, String],
|
|
151
|
+
default: () => getConfig().table.showOverflow
|
|
152
|
+
},
|
|
142
153
|
// 设置表头所有内容过长时显示为省略号
|
|
143
|
-
showHeaderOverflow: {
|
|
154
|
+
showHeaderOverflow: {
|
|
155
|
+
type: [Boolean, String],
|
|
156
|
+
default: () => getConfig().table.showHeaderOverflow
|
|
157
|
+
},
|
|
144
158
|
// 设置表尾所有内容过长时显示为省略号
|
|
145
|
-
showFooterOverflow: {
|
|
159
|
+
showFooterOverflow: {
|
|
160
|
+
type: [Boolean, String],
|
|
161
|
+
default: () => getConfig().table.showFooterOverflow
|
|
162
|
+
},
|
|
146
163
|
/** 高级属性 */
|
|
147
164
|
/**
|
|
148
165
|
* (即将废弃)columnKey 已废弃,被 column-config.useKey 替换
|
package/es/table/src/table.js
CHANGED
|
@@ -10,6 +10,7 @@ import TableFooterComponent from './footer';
|
|
|
10
10
|
import { tableProps } from './props';
|
|
11
11
|
import { getSlotVNs } from '../../ui/src/vn';
|
|
12
12
|
import { warnLog, errLog } from '../../ui/src/log';
|
|
13
|
+
import { crossTableDragRowGlobal, getCrossTableDragRowInfo } from './store';
|
|
13
14
|
import TableCustomPanelComponent from '../module/custom/panel';
|
|
14
15
|
import TableFilterPanelComponent from '../module/filter/panel';
|
|
15
16
|
import TableImportPanelComponent from '../module/export/import-panel';
|
|
@@ -30,12 +31,19 @@ function handleUpdateMergeBodyCells($xeTable, merges) {
|
|
|
30
31
|
internalData.mergeBodyCellMaps = {};
|
|
31
32
|
$xeTable.setMergeCells(merges);
|
|
32
33
|
}
|
|
34
|
+
function handleUpdateMergeHeaderCells($xeTable, merges) {
|
|
35
|
+
const internalData = $xeTable;
|
|
36
|
+
internalData.mergeHeaderList = [];
|
|
37
|
+
internalData.mergeHeaderMaps = {};
|
|
38
|
+
internalData.mergeHeaderCellMaps = {};
|
|
39
|
+
$xeTable.setMergeHeaderCells(merges);
|
|
40
|
+
}
|
|
33
41
|
function handleUpdateMergeFooterCells($xeTable, merges) {
|
|
34
42
|
const internalData = $xeTable;
|
|
35
43
|
internalData.mergeFooterList = [];
|
|
36
44
|
internalData.mergeFooterMaps = {};
|
|
37
45
|
internalData.mergeFooterCellMaps = {};
|
|
38
|
-
$xeTable.
|
|
46
|
+
$xeTable.setMergeFooterCells(merges);
|
|
39
47
|
}
|
|
40
48
|
function handleKeyField($xeTable) {
|
|
41
49
|
const internalData = $xeTable;
|
|
@@ -119,6 +127,7 @@ function renderEmptyBody(h, $xeTable) {
|
|
|
119
127
|
const renderDragTipContents = (h, $xeTable) => {
|
|
120
128
|
const props = $xeTable;
|
|
121
129
|
const reactData = $xeTable;
|
|
130
|
+
const crossTableDragRowInfo = getCrossTableDragRowInfo($xeTable);
|
|
122
131
|
const { dragConfig } = props;
|
|
123
132
|
const { dragRow, dragCol, dragTipText } = reactData;
|
|
124
133
|
const columnDragOpts = $xeTable.computeColumnDragOpts;
|
|
@@ -127,8 +136,9 @@ const renderDragTipContents = (h, $xeTable) => {
|
|
|
127
136
|
const rTipSlot = rowDragSlots.tip || (dragConfig && dragConfig.slots ? dragConfig.slots.rowTip : null);
|
|
128
137
|
const columnDragSlots = columnDragOpts.slots || {};
|
|
129
138
|
const cTipSlot = columnDragSlots.tip;
|
|
130
|
-
|
|
131
|
-
|
|
139
|
+
const dRow = dragRow || (rowDragOpts.isCrossTableDrag ? crossTableDragRowInfo.row : null);
|
|
140
|
+
if (dRow && rTipSlot) {
|
|
141
|
+
return $xeTable.callSlot(rTipSlot, { row: dRow }, h);
|
|
132
142
|
}
|
|
133
143
|
if (dragCol && cTipSlot) {
|
|
134
144
|
return $xeTable.callSlot(cTipSlot, { column: dragCol }, h);
|
|
@@ -137,11 +147,13 @@ const renderDragTipContents = (h, $xeTable) => {
|
|
|
137
147
|
};
|
|
138
148
|
const renderDragTip = (h, $xeTable) => {
|
|
139
149
|
const reactData = $xeTable;
|
|
150
|
+
const crossTableDragRowInfo = getCrossTableDragRowInfo($xeTable);
|
|
140
151
|
const { dragRow, dragCol } = reactData;
|
|
141
152
|
const rowOpts = $xeTable.computeRowOpts;
|
|
142
153
|
const columnOpts = $xeTable.computeColumnOpts;
|
|
143
154
|
const rowDragOpts = $xeTable.computeRowDragOpts;
|
|
144
155
|
const columnDragOpts = $xeTable.computeColumnDragOpts;
|
|
156
|
+
const dRow = dragRow || (rowDragOpts.isCrossTableDrag ? crossTableDragRowInfo.row : null);
|
|
145
157
|
if (rowOpts.drag || columnOpts.drag) {
|
|
146
158
|
return h('div', {
|
|
147
159
|
class: 'vxe-table--drag-wrapper'
|
|
@@ -158,7 +170,7 @@ const renderDragTip = (h, $xeTable) => {
|
|
|
158
170
|
'is--guides': columnDragOpts.showGuidesStatus
|
|
159
171
|
}]
|
|
160
172
|
}),
|
|
161
|
-
(
|
|
173
|
+
(dRow && rowDragOpts.showDragTip) || (dragCol && columnDragOpts.showDragTip)
|
|
162
174
|
? h('div', {
|
|
163
175
|
ref: 'refDragTipElem',
|
|
164
176
|
class: 'vxe-table--drag-sort-tip'
|
|
@@ -170,7 +182,7 @@ const renderDragTip = (h, $xeTable) => {
|
|
|
170
182
|
class: 'vxe-table--drag-sort-tip-status'
|
|
171
183
|
}, [
|
|
172
184
|
h('span', {
|
|
173
|
-
class: ['vxe-table--drag-sort-tip-normal-status',
|
|
185
|
+
class: ['vxe-table--drag-sort-tip-normal-status', dRow ? getIcon().TABLE_DRAG_STATUS_ROW : getIcon().TABLE_DRAG_STATUS_COLUMN]
|
|
174
186
|
}),
|
|
175
187
|
h('span', {
|
|
176
188
|
class: ['vxe-table--drag-sort-tip-sub-status', getIcon().TABLE_DRAG_STATUS_SUB_ROW]
|
|
@@ -326,7 +338,10 @@ function renderScrollX(h, $xeTable) {
|
|
|
326
338
|
ref: 'refScrollXSpaceElem',
|
|
327
339
|
class: 'vxe-table--scroll-x-space'
|
|
328
340
|
})
|
|
329
|
-
])
|
|
341
|
+
]),
|
|
342
|
+
h('div', {
|
|
343
|
+
class: 'vxe-table--scroll-x-handle-appearance'
|
|
344
|
+
})
|
|
330
345
|
]),
|
|
331
346
|
h('div', {
|
|
332
347
|
ref: 'refScrollXRightCornerElem',
|
|
@@ -470,9 +485,7 @@ export default {
|
|
|
470
485
|
},
|
|
471
486
|
data() {
|
|
472
487
|
const xID = XEUtils.uniqueId();
|
|
473
|
-
|
|
474
|
-
xID,
|
|
475
|
-
tId: xID,
|
|
488
|
+
const reactData = {
|
|
476
489
|
// 低性能的静态列
|
|
477
490
|
staticColumns: [],
|
|
478
491
|
// 渲染的列分组
|
|
@@ -493,6 +506,8 @@ export default {
|
|
|
493
506
|
scrollbarWidth: 0,
|
|
494
507
|
// 横向滚动条的高度
|
|
495
508
|
scrollbarHeight: 0,
|
|
509
|
+
// 最后滚动时间戳
|
|
510
|
+
lastScrollTime: 0,
|
|
496
511
|
// 行高
|
|
497
512
|
rowHeight: 0,
|
|
498
513
|
// 表格父容器的高度
|
|
@@ -518,9 +533,13 @@ export default {
|
|
|
518
533
|
expandColumn: null,
|
|
519
534
|
checkboxColumn: null,
|
|
520
535
|
radioColumn: null,
|
|
521
|
-
hasFixedColumn: false,
|
|
522
536
|
// 树节点列信息
|
|
523
537
|
treeNodeColumn: null,
|
|
538
|
+
hasFixedColumn: false,
|
|
539
|
+
// 刷新列标识,当列筛选被改变时,触发表格刷新数据
|
|
540
|
+
upDataFlag: 0,
|
|
541
|
+
// 刷新列标识,当列的特定属性被改变时,触发表格刷新列
|
|
542
|
+
reColumnFlag: 0,
|
|
524
543
|
// 初始化标识
|
|
525
544
|
initStore: {
|
|
526
545
|
filter: false,
|
|
@@ -528,11 +547,6 @@ export default {
|
|
|
528
547
|
export: false,
|
|
529
548
|
custom: false
|
|
530
549
|
},
|
|
531
|
-
customColumnList: [],
|
|
532
|
-
// 刷新列标识,当列筛选被改变时,触发表格刷新数据
|
|
533
|
-
upDataFlag: 0,
|
|
534
|
-
// 刷新列标识,当列的特定属性被改变时,触发表格刷新列
|
|
535
|
-
reColumnFlag: 0,
|
|
536
550
|
// 自定义列相关的信息
|
|
537
551
|
customStore: {
|
|
538
552
|
btnEl: null,
|
|
@@ -546,6 +560,7 @@ export default {
|
|
|
546
560
|
oldFixedMaps: {},
|
|
547
561
|
oldVisibleMaps: {}
|
|
548
562
|
},
|
|
563
|
+
customColumnList: [],
|
|
549
564
|
// 当前选中的筛选列
|
|
550
565
|
filterStore: {
|
|
551
566
|
isAllSelected: false,
|
|
@@ -614,6 +629,7 @@ export default {
|
|
|
614
629
|
tooltipStore: {
|
|
615
630
|
row: null,
|
|
616
631
|
column: null,
|
|
632
|
+
content: null,
|
|
617
633
|
visible: false,
|
|
618
634
|
currOpts: {}
|
|
619
635
|
},
|
|
@@ -646,8 +662,8 @@ export default {
|
|
|
646
662
|
columns: [],
|
|
647
663
|
isPrint: false,
|
|
648
664
|
hasFooter: false,
|
|
649
|
-
hasTree: false,
|
|
650
665
|
hasMerge: false,
|
|
666
|
+
hasTree: false,
|
|
651
667
|
hasColgroup: false,
|
|
652
668
|
visible: false
|
|
653
669
|
},
|
|
@@ -678,6 +694,7 @@ export default {
|
|
|
678
694
|
pendingRowFlag: 1,
|
|
679
695
|
insertRowFlag: 1,
|
|
680
696
|
removeRowFlag: 1,
|
|
697
|
+
mergeHeadFlag: 1,
|
|
681
698
|
mergeBodyFlag: 1,
|
|
682
699
|
mergeFootFlag: 1,
|
|
683
700
|
rowHeightStore: {
|
|
@@ -694,23 +711,24 @@ export default {
|
|
|
694
711
|
scrollXLeft: 0,
|
|
695
712
|
scrollXWidth: 0,
|
|
696
713
|
isScrollXBig: false,
|
|
714
|
+
lazScrollLoading: false,
|
|
697
715
|
rowExpandHeightFlag: 1,
|
|
698
716
|
calcCellHeightFlag: 1,
|
|
699
717
|
resizeHeightFlag: 1,
|
|
700
718
|
resizeWidthFlag: 1,
|
|
701
719
|
isCustomStatus: false,
|
|
702
|
-
|
|
720
|
+
isCrossDragRow: false,
|
|
703
721
|
dragRow: null,
|
|
704
|
-
|
|
722
|
+
isCrossDragCol: false,
|
|
705
723
|
dragCol: null,
|
|
706
724
|
dragTipText: '',
|
|
707
725
|
isDragResize: false,
|
|
708
726
|
isRowLoading: false,
|
|
709
|
-
isColLoading: false
|
|
710
|
-
reScrollFlag: 0,
|
|
711
|
-
reLayoutFlag: 0,
|
|
712
|
-
footFlag: 0
|
|
727
|
+
isColLoading: false
|
|
713
728
|
};
|
|
729
|
+
return Object.assign(Object.assign({ xID }, reactData), {
|
|
730
|
+
// 私有属性
|
|
731
|
+
reScrollFlag: 0, reLayoutFlag: 0, footFlag: 0, mergeFooteCellFlag: 0, crossTableDragRowInfo: crossTableDragRowGlobal });
|
|
714
732
|
},
|
|
715
733
|
computed: Object.assign(Object.assign({}, {}), { tableId() {
|
|
716
734
|
return this.computeTableId;
|
|
@@ -1389,9 +1407,21 @@ export default {
|
|
|
1389
1407
|
const $xeTable = this;
|
|
1390
1408
|
handleUpdateMergeBodyCells($xeTable, value);
|
|
1391
1409
|
},
|
|
1392
|
-
|
|
1410
|
+
mergeHeaderCells(value) {
|
|
1393
1411
|
const $xeTable = this;
|
|
1394
|
-
|
|
1412
|
+
handleUpdateMergeHeaderCells($xeTable, value);
|
|
1413
|
+
},
|
|
1414
|
+
mergeFooterCells() {
|
|
1415
|
+
this.mergeFooteCellFlag++;
|
|
1416
|
+
},
|
|
1417
|
+
mergeFooterItems() {
|
|
1418
|
+
this.mergeFooteCellFlag++;
|
|
1419
|
+
},
|
|
1420
|
+
mergeFooteCellFlag() {
|
|
1421
|
+
const $xeTable = this;
|
|
1422
|
+
const props = $xeTable;
|
|
1423
|
+
const mFooterCells = props.mergeFooterCells || props.mergeFooterItems;
|
|
1424
|
+
handleUpdateMergeFooterCells($xeTable, mFooterCells || []);
|
|
1395
1425
|
},
|
|
1396
1426
|
computeRowGroupFields(val) {
|
|
1397
1427
|
const $xeTable = this;
|
|
@@ -1435,6 +1465,7 @@ export default {
|
|
|
1435
1465
|
const currentColumnOpts = $xeTable.computeCurrentColumnOpts;
|
|
1436
1466
|
const keyboardOpts = $xeTable.computeKeyboardOpts;
|
|
1437
1467
|
const aggregateOpts = $xeTable.computeAggregateOpts;
|
|
1468
|
+
const rowDragOpts = $xeTable.computeRowDragOpts;
|
|
1438
1469
|
const { groupFields } = aggregateOpts;
|
|
1439
1470
|
if (props.rowId) {
|
|
1440
1471
|
warnLog('vxe.error.delProp', ['row-id', 'row-config.keyField']);
|
|
@@ -1540,7 +1571,10 @@ export default {
|
|
|
1540
1571
|
}
|
|
1541
1572
|
}
|
|
1542
1573
|
if (treeConfig && rowOpts.drag && !treeOpts.transform) {
|
|
1543
|
-
warnLog('vxe.error.notSupportProp', ['
|
|
1574
|
+
warnLog('vxe.error.notSupportProp', ['row-config.drag', 'tree-config.transform=false', 'tree-config.transform=true']);
|
|
1575
|
+
}
|
|
1576
|
+
if (treeConfig && rowDragOpts.isCrossTableDrag && !rowDragOpts.isCrossDrag) {
|
|
1577
|
+
errLog('vxe.error.reqSupportProp', ['tree-config & row-drag-config.isCrossTableDrag', 'row-drag-config.isCrossDrag']);
|
|
1544
1578
|
}
|
|
1545
1579
|
if (props.dragConfig) {
|
|
1546
1580
|
warnLog('vxe.error.delProp', ['drag-config', 'row-drag-config']);
|
|
@@ -1834,6 +1868,7 @@ export default {
|
|
|
1834
1868
|
const { isGroup, overflowX, overflowY, scrollXLoad, scrollYLoad, tableData, initStore, isRowGroupStatus, columnStore, filterStore, customStore } = reactData;
|
|
1835
1869
|
const { leftList, rightList } = columnStore;
|
|
1836
1870
|
const loadingSlot = slots.loading;
|
|
1871
|
+
const rowDragOpts = $xeTable.computeRowDragOpts;
|
|
1837
1872
|
const tableTipConfig = $xeTable.computeTableTipConfig;
|
|
1838
1873
|
const validTipConfig = $xeTable.computeValidTipConfig;
|
|
1839
1874
|
const validOpts = $xeTable.computeValidOpts;
|
|
@@ -1853,6 +1888,11 @@ export default {
|
|
|
1853
1888
|
const columnDragOpts = $xeTable.computeColumnDragOpts;
|
|
1854
1889
|
const scrollbarXToTop = $xeTable.computeScrollbarXToTop;
|
|
1855
1890
|
const scrollbarYToLeft = $xeTable.computeScrollbarYToLeft;
|
|
1891
|
+
const { isCrossTableDrag } = rowDragOpts;
|
|
1892
|
+
const rwOns = {};
|
|
1893
|
+
if (isCrossTableDrag && !tableData.length) {
|
|
1894
|
+
rwOns.onDragover = $xeTable.handleCrossTableRowDragoverEmptyEvent;
|
|
1895
|
+
}
|
|
1856
1896
|
return h('div', {
|
|
1857
1897
|
ref: 'refElem',
|
|
1858
1898
|
class: ['vxe-table', 'vxe-table--render-default', `tid_${xID}`, `border--${tableBorder}`, `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`, {
|
|
@@ -1919,7 +1959,8 @@ export default {
|
|
|
1919
1959
|
]),
|
|
1920
1960
|
h('div', {
|
|
1921
1961
|
key: 'tw',
|
|
1922
|
-
class: 'vxe-table--render-wrapper'
|
|
1962
|
+
class: 'vxe-table--render-wrapper',
|
|
1963
|
+
on: rwOns
|
|
1923
1964
|
}, scrollbarXToTop
|
|
1924
1965
|
? [
|
|
1925
1966
|
renderScrollX(h, $xeTable),
|
package/es/table/src/util.js
CHANGED
|
@@ -80,14 +80,19 @@ export function createInternalData() {
|
|
|
80
80
|
sourceDataRowIdData: {},
|
|
81
81
|
fullColumnIdData: {},
|
|
82
82
|
fullColumnFieldData: {},
|
|
83
|
+
// 合并表头单元格的数据
|
|
84
|
+
mergeHeaderList: [],
|
|
85
|
+
mergeHeaderMaps: {},
|
|
86
|
+
// 已合并单元格数据集合
|
|
87
|
+
mergeHeaderCellMaps: {},
|
|
83
88
|
// 合并单元格的数据
|
|
84
89
|
mergeBodyList: [],
|
|
85
90
|
mergeBodyMaps: {},
|
|
91
|
+
// 已合并单元格数据集合
|
|
92
|
+
mergeBodyCellMaps: {},
|
|
86
93
|
// 合并表尾的数据
|
|
87
94
|
mergeFooterList: [],
|
|
88
95
|
mergeFooterMaps: {},
|
|
89
|
-
// 已合并单元格数据集合
|
|
90
|
-
mergeBodyCellMaps: {},
|
|
91
96
|
// 已合并表尾数据集合
|
|
92
97
|
mergeFooterCellMaps: {},
|
|
93
98
|
// 已展开的行集合
|
|
@@ -181,6 +186,69 @@ export const convertHeaderColumnToRows = (originColumns) => {
|
|
|
181
186
|
});
|
|
182
187
|
return rows;
|
|
183
188
|
};
|
|
189
|
+
export function convertHeaderToGridRows(spanColumns) {
|
|
190
|
+
const rSize = spanColumns.length;
|
|
191
|
+
const cSize = spanColumns[0].reduce((sum, cell) => sum + cell.colSpan, 0);
|
|
192
|
+
const occupiedRows = [];
|
|
193
|
+
const fullRows = [];
|
|
194
|
+
for (let rIndex = 0; rIndex < rSize; rIndex++) {
|
|
195
|
+
const oCols = [];
|
|
196
|
+
const dCols = [];
|
|
197
|
+
for (let cIndex = 0; cIndex < cSize; cIndex++) {
|
|
198
|
+
oCols.push(false);
|
|
199
|
+
dCols.push('');
|
|
200
|
+
}
|
|
201
|
+
occupiedRows.push(oCols);
|
|
202
|
+
fullRows.push(dCols);
|
|
203
|
+
}
|
|
204
|
+
for (let rIndex = 0; rIndex < rSize; rIndex++) {
|
|
205
|
+
let currColIndex = 0;
|
|
206
|
+
for (const column of spanColumns[rIndex]) {
|
|
207
|
+
const { colSpan, rowSpan } = column;
|
|
208
|
+
let startColIndex = -1;
|
|
209
|
+
for (let ccIndex = currColIndex; ccIndex <= cSize - colSpan; ccIndex++) {
|
|
210
|
+
let oFlag = true;
|
|
211
|
+
for (let csIndex = 0; csIndex < colSpan; csIndex++) {
|
|
212
|
+
if (occupiedRows[rIndex][ccIndex + csIndex]) {
|
|
213
|
+
oFlag = false;
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (oFlag) {
|
|
218
|
+
startColIndex = ccIndex;
|
|
219
|
+
break;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
if (startColIndex === -1) {
|
|
223
|
+
for (let j = 0; j <= cSize - colSpan; j++) {
|
|
224
|
+
let oFlag = true;
|
|
225
|
+
for (let k = 0; k < colSpan; k++) {
|
|
226
|
+
if (occupiedRows[rIndex][j + k]) {
|
|
227
|
+
oFlag = false;
|
|
228
|
+
break;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
if (oFlag) {
|
|
232
|
+
startColIndex = j;
|
|
233
|
+
break;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
if (startColIndex === -1) {
|
|
237
|
+
// error
|
|
238
|
+
break;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
for (let srIndex = rIndex; srIndex < rIndex + rowSpan; srIndex++) {
|
|
242
|
+
for (let scIndex = startColIndex; scIndex < startColIndex + colSpan; scIndex++) {
|
|
243
|
+
occupiedRows[srIndex][scIndex] = true;
|
|
244
|
+
fullRows[srIndex][scIndex] = column;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
currColIndex = startColIndex + colSpan;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
return fullRows;
|
|
251
|
+
}
|
|
184
252
|
export function restoreScrollLocation($xeTable, scrollLeft, scrollTop) {
|
|
185
253
|
const internalData = $xeTable;
|
|
186
254
|
if (scrollLeft || scrollTop) {
|
package/es/table/style.css
CHANGED
|
@@ -2216,9 +2216,6 @@
|
|
|
2216
2216
|
overflow-x: scroll;
|
|
2217
2217
|
height: 18px;
|
|
2218
2218
|
}
|
|
2219
|
-
.vxe-table .vxe-table--scroll-x-wrapper {
|
|
2220
|
-
height: 100%;
|
|
2221
|
-
}
|
|
2222
2219
|
.vxe-table .vxe-table--scroll-y-handle,
|
|
2223
2220
|
.vxe-table .vxe-table--scroll-y-wrapper {
|
|
2224
2221
|
width: 100%;
|
|
@@ -2459,9 +2456,6 @@
|
|
|
2459
2456
|
right: auto;
|
|
2460
2457
|
left: -0.3em;
|
|
2461
2458
|
}
|
|
2462
|
-
.vxe-table--fixed-right-wrapper .vxe-header--column:last-child > .vxe-cell--col-resizable {
|
|
2463
|
-
left: 0;
|
|
2464
|
-
}
|
|
2465
2459
|
|
|
2466
2460
|
.vxe-body--column .vxe-cell--row-resizable {
|
|
2467
2461
|
position: absolute;
|
|
@@ -2868,8 +2862,7 @@
|
|
|
2868
2862
|
.vxe-table--render-default.border--default .vxe-table--scroll-y-bottom-corner, .vxe-table--render-default.border--full .vxe-table--scroll-y-bottom-corner, .vxe-table--render-default.border--outer .vxe-table--scroll-y-bottom-corner, .vxe-table--render-default.border--inner .vxe-table--scroll-y-bottom-corner {
|
|
2869
2863
|
border-top: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
|
|
2870
2864
|
}
|
|
2871
|
-
.vxe-table--render-default.border--default .vxe-table--scroll-x-
|
|
2872
|
-
content: "";
|
|
2865
|
+
.vxe-table--render-default.border--default .vxe-table--scroll-x-handle-appearance, .vxe-table--render-default.border--full .vxe-table--scroll-x-handle-appearance, .vxe-table--render-default.border--outer .vxe-table--scroll-x-handle-appearance, .vxe-table--render-default.border--inner .vxe-table--scroll-x-handle-appearance {
|
|
2873
2866
|
position: absolute;
|
|
2874
2867
|
left: 0;
|
|
2875
2868
|
width: 100%;
|
|
@@ -2877,11 +2870,11 @@
|
|
|
2877
2870
|
z-index: 1;
|
|
2878
2871
|
pointer-events: none;
|
|
2879
2872
|
}
|
|
2880
|
-
.vxe-table--render-default.border--default.sx-pos--top .vxe-table--scroll-x-
|
|
2873
|
+
.vxe-table--render-default.border--default.sx-pos--top .vxe-table--scroll-x-handle-appearance, .vxe-table--render-default.border--full.sx-pos--top .vxe-table--scroll-x-handle-appearance, .vxe-table--render-default.border--outer.sx-pos--top .vxe-table--scroll-x-handle-appearance, .vxe-table--render-default.border--inner.sx-pos--top .vxe-table--scroll-x-handle-appearance {
|
|
2881
2874
|
top: 0;
|
|
2882
2875
|
border-bottom: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
|
|
2883
2876
|
}
|
|
2884
|
-
.vxe-table--render-default.border--default.sx-pos--bottom .vxe-table--scroll-x-
|
|
2877
|
+
.vxe-table--render-default.border--default.sx-pos--bottom .vxe-table--scroll-x-handle-appearance, .vxe-table--render-default.border--full.sx-pos--bottom .vxe-table--scroll-x-handle-appearance, .vxe-table--render-default.border--outer.sx-pos--bottom .vxe-table--scroll-x-handle-appearance, .vxe-table--render-default.border--inner.sx-pos--bottom .vxe-table--scroll-x-handle-appearance {
|
|
2885
2878
|
bottom: 0;
|
|
2886
2879
|
height: calc(100% + var(--vxe-ui-table-border-width));
|
|
2887
2880
|
border-top: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
|
|
@@ -2930,8 +2923,7 @@
|
|
|
2930
2923
|
width: calc(100% + 1px);
|
|
2931
2924
|
left: -1px;
|
|
2932
2925
|
}
|
|
2933
|
-
.vxe-table--render-default.border--default .vxe-table--scroll-y-
|
|
2934
|
-
content: "";
|
|
2926
|
+
.vxe-table--render-default.border--default .vxe-table--scroll-y-handle-appearance, .vxe-table--render-default.border--full .vxe-table--scroll-y-handle-appearance {
|
|
2935
2927
|
position: absolute;
|
|
2936
2928
|
top: 0;
|
|
2937
2929
|
width: 100%;
|
|
@@ -2939,11 +2931,11 @@
|
|
|
2939
2931
|
z-index: 1;
|
|
2940
2932
|
pointer-events: none;
|
|
2941
2933
|
}
|
|
2942
|
-
.vxe-table--render-default.border--default.sy-pos--left .vxe-table--scroll-y-
|
|
2934
|
+
.vxe-table--render-default.border--default.sy-pos--left .vxe-table--scroll-y-handle-appearance, .vxe-table--render-default.border--full.sy-pos--left .vxe-table--scroll-y-handle-appearance {
|
|
2943
2935
|
left: 0;
|
|
2944
2936
|
border-right: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
|
|
2945
2937
|
}
|
|
2946
|
-
.vxe-table--render-default.border--default.sy-pos--right .vxe-table--scroll-y-
|
|
2938
|
+
.vxe-table--render-default.border--default.sy-pos--right .vxe-table--scroll-y-handle-appearance, .vxe-table--render-default.border--full.sy-pos--right .vxe-table--scroll-y-handle-appearance {
|
|
2947
2939
|
right: 0;
|
|
2948
2940
|
width: calc(100% + var(--vxe-ui-table-border-width));
|
|
2949
2941
|
border-left: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
|
|
@@ -3511,8 +3503,8 @@
|
|
|
3511
3503
|
position: absolute;
|
|
3512
3504
|
left: 50%;
|
|
3513
3505
|
font-size: 12px;
|
|
3514
|
-
line-height:
|
|
3515
|
-
transform:
|
|
3506
|
+
line-height: 1em;
|
|
3507
|
+
transform: translate(-50%, -50%);
|
|
3516
3508
|
text-align: left;
|
|
3517
3509
|
z-index: 4;
|
|
3518
3510
|
padding: 0 var(--vxe-ui-table-cell-padding-default);
|
|
@@ -3524,7 +3516,7 @@
|
|
|
3524
3516
|
pointer-events: auto;
|
|
3525
3517
|
}
|
|
3526
3518
|
.vxe-table--render-default .vxe-body--column .vxe-cell--valid-error-theme-beautify {
|
|
3527
|
-
padding: 0.2em 0.6em 0.
|
|
3519
|
+
padding: 0.2em 0.6em 0.25em 0.6em;
|
|
3528
3520
|
color: #fff;
|
|
3529
3521
|
background-color: var(--vxe-ui-table-validate-error-color);
|
|
3530
3522
|
}
|
|
@@ -3549,9 +3541,11 @@
|
|
|
3549
3541
|
}
|
|
3550
3542
|
.vxe-table--render-default.valid-msg--single .vxe-body--row:last-child .vxe-cell--valid-error-tip {
|
|
3551
3543
|
bottom: 100%;
|
|
3544
|
+
transform: translate(-50%, 50%);
|
|
3552
3545
|
}
|
|
3553
3546
|
.vxe-table--render-default.valid-msg--single .vxe-body--row:last-child:first-child .vxe-cell--valid-error-tip {
|
|
3554
3547
|
bottom: auto;
|
|
3548
|
+
transform: translate(-50%, -50%);
|
|
3555
3549
|
}
|
|
3556
3550
|
.vxe-table--render-default.valid-msg--full .vxe-body--row:last-child .vxe-cell--valid-error-tip {
|
|
3557
3551
|
top: calc(100% - 1.3em);
|