vxe-table 4.13.34 → 4.13.35

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 (50) hide show
  1. package/es/grid/src/grid.js +1 -1
  2. package/es/style.css +1 -1
  3. package/es/table/src/body.js +20 -3
  4. package/es/table/src/cell.js +55 -39
  5. package/es/table/src/column.js +2 -0
  6. package/es/table/src/columnInfo.js +2 -0
  7. package/es/table/src/props.js +3 -1
  8. package/es/table/src/table.js +128 -72
  9. package/es/table/src/util.js +7 -4
  10. package/es/ui/index.js +4 -4
  11. package/es/ui/src/log.js +1 -1
  12. package/lib/grid/src/grid.js +1 -1
  13. package/lib/grid/src/grid.min.js +1 -1
  14. package/lib/index.umd.js +117 -76
  15. package/lib/index.umd.min.js +1 -1
  16. package/lib/style.css +1 -1
  17. package/lib/table/src/body.js +19 -2
  18. package/lib/table/src/body.min.js +1 -1
  19. package/lib/table/src/cell.js +47 -32
  20. package/lib/table/src/cell.min.js +1 -1
  21. package/lib/table/src/column.js +2 -0
  22. package/lib/table/src/column.min.js +1 -1
  23. package/lib/table/src/columnInfo.js +2 -0
  24. package/lib/table/src/columnInfo.min.js +1 -1
  25. package/lib/table/src/props.js +3 -1
  26. package/lib/table/src/props.min.js +1 -1
  27. package/lib/table/src/table.js +31 -31
  28. package/lib/table/src/table.min.js +1 -1
  29. package/lib/table/src/util.js +10 -7
  30. package/lib/table/src/util.min.js +1 -1
  31. package/lib/ui/index.js +4 -4
  32. package/lib/ui/index.min.js +1 -1
  33. package/lib/ui/src/log.js +1 -1
  34. package/lib/ui/src/log.min.js +1 -1
  35. package/package.json +1 -1
  36. package/packages/grid/src/grid.ts +1 -1
  37. package/packages/table/src/body.ts +20 -3
  38. package/packages/table/src/cell.ts +55 -39
  39. package/packages/table/src/column.ts +2 -0
  40. package/packages/table/src/columnInfo.ts +3 -0
  41. package/packages/table/src/props.ts +3 -1
  42. package/packages/table/src/table.ts +130 -71
  43. package/packages/table/src/util.ts +7 -3
  44. package/packages/ui/index.ts +3 -3
  45. /package/es/{iconfont.1749092482353.ttf → iconfont.1749202972772.ttf} +0 -0
  46. /package/es/{iconfont.1749092482353.woff → iconfont.1749202972772.woff} +0 -0
  47. /package/es/{iconfont.1749092482353.woff2 → iconfont.1749202972772.woff2} +0 -0
  48. /package/lib/{iconfont.1749092482353.ttf → iconfont.1749202972772.ttf} +0 -0
  49. /package/lib/{iconfont.1749092482353.woff → iconfont.1749202972772.woff} +0 -0
  50. /package/lib/{iconfont.1749092482353.woff2 → iconfont.1749202972772.woff2} +0 -0
