vxe-table 4.12.4 → 4.13.0-beta.0

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.
Files changed (139) hide show
  1. package/es/grid/src/grid.js +2 -2
  2. package/es/locale/lang/ar-EG.js +3 -1
  3. package/es/locale/lang/de-DE.js +3 -1
  4. package/es/locale/lang/en-US.js +7 -5
  5. package/es/locale/lang/es-ES.js +3 -1
  6. package/es/locale/lang/fr-FR.js +3 -1
  7. package/es/locale/lang/hu-HU.js +3 -1
  8. package/es/locale/lang/hy-AM.js +3 -1
  9. package/es/locale/lang/id-ID.js +3 -1
  10. package/es/locale/lang/it-IT.js +3 -1
  11. package/es/locale/lang/ja-JP.js +3 -1
  12. package/es/locale/lang/ko-KR.js +3 -1
  13. package/es/locale/lang/nb-NO.js +3 -1
  14. package/es/locale/lang/pt-BR.js +3 -1
  15. package/es/locale/lang/ru-RU.js +3 -1
  16. package/es/locale/lang/th-TH.js +3 -1
  17. package/es/locale/lang/ug-CN.js +3 -1
  18. package/es/locale/lang/uk-UA.js +3 -1
  19. package/es/locale/lang/vi-VN.js +3 -1
  20. package/es/locale/lang/zh-CHT.js +3 -1
  21. package/es/locale/lang/zh-CN.js +3 -1
  22. package/es/style.css +1 -1
  23. package/es/table/module/edit/hook.js +10 -9
  24. package/es/table/module/export/export-panel.js +31 -19
  25. package/es/table/module/export/hook.js +16 -12
  26. package/es/table/src/body.js +11 -13
  27. package/es/table/src/footer.js +3 -16
  28. package/es/table/src/table.js +243 -107
  29. package/es/table/src/util.js +0 -13
  30. package/es/ui/index.js +2 -2
  31. package/es/ui/src/log.js +1 -1
  32. package/lib/grid/src/grid.js +2 -2
  33. package/lib/grid/src/grid.min.js +1 -1
  34. package/lib/index.umd.js +8540 -8566
  35. package/lib/index.umd.min.js +1 -1
  36. package/lib/locale/lang/ar-EG.js +3 -1
  37. package/lib/locale/lang/ar-EG.min.js +1 -1
  38. package/lib/locale/lang/de-DE.js +3 -1
  39. package/lib/locale/lang/de-DE.min.js +1 -1
  40. package/lib/locale/lang/en-US.js +7 -5
  41. package/lib/locale/lang/en-US.min.js +1 -1
  42. package/lib/locale/lang/en-US.umd.js +7 -5
  43. package/lib/locale/lang/es-ES.js +3 -1
  44. package/lib/locale/lang/es-ES.min.js +1 -1
  45. package/lib/locale/lang/es-ES.umd.js +3 -1
  46. package/lib/locale/lang/fr-FR.js +3 -1
  47. package/lib/locale/lang/fr-FR.min.js +1 -1
  48. package/lib/locale/lang/hu-HU.js +3 -1
  49. package/lib/locale/lang/hu-HU.min.js +1 -1
  50. package/lib/locale/lang/hu-HU.umd.js +3 -1
  51. package/lib/locale/lang/hy-AM.js +3 -1
  52. package/lib/locale/lang/hy-AM.min.js +1 -1
  53. package/lib/locale/lang/id-ID.js +3 -1
  54. package/lib/locale/lang/id-ID.min.js +1 -1
  55. package/lib/locale/lang/it-IT.js +3 -1
  56. package/lib/locale/lang/it-IT.min.js +1 -1
  57. package/lib/locale/lang/ja-JP.js +3 -1
  58. package/lib/locale/lang/ja-JP.min.js +1 -1
  59. package/lib/locale/lang/ja-JP.umd.js +3 -1
  60. package/lib/locale/lang/ko-KR.js +3 -1
  61. package/lib/locale/lang/ko-KR.min.js +1 -1
  62. package/lib/locale/lang/ko-KR.umd.js +3 -1
  63. package/lib/locale/lang/nb-NO.js +3 -1
  64. package/lib/locale/lang/nb-NO.min.js +1 -1
  65. package/lib/locale/lang/pt-BR.js +3 -1
  66. package/lib/locale/lang/pt-BR.min.js +1 -1
  67. package/lib/locale/lang/pt-BR.umd.js +3 -1
  68. package/lib/locale/lang/ru-RU.js +3 -1
  69. package/lib/locale/lang/ru-RU.min.js +1 -1
  70. package/lib/locale/lang/ru-RU.umd.js +3 -1
  71. package/lib/locale/lang/th-TH.js +3 -1
  72. package/lib/locale/lang/th-TH.min.js +1 -1
  73. package/lib/locale/lang/ug-CN.js +3 -1
  74. package/lib/locale/lang/ug-CN.min.js +1 -1
  75. package/lib/locale/lang/uk-UA.js +3 -1
  76. package/lib/locale/lang/uk-UA.min.js +1 -1
  77. package/lib/locale/lang/uk-UA.umd.js +3 -1
  78. package/lib/locale/lang/vi-VN.js +3 -1
  79. package/lib/locale/lang/vi-VN.min.js +1 -1
  80. package/lib/locale/lang/zh-CHT.js +3 -1
  81. package/lib/locale/lang/zh-CHT.min.js +1 -1
  82. package/lib/locale/lang/zh-CN.js +3 -1
  83. package/lib/locale/lang/zh-CN.min.js +1 -1
  84. package/lib/locale/lang/zh-CN.umd.js +3 -1
  85. package/lib/style.css +1 -1
  86. package/lib/table/module/edit/hook.js +9 -9
  87. package/lib/table/module/edit/hook.min.js +1 -1
  88. package/lib/table/module/export/export-panel.js +26 -19
  89. package/lib/table/module/export/export-panel.min.js +1 -1
  90. package/lib/table/module/export/hook.js +19 -14
  91. package/lib/table/module/export/hook.min.js +1 -1
  92. package/lib/table/src/body.js +14 -15
  93. package/lib/table/src/body.min.js +1 -1
  94. package/lib/table/src/footer.js +4 -27
  95. package/lib/table/src/footer.min.js +1 -1
  96. package/lib/table/src/table.js +271 -108
  97. package/lib/table/src/table.min.js +1 -1
  98. package/lib/table/src/util.js +0 -25
  99. package/lib/table/src/util.min.js +1 -1
  100. package/lib/ui/index.js +2 -2
  101. package/lib/ui/index.min.js +1 -1
  102. package/lib/ui/src/log.js +1 -1
  103. package/lib/ui/src/log.min.js +1 -1
  104. package/package.json +2 -2
  105. package/packages/grid/src/grid.ts +2 -2
  106. package/packages/locale/lang/ar-EG.ts +3 -1
  107. package/packages/locale/lang/de-DE.ts +3 -1
  108. package/packages/locale/lang/en-US.ts +7 -5
  109. package/packages/locale/lang/es-ES.ts +3 -1
  110. package/packages/locale/lang/fr-FR.ts +3 -1
  111. package/packages/locale/lang/hu-HU.ts +3 -1
  112. package/packages/locale/lang/hy-AM.ts +3 -1
  113. package/packages/locale/lang/id-ID.ts +3 -1
  114. package/packages/locale/lang/it-IT.ts +3 -1
  115. package/packages/locale/lang/ja-JP.ts +3 -1
  116. package/packages/locale/lang/ko-KR.ts +3 -1
  117. package/packages/locale/lang/nb-NO.ts +3 -1
  118. package/packages/locale/lang/pt-BR.ts +3 -1
  119. package/packages/locale/lang/ru-RU.ts +3 -1
  120. package/packages/locale/lang/th-TH.ts +3 -1
  121. package/packages/locale/lang/ug-CN.ts +3 -1
  122. package/packages/locale/lang/uk-UA.ts +3 -1
  123. package/packages/locale/lang/vi-VN.ts +3 -1
  124. package/packages/locale/lang/zh-CHT.ts +3 -1
  125. package/packages/locale/lang/zh-CN.ts +3 -1
  126. package/packages/table/module/edit/hook.ts +10 -9
  127. package/packages/table/module/export/export-panel.ts +31 -19
  128. package/packages/table/module/export/hook.ts +18 -14
  129. package/packages/table/src/body.ts +11 -13
  130. package/packages/table/src/footer.ts +3 -17
  131. package/packages/table/src/table.ts +240 -107
  132. package/packages/table/src/util.ts +0 -14
  133. package/packages/ui/index.ts +1 -1
  134. /package/es/{iconfont.1743394011765.ttf → iconfont.1743578564396.ttf} +0 -0
  135. /package/es/{iconfont.1743394011765.woff → iconfont.1743578564396.woff} +0 -0
  136. /package/es/{iconfont.1743394011765.woff2 → iconfont.1743578564396.woff2} +0 -0
  137. /package/lib/{iconfont.1743394011765.ttf → iconfont.1743578564396.ttf} +0 -0
  138. /package/lib/{iconfont.1743394011765.woff → iconfont.1743578564396.woff} +0 -0
  139. /package/lib/{iconfont.1743394011765.woff2 → iconfont.1743578564396.woff2} +0 -0
@@ -108,10 +108,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
108
108
  // 树节点列信息
109
109
  treeNodeColumn: null,
110
110
  hasFixedColumn: false,
111
- // 合并单元格的对象集
112
- mergeList: [],
113
- // 合并表尾数据的对象集
114
- mergeFooterList: [],
115
111
  // 刷新列标识,当列筛选被改变时,触发表格刷新数据
116
112
  upDataFlag: 0,
117
113
  // 刷新列标识,当列的特定属性被改变时,触发表格刷新列
@@ -255,6 +251,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
255
251
  original: false,
256
252
  message: true,
257
253
  isHeader: false,
254
+ isTitle: false,
258
255
  isFooter: false
259
256
  },
260
257
  rowExpandedFlag: 1,
@@ -263,6 +260,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
263
260
  pendingRowFlag: 1,
264
261
  insertRowFlag: 1,
265
262
  removeRowFlag: 1,
263
+ mergeBodyFlag: 1,
264
+ mergeFootFlag: 1,
266
265
  rowHeightStore: {
267
266
  default: 48,
268
267
  medium: 44,
@@ -355,13 +354,26 @@ var _default = exports.default = (0, _vue.defineComponent)({
355
354
  tableFullColumn: [],
356
355
  // 渲染所有列
357
356
  visibleColumn: [],
358
- // 总的缓存数据集
357
+ // 全量数据集(包括当前和已删除)
359
358
  fullAllDataRowIdData: {},
359
+ // 数据集(仅当前)
360
+ fullDataRowIdData: {},
361
+ // 数据集(仅可视)
362
+ visibleDataRowIdData: {},
360
363
  // 渲染中缓存数据
361
364
  sourceDataRowIdData: {},
362
- fullDataRowIdData: {},
363
365
  fullColumnIdData: {},
364
366
  fullColumnFieldData: {},
367
+ // 合并单元格的数据
368
+ mergeBodyList: [],
369
+ mergeBodyMaps: {},
370
+ // 合并表尾的数据
371
+ mergeFooterList: [],
372
+ mergeFooterMaps: {},
373
+ // 已合并单元格数据集合
374
+ mergeBodyCellMaps: {},
375
+ // 已合并表尾数据集合
376
+ mergeFooterCellMaps: {},
365
377
  // 已展开的行集合
366
378
  rowExpandedMaps: {},
367
379
  // 懒加载中的展开行的集合
@@ -693,25 +705,28 @@ var _default = exports.default = (0, _vue.defineComponent)({
693
705
  return Object.assign({}, getConfig().table.customConfig, props.customConfig);
694
706
  });
695
707
  const computeTableRowExpandedList = (0, _vue.computed)(() => {
708
+ const {
709
+ treeConfig
710
+ } = props;
696
711
  const {
697
712
  rowExpandedFlag,
698
- tableData,
699
713
  expandColumn
700
714
  } = reactData;
701
715
  const {
716
+ visibleDataRowIdData,
702
717
  rowExpandedMaps
703
718
  } = internalData;
719
+ const treeOpts = computeTreeOpts.value;
704
720
  const {
705
- handleGetRowId
706
- } = (0, _util.createHandleGetRowId)($xeTable);
721
+ transform
722
+ } = treeOpts;
707
723
  const expandList = [];
708
724
  if (expandColumn && rowExpandedFlag) {
709
- const rowKeys = {};
710
- tableData.forEach(row => {
711
- rowKeys[handleGetRowId(row)] = true;
712
- });
725
+ if (treeConfig && !transform) {
726
+ return _xeUtils.default.values(rowExpandedMaps);
727
+ }
713
728
  _xeUtils.default.each(rowExpandedMaps, (row, rowid) => {
714
- if (rowKeys[rowid]) {
729
+ if (visibleDataRowIdData[rowid]) {
715
730
  expandList.push(row);
716
731
  }
717
732
  });
@@ -1152,55 +1167,157 @@ var _default = exports.default = (0, _vue.defineComponent)({
1152
1167
  }
1153
1168
  }
1154
1169
  };
1155
- const setMerges = (merges, mList, rowList) => {
1170
+ function buildMergeData(mergeConfigs) {
1171
+ const mergeMaps = {};
1172
+ if (mergeConfigs && mergeConfigs.length) {
1173
+ for (let mIndex = 0; mIndex < mergeConfigs.length; mIndex++) {
1174
+ const {
1175
+ row: _rowIndex,
1176
+ col: _columnIndex,
1177
+ rowspan: mergeRowspan,
1178
+ colspan: mergeColspan
1179
+ } = mergeConfigs[mIndex];
1180
+ for (let i = 0; i < mergeRowspan; i++) {
1181
+ for (let j = 0; j < mergeColspan; j++) {
1182
+ mergeMaps[`${_rowIndex + i}:${_columnIndex + j}`] = !i && !j ? {
1183
+ rowspan: mergeRowspan,
1184
+ colspan: mergeColspan
1185
+ } : {
1186
+ rowspan: 0,
1187
+ colspan: 0
1188
+ };
1189
+ }
1190
+ }
1191
+ }
1192
+ }
1193
+ return mergeMaps;
1194
+ }
1195
+ const handleBodyMerge = merges => {
1196
+ const {
1197
+ fullAllDataRowIdData,
1198
+ fullColumnIdData,
1199
+ visibleColumn,
1200
+ afterFullData,
1201
+ mergeBodyList,
1202
+ mergeBodyMaps
1203
+ } = internalData;
1204
+ if (merges) {
1205
+ const {
1206
+ handleGetRowId
1207
+ } = (0, _util.createHandleGetRowId)($xeTable);
1208
+ if (!_xeUtils.default.isArray(merges)) {
1209
+ merges = [merges];
1210
+ }
1211
+ merges.forEach(item => {
1212
+ let {
1213
+ row: margeRow,
1214
+ col: margeCol,
1215
+ rowspan,
1216
+ colspan
1217
+ } = item;
1218
+ let mergeRowIndex = -1;
1219
+ let mergeColumnIndex = -1;
1220
+ if (_xeUtils.default.isNumber(margeRow)) {
1221
+ mergeRowIndex = margeRow;
1222
+ } else {
1223
+ const rowid = margeRow ? handleGetRowId(margeRow) : null;
1224
+ const rowRest = rowid ? fullAllDataRowIdData[rowid] : null;
1225
+ if (rowRest) {
1226
+ mergeRowIndex = rowRest._index;
1227
+ }
1228
+ }
1229
+ if (_xeUtils.default.isNumber(margeCol)) {
1230
+ mergeColumnIndex = margeCol;
1231
+ } else {
1232
+ const colid = margeCol ? margeCol.id : null;
1233
+ const colRest = colid ? fullColumnIdData[colid] : null;
1234
+ if (colRest) {
1235
+ mergeColumnIndex = colRest._index;
1236
+ }
1237
+ }
1238
+ if (mergeRowIndex > -1 && mergeColumnIndex > -1 && (rowspan || colspan)) {
1239
+ rowspan = _xeUtils.default.toNumber(rowspan) || 1;
1240
+ colspan = _xeUtils.default.toNumber(colspan) || 1;
1241
+ if (rowspan > 1 || colspan > 1) {
1242
+ const row = afterFullData[mergeRowIndex];
1243
+ const column = visibleColumn[mergeColumnIndex];
1244
+ let mergeItem = mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
1245
+ if (mergeItem) {
1246
+ mergeItem.rowspan = rowspan;
1247
+ mergeItem.colspan = colspan;
1248
+ mergeItem._rowspan = rowspan;
1249
+ mergeItem._colspan = colspan;
1250
+ } else {
1251
+ mergeItem = {
1252
+ row: mergeRowIndex,
1253
+ col: mergeColumnIndex,
1254
+ rowspan,
1255
+ colspan,
1256
+ _row: row,
1257
+ _col: column,
1258
+ _rowspan: rowspan,
1259
+ _colspan: colspan
1260
+ };
1261
+ mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem;
1262
+ mergeBodyList.push(mergeItem);
1263
+ }
1264
+ }
1265
+ }
1266
+ });
1267
+ }
1268
+ };
1269
+ const handleFooterMerge = merges => {
1270
+ const {
1271
+ footerTableData
1272
+ } = reactData;
1273
+ const {
1274
+ mergeFooterList,
1275
+ mergeFooterMaps
1276
+ } = internalData;
1156
1277
  if (merges) {
1157
- // const { treeConfig } = props
1158
1278
  const {
1159
1279
  visibleColumn
1160
1280
  } = internalData;
1161
1281
  if (!_xeUtils.default.isArray(merges)) {
1162
1282
  merges = [merges];
1163
1283
  }
1164
- // if (treeConfig && merges.length) {
1165
- // errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
1166
- // }
1167
1284
  merges.forEach(item => {
1168
1285
  let {
1169
- row,
1170
- col,
1286
+ row: margeRow,
1287
+ col: margeCol,
1171
1288
  rowspan,
1172
1289
  colspan
1173
1290
  } = item;
1174
- if (rowList && _xeUtils.default.isNumber(row)) {
1175
- row = rowList[row];
1291
+ const mergeRowIndex = _xeUtils.default.isNumber(margeRow) ? margeRow : -1;
1292
+ let mergeColumnIndex = -1;
1293
+ if (_xeUtils.default.isNumber(margeCol)) {
1294
+ mergeColumnIndex = margeCol;
1176
1295
  }
1177
- if (_xeUtils.default.isNumber(col)) {
1178
- col = visibleColumn[col];
1179
- }
1180
- if ((rowList ? row : _xeUtils.default.isNumber(row)) && col && (rowspan || colspan)) {
1296
+ if (mergeRowIndex > -1 && mergeColumnIndex > -1 && (rowspan || colspan)) {
1181
1297
  rowspan = _xeUtils.default.toNumber(rowspan) || 1;
1182
1298
  colspan = _xeUtils.default.toNumber(colspan) || 1;
1183
1299
  if (rowspan > 1 || colspan > 1) {
1184
- const mcIndex = _xeUtils.default.findIndexOf(mList, item => (item._row === row || (0, _util.getRowid)($xeTable, item._row) === (0, _util.getRowid)($xeTable, row)) && (item._col.id === col || item._col.id === col.id));
1185
- const mergeItem = mList[mcIndex];
1300
+ const row = footerTableData[mergeRowIndex];
1301
+ const column = visibleColumn[mergeColumnIndex];
1302
+ let mergeItem = mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
1186
1303
  if (mergeItem) {
1187
1304
  mergeItem.rowspan = rowspan;
1188
1305
  mergeItem.colspan = colspan;
1189
1306
  mergeItem._rowspan = rowspan;
1190
1307
  mergeItem._colspan = colspan;
1191
1308
  } else {
1192
- const mergeRowIndex = rowList ? $xeTable.findRowIndexOf(rowList, row) : row;
1193
- const mergeColIndex = tableMethods.getVTColumnIndex(col);
1194
- mList.push({
1309
+ mergeItem = {
1195
1310
  row: mergeRowIndex,
1196
- col: mergeColIndex,
1311
+ col: mergeColumnIndex,
1197
1312
  rowspan,
1198
1313
  colspan,
1199
1314
  _row: row,
1200
- _col: col,
1315
+ _col: column,
1201
1316
  _rowspan: rowspan,
1202
1317
  _colspan: colspan
1203
- });
1318
+ };
1319
+ mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem;
1320
+ mergeFooterList.push(mergeItem);
1204
1321
  }
1205
1322
  }
1206
1323
  }
@@ -1368,6 +1485,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
1368
1485
  const expandOpts = computeExpandOpts.value;
1369
1486
  const columnOpts = computeColumnOpts.value;
1370
1487
  const columnDragOpts = computeColumnDragOpts.value;
1488
+ const virtualYOpts = computeVirtualYOpts.value;
1371
1489
  const {
1372
1490
  isCrossDrag,
1373
1491
  isSelfToChildDrag
@@ -1421,39 +1539,33 @@ var _default = exports.default = (0, _vue.defineComponent)({
1421
1539
  htmlColumn = column;
1422
1540
  }
1423
1541
  if (treeNode) {
1424
- if (process.env.NODE_ENV === 'development') {
1425
- if (treeNodeColumn) {
1426
- (0, _log.warnLog)('vxe.error.colRepet', ['tree-node', treeNode]);
1427
- }
1542
+ if (treeNodeColumn) {
1543
+ (0, _log.warnLog)('vxe.error.colRepet', ['tree-node', treeNode]);
1428
1544
  }
1429
1545
  if (!treeNodeColumn) {
1430
1546
  treeNodeColumn = column;
1431
1547
  }
1432
1548
  } else if (type === 'expand') {
1433
- if (process.env.NODE_ENV === 'development') {
1434
- if (expandColumn) {
1435
- (0, _log.warnLog)('vxe.error.colRepet', ['type', type]);
1436
- }
1549
+ if (expandColumn) {
1550
+ (0, _log.warnLog)('vxe.error.colRepet', ['type', type]);
1437
1551
  }
1438
1552
  if (!expandColumn) {
1439
1553
  expandColumn = column;
1440
1554
  }
1441
1555
  }
1442
- if (process.env.NODE_ENV === 'development') {
1443
- if (type === 'checkbox') {
1444
- if (checkboxColumn) {
1445
- (0, _log.warnLog)('vxe.error.colRepet', ['type', type]);
1446
- }
1447
- if (!checkboxColumn) {
1448
- checkboxColumn = column;
1449
- }
1450
- } else if (type === 'radio') {
1451
- if (radioColumn) {
1452
- (0, _log.warnLog)('vxe.error.colRepet', ['type', type]);
1453
- }
1454
- if (!radioColumn) {
1455
- radioColumn = column;
1456
- }
1556
+ if (type === 'checkbox') {
1557
+ if (checkboxColumn) {
1558
+ (0, _log.warnLog)('vxe.error.colRepet', ['type', type]);
1559
+ }
1560
+ if (!checkboxColumn) {
1561
+ checkboxColumn = column;
1562
+ }
1563
+ } else if (type === 'radio') {
1564
+ if (radioColumn) {
1565
+ (0, _log.warnLog)('vxe.error.colRepet', ['type', type]);
1566
+ }
1567
+ if (!radioColumn) {
1568
+ radioColumn = column;
1457
1569
  }
1458
1570
  }
1459
1571
  if (isAllOverflow && column.showOverflow === false) {
@@ -1472,6 +1584,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
1472
1584
  } else {
1473
1585
  tableFullColumn.forEach(handleFunc);
1474
1586
  }
1587
+ if (expandColumn && expandOpts.mode !== 'fixed' && virtualYOpts.enabled) {
1588
+ (0, _log.warnLog)('vxe.error.notConflictProp', ['column.type="expand', 'virtual-y-config.enabled=false']);
1589
+ }
1475
1590
  if (expandColumn && expandOpts.mode !== 'fixed' && mouseOpts.area) {
1476
1591
  (0, _log.errLog)('vxe.error.errConflicts', ['mouse-config.area', 'column.type=expand']);
1477
1592
  }
@@ -3084,6 +3199,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
3084
3199
  lastScrollTop
3085
3200
  } = internalData;
3086
3201
  const treeOpts = computeTreeOpts.value;
3202
+ const expandOpts = computeExpandOpts.value;
3087
3203
  const {
3088
3204
  transform
3089
3205
  } = treeOpts;
@@ -3142,7 +3258,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
3142
3258
  internalData.tableFullData = fullData;
3143
3259
  internalData.tableFullTreeData = treeData;
3144
3260
  // 缓存数据
3145
- $xeTable.cacheRowMap(true);
3261
+ $xeTable.cacheRowMap(isReset);
3146
3262
  // 原始数据
3147
3263
  internalData.tableSynchData = datas;
3148
3264
  if (isReset) {
@@ -3160,6 +3276,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
3160
3276
  $xeTable.clearMergeFooterItems();
3161
3277
  $xeTable.handleTableData(true);
3162
3278
  $xeTable.updateFooter();
3279
+ $xeTable.handleUpdateBodyMerge();
3163
3280
  return (0, _vue.nextTick)().then(() => {
3164
3281
  updateHeight();
3165
3282
  updateStyle();
@@ -3171,6 +3288,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
3171
3288
  scrollYStore.endIndex = scrollYStore.visibleSize;
3172
3289
  }
3173
3290
  if (sYLoad) {
3291
+ if (reactData.expandColumn && expandOpts.mode !== 'fixed') {
3292
+ (0, _log.errLog)('vxe.error.notConflictProp', ['column.type="expand', 'expand-config.mode="fixed"']);
3293
+ }
3174
3294
  // if (showOverflow) {
3175
3295
  // if (!rowOpts.height) {
3176
3296
  // const errColumn = internalData.tableFullColumn.find(column => column.showOverflow === false)
@@ -3271,11 +3391,11 @@ var _default = exports.default = (0, _vue.defineComponent)({
3271
3391
  };
3272
3392
  const loadScrollXData = () => {
3273
3393
  const {
3274
- mergeList,
3275
- mergeFooterList,
3276
3394
  isScrollXBig
3277
3395
  } = reactData;
3278
3396
  const {
3397
+ mergeBodyList,
3398
+ mergeFooterList,
3279
3399
  scrollXStore
3280
3400
  } = internalData;
3281
3401
  const {
@@ -3294,7 +3414,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
3294
3414
  };
3295
3415
  scrollXStore.visibleStartIndex = toVisibleIndex - 1;
3296
3416
  scrollXStore.visibleEndIndex = toVisibleIndex + visibleSize + 1;
3297
- calculateMergerOffsetIndex(mergeList.concat(mergeFooterList), offsetItem, 'col');
3417
+ calculateMergerOffsetIndex(mergeBodyList.concat(mergeFooterList), offsetItem, 'col');
3298
3418
  const {
3299
3419
  startIndex: offsetStartIndex,
3300
3420
  endIndex: offsetEndIndex
@@ -3645,11 +3765,11 @@ var _default = exports.default = (0, _vue.defineComponent)({
3645
3765
  */
3646
3766
  const loadScrollYData = () => {
3647
3767
  const {
3648
- mergeList,
3649
3768
  isAllOverflow,
3650
3769
  isScrollYBig
3651
3770
  } = reactData;
3652
3771
  const {
3772
+ mergeBodyList,
3653
3773
  scrollYStore
3654
3774
  } = internalData;
3655
3775
  const {
@@ -3669,7 +3789,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
3669
3789
  };
3670
3790
  scrollYStore.visibleStartIndex = toVisibleIndex - 1;
3671
3791
  scrollYStore.visibleEndIndex = toVisibleIndex + visibleSize + 1;
3672
- calculateMergerOffsetIndex(mergeList, offsetItem, 'row');
3792
+ calculateMergerOffsetIndex(mergeBodyList, offsetItem, 'row');
3673
3793
  const {
3674
3794
  startIndex: offsetStartIndex,
3675
3795
  endIndex: offsetEndIndex
@@ -4011,7 +4131,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
4011
4131
  * 对于某些特殊的场景,比如深层树节点元素发生变动时可能会用到
4012
4132
  */
4013
4133
  syncData() {
4014
- (0, _log.warnLog)('vxe.error.delFunc', ['syncData', 'getData']);
4134
+ (0, _log.errLog)('vxe.error.delFunc', ['syncData', 'getData']);
4015
4135
  return (0, _vue.nextTick)().then(() => {
4016
4136
  reactData.tableData = [];
4017
4137
  emit('update:data', internalData.tableFullData);
@@ -4780,6 +4900,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
4780
4900
  const {
4781
4901
  treeConfig
4782
4902
  } = props;
4903
+ const {
4904
+ updateCheckboxFlag
4905
+ } = reactData;
4783
4906
  const {
4784
4907
  tableFullData,
4785
4908
  afterFullData,
@@ -4800,28 +4923,30 @@ var _default = exports.default = (0, _vue.defineComponent)({
4800
4923
  } = checkboxOpts;
4801
4924
  const childrenField = treeOpts.children || treeOpts.childrenField;
4802
4925
  let rowList = [];
4803
- if (checkField) {
4804
- if (treeConfig) {
4805
- const currTableData = isFull ? transform ? tableFullTreeData : tableFullData : transform ? afterTreeFullData : afterFullData;
4806
- rowList = _xeUtils.default.filterTree(currTableData, row => _xeUtils.default.get(row, checkField), {
4807
- children: transform ? mapChildrenField : childrenField
4808
- });
4809
- } else {
4810
- const currTableData = isFull ? tableFullData : afterFullData;
4811
- rowList = currTableData.filter(row => _xeUtils.default.get(row, checkField));
4812
- }
4813
- } else {
4814
- _xeUtils.default.each(selectCheckboxMaps, (row, rowid) => {
4815
- if (isFull) {
4816
- if (fullDataRowIdData[rowid]) {
4817
- rowList.push(fullDataRowIdData[rowid].row);
4818
- }
4926
+ if (updateCheckboxFlag) {
4927
+ if (checkField) {
4928
+ if (treeConfig) {
4929
+ const currTableData = isFull ? transform ? tableFullTreeData : tableFullData : transform ? afterTreeFullData : afterFullData;
4930
+ rowList = _xeUtils.default.filterTree(currTableData, row => _xeUtils.default.get(row, checkField), {
4931
+ children: transform ? mapChildrenField : childrenField
4932
+ });
4819
4933
  } else {
4820
- if (afterFullRowMaps[rowid]) {
4821
- rowList.push(afterFullRowMaps[rowid]);
4822
- }
4934
+ const currTableData = isFull ? tableFullData : afterFullData;
4935
+ rowList = currTableData.filter(row => _xeUtils.default.get(row, checkField));
4823
4936
  }
4824
- });
4937
+ } else {
4938
+ _xeUtils.default.each(selectCheckboxMaps, (row, rowid) => {
4939
+ if (isFull) {
4940
+ if (fullDataRowIdData[rowid]) {
4941
+ rowList.push(fullDataRowIdData[rowid].row);
4942
+ }
4943
+ } else {
4944
+ if (afterFullRowMaps[rowid]) {
4945
+ rowList.push(afterFullRowMaps[rowid]);
4946
+ }
4947
+ }
4948
+ });
4949
+ }
4825
4950
  }
4826
4951
  return rowList;
4827
4952
  },
@@ -6650,6 +6775,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
6650
6775
  }) : [];
6651
6776
  }
6652
6777
  reactData.footerTableData = footData;
6778
+ $xeTable.handleUpdateFooterMerge();
6653
6779
  return (0, _vue.nextTick)();
6654
6780
  },
6655
6781
  /**
@@ -6675,9 +6801,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
6675
6801
  if (props.spanMethod) {
6676
6802
  (0, _log.errLog)('vxe.error.errConflicts', ['merge-cells', 'span-method']);
6677
6803
  }
6678
- setMerges(merges, reactData.mergeList, internalData.afterFullData);
6804
+ handleBodyMerge(merges);
6805
+ $xeTable.handleUpdateBodyMerge();
6679
6806
  return (0, _vue.nextTick)().then(() => {
6680
- tableMethods.updateCellAreas();
6807
+ $xeTable.updateCellAreas();
6681
6808
  return updateStyle();
6682
6809
  });
6683
6810
  },
@@ -6689,9 +6816,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
6689
6816
  if (props.spanMethod) {
6690
6817
  (0, _log.errLog)('vxe.error.errConflicts', ['merge-cells', 'span-method']);
6691
6818
  }
6692
- const rest = removeMerges(merges, reactData.mergeList, internalData.afterFullData);
6819
+ const rest = removeMerges(merges, internalData.mergeBodyList, internalData.afterFullData);
6693
6820
  return (0, _vue.nextTick)().then(() => {
6694
- tableMethods.updateCellAreas();
6821
+ $xeTable.updateCellAreas();
6695
6822
  updateStyle();
6696
6823
  return rest;
6697
6824
  });
@@ -6700,13 +6827,15 @@ var _default = exports.default = (0, _vue.defineComponent)({
6700
6827
  * 获取所有被合并的单元格
6701
6828
  */
6702
6829
  getMergeCells() {
6703
- return reactData.mergeList.slice(0);
6830
+ return internalData.mergeBodyList.slice(0);
6704
6831
  },
6705
6832
  /**
6706
6833
  * 清除所有单元格合并
6707
6834
  */
6708
6835
  clearMergeCells() {
6709
- reactData.mergeList = [];
6836
+ internalData.mergeBodyList = [];
6837
+ internalData.mergeBodyMaps = {};
6838
+ internalData.mergeBodyCellMaps = {};
6710
6839
  return (0, _vue.nextTick)().then(() => {
6711
6840
  return updateStyle();
6712
6841
  });
@@ -6715,7 +6844,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
6715
6844
  if (props.footerSpanMethod) {
6716
6845
  (0, _log.errLog)('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method']);
6717
6846
  }
6718
- setMerges(merges, reactData.mergeFooterList);
6847
+ handleFooterMerge(merges);
6848
+ $xeTable.handleUpdateFooterMerge();
6719
6849
  return (0, _vue.nextTick)().then(() => {
6720
6850
  tableMethods.updateCellAreas();
6721
6851
  return updateStyle();
@@ -6725,7 +6855,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
6725
6855
  if (props.footerSpanMethod) {
6726
6856
  (0, _log.errLog)('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method']);
6727
6857
  }
6728
- const rest = removeMerges(merges, reactData.mergeFooterList);
6858
+ const rest = removeMerges(merges, internalData.mergeFooterList);
6729
6859
  return (0, _vue.nextTick)().then(() => {
6730
6860
  tableMethods.updateCellAreas();
6731
6861
  updateStyle();
@@ -6736,13 +6866,15 @@ var _default = exports.default = (0, _vue.defineComponent)({
6736
6866
  * 获取所有被合并的表尾
6737
6867
  */
6738
6868
  getMergeFooterItems() {
6739
- return reactData.mergeFooterList.slice(0);
6869
+ return internalData.mergeFooterList.slice(0);
6740
6870
  },
6741
6871
  /**
6742
6872
  * 清除所有表尾合并
6743
6873
  */
6744
6874
  clearMergeFooterItems() {
6745
- reactData.mergeFooterList = [];
6875
+ internalData.mergeFooterList = [];
6876
+ internalData.mergeFooterMaps = {};
6877
+ internalData.mergeFooterCellMaps = {};
6746
6878
  return (0, _vue.nextTick)().then(() => {
6747
6879
  return updateStyle();
6748
6880
  });
@@ -7879,20 +8011,23 @@ var _default = exports.default = (0, _vue.defineComponent)({
7879
8011
  fullList = handleVirtualTreeToList();
7880
8012
  }
7881
8013
  const tableData = scrollYLoad ? fullList.slice(scrollYStore.startIndex, scrollYStore.endIndex) : fullList.slice(0);
8014
+ const visibleDataRowIdMaps = {};
7882
8015
  tableData.forEach((row, $index) => {
7883
8016
  const rowid = (0, _util.getRowid)($xeTable, row);
7884
8017
  const rest = fullDataRowIdData[rowid];
7885
8018
  if (rest) {
7886
8019
  rest.$index = $index;
7887
8020
  }
8021
+ visibleDataRowIdMaps[rowid] = row;
7888
8022
  });
7889
8023
  reactData.tableData = tableData;
8024
+ internalData.visibleDataRowIdData = visibleDataRowIdMaps;
7890
8025
  return (0, _vue.nextTick)();
7891
8026
  },
7892
8027
  /**
7893
8028
  * 更新数据行的 Map
7894
8029
  */
7895
- cacheRowMap() {
8030
+ cacheRowMap(isReset) {
7896
8031
  const {
7897
8032
  treeConfig
7898
8033
  } = props;
@@ -7908,7 +8043,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
7908
8043
  const {
7909
8044
  lazy
7910
8045
  } = treeOpts;
7911
- const fullAllDataRowIdMaps = Object.assign({}, fullAllDataRowIdData); // 存在已删除数据
8046
+ const fullAllDataRowIdMaps = isReset ? {} : Object.assign({}, fullAllDataRowIdData); // 存在已删除数据
7912
8047
  const fullDataRowIdMaps = {};
7913
8048
  const {
7914
8049
  handleUpdateRowId
@@ -8817,6 +8952,23 @@ var _default = exports.default = (0, _vue.defineComponent)({
8817
8952
  }, checked, isForce) {
8818
8953
  $xeTable.handleBatchSelectRows([row], checked, isForce);
8819
8954
  },
8955
+ /**
8956
+ * 处理合并
8957
+ */
8958
+ handleUpdateBodyMerge() {
8959
+ const {
8960
+ mergeBodyList
8961
+ } = internalData;
8962
+ internalData.mergeBodyCellMaps = buildMergeData(mergeBodyList);
8963
+ reactData.mergeBodyFlag++;
8964
+ },
8965
+ handleUpdateFooterMerge() {
8966
+ const {
8967
+ mergeFooterList
8968
+ } = internalData;
8969
+ internalData.mergeFooterCellMaps = buildMergeData(mergeFooterList);
8970
+ reactData.mergeFootFlag++;
8971
+ },
8820
8972
  triggerHeaderTitleEvent(evnt, iconParams, params) {
8821
8973
  const tipContent = iconParams.content || iconParams.message;
8822
8974
  if (tipContent) {
@@ -11231,20 +11383,22 @@ var _default = exports.default = (0, _vue.defineComponent)({
11231
11383
  } = treeOpts;
11232
11384
  const cellStyle = {};
11233
11385
  const rowid = handleGetRowId(row);
11234
- const rest = fullAllDataRowIdData[rowid];
11386
+ const rowRest = fullAllDataRowIdData[rowid];
11235
11387
  let rowLevel = 0;
11236
11388
  let seq = -1;
11237
- let _rowIndex = 0;
11238
- const rowIndex = $xeTable.getRowIndex(row);
11239
- const $rowIndex = $xeTable.getVMRowIndex(row);
11240
- if (rest) {
11241
- rowLevel = rest.level;
11389
+ let _rowIndex = -1;
11390
+ let rowIndex = -1;
11391
+ let $rowIndex = -1;
11392
+ if (rowRest) {
11393
+ rowLevel = rowRest.level;
11242
11394
  if (treeConfig && transform && seqMode === 'increasing') {
11243
- seq = rest._index + 1;
11395
+ seq = rowRest._index + 1;
11244
11396
  } else {
11245
- seq = rest.seq;
11397
+ seq = rowRest.seq;
11246
11398
  }
11247
- _rowIndex = rest._index;
11399
+ rowIndex = rowRest.index;
11400
+ $rowIndex = rowRest.$index;
11401
+ _rowIndex = rowRest._index;
11248
11402
  }
11249
11403
  if (expandHeight) {
11250
11404
  cellStyle.height = `${expandHeight}px`;
@@ -11827,6 +11981,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
11827
11981
  if (columnOpts.drag || rowOpts.drag || customOpts.allowSort) {
11828
11982
  (0, _dom.initTpImg)();
11829
11983
  }
11984
+ ;
11985
+ window.aa = $xeTable;
11830
11986
  (0, _vue.nextTick)(() => {
11831
11987
  const {
11832
11988
  data,
@@ -11855,6 +12011,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
11855
12011
  const currentColumnOpts = computeCurrentColumnOpts.value;
11856
12012
  const virtualXOpts = computeVirtualXOpts.value;
11857
12013
  const virtualYOpts = computeVirtualYOpts.value;
12014
+ const keyboardOpts = computeKeyboardOpts.value;
11858
12015
  if (props.rowId) {
11859
12016
  (0, _log.warnLog)('vxe.error.delProp', ['row-id', 'row-config.keyField']);
11860
12017
  }
@@ -11894,6 +12051,12 @@ var _default = exports.default = (0, _vue.defineComponent)({
11894
12051
  if (props.highlightHoverColumn) {
11895
12052
  (0, _log.warnLog)('vxe.error.delProp', ['highlight-hover-column', 'column-config.isHover']);
11896
12053
  }
12054
+ // if (props.scrollY) {
12055
+ // warnLog('vxe.error.delProp', ['scroll-y', 'virtual-y-config'])
12056
+ // }
12057
+ // if (props.scrollX) {
12058
+ // warnLog('vxe.error.delProp', ['scroll-x', 'virtual-x-config'])
12059
+ // }
11897
12060
  // 检查导入导出类型,如果自定义导入导出方法,则不校验类型
11898
12061
  if (importConfig && importOpts.types && !importOpts.importMethod && !_xeUtils.default.includeArrays(_xeUtils.default.keys(importOpts._typeMaps), importOpts.types)) {
11899
12062
  (0, _log.warnLog)('vxe.error.errProp', [`export-config.types=${importOpts.types.join(',')}`, importOpts.types.filter(type => _xeUtils.default.includes(_xeUtils.default.keys(importOpts._typeMaps), type)).join(',') || _xeUtils.default.keys(importOpts._typeMaps).join(',')]);
@@ -11954,10 +12117,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
11954
12117
  if (checkboxOpts.halfField) {
11955
12118
  (0, _log.warnLog)('vxe.error.delProp', ['checkbox-config.halfField', 'checkbox-config.indeterminateField']);
11956
12119
  }
11957
- if ((rowOpts.isCurrent || highlightCurrentRow) && !_xeUtils.default.isBoolean(currentRowOpts.isFollowSelected)) {
12120
+ if ((rowOpts.isCurrent || highlightCurrentRow) && props.keyboardConfig && keyboardOpts.isArrow && !_xeUtils.default.isBoolean(currentRowOpts.isFollowSelected)) {
11958
12121
  (0, _log.warnLog)('vxe.error.notConflictProp', ['row-config.isCurrent', 'current-row-config.isFollowSelected']);
11959
12122
  }
11960
- if ((columnOpts.isCurrent || highlightCurrentColumn) && !_xeUtils.default.isBoolean(currentColumnOpts.isFollowSelected)) {
12123
+ if ((columnOpts.isCurrent || highlightCurrentColumn) && props.keyboardConfig && keyboardOpts.isArrow && !_xeUtils.default.isBoolean(currentColumnOpts.isFollowSelected)) {
11961
12124
  (0, _log.warnLog)('vxe.error.notConflictProp', ['column-config.isCurrent', 'current-column-config.isFollowSelected']);
11962
12125
  }
11963
12126
  // 如果不支持虚拟滚动