vxe-table 3.21.3 → 3.21.5

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 (122) hide show
  1. package/es/locale/lang/ar-EG.js +2 -2
  2. package/es/locale/lang/de-DE.js +1 -1
  3. package/es/locale/lang/en-US.js +1 -1
  4. package/es/locale/lang/fr-FR.js +2 -2
  5. package/es/locale/lang/hu-HU.js +1 -1
  6. package/es/locale/lang/hy-AM.js +1 -1
  7. package/es/locale/lang/id-ID.js +2 -2
  8. package/es/locale/lang/it-IT.js +1 -1
  9. package/es/locale/lang/ko-KR.js +1 -1
  10. package/es/locale/lang/ms-MY.js +2 -2
  11. package/es/locale/lang/nb-NO.js +2 -2
  12. package/es/locale/lang/pt-BR.js +2 -2
  13. package/es/locale/lang/th-TH.js +1 -1
  14. package/es/locale/lang/ug-CN.js +1 -1
  15. package/es/locale/lang/uk-UA.js +1 -1
  16. package/es/locale/lang/uz-UZ.js +1 -1
  17. package/es/style.css +1 -1
  18. package/es/table/module/export/mixin.js +74 -14
  19. package/es/table/src/cell.js +15 -8
  20. package/es/table/src/columnInfo.js +1 -4
  21. package/es/table/src/methods.js +84 -0
  22. package/es/table/src/util.js +1 -0
  23. package/es/ui/index.js +1 -1
  24. package/es/ui/src/log.js +1 -1
  25. package/lib/index.umd.js +128 -52
  26. package/lib/index.umd.min.js +1 -1
  27. package/lib/locale/lang/ar-EG.js +2 -2
  28. package/lib/locale/lang/ar-EG.min.js +1 -1
  29. package/lib/locale/lang/ar-EG.umd.js +2 -2
  30. package/lib/locale/lang/de-DE.js +1 -1
  31. package/lib/locale/lang/de-DE.min.js +1 -1
  32. package/lib/locale/lang/de-DE.umd.js +1 -1
  33. package/lib/locale/lang/en-US.js +1 -1
  34. package/lib/locale/lang/en-US.min.js +1 -1
  35. package/lib/locale/lang/en-US.umd.js +1 -1
  36. package/lib/locale/lang/fr-FR.js +2 -2
  37. package/lib/locale/lang/fr-FR.min.js +1 -1
  38. package/lib/locale/lang/fr-FR.umd.js +2 -2
  39. package/lib/locale/lang/hu-HU.js +1 -1
  40. package/lib/locale/lang/hu-HU.min.js +1 -1
  41. package/lib/locale/lang/hu-HU.umd.js +1 -1
  42. package/lib/locale/lang/hy-AM.js +1 -1
  43. package/lib/locale/lang/hy-AM.min.js +1 -1
  44. package/lib/locale/lang/hy-AM.umd.js +1 -1
  45. package/lib/locale/lang/id-ID.js +2 -2
  46. package/lib/locale/lang/id-ID.min.js +1 -1
  47. package/lib/locale/lang/id-ID.umd.js +2 -2
  48. package/lib/locale/lang/it-IT.js +1 -1
  49. package/lib/locale/lang/it-IT.min.js +1 -1
  50. package/lib/locale/lang/it-IT.umd.js +1 -1
  51. package/lib/locale/lang/ko-KR.js +1 -1
  52. package/lib/locale/lang/ko-KR.min.js +1 -1
  53. package/lib/locale/lang/ko-KR.umd.js +1 -1
  54. package/lib/locale/lang/ms-MY.js +2 -2
  55. package/lib/locale/lang/ms-MY.min.js +1 -1
  56. package/lib/locale/lang/ms-MY.umd.js +2 -2
  57. package/lib/locale/lang/nb-NO.js +2 -2
  58. package/lib/locale/lang/nb-NO.min.js +1 -1
  59. package/lib/locale/lang/nb-NO.umd.js +2 -2
  60. package/lib/locale/lang/pt-BR.js +2 -2
  61. package/lib/locale/lang/pt-BR.min.js +1 -1
  62. package/lib/locale/lang/pt-BR.umd.js +2 -2
  63. package/lib/locale/lang/th-TH.js +1 -1
  64. package/lib/locale/lang/th-TH.min.js +1 -1
  65. package/lib/locale/lang/th-TH.umd.js +1 -1
  66. package/lib/locale/lang/ug-CN.js +1 -1
  67. package/lib/locale/lang/ug-CN.min.js +1 -1
  68. package/lib/locale/lang/ug-CN.umd.js +1 -1
  69. package/lib/locale/lang/uk-UA.js +1 -1
  70. package/lib/locale/lang/uk-UA.min.js +1 -1
  71. package/lib/locale/lang/uk-UA.umd.js +1 -1
  72. package/lib/locale/lang/uz-UZ.js +1 -1
  73. package/lib/locale/lang/uz-UZ.min.js +1 -1
  74. package/lib/locale/lang/uz-UZ.umd.js +1 -1
  75. package/lib/style.css +1 -1
  76. package/lib/table/module/export/mixin.js +107 -33
  77. package/lib/table/module/export/mixin.min.js +1 -1
  78. package/lib/table/src/cell.js +14 -9
  79. package/lib/table/src/cell.min.js +1 -1
  80. package/lib/table/src/columnInfo.js +1 -5
  81. package/lib/table/src/columnInfo.min.js +1 -1
  82. package/lib/table/src/methods.js +3 -3
  83. package/lib/table/src/methods.min.js +1 -1
  84. package/lib/table/src/util.js +1 -0
  85. package/lib/table/src/util.min.js +1 -1
  86. package/lib/ui/index.js +1 -1
  87. package/lib/ui/index.min.js +1 -1
  88. package/lib/ui/src/log.js +1 -1
  89. package/lib/ui/src/log.min.js +1 -1
  90. package/package.json +2 -2
  91. package/packages/locale/lang/ar-EG.ts +850 -850
  92. package/packages/locale/lang/de-DE.ts +850 -850
  93. package/packages/locale/lang/en-US.ts +850 -850
  94. package/packages/locale/lang/es-ES.ts +850 -850
  95. package/packages/locale/lang/fr-FR.ts +850 -850
  96. package/packages/locale/lang/hu-HU.ts +850 -850
  97. package/packages/locale/lang/hy-AM.ts +850 -850
  98. package/packages/locale/lang/id-ID.ts +850 -850
  99. package/packages/locale/lang/it-IT.ts +850 -850
  100. package/packages/locale/lang/ja-JP.ts +850 -850
  101. package/packages/locale/lang/ko-KR.ts +850 -850
  102. package/packages/locale/lang/ms-MY.ts +850 -850
  103. package/packages/locale/lang/nb-NO.ts +850 -850
  104. package/packages/locale/lang/pt-BR.ts +850 -850
  105. package/packages/locale/lang/ru-RU.ts +850 -850
  106. package/packages/locale/lang/th-TH.ts +850 -850
  107. package/packages/locale/lang/ug-CN.ts +850 -850
  108. package/packages/locale/lang/uk-UA.ts +850 -850
  109. package/packages/locale/lang/uz-UZ.ts +850 -850
  110. package/packages/locale/lang/vi-VN.ts +850 -850
  111. package/packages/locale/lang/zh-CHT.ts +850 -850
  112. package/packages/table/module/export/mixin.ts +73 -15
  113. package/packages/table/src/cell.ts +14 -8
  114. package/packages/table/src/columnInfo.ts +1 -5
  115. package/packages/table/src/methods.ts +85 -0
  116. package/packages/table/src/util.ts +1 -0
  117. /package/es/{iconfont.1779843521280.ttf → iconfont.1780200130470.ttf} +0 -0
  118. /package/es/{iconfont.1779843521280.woff → iconfont.1780200130470.woff} +0 -0
  119. /package/es/{iconfont.1779843521280.woff2 → iconfont.1780200130470.woff2} +0 -0
  120. /package/lib/{iconfont.1779843521280.ttf → iconfont.1780200130470.ttf} +0 -0
  121. /package/lib/{iconfont.1779843521280.woff → iconfont.1780200130470.woff} +0 -0
  122. /package/lib/{iconfont.1779843521280.woff2 → iconfont.1780200130470.woff2} +0 -0
