vxe-table 3.12.15 → 3.12.17

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 (48) hide show
  1. package/es/index.css +1 -1
  2. package/es/index.min.css +1 -1
  3. package/es/style.css +1 -1
  4. package/es/style.min.css +1 -1
  5. package/es/table/module/edit/mixin.js +224 -158
  6. package/es/table/src/body.js +60 -47
  7. package/es/table/src/methods.js +166 -36
  8. package/es/table/src/table.js +101 -23
  9. package/es/table/style.css +26 -0
  10. package/es/table/style.min.css +1 -1
  11. package/es/ui/index.js +1 -1
  12. package/es/ui/src/log.js +1 -1
  13. package/es/vxe-table/style.css +26 -0
  14. package/es/vxe-table/style.min.css +1 -1
  15. package/lib/index.css +1 -1
  16. package/lib/index.min.css +1 -1
  17. package/lib/index.umd.js +730 -391
  18. package/lib/index.umd.min.js +1 -1
  19. package/lib/style.css +1 -1
  20. package/lib/style.min.css +1 -1
  21. package/lib/table/module/edit/mixin.js +278 -215
  22. package/lib/table/module/edit/mixin.min.js +1 -1
  23. package/lib/table/src/body.js +71 -59
  24. package/lib/table/src/body.min.js +1 -1
  25. package/lib/table/src/methods.js +199 -37
  26. package/lib/table/src/methods.min.js +1 -1
  27. package/lib/table/src/table.js +126 -24
  28. package/lib/table/src/table.min.js +1 -1
  29. package/lib/table/style/style.css +26 -0
  30. package/lib/table/style/style.min.css +1 -1
  31. package/lib/ui/index.js +1 -1
  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/lib/vxe-table/style/style.css +26 -0
  36. package/lib/vxe-table/style/style.min.css +1 -1
  37. package/package.json +1 -1
  38. package/packages/table/module/edit/mixin.ts +242 -159
  39. package/packages/table/src/body.ts +62 -48
  40. package/packages/table/src/methods.ts +170 -36
  41. package/packages/table/src/table.ts +108 -24
  42. package/styles/components/table.scss +26 -0
  43. /package/es/{iconfont.1739257460253.ttf → iconfont.1739428244406.ttf} +0 -0
  44. /package/es/{iconfont.1739257460253.woff → iconfont.1739428244406.woff} +0 -0
  45. /package/es/{iconfont.1739257460253.woff2 → iconfont.1739428244406.woff2} +0 -0
  46. /package/lib/{iconfont.1739257460253.ttf → iconfont.1739428244406.ttf} +0 -0
  47. /package/lib/{iconfont.1739257460253.woff → iconfont.1739428244406.woff} +0 -0
  48. /package/lib/{iconfont.1739257460253.woff2 → iconfont.1739428244406.woff2} +0 -0