@@ -528,8 +528,11 @@ export default defineComponent({
528
528
  const computeRowOpts = computed(() => {
529
529
  return Object.assign({}, getConfig().table.rowConfig, props.rowConfig);
530
530
  });
531
+ const computeAggregateOpts = computed(() => {
532
+ return Object.assign({}, getConfig().table.aggregateConfig || getConfig().table.rowGroupConfig, props.aggregateConfig || props.rowGroupConfig);
533
+ });
531
534
  const computeRowGroupOpts = computed(() => {
532
- return Object.assign({}, getConfig().table.rowGroupConfig, props.rowGroupConfig);
535
+ return computeAggregateOpts.value;
533
536
  });
534
537
  const computeCurrentRowOpts = computed(() => {
535
538
  return Object.assign({}, getConfig().table.currentRowConfig, props.currentRowConfig);
@@ -811,6 +814,7 @@ export default defineComponent({
811
814
  computeHeaderCellOpts,
812
815
  computeFooterCellOpts,
813
816
  computeRowOpts,
817
+ computeAggregateOpts,
814
818
  computeRowGroupOpts,
815
819
  computeCurrentRowOpts,
816
820
  computeRowDragOpts,
@@ -1847,7 +1851,7 @@ export default defineComponent({
1847
1851
  const { treeConfig } = props;
1848
1852
  const { isRowGroupStatus } = reactData;
1849
1853
  const { fullAllDataRowIdData, treeExpandedMaps, rowGroupExpandedMaps } = internalData;
1850
- const rowGroupOpts = computeRowGroupOpts.value;
1854
+ const aggregateOpts = computeAggregateOpts.value;
1851
1855
  const treeOpts = computeTreeOpts.value;
1852
1856
  const { handleGetRowId } = createHandleGetRowId($xeTable);
1853
1857
  const fullData = [];
@@ -1871,7 +1875,7 @@ export default defineComponent({
1871
1875
  return fullData;
1872
1876
  }
1873
1877
  else if (isRowGroupStatus) {
1874
- const { childrenField } = rowGroupOpts;
1878
+ const { childrenField } = aggregateOpts;
1875
1879
  XEUtils.eachTree(internalData.afterGroupFullData, (row, index, items, path, parentRow) => {
1876
1880
  const rowid = handleGetRowId(row);
1877
1881
  const parentRowid = handleGetRowId(parentRow);
@@ -1900,7 +1904,7 @@ export default defineComponent({
1900
1904
  const { tableFullColumn, tableFullData, tableFullTreeData, tableFullGroupData } = internalData;
1901
1905
  const filterOpts = computeFilterOpts.value;
1902
1906
  const sortOpts = computeSortOpts.value;
1903
- const rowGroupOpts = computeRowGroupOpts.value;
1907
+ const aggregateOpts = computeAggregateOpts.value;
1904
1908
  const treeOpts = computeTreeOpts.value;
1905
1909
  const childrenField = treeOpts.children || treeOpts.childrenField;
1906
1910
  const { transform, rowField, parentField, mapChildrenField } = treeOpts;
@@ -1964,8 +1968,8 @@ export default defineComponent({
1964
1968
  tableTree = XEUtils.searchTree(tableFullGroupData, handleFilter, {
1965
1969
  original: true,
1966
1970
  isEvery: true,
1967
- children: rowGroupOpts.mapChildrenField,
1968
- mapChildren: rowGroupOpts.childrenField
1971
+ children: aggregateOpts.mapChildrenField,
1972
+ mapChildren: aggregateOpts.childrenField
1969
1973
  });
1970
1974
  tableData = tableTree;
1971
1975
  }
@@ -1990,8 +1994,8 @@ export default defineComponent({
1990
1994
  tableTree = XEUtils.searchTree(tableFullGroupData, () => true, {
1991
1995
  original: true,
1992
1996
  isEvery: true,
1993
- children: rowGroupOpts.mapChildrenField,
1994
- mapChildren: rowGroupOpts.childrenField
1997
+ children: aggregateOpts.mapChildrenField,
1998
+ mapChildren: aggregateOpts.childrenField
1995
1999
  });
1996
2000
  tableData = tableTree;
1997
2001
  }
@@ -2021,15 +2025,15 @@ export default defineComponent({
2021
2025
  }
2022
2026
  else {
2023
2027
  const treeList = XEUtils.toTreeArray(tableTree, {
2024
- key: rowGroupOpts.rowField,
2025
- parentKey: rowGroupOpts.parentField,
2026
- children: rowGroupOpts.mapChildrenField
2028
+ key: aggregateOpts.rowField,
2029
+ parentKey: aggregateOpts.parentField,
2030
+ children: aggregateOpts.mapChildrenField
2027
2031
  });
2028
2032
  tableTree = XEUtils.toArrayTree(XEUtils.orderBy(treeList, orderColumns.map(({ column, order }) => [getOrderField(column), order])), {
2029
- key: rowGroupOpts.rowField,
2030
- parentKey: rowGroupOpts.parentField,
2031
- children: rowGroupOpts.childrenField,
2032
- mapChildren: rowGroupOpts.mapChildrenField
2033
+ key: aggregateOpts.rowField,
2034
+ parentKey: aggregateOpts.parentField,
2035
+ children: aggregateOpts.childrenField,
2036
+ mapChildren: aggregateOpts.mapChildrenField
2033
2037
  });
2034
2038
  }
2035
2039
  tableData = tableTree;
@@ -2072,8 +2076,8 @@ export default defineComponent({
2072
2076
  tableTree = XEUtils.searchTree(tableFullGroupData, () => true, {
2073
2077
  original: true,
2074
2078
  isEvery: true,
2075
- children: rowGroupOpts.mapChildrenField,
2076
- mapChildren: rowGroupOpts.childrenField
2079
+ children: aggregateOpts.mapChildrenField,
2080
+ mapChildren: aggregateOpts.childrenField
2077
2081
  });
2078
2082
  tableData = tableTree;
2079
2083
  }
@@ -2517,7 +2521,7 @@ export default defineComponent({
2517
2521
  const { isRowGroupStatus } = reactData;
2518
2522
  const { afterFullData, afterTreeFullData, afterGroupFullData, checkboxReserveRowMap, selectCheckboxMaps } = internalData;
2519
2523
  const treeOpts = computeTreeOpts.value;
2520
- const rowGroupOpts = computeRowGroupOpts.value;
2524
+ const aggregateOpts = computeAggregateOpts.value;
2521
2525
  const childrenField = treeOpts.children || treeOpts.childrenField;
2522
2526
  const checkboxOpts = computeCheckboxOpts.value;
2523
2527
  const { checkField, reserve, checkMethod } = checkboxOpts;
@@ -2566,7 +2570,7 @@ export default defineComponent({
2566
2570
  const rowid = handleGetRowId(row);
2567
2571
  selectRowMaps[rowid] = row;
2568
2572
  }
2569
- }, { children: rowGroupOpts.mapChildrenField });
2573
+ }, { children: aggregateOpts.mapChildrenField });
2570
2574
  }
2571
2575
  else {
2572
2576
  /**
@@ -2579,7 +2583,7 @@ export default defineComponent({
2579
2583
  if (checkMethod({ $table: $xeTable, row }) ? false : selectCheckboxMaps[rowid]) {
2580
2584
  selectRowMaps[rowid] = row;
2581
2585
  }
2582
- }, { children: rowGroupOpts.mapChildrenField });
2586
+ }, { children: aggregateOpts.mapChildrenField });
2583
2587
  }
2584
2588
  }
2585
2589
  }
@@ -2996,12 +3000,49 @@ export default defineComponent({
2996
3000
  })
2997
3001
  : [];
2998
3002
  };
3003
+ const handleeGroupSummary = (aggList) => {
3004
+ const aggregateOpts = computeAggregateOpts.value;
3005
+ const { mapChildrenField } = aggregateOpts;
3006
+ if (mapChildrenField) {
3007
+ XEUtils.lastEach(aggList, aggRow => {
3008
+ let count = 0;
3009
+ XEUtils.each(aggRow[mapChildrenField], (row) => {
3010
+ if (row.isAggregate) {
3011
+ count += row.childCount || 0;
3012
+ }
3013
+ else {
3014
+ count++;
3015
+ }
3016
+ });
3017
+ aggRow.childCount = count;
3018
+ });
3019
+ if ($xeTable.handlePivotTableAggregateData) {
3020
+ $xeTable.handlePivotTableAggregateData(aggList);
3021
+ }
3022
+ }
3023
+ };
3024
+ const updateGroupData = () => {
3025
+ const { aggregateConfig, rowGroupConfig } = props;
3026
+ const { isRowGroupStatus } = reactData;
3027
+ const { tableFullGroupData } = internalData;
3028
+ const aggregateOpts = computeAggregateOpts.value;
3029
+ const { mapChildrenField } = aggregateOpts;
3030
+ if ((aggregateConfig || rowGroupConfig) && isRowGroupStatus) {
3031
+ const aggList = [];
3032
+ XEUtils.eachTree(tableFullGroupData, row => {
3033
+ if (row.isAggregate) {
3034
+ aggList.push(row);
3035
+ }
3036
+ }, { children: mapChildrenField });
3037
+ handleeGroupSummary(aggList);
3038
+ }
3039
+ };
2999
3040
  const handleGroupData = (list, rowGroups) => {
3000
3041
  let fullData = list;
3001
3042
  let treeData = list;
3002
3043
  if (rowGroups) {
3003
- const rowGroupOpts = computeRowGroupOpts.value;
3004
- const { rowField, parentField, childrenField, mapChildrenField } = rowGroupOpts;
3044
+ const aggregateOpts = computeAggregateOpts.value;
3045
+ const { rowField, parentField, childrenField, mapChildrenField } = aggregateOpts;
3005
3046
  const checkboxOpts = computeCheckboxOpts.value;
3006
3047
  const { checkField } = checkboxOpts;
3007
3048
  const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
@@ -3012,7 +3053,7 @@ export default defineComponent({
3012
3053
  const groupField = rgItem.field;
3013
3054
  const groupColumn = $xeTable.getColumnByField(groupField);
3014
3055
  const groupMaps = {};
3015
- const groupList = [];
3056
+ const aggList = [];
3016
3057
  const rowkey = getRowkey($xeTable);
3017
3058
  list.forEach((row) => {
3018
3059
  const cellValue = groupColumn ? $xeTable.getCellLabel(row, groupColumn) : XEUtils.get(row, groupField);
@@ -3029,12 +3070,12 @@ export default defineComponent({
3029
3070
  });
3030
3071
  XEUtils.objectEach(groupMaps, (childList, groupValue) => {
3031
3072
  const { fullData: childFullData, treeData: childTreeData } = handleGroupData(childList, rowGroups.slice(1));
3032
- const childCount = 0;
3033
- const groupRow = {
3073
+ const aggRow = {
3034
3074
  isAggregate: true,
3035
- childCount,
3075
+ aggData: {},
3036
3076
  groupContent: groupValue,
3037
3077
  groupField,
3078
+ childCount: 0,
3038
3079
  [rowField]: getRowUniqueId(),
3039
3080
  [parentField]: null,
3040
3081
  [rowkey]: getRowUniqueId(),
@@ -3042,30 +3083,19 @@ export default defineComponent({
3042
3083
  [mapChildrenField]: childTreeData
3043
3084
  };
3044
3085
  if (checkField) {
3045
- groupRow[checkField] = false;
3086
+ aggRow[checkField] = false;
3046
3087
  }
3047
3088
  if (indeterminateField) {
3048
- groupRow[indeterminateField] = false;
3089
+ aggRow[indeterminateField] = false;
3049
3090
  }
3050
- groupList.push(groupRow);
3051
- treeData.push(groupRow);
3052
- fullData.push(groupRow);
3091
+ aggList.push(aggRow);
3092
+ treeData.push(aggRow);
3093
+ fullData.push(aggRow);
3053
3094
  if (childFullData.length) {
3054
3095
  fullData.push(...childFullData);
3055
3096
  }
3056
3097
  });
3057
- XEUtils.lastEach(groupList, groupItem => {
3058
- let count = 0;
3059
- XEUtils.each(groupItem[childrenField], row => {
3060
- if (row.isAggregate) {
3061
- count += row[childrenField] ? row[childrenField].length : 0;
3062
- }
3063
- else {
3064
- count++;
3065
- }
3066
- });
3067
- groupItem.childCount = count;
3068
- });
3098
+ handleeGroupSummary(aggList);
3069
3099
  }
3070
3100
  }
3071
3101
  return {
@@ -3078,7 +3108,7 @@ export default defineComponent({
3078
3108
  * @param {Array} datas 数据
3079
3109
  */
3080
3110
  const loadTableData = (datas, isReset) => {
3081
- const { keepSource, treeConfig, rowGroupConfig } = props;
3111
+ const { keepSource, treeConfig, rowGroupConfig, aggregateConfig } = props;
3082
3112
  const { rowGroupList, scrollYLoad: oldScrollYLoad } = reactData;
3083
3113
  const { scrollYStore, scrollXStore, lastScrollLeft, lastScrollTop } = internalData;
3084
3114
  const rowOpts = computeRowOpts.value;
@@ -3092,11 +3122,11 @@ export default defineComponent({
3092
3122
  errLog('vxe.error.errMaxRow', [supportMaxRow]);
3093
3123
  }
3094
3124
  if (treeConfig && rowGroupList.length) {
3095
- errLog('vxe.error.noTree', ['row-group-config']);
3125
+ errLog('vxe.error.noTree', ['aggregate-config']);
3096
3126
  return nextTick();
3097
3127
  }
3098
3128
  if (rowOpts.drag && rowGroupList.length) {
3099
- errLog('vxe.error.errConflicts', ['row-config.drag', 'row-group-config']);
3129
+ errLog('vxe.error.errConflicts', ['row-config.drag', 'aggregate-config']);
3100
3130
  return nextTick();
3101
3131
  }
3102
3132
  let isRGroup = false;
@@ -3135,7 +3165,7 @@ export default defineComponent({
3135
3165
  treeData = fullData.slice(0);
3136
3166
  }
3137
3167
  }
3138
- else if (rowGroupConfig && rowGroupList.length) {
3168
+ else if ((aggregateConfig || rowGroupConfig) && rowGroupList.length) {
3139
3169
  const groupRest = handleGroupData(fullData, rowGroupList);
3140
3170
  treeData = groupRest.treeData;
3141
3171
  fullData = groupRest.fullData;
@@ -3244,6 +3274,8 @@ export default defineComponent({
3244
3274
  if (oldScrollYLoad === sYLoad) {
3245
3275
  restoreScrollLocation($xeTable, targetScrollLeft, targetScrollTop)
3246
3276
  .then(() => {
3277
+ calcCellHeight();
3278
+ updateRowOffsetTop();
3247
3279
  resolve();
3248
3280
  });
3249
3281
  }
@@ -3251,6 +3283,8 @@ export default defineComponent({
3251
3283
  setTimeout(() => {
3252
3284
  restoreScrollLocation($xeTable, targetScrollLeft, targetScrollTop)
3253
3285
  .then(() => {
3286
+ calcCellHeight();
3287
+ updateRowOffsetTop();
3254
3288
  resolve();
3255
3289
  });
3256
3290
  });
@@ -3487,6 +3521,7 @@ export default defineComponent({
3487
3521
  $xeTable.clearMergeCells();
3488
3522
  $xeTable.clearMergeFooterItems();
3489
3523
  $xeTable.handleTableData(true);
3524
+ $xeTable.handleAggregateSummaryData();
3490
3525
  if ((scrollXLoad || scrollYLoad) && (expandColumn && expandOpts.mode !== 'fixed')) {
3491
3526
  warnLog('vxe.error.scrollErrProp', ['column.type=expand']);
3492
3527
  }
@@ -3612,8 +3647,8 @@ export default defineComponent({
3612
3647
  */
3613
3648
  const handleRowGroupBaseExpand = (rows, expanded) => {
3614
3649
  const { fullAllDataRowIdData, tableFullGroupData, rowGroupExpandedMaps } = internalData;
3615
- const rowGroupOpts = computeRowGroupOpts.value;
3616
- const { mapChildrenField, accordion } = rowGroupOpts;
3650
+ const aggregateOpts = computeAggregateOpts.value;
3651
+ const { mapChildrenField, accordion } = aggregateOpts;
3617
3652
  const { handleGetRowId } = createHandleGetRowId($xeTable);
3618
3653
  let validRows = rows;
3619
3654
  if (mapChildrenField) {
@@ -6005,9 +6040,9 @@ export default defineComponent({
6005
6040
  return rest;
6006
6041
  },
6007
6042
  setRowGroups(fieldOrColumns) {
6008
- const { rowGroupConfig } = props;
6009
- if (!rowGroupConfig) {
6010
- errLog('vxe.error.reqProp', ['row-group-config']);
6043
+ const { aggregateConfig, rowGroupConfig } = props;
6044
+ if (!(aggregateConfig || rowGroupConfig)) {
6045
+ errLog('vxe.error.reqProp', ['aggregate-config']);
6011
6046
  return nextTick();
6012
6047
  }
6013
6048
  if (fieldOrColumns) {
@@ -6019,19 +6054,27 @@ export default defineComponent({
6019
6054
  return nextTick();
6020
6055
  },
6021
6056
  clearRowGroups() {
6022
- const { rowGroupConfig } = props;
6023
- if (!rowGroupConfig) {
6024
- errLog('vxe.error.reqProp', ['row-group-config']);
6057
+ const { aggregateConfig, rowGroupConfig } = props;
6058
+ if (!(aggregateConfig || rowGroupConfig)) {
6059
+ errLog('vxe.error.reqProp', ['aggregate-config']);
6025
6060
  return nextTick();
6026
6061
  }
6027
6062
  handleUpdateRowGroup([]);
6028
6063
  return loadTableData(internalData.tableSynchData, true);
6029
6064
  },
6030
6065
  isRowGroupRecord(row) {
6066
+ warnLog('vxe.error.delFunc', ['isRowGroupRecord', 'isAggregateRecord']);
6067
+ return $xeTable.isAggregateRecord(row);
6068
+ },
6069
+ isRowGroupExpandByRow(row) {
6070
+ warnLog('vxe.error.delFunc', ['isRowGroupExpandByRow', 'isAggregateExpandByRow']);
6071
+ return $xeTable.isAggregateExpandByRow(row);
6072
+ },
6073
+ isAggregateRecord(row) {
6031
6074
  const { isRowGroupStatus } = reactData;
6032
6075
  return isRowGroupStatus && row.isAggregate;
6033
6076
  },
6034
- isRowGroupExpandByRow(row) {
6077
+ isAggregateExpandByRow(row) {
6035
6078
  const { rowGroupExpandedFlag } = reactData;
6036
6079
  const { rowGroupExpandedMaps } = internalData;
6037
6080
  return !!rowGroupExpandedFlag && !!rowGroupExpandedMaps[getRowid($xeTable, row)];
@@ -6047,8 +6090,8 @@ export default defineComponent({
6047
6090
  },
6048
6091
  setAllRowGroupExpand(expanded) {
6049
6092
  const { tableFullGroupData } = internalData;
6050
- const rowGroupOpts = computeRowGroupOpts.value;
6051
- const { mapChildrenField } = rowGroupOpts;
6093
+ const aggregateOpts = computeAggregateOpts.value;
6094
+ const { mapChildrenField } = aggregateOpts;
6052
6095
  const rgExpandedMaps = {};
6053
6096
  if (expanded && mapChildrenField) {
6054
6097
  XEUtils.eachTree(tableFullGroupData, (row) => {
@@ -7590,8 +7633,8 @@ export default defineComponent({
7590
7633
  }, { children: childrenField });
7591
7634
  }
7592
7635
  else if (isRowGroupStatus) {
7593
- const rowGroupOpts = computeRowGroupOpts.value;
7594
- const { mapChildrenField } = rowGroupOpts;
7636
+ const aggregateOpts = computeAggregateOpts.value;
7637
+ const { mapChildrenField } = aggregateOpts;
7595
7638
  XEUtils.eachTree(tableFullGroupData, (row, index, items, path, parentRow, nodes) => {
7596
7639
  const rowid = handleUpdateRowId(row);
7597
7640
  handleRowCache(row, index, items, parentRow ? -1 : index, parentRow, rowid, nodes.length - 1, toTreePathSeq(path));
@@ -8104,7 +8147,7 @@ export default defineComponent({
8104
8147
  const { treeConfig } = props;
8105
8148
  const { isRowGroupStatus } = reactData;
8106
8149
  const { afterTreeFullData, afterGroupFullData, selectCheckboxMaps, treeIndeterminateRowMaps } = internalData;
8107
- const rowGroupOpts = computeRowGroupOpts.value;
8150
+ const aggregateOpts = computeAggregateOpts.value;
8108
8151
  const treeOpts = computeTreeOpts.value;
8109
8152
  const childrenField = treeOpts.children || treeOpts.childrenField;
8110
8153
  const checkboxOpts = computeCheckboxOpts.value;
@@ -8118,7 +8161,7 @@ export default defineComponent({
8118
8161
  const childRowList = [];
8119
8162
  if (isRowGroupStatus) {
8120
8163
  // 行分组
8121
- const mapChildrenField = rowGroupOpts.mapChildrenField;
8164
+ const mapChildrenField = aggregateOpts.mapChildrenField;
8122
8165
  if (mapChildrenField) {
8123
8166
  XEUtils.eachTree(afterGroupFullData, (row) => {
8124
8167
  const rowid = handleGetRowId(row);
@@ -8279,7 +8322,7 @@ export default defineComponent({
8279
8322
  const { treeConfig } = props;
8280
8323
  const { isRowGroupStatus } = reactData;
8281
8324
  const { selectCheckboxMaps } = internalData;
8282
- const rowGroupOpts = computeRowGroupOpts.value;
8325
+ const aggregateOpts = computeAggregateOpts.value;
8283
8326
  const treeOpts = computeTreeOpts.value;
8284
8327
  const { transform, mapChildrenField } = treeOpts;
8285
8328
  const childrenField = treeOpts.children || treeOpts.childrenField;
@@ -8331,7 +8374,7 @@ export default defineComponent({
8331
8374
  }
8332
8375
  handleCheckboxReserveRow(row, checked);
8333
8376
  }
8334
- }, { children: rowGroupOpts.mapChildrenField });
8377
+ }, { children: aggregateOpts.mapChildrenField });
8335
8378
  reactData.updateCheckboxFlag++;
8336
8379
  return;
8337
8380
  }
@@ -8394,6 +8437,9 @@ export default defineComponent({
8394
8437
  internalData.mergeFooterCellMaps = buildMergeData(mergeFooterList);
8395
8438
  reactData.mergeFootFlag++;
8396
8439
  },
8440
+ handleAggregateSummaryData() {
8441
+ return updateGroupData();
8442
+ },
8397
8443
  triggerHeaderTitleEvent(evnt, iconParams, params) {
8398
8444
  const tipContent = iconParams.content || iconParams.message;
8399
8445
  if (tipContent) {
@@ -8554,7 +8600,7 @@ export default defineComponent({
8554
8600
  const radioOpts = computeRadioOpts.value;
8555
8601
  const checkboxOpts = computeCheckboxOpts.value;
8556
8602
  const keyboardOpts = computeKeyboardOpts.value;
8557
- const rowGroupOpts = computeRowGroupOpts.value;
8603
+ const aggregateOpts = computeAggregateOpts.value;
8558
8604
  const rowOpts = computeRowOpts.value;
8559
8605
  const columnOpts = computeColumnOpts.value;
8560
8606
  const currentColumnOpts = computeCurrentColumnOpts.value;
@@ -8581,7 +8627,7 @@ export default defineComponent({
8581
8627
  $xeTable.triggerTreeExpandEvent(evnt, params);
8582
8628
  }
8583
8629
  // 如果是行分组
8584
- if ((rowGroupOpts.trigger === 'row' || (rowGroupNode && rowGroupOpts.trigger === 'cell'))) {
8630
+ if ((aggregateOpts.trigger === 'row' || (rowGroupNode && aggregateOpts.trigger === 'cell'))) {
8585
8631
  $xeTable.triggerRowGroupExpandEvent(evnt, params);
8586
8632
  }
8587
8633
  }
@@ -8869,9 +8915,9 @@ export default defineComponent({
8869
8915
  */
8870
8916
  triggerRowGroupExpandEvent(evnt, params) {
8871
8917
  const { rowGroupExpandedMaps } = internalData;
8872
- const rowGroupOpts = computeRowGroupOpts.value;
8918
+ const aggregateOpts = computeAggregateOpts.value;
8873
8919
  const { row, column } = params;
8874
- const { trigger } = rowGroupOpts;
8920
+ const { trigger } = aggregateOpts;
8875
8921
  if (trigger === 'manual') {
8876
8922
  return;
8877
8923
  }
@@ -10115,10 +10161,10 @@ export default defineComponent({
10115
10161
  const { tableFullData } = internalData;
10116
10162
  const rests = [];
10117
10163
  if (treeConfig || isRowGroupStatus) {
10118
- const rowGroupOpts = computeRowGroupOpts.value;
10164
+ const aggregateOpts = computeAggregateOpts.value;
10119
10165
  const treeOpts = computeTreeOpts.value;
10120
10166
  const childrenField = treeOpts.children || treeOpts.childrenField;
10121
- const matchObj = XEUtils.findTree(tableFullData, item => $xeTable.eqRow(item, row), { children: isRowGroupStatus ? rowGroupOpts.mapChildrenField : childrenField });
10167
+ const matchObj = XEUtils.findTree(tableFullData, item => $xeTable.eqRow(item, row), { children: isRowGroupStatus ? aggregateOpts.mapChildrenField : childrenField });
10122
10168
  if (matchObj) {
10123
10169
  const nodes = matchObj.nodes;
10124
10170
  nodes.forEach((row, index) => {
@@ -11231,9 +11277,9 @@ export default defineComponent({
11231
11277
  const columnOpts = computeColumnOpts.value;
11232
11278
  const rowOpts = computeRowOpts.value;
11233
11279
  const customOpts = computeCustomOpts.value;
11234
- const rowGroupOpts = computeRowGroupOpts.value;
11280
+ const aggregateOpts = computeAggregateOpts.value;
11235
11281
  const virtualYOpts = computeVirtualYOpts.value;
11236
- const { groupFields } = rowGroupOpts;
11282
+ const { groupFields } = aggregateOpts;
11237
11283
  if (columnOpts.drag || rowOpts.drag || customOpts.allowSort) {
11238
11284
  initTpImg();
11239
11285
  }
@@ -11254,6 +11300,7 @@ export default defineComponent({
11254
11300
  const currentRowOpts = computeCurrentRowOpts.value;
11255
11301
  const currentColumnOpts = computeCurrentColumnOpts.value;
11256
11302
  const keyboardOpts = computeKeyboardOpts.value;
11303
+ const aggregateOpts = computeAggregateOpts.value;
11257
11304
  if (props.rowId) {
11258
11305
  warnLog('vxe.error.delProp', ['row-id', 'row-config.keyField']);
11259
11306
  }
@@ -11341,6 +11388,15 @@ export default defineComponent({
11341
11388
  if (props.dragConfig) {
11342
11389
  warnLog('vxe.error.delProp', ['drag-config', 'row-drag-config']);
11343
11390
  }
11391
+ if (props.rowGroupConfig) {
11392
+ warnLog('vxe.error.delProp', ['row-group-config', 'aggregate-config']);
11393
+ }
11394
+ if (aggregateOpts.countFields) {
11395
+ warnLog('vxe.error.delProp', ['row-group-config.countFields', 'column.agg-func']);
11396
+ }
11397
+ if (aggregateOpts.countMethod) {
11398
+ warnLog('vxe.error.delProp', ['row-group-config.countMethod', 'aggregate-config.aggregateMethod']);
11399
+ }
11344
11400
  if (props.treeConfig && treeOpts.children) {
11345
11401
  warnLog('vxe.error.delProp', ['tree-config.children', 'tree-config.childrenField']);
11346
11402
  }
@@ -145,19 +145,22 @@ export function updateFastRowKey(row, rowKey) {
145
145
  }
146
146
  return rowid;
147
147
  }
148
- export const handleFieldOrColumn = ($xeTable, fieldOrColumn) => {
148
+ export function handleFieldOrColumn($xeTable, fieldOrColumn) {
149
149
  if (fieldOrColumn) {
150
150
  return XEUtils.isString(fieldOrColumn) || XEUtils.isNumber(fieldOrColumn) ? $xeTable.getColumnByField(`${fieldOrColumn}`) : fieldOrColumn;
151
151
  }
152
152
  return null;
153
- };
154
- export const handleRowidOrRow = ($xeTable, rowidOrRow) => {
153
+ }
154
+ export function handleRowidOrRow($xeTable, rowidOrRow) {
155
155
  if (rowidOrRow) {
156
156
  const rowid = XEUtils.isString(rowidOrRow) || XEUtils.isNumber(rowidOrRow) ? rowidOrRow : getRowid($xeTable, rowidOrRow);
157
157
  return $xeTable.getRowById(rowid);
158
158
  }
159
159
  return null;
160
- };
160
+ }
161
+ export function getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight) {
162
+ return rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight;
163
+ }
161
164
  function getPaddingLeftRightSize(elem) {
162
165
  if (elem) {
163
166
  const computedStyle = getComputedStyle(elem);
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 = "4.13.34";
3
+ export const version = "4.13.35";
4
4
  VxeUI.version = version;
5
5
  VxeUI.tableVersion = version;
6
6
  VxeUI.setConfig({
@@ -126,7 +126,7 @@ VxeUI.setConfig({
126
126
  // isEvery: false,
127
127
  showIcon: true
128
128
  },
129
- rowGroupConfig: {
129
+ aggregateConfig: {
130
130
  padding: true,
131
131
  rowField: 'id',
132
132
  parentField: '_X_ROW_PARENT_KEY',
@@ -200,13 +200,13 @@ VxeUI.setConfig({
200
200
  isReplace: true
201
201
  },
202
202
  virtualXConfig: {
203
- enabled: true,
203
+ // enabled: false,
204
204
  gt: 24,
205
205
  preSize: 1,
206
206
  oSize: 0
207
207
  },
208
208
  virtualYConfig: {
209
- enabled: true,
209
+ // enabled: false,
210
210
  gt: 100,
211
211
  preSize: 1,
212
212
  oSize: 0
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${"4.13.34"}`;
3
+ const version = `table v${"4.13.35"}`;
4
4
  export const warnLog = log.create('warn', version);
5
5
  export const errLog = log.create('error', version);
@@ -28,7 +28,7 @@ const {
28
28
  renderEmptyElement
29
29
  } = _ui.VxeUI;
30
30
  const tableComponentPropKeys = Object.keys(_props.default);
31
- const tableComponentMethodKeys = ['clearAll', 'syncData', 'updateData', 'loadData', 'reloadData', 'reloadRow', 'loadColumn', 'reloadColumn', 'getRowNode', 'getColumnNode', 'getRowIndex', 'getVTRowIndex', 'getVMRowIndex', 'getColumnIndex', 'getVTColumnIndex', 'getVMColumnIndex', 'setRow', 'createData', 'createRow', 'revertData', 'clearData', 'isRemoveByRow', 'isInsertByRow', 'isUpdateByRow', 'getColumns', 'getColumnById', 'getColumnByField', 'getTableColumn', 'getFullColumns', 'getData', 'getCheckboxRecords', 'getParentRow', 'getTreeRowChildren', 'getTreeParentRow', 'getRowSeq', 'getRowById', 'getRowid', 'getTableData', 'getFullData', 'setColumnFixed', 'clearColumnFixed', 'setColumnWidth', 'getColumnWidth', 'setRowHeightConf', 'getRowHeightConf', 'setRowHeight', 'getRowHeight', 'hideColumn', 'showColumn', 'resetColumn', 'refreshColumn', 'refreshScroll', 'recalculate', 'closeTooltip', 'isAllCheckboxChecked', 'isAllCheckboxIndeterminate', 'getCheckboxIndeterminateRecords', 'setCheckboxRow', 'setCheckboxRowKey', 'isCheckedByCheckboxRow', 'isCheckedByCheckboxRowKey', 'isIndeterminateByCheckboxRow', 'isIndeterminateByCheckboxRowKey', 'toggleCheckboxRow', 'setAllCheckboxRow', 'getRadioReserveRecord', 'clearRadioReserve', 'getCheckboxReserveRecords', 'clearCheckboxReserve', 'toggleAllCheckboxRow', 'clearCheckboxRow', 'setCurrentRow', 'isCheckedByRadioRow', 'isCheckedByRadioRowKey', 'setRadioRow', 'setRadioRowKey', 'clearCurrentRow', 'clearRadioRow', 'getCurrentRecord', 'getRadioRecord', 'getCurrentColumn', 'setCurrentColumn', 'clearCurrentColumn', 'setPendingRow', 'togglePendingRow', 'hasPendingByRow', 'isPendingByRow', 'getPendingRecords', 'clearPendingRow', 'sort', 'setSort', 'clearSort', 'clearSortByEvent', 'isSort', 'getSortColumns', 'closeFilter', 'isFilter', 'clearFilterByEvent', 'isActiveFilterByColumn', 'isRowExpandLoaded', 'clearRowExpandLoaded', 'reloadRowExpand', 'reloadRowExpand', 'toggleRowExpand', 'setAllRowExpand', 'setRowExpand', 'isExpandByRow', 'isRowExpandByRow', 'clearRowExpand', 'clearRowExpandReserve', 'getRowExpandRecords', 'getTreeExpandRecords', 'isTreeExpandLoaded', 'clearTreeExpandLoaded', 'reloadTreeExpand', 'reloadTreeChilds', 'toggleTreeExpand', 'setAllTreeExpand', 'setTreeExpand', 'isTreeExpandByRow', 'clearTreeExpand', 'clearTreeExpandReserve', 'getScroll', 'scrollTo', 'scrollToRow', 'scrollToColumn', 'clearScroll', 'updateFooter', 'updateStatus', 'setMergeCells', 'removeInsertRow', 'removeMergeCells', 'getMergeCells', 'clearMergeCells', 'setMergeFooterItems', 'removeMergeFooterItems', 'getMergeFooterItems', 'clearMergeFooterItems', 'getCustomStoreData', 'setRowGroupExpand', 'setAllRowGroupExpand', 'clearRowGroupExpand', 'isRowGroupExpandByRow', 'isRowGroupRecord', 'setRowGroups', 'clearRowGroups', 'openTooltip', 'moveColumnTo', 'moveRowTo', 'getCellLabel', 'getCellElement', 'focus', 'blur', 'connect'];
31
+ const tableComponentMethodKeys = ['clearAll', 'syncData', 'updateData', 'loadData', 'reloadData', 'reloadRow', 'loadColumn', 'reloadColumn', 'getRowNode', 'getColumnNode', 'getRowIndex', 'getVTRowIndex', 'getVMRowIndex', 'getColumnIndex', 'getVTColumnIndex', 'getVMColumnIndex', 'setRow', 'createData', 'createRow', 'revertData', 'clearData', 'isRemoveByRow', 'isInsertByRow', 'isUpdateByRow', 'getColumns', 'getColumnById', 'getColumnByField', 'getTableColumn', 'getFullColumns', 'getData', 'getCheckboxRecords', 'getParentRow', 'getTreeRowChildren', 'getTreeParentRow', 'getRowSeq', 'getRowById', 'getRowid', 'getTableData', 'getFullData', 'setColumnFixed', 'clearColumnFixed', 'setColumnWidth', 'getColumnWidth', 'setRowHeightConf', 'getRowHeightConf', 'setRowHeight', 'getRowHeight', 'hideColumn', 'showColumn', 'resetColumn', 'refreshColumn', 'refreshScroll', 'recalculate', 'closeTooltip', 'isAllCheckboxChecked', 'isAllCheckboxIndeterminate', 'getCheckboxIndeterminateRecords', 'setCheckboxRow', 'setCheckboxRowKey', 'isCheckedByCheckboxRow', 'isCheckedByCheckboxRowKey', 'isIndeterminateByCheckboxRow', 'isIndeterminateByCheckboxRowKey', 'toggleCheckboxRow', 'setAllCheckboxRow', 'getRadioReserveRecord', 'clearRadioReserve', 'getCheckboxReserveRecords', 'clearCheckboxReserve', 'toggleAllCheckboxRow', 'clearCheckboxRow', 'setCurrentRow', 'isCheckedByRadioRow', 'isCheckedByRadioRowKey', 'setRadioRow', 'setRadioRowKey', 'clearCurrentRow', 'clearRadioRow', 'getCurrentRecord', 'getRadioRecord', 'getCurrentColumn', 'setCurrentColumn', 'clearCurrentColumn', 'setPendingRow', 'togglePendingRow', 'hasPendingByRow', 'isPendingByRow', 'getPendingRecords', 'clearPendingRow', 'sort', 'setSort', 'clearSort', 'clearSortByEvent', 'isSort', 'getSortColumns', 'closeFilter', 'isFilter', 'clearFilterByEvent', 'isActiveFilterByColumn', 'isRowExpandLoaded', 'clearRowExpandLoaded', 'reloadRowExpand', 'reloadRowExpand', 'toggleRowExpand', 'setAllRowExpand', 'setRowExpand', 'isExpandByRow', 'isRowExpandByRow', 'clearRowExpand', 'clearRowExpandReserve', 'getRowExpandRecords', 'getTreeExpandRecords', 'isTreeExpandLoaded', 'clearTreeExpandLoaded', 'reloadTreeExpand', 'reloadTreeChilds', 'toggleTreeExpand', 'setAllTreeExpand', 'setTreeExpand', 'isTreeExpandByRow', 'clearTreeExpand', 'clearTreeExpandReserve', 'getScroll', 'scrollTo', 'scrollToRow', 'scrollToColumn', 'clearScroll', 'updateFooter', 'updateStatus', 'setMergeCells', 'removeInsertRow', 'removeMergeCells', 'getMergeCells', 'clearMergeCells', 'setMergeFooterItems', 'removeMergeFooterItems', 'getMergeFooterItems', 'clearMergeFooterItems', 'getCustomStoreData', 'setRowGroupExpand', 'setAllRowGroupExpand', 'clearRowGroupExpand', 'isRowGroupExpandByRow', 'isRowGroupRecord', 'isAggregateRecord', 'isAggregateExpandByRow', 'setRowGroups', 'clearRowGroups', 'openTooltip', 'moveColumnTo', 'moveRowTo', 'getCellLabel', 'getCellElement', 'focus', 'blur', 'connect'];
32
32
  const gridComponentEmits = [..._emits.default, 'page-change', 'form-submit', 'form-submit-invalid', 'form-reset', 'form-collapse', 'form-toggle-collapse', 'proxy-query', 'proxy-delete', 'proxy-save', 'toolbar-button-click', 'toolbar-tool-click', 'zoom'];
33
33
  var _default = exports.default = (0, _vue.defineComponent)({
34
34
  name: 'VxeGrid',