@@ -48,9 +48,11 @@ const toStringValue = (cellValue) => {
48
48
  function getBodyLabelData($xeTable, opts, columns, datas) {
49
49
  const props = $xeTable;
50
50
  const reactData = $xeTable;
51
- const { isTreeAllExpanded, isRowGroupAllExpanded, mode } = opts;
51
+ const internalData = $xeTable;
52
+ const { isTreeAllExpanded, isRowGroupAllExpanded, mode: expMode } = opts;
52
53
  const { treeConfig } = props;
53
54
  const { isRowGroupStatus } = reactData;
55
+ const { fullColumnFieldData } = internalData;
54
56
  const radioOpts = $xeTable.computeRadioOpts;
55
57
  const checkboxOpts = $xeTable.computeCheckboxOpts;
56
58
  const treeOpts = $xeTable.computeTreeOpts;
@@ -62,8 +64,7 @@ function getBodyLabelData($xeTable, opts, columns, datas) {
62
64
  const { handleGetRowId } = createHandleGetRowId($xeTable);
63
65
  if (isRowGroupStatus) {
64
66
  // 如果是数据分组
65
- // 如果是数据分组
66
- const { mapChildrenField } = aggregateOpts;
67
+ const { mode: aggMode, showTotal, totalMethod, countFields, contentMethod, formatValuesMethod, mapChildrenField } = aggregateOpts;
67
68
  const rest = [];
68
69
  const expandMaps = {};
69
70
  const useMaps = {};
@@ -84,8 +85,9 @@ function getBodyLabelData($xeTable, opts, columns, datas) {
84
85
  _expand: hasRowChild && $xeTable.isRowExpandByRow(row)
85
86
  };
86
87
  columns.forEach((column, $columnIndex) => {
88
+ const { field, editRender, cellRender, aggFunc, rowGroupNode } = column;
87
89
  let cellValue = '';
88
- const renderOpts = column.editRender || column.cellRender;
90
+ const renderOpts = editRender || cellRender;
89
91
  let bodyExportMethod = column.exportMethod || columnOpts.exportMethod;
90
92
  if (!bodyExportMethod && renderOpts && renderOpts.name) {
91
93
  const compConf = renderer.get(renderOpts.name);
@@ -103,21 +105,77 @@ function getBodyLabelData($xeTable, opts, columns, datas) {
103
105
  switch (column.type) {
104
106
  case 'seq': {
105
107
  const seqVal = path.map((num, i) => i % 2 === 0 ? (Number(num) + 1) : '.').join('');
106
- cellValue = mode === 'all' ? seqVal : getSeq($xeTable, seqVal, row, $rowIndex, column, $columnIndex);
108
+ cellValue = expMode === 'all' ? seqVal : getSeq($xeTable, seqVal, row, $rowIndex, column, $columnIndex);
107
109
  break;
108
110
  }
109
- case 'checkbox':
111
+ case 'checkbox': {
110
112
  cellValue = toBooleanValue($xeTable.isCheckedByCheckboxRow(row));
111
113
  item._checkboxLabel = checkboxOpts.labelField ? XEUtils.get(row, checkboxOpts.labelField) : '';
112
114
  item._checkboxDisabled = checkboxOpts.checkMethod && !checkboxOpts.checkMethod({ $table: $xeTable, row });
113
115
  break;
114
- case 'radio':
116
+ }
117
+ case 'radio': {
115
118
  cellValue = toBooleanValue($xeTable.isCheckedByRadioRow(row));
116
119
  item._radioLabel = radioOpts.labelField ? XEUtils.get(row, radioOpts.labelField) : '';
117
120
  item._radioDisabled = radioOpts.checkMethod && !radioOpts.checkMethod({ $table: $xeTable, row });
118
121
  break;
119
- default:
120
- if (opts.original) {
122
+ }
123
+ default: {
124
+ if (field && row.isAggregate) {
125
+ const aggRow = row;
126
+ const aggData = aggRow.aggData;
127
+ const currAggData = aggData ? aggData[field] : null;
128
+ const groupField = aggRow.groupField;
129
+ const groupContent = aggRow.groupContent;
130
+ const childList = mapChildrenField ? (aggRow[mapChildrenField] || []) : [];
131
+ const childCount = aggRow.childCount;
132
+ const colRest = fullColumnFieldData[groupField] || {};
133
+ const ctParams = {
134
+ $table: $xeTable,
135
+ groupField,
136
+ groupColumn: (colRest ? colRest.column : null),
137
+ column,
138
+ groupValue: groupContent,
139
+ childList,
140
+ childCount,
141
+ aggValue: null,
142
+ /**
143
+ * 已废弃
144
+ * @deprecated
145
+ */
146
+ children: childList,
147
+ /**
148
+ * 已废弃
149
+ * @deprecated
150
+ */
151
+ totalValue: childCount
152
+ };
153
+ if (aggMode === 'column' ? field === aggRow.groupField : rowGroupNode) {
154
+ cellValue = groupContent;
155
+ if (contentMethod) {
156
+ cellValue = `${contentMethod(ctParams)}`;
157
+ }
158
+ if (showTotal) {
159
+ cellValue = getI18n('vxe.table.rowGroupContentTotal', [cellValue, totalMethod ? totalMethod(ctParams) : childCount, childCount]);
160
+ }
161
+ }
162
+ else if ($xeTable.getPivotTableAggregateCellAggValue) {
163
+ const aggParams = {
164
+ $table: $xeTable,
165
+ row,
166
+ column
167
+ };
168
+ cellValue = $xeTable.getPivotTableAggregateCellAggValue(aggParams);
169
+ }
170
+ else if (aggFunc === true || (countFields && countFields.includes(field))) {
171
+ cellValue = currAggData ? currAggData.value : childCount;
172
+ ctParams.aggValue = cellValue;
173
+ if (formatValuesMethod) {
174
+ cellValue = formatValuesMethod(ctParams);
175
+ }
176
+ }
177
+ }
178
+ else if (opts.original) {
121
179
  cellValue = getCellValue(row, column);
122
180
  }
123
181
  else {
@@ -133,6 +191,8 @@ function getBodyLabelData($xeTable, opts, columns, datas) {
133
191
  }
134
192
  }
135
193
  }
194
+ break;
195
+ }
136
196
  }
137
197
  }
138
198
  item[column.id] = toStringValue(cellValue);
@@ -188,7 +248,7 @@ function getBodyLabelData($xeTable, opts, columns, datas) {
188
248
  switch (column.type) {
189
249
  case 'seq': {
190
250
  const seqVal = path.map((num, i) => i % 2 === 0 ? (Number(num) + 1) : '.').join('');
191
- cellValue = mode === 'all' ? seqVal : getSeq($xeTable, seqVal, row, $rowIndex, column, $columnIndex);
251
+ cellValue = expMode === 'all' ? seqVal : getSeq($xeTable, seqVal, row, $rowIndex, column, $columnIndex);
192
252
  break;
193
253
  }
194
254
  case 'checkbox':
@@ -252,7 +312,7 @@ function getBodyLabelData($xeTable, opts, columns, datas) {
252
312
  switch (column.type) {
253
313
  case 'seq': {
254
314
  const seqValue = $rowIndex + 1;
255
- cellValue = mode === 'all' ? seqValue : getSeq($xeTable, seqValue, row, $rowIndex, column, $columnIndex);
315
+ cellValue = expMode === 'all' ? seqValue : getSeq($xeTable, seqValue, row, $rowIndex, column, $columnIndex);
256
316
  break;
257
317
  }
258
318
  case 'checkbox':
@@ -305,7 +365,7 @@ function getBooleanValue(cellValue) {
305
365
  function getHeaderTitle($xeTable, opts, column) {
306
366
  const columnOpts = $xeTable.computeColumnOpts;
307
367
  const headExportMethod = column.headerExportMethod || columnOpts.headerExportMethod;
308
- return headExportMethod ? headExportMethod({ column, options: opts, $table: $xeTable }) : ((opts.isTitle ? column.getTitle() : column.field) || '');
368
+ return headExportMethod ? headExportMethod({ column, options: opts, $table: $xeTable }) : ((opts.isTitle ? $xeTable.getHeaderCellLabel(column) : column.field) || '');
309
369
  }
310
370
  function getFooterCellValue($xeTable, opts, row, column) {
311
371
  const columnOpts = $xeTable.computeColumnOpts;
@@ -823,12 +883,12 @@ function handleImport($xeTable, content, opts) {
823
883
  const tableTitleMaps = {};
824
884
  tableFullColumn.forEach((column) => {
825
885
  const field = column.field;
826
- const title = column.getTitle();
886
+ const title = $xeTable.getHeaderCellLabel(column);
827
887
  if (field) {
828
888
  tableFieldMaps[field] = column;
829
889
  }
830
890
  if (title) {
831
- tableTitleMaps[column.getTitle()] = column;
891
+ tableTitleMaps[title] = column;
832
892
  }
833
893
  });
834
894
  const tableConf = {
@@ -358,7 +358,7 @@ export const Cell = {
358
358
  return getSlotVNs(renderTitleContent(h, params, rtHeader.call($table, h, renderOpts, params)));
359
359
  }
360
360
  }
361
- return renderTitleContent(h, params, formatText(column.getTitle(), 1));
361
+ return renderTitleContent(h, params, $table.getHeaderCellLabel(column));
362
362
  },
363
363
  renderDefaultHeader(h, params) {
364
364
  return renderHeaderCellBaseVNs(h, params, Cell.renderHeaderTitle(h, params));
@@ -370,7 +370,7 @@ export const Cell = {
370
370
  const tableInternalData = $table;
371
371
  const { isRowGroupStatus } = tableReactData;
372
372
  const { editConfig } = tableProps;
373
- const { field, slots, editRender, cellRender, rowGroupNode, aggFunc, formatter } = column;
373
+ const { field, slots, editRender, cellRender, rowGroupNode, aggFunc } = column;
374
374
  const isEnableEdit = editConfig && isEnableConf(editConfig);
375
375
  const editRenderOpts = isEnableEdit && isEnableConf(editRender) ? editRender : null;
376
376
  const cellRenderOpts = isEnableConf(cellRender) ? cellRender : null;
@@ -445,8 +445,9 @@ export const Cell = {
445
445
  return renderCellBaseVNs(h, params, $table.callSlot(defaultSlot, params, h));
446
446
  }
447
447
  const renderOpts = editRenderOpts || cellRenderOpts;
448
- // formatter > (renderTableCell | renderTableDefault)
449
- if (renderOpts && !formatter) {
448
+ // 如果是编辑表格:renderTableCell > formatter
449
+ // 如果是查看表格:renderTableDefault > formatter
450
+ if (renderOpts) {
450
451
  const compConf = renderer.get(renderOpts.name);
451
452
  if (compConf) {
452
453
  const renderFn = editRenderOpts ? (compConf.renderTableCell || compConf.renderCell) : (compConf.renderTableDefault || compConf.renderDefault);
@@ -602,7 +603,13 @@ export const Cell = {
602
603
  if (rowGroupList.length) {
603
604
  const aggregateOpts = $table.computeAggregateOpts;
604
605
  const { mode } = aggregateOpts;
605
- if (mode === 'column' ? column.field === row.groupField : rowGroupNode) {
606
+ if (mode === 'column') {
607
+ if (row.groupField && column.field === row.groupField) {
608
+ return [Cell.renderRowGroupBtn(h, params, cellVNodes)];
609
+ }
610
+ return cellVNodes;
611
+ }
612
+ else if (rowGroupNode) {
606
613
  return [Cell.renderRowGroupBtn(h, params, cellVNodes)];
607
614
  }
608
615
  }
@@ -614,7 +621,7 @@ export const Cell = {
614
621
  renderSeqHeader(h, params) {
615
622
  const { $table, column } = params;
616
623
  const { slots } = column;
617
- return renderHeaderCellBaseVNs(h, params, renderTitleContent(h, params, slots && slots.header ? $table.callSlot(slots.header, params, h) : formatText(column.getTitle(), 1)));
624
+ return renderHeaderCellBaseVNs(h, params, renderTitleContent(h, params, slots && slots.header ? $table.callSlot(slots.header, params, h) : $table.getHeaderCellLabel(column)));
618
625
  },
619
626
  renderSeqCell(h, params) {
620
627
  const { $table, column } = params;
@@ -647,7 +654,7 @@ export const Cell = {
647
654
  : [
648
655
  h('span', {
649
656
  class: 'vxe-radio--label'
650
- }, titleSlot ? $table.callSlot(titleSlot, params, h) : formatText(column.getTitle(), 1))
657
+ }, titleSlot ? $table.callSlot(titleSlot, params, h) : $table.getHeaderCellLabel(column))
651
658
  ]));
652
659
  },
653
660
  renderRadioCell(h, params) {
@@ -717,7 +724,7 @@ export const Cell = {
717
724
  const titleSlot = slots ? slots.title : null;
718
725
  const checkboxOpts = $table.computeCheckboxOpts;
719
726
  const { checkStrictly, showHeader, headerTitle } = checkboxOpts;
720
- const colTitle = column.getTitle();
727
+ const colTitle = $table.getHeaderCellLabel(column);
721
728
  const ons = {};
722
729
  if (!isHidden) {
723
730
  ons.click = (evnt) => {
@@ -11,7 +11,7 @@ export class ColumnInfo {
11
11
  const $xeGrid = $xeTable.$xeGrid;
12
12
  const $xeGantt = $xeTable.$xeGantt;
13
13
  const $xeGGWrapper = $xeGrid || $xeGantt;
14
- const { field, editRender, filterRender, headerFormatter } = _vm;
14
+ const { field, editRender, filterRender } = _vm;
15
15
  const colId = _vm.colId || XEUtils.uniqueId('col_');
16
16
  const proxyOpts = $xeGrid ? $xeGrid.computeProxyOpts : null;
17
17
  const formatter = _vm.formatter;
@@ -19,9 +19,6 @@ export class ColumnInfo {
19
19
  const flCompConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null;
20
20
  const ctFilterOptions = flCompConf ? flCompConf.createTableFilterOptions : null;
21
21
  const filters = toFilters(_vm.filters, colId);
22
- if (headerFormatter) {
23
- errLog('vxe.error.notProp', ['header-formatter']);
24
- }
25
22
  const types = ['seq', 'checkbox', 'radio', 'expand', 'html'];
26
23
  if (_vm.type && types.indexOf(_vm.type) === -1) {
27
24
  warnLog('vxe.error.errProp', [`type=${_vm.type}`, types.join(', ')]);
@@ -3786,6 +3786,7 @@ function handleInitColumn($xeTable, collectColumn) {
3786
3786
  loadScrollXData($xeTable);
3787
3787
  }
3788
3788
  });
3789
+ $xeTable.clearHeaderFormatterCache();
3789
3790
  $xeTable.clearMergeCells();
3790
3791
  $xeTable.clearMergeFooterItems();
3791
3792
  $xeTable.handleTableData(true);
@@ -5408,6 +5409,88 @@ const tableMethods = {
5408
5409
  }
5409
5410
  return $xeTable.$nextTick();
5410
5411
  },
5412
+ getHeaderCellLabel(fieldOrColumn) {
5413
+ const $xeTable = this;
5414
+ const internalData = $xeTable;
5415
+ const column = handleFieldOrColumn($xeTable, fieldOrColumn);
5416
+ if (!column) {
5417
+ return null;
5418
+ }
5419
+ const { headerFormatter } = column;
5420
+ const _columnIndex = $xeTable.getVTColumnIndex(column);
5421
+ let cellLabel = column.getTitle();
5422
+ if (headerFormatter) {
5423
+ let formatData;
5424
+ const { headerFullDataColData } = internalData;
5425
+ const colid = column.id;
5426
+ let colRest = headerFullDataColData[colid];
5427
+ if (!colRest) {
5428
+ colRest = headerFullDataColData[colid] = {};
5429
+ }
5430
+ const formatObj = colRest.formatObj;
5431
+ if (formatObj && formatObj.value === cellLabel) {
5432
+ return formatObj.label;
5433
+ }
5434
+ const headFormatParams = {
5435
+ $table: $xeTable,
5436
+ cellTitle: cellLabel,
5437
+ cellValue: cellLabel,
5438
+ column,
5439
+ _columnIndex,
5440
+ columnIndex: $xeTable.getColumnIndex(column)
5441
+ };
5442
+ if (XEUtils.isString(headerFormatter)) {
5443
+ const gFormatOpts = formats.get(headerFormatter);
5444
+ const fcFormatMethod = gFormatOpts ? gFormatOpts.tableHeaderCellFormatMethod : null;
5445
+ cellLabel = XEUtils.toValueString(fcFormatMethod ? fcFormatMethod(headFormatParams) : '');
5446
+ }
5447
+ else if (XEUtils.isArray(headerFormatter)) {
5448
+ const gFormatOpts = formats.get(headerFormatter[0]);
5449
+ const fcFormatMethod = gFormatOpts ? gFormatOpts.tableHeaderCellFormatMethod : null;
5450
+ cellLabel = XEUtils.toValueString(fcFormatMethod ? fcFormatMethod(headFormatParams, ...headerFormatter.slice(1)) : '');
5451
+ }
5452
+ else {
5453
+ cellLabel = XEUtils.toValueString(headerFormatter(headFormatParams));
5454
+ }
5455
+ if (formatData) {
5456
+ colRest.formatObj = { value: cellLabel, label: cellLabel };
5457
+ }
5458
+ }
5459
+ return cellLabel;
5460
+ },
5461
+ updateHeaderCellLabel(fieldOrColumn) {
5462
+ const $xeTable = this;
5463
+ const internalData = $xeTable;
5464
+ const column = handleFieldOrColumn($xeTable, fieldOrColumn);
5465
+ if (!column) {
5466
+ return '';
5467
+ }
5468
+ const { headerFullDataColData } = internalData;
5469
+ const colid = column.id;
5470
+ const colRest = headerFullDataColData[colid];
5471
+ if (colRest) {
5472
+ colRest.formatObj = undefined;
5473
+ }
5474
+ return $xeTable.getHeaderCellLabel(column);
5475
+ },
5476
+ clearHeaderFormatterCache(isUpdate) {
5477
+ const $xeTable = this;
5478
+ const reactData = $xeTable;
5479
+ const internalData = $xeTable;
5480
+ const { tableColumn } = reactData;
5481
+ const { headerFullDataColData } = internalData;
5482
+ XEUtils.each(headerFullDataColData, (colRest) => {
5483
+ if (colRest.formatObj) {
5484
+ colRest.formatObj = undefined;
5485
+ }
5486
+ });
5487
+ if (isUpdate) {
5488
+ tableColumn.forEach(column => {
5489
+ $xeTable.getHeaderCellLabel(column);
5490
+ });
5491
+ }
5492
+ return $xeTable.$nextTick();
5493
+ },
5411
5494
  getFooterCellLabel(row, fieldOrColumn) {
5412
5495
  const $xeTable = this;
5413
5496
  const reactData = $xeTable;
@@ -12458,6 +12541,7 @@ const tableMethods = {
12458
12541
  footData = visibleColumn.length ? footerMethod({ columns: visibleColumn, data: afterFullData, $table: $xeTable, $grid: $xeGrid, $gantt: $xeGantt }) : [];
12459
12542
  }
12460
12543
  reactData.footerTableData = footData;
12544
+ $xeTable.clearFooterFormatterCache();
12461
12545
  $xeTable.handleUpdateFooterMerge();
12462
12546
  $xeTable.dispatchEvent('footer-data-change', {
12463
12547
  visibleColumn: internalData.visibleColumn,
@@ -77,6 +77,7 @@ export function createInternalData() {
77
77
  // 数据集(仅可视)
78
78
  visibleDataRowIdData: {},
79
79
  keepUpdateFieldMaps: {},
80
+ headerFullDataColData: {},
80
81
  footerFullDataRowData: {},
81
82
  // 渲染中缓存数据
82
83
  sourceDataRowIdData: {},
package/es/ui/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { VxeUI } from '@vxe-ui/core';
2
2
  import { getFuncText } from './src/utils';
3
- export const version = "3.21.3";
3
+ export const version = "3.21.5";
4
4
  VxeUI.version = version;
5
5
  VxeUI.tableVersion = version;
6
6
  VxeUI.setConfig({
package/es/ui/src/log.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { VxeUI } from '@vxe-ui/core';
2
2
  const { log } = VxeUI;
3
- const version = `table v${"3.21.3"}`;
3
+ const version = `table v${"3.21.5"}`;
4
4
  export const warnLog = log.create('warn', version);
5
5
  export const errLog = log.create('error', version);