package/lib/index.umd.js CHANGED
@@ -2220,7 +2220,7 @@ function getClass(property, params) {
2220
2220
  ;// CONCATENATED MODULE: ./packages/ui/index.ts
2221
2221
 
2222
2222
 
2223
- const version = "3.12.15";
2223
+ const version = "3.12.17";
2224
2224
  core_.VxeUI.version = version;
2225
2225
  core_.VxeUI.tableVersion = version;
2226
2226
  core_.VxeUI.setConfig({
@@ -2842,7 +2842,7 @@ function isNodeElement(elem) {
2842
2842
  const {
2843
2843
  log: log_log
2844
2844
  } = core_.VxeUI;
2845
- const log_version = `table v${"3.12.15"}`;
2845
+ const log_version = `table v${"3.12.17"}`;
2846
2846
  const warnLog = log_log.create('warn', log_version);
2847
2847
  const errLog = log_log.create('error', log_version);
2848
2848
  ;// CONCATENATED MODULE: ./packages/table/src/columnInfo.ts
@@ -5450,7 +5450,8 @@ function updateAfterListIndex($xeTable) {
5450
5450
  level: 0,
5451
5451
  height: 0,
5452
5452
  resizeHeight: 0,
5453
- oTop: 0
5453
+ oTop: 0,
5454
+ expandHeight: 0
5454
5455
  };
5455
5456
  fullAllDataRowIdData[rowid] = rest;
5456
5457
  fullDataRowIdData[rowid] = rest;
@@ -5502,7 +5503,8 @@ function updateAfterDataIndex($xeTable) {
5502
5503
  level: 0,
5503
5504
  height: 0,
5504
5505
  resizeHeight: 0,
5505
- oTop: 0
5506
+ oTop: 0,
5507
+ expandHeight: 0
5506
5508
  };
5507
5509
  fullAllDataRowIdData[rowid] = rest;
5508
5510
  fullDataRowIdData[rowid] = rest;
@@ -5608,6 +5610,7 @@ function updateStyle($xeTable) {
5608
5610
  const emptyPlaceholderElem = $xeTable.$refs.refEmptyPlaceholder;
5609
5611
  const cellOffsetWidth = $xeTable.computeCellOffsetWidth;
5610
5612
  const mouseOpts = $xeTable.computeMouseOpts;
5613
+ const expandOpts = $xeTable.computeExpandOpts;
5611
5614
  const bodyWrapperElem = getRefElem(elemStore['main-body-wrapper']);
5612
5615
  const bodyTableElem = getRefElem(elemStore['main-body-table']);
5613
5616
  if (emptyPlaceholderElem) {
@@ -5677,6 +5680,11 @@ function updateStyle($xeTable) {
5677
5680
  yBottomCornerEl.style.top = `${headerHeight + bodyHeight}px`;
5678
5681
  yBottomCornerEl.style.display = footerHeight ? 'block' : '';
5679
5682
  }
5683
+ const rowExpandEl = $xeTable.$refs.refRowExpandElem;
5684
+ if (rowExpandEl) {
5685
+ rowExpandEl.style.height = `${bodyHeight}px`;
5686
+ rowExpandEl.style.top = `${headerHeight}px`;
5687
+ }
5680
5688
  containerList.forEach((name, index) => {
5681
5689
  const fixedType = index > 0 ? name : '';
5682
5690
  const layoutList = ['header', 'body', 'footer'];
@@ -5786,7 +5794,7 @@ function updateStyle($xeTable) {
5786
5794
  let isOptimizeMode = false;
5787
5795
  // 如果是使用优化模式
5788
5796
  if (scrollXLoad || scrollYLoad || isAllOverflow) {
5789
- if (expandColumn || spanMethod || footerSpanMethod) {
5797
+ if (expandColumn && expandOpts.mode !== 'fixed' || spanMethod || footerSpanMethod) {
5790
5798
  // 如果不支持优化模式
5791
5799
  } else {
5792
5800
  isOptimizeMode = true;
@@ -5912,6 +5920,15 @@ function updateStyle($xeTable) {
5912
5920
  }
5913
5921
  return $xeTable.$nextTick();
5914
5922
  }
5923
+ function calcVarRowHeightConfig($xeTable, sizeKey, sizeEl) {
5924
+ const reactData = $xeTable;
5925
+ const {
5926
+ rowHeightStore
5927
+ } = reactData;
5928
+ if (sizeEl && sizeEl.clientHeight) {
5929
+ rowHeightStore[sizeKey] = sizeEl.clientHeight;
5930
+ }
5931
+ }
5915
5932
  function computeRowHeight($xeTable) {
5916
5933
  const reactData = $xeTable;
5917
5934
  const {
@@ -5947,7 +5964,9 @@ function handleVirtualYVisible($xeTable, currScrollTop) {
5947
5964
  const reactData = $xeTable;
5948
5965
  const internalData = $xeTable;
5949
5966
  const {
5950
- isAllOverflow
5967
+ isAllOverflow,
5968
+ expandColumn,
5969
+ rowExpandedMaps
5951
5970
  } = reactData;
5952
5971
  const {
5953
5972
  elemStore,
@@ -5955,6 +5974,7 @@ function handleVirtualYVisible($xeTable, currScrollTop) {
5955
5974
  afterFullData,
5956
5975
  fullAllDataRowIdData
5957
5976
  } = internalData;
5977
+ const expandOpts = $xeTable.computeExpandOpts;
5958
5978
  const rowOpts = $xeTable.computeRowOpts;
5959
5979
  const cellOpts = $xeTable.computeCellOpts;
5960
5980
  const defaultRowHeight = $xeTable.computeDefaultRowHeight;
@@ -5967,7 +5987,7 @@ function handleVirtualYVisible($xeTable, currScrollTop) {
5967
5987
  let offsetTop = 0;
5968
5988
  let visibleSize = 0;
5969
5989
  const isCustomCellHeight = isResizeCellHeight || cellOpts.height || rowOpts.height;
5970
- if (!isCustomCellHeight && isAllOverflow) {
5990
+ if (!isCustomCellHeight && !expandColumn && isAllOverflow) {
5971
5991
  toVisibleIndex = Math.floor(scrollTop / defaultRowHeight);
5972
5992
  visibleSize = Math.ceil(clientHeight / defaultRowHeight) + 1;
5973
5993
  } else {
@@ -5985,6 +6005,10 @@ function handleVirtualYVisible($xeTable, currScrollTop) {
5985
6005
  break;
5986
6006
  }
5987
6007
  }
6008
+ // 是否展开行
6009
+ if (expandColumn && rowExpandedMaps[rowid]) {
6010
+ offsetTop += rowRest.expandHeight || expandOpts.height || 0;
6011
+ }
5988
6012
  }
5989
6013
  }
5990
6014
  return {
@@ -6684,9 +6708,18 @@ function handleRecalculateLayout($xeTable, reFull) {
6684
6708
  if (!el || !el.clientWidth) {
6685
6709
  return $xeTable.$nextTick();
6686
6710
  }
6711
+ const varEl = $xeTable.$refs.refVarElem;
6712
+ if (varEl) {
6713
+ const [defEl, mediumEl, smallEl, miniEl] = varEl.children;
6714
+ calcVarRowHeightConfig($xeTable, 'default', defEl);
6715
+ calcVarRowHeightConfig($xeTable, 'medium', mediumEl);
6716
+ calcVarRowHeightConfig($xeTable, 'small', smallEl);
6717
+ calcVarRowHeightConfig($xeTable, 'mini', miniEl);
6718
+ }
6687
6719
  calcCellWidth($xeTable);
6688
6720
  autoCellWidth($xeTable);
6689
6721
  updateStyle($xeTable);
6722
+ updateRowExpandStyle($xeTable);
6690
6723
  return computeScrollLoad($xeTable).then(() => {
6691
6724
  if (reFull === true) {
6692
6725
  // 初始化时需要在列计算之后再执行优化运算,达到最优显示效果
@@ -6694,6 +6727,7 @@ function handleRecalculateLayout($xeTable, reFull) {
6694
6727
  calcCellWidth($xeTable);
6695
6728
  autoCellWidth($xeTable);
6696
6729
  updateStyle($xeTable);
6730
+ updateRowExpandStyle($xeTable);
6697
6731
  return computeScrollLoad($xeTable);
6698
6732
  }
6699
6733
  });
@@ -7176,7 +7210,7 @@ function calcCellWidth($xeTable) {
7176
7210
  el.removeAttribute('data-calc-col');
7177
7211
  }
7178
7212
  }
7179
- const handleUpdateColResize = ($xeTable, evnt, params) => {
7213
+ function handleUpdateColResize($xeTable, evnt, params) {
7180
7214
  $xeTable.analyColumnWidth();
7181
7215
  $xeTable.recalculate(true).then(() => {
7182
7216
  $xeTable.saveCustomStore('update:width');
@@ -7186,8 +7220,8 @@ const handleUpdateColResize = ($xeTable, evnt, params) => {
7186
7220
  $xeTable.dispatchEvent('resizable-change', params, evnt);
7187
7221
  setTimeout(() => $xeTable.recalculate(true), 300);
7188
7222
  });
7189
- };
7190
- const handleUpdateRowResize = ($xeTable, evnt, params) => {
7223
+ }
7224
+ function handleUpdateRowResize($xeTable, evnt, params) {
7191
7225
  const reactData = $xeTable;
7192
7226
  reactData.resizeHeightFlag++;
7193
7227
  $xeTable.recalculate(true).then(() => {
@@ -7195,7 +7229,74 @@ const handleUpdateRowResize = ($xeTable, evnt, params) => {
7195
7229
  $xeTable.dispatchEvent('row-resizable-change', params, evnt);
7196
7230
  setTimeout(() => $xeTable.recalculate(true), 300);
7197
7231
  });
7198
- };
7232
+ }
7233
+ function updateRowExpandStyle($xeTable) {
7234
+ const reactData = $xeTable;
7235
+ const internalData = $xeTable;
7236
+ const {
7237
+ expandColumn,
7238
+ scrollYLoad,
7239
+ rowExpandedMaps
7240
+ } = reactData;
7241
+ const expandOpts = $xeTable.computeExpandOpts;
7242
+ const rowOpts = $xeTable.computeRowOpts;
7243
+ const cellOpts = $xeTable.computeCellOpts;
7244
+ const defaultRowHeight = $xeTable.computeDefaultRowHeight;
7245
+ const {
7246
+ mode
7247
+ } = expandOpts;
7248
+ if (expandColumn && mode === 'fixed') {
7249
+ const {
7250
+ elemStore,
7251
+ afterFullData,
7252
+ fullAllDataRowIdData
7253
+ } = internalData;
7254
+ const rowExpandEl = $xeTable.$refs.refRowExpandElem;
7255
+ const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
7256
+ if (rowExpandEl && bodyScrollElem) {
7257
+ let isUpdateHeight = false;
7258
+ if (scrollYLoad) {
7259
+ let offsetTop = 0;
7260
+ for (let rIndex = 0, rLen = afterFullData.length; rIndex < rLen; rIndex++) {
7261
+ const row = afterFullData[rIndex];
7262
+ const rowid = getRowid($xeTable, row);
7263
+ const rowRest = fullAllDataRowIdData[rowid] || {};
7264
+ rowRest.oTop = offsetTop;
7265
+ offsetTop += rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight;
7266
+ // 是否展开行
7267
+ if (expandColumn && rowExpandedMaps[rowid]) {
7268
+ offsetTop += rowRest.expandHeight || expandOpts.height || 0;
7269
+ }
7270
+ }
7271
+ }
7272
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(rowExpandEl.children, reEl => {
7273
+ const expandEl = reEl;
7274
+ const rowid = expandEl.getAttribute('rowid') || '';
7275
+ const rowRest = fullAllDataRowIdData[rowid];
7276
+ if (rowRest) {
7277
+ const expandHeight = expandEl.offsetHeight + 1;
7278
+ if (scrollYLoad) {
7279
+ expandEl.style.top = toCssUnit(rowRest.oTop + (rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight));
7280
+ } else {
7281
+ const trEl = bodyScrollElem.querySelector(`.vxe-body--row[rowid="${rowid}"]`);
7282
+ if (trEl) {
7283
+ expandEl.style.top = toCssUnit(trEl.offsetTop + trEl.offsetHeight);
7284
+ }
7285
+ }
7286
+ if (!isUpdateHeight) {
7287
+ if (rowRest.expandHeight !== expandHeight) {
7288
+ isUpdateHeight = true;
7289
+ }
7290
+ }
7291
+ rowRest.expandHeight = expandHeight;
7292
+ }
7293
+ });
7294
+ if (isUpdateHeight) {
7295
+ reactData.rowExpandHeightFlag++;
7296
+ }
7297
+ }
7298
+ }
7299
+ }
7199
7300
  const Methods = {
7200
7301
  callSlot(slotFunc, params, h, vNodes) {
7201
7302
  if (slotFunc) {
@@ -7626,7 +7727,8 @@ const Methods = {
7626
7727
  level,
7627
7728
  height: 0,
7628
7729
  resizeHeight: 0,
7629
- oTop: 0
7730
+ oTop: 0,
7731
+ expandHeight: 0
7630
7732
  };
7631
7733
  }
7632
7734
  cacheItem.row = row;
@@ -7732,7 +7834,8 @@ const Methods = {
7732
7834
  level: parentLevel + nodes.length,
7733
7835
  height: 0,
7734
7836
  resizeHeight: 0,
7735
- oTop: 0
7837
+ oTop: 0,
7838
+ expandHeight: 0
7736
7839
  };
7737
7840
  fullDataRowIdData[rowid] = rest;
7738
7841
  fullAllDataRowIdData[rowid] = rest;
@@ -9841,6 +9944,7 @@ const Methods = {
9841
9944
  const el = $xeTable.$refs.refElem;
9842
9945
  if (el && el.clientWidth) {
9843
9946
  autoCellWidth($xeTable);
9947
+ updateRowExpandStyle($xeTable);
9844
9948
  }
9845
9949
  if (rceTimeout) {
9846
9950
  clearTimeout(rceTimeout);
@@ -13053,6 +13157,19 @@ const Methods = {
13053
13157
  reactData.pendingRowMaps = pendingMaps;
13054
13158
  return $xeTable.$nextTick();
13055
13159
  },
13160
+ hasPendingByRow(row) {
13161
+ const $xeTable = this;
13162
+ return $xeTable.isPendingByRow(row);
13163
+ },
13164
+ isPendingByRow(row) {
13165
+ const $xeTable = this;
13166
+ const reactData = $xeTable;
13167
+ const {
13168
+ pendingRowMaps
13169
+ } = reactData;
13170
+ const rowid = getRowid($xeTable, row);
13171
+ return !!pendingRowMaps[rowid];
13172
+ },
13056
13173
  getPendingRecords() {
13057
13174
  const $xeTable = this;
13058
13175
  const reactData = $xeTable;
@@ -13071,13 +13188,6 @@ const Methods = {
13071
13188
  });
13072
13189
  return insertRecords;
13073
13190
  },
13074
- hasPendingByRow(row) {
13075
- const {
13076
- pendingRowMaps
13077
- } = this;
13078
- const rowid = getRowid(this, row);
13079
- return !!pendingRowMaps[rowid];
13080
- },
13081
13191
  clearPendingRow() {
13082
13192
  this.pendingRowMaps = {};
13083
13193
  return this.$nextTick();
@@ -14230,6 +14340,7 @@ const Methods = {
14230
14340
  direction,
14231
14341
  ...params
14232
14342
  };
14343
+ updateRowExpandStyle($xeTable);
14233
14344
  checkLastSyncScroll($xeTable, isRollX, isRollY);
14234
14345
  if (rowOpts.isHover || highlightHoverRow) {
14235
14346
  $xeTable.clearHoverRow();
@@ -14271,7 +14382,12 @@ const Methods = {
14271
14382
  },
14272
14383
  triggerBodyScrollEvent(evnt, fixedType) {
14273
14384
  const $xeTable = this;
14385
+ const reactData = $xeTable;
14274
14386
  const internalData = $xeTable;
14387
+ const {
14388
+ scrollYLoad,
14389
+ scrollXLoad
14390
+ } = reactData;
14275
14391
  const {
14276
14392
  elemStore,
14277
14393
  intoRunScroll,
@@ -14291,6 +14407,7 @@ const Methods = {
14291
14407
  const rightScrollElem = getRefElem(elemStore['right-body-scroll']);
14292
14408
  const headerScrollElem = getRefElem(elemStore['main-header-scroll']);
14293
14409
  const footerScrollElem = getRefElem(elemStore['main-footer-scroll']);
14410
+ const rowExpandEl = $xeTable.$refs.refRowExpandElem;
14294
14411
  if (inWheelScroll || inVirtualScroll || inHeaderScroll || inFooterScroll) {
14295
14412
  return;
14296
14413
  }
@@ -14337,13 +14454,18 @@ const Methods = {
14337
14454
  setScrollTop(rightScrollElem, scrollTop);
14338
14455
  }
14339
14456
  setScrollTop(yHandleEl, scrollTop);
14340
- $xeTable.triggerScrollYEvent(evnt);
14457
+ setScrollTop(rowExpandEl, scrollTop);
14458
+ if (scrollYLoad) {
14459
+ $xeTable.triggerScrollYEvent(evnt);
14460
+ }
14341
14461
  }
14342
14462
  if (isRollX) {
14343
14463
  setScrollLeft(xHandleEl, scrollLeft);
14344
14464
  setScrollLeft(headerScrollElem, scrollLeft);
14345
14465
  setScrollLeft(footerScrollElem, scrollLeft);
14346
- $xeTable.triggerScrollXEvent(evnt);
14466
+ if (scrollXLoad) {
14467
+ $xeTable.triggerScrollXEvent(evnt);
14468
+ }
14347
14469
  }
14348
14470
  $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
14349
14471
  type: 'body',
@@ -14352,7 +14474,11 @@ const Methods = {
14352
14474
  },
14353
14475
  triggerHeaderScrollEvent(evnt, fixedType) {
14354
14476
  const $xeTable = this;
14477
+ const reactData = $xeTable;
14355
14478
  const internalData = $xeTable;
14479
+ const {
14480
+ scrollXLoad
14481
+ } = reactData;
14356
14482
  const {
14357
14483
  elemStore,
14358
14484
  intoRunScroll,
@@ -14389,7 +14515,9 @@ const Methods = {
14389
14515
  setScrollLeft(xHandleEl, scrollLeft);
14390
14516
  setScrollLeft(footerScrollElem, scrollLeft);
14391
14517
  setScrollLeft(bodyScrollElem, scrollLeft);
14392
- $xeTable.triggerScrollXEvent(evnt);
14518
+ if (scrollXLoad) {
14519
+ $xeTable.triggerScrollXEvent(evnt);
14520
+ }
14393
14521
  $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
14394
14522
  type: 'header',
14395
14523
  fixed: fixedType
@@ -14397,7 +14525,11 @@ const Methods = {
14397
14525
  },
14398
14526
  triggerFooterScrollEvent(evnt, fixedType) {
14399
14527
  const $xeTable = this;
14528
+ const reactData = $xeTable;
14400
14529
  const internalData = $xeTable;
14530
+ const {
14531
+ scrollXLoad
14532
+ } = reactData;
14401
14533
  const {
14402
14534
  elemStore,
14403
14535
  intoRunScroll,
@@ -14434,7 +14566,9 @@ const Methods = {
14434
14566
  setScrollLeft(xHandleEl, scrollLeft);
14435
14567
  setScrollLeft(headerScrollElem, scrollLeft);
14436
14568
  setScrollLeft(bodyScrollElem, scrollLeft);
14437
- $xeTable.triggerScrollXEvent(evnt);
14569
+ if (scrollXLoad) {
14570
+ $xeTable.triggerScrollXEvent(evnt);
14571
+ }
14438
14572
  $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
14439
14573
  type: 'footer',
14440
14574
  fixed: fixedType
@@ -14456,6 +14590,9 @@ const Methods = {
14456
14590
  const {
14457
14591
  highlightHoverRow
14458
14592
  } = tableProps;
14593
+ const {
14594
+ scrollYLoad
14595
+ } = reactData;
14459
14596
  const {
14460
14597
  elemStore,
14461
14598
  lastScrollTop,
@@ -14467,6 +14604,7 @@ const Methods = {
14467
14604
  const leftScrollElem = getRefElem(elemStore['left-body-scroll']);
14468
14605
  const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
14469
14606
  const rightScrollElem = getRefElem(elemStore['right-body-scroll']);
14607
+ const rowExpandEl = $xeTable.$refs.refRowExpandElem;
14470
14608
  if (!xHandleEl) {
14471
14609
  return;
14472
14610
  }
@@ -14502,27 +14640,24 @@ const Methods = {
14502
14640
  setScrollTop(bodyScrollElem, currTopNum);
14503
14641
  setScrollTop(leftScrollElem, currTopNum);
14504
14642
  setScrollTop(rightScrollElem, currTopNum);
14505
- $xeTable.triggerScrollYEvent(evnt);
14643
+ setScrollTop(rowExpandEl, currTopNum);
14644
+ if (scrollYLoad) {
14645
+ $xeTable.triggerScrollYEvent(evnt);
14646
+ }
14506
14647
  $xeTable.handleScrollEvent(evnt, isRollY, isRollX, currTopNum, scrollLeft, {
14507
14648
  type: 'table',
14508
14649
  fixed: ''
14509
14650
  });
14510
14651
  });
14511
- // internalData.inWheelScroll = true
14512
- // setScrollTop(yHandleEl, scrollTop)
14513
- // setScrollTop(bodyScrollElem, scrollTop)
14514
- // setScrollTop(leftScrollElem, scrollTop)
14515
- // setScrollTop(rightScrollElem, scrollTop)
14516
- // loadScrollYData($xeTable, scrollTop)
14517
- // $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
14518
- // type: 'footer',
14519
- // fixed: ''
14520
- // })
14521
14652
  }
14522
14653
  },
14523
14654
  triggerVirtualScrollXEvent(evnt) {
14524
14655
  const $xeTable = this;
14656
+ const reactData = $xeTable;
14525
14657
  const internalData = $xeTable;
14658
+ const {
14659
+ scrollXLoad
14660
+ } = reactData;
14526
14661
  const {
14527
14662
  elemStore,
14528
14663
  inWheelScroll,
@@ -14556,7 +14691,9 @@ const Methods = {
14556
14691
  setScrollLeft(bodyScrollElem, scrollLeft);
14557
14692
  setScrollLeft(headerScrollElem, scrollLeft);
14558
14693
  setScrollLeft(footerScrollElem, scrollLeft);
14559
- $xeTable.triggerScrollXEvent(evnt);
14694
+ if (scrollXLoad) {
14695
+ $xeTable.triggerScrollXEvent(evnt);
14696
+ }
14560
14697
  $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
14561
14698
  type: 'table',
14562
14699
  fixed: ''
@@ -14564,7 +14701,11 @@ const Methods = {
14564
14701
  },
14565
14702
  triggerVirtualScrollYEvent(evnt) {
14566
14703
  const $xeTable = this;
14704
+ const reactData = $xeTable;
14567
14705
  const internalData = $xeTable;
14706
+ const {
14707
+ scrollYLoad
14708
+ } = reactData;
14568
14709
  const {
14569
14710
  elemStore,
14570
14711
  inWheelScroll,
@@ -14582,6 +14723,7 @@ const Methods = {
14582
14723
  const leftScrollElem = getRefElem(elemStore['left-body-scroll']);
14583
14724
  const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
14584
14725
  const rightScrollElem = getRefElem(elemStore['right-body-scroll']);
14726
+ const rowExpandEl = $xeTable.$refs.refRowExpandElem;
14585
14727
  const xHandleEl = $xeTable.$refs.refScrollXHandleElem;
14586
14728
  const wrapperEl = evnt.currentTarget;
14587
14729
  const {
@@ -14598,7 +14740,10 @@ const Methods = {
14598
14740
  setScrollTop(bodyScrollElem, scrollTop);
14599
14741
  setScrollTop(leftScrollElem, scrollTop);
14600
14742
  setScrollTop(rightScrollElem, scrollTop);
14601
- $xeTable.triggerScrollYEvent(evnt);
14743
+ setScrollTop(rowExpandEl, scrollTop);
14744
+ if (scrollYLoad) {
14745
+ $xeTable.triggerScrollYEvent(evnt);
14746
+ }
14602
14747
  $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
14603
14748
  type: 'table',
14604
14749
  fixed: ''
@@ -14611,6 +14756,7 @@ const Methods = {
14611
14756
  isAllOverflow
14612
14757
  } = reactData;
14613
14758
  handleTableColumn($xeTable);
14759
+ $xeTable.updateScrollXSpace();
14614
14760
  return $xeTable.$nextTick().then(() => {
14615
14761
  handleTableColumn($xeTable);
14616
14762
  $xeTable.updateScrollXSpace();
@@ -14678,6 +14824,7 @@ const Methods = {
14678
14824
  updateScrollYData() {
14679
14825
  const $xeTable = this;
14680
14826
  $xeTable.handleTableData();
14827
+ $xeTable.updateScrollYSpace();
14681
14828
  return $xeTable.$nextTick().then(() => {
14682
14829
  $xeTable.handleTableData();
14683
14830
  $xeTable.updateScrollYSpace();
@@ -14690,7 +14837,9 @@ const Methods = {
14690
14837
  const internalData = $xeTable;
14691
14838
  const {
14692
14839
  isAllOverflow,
14693
- scrollYLoad
14840
+ scrollYLoad,
14841
+ expandColumn,
14842
+ rowExpandedMaps
14694
14843
  } = reactData;
14695
14844
  const {
14696
14845
  scrollYStore,
@@ -14702,6 +14851,7 @@ const Methods = {
14702
14851
  const {
14703
14852
  startIndex
14704
14853
  } = scrollYStore;
14854
+ const expandOpts = $xeTable.computeExpandOpts;
14705
14855
  const rowOpts = $xeTable.computeRowOpts;
14706
14856
  const cellOpts = $xeTable.computeCellOpts;
14707
14857
  const defaultRowHeight = $xeTable.computeDefaultRowHeight;
@@ -14711,7 +14861,7 @@ const Methods = {
14711
14861
  let ySpaceHeight = 0;
14712
14862
  if (scrollYLoad) {
14713
14863
  const isCustomCellHeight = isResizeCellHeight || cellOpts.height || rowOpts.height;
14714
- if (!isCustomCellHeight && isAllOverflow) {
14864
+ if (!isCustomCellHeight && !expandColumn && isAllOverflow) {
14715
14865
  ySpaceHeight = afterFullData.length * defaultRowHeight;
14716
14866
  topSpaceHeight = Math.max(0, startIndex * defaultRowHeight);
14717
14867
  } else {
@@ -14720,12 +14870,20 @@ const Methods = {
14720
14870
  const rowid = getRowid($xeTable, row);
14721
14871
  const rowRest = fullAllDataRowIdData[rowid] || {};
14722
14872
  ySpaceHeight += rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight;
14873
+ // 是否展开行
14874
+ if (expandColumn && rowExpandedMaps[rowid]) {
14875
+ ySpaceHeight += rowRest.expandHeight || expandOpts.height || 0;
14876
+ }
14723
14877
  }
14724
14878
  for (let i = 0; i < startIndex; i++) {
14725
14879
  const row = afterFullData[i];
14726
14880
  const rowid = getRowid($xeTable, row);
14727
14881
  const rowRest = fullAllDataRowIdData[rowid] || {};
14728
14882
  topSpaceHeight += rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight;
14883
+ // 是否展开行
14884
+ if (expandColumn && rowExpandedMaps[rowid]) {
14885
+ topSpaceHeight += rowRest.expandHeight || expandOpts.height || 0;
14886
+ }
14729
14887
  }
14730
14888
  }
14731
14889
  } else {
@@ -14750,6 +14908,10 @@ const Methods = {
14750
14908
  if (scrollYSpaceEl) {
14751
14909
  scrollYSpaceEl.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
14752
14910
  }
14911
+ const rowExpandYSpaceEl = $xeTable.$refs.refRowExpandYSpaceElem;
14912
+ if (rowExpandYSpaceEl) {
14913
+ rowExpandYSpaceEl.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
14914
+ }
14753
14915
  return $xeTable.$nextTick().then(() => {
14754
14916
  updateStyle($xeTable);
14755
14917
  });
@@ -15621,7 +15783,8 @@ function renderRows(h, _vm, fixedType, isOptimizeMode, tableData, tableColumn) {
15621
15783
  expandColumn,
15622
15784
  selectRadioRow,
15623
15785
  pendingRowMaps,
15624
- isDragColMove
15786
+ isDragColMove,
15787
+ rowExpandHeightFlag
15625
15788
  } = tableReactData;
15626
15789
  const {
15627
15790
  fullAllDataRowIdData
@@ -15663,18 +15826,18 @@ function renderRows(h, _vm, fixedType, isOptimizeMode, tableData, tableColumn) {
15663
15826
  };
15664
15827
  }
15665
15828
  const rowid = getRowid($xeTable, row);
15666
- const rest = fullAllDataRowIdData[rowid];
15829
+ const rowRest = fullAllDataRowIdData[rowid];
15667
15830
  let rowLevel = 0;
15668
15831
  let seq = -1;
15669
15832
  let _rowIndex = 0;
15670
- if (rest) {
15671
- rowLevel = rest.level;
15833
+ if (rowRest) {
15834
+ rowLevel = rowRest.level;
15672
15835
  if (treeConfig && transform && seqMode === 'increasing') {
15673
- seq = rest._index + 1;
15836
+ seq = rowRest._index + 1;
15674
15837
  } else {
15675
- seq = rest.seq;
15838
+ seq = rowRest.seq;
15676
15839
  }
15677
- _rowIndex = rest._index;
15840
+ _rowIndex = rowRest._index;
15678
15841
  }
15679
15842
  const params = {
15680
15843
  $table: $xeTable,
@@ -15747,54 +15910,69 @@ function renderRows(h, _vm, fixedType, isOptimizeMode, tableData, tableColumn) {
15747
15910
  const expandOpts = $xeTable.computeExpandOpts;
15748
15911
  const {
15749
15912
  height: expandHeight,
15750
- padding
15913
+ padding,
15914
+ mode: expandMode
15751
15915
  } = expandOpts;
15752
- const cellStyle = {};
15753
- if (expandHeight) {
15754
- cellStyle.height = `${expandHeight}px`;
15755
- }
15756
- if (treeConfig) {
15757
- cellStyle.paddingLeft = `${rowLevel * treeOpts.indent + 30}px`;
15758
- }
15759
- const {
15760
- showOverflow
15761
- } = expandColumn;
15762
- const hasEllipsis = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isUndefined(showOverflow) || external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNull(showOverflow) ? isAllOverflow : showOverflow;
15763
- const expandParams = {
15764
- $table: $xeTable,
15765
- seq,
15766
- column: expandColumn,
15767
- fixed: fixedType,
15768
- type: renderType,
15769
- level: rowLevel,
15770
- row,
15771
- rowIndex,
15772
- $rowIndex,
15773
- _rowIndex
15774
- };
15775
- rows.push(h('tr', {
15776
- class: ['vxe-body--expanded-row', {
15777
- 'is--padding': padding
15778
- }],
15779
- key: `expand_${rowid}`,
15780
- style: rowStyle ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(rowStyle) ? rowStyle(expandParams) : rowStyle : undefined,
15781
- on: trOn
15782
- }, [h('td', {
15783
- class: {
15784
- 'vxe-body--expanded-column': 1,
15785
- 'fixed--hidden': fixedType && !hasFixedColumn,
15786
- 'col--ellipsis': hasEllipsis
15787
- },
15788
- attrs: {
15789
- colspan: tableColumn.length
15916
+ if (expandMode === 'fixed') {
15917
+ rows.push(h('tr', {
15918
+ class: 'vxe-body--row-expanded-place',
15919
+ key: `expand_${rowid}`,
15920
+ attrs: {
15921
+ rowid
15922
+ }
15923
+ }, [h('td', {
15924
+ class: 'vxe-body--row-expanded-place-column',
15925
+ attrs: {
15926
+ colspan: tableColumn.length
15927
+ },
15928
+ style: {
15929
+ height: `${rowExpandHeightFlag ? rowRest.expandHeight || expandHeight : 0}px`
15930
+ }
15931
+ })]));
15932
+ } else {
15933
+ const cellStyle = {};
15934
+ if (expandHeight) {
15935
+ cellStyle.height = `${expandHeight}px`;
15790
15936
  }
15791
- }, [h('div', {
15792
- class: {
15793
- 'vxe-body--expanded-cell': 1,
15794
- 'is--ellipsis': expandHeight
15795
- },
15796
- style: cellStyle
15797
- }, [expandColumn.renderData(h, expandParams)])])]));
15937
+ if (treeConfig) {
15938
+ cellStyle.paddingLeft = `${rowLevel * treeOpts.indent + 30}px`;
15939
+ }
15940
+ const {
15941
+ showOverflow
15942
+ } = expandColumn;
15943
+ const hasEllipsis = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isUndefined(showOverflow) || external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNull(showOverflow) ? isAllOverflow : showOverflow;
15944
+ const expandParams = {
15945
+ $table: $xeTable,
15946
+ seq,
15947
+ column: expandColumn,
15948
+ fixed: fixedType,
15949
+ type: renderType,
15950
+ level: rowLevel,
15951
+ row,
15952
+ rowIndex,
15953
+ $rowIndex,
15954
+ _rowIndex
15955
+ };
15956
+ rows.push(h('tr', {
15957
+ class: ['vxe-body--expanded-row', {
15958
+ 'is--padding': padding
15959
+ }],
15960
+ key: `expand_${rowid}`
15961
+ }, [h('td', {
15962
+ class: ['vxe-body--expanded-column', {
15963
+ 'fixed--hidden': fixedType && !hasFixedColumn,
15964
+ 'col--ellipsis': hasEllipsis
15965
+ }],
15966
+ attrs: {
15967
+ colspan: tableColumn.length
15968
+ }
15969
+ }, [h('div', {
15970
+ class: ['vxe-body--expanded-cell', {
15971
+ 'is--ellipsis': expandHeight
15972
+ }],
15973
+ style: cellStyle
15974
+ }, [expandColumn.renderData(h, expandParams)])])]));
15975
+ }
15798
15976
  }
15799
15977
  // 如果是树形表格
15800
15978
  if (isExpandTree) {
@@ -15897,14 +16075,13 @@ function renderRows(h, _vm, fixedType, isOptimizeMode, tableData, tableColumn) {
15897
16075
  const emptyOpts = $xeTable.computeEmptyOpts;
15898
16076
  const mouseOpts = $xeTable.computeMouseOpts;
15899
16077
  const rowDragOpts = $xeTable.computeRowDragOpts;
15900
- const leftFixedWidth = $xeTable.computeLeftFixedWidth;
15901
- const rightFixedWidth = $xeTable.computeRightFixedWidth;
16078
+ const expandOpts = $xeTable.computeExpandOpts;
15902
16079
  let renderDataList = tableData;
15903
16080
  let renderColumnList = tableColumn;
15904
16081
  let isOptimizeMode = false;
15905
16082
  // 如果是使用优化模式
15906
16083
  if (scrollXLoad || scrollYLoad || isAllOverflow) {
15907
- if (expandColumn || spanMethod || footerSpanMethod) {
16084
+ if (expandColumn && expandOpts.mode !== 'fixed' || spanMethod || footerSpanMethod) {
15908
16085
  // 如果不支持优化模式
15909
16086
  } else {
15910
16087
  isOptimizeMode = true;
@@ -15984,9 +16161,6 @@ function renderRows(h, _vm, fixedType, isOptimizeMode, tableData, tableColumn) {
15984
16161
  $xeTable.triggerBodyScrollEvent(evnt, fixedType);
15985
16162
  }
15986
16163
  };
15987
- if (scrollYLoad || leftFixedWidth || rightFixedWidth) {
15988
- ons.wheel = $xeTable.triggerBodyWheelEvent;
15989
- }
15990
16164
  return h('div', {
15991
16165
  ref: 'refElem',
15992
16166
  class: ['vxe-table--body-wrapper', fixedType ? `fixed-${fixedType}--wrapper` : 'body--wrapper'],
@@ -20263,6 +20437,27 @@ const {
20263
20437
  renderer: edit_mixin_renderer,
20264
20438
  getI18n: mixin_getI18n
20265
20439
  } = core_.VxeUI;
20440
+ function getEditColumnModel(row, column) {
20441
+ const {
20442
+ model,
20443
+ editRender
20444
+ } = column;
20445
+ if (editRender) {
20446
+ model.value = getCellValue(row, column);
20447
+ model.update = false;
20448
+ }
20449
+ }
20450
+ function setEditColumnModel(row, column) {
20451
+ const {
20452
+ model,
20453
+ editRender
20454
+ } = column;
20455
+ if (editRender && model.update) {
20456
+ setCellValue(row, column, model.value);
20457
+ model.update = false;
20458
+ model.value = null;
20459
+ }
20460
+ }
20266
20461
  function removeCellSelectedClass($xeTable) {
20267
20462
  const el = $xeTable.$refs.refElem;
20268
20463
  if (el) {
@@ -20272,6 +20467,28 @@ function removeCellSelectedClass($xeTable) {
20272
20467
  }
20273
20468
  }
20274
20469
  }
20470
+ function syncActivedCell($xeTable) {
20471
+ const reactData = $xeTable;
20472
+ const {
20473
+ editStore,
20474
+ tableColumn
20475
+ } = reactData;
20476
+ const editOpts = $xeTable.computeEditOpts;
20477
+ const {
20478
+ actived
20479
+ } = editStore;
20480
+ const {
20481
+ row,
20482
+ column
20483
+ } = actived;
20484
+ if (row || column) {
20485
+ if (editOpts.mode === 'row') {
20486
+ tableColumn.forEach(column => setEditColumnModel(row, column));
20487
+ } else {
20488
+ setEditColumnModel(row, column);
20489
+ }
20490
+ }
20491
+ }
20275
20492
  function insertTreeRow(_vm, newRecords, isAppend) {
20276
20493
  const {
20277
20494
  tableFullTreeData,
@@ -20322,7 +20539,8 @@ function insertTreeRow(_vm, newRecords, isAppend) {
20322
20539
  level: parentLevel + 1,
20323
20540
  height: 0,
20324
20541
  resizeHeight: 0,
20325
- oTop: 0
20542
+ oTop: 0,
20543
+ expandHeight: 0
20326
20544
  };
20327
20545
  fullDataRowIdData[rowid] = rest;
20328
20546
  fullAllDataRowIdData[rowid] = rest;
@@ -20347,7 +20565,8 @@ function insertTreeRow(_vm, newRecords, isAppend) {
20347
20565
  level: 0,
20348
20566
  height: 0,
20349
20567
  resizeHeight: 0,
20350
- oTop: 0
20568
+ oTop: 0,
20569
+ expandHeight: 0
20351
20570
  };
20352
20571
  fullDataRowIdData[rowid] = rest;
20353
20572
  fullAllDataRowIdData[rowid] = rest;
@@ -20406,7 +20625,8 @@ function handleInsertRowAt($xeTable, records, targetRow, isInsertNextRow) {
20406
20625
  level: 0,
20407
20626
  height: 0,
20408
20627
  resizeHeight: 0,
20409
- oTop: 0
20628
+ oTop: 0,
20629
+ expandHeight: 0
20410
20630
  };
20411
20631
  fullDataRowIdData[rowid] = rest;
20412
20632
  fullAllDataRowIdData[rowid] = rest;
@@ -20444,7 +20664,8 @@ function handleInsertRowAt($xeTable, records, targetRow, isInsertNextRow) {
20444
20664
  level: 0,
20445
20665
  height: 0,
20446
20666
  resizeHeight: 0,
20447
- oTop: 0
20667
+ oTop: 0,
20668
+ expandHeight: 0
20448
20669
  };
20449
20670
  fullDataRowIdData[rowid] = rest;
20450
20671
  fullAllDataRowIdData[rowid] = rest;
@@ -20505,7 +20726,8 @@ function handleInsertRowAt($xeTable, records, targetRow, isInsertNextRow) {
20505
20726
  level: parentLevel + 1,
20506
20727
  height: 0,
20507
20728
  resizeHeight: 0,
20508
- oTop: 0
20729
+ oTop: 0,
20730
+ expandHeight: 0
20509
20731
  };
20510
20732
  fullDataRowIdData[rowid] = rest;
20511
20733
  fullAllDataRowIdData[rowid] = rest;
@@ -20626,58 +20848,268 @@ function handleInsertChildRowAt($xeTable, records, parentRow, targetRow, isInser
20626
20848
  rows: []
20627
20849
  });
20628
20850
  }
20629
- /* harmony default export */ var edit_mixin = ({
20630
- methods: {
20631
- /**
20632
- * 往表格中插入临时数据
20633
- *
20634
- * @param {*} records
20635
- */
20636
- _insert(records) {
20637
- return handleInsertRowAt(this, records, null);
20638
- },
20639
- /**
20640
- * 往表格指定行中插入临时数据
20641
- * 如果 row 为空则从插入到顶部
20642
- * 如果 row 为 -1 则从插入到底部
20643
- * 如果 row 为有效行则插入到该行的位置
20644
- * @param {Object/Array} records 新的数据
20645
- * @param {Row} targetRow 指定行
20646
- * @returns
20647
- */
20648
- _insertAt(records, targetRow) {
20649
- return handleInsertRowAt(this, records, targetRow);
20650
- },
20651
- _insertNextAt(records, targetRow) {
20652
- return handleInsertRowAt(this, records, targetRow, true);
20653
- },
20654
- _insertChild(records, parentRow) {
20655
- return handleInsertChildRowAt(this, records, parentRow, null);
20656
- },
20657
- _insertChildAt(records, parentRow, targetRow) {
20658
- return handleInsertChildRowAt(this, records, parentRow, targetRow);
20659
- },
20660
- _insertChildNextAt(records, parentRow, targetRow) {
20661
- return handleInsertChildRowAt(this, records, parentRow, targetRow, true);
20662
- },
20663
- /**
20664
- * 删除指定行数据
20665
- * 如果传 row 则删除一行
20666
- * 如果传 rows 则删除多行
20667
- * 如果为空则删除所有
20668
- */
20669
- _remove(rows) {
20670
- const $xeTable = this;
20671
- const props = $xeTable;
20672
- const reactData = $xeTable;
20673
- const internalData = $xeTable;
20674
- const {
20675
- treeConfig
20676
- } = props;
20677
- const {
20678
- mergeList,
20679
- editStore,
20680
- selectCheckboxMaps
20851
+ function handleClearEdit($xeTable, evnt, targetRow) {
20852
+ const props = $xeTable;
20853
+ const reactData = $xeTable;
20854
+ const {
20855
+ mouseConfig
20856
+ } = props;
20857
+ const {
20858
+ editStore
20859
+ } = reactData;
20860
+ const {
20861
+ actived,
20862
+ focused
20863
+ } = editStore;
20864
+ const {
20865
+ row,
20866
+ column
20867
+ } = actived;
20868
+ const validOpts = $xeTable.computeValidOpts;
20869
+ const mouseOpts = $xeTable.computeMouseOpts;
20870
+ if (row || column) {
20871
+ if (targetRow && getRowid($xeTable, targetRow) !== getRowid($xeTable, row)) {
20872
+ return $xeTable.$nextTick();
20873
+ }
20874
+ syncActivedCell($xeTable);
20875
+ actived.args = null;
20876
+ actived.row = null;
20877
+ actived.column = null;
20878
+ $xeTable.updateFooter();
20879
+ $xeTable.dispatchEvent('edit-closed', {
20880
+ row,
20881
+ rowIndex: $xeTable.getRowIndex(row),
20882
+ $rowIndex: $xeTable.getVMRowIndex(row),
20883
+ column,
20884
+ columnIndex: $xeTable.getColumnIndex(column),
20885
+ $columnIndex: $xeTable.getVMColumnIndex(column)
20886
+ }, evnt || null);
20887
+ }
20888
+ focused.row = null;
20889
+ focused.column = null;
20890
+ if (validOpts.autoClear) {
20891
+ if (validOpts.msgMode !== 'full' || mixin_getConfig().cellVaildMode === 'obsolete') {
20892
+ if ($xeTable.clearValidate) {
20893
+ return $xeTable.clearValidate();
20894
+ }
20895
+ }
20896
+ }
20897
+ return $xeTable.$nextTick().then(() => {
20898
+ if (mouseConfig && mouseOpts.area && $xeTable.handleRecalculateCellAreas) {
20899
+ return $xeTable.handleRecalculateCellAreas();
20900
+ }
20901
+ });
20902
+ }
20903
+ function handleEditActive($xeTable, params, evnt, isFocus) {
20904
+ const props = $xeTable;
20905
+ const reactData = $xeTable;
20906
+ const {
20907
+ editConfig,
20908
+ mouseConfig
20909
+ } = props;
20910
+ const {
20911
+ editStore,
20912
+ tableColumn
20913
+ } = reactData;
20914
+ const editOpts = $xeTable.computeEditOpts;
20915
+ const {
20916
+ mode
20917
+ } = editOpts;
20918
+ const {
20919
+ actived,
20920
+ focused
20921
+ } = editStore;
20922
+ const {
20923
+ row,
20924
+ column
20925
+ } = params;
20926
+ const {
20927
+ editRender
20928
+ } = column;
20929
+ const cell = params.cell || $xeTable.getCellElement(row, column);
20930
+ const beforeEditMethod = editOpts.beforeEditMethod || editOpts.activeMethod;
20931
+ params.cell = cell;
20932
+ if (cell && isEnableConf(editConfig) && isEnableConf(editRender)) {
20933
+ // 激活编辑
20934
+ if (!$xeTable.isPendingByRow(row)) {
20935
+ if (actived.row !== row || (mode === 'cell' ? actived.column !== column : false)) {
20936
+ // 判断是否禁用编辑
20937
+ let type = 'edit-disabled';
20938
+ if (!beforeEditMethod || beforeEditMethod({
20939
+ ...params,
20940
+ $table: $xeTable,
20941
+ $grid: $xeTable.xegrid
20942
+ })) {
20943
+ if (mouseConfig) {
20944
+ $xeTable.clearSelected();
20945
+ if ($xeTable.clearCellAreas) {
20946
+ $xeTable.clearCellAreas();
20947
+ $xeTable.clearCopyCellArea();
20948
+ }
20949
+ }
20950
+ $xeTable.closeTooltip();
20951
+ if (actived.column) {
20952
+ handleClearEdit($xeTable, evnt);
20953
+ }
20954
+ type = 'edit-activated';
20955
+ column.renderHeight = cell.offsetHeight;
20956
+ actived.args = params;
20957
+ actived.row = row;
20958
+ actived.column = column;
20959
+ if (mode === 'row') {
20960
+ tableColumn.forEach(column => getEditColumnModel(row, column));
20961
+ } else {
20962
+ getEditColumnModel(row, column);
20963
+ }
20964
+ const afterEditMethod = editOpts.afterEditMethod;
20965
+ $xeTable.$nextTick(() => {
20966
+ if (isFocus) {
20967
+ $xeTable.handleFocus(params, evnt);
20968
+ }
20969
+ if (afterEditMethod) {
20970
+ afterEditMethod({
20971
+ ...params,
20972
+ $table: $xeTable,
20973
+ $grid: $xeTable.xegrid
20974
+ });
20975
+ }
20976
+ });
20977
+ }
20978
+ $xeTable.dispatchEvent(type, {
20979
+ row,
20980
+ rowIndex: $xeTable.getRowIndex(row),
20981
+ $rowIndex: $xeTable.getVMRowIndex(row),
20982
+ column,
20983
+ columnIndex: $xeTable.getColumnIndex(column),
20984
+ $columnIndex: $xeTable.getVMColumnIndex(column)
20985
+ }, evnt);
20986
+ // v4已废弃
20987
+ if (type === 'edit-activated') {
20988
+ $xeTable.dispatchEvent('edit-actived', {
20989
+ row,
20990
+ rowIndex: $xeTable.getRowIndex(row),
20991
+ $rowIndex: $xeTable.getVMRowIndex(row),
20992
+ column,
20993
+ columnIndex: $xeTable.getColumnIndex(column),
20994
+ $columnIndex: $xeTable.getVMColumnIndex(column)
20995
+ }, evnt);
20996
+ }
20997
+ } else {
20998
+ const {
20999
+ column: oldColumn
21000
+ } = actived;
21001
+ if (mouseConfig) {
21002
+ $xeTable.clearSelected();
21003
+ if ($xeTable.clearCellAreas) {
21004
+ $xeTable.clearCellAreas();
21005
+ $xeTable.clearCopyCellArea();
21006
+ }
21007
+ }
21008
+ if (oldColumn !== column) {
21009
+ const {
21010
+ model: oldModel
21011
+ } = oldColumn;
21012
+ if (oldModel.update) {
21013
+ setCellValue(row, oldColumn, oldModel.value);
21014
+ }
21015
+ if ($xeTable.clearValidate) {
21016
+ $xeTable.clearValidate(row, column);
21017
+ }
21018
+ }
21019
+ column.renderHeight = cell.offsetHeight;
21020
+ actived.args = params;
21021
+ actived.column = column;
21022
+ if (isFocus) {
21023
+ setTimeout(() => {
21024
+ $xeTable.handleFocus(params, evnt);
21025
+ });
21026
+ }
21027
+ }
21028
+ focused.column = null;
21029
+ focused.row = null;
21030
+ $xeTable.focus();
21031
+ }
21032
+ }
21033
+ return $xeTable.$nextTick();
21034
+ }
21035
+ function handleEditCell($xeTable, row, fieldOrColumn, isPos) {
21036
+ const props = $xeTable;
21037
+ const internalData = $xeTable;
21038
+ const {
21039
+ editConfig
21040
+ } = props;
21041
+ const column = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(fieldOrColumn) ? $xeTable.getColumnByField(fieldOrColumn) : fieldOrColumn;
21042
+ if (row && column && isEnableConf(editConfig) && isEnableConf(column.editRender)) {
21043
+ return Promise.resolve(isPos ? $xeTable.scrollToRow(row, column) : null).then(() => {
21044
+ const cell = $xeTable.getCellElement(row, column);
21045
+ if (cell) {
21046
+ handleEditActive($xeTable, {
21047
+ row,
21048
+ rowIndex: $xeTable.getRowIndex(row),
21049
+ column,
21050
+ columnIndex: $xeTable.getColumnIndex(column),
21051
+ cell,
21052
+ $table: $xeTable
21053
+ }, null, false);
21054
+ internalData._lastCallTime = Date.now();
21055
+ }
21056
+ return $xeTable.$nextTick();
21057
+ });
21058
+ }
21059
+ return $xeTable.$nextTick();
21060
+ }
21061
+ /* harmony default export */ var edit_mixin = ({
21062
+ methods: {
21063
+ /**
21064
+ * 往表格中插入临时数据
21065
+ *
21066
+ * @param {*} records
21067
+ */
21068
+ _insert(records) {
21069
+ return handleInsertRowAt(this, records, null);
21070
+ },
21071
+ /**
21072
+ * 往表格指定行中插入临时数据
21073
+ * 如果 row 为空则从插入到顶部
21074
+ * 如果 row 为 -1 则从插入到底部
21075
+ * 如果 row 为有效行则插入到该行的位置
21076
+ * @param {Object/Array} records 新的数据
21077
+ * @param {Row} targetRow 指定行
21078
+ * @returns
21079
+ */
21080
+ _insertAt(records, targetRow) {
21081
+ return handleInsertRowAt(this, records, targetRow);
21082
+ },
21083
+ _insertNextAt(records, targetRow) {
21084
+ return handleInsertRowAt(this, records, targetRow, true);
21085
+ },
21086
+ _insertChild(records, parentRow) {
21087
+ return handleInsertChildRowAt(this, records, parentRow, null);
21088
+ },
21089
+ _insertChildAt(records, parentRow, targetRow) {
21090
+ return handleInsertChildRowAt(this, records, parentRow, targetRow);
21091
+ },
21092
+ _insertChildNextAt(records, parentRow, targetRow) {
21093
+ return handleInsertChildRowAt(this, records, parentRow, targetRow, true);
21094
+ },
21095
+ /**
21096
+ * 删除指定行数据
21097
+ * 如果传 row 则删除一行
21098
+ * 如果传 rows 则删除多行
21099
+ * 如果为空则删除所有
21100
+ */
21101
+ _remove(rows) {
21102
+ const $xeTable = this;
21103
+ const props = $xeTable;
21104
+ const reactData = $xeTable;
21105
+ const internalData = $xeTable;
21106
+ const {
21107
+ treeConfig
21108
+ } = props;
21109
+ const {
21110
+ mergeList,
21111
+ editStore,
21112
+ selectCheckboxMaps
20681
21113
  } = reactData;
20682
21114
  const {
20683
21115
  tableFullTreeData,
@@ -20906,6 +21338,7 @@ function handleInsertChildRowAt($xeTable, records, parentRow, targetRow, isInser
20906
21338
  * 如果是树表格,子节点更改状态不会影响父节点的更新状态
20907
21339
  */
20908
21340
  _getUpdateRecords() {
21341
+ const $xeTable = this;
20909
21342
  const {
20910
21343
  keepSource,
20911
21344
  tableFullData,
@@ -20923,7 +21356,7 @@ function handleInsertChildRowAt($xeTable, records, parentRow, targetRow, isInser
20923
21356
  column
20924
21357
  } = actived;
20925
21358
  if (row || column) {
20926
- this._syncActivedCell();
21359
+ syncActivedCell($xeTable);
20927
21360
  }
20928
21361
  if (treeConfig) {
20929
21362
  return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().filterTree(tableFullData, row => isUpdateByRow(row), treeOpts);
@@ -20936,107 +21369,8 @@ function handleInsertChildRowAt($xeTable, records, parentRow, targetRow, isInser
20936
21369
  * 处理激活编辑
20937
21370
  */
20938
21371
  handleEdit(params, evnt) {
20939
- const {
20940
- editStore,
20941
- editOpts,
20942
- tableColumn,
20943
- editConfig,
20944
- mouseConfig
20945
- } = this;
20946
- const {
20947
- mode
20948
- } = editOpts;
20949
- const {
20950
- actived,
20951
- focused
20952
- } = editStore;
20953
- const {
20954
- row,
20955
- column
20956
- } = params;
20957
- const {
20958
- editRender
20959
- } = column;
20960
- const cell = params.cell = params.cell || this.getCellElement(row, column);
20961
- const beforeEditMethod = editOpts.beforeEditMethod || editOpts.activeMethod;
20962
- if (cell && isEnableConf(editConfig) && isEnableConf(editRender)) {
20963
- // 激活编辑
20964
- if (!this.hasPendingByRow(row)) {
20965
- if (actived.row !== row || (mode === 'cell' ? actived.column !== column : false)) {
20966
- // 判断是否禁用编辑
20967
- let type = 'edit-disabled';
20968
- if (!beforeEditMethod || beforeEditMethod({
20969
- ...params,
20970
- $table: this,
20971
- $grid: this.$xegrid
20972
- })) {
20973
- if (mouseConfig) {
20974
- this.clearSelected(evnt);
20975
- this.clearCellAreas(evnt);
20976
- this.clearCopyCellArea(evnt);
20977
- }
20978
- this.closeTooltip();
20979
- if (actived.column) {
20980
- this.handleClearEdit(evnt);
20981
- }
20982
- type = 'edit-activated';
20983
- column.renderHeight = cell.offsetHeight;
20984
- actived.args = params;
20985
- actived.row = row;
20986
- actived.column = column;
20987
- if (mode === 'row') {
20988
- tableColumn.forEach(column => this._getColumnModel(row, column));
20989
- } else {
20990
- this._getColumnModel(row, column);
20991
- }
20992
- const afterEditMethod = editOpts.afterEditMethod;
20993
- this.$nextTick(() => {
20994
- this.handleFocus(params, evnt);
20995
- if (afterEditMethod) {
20996
- afterEditMethod({
20997
- ...params,
20998
- $table: this,
20999
- $grid: this.$xegrid
21000
- });
21001
- }
21002
- });
21003
- }
21004
- this.emitEvent(type, params, evnt);
21005
- // v4已废弃
21006
- if (type === 'edit-activated') {
21007
- this.emitEvent('edit-actived', params, evnt);
21008
- }
21009
- } else {
21010
- const {
21011
- column: oldColumn
21012
- } = actived;
21013
- if (mouseConfig) {
21014
- this.clearSelected(evnt);
21015
- this.clearCellAreas(evnt);
21016
- this.clearCopyCellArea(evnt);
21017
- }
21018
- if (oldColumn !== column) {
21019
- const {
21020
- model: oldModel
21021
- } = oldColumn;
21022
- if (oldModel.update) {
21023
- setCellValue(row, oldColumn, oldModel.value);
21024
- }
21025
- this.clearValidate();
21026
- }
21027
- column.renderHeight = cell.offsetHeight;
21028
- actived.args = params;
21029
- actived.column = column;
21030
- setTimeout(() => {
21031
- this.handleFocus(params, evnt);
21032
- });
21033
- }
21034
- focused.column = null;
21035
- focused.row = null;
21036
- this.focus();
21037
- }
21038
- }
21039
- return this.$nextTick();
21372
+ const $xeTable = this;
21373
+ return handleEditActive($xeTable, params, evnt, true);
21040
21374
  },
21041
21375
  /**
21042
21376
  * @deprecated
@@ -21045,46 +21379,14 @@ function handleInsertChildRowAt($xeTable, records, parentRow, targetRow, isInser
21045
21379
  return this.handleEdit(params, evnt);
21046
21380
  },
21047
21381
  _getColumnModel(row, column) {
21048
- const {
21049
- model,
21050
- editRender
21051
- } = column;
21052
- if (editRender) {
21053
- model.value = getCellValue(row, column);
21054
- model.update = false;
21055
- }
21382
+ getEditColumnModel(row, column);
21056
21383
  },
21057
21384
  _setColumnModel(row, column) {
21058
- const {
21059
- model,
21060
- editRender
21061
- } = column;
21062
- if (editRender && model.update) {
21063
- setCellValue(row, column, model.value);
21064
- model.update = false;
21065
- model.value = null;
21066
- }
21385
+ setEditColumnModel(row, column);
21067
21386
  },
21068
21387
  _syncActivedCell() {
21069
- const {
21070
- tableColumn,
21071
- editStore,
21072
- editOpts
21073
- } = this;
21074
- const {
21075
- actived
21076
- } = editStore;
21077
- const {
21078
- row,
21079
- column
21080
- } = actived;
21081
- if (row || column) {
21082
- if (editOpts.mode === 'row') {
21083
- tableColumn.forEach(column => this._setColumnModel(row, column));
21084
- } else {
21085
- this._setColumnModel(row, column);
21086
- }
21087
- }
21388
+ const $xeTable = this;
21389
+ syncActivedCell($xeTable);
21088
21390
  },
21089
21391
  _clearActived(row) {
21090
21392
  if (true) {
@@ -21097,63 +21399,15 @@ function handleInsertChildRowAt($xeTable, records, parentRow, targetRow, isInser
21097
21399
  * 清除激活的编辑
21098
21400
  */
21099
21401
  _clearEdit(row) {
21100
- return this.handleClearEdit(null, row);
21402
+ const $xeTable = this;
21403
+ return handleClearEdit($xeTable, null, row);
21101
21404
  },
21102
21405
  /**
21103
21406
  * 取消编辑
21104
21407
  */
21105
21408
  handleClearEdit(evnt, targetRow) {
21106
21409
  const $xeTable = this;
21107
- const props = $xeTable;
21108
- const reactData = $xeTable;
21109
- const {
21110
- mouseConfig
21111
- } = props;
21112
- const {
21113
- editStore
21114
- } = reactData;
21115
- const {
21116
- actived,
21117
- focused
21118
- } = editStore;
21119
- const {
21120
- row,
21121
- column
21122
- } = actived;
21123
- const validOpts = $xeTable.validOpts;
21124
- const mouseOpts = $xeTable.computeMouseOpts;
21125
- if (row || column) {
21126
- if (targetRow && getRowid($xeTable, targetRow) !== getRowid($xeTable, row)) {
21127
- return $xeTable.$nextTick();
21128
- }
21129
- $xeTable._syncActivedCell();
21130
- actived.args = null;
21131
- actived.row = null;
21132
- actived.column = null;
21133
- $xeTable.updateFooter();
21134
- $xeTable.emitEvent('edit-closed', {
21135
- row,
21136
- rowIndex: $xeTable.getRowIndex(row),
21137
- $rowIndex: $xeTable.getVMRowIndex(row),
21138
- column,
21139
- columnIndex: $xeTable.getColumnIndex(column),
21140
- $columnIndex: $xeTable.getVMColumnIndex(column)
21141
- }, evnt);
21142
- }
21143
- focused.row = null;
21144
- focused.column = null;
21145
- if (validOpts.autoClear) {
21146
- if (validOpts.msgMode !== 'full' || mixin_getConfig().cellVaildMode === 'obsolete') {
21147
- if ($xeTable.clearValidate) {
21148
- return $xeTable.clearValidate();
21149
- }
21150
- }
21151
- }
21152
- return $xeTable.$nextTick().then(() => {
21153
- if (mouseConfig && mouseOpts.area && $xeTable.handleRecalculateCellAreas) {
21154
- return $xeTable.handleRecalculateCellAreas();
21155
- }
21156
- });
21410
+ return handleClearEdit($xeTable, evnt, targetRow);
21157
21411
  },
21158
21412
  _getActiveRecord() {
21159
21413
  if (true) {
@@ -21270,11 +21524,12 @@ function handleInsertChildRowAt($xeTable, records, parentRow, targetRow, isInser
21270
21524
  * 激活行编辑
21271
21525
  */
21272
21526
  _setEditRow(row, fieldOrColumn) {
21527
+ const $xeTable = this;
21273
21528
  let column = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().find(this.visibleColumn, column => isEnableConf(column.editRender));
21274
21529
  if (fieldOrColumn) {
21275
21530
  column = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(fieldOrColumn) ? this.getColumnByField(fieldOrColumn) : fieldOrColumn;
21276
21531
  }
21277
- return this.setEditCell(row, column);
21532
+ return handleEditCell($xeTable, row, column, false);
21278
21533
  },
21279
21534
  _setActiveCell(row, fieldOrColumn) {
21280
21535
  if (true) {
@@ -21287,27 +21542,8 @@ function handleInsertChildRowAt($xeTable, records, parentRow, targetRow, isInser
21287
21542
  * 激活单元格编辑
21288
21543
  */
21289
21544
  _setEditCell(row, fieldOrColumn) {
21290
- const {
21291
- editConfig
21292
- } = this;
21293
- const column = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(fieldOrColumn) ? this.getColumnByField(fieldOrColumn) : fieldOrColumn;
21294
- if (row && column && isEnableConf(editConfig) && isEnableConf(column.editRender)) {
21295
- return this.scrollToRow(row, true).then(() => {
21296
- const cell = this.getCellElement(row, column);
21297
- if (cell) {
21298
- this.handleEdit({
21299
- row,
21300
- rowIndex: this.getRowIndex(row),
21301
- column,
21302
- columnIndex: this.getColumnIndex(column),
21303
- cell,
21304
- $table: this
21305
- });
21306
- this.lastCallTime = Date.now();
21307
- }
21308
- });
21309
- }
21310
- return this.$nextTick();
21545
+ const $xeTable = this;
21546
+ return handleEditCell($xeTable, row, fieldOrColumn, true);
21311
21547
  },
21312
21548
  /**
21313
21549
  * 只对 trigger=dblclick 有效,选中单元格
@@ -21339,6 +21575,7 @@ function handleInsertChildRowAt($xeTable, records, parentRow, targetRow, isInser
21339
21575
  * 处理选中源
21340
21576
  */
21341
21577
  handleSelected(params, evnt) {
21578
+ const $xeTable = this;
21342
21579
  const {
21343
21580
  mouseConfig,
21344
21581
  mouseOpts,
@@ -21357,7 +21594,7 @@ function handleInsertChildRowAt($xeTable, records, parentRow, targetRow, isInser
21357
21594
  const selectMethod = () => {
21358
21595
  if (isMouseSelected && (selected.row !== row || selected.column !== column)) {
21359
21596
  if (actived.row !== row || (editOpts.mode === 'cell' ? actived.column !== column : false)) {
21360
- this.handleClearEdit(evnt);
21597
+ handleClearEdit($xeTable, evnt);
21361
21598
  this.clearSelected(evnt);
21362
21599
  this.clearCellAreas(evnt);
21363
21600
  this.clearCopyCellArea(evnt);
@@ -24755,6 +24992,7 @@ function validErrorRuleValue(rule, val) {
24755
24992
 
24756
24993
 
24757
24994
 
24995
+
24758
24996
 
24759
24997
 
24760
24998
  const {
@@ -24923,6 +25161,96 @@ function handleUpdateResize(_vm) {
24923
25161
  _vm.recalculate();
24924
25162
  }
24925
25163
  }
25164
+ function renderRowExpandedVNs(h, $xeTable) {
25165
+ const props = $xeTable;
25166
+ const reactData = $xeTable;
25167
+ const internalData = $xeTable;
25168
+ const {
25169
+ treeConfig
25170
+ } = props;
25171
+ const {
25172
+ expandColumn
25173
+ } = reactData;
25174
+ const tableRowExpandedList = $xeTable.computeTableRowExpandedList;
25175
+ const expandOpts = $xeTable.computeExpandOpts;
25176
+ const {
25177
+ mode
25178
+ } = expandOpts;
25179
+ if (mode !== 'fixed') {
25180
+ return table_renderEmptyElement($xeTable);
25181
+ }
25182
+ const expandVNs = [h('div', {
25183
+ key: 'repY',
25184
+ ref: 'refRowExpandYSpaceElem'
25185
+ })];
25186
+ if (expandColumn) {
25187
+ tableRowExpandedList.forEach(row => {
25188
+ const expandOpts = $xeTable.computeExpandOpts;
25189
+ const {
25190
+ height: expandHeight,
25191
+ padding
25192
+ } = expandOpts;
25193
+ const {
25194
+ fullAllDataRowIdData
25195
+ } = internalData;
25196
+ const treeOpts = $xeTable.computeTreeOpts;
25197
+ const {
25198
+ transform,
25199
+ seqMode
25200
+ } = treeOpts;
25201
+ const cellStyle = {};
25202
+ const rowid = getRowid($xeTable, row);
25203
+ const rest = fullAllDataRowIdData[rowid];
25204
+ let rowLevel = 0;
25205
+ let seq = -1;
25206
+ let _rowIndex = 0;
25207
+ const rowIndex = $xeTable.getRowIndex(row);
25208
+ const $rowIndex = $xeTable.getVMRowIndex(row);
25209
+ if (rest) {
25210
+ rowLevel = rest.level;
25211
+ if (treeConfig && transform && seqMode === 'increasing') {
25212
+ seq = rest._index + 1;
25213
+ } else {
25214
+ seq = rest.seq;
25215
+ }
25216
+ _rowIndex = rest._index;
25217
+ }
25218
+ if (expandHeight) {
25219
+ cellStyle.height = `${expandHeight}px`;
25220
+ }
25221
+ if (treeConfig) {
25222
+ cellStyle.paddingLeft = `${rowLevel * treeOpts.indent + 30}px`;
25223
+ }
25224
+ const expandParams = {
25225
+ $table: $xeTable,
25226
+ seq,
25227
+ column: expandColumn,
25228
+ fixed: '',
25229
+ type: 'body',
25230
+ level: rowLevel,
25231
+ row,
25232
+ rowIndex,
25233
+ $rowIndex,
25234
+ _rowIndex
25235
+ };
25236
+ expandVNs.push(h('div', {
25237
+ key: rowid,
25238
+ class: ['vxe-body--row-expanded-cell', {
25239
+ 'is--padding': padding,
25240
+ 'is--ellipsis': expandHeight
25241
+ }],
25242
+ attrs: {
25243
+ rowid
25244
+ },
25245
+ style: cellStyle
25246
+ }, expandColumn.renderData(h, expandParams)));
25247
+ });
25248
+ }
25249
+ return h('div', {
25250
+ ref: 'refRowExpandElem',
25251
+ class: 'vxe-table--row-expanded-wrapper'
25252
+ }, expandVNs);
25253
+ }
24926
25254
  function renderScrollX(h, $xeTable) {
24927
25255
  return h('div', {
24928
25256
  key: 'vsx',
@@ -24981,6 +25309,7 @@ function renderViewport(h, $xeTable) {
24981
25309
  } = props;
24982
25310
  const {
24983
25311
  overflowX,
25312
+ scrollYLoad,
24984
25313
  tableData,
24985
25314
  tableColumn,
24986
25315
  tableGroupColumn,
@@ -24991,9 +25320,16 @@ function renderViewport(h, $xeTable) {
24991
25320
  leftList,
24992
25321
  rightList
24993
25322
  } = columnStore;
25323
+ const leftFixedWidth = $xeTable.computeLeftFixedWidth;
25324
+ const rightFixedWidth = $xeTable.computeRightFixedWidth;
25325
+ const ons = {};
25326
+ if (scrollYLoad || leftFixedWidth || rightFixedWidth) {
25327
+ ons.onWheel = $xeTable.triggerBodyWheelEvent;
25328
+ }
24994
25329
  return h('div', {
24995
25330
  ref: 'refTableViewportElem',
24996
- class: 'vxe-table--viewport-wrapper'
25331
+ class: 'vxe-table--viewport-wrapper',
25332
+ on: ons
24997
25333
  }, [h('div', {
24998
25334
  class: 'vxe-table--main-wrapper'
24999
25335
  }, [
@@ -25029,7 +25365,7 @@ function renderViewport(h, $xeTable) {
25029
25365
  }
25030
25366
  }) : table_renderEmptyElement($xeTable)]), h('div', {
25031
25367
  class: 'vxe-table--fixed-wrapper'
25032
- }, [leftList && leftList.length && overflowX ? renderFixed(h, $xeTable, 'left') : table_renderEmptyElement($xeTable), rightList && rightList.length && overflowX ? renderFixed(h, $xeTable, 'right') : table_renderEmptyElement($xeTable)])]);
25368
+ }, [leftList && leftList.length && overflowX ? renderFixed(h, $xeTable, 'left') : table_renderEmptyElement($xeTable), rightList && rightList.length && overflowX ? renderFixed(h, $xeTable, 'right') : table_renderEmptyElement($xeTable)]), renderRowExpandedVNs(h, $xeTable)]);
25033
25369
  }
25034
25370
  function renderBody(h, $xeTable) {
25035
25371
  const scrollbarYToLeft = $xeTable.computeScrollbarYToLeft;
@@ -25279,8 +25615,9 @@ function renderBody(h, $xeTable) {
25279
25615
  mini: 36
25280
25616
  },
25281
25617
  scrollVMLoading: false,
25282
- calcCellHeightFlag: 0,
25283
- resizeHeightFlag: 0,
25618
+ rowExpandHeightFlag: 1,
25619
+ calcCellHeightFlag: 1,
25620
+ resizeHeightFlag: 1,
25284
25621
  isCustomStatus: false,
25285
25622
  isDragRowMove: false,
25286
25623
  dragRow: null,
@@ -25685,6 +26022,28 @@ function renderBody(h, $xeTable) {
25685
26022
  computeCustomOpts() {
25686
26023
  return Object.assign({}, table_getConfig().table.customConfig, this.customConfig);
25687
26024
  },
26025
+ computeTableRowExpandedList() {
26026
+ const $xeTable = this;
26027
+ const reactData = $xeTable;
26028
+ const {
26029
+ rowExpandedMaps,
26030
+ tableData,
26031
+ expandColumn
26032
+ } = reactData;
26033
+ const expandList = [];
26034
+ if (expandColumn) {
26035
+ const rowKeys = {};
26036
+ tableData.forEach(row => {
26037
+ rowKeys[getRowid($xeTable, row)] = true;
26038
+ });
26039
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(rowExpandedMaps, (row, rowid) => {
26040
+ if (rowKeys[rowid]) {
26041
+ expandList.push(row);
26042
+ }
26043
+ });
26044
+ }
26045
+ return expandList;
26046
+ },
25688
26047
  computeAutoWidthColumnList() {
25689
26048
  const {
25690
26049
  tableColumn,
@@ -26162,29 +26521,9 @@ function renderBody(h, $xeTable) {
26162
26521
  mounted() {
26163
26522
  const $xeTable = this;
26164
26523
  const props = $xeTable;
26165
- const reactData = $xeTable;
26166
- const {
26167
- rowHeightStore
26168
- } = reactData;
26169
- const varEl = $xeTable.$refs.refVarElem;
26170
26524
  const columnOpts = $xeTable.computeColumnOpts;
26171
26525
  const rowOpts = $xeTable.computeRowOpts;
26172
26526
  const customOpts = $xeTable.computeCustomOpts;
26173
- if (varEl) {
26174
- const [defEl, mediumEl, smallEl, miniEl] = varEl.children;
26175
- if (defEl) {
26176
- rowHeightStore.default = defEl.clientHeight;
26177
- }
26178
- if (mediumEl) {
26179
- rowHeightStore.medium = mediumEl.clientHeight;
26180
- }
26181
- if (smallEl) {
26182
- rowHeightStore.small = smallEl.clientHeight;
26183
- }
26184
- if (miniEl) {
26185
- rowHeightStore.mini = miniEl.clientHeight;
26186
- }
26187
- }
26188
26527
  if (columnOpts.drag || rowOpts.drag || customOpts.allowSort) {
26189
26528
  initTpImg();
26190
26529
  }