vxe-table 3.18.1 → 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.
Files changed (63) hide show
  1. package/es/index.css +1 -1
  2. package/es/index.min.css +1 -1
  3. package/es/style.css +1 -1
  4. package/es/style.min.css +1 -1
  5. package/es/table/src/column.js +2 -0
  6. package/es/table/src/columnInfo.js +1 -0
  7. package/es/table/src/footer.js +7 -5
  8. package/es/table/src/header.js +67 -28
  9. package/es/table/src/methods.js +233 -39
  10. package/es/table/src/props.js +23 -6
  11. package/es/table/src/table.js +43 -19
  12. package/es/table/src/util.js +70 -2
  13. package/es/table/style.css +11 -17
  14. package/es/table/style.min.css +1 -1
  15. package/es/ui/index.js +1 -1
  16. package/es/ui/src/log.js +1 -1
  17. package/es/vxe-table/style.css +11 -17
  18. package/es/vxe-table/style.min.css +1 -1
  19. package/lib/index.css +1 -1
  20. package/lib/index.min.css +1 -1
  21. package/lib/index.umd.js +482 -94
  22. package/lib/index.umd.min.js +1 -1
  23. package/lib/style.css +1 -1
  24. package/lib/style.min.css +1 -1
  25. package/lib/table/src/column.js +2 -0
  26. package/lib/table/src/column.min.js +1 -1
  27. package/lib/table/src/columnInfo.js +1 -0
  28. package/lib/table/src/columnInfo.min.js +1 -1
  29. package/lib/table/src/footer.js +7 -5
  30. package/lib/table/src/header.js +82 -25
  31. package/lib/table/src/header.min.js +1 -1
  32. package/lib/table/src/methods.js +259 -42
  33. package/lib/table/src/methods.min.js +1 -1
  34. package/lib/table/src/props.js +11 -3
  35. package/lib/table/src/props.min.js +1 -1
  36. package/lib/table/src/table.js +46 -16
  37. package/lib/table/src/table.min.js +1 -1
  38. package/lib/table/src/util.js +74 -2
  39. package/lib/table/src/util.min.js +1 -1
  40. package/lib/table/style/style.css +11 -17
  41. package/lib/table/style/style.min.css +1 -1
  42. package/lib/ui/index.js +1 -1
  43. package/lib/ui/index.min.js +1 -1
  44. package/lib/ui/src/log.js +1 -1
  45. package/lib/ui/src/log.min.js +1 -1
  46. package/lib/vxe-table/style/style.css +11 -17
  47. package/lib/vxe-table/style/style.min.css +1 -1
  48. package/package.json +1 -1
  49. package/packages/table/src/column.ts +4 -2
  50. package/packages/table/src/columnInfo.ts +1 -0
  51. package/packages/table/src/footer.ts +11 -9
  52. package/packages/table/src/header.ts +76 -34
  53. package/packages/table/src/methods.ts +245 -40
  54. package/packages/table/src/props.ts +29 -12
  55. package/packages/table/src/table.ts +53 -16
  56. package/packages/table/src/util.ts +76 -2
  57. package/styles/components/table.scss +33 -55
  58. /package/es/{iconfont.1756272539382.ttf → iconfont.1756452257212.ttf} +0 -0
  59. /package/es/{iconfont.1756272539382.woff → iconfont.1756452257212.woff} +0 -0
  60. /package/es/{iconfont.1756272539382.woff2 → iconfont.1756452257212.woff2} +0 -0
  61. /package/lib/{iconfont.1756272539382.ttf → iconfont.1756452257212.ttf} +0 -0
  62. /package/lib/{iconfont.1756272539382.woff → iconfont.1756452257212.woff} +0 -0
  63. /package/lib/{iconfont.1756272539382.woff2 → iconfont.1756452257212.woff2} +0 -0
