vxe-table 4.19.7 → 4.19.9

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 (35) hide show
  1. package/dist/all.esm.js +384 -73
  2. package/dist/style.css +1 -1
  3. package/es/grid/src/grid.js +1 -1
  4. package/es/style.css +1 -1
  5. package/es/table/render/index.js +153 -14
  6. package/es/table/src/table.js +210 -56
  7. package/es/table/src/util.js +19 -1
  8. package/es/ui/index.js +1 -1
  9. package/es/ui/src/log.js +1 -1
  10. package/lib/grid/src/grid.js +1 -1
  11. package/lib/grid/src/grid.min.js +1 -1
  12. package/lib/index.umd.js +315 -31
  13. package/lib/index.umd.min.js +1 -1
  14. package/lib/style.css +1 -1
  15. package/lib/table/render/index.js +259 -15
  16. package/lib/table/render/index.min.js +1 -1
  17. package/lib/table/src/table.js +31 -12
  18. package/lib/table/src/table.min.js +1 -1
  19. package/lib/table/src/util.js +20 -1
  20. package/lib/table/src/util.min.js +1 -1
  21. package/lib/ui/index.js +1 -1
  22. package/lib/ui/index.min.js +1 -1
  23. package/lib/ui/src/log.js +1 -1
  24. package/lib/ui/src/log.min.js +1 -1
  25. package/package.json +2 -2
  26. package/packages/grid/src/grid.ts +1 -1
  27. package/packages/table/render/index.ts +156 -15
  28. package/packages/table/src/table.ts +217 -58
  29. package/packages/table/src/util.ts +23 -1
  30. /package/es/{iconfont.1780638747281.ttf → iconfont.1780878117167.ttf} +0 -0
  31. /package/es/{iconfont.1780638747281.woff → iconfont.1780878117167.woff} +0 -0
  32. /package/es/{iconfont.1780638747281.woff2 → iconfont.1780878117167.woff2} +0 -0
  33. /package/lib/{iconfont.1780638747281.ttf → iconfont.1780878117167.ttf} +0 -0
  34. /package/lib/{iconfont.1780638747281.woff → iconfont.1780878117167.woff} +0 -0
  35. /package/lib/{iconfont.1780638747281.woff2 → iconfont.1780878117167.woff2} +0 -0
package/dist/all.esm.js CHANGED
@@ -44,7 +44,7 @@ function eqEmptyValue(cellValue) {
44
44
  return cellValue === '' || XEUtils.eqNull(cellValue);
45
45
  }
46
46
 
47
- const version$1 = "4.19.7";
47
+ const version$1 = "4.19.9";
48
48
  VxeUI.version = version$1;
49
49
  VxeUI.tableVersion = version$1;
50
50
  VxeUI.setConfig({
@@ -556,7 +556,7 @@ const modal = {
556
556
  const defineVxeComponent = defineComponent;
557
557
 
558
558
  const { log } = VxeUI;
559
- const version = `table v${"4.19.7"}`;
559
+ const version = `table v${"4.19.9"}`;
560
560
  const warnLog = log.create('warn', version);
561
561
  const errLog = log.create('error', version);
562
562
 
@@ -1019,6 +1019,8 @@ function createInternalData$3() {
1019
1019
  sourceDataRowIdData: {},
1020
1020
  fullColumnIdData: {},
1021
1021
  fullColumnFieldData: {},
1022
+ fullCellHeightMaps: {},
1023
+ fullCellStoreMaps: {},
1022
1024
  // 当前行
1023
1025
  currentRow: null,
1024
1026
  // 合并表头单元格的数据
@@ -1079,7 +1081,8 @@ function createInternalData$3() {
1079
1081
  inited: false,
1080
1082
  tooltipTimeout: null,
1081
1083
  initStatus: false,
1082
- isActivated: false
1084
+ isActivated: false,
1085
+ rceDelay: 0
1083
1086
  // _sToTime: null
1084
1087
  };
1085
1088
  }
@@ -1327,6 +1330,21 @@ function createReactData$2() {
1327
1330
  isColLoading: false
1328
1331
  };
1329
1332
  }
1333
+ const maxKey = '__max';
1334
+ function getRowMaxHeight(chRest, isForce) {
1335
+ if (isForce || !chRest[maxKey]) {
1336
+ let max = 0;
1337
+ for (const key in chRest) {
1338
+ const val = chRest[key];
1339
+ if (key !== maxKey && XEUtils.isNumber(val) && val > max) {
1340
+ max = val;
1341
+ }
1342
+ }
1343
+ chRest[maxKey] = max;
1344
+ return max;
1345
+ }
1346
+ return chRest[maxKey];
1347
+ }
1330
1348
  const getAllConvertColumns = (columns, parentColumn) => {
1331
1349
  const result = [];
1332
1350
  columns.forEach((column) => {
@@ -14212,7 +14230,24 @@ renderer$2.mixin({
14212
14230
  renderTableEdit: nativeSelectEditRender,
14213
14231
  renderTableDefault: nativeSelectEditRender,
14214
14232
  renderTableCell(renderOpts, params) {
14215
- return getCellLabelVNs(renderOpts, params, getSelectCellValue(renderOpts, params));
14233
+ const { options, optionGroups } = renderOpts;
14234
+ const { $table, row, column } = params;
14235
+ const opSize = options ? options.length : null;
14236
+ const ogSize = optionGroups ? optionGroups.length : null;
14237
+ const { cellResult } = $table.effectCellData(row, column, {
14238
+ key: 'render_table_cell',
14239
+ isChanged({ oldValue, cellValue }) {
14240
+ return oldValue && oldValue[0] === cellValue && oldValue[1] === opSize && oldValue[2] === ogSize;
14241
+ },
14242
+ setValue({ cellValue }) {
14243
+ return [cellValue, opSize, ogSize];
14244
+ },
14245
+ getResult({ cellValue }) {
14246
+ return handleSelectCellValue(cellValue, renderOpts);
14247
+ }
14248
+ });
14249
+ // const cellResult = getSelectCellValue(renderOpts, params)
14250
+ return getCellLabelVNs(renderOpts, params, cellResult);
14216
14251
  },
14217
14252
  createTableFilterOptions: defaultFilterOptions,
14218
14253
  renderTableFilter(renderOpts, params) {
@@ -14323,15 +14358,20 @@ renderer$2.mixin({
14323
14358
  tableAutoFocus: 'input',
14324
14359
  renderTableEdit: defaultEditRender,
14325
14360
  renderTableCell(renderOpts, params) {
14326
- const { props = {} } = renderOpts;
14327
- const { row, column } = params;
14328
- let cellValue = XEUtils.get(row, column.field);
14329
- if (cellValue) {
14330
- if (props.type !== 'time') {
14331
- cellValue = getLabelFormatDate(cellValue, props);
14361
+ const props = renderOpts.props || {};
14362
+ const { $table, row, column } = params;
14363
+ const { cellResult } = $table.effectCellData(row, column, {
14364
+ key: 'render_table_cell',
14365
+ getResult({ cellValue }) {
14366
+ if (cellValue) {
14367
+ if (props.type !== 'time') {
14368
+ return getLabelFormatDate(cellValue, props);
14369
+ }
14370
+ }
14371
+ return cellValue;
14332
14372
  }
14333
- }
14334
- return getCellLabelVNs(renderOpts, params, cellValue);
14373
+ });
14374
+ return getCellLabelVNs(renderOpts, params, cellResult);
14335
14375
  },
14336
14376
  tableCellFormatter: handleFormatDatePicker,
14337
14377
  renderTableDefault: defaultEditRender,
@@ -14379,6 +14419,37 @@ renderer$2.mixin({
14379
14419
  }, seOs)))
14380
14420
  ];
14381
14421
  },
14422
+ renderTableDefault(renderOpts, params) {
14423
+ const { startField, endField } = renderOpts;
14424
+ const { row, column } = params;
14425
+ const { model } = column;
14426
+ const cellValue = getCellValue(row, column);
14427
+ const seProps = {};
14428
+ const seOs = {};
14429
+ if (startField && endField) {
14430
+ seProps.startValue = XEUtils.get(row, startField);
14431
+ seProps.endValue = XEUtils.get(row, endField);
14432
+ seOs['onUpdate:startValue'] = (value) => {
14433
+ if (startField) {
14434
+ XEUtils.set(row, startField, value);
14435
+ }
14436
+ };
14437
+ seOs['onUpdate:endValue'] = (value) => {
14438
+ if (endField) {
14439
+ XEUtils.set(row, endField, value);
14440
+ }
14441
+ };
14442
+ }
14443
+ return [
14444
+ h(getDefaultComponent(renderOpts), Object.assign(Object.assign({}, getCellEditProps(renderOpts, params, cellValue, seProps)), getComponentOns(renderOpts, params, {
14445
+ model(cellValue) {
14446
+ model.update = true;
14447
+ model.value = cellValue;
14448
+ setCellValue(row, column, cellValue);
14449
+ }
14450
+ }, seOs)))
14451
+ ];
14452
+ },
14382
14453
  renderTableCell(renderOpts, params) {
14383
14454
  const { startField, endField } = renderOpts;
14384
14455
  const { row, column } = params;
@@ -14411,6 +14482,7 @@ renderer$2.mixin({
14411
14482
  },
14412
14483
  VxeTextarea: {
14413
14484
  tableAutoFocus: 'textarea',
14485
+ renderTableDefault: defaultEditRender,
14414
14486
  renderTableEdit: defaultEditRender,
14415
14487
  renderTableCell(renderOpts, params) {
14416
14488
  const { row, column } = params;
@@ -14434,7 +14506,24 @@ renderer$2.mixin({
14434
14506
  renderTableEdit: defaultSelectEditRender,
14435
14507
  renderTableDefault: defaultSelectEditRender,
14436
14508
  renderTableCell(renderOpts, params) {
14437
- return getCellLabelVNs(renderOpts, params, getSelectCellValue(renderOpts, params));
14509
+ const { options, optionGroups } = renderOpts;
14510
+ const { $table, row, column } = params;
14511
+ const opSize = options ? options.length : null;
14512
+ const ogSize = optionGroups ? optionGroups.length : null;
14513
+ const { cellResult } = $table.effectCellData(row, column, {
14514
+ key: 'render_table_cell',
14515
+ isChanged({ oldValue, cellValue }) {
14516
+ return oldValue && oldValue[0] === cellValue && oldValue[1] === opSize && oldValue[2] === ogSize;
14517
+ },
14518
+ setValue({ cellValue }) {
14519
+ return [cellValue, opSize, ogSize];
14520
+ },
14521
+ getResult({ cellValue }) {
14522
+ return handleSelectCellValue(cellValue, renderOpts);
14523
+ }
14524
+ });
14525
+ // const cellResult = getSelectCellValue(renderOpts, params)
14526
+ return getCellLabelVNs(renderOpts, params, cellResult);
14438
14527
  },
14439
14528
  createTableFilterOptions: defaultFilterOptions,
14440
14529
  renderTableFilter(renderOpts, params) {
@@ -14489,7 +14578,24 @@ renderer$2.mixin({
14489
14578
  },
14490
14579
  FormatSelect: {
14491
14580
  renderTableDefault(renderOpts, params) {
14492
- return getCellLabelVNs(renderOpts, params, getSelectCellValue(renderOpts, params));
14581
+ const { options, optionGroups } = renderOpts;
14582
+ const { $table, row, column } = params;
14583
+ const opSize = options ? options.length : null;
14584
+ const ogSize = optionGroups ? optionGroups.length : null;
14585
+ const { cellResult } = $table.effectCellData(row, column, {
14586
+ key: 'render_table_cell',
14587
+ isChanged({ oldValue, cellValue }) {
14588
+ return oldValue && oldValue[0] === cellValue && oldValue[1] === opSize && oldValue[2] === ogSize;
14589
+ },
14590
+ setValue({ cellValue }) {
14591
+ return [cellValue, opSize, ogSize];
14592
+ },
14593
+ getResult({ cellValue }) {
14594
+ return handleSelectCellValue(cellValue, renderOpts);
14595
+ }
14596
+ });
14597
+ // const cellResult = getSelectCellValue(renderOpts, params)
14598
+ return getCellLabelVNs(renderOpts, params, cellResult);
14493
14599
  },
14494
14600
  tableCellFormatter: handleFormatSelect,
14495
14601
  tableCellCopyMethod: handleFormatSelect,
@@ -14501,7 +14607,24 @@ renderer$2.mixin({
14501
14607
  tableAutoFocus: 'input',
14502
14608
  renderTableEdit: defaultTableOrTreeSelectEditRender,
14503
14609
  renderTableCell(renderOpts, params) {
14504
- return getCellLabelVNs(renderOpts, params, getTreeSelectCellValue(renderOpts, params));
14610
+ const { options, optionGroups } = renderOpts;
14611
+ const { $table, row, column } = params;
14612
+ const opSize = options ? options.length : null;
14613
+ const ogSize = optionGroups ? optionGroups.length : null;
14614
+ const { cellResult } = $table.effectCellData(row, column, {
14615
+ key: 'render_table_cell',
14616
+ isChanged({ oldValue, cellValue }) {
14617
+ return oldValue && oldValue[0] === cellValue && oldValue[1] === opSize && oldValue[2] === ogSize;
14618
+ },
14619
+ setValue({ cellValue }) {
14620
+ return [cellValue, opSize, ogSize];
14621
+ },
14622
+ getResult({ cellValue }) {
14623
+ return handleTreeSelectCellValue(cellValue, renderOpts);
14624
+ }
14625
+ });
14626
+ // const cellResult = getTreeSelectCellValue(renderOpts, params)
14627
+ return getCellLabelVNs(renderOpts, params, cellResult);
14505
14628
  },
14506
14629
  tableCellFormatter: handleFormatTreeSelect,
14507
14630
  tableCellCopyMethod: handleFormatTreeSelect,
@@ -14519,7 +14642,24 @@ renderer$2.mixin({
14519
14642
  },
14520
14643
  FormatTreeSelect: {
14521
14644
  renderTableDefault(renderOpts, params) {
14522
- return getCellLabelVNs(renderOpts, params, getTreeSelectCellValue(renderOpts, params));
14645
+ const { options, optionGroups } = renderOpts;
14646
+ const { $table, row, column } = params;
14647
+ const opSize = options ? options.length : null;
14648
+ const ogSize = optionGroups ? optionGroups.length : null;
14649
+ const { cellResult } = $table.effectCellData(row, column, {
14650
+ key: 'render_table_cell',
14651
+ isChanged({ oldValue, cellValue }) {
14652
+ return oldValue && oldValue[0] === cellValue && oldValue[1] === opSize && oldValue[2] === ogSize;
14653
+ },
14654
+ setValue({ cellValue }) {
14655
+ return [cellValue, opSize, ogSize];
14656
+ },
14657
+ getResult({ cellValue }) {
14658
+ return handleTreeSelectCellValue(cellValue, renderOpts);
14659
+ }
14660
+ });
14661
+ // const cellResult = getTreeSelectCellValue(renderOpts, params)
14662
+ return getCellLabelVNs(renderOpts, params, cellResult);
14523
14663
  },
14524
14664
  tableCellFormatter: handleFormatTreeSelect,
14525
14665
  tableCellCopyMethod: handleFormatTreeSelect,
@@ -14530,7 +14670,24 @@ renderer$2.mixin({
14530
14670
  tableAutoFocus: 'input',
14531
14671
  renderTableEdit: defaultTableOrTreeSelectEditRender,
14532
14672
  renderTableCell(renderOpts, params) {
14533
- return getCellLabelVNs(renderOpts, params, getTreeSelectCellValue(renderOpts, params));
14673
+ const { options, optionGroups } = renderOpts;
14674
+ const { $table, row, column } = params;
14675
+ const opSize = options ? options.length : null;
14676
+ const ogSize = optionGroups ? optionGroups.length : null;
14677
+ const { cellResult } = $table.effectCellData(row, column, {
14678
+ key: 'render_table_cell',
14679
+ isChanged({ oldValue, cellValue }) {
14680
+ return oldValue && oldValue[0] === cellValue && oldValue[1] === opSize && oldValue[2] === ogSize;
14681
+ },
14682
+ setValue({ cellValue }) {
14683
+ return [cellValue, opSize, ogSize];
14684
+ },
14685
+ getResult({ cellValue }) {
14686
+ return handleTreeSelectCellValue(cellValue, renderOpts);
14687
+ }
14688
+ });
14689
+ // const cellResult = getTreeSelectCellValue(renderOpts, params)
14690
+ return getCellLabelVNs(renderOpts, params, cellResult);
14534
14691
  },
14535
14692
  tableCellFormatter: handleFormatTreeSelect,
14536
14693
  tableCellCopyMethod: handleFormatTreeSelect,
@@ -16624,34 +16781,38 @@ var VxeTableComponent = defineVxeComponent({
16624
16781
  /**
16625
16782
  * 计算自适应行高
16626
16783
  */
16627
- const calcCellAutoHeight = (rowRest, wrapperEl) => {
16628
- const { scrollXLoad } = reactData;
16784
+ const calcCellAutoHeight = (rowid, rowRest, wrapperEl) => {
16785
+ const { fullCellHeightMaps } = internalData;
16786
+ let chRest = fullCellHeightMaps[rowid];
16787
+ if (!chRest) {
16788
+ chRest = {};
16789
+ fullCellHeightMaps[rowid] = chRest;
16790
+ }
16629
16791
  const wrapperElemList = wrapperEl.querySelectorAll(`.vxe-cell--wrapper[rowid="${rowRest.rowid}"]`);
16630
- let colHeight = 0;
16631
16792
  let firstCellStyle = null;
16632
16793
  let topBottomPadding = 0;
16794
+ let changeCH = false;
16633
16795
  for (let i = 0; i < wrapperElemList.length; i++) {
16634
16796
  const wrapperElem = wrapperElemList[i];
16635
16797
  const cellElem = wrapperElem.parentElement;
16636
16798
  const cellStyle = cellElem.style;
16637
16799
  const orHeight = cellStyle.height;
16638
- if (!scrollXLoad) {
16639
- cellStyle.height = '';
16640
- }
16800
+ const colid = wrapperElem.getAttribute('colid') || '';
16801
+ cellStyle.height = '';
16641
16802
  if (!firstCellStyle) {
16642
16803
  firstCellStyle = getComputedStyle(cellElem);
16643
16804
  topBottomPadding = firstCellStyle ? Math.ceil(XEUtils.toNumber(firstCellStyle.paddingTop) + XEUtils.toNumber(firstCellStyle.paddingBottom)) : 0;
16644
16805
  }
16645
- if (!scrollXLoad) {
16646
- cellStyle.height = orHeight;
16647
- }
16648
16806
  const cellHeight = wrapperElem ? wrapperElem.clientHeight : 0;
16649
- colHeight = Math.max(colHeight, Math.ceil(cellHeight + topBottomPadding));
16650
- }
16651
- if (scrollXLoad) {
16652
- colHeight = Math.max(colHeight, rowRest.height);
16807
+ const colHeight = Math.ceil(cellHeight + topBottomPadding);
16808
+ if (chRest[colid] !== colHeight) {
16809
+ changeCH = true;
16810
+ chRest[colid] = colHeight;
16811
+ }
16812
+ cellStyle.height = orHeight;
16653
16813
  }
16654
- return colHeight;
16814
+ const cellMaxHeight = getRowMaxHeight(chRest, changeCH);
16815
+ return cellMaxHeight;
16655
16816
  };
16656
16817
  /**
16657
16818
  * 自适应行高
@@ -16673,7 +16834,7 @@ var VxeTableComponent = defineVxeComponent({
16673
16834
  const rowid = handleGetRowId(row);
16674
16835
  const rowRest = fullAllDataRowIdData[rowid];
16675
16836
  if (rowRest) {
16676
- const reHeight = calcCellAutoHeight(rowRest, el);
16837
+ const reHeight = calcCellAutoHeight(rowid, rowRest, el);
16677
16838
  rowRest.height = Math.max(defaultRowHeight, reHeight);
16678
16839
  }
16679
16840
  el.removeAttribute('data-calc-row');
@@ -17943,7 +18104,6 @@ var VxeTableComponent = defineVxeComponent({
17943
18104
  };
17944
18105
  const handleRecalculateStyle = (reFull, reWidth, reHeight) => {
17945
18106
  const el = refElem.value;
17946
- internalData.rceRunTime = Date.now();
17947
18107
  if (!el || !el.clientWidth) {
17948
18108
  return nextTick();
17949
18109
  }
@@ -17967,6 +18127,7 @@ var VxeTableComponent = defineVxeComponent({
17967
18127
  if (reFull) {
17968
18128
  updateTreeLineStyle();
17969
18129
  }
18130
+ internalData.rceRunTime = Date.now();
17970
18131
  return computeScrollLoad().then(() => {
17971
18132
  // 初始化时需要在列计算之后再执行优化运算,达到最优显示效果
17972
18133
  if (reWidth) {
@@ -17987,18 +18148,30 @@ var VxeTableComponent = defineVxeComponent({
17987
18148
  if (reFull) {
17988
18149
  updateTreeLineStyle();
17989
18150
  }
18151
+ internalData.rceRunTime = Date.now();
17990
18152
  if (reFull) {
17991
18153
  return computeScrollLoad();
17992
18154
  }
17993
18155
  });
17994
18156
  };
18157
+ const minRunDelay = 50;
17995
18158
  const handleLazyRecalculate = (reFull, reWidth, reHeight) => {
17996
18159
  return new Promise(resolve => {
17997
18160
  const $xeGanttView = internalData.xeGanttView;
17998
18161
  const { customStore } = reactData;
17999
18162
  const { rceTimeout, rceRunTime } = internalData;
18000
18163
  const resizeOpts = computeResizeOpts.value;
18001
- const refreshDelay = resizeOpts.refreshDelay || 20;
18164
+ let rceDelay = internalData.rceDelay;
18165
+ // 如果在500毫秒内频繁执行,则执行次数减缓
18166
+ if (rceRunTime && rceRunTime > Date.now() - 500) {
18167
+ rceDelay += 50;
18168
+ }
18169
+ else {
18170
+ rceDelay = 0;
18171
+ }
18172
+ internalData.rceDelay = rceDelay;
18173
+ const refreshDelay = resizeOpts.refreshDelay || 30;
18174
+ const reDelay = rceDelay + refreshDelay;
18002
18175
  const el = refElem.value;
18003
18176
  if (el && el.clientWidth) {
18004
18177
  autoCellWidth();
@@ -18009,7 +18182,7 @@ var VxeTableComponent = defineVxeComponent({
18009
18182
  }
18010
18183
  if (rceTimeout) {
18011
18184
  clearTimeout(rceTimeout);
18012
- if (rceRunTime && rceRunTime + (refreshDelay - 5) < Date.now()) {
18185
+ if (rceRunTime && rceRunTime + minRunDelay < Date.now()) {
18013
18186
  resolve(handleRecalculateStyle(reFull, reWidth, reHeight));
18014
18187
  }
18015
18188
  else {
@@ -18027,11 +18200,23 @@ var VxeTableComponent = defineVxeComponent({
18027
18200
  internalData.rceTimeout = setTimeout(() => {
18028
18201
  internalData.rceTimeout = undefined;
18029
18202
  handleRecalculateStyle(reFull, reWidth, reHeight);
18030
- }, refreshDelay);
18203
+ if ($xeGanttView && $xeGanttView.handleLazyRecalculate) {
18204
+ $xeGanttView.handleLazyRecalculate();
18205
+ }
18206
+ }, reDelay);
18031
18207
  });
18032
18208
  };
18209
+ let resizePending = false;
18033
18210
  const handleResizeEvent = () => {
18034
- handleLazyRecalculate(true, true, true);
18211
+ if (resizePending) {
18212
+ return;
18213
+ }
18214
+ resizePending = true;
18215
+ handleLazyRecalculate(true, true, true).then(() => {
18216
+ resizePending = false;
18217
+ }).catch(() => {
18218
+ resizePending = false;
18219
+ });
18035
18220
  };
18036
18221
  const handleUpdateAggValues = () => {
18037
18222
  const { visibleColumn } = internalData;
@@ -18375,6 +18560,8 @@ var VxeTableComponent = defineVxeComponent({
18375
18560
  reactData.insertRowFlag++;
18376
18561
  internalData.removeRowMaps = {};
18377
18562
  reactData.removeRowFlag++;
18563
+ internalData.fullCellHeightMaps = {};
18564
+ internalData.fullCellStoreMaps = {};
18378
18565
  const sYLoad = updateScrollYStatus(fullData);
18379
18566
  // 全量数据
18380
18567
  internalData.tableFullData = fullData;
@@ -18735,8 +18922,42 @@ var VxeTableComponent = defineVxeComponent({
18735
18922
  internalData.fullColumnIdData = fullColIdData;
18736
18923
  internalData.fullColumnFieldData = fullColFieldData;
18737
18924
  };
18738
- const handleInitColumn = (collectColumn) => {
18925
+ const buildColumnInfo = () => {
18926
+ const { scrollXLoad, scrollYLoad, expandColumn } = reactData;
18739
18927
  const expandOpts = computeExpandOpts.value;
18928
+ cacheColumnMap();
18929
+ parseColumns(true).then(() => {
18930
+ if (reactData.scrollXLoad) {
18931
+ loadScrollXData();
18932
+ }
18933
+ });
18934
+ $xeTable.clearHeaderFormatterCache();
18935
+ $xeTable.clearMergeCells();
18936
+ $xeTable.clearMergeFooterItems();
18937
+ $xeTable.handleTableData(true);
18938
+ $xeTable.handleAggregateSummaryData();
18939
+ if ((scrollXLoad || scrollYLoad) && (expandColumn && expandOpts.mode !== 'fixed')) {
18940
+ warnLog('vxe.error.scrollErrProp', ['column.type=expand']);
18941
+ }
18942
+ return nextTick().then(() => {
18943
+ if ($xeToolbar) {
18944
+ $xeToolbar.syncUpdate({
18945
+ collectColumn: internalData.collectColumn,
18946
+ $table: $xeTable
18947
+ });
18948
+ }
18949
+ if ($xeTable.handleUpdateCustomColumn) {
18950
+ $xeTable.handleUpdateCustomColumn();
18951
+ }
18952
+ const columnOpts = computeColumnOpts.value;
18953
+ if (props.showCustomHeader && reactData.isGroup && (columnOpts.resizable || props.resizable)) {
18954
+ warnLog('vxe.error.notConflictProp', ['show-custom-header & colgroup', 'column-config.resizable=false']);
18955
+ }
18956
+ reactData.isColLoading = false;
18957
+ return handleLazyRecalculate(false, true, true);
18958
+ });
18959
+ };
18960
+ const handleInitColumn = (collectColumn) => {
18740
18961
  internalData.collectColumn = collectColumn;
18741
18962
  const tFullColumn = getColumnList(collectColumn);
18742
18963
  internalData.tableFullColumn = tFullColumn;
@@ -18744,38 +18965,7 @@ var VxeTableComponent = defineVxeComponent({
18744
18965
  reactData.isColLoading = true;
18745
18966
  initColumnHierarchy();
18746
18967
  return Promise.resolve(restoreCustomStorage()).then(() => {
18747
- const { scrollXLoad, scrollYLoad, expandColumn } = reactData;
18748
- cacheColumnMap();
18749
- parseColumns(true).then(() => {
18750
- if (reactData.scrollXLoad) {
18751
- loadScrollXData();
18752
- }
18753
- });
18754
- $xeTable.clearHeaderFormatterCache();
18755
- $xeTable.clearMergeCells();
18756
- $xeTable.clearMergeFooterItems();
18757
- $xeTable.handleTableData(true);
18758
- $xeTable.handleAggregateSummaryData();
18759
- if ((scrollXLoad || scrollYLoad) && (expandColumn && expandOpts.mode !== 'fixed')) {
18760
- warnLog('vxe.error.scrollErrProp', ['column.type=expand']);
18761
- }
18762
- return nextTick().then(() => {
18763
- if ($xeToolbar) {
18764
- $xeToolbar.syncUpdate({
18765
- collectColumn: internalData.collectColumn,
18766
- $table: $xeTable
18767
- });
18768
- }
18769
- if ($xeTable.handleUpdateCustomColumn) {
18770
- $xeTable.handleUpdateCustomColumn();
18771
- }
18772
- const columnOpts = computeColumnOpts.value;
18773
- if (props.showCustomHeader && reactData.isGroup && (columnOpts.resizable || props.resizable)) {
18774
- warnLog('vxe.error.notConflictProp', ['show-custom-header & colgroup', 'column-config.resizable=false']);
18775
- }
18776
- reactData.isColLoading = false;
18777
- return handleLazyRecalculate(false, true, true);
18778
- });
18968
+ return buildColumnInfo();
18779
18969
  });
18780
18970
  };
18781
18971
  const updateScrollXStatus = (fullColumn) => {
@@ -19864,6 +20054,56 @@ var VxeTableComponent = defineVxeComponent({
19864
20054
  }
19865
20055
  return nextTick();
19866
20056
  },
20057
+ effectCellData(row, column, options) {
20058
+ const { fullCellStoreMaps } = internalData;
20059
+ const editOpts = computeEditOpts.value;
20060
+ const { key, isChanged, setValue, getResult } = options;
20061
+ const rowid = getRowid($xeTable, row);
20062
+ const colid = column.id;
20063
+ let rowStore = fullCellStoreMaps[rowid];
20064
+ const cellValue = XEUtils.get(row, column.field);
20065
+ const restParams = {
20066
+ $table: $xeTable,
20067
+ row,
20068
+ rowid,
20069
+ column,
20070
+ colid,
20071
+ cellValue,
20072
+ oldValue: null
20073
+ };
20074
+ if (editOpts.cache === false && key === 'render_table_cell') {
20075
+ const rest = restParams;
20076
+ rest.cellResult = getResult ? getResult(restParams) : cellValue;
20077
+ return rest;
20078
+ }
20079
+ if (!rowStore) {
20080
+ rowStore = {};
20081
+ fullCellStoreMaps[rowid] = rowStore;
20082
+ }
20083
+ let cellStore = rowStore[colid];
20084
+ if (!cellStore) {
20085
+ cellStore = {
20086
+ value: undefined,
20087
+ result: {}
20088
+ };
20089
+ rowStore[colid] = cellStore;
20090
+ }
20091
+ const restData = rowStore[colid];
20092
+ const oldValue = restData.value;
20093
+ restParams.oldValue = oldValue;
20094
+ if (isChanged ? !isChanged(restParams) : oldValue !== cellValue) {
20095
+ restData.value = setValue ? setValue(restParams) : cellValue;
20096
+ restData.result = {};
20097
+ }
20098
+ const storeData = restData.result;
20099
+ if (XEUtils.isUndefined(storeData[key])) {
20100
+ storeData[key] = getResult ? getResult(restParams) : cellValue;
20101
+ }
20102
+ const cellResult = storeData[key];
20103
+ const rest = restParams;
20104
+ rest.cellResult = cellResult;
20105
+ return rest;
20106
+ },
19867
20107
  getCellElement(row, fieldOrColumn) {
19868
20108
  const { elemStore } = internalData;
19869
20109
  const column = handleFieldOrColumn($xeTable, fieldOrColumn);
@@ -20712,7 +20952,7 @@ var VxeTableComponent = defineVxeComponent({
20712
20952
  const rowid = XEUtils.isString(row) || XEUtils.isNumber(row) ? row : handleGetRowId(row);
20713
20953
  const rowRest = fullAllDataRowIdData[rowid];
20714
20954
  if (rowRest) {
20715
- rowRest.resizeHeight = calcCellAutoHeight(rowRest, el);
20955
+ rowRest.resizeHeight = calcCellAutoHeight(rowid, rowRest, el);
20716
20956
  }
20717
20957
  el.removeAttribute('data-calc-row');
20718
20958
  });
@@ -22466,6 +22706,65 @@ var VxeTableComponent = defineVxeComponent({
22466
22706
  clearHistory() {
22467
22707
  return $xeTable.handleClearStack();
22468
22708
  },
22709
+ /**
22710
+ * 用于 custom-config,用于手动恢复自定义列设置信息,恢复表格重置为初始状态
22711
+ * @param storeData
22712
+ * @returns
22713
+ */
22714
+ setCustomStoreData(storeData) {
22715
+ if (!storeData) {
22716
+ return nextTick();
22717
+ }
22718
+ const customOpts = computeCustomOpts.value;
22719
+ const { checkMethod } = customOpts;
22720
+ // 重置状态
22721
+ clearTableAllStatus($xeTable);
22722
+ // 恢复列
22723
+ const allCols = [];
22724
+ XEUtils.eachTree(internalData.collectColumn, (column) => {
22725
+ column.resizeWidth = 0;
22726
+ column.fixed = column.defaultFixed;
22727
+ column.renderSortNumber = column.sortNumber;
22728
+ column.parentId = column.defaultParentId;
22729
+ if (!checkMethod || checkMethod({ $table: $xeTable, column })) {
22730
+ column.visible = column.defaultVisible;
22731
+ }
22732
+ column.aggFunc = column.defaultAggFunc;
22733
+ column.renderAggFn = column.defaultAggFunc;
22734
+ column.renderResizeWidth = column.renderWidth;
22735
+ allCols.push(column);
22736
+ });
22737
+ const newCollectCols = XEUtils.toArrayTree(XEUtils.orderBy(allCols, 'renderSortNumber'), { key: 'id', parentKey: 'parentId', children: 'children' });
22738
+ internalData.collectColumn = newCollectCols;
22739
+ internalData.tableFullColumn = getColumnList(newCollectCols);
22740
+ reactData.updateColFlag++;
22741
+ reactData.isColLoading = true;
22742
+ initColumnHierarchy();
22743
+ return Promise.resolve(handleCustomRestore(storeData)).then(() => {
22744
+ return buildColumnInfo();
22745
+ }).then(() => {
22746
+ // 恢复数据聚合分组
22747
+ const { isRowGroupStatus, rowGroupList } = reactData;
22748
+ if (isRowGroupStatus && !!$xeTable.handlePivotTableAggData) {
22749
+ const rowGroupFields = computeRowGroupFields.value;
22750
+ if (rowGroupFields ? rowGroupFields.length : rowGroupList.length) {
22751
+ if (rowGroupFields && rowGroupFields.length) {
22752
+ $xeTable.setRowGroups(rowGroupFields);
22753
+ }
22754
+ else {
22755
+ $xeTable.clearRowGroups();
22756
+ }
22757
+ }
22758
+ else {
22759
+ $xeTable.handleUpdateAggData();
22760
+ }
22761
+ }
22762
+ });
22763
+ },
22764
+ /**
22765
+ * 用于 custom-config,用于获取自定义列设置信息,用于自定义保持
22766
+ * @returns
22767
+ */
22469
22768
  getCustomStoreData() {
22470
22769
  const { id } = props;
22471
22770
  const customOpts = computeCustomOpts.value;
@@ -24235,6 +24534,9 @@ var VxeTableComponent = defineVxeComponent({
24235
24534
  }
24236
24535
  }
24237
24536
  },
24537
+ /**
24538
+ * @private
24539
+ */
24238
24540
  handleRowResizeMousedownEvent(evnt, params) {
24239
24541
  evnt.stopPropagation();
24240
24542
  evnt.preventDefault();
@@ -24351,6 +24653,9 @@ var VxeTableComponent = defineVxeComponent({
24351
24653
  };
24352
24654
  updateEvent(evnt);
24353
24655
  },
24656
+ /**
24657
+ * @private
24658
+ */
24354
24659
  handleRowResizeDblclickEvent(evnt, params) {
24355
24660
  const resizableOpts = computeResizableOpts.value;
24356
24661
  const { isDblclickAutoHeight } = resizableOpts;
@@ -24369,7 +24674,7 @@ var VxeTableComponent = defineVxeComponent({
24369
24674
  }
24370
24675
  const handleRsHeight = () => {
24371
24676
  el.setAttribute('data-calc-row', 'Y');
24372
- const resizeHeight = calcCellAutoHeight(rowRest, el);
24677
+ const resizeHeight = calcCellAutoHeight(rowid, rowRest, el);
24373
24678
  el.removeAttribute('data-calc-row');
24374
24679
  const resizeParams = Object.assign(Object.assign({}, params), { resizeHeight, resizeRow: row });
24375
24680
  reactData.isDragResize = false;
@@ -24390,6 +24695,9 @@ var VxeTableComponent = defineVxeComponent({
24390
24695
  }
24391
24696
  }
24392
24697
  },
24698
+ /**
24699
+ * @private
24700
+ */
24393
24701
  saveCustomStore(type) {
24394
24702
  const { customConfig } = props;
24395
24703
  const tableId = computeTableId.value;
@@ -24436,6 +24744,9 @@ var VxeTableComponent = defineVxeComponent({
24436
24744
  }
24437
24745
  return nextTick();
24438
24746
  },
24747
+ /**
24748
+ * @private
24749
+ */
24439
24750
  handleCustom() {
24440
24751
  const { mouseConfig } = props;
24441
24752
  if (mouseConfig) {
@@ -29526,7 +29837,7 @@ var VxeToolbarComponent = defineVxeComponent({
29526
29837
 
29527
29838
  const { getConfig, getI18n, commands, hooks, useFns, createEvent, globalEvents, GLOBAL_EVENT_KEYS, renderEmptyElement } = VxeUI;
29528
29839
  const tableComponentPropKeys = Object.keys(tableProps);
29529
- 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', 'getTreeRowLevel', 'getTreeParentRow', 'getRowSeq', 'getRowById', 'getRowid', 'getTableData', 'getFullData', 'setColumnFixed', 'clearColumnFixed', 'setColumnWidth', 'getColumnWidth', 'recalcRowHeight', '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', 'setFilterByEvent', 'sort', 'setSort', 'setSortByEvent', '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', 'getScrollData', 'scrollTo', 'scrollToStartRow', 'scrollToEndRow', 'scrollToRow', 'scrollToStartColumn', 'scrollToEndColumn', 'scrollToColumn', 'clearScroll', 'updateFooter', 'updateStatus', 'setMergeCells', 'removeInsertRow', 'removeMergeCells', 'getMergeCells', 'setMergeHeaderCells', 'removeMergeHeaderCells', 'getMergeHeaderCells', 'clearMergeHeaderCells', 'clearMergeCells', 'setMergeFooterItems', 'removeMergeFooterItems', 'getMergeFooterItems', 'clearMergeFooterItems', 'getCustomStoreData', 'setRowGroupExpand', 'setRowGroupExpandByField', 'setAllRowGroupExpand', 'clearRowGroupExpand', 'isRowGroupExpandByRow', 'isRowGroupRecord', 'isAggregateRecord', 'isAggregateExpandByRow', 'getAggregateContentByRow', 'getAggregateRowChildren', 'setRowGroups', 'clearRowGroups', 'openTooltip', 'moveColumnTo', 'moveRowTo', 'getCellLabel', 'updateCellLabel', 'clearFormatterCache', 'getFooterCellLabel', 'updateFooterCellLabel', 'clearFooterFormatterCache', 'undo', 'redo', 'getCellElement', 'focus', 'blur', 'connect', 'connectToolbar'];
29840
+ 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', 'getTreeRowLevel', 'getTreeParentRow', 'getRowSeq', 'getRowById', 'getRowid', 'getTableData', 'getFullData', 'setColumnFixed', 'clearColumnFixed', 'setColumnWidth', 'getColumnWidth', 'recalcRowHeight', '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', 'setFilterByEvent', 'sort', 'setSort', 'setSortByEvent', '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', 'getScrollData', 'scrollTo', 'scrollToStartRow', 'scrollToEndRow', 'scrollToRow', 'scrollToStartColumn', 'scrollToEndColumn', 'scrollToColumn', 'clearScroll', 'updateFooter', 'updateStatus', 'setMergeCells', 'removeInsertRow', 'removeMergeCells', 'getMergeCells', 'setMergeHeaderCells', 'removeMergeHeaderCells', 'getMergeHeaderCells', 'clearMergeHeaderCells', 'clearMergeCells', 'setMergeFooterItems', 'removeMergeFooterItems', 'getMergeFooterItems', 'clearMergeFooterItems', 'setCustomStoreData', 'getCustomStoreData', 'setRowGroupExpand', 'setRowGroupExpandByField', 'setAllRowGroupExpand', 'clearRowGroupExpand', 'isRowGroupExpandByRow', 'isRowGroupRecord', 'isAggregateRecord', 'isAggregateExpandByRow', 'getAggregateContentByRow', 'getAggregateRowChildren', 'setRowGroups', 'clearRowGroups', 'openTooltip', 'moveColumnTo', 'moveRowTo', 'getCellLabel', 'updateCellLabel', 'clearFormatterCache', 'getFooterCellLabel', 'updateFooterCellLabel', 'clearFooterFormatterCache', 'undo', 'redo', 'effectCellData', 'getCellElement', 'focus', 'blur', 'connect', 'connectToolbar'];
29530
29841
  function createReactData() {
29531
29842
  var _a;
29532
29843
  return {