package/lib/index.umd.js CHANGED
@@ -2002,7 +2002,7 @@ function getClass(property, params) {
2002
2002
  ;// CONCATENATED MODULE: ./packages/ui/index.ts
2003
2003
 
2004
2004
 
2005
- const version = "3.18.1";
2005
+ const version = "3.18.2";
2006
2006
  core_.VxeUI.version = version;
2007
2007
  core_.VxeUI.tableVersion = version;
2008
2008
  core_.VxeUI.setConfig({
@@ -2678,7 +2678,7 @@ function isNodeElement(elem) {
2678
2678
  const {
2679
2679
  log: log_log
2680
2680
  } = core_.VxeUI;
2681
- const log_version = `table v${"3.18.1"}`;
2681
+ const log_version = `table v${"3.18.2"}`;
2682
2682
  const warnLog = log_log.create('warn', log_version);
2683
2683
  const errLog = log_log.create('error', log_version);
2684
2684
  ;// CONCATENATED MODULE: ./packages/table/src/columnInfo.ts
@@ -2781,6 +2781,7 @@ class ColumnInfo {
2781
2781
  headerClassName: _vm.headerClassName,
2782
2782
  footerClassName: _vm.footerClassName,
2783
2783
  formatter,
2784
+ headerFormatter: _vm.headerFormatter,
2784
2785
  footerFormatter: _vm.footerFormatter,
2785
2786
  padding: _vm.padding,
2786
2787
  verticalAlign: _vm.verticalAlign,
@@ -2971,14 +2972,19 @@ function createInternalData() {
2971
2972
  sourceDataRowIdData: {},
2972
2973
  fullColumnIdData: {},
2973
2974
  fullColumnFieldData: {},
2975
+ // 合并表头单元格的数据
2976
+ mergeHeaderList: [],
2977
+ mergeHeaderMaps: {},
2978
+ // 已合并单元格数据集合
2979
+ mergeHeaderCellMaps: {},
2974
2980
  // 合并单元格的数据
2975
2981
  mergeBodyList: [],
2976
2982
  mergeBodyMaps: {},
2983
+ // 已合并单元格数据集合
2984
+ mergeBodyCellMaps: {},
2977
2985
  // 合并表尾的数据
2978
2986
  mergeFooterList: [],
2979
2987
  mergeFooterMaps: {},
2980
- // 已合并单元格数据集合
2981
- mergeBodyCellMaps: {},
2982
2988
  // 已合并表尾数据集合
2983
2989
  mergeFooterCellMaps: {},
2984
2990
  // 已展开的行集合
@@ -3069,6 +3075,72 @@ const convertHeaderColumnToRows = originColumns => {
3069
3075
  });
3070
3076
  return rows;
3071
3077
  };
3078
+ function convertHeaderToGridRows(spanColumns) {
3079
+ const rSize = spanColumns.length;
3080
+ const cSize = spanColumns[0].reduce((sum, cell) => sum + cell.colSpan, 0);
3081
+ const occupiedRows = [];
3082
+ const fullRows = [];
3083
+ for (let rIndex = 0; rIndex < rSize; rIndex++) {
3084
+ const oCols = [];
3085
+ const dCols = [];
3086
+ for (let cIndex = 0; cIndex < cSize; cIndex++) {
3087
+ oCols.push(false);
3088
+ dCols.push('');
3089
+ }
3090
+ occupiedRows.push(oCols);
3091
+ fullRows.push(dCols);
3092
+ }
3093
+ for (let rIndex = 0; rIndex < rSize; rIndex++) {
3094
+ let currColIndex = 0;
3095
+ for (const column of spanColumns[rIndex]) {
3096
+ const {
3097
+ colSpan,
3098
+ rowSpan
3099
+ } = column;
3100
+ let startColIndex = -1;
3101
+ for (let ccIndex = currColIndex; ccIndex <= cSize - colSpan; ccIndex++) {
3102
+ let oFlag = true;
3103
+ for (let csIndex = 0; csIndex < colSpan; csIndex++) {
3104
+ if (occupiedRows[rIndex][ccIndex + csIndex]) {
3105
+ oFlag = false;
3106
+ break;
3107
+ }
3108
+ }
3109
+ if (oFlag) {
3110
+ startColIndex = ccIndex;
3111
+ break;
3112
+ }
3113
+ }
3114
+ if (startColIndex === -1) {
3115
+ for (let j = 0; j <= cSize - colSpan; j++) {
3116
+ let oFlag = true;
3117
+ for (let k = 0; k < colSpan; k++) {
3118
+ if (occupiedRows[rIndex][j + k]) {
3119
+ oFlag = false;
3120
+ break;
3121
+ }
3122
+ }
3123
+ if (oFlag) {
3124
+ startColIndex = j;
3125
+ break;
3126
+ }
3127
+ }
3128
+ if (startColIndex === -1) {
3129
+ // error
3130
+ break;
3131
+ }
3132
+ }
3133
+ for (let srIndex = rIndex; srIndex < rIndex + rowSpan; srIndex++) {
3134
+ for (let scIndex = startColIndex; scIndex < startColIndex + colSpan; scIndex++) {
3135
+ occupiedRows[srIndex][scIndex] = true;
3136
+ fullRows[srIndex][scIndex] = column;
3137
+ }
3138
+ }
3139
+ currColIndex = startColIndex + colSpan;
3140
+ }
3141
+ }
3142
+ return fullRows;
3143
+ }
3072
3144
  function restoreScrollLocation($xeTable, scrollLeft, scrollTop) {
3073
3145
  const internalData = $xeTable;
3074
3146
  if (scrollLeft || scrollTop) {
@@ -5163,6 +5235,8 @@ const columnProps = {
5163
5235
  footerClassName: [String, Function],
5164
5236
  // 格式化显示内容
5165
5237
  formatter: [Function, Array, String],
5238
+ // 格式化表头显示内容
5239
+ headerFormatter: [Function, Array, String],
5166
5240
  // 格式化表尾显示内容
5167
5241
  footerFormatter: [Function, Array, String],
5168
5242
  // 是否显示间距
@@ -5392,7 +5466,7 @@ const tableProps = {
5392
5466
  // 表格的最小高度
5393
5467
  minHeight: {
5394
5468
  type: [Number, String],
5395
- default: () => props_getConfig().table.minHeight
5469
+ default: () => null
5396
5470
  },
5397
5471
  // 表格的最大高度
5398
5472
  maxHeight: [Number, String],
@@ -5511,9 +5585,17 @@ const tableProps = {
5511
5585
  headerRowStyle: [Object, Function],
5512
5586
  // 给表尾行附加样式
5513
5587
  footerRowStyle: [Object, Function],
5514
- // 合并指定单元格
5588
+ // 用于分组表头,显示为自定义列头,配合 mergeHeaderCells 灵活实现自定义合并
5589
+ showCustomHeader: {
5590
+ type: Boolean,
5591
+ default: () => props_getConfig().table.showCustomHeader
5592
+ },
5593
+ // 临时合并指定的表头单元格
5594
+ mergeHeaderCells: Array,
5595
+ // 临时合并指定的单元格
5515
5596
  mergeCells: Array,
5516
- // 合并指定的表尾
5597
+ // 临时合并指定的表尾单元格
5598
+ mergeFooterCells: Array,
5517
5599
  mergeFooterItems: Array,
5518
5600
  // 自定义合并行或列的方法
5519
5601
  spanMethod: Function,
@@ -7070,7 +7152,7 @@ function updateStyle($xeTable) {
7070
7152
  }
7071
7153
  if (xRightCornerEl) {
7072
7154
  xRightCornerEl.style.width = scrollbarXToTop ? '' : `${osbWidth}px`;
7073
- xRightCornerEl.style.display = scrollbarXToTop ? '' : overflowX && osbHeight ? 'block' : '';
7155
+ xRightCornerEl.style.display = scrollbarXToTop ? '' : xScrollbarVisible === 'visible' ? 'block' : '';
7074
7156
  }
7075
7157
  const scrollYVirtualEl = $xeTable.$refs.refScrollYVirtualElem;
7076
7158
  if (scrollYVirtualEl) {
@@ -7081,7 +7163,7 @@ function updateStyle($xeTable) {
7081
7163
  const yTopCornerEl = $xeTable.$refs.refScrollYTopCornerElem;
7082
7164
  if (yTopCornerEl) {
7083
7165
  yTopCornerEl.style.height = `${tHeaderHeight}px`;
7084
- yTopCornerEl.style.display = overflowY && tHeaderHeight ? 'block' : '';
7166
+ yTopCornerEl.style.display = tHeaderHeight && yScrollbarVisible === 'visible' ? 'block' : '';
7085
7167
  }
7086
7168
  const yWrapperEl = $xeTable.$refs.refScrollYWrapperElem;
7087
7169
  if (yWrapperEl) {
@@ -7092,7 +7174,7 @@ function updateStyle($xeTable) {
7092
7174
  if (yBottomCornerEl) {
7093
7175
  yBottomCornerEl.style.height = `${tFooterHeight}px`;
7094
7176
  yBottomCornerEl.style.top = `${tHeaderHeight + tbHeight}px`;
7095
- yBottomCornerEl.style.display = overflowY && tFooterHeight ? 'block' : '';
7177
+ yBottomCornerEl.style.display = tFooterHeight && yScrollbarVisible === 'visible' ? 'block' : '';
7096
7178
  }
7097
7179
  const rowExpandEl = $xeTable.$refs.refRowExpandElem;
7098
7180
  if (rowExpandEl) {
@@ -8120,15 +8202,71 @@ function handleBodyMerge($xeTable, merges) {
8120
8202
  });
8121
8203
  }
8122
8204
  }
8123
- function handleFooterMerge($xeTable, merges) {
8205
+ function removeBodyMerges($xeTable, merges) {
8206
+ const internalData = $xeTable;
8207
+ const {
8208
+ mergeBodyList,
8209
+ fullColumnIdData,
8210
+ fullAllDataRowIdData,
8211
+ mergeBodyMaps
8212
+ } = internalData;
8213
+ const rest = [];
8214
+ if (merges) {
8215
+ const {
8216
+ handleGetRowId
8217
+ } = createHandleGetRowId($xeTable);
8218
+ if (!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(merges)) {
8219
+ merges = [merges];
8220
+ }
8221
+ merges.forEach(item => {
8222
+ const {
8223
+ row: margeRow,
8224
+ col: margeCol
8225
+ } = item;
8226
+ let mergeRowIndex = -1;
8227
+ let mergeColumnIndex = -1;
8228
+ if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(margeRow)) {
8229
+ mergeRowIndex = margeRow;
8230
+ } else {
8231
+ const rowid = margeRow ? handleGetRowId(margeRow) : null;
8232
+ const rowRest = rowid ? fullAllDataRowIdData[rowid] : null;
8233
+ if (rowRest) {
8234
+ mergeRowIndex = rowRest._index;
8235
+ }
8236
+ }
8237
+ if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(margeCol)) {
8238
+ mergeColumnIndex = margeCol;
8239
+ } else {
8240
+ const colid = margeCol ? margeCol.id : null;
8241
+ const colRest = colid ? fullColumnIdData[colid] : null;
8242
+ if (colRest) {
8243
+ mergeColumnIndex = colRest._index;
8244
+ }
8245
+ }
8246
+ const mcIndex = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findIndexOf(mergeBodyList, item => item.row === mergeRowIndex && item.col === mergeColumnIndex);
8247
+ if (mcIndex > -1) {
8248
+ const rItems = mergeBodyList.splice(mcIndex, 1);
8249
+ const item = rItems[0];
8250
+ if (item) {
8251
+ rest.push(rItems[0]);
8252
+ if (mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`]) {
8253
+ delete mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
8254
+ }
8255
+ }
8256
+ }
8257
+ });
8258
+ }
8259
+ return rest;
8260
+ }
8261
+ function handleHeaderMerge($xeTable, merges) {
8124
8262
  const reactData = $xeTable;
8125
8263
  const internalData = $xeTable;
8126
8264
  const {
8127
8265
  footerTableData
8128
8266
  } = reactData;
8129
8267
  const {
8130
- mergeFooterList,
8131
- mergeFooterMaps,
8268
+ mergeHeaderList,
8269
+ mergeHeaderMaps,
8132
8270
  fullColumnIdData
8133
8271
  } = internalData;
8134
8272
  if (merges) {
@@ -8162,7 +8300,7 @@ function handleFooterMerge($xeTable, merges) {
8162
8300
  if (rowspan > 1 || colspan > 1) {
8163
8301
  const row = footerTableData[mergeRowIndex];
8164
8302
  const column = visibleColumn[mergeColumnIndex];
8165
- let mergeItem = mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
8303
+ let mergeItem = mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
8166
8304
  if (mergeItem) {
8167
8305
  mergeItem.rowspan = rowspan;
8168
8306
  mergeItem.colspan = colspan;
@@ -8179,27 +8317,23 @@ function handleFooterMerge($xeTable, merges) {
8179
8317
  _rowspan: rowspan,
8180
8318
  _colspan: colspan
8181
8319
  };
8182
- mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem;
8183
- mergeFooterList.push(mergeItem);
8320
+ mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem;
8321
+ mergeHeaderList.push(mergeItem);
8184
8322
  }
8185
8323
  }
8186
8324
  }
8187
8325
  });
8188
8326
  }
8189
8327
  }
8190
- function removeBodyMerges($xeTable, merges) {
8328
+ function removeHeaderMerges($xeTable, merges) {
8191
8329
  const internalData = $xeTable;
8192
8330
  const {
8193
- mergeBodyList,
8331
+ mergeHeaderList,
8194
8332
  fullColumnIdData,
8195
- fullAllDataRowIdData,
8196
- mergeBodyMaps
8333
+ mergeHeaderMaps
8197
8334
  } = internalData;
8198
8335
  const rest = [];
8199
8336
  if (merges) {
8200
- const {
8201
- handleGetRowId
8202
- } = createHandleGetRowId($xeTable);
8203
8337
  if (!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(merges)) {
8204
8338
  merges = [merges];
8205
8339
  }
@@ -8208,17 +8342,8 @@ function removeBodyMerges($xeTable, merges) {
8208
8342
  row: margeRow,
8209
8343
  col: margeCol
8210
8344
  } = item;
8211
- let mergeRowIndex = -1;
8345
+ const mergeRowIndex = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(margeRow) ? margeRow : -1;
8212
8346
  let mergeColumnIndex = -1;
8213
- if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(margeRow)) {
8214
- mergeRowIndex = margeRow;
8215
- } else {
8216
- const rowid = margeRow ? handleGetRowId(margeRow) : null;
8217
- const rowRest = rowid ? fullAllDataRowIdData[rowid] : null;
8218
- if (rowRest) {
8219
- mergeRowIndex = rowRest._index;
8220
- }
8221
- }
8222
8347
  if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(margeCol)) {
8223
8348
  mergeColumnIndex = margeCol;
8224
8349
  } else {
@@ -8228,14 +8353,14 @@ function removeBodyMerges($xeTable, merges) {
8228
8353
  mergeColumnIndex = colRest._index;
8229
8354
  }
8230
8355
  }
8231
- const mcIndex = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findIndexOf(mergeBodyList, item => item.row === mergeRowIndex && item.col === mergeColumnIndex);
8356
+ const mcIndex = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findIndexOf(mergeHeaderList, item => item.row === mergeRowIndex && item.col === mergeColumnIndex);
8232
8357
  if (mcIndex > -1) {
8233
- const rItems = mergeBodyList.splice(mcIndex, 1);
8358
+ const rItems = mergeHeaderList.splice(mcIndex, 1);
8234
8359
  const item = rItems[0];
8235
8360
  if (item) {
8236
- rest.push(rItems[0]);
8237
- if (mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`]) {
8238
- delete mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
8361
+ rest.push(item);
8362
+ if (mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`]) {
8363
+ delete mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
8239
8364
  }
8240
8365
  }
8241
8366
  }
@@ -8243,6 +8368,73 @@ function removeBodyMerges($xeTable, merges) {
8243
8368
  }
8244
8369
  return rest;
8245
8370
  }
8371
+ function handleFooterMerge($xeTable, merges) {
8372
+ const reactData = $xeTable;
8373
+ const internalData = $xeTable;
8374
+ const {
8375
+ footerTableData
8376
+ } = reactData;
8377
+ const {
8378
+ mergeFooterList,
8379
+ mergeFooterMaps,
8380
+ fullColumnIdData
8381
+ } = internalData;
8382
+ if (merges) {
8383
+ const {
8384
+ visibleColumn
8385
+ } = internalData;
8386
+ if (!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(merges)) {
8387
+ merges = [merges];
8388
+ }
8389
+ merges.forEach(item => {
8390
+ let {
8391
+ row: margeRow,
8392
+ col: margeCol,
8393
+ rowspan,
8394
+ colspan
8395
+ } = item;
8396
+ const mergeRowIndex = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(margeRow) ? margeRow : -1;
8397
+ let mergeColumnIndex = -1;
8398
+ if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(margeCol)) {
8399
+ mergeColumnIndex = margeCol;
8400
+ } else {
8401
+ const colid = margeCol ? margeCol.id : null;
8402
+ const colRest = colid ? fullColumnIdData[colid] : null;
8403
+ if (colRest) {
8404
+ mergeColumnIndex = colRest._index;
8405
+ }
8406
+ }
8407
+ if (mergeRowIndex > -1 && mergeColumnIndex > -1 && (rowspan || colspan)) {
8408
+ rowspan = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(rowspan) || 1;
8409
+ colspan = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(colspan) || 1;
8410
+ if (rowspan > 1 || colspan > 1) {
8411
+ const row = footerTableData[mergeRowIndex];
8412
+ const column = visibleColumn[mergeColumnIndex];
8413
+ let mergeItem = mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`];
8414
+ if (mergeItem) {
8415
+ mergeItem.rowspan = rowspan;
8416
+ mergeItem.colspan = colspan;
8417
+ mergeItem._rowspan = rowspan;
8418
+ mergeItem._colspan = colspan;
8419
+ } else {
8420
+ mergeItem = {
8421
+ row: mergeRowIndex,
8422
+ col: mergeColumnIndex,
8423
+ rowspan,
8424
+ colspan,
8425
+ _row: row,
8426
+ _col: column,
8427
+ _rowspan: rowspan,
8428
+ _colspan: colspan
8429
+ };
8430
+ mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`] = mergeItem;
8431
+ mergeFooterList.push(mergeItem);
8432
+ }
8433
+ }
8434
+ }
8435
+ });
8436
+ }
8437
+ }
8246
8438
  function removeFooterMerges($xeTable, merges) {
8247
8439
  const internalData = $xeTable;
8248
8440
  const {
@@ -8370,10 +8562,26 @@ function clearAllSort($xeTable) {
8370
8562
  function calcTableHeight($xeTable, key) {
8371
8563
  const props = $xeTable;
8372
8564
  const reactData = $xeTable;
8565
+ const {
8566
+ editConfig
8567
+ } = props;
8373
8568
  const {
8374
8569
  parentHeight
8375
8570
  } = reactData;
8376
- const val = props[key];
8571
+ let val = props[key];
8572
+ if (key === 'minHeight') {
8573
+ const defMinHeight = methods_getConfig().table.minHeight;
8574
+ if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(val)) {
8575
+ if (eqEmptyValue(defMinHeight)) {
8576
+ // 编辑模式默认最小高度
8577
+ if (isEnableConf(editConfig)) {
8578
+ val = 144;
8579
+ }
8580
+ } else {
8581
+ val = defMinHeight;
8582
+ }
8583
+ }
8584
+ }
8377
8585
  let num = 0;
8378
8586
  if (val) {
8379
8587
  if (val === '100%' || val === 'auto') {
@@ -8922,13 +9130,24 @@ function handleDefaultMergeCells($xeTable) {
8922
9130
  $xeTable.setMergeCells(mergeCells);
8923
9131
  }
8924
9132
  }
9133
+ function handleDefaultMergeHeaderItems($xeTable) {
9134
+ const props = $xeTable;
9135
+ const {
9136
+ mergeHeaderCells
9137
+ } = props;
9138
+ if (mergeHeaderCells) {
9139
+ $xeTable.setMergeHeaderCells(mergeHeaderCells);
9140
+ }
9141
+ }
8925
9142
  function handleDefaultMergeFooterItems($xeTable) {
8926
9143
  const props = $xeTable;
8927
9144
  const {
9145
+ mergeFooterCells,
8928
9146
  mergeFooterItems
8929
9147
  } = props;
8930
- if (mergeFooterItems) {
8931
- $xeTable.setMergeFooterItems(mergeFooterItems);
9148
+ const mFooterCells = mergeFooterCells || mergeFooterItems;
9149
+ if (mFooterCells) {
9150
+ $xeTable.setMergeFooterCells(mFooterCells);
8932
9151
  }
8933
9152
  }
8934
9153
  // 计算可视渲染相关数据
@@ -9434,6 +9653,10 @@ function loadTableData($xeTable, datas, isReset) {
9434
9653
  }
9435
9654
  handleReserveStatus($xeTable);
9436
9655
  $xeTable.checkSelectionStatus();
9656
+ $xeTable.dispatchEvent('data-change', {
9657
+ visibleColumn: internalData.visibleColumn,
9658
+ visibleData: internalData.afterFullData
9659
+ }, null);
9437
9660
  return new Promise(resolve => {
9438
9661
  $xeTable.$nextTick().then(() => handleRecalculateStyle($xeTable, false, false, false)).then(() => {
9439
9662
  handleRecalculateStyle($xeTable, false, true, true);
@@ -9490,6 +9713,7 @@ function handleLoadDefaults($xeTable) {
9490
9713
  handleDefaultTreeExpand($xeTable);
9491
9714
  handleDefaultRowGroupExpand($xeTable);
9492
9715
  handleDefaultMergeCells($xeTable);
9716
+ handleDefaultMergeHeaderItems($xeTable);
9493
9717
  handleDefaultMergeFooterItems($xeTable);
9494
9718
  $xeTable.$nextTick(() => setTimeout(() => $xeTable.recalculate()));
9495
9719
  }
@@ -13523,6 +13747,16 @@ const Methods = {
13523
13747
  internalData.mergeBodyCellMaps = buildMergeData(mergeBodyList);
13524
13748
  reactData.mergeBodyFlag++;
13525
13749
  },
13750
+ handleUpdateHeaderMerge() {
13751
+ const $xeTable = this;
13752
+ const reactData = $xeTable;
13753
+ const internalData = $xeTable;
13754
+ const {
13755
+ mergeHeaderList
13756
+ } = internalData;
13757
+ internalData.mergeHeaderCellMaps = buildMergeData(mergeHeaderList);
13758
+ reactData.mergeHeadFlag++;
13759
+ },
13526
13760
  handleUpdateFooterMerge() {
13527
13761
  const $xeTable = this;
13528
13762
  const reactData = $xeTable;
@@ -18754,6 +18988,10 @@ const Methods = {
18754
18988
  }
18755
18989
  reactData.footerTableData = footData;
18756
18990
  $xeTable.handleUpdateFooterMerge();
18991
+ $xeTable.dispatchEvent('footer-data-change', {
18992
+ visibleColumn: internalData.visibleColumn,
18993
+ footData
18994
+ }, null);
18757
18995
  return $xeTable.$nextTick();
18758
18996
  },
18759
18997
  /**
@@ -18840,45 +19078,101 @@ const Methods = {
18840
19078
  return updateStyle($xeTable);
18841
19079
  });
18842
19080
  },
18843
- setMergeFooterItems(merges) {
19081
+ setMergeHeaderCells(merges) {
19082
+ const $xeTable = this;
19083
+ handleHeaderMerge($xeTable, merges);
19084
+ $xeTable.handleUpdateHeaderMerge();
19085
+ return $xeTable.$nextTick().then(() => {
19086
+ return updateStyle($xeTable);
19087
+ });
19088
+ },
19089
+ /**
19090
+ * 移除表头单元格合并 [{row:Row|number, col:ColumnInfo|number}]
19091
+ */
19092
+ removeMergeHeaderCells(merges) {
19093
+ const $xeTable = this;
19094
+ const rest = removeHeaderMerges($xeTable, merges);
19095
+ $xeTable.handleUpdateHeaderMerge();
19096
+ return $xeTable.$nextTick().then(() => {
19097
+ updateStyle($xeTable);
19098
+ return rest;
19099
+ });
19100
+ },
19101
+ /**
19102
+ * 获取所有被合并的表头单元格
19103
+ */
19104
+ getMergeHeaderCells() {
19105
+ const $xeTable = this;
19106
+ const internalData = $xeTable;
19107
+ return internalData.mergeHeaderList.slice(0);
19108
+ },
19109
+ /**
19110
+ * 清除所有表头单元格合并
19111
+ */
19112
+ clearMergeHeaderCells() {
19113
+ const $xeTable = this;
19114
+ const reactData = $xeTable;
19115
+ const internalData = $xeTable;
19116
+ internalData.mergeHeaderList = [];
19117
+ internalData.mergeHeaderMaps = {};
19118
+ internalData.mergeHeaderCellMaps = {};
19119
+ reactData.mergeHeadFlag++;
19120
+ return $xeTable.$nextTick().then(() => {
19121
+ return updateStyle($xeTable);
19122
+ });
19123
+ },
19124
+ setMergeFooterCells(merges) {
18844
19125
  const $xeTable = this;
18845
19126
  const props = $xeTable;
18846
19127
  if (props.footerSpanMethod) {
18847
- errLog('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method']);
19128
+ errLog('vxe.error.errConflicts', ['merge-footer-cells | merge-footer-items', 'footer-span-method']);
18848
19129
  }
18849
19130
  handleFooterMerge($xeTable, merges);
18850
19131
  $xeTable.handleUpdateFooterMerge();
18851
19132
  return $xeTable.$nextTick().then(() => {
18852
- $xeTable.updateCellAreas();
18853
19133
  return updateStyle($xeTable);
18854
19134
  });
18855
19135
  },
18856
- removeMergeFooterItems(merges) {
19136
+ setMergeFooterItems(merges) {
19137
+ const $xeTable = this;
19138
+ // errLog('vxe.error.delFunc', ['setMergeFooterItems', 'setMergeFooterCells'])
19139
+ return $xeTable.setMergeFooterCells(merges);
19140
+ },
19141
+ removeMergeFooterCells(merges) {
18857
19142
  const $xeTable = this;
18858
19143
  const props = $xeTable;
18859
19144
  if (props.footerSpanMethod) {
18860
- errLog('vxe.error.errConflicts', ['merge-footer-items', 'footer-span-method']);
19145
+ errLog('vxe.error.errConflicts', ['merge-footer-cells | merge-footer-items', 'footer-span-method']);
18861
19146
  }
18862
19147
  const rest = removeFooterMerges($xeTable, merges);
18863
19148
  $xeTable.handleUpdateFooterMerge();
18864
19149
  return $xeTable.$nextTick().then(() => {
18865
- $xeTable.updateCellAreas();
18866
19150
  updateStyle($xeTable);
18867
19151
  return rest;
18868
19152
  });
18869
19153
  },
19154
+ removeMergeFooterItems(merges) {
19155
+ const $xeTable = this;
19156
+ // errLog('vxe.error.delFunc', ['removeMergeFooterItems', 'removeMergeFooterCells'])
19157
+ return $xeTable.removeMergeFooterCells(merges);
19158
+ },
18870
19159
  /**
18871
19160
  * 获取所有被合并的表尾
18872
19161
  */
18873
- getMergeFooterItems() {
19162
+ getMergeFooterCells() {
18874
19163
  const $xeTable = this;
18875
19164
  const internalData = $xeTable;
18876
19165
  return internalData.mergeFooterList.slice(0);
18877
19166
  },
19167
+ getMergeFooterItems() {
19168
+ const $xeTable = this;
19169
+ // errLog('vxe.error.delFunc', ['getMergeFooterItems', 'getMergeFooterCells'])
19170
+ return $xeTable.getMergeFooterCells();
19171
+ },
18878
19172
  /**
18879
19173
  * 清除所有表尾合并
18880
19174
  */
18881
- clearMergeFooterItems() {
19175
+ clearMergeFooterCells() {
18882
19176
  const $xeTable = this;
18883
19177
  const reactData = $xeTable;
18884
19178
  const internalData = $xeTable;
@@ -18890,6 +19184,11 @@ const Methods = {
18890
19184
  return updateStyle($xeTable);
18891
19185
  });
18892
19186
  },
19187
+ clearMergeFooterItems() {
19188
+ const $xeTable = this;
19189
+ // errLog('vxe.error.delFunc', ['clearMergeFooterItems', 'clearMergeFooterCells'])
19190
+ return $xeTable.clearMergeFooterCells();
19191
+ },
18893
19192
  handleUpdateAggData() {
18894
19193
  const $xeTable = this;
18895
19194
  const internalData = $xeTable;
@@ -20027,7 +20326,7 @@ const {
20027
20326
  renderEmptyElement: header_renderEmptyElement
20028
20327
  } = core_.VxeUI;
20029
20328
  const cellType = 'header';
20030
- const header_renderRows = (h, _vm, isGroup, isOptimizeMode, cols, $rowIndex) => {
20329
+ function header_renderRows(h, _vm, isGroup, isOptimizeMode, headerGroups, $rowIndex, cols) {
20031
20330
  const props = _vm;
20032
20331
  const $xeTable = _vm.$parent;
20033
20332
  const $xeGrid = $xeTable.$xeGrid;
@@ -20041,6 +20340,7 @@ const header_renderRows = (h, _vm, isGroup, isOptimizeMode, cols, $rowIndex) =>
20041
20340
  const {
20042
20341
  resizable: allResizable,
20043
20342
  columnKey,
20343
+ showCustomHeader,
20044
20344
  headerCellClassName,
20045
20345
  headerCellStyle,
20046
20346
  showHeaderOverflow: allColumnHeaderOverflow,
@@ -20054,11 +20354,14 @@ const header_renderRows = (h, _vm, isGroup, isOptimizeMode, cols, $rowIndex) =>
20054
20354
  scrollXLoad,
20055
20355
  scrollYLoad,
20056
20356
  overflowX,
20357
+ mergeHeadFlag,
20057
20358
  tableColumn
20058
20359
  } = tableReactData;
20059
20360
  const {
20060
20361
  fullColumnIdData,
20061
- scrollXStore
20362
+ scrollXStore,
20363
+ mergeHeaderList,
20364
+ mergeHeaderCellMaps
20062
20365
  } = tableInternalData;
20063
20366
  const virtualXOpts = $xeTable.computeVirtualXOpts;
20064
20367
  const columnOpts = $xeTable.computeColumnOpts;
@@ -20072,6 +20375,7 @@ const header_renderRows = (h, _vm, isGroup, isOptimizeMode, cols, $rowIndex) =>
20072
20375
  isCrossDrag,
20073
20376
  isPeerDrag
20074
20377
  } = columnDragOpts;
20378
+ const isLastRow = $rowIndex === headerGroups.length - 1;
20075
20379
  return cols.map((column, $columnIndex) => {
20076
20380
  const {
20077
20381
  type,
@@ -20104,7 +20408,7 @@ const header_renderRows = (h, _vm, isGroup, isOptimizeMode, cols, $rowIndex) =>
20104
20408
  hasFilter = filters.some(item => item.checked);
20105
20409
  }
20106
20410
  const columnIndex = colRest.index;
20107
- const _columnIndex = colRest._index;
20411
+ const _columnIndex = showCustomHeader ? $columnIndex : colRest._index;
20108
20412
  const cellParams = {
20109
20413
  $table: $xeTable,
20110
20414
  $grid: $xeGrid,
@@ -20121,10 +20425,34 @@ const header_renderRows = (h, _vm, isGroup, isOptimizeMode, cols, $rowIndex) =>
20121
20425
  hasFilter
20122
20426
  };
20123
20427
  const thAttrs = {
20124
- colid,
20125
- colspan: column.colSpan > 1 ? column.colSpan : null,
20126
- rowspan: column.rowSpan > 1 ? column.rowSpan : null
20428
+ colid
20127
20429
  };
20430
+ let isMergeCell = false;
20431
+ // 合并行或列
20432
+ if (!showCustomHeader) {
20433
+ thAttrs.colspan = column.colSpan > 1 ? column.colSpan : null;
20434
+ thAttrs.rowspan = column.rowSpan > 1 ? column.rowSpan : null;
20435
+ }
20436
+ if (mergeHeadFlag && mergeHeaderList.length && (showCustomHeader || isLastRow)) {
20437
+ const spanRest = mergeHeaderCellMaps[`${$rowIndex}:${showCustomHeader ? $columnIndex : _columnIndex}`];
20438
+ if (spanRest) {
20439
+ const {
20440
+ rowspan,
20441
+ colspan
20442
+ } = spanRest;
20443
+ if (!rowspan || !colspan) {
20444
+ return null;
20445
+ }
20446
+ if (rowspan > 1) {
20447
+ isMergeCell = true;
20448
+ thAttrs.rowspan = rowspan;
20449
+ }
20450
+ if (colspan > 1) {
20451
+ isMergeCell = true;
20452
+ thAttrs.colspan = colspan;
20453
+ }
20454
+ }
20455
+ }
20128
20456
  const thOns = {
20129
20457
  click: evnt => $xeTable.triggerHeaderCellClickEvent(evnt, cellParams),
20130
20458
  dblclick: evnt => $xeTable.triggerHeaderCellDblclickEvent(evnt, cellParams)
@@ -20151,7 +20479,7 @@ const header_renderRows = (h, _vm, isGroup, isOptimizeMode, cols, $rowIndex) =>
20151
20479
  const showResizable = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(column.resizable) ? column.resizable : columnOpts.resizable || allResizable;
20152
20480
  const isAutoCellWidth = !column.resizeWidth && (column.minWidth === 'auto' || column.width === 'auto');
20153
20481
  let isVNPreEmptyStatus = false;
20154
- if (isOptimizeMode && overflowX && !isGroup) {
20482
+ if (isOptimizeMode && overflowX && !isGroup && !isMergeCell) {
20155
20483
  if (!dragCol || dragCol.id !== colid) {
20156
20484
  if (scrollXLoad && tableColumn.length > 10 && !column.fixed && !virtualXOpts.immediate && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
20157
20485
  isVNPreEmptyStatus = true;
@@ -20165,7 +20493,7 @@ const header_renderRows = (h, _vm, isGroup, isOptimizeMode, cols, $rowIndex) =>
20165
20493
  tcStyle.minHeight = `${currCellHeight}px`;
20166
20494
  }
20167
20495
  return h('th', {
20168
- class: ['vxe-table--column vxe-header--column', colid, {
20496
+ class: ['vxe-table--column vxe-header--column', colid, fixedHiddenColumn ? 'fixed--hidden' : 'fixed--visible', {
20169
20497
  [`col--${headAlign}`]: headAlign,
20170
20498
  [`col--${type}`]: type,
20171
20499
  'col--last': isLastColumn,
@@ -20173,7 +20501,6 @@ const header_renderRows = (h, _vm, isGroup, isOptimizeMode, cols, $rowIndex) =>
20173
20501
  'col--group': isColGroup,
20174
20502
  'col--ellipsis': hasEllipsis,
20175
20503
  'fixed--width': !isAutoCellWidth,
20176
- 'fixed--hidden': fixedHiddenColumn,
20177
20504
  'is--padding': isPadding,
20178
20505
  'is--sortable': column.sortable,
20179
20506
  'col--filter': !!filters,
@@ -20185,7 +20512,7 @@ const header_renderRows = (h, _vm, isGroup, isOptimizeMode, cols, $rowIndex) =>
20185
20512
  attrs: thAttrs,
20186
20513
  style: headerCellStyle ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(headerCellStyle) ? headerCellStyle(cellParams) : headerCellStyle : undefined,
20187
20514
  on: thOns,
20188
- key: columnKey || scrollXLoad || scrollYLoad || columnOpts.useKey || columnOpts.drag || isColGroup ? colid : $columnIndex
20515
+ key: showCustomHeader ? `${colid}${$columnIndex}` : columnKey || scrollXLoad || scrollYLoad || columnOpts.useKey || columnOpts.drag || isColGroup ? colid : $columnIndex
20189
20516
  }, [h('div', {
20190
20517
  class: ['vxe-cell', {
20191
20518
  'c--title': showTitle,
@@ -20200,9 +20527,9 @@ const header_renderRows = (h, _vm, isGroup, isOptimizeMode, cols, $rowIndex) =>
20200
20527
  class: 'vxe-cell--wrapper vxe-header-cell--wrapper'
20201
20528
  }, column.renderHeader(h, cellParams))]),
20202
20529
  /**
20203
- * 列宽拖动
20204
- */
20205
- !fixedHiddenColumn && showResizable ? h('div', {
20530
+ * 列宽拖动
20531
+ */
20532
+ !fixedHiddenColumn && showResizable && (!showCustomHeader || isLastRow) ? h('div', {
20206
20533
  class: 'vxe-cell--col-resizable',
20207
20534
  on: {
20208
20535
  mousedown: evnt => $xeTable.handleColResizeMousedownEvent(evnt, fixedType, cellParams),
@@ -20210,7 +20537,7 @@ const header_renderRows = (h, _vm, isGroup, isOptimizeMode, cols, $rowIndex) =>
20210
20537
  }
20211
20538
  }) : header_renderEmptyElement($xeTable)]);
20212
20539
  });
20213
- };
20540
+ }
20214
20541
  function renderHeads(h, _vm, isGroup, isOptimizeMode, headerGroups) {
20215
20542
  const props = _vm;
20216
20543
  const $xeTable = _vm.$parent;
@@ -20233,7 +20560,7 @@ function renderHeads(h, _vm, isGroup, isOptimizeMode, headerGroups) {
20233
20560
  key: $rowIndex,
20234
20561
  class: ['vxe-header--row', headerRowClassName ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(headerRowClassName) ? headerRowClassName(params) : headerRowClassName : ''],
20235
20562
  style: headerRowStyle ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(headerRowStyle) ? headerRowStyle(params) : headerRowStyle : undefined
20236
- }, header_renderRows(h, _vm, isGroup, isOptimizeMode, cols, $rowIndex));
20563
+ }, header_renderRows(h, _vm, isGroup, isOptimizeMode, headerGroups, $rowIndex, cols));
20237
20564
  });
20238
20565
  }
20239
20566
  /* harmony default export */ var header = ({
@@ -20255,11 +20582,13 @@ function renderHeads(h, _vm, isGroup, isOptimizeMode, headerGroups) {
20255
20582
  },
20256
20583
  watch: {
20257
20584
  tableColumn() {
20258
- this.uploadColumn();
20585
+ const _vm = this;
20586
+ _vm.uploadColumn();
20259
20587
  }
20260
20588
  },
20261
20589
  created() {
20262
- this.uploadColumn();
20590
+ const _vm = this;
20591
+ _vm.uploadColumn();
20263
20592
  },
20264
20593
  mounted() {
20265
20594
  const _vm = this;
@@ -20282,8 +20611,9 @@ function renderHeads(h, _vm, isGroup, isOptimizeMode, headerGroups) {
20282
20611
  elemStore[`${prefix}repair`] = _vm.$refs.refHeaderBorderRepair;
20283
20612
  },
20284
20613
  destroyed() {
20285
- const props = this;
20286
- const $xeTable = this.$parent;
20614
+ const _vm = this;
20615
+ const props = _vm;
20616
+ const $xeTable = _vm.$parent;
20287
20617
  const internalData = $xeTable;
20288
20618
  const {
20289
20619
  fixedType
@@ -20301,8 +20631,9 @@ function renderHeads(h, _vm, isGroup, isOptimizeMode, headerGroups) {
20301
20631
  elemStore[`${prefix}repair`] = null;
20302
20632
  },
20303
20633
  render(h) {
20304
- const props = this;
20305
- const $xeTable = this.$parent;
20634
+ const _vm = this;
20635
+ const props = _vm;
20636
+ const $xeTable = _vm.$parent;
20306
20637
  const tableProps = $xeTable;
20307
20638
  const tableReactData = $xeTable;
20308
20639
  const tableInternalData = $xeTable;
@@ -20316,7 +20647,7 @@ function renderHeads(h, _vm, isGroup, isOptimizeMode, headerGroups) {
20316
20647
  } = props;
20317
20648
  const {
20318
20649
  headerColumn
20319
- } = this;
20650
+ } = _vm;
20320
20651
  const {
20321
20652
  mouseConfig,
20322
20653
  showHeaderOverflow: allColumnHeaderOverflow,
@@ -20435,7 +20766,7 @@ function renderHeads(h, _vm, isGroup, isOptimizeMode, headerGroups) {
20435
20766
  */
20436
20767
  h('thead', {
20437
20768
  ref: 'refHeaderTHead'
20438
- }, renderHeads(h, this, isGroup, isOptimizeMode, renderHeaderList))]), mouseConfig && mouseOpts.area ? h('div', {
20769
+ }, renderHeads(h, _vm, isGroup, isOptimizeMode, renderHeaderList))]), mouseConfig && mouseOpts.area ? h('div', {
20439
20770
  class: 'vxe-table--cell-area'
20440
20771
  }, [h('span', {
20441
20772
  class: 'vxe-table--cell-main-area'
@@ -20453,12 +20784,37 @@ function renderHeads(h, _vm, isGroup, isOptimizeMode, headerGroups) {
20453
20784
  },
20454
20785
  methods: {
20455
20786
  uploadColumn() {
20456
- const $xeTable = this.$parent;
20787
+ const _vm = this;
20788
+ const $xeTable = _vm.$parent;
20789
+ const tableProps = $xeTable;
20457
20790
  const tableReactData = $xeTable;
20791
+ const tableInternalData = $xeTable;
20792
+ const props = _vm;
20793
+ const {
20794
+ showCustomHeader
20795
+ } = tableProps;
20796
+ const {
20797
+ collectColumn,
20798
+ visibleColumn
20799
+ } = tableInternalData;
20800
+ const {
20801
+ tableGroupColumn
20802
+ } = props;
20458
20803
  const {
20459
20804
  isGroup
20460
20805
  } = tableReactData;
20461
- this.headerColumn = isGroup ? convertHeaderColumnToRows(this.tableGroupColumn) : [];
20806
+ let spanColumns = isGroup ? convertHeaderColumnToRows(tableGroupColumn) : [];
20807
+ let visibleColgroups = [];
20808
+ if (showCustomHeader && spanColumns.length > 1) {
20809
+ visibleColgroups = convertHeaderToGridRows(spanColumns);
20810
+ spanColumns = visibleColgroups;
20811
+ }
20812
+ _vm.headerColumn = spanColumns;
20813
+ $xeTable.dispatchEvent('columns-change', {
20814
+ visibleColgroups,
20815
+ collectColumn,
20816
+ visibleColumn
20817
+ }, null);
20462
20818
  }
20463
20819
  }
20464
20820
  });
@@ -20756,8 +21112,9 @@ function footer_renderHeads(h, _vm, isOptimizeMode, renderColumnList) {
20756
21112
  elemStore[`${prefix}xSpace`] = _vm.$refs.refFooterXSpace;
20757
21113
  },
20758
21114
  destroyed() {
20759
- const props = this;
20760
- const $xeTable = this.$parent;
21115
+ const _vm = this;
21116
+ const props = _vm;
21117
+ const $xeTable = _vm.$parent;
20761
21118
  const tableInternalData = $xeTable;
20762
21119
  const {
20763
21120
  fixedType
@@ -20774,8 +21131,9 @@ function footer_renderHeads(h, _vm, isOptimizeMode, renderColumnList) {
20774
21131
  elemStore[`${prefix}xSpace`] = null;
20775
21132
  },
20776
21133
  render(h) {
20777
- const props = this;
20778
- const $xeTable = this.$parent;
21134
+ const _vm = this;
21135
+ const props = _vm;
21136
+ const $xeTable = _vm.$parent;
20779
21137
  const tableProps = $xeTable;
20780
21138
  const tableReactData = $xeTable;
20781
21139
  const tableInternalData = $xeTable;
@@ -20894,7 +21252,7 @@ function footer_renderHeads(h, _vm, isOptimizeMode, renderColumnList) {
20894
21252
  */
20895
21253
  h('tfoot', {
20896
21254
  ref: 'refFooterTFoot'
20897
- }, footer_renderHeads(h, this, isOptimizeMode, renderColumnList))])])]);
21255
+ }, footer_renderHeads(h, _vm, isOptimizeMode, renderColumnList))])])]);
20898
21256
  }
20899
21257
  });
20900
21258
  ;// CONCATENATED MODULE: ./packages/table/module/custom/panel.ts
@@ -29115,12 +29473,19 @@ function handleUpdateMergeBodyCells($xeTable, merges) {
29115
29473
  internalData.mergeBodyCellMaps = {};
29116
29474
  $xeTable.setMergeCells(merges);
29117
29475
  }
29476
+ function handleUpdateMergeHeaderCells($xeTable, merges) {
29477
+ const internalData = $xeTable;
29478
+ internalData.mergeHeaderList = [];
29479
+ internalData.mergeHeaderMaps = {};
29480
+ internalData.mergeHeaderCellMaps = {};
29481
+ $xeTable.setMergeHeaderCells(merges);
29482
+ }
29118
29483
  function handleUpdateMergeFooterCells($xeTable, merges) {
29119
29484
  const internalData = $xeTable;
29120
29485
  internalData.mergeFooterList = [];
29121
29486
  internalData.mergeFooterMaps = {};
29122
29487
  internalData.mergeFooterCellMaps = {};
29123
- $xeTable.setMergeFooterItems(merges);
29488
+ $xeTable.setMergeFooterCells(merges);
29124
29489
  }
29125
29490
  function handleKeyField($xeTable) {
29126
29491
  const internalData = $xeTable;
@@ -29427,7 +29792,9 @@ function renderScrollX(h, $xeTable) {
29427
29792
  }, [h('div', {
29428
29793
  ref: 'refScrollXSpaceElem',
29429
29794
  class: 'vxe-table--scroll-x-space'
29430
- })])]), h('div', {
29795
+ })]), h('div', {
29796
+ class: 'vxe-table--scroll-x-handle-appearance'
29797
+ })]), h('div', {
29431
29798
  ref: 'refScrollXRightCornerElem',
29432
29799
  class: 'vxe-table--scroll-x-right-corner'
29433
29800
  })]);
@@ -29544,9 +29911,7 @@ function renderBody(h, $xeTable) {
29544
29911
  },
29545
29912
  data() {
29546
29913
  const xID = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().uniqueId();
29547
- return {
29548
- xID,
29549
- tId: xID,
29914
+ const reactData = {
29550
29915
  // 低性能的静态列
29551
29916
  staticColumns: [],
29552
29917
  // 渲染的列分组
@@ -29567,6 +29932,8 @@ function renderBody(h, $xeTable) {
29567
29932
  scrollbarWidth: 0,
29568
29933
  // 横向滚动条的高度
29569
29934
  scrollbarHeight: 0,
29935
+ // 最后滚动时间戳
29936
+ lastScrollTime: 0,
29570
29937
  // 行高
29571
29938
  rowHeight: 0,
29572
29939
  // 表格父容器的高度
@@ -29592,9 +29959,13 @@ function renderBody(h, $xeTable) {
29592
29959
  expandColumn: null,
29593
29960
  checkboxColumn: null,
29594
29961
  radioColumn: null,
29595
- hasFixedColumn: false,
29596
29962
  // 树节点列信息
29597
29963
  treeNodeColumn: null,
29964
+ hasFixedColumn: false,
29965
+ // 刷新列标识,当列筛选被改变时,触发表格刷新数据
29966
+ upDataFlag: 0,
29967
+ // 刷新列标识,当列的特定属性被改变时,触发表格刷新列
29968
+ reColumnFlag: 0,
29598
29969
  // 初始化标识
29599
29970
  initStore: {
29600
29971
  filter: false,
@@ -29602,11 +29973,6 @@ function renderBody(h, $xeTable) {
29602
29973
  export: false,
29603
29974
  custom: false
29604
29975
  },
29605
- customColumnList: [],
29606
- // 刷新列标识,当列筛选被改变时,触发表格刷新数据
29607
- upDataFlag: 0,
29608
- // 刷新列标识,当列的特定属性被改变时,触发表格刷新列
29609
- reColumnFlag: 0,
29610
29976
  // 自定义列相关的信息
29611
29977
  customStore: {
29612
29978
  btnEl: null,
@@ -29620,6 +29986,7 @@ function renderBody(h, $xeTable) {
29620
29986
  oldFixedMaps: {},
29621
29987
  oldVisibleMaps: {}
29622
29988
  },
29989
+ customColumnList: [],
29623
29990
  // 当前选中的筛选列
29624
29991
  filterStore: {
29625
29992
  isAllSelected: false,
@@ -29688,6 +30055,7 @@ function renderBody(h, $xeTable) {
29688
30055
  tooltipStore: {
29689
30056
  row: null,
29690
30057
  column: null,
30058
+ content: null,
29691
30059
  visible: false,
29692
30060
  currOpts: {}
29693
30061
  },
@@ -29720,8 +30088,8 @@ function renderBody(h, $xeTable) {
29720
30088
  columns: [],
29721
30089
  isPrint: false,
29722
30090
  hasFooter: false,
29723
- hasTree: false,
29724
30091
  hasMerge: false,
30092
+ hasTree: false,
29725
30093
  hasColgroup: false,
29726
30094
  visible: false
29727
30095
  },
@@ -29752,6 +30120,7 @@ function renderBody(h, $xeTable) {
29752
30120
  pendingRowFlag: 1,
29753
30121
  insertRowFlag: 1,
29754
30122
  removeRowFlag: 1,
30123
+ mergeHeadFlag: 1,
29755
30124
  mergeBodyFlag: 1,
29756
30125
  mergeFootFlag: 1,
29757
30126
  rowHeightStore: {
@@ -29768,6 +30137,7 @@ function renderBody(h, $xeTable) {
29768
30137
  scrollXLeft: 0,
29769
30138
  scrollXWidth: 0,
29770
30139
  isScrollXBig: false,
30140
+ lazScrollLoading: false,
29771
30141
  rowExpandHeightFlag: 1,
29772
30142
  calcCellHeightFlag: 1,
29773
30143
  resizeHeightFlag: 1,
@@ -29780,10 +30150,16 @@ function renderBody(h, $xeTable) {
29780
30150
  dragTipText: '',
29781
30151
  isDragResize: false,
29782
30152
  isRowLoading: false,
29783
- isColLoading: false,
30153
+ isColLoading: false
30154
+ };
30155
+ return {
30156
+ xID,
30157
+ ...reactData,
30158
+ // 私有属性
29784
30159
  reScrollFlag: 0,
29785
30160
  reLayoutFlag: 0,
29786
30161
  footFlag: 0,
30162
+ mergeFooteCellFlag: 0,
29787
30163
  crossTableDragRowInfo: crossTableDragRowGlobal
29788
30164
  };
29789
30165
  },
@@ -30548,9 +30924,21 @@ function renderBody(h, $xeTable) {
30548
30924
  const $xeTable = this;
30549
30925
  handleUpdateMergeBodyCells($xeTable, value);
30550
30926
  },
30551
- mergeFooterItems(value) {
30927
+ mergeHeaderCells(value) {
30552
30928
  const $xeTable = this;
30553
- handleUpdateMergeFooterCells($xeTable, value);
30929
+ handleUpdateMergeHeaderCells($xeTable, value);
30930
+ },
30931
+ mergeFooterCells() {
30932
+ this.mergeFooteCellFlag++;
30933
+ },
30934
+ mergeFooterItems() {
30935
+ this.mergeFooteCellFlag++;
30936
+ },
30937
+ mergeFooteCellFlag() {
30938
+ const $xeTable = this;
30939
+ const props = $xeTable;
30940
+ const mFooterCells = props.mergeFooterCells || props.mergeFooterItems;
30941
+ handleUpdateMergeFooterCells($xeTable, mFooterCells || []);
30554
30942
  },
30555
30943
  computeRowGroupFields(val) {
30556
30944
  const $xeTable = this;