vxe-table 4.10.14 → 4.10.15

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 (44) 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/hook.js +5 -5
  6. package/es/table/src/body.js +57 -43
  7. package/es/table/src/table.js +209 -44
  8. package/es/table/style.css +26 -0
  9. package/es/table/style.min.css +1 -1
  10. package/es/ui/index.js +1 -1
  11. package/es/ui/src/log.js +1 -1
  12. package/es/vxe-table/style.css +26 -0
  13. package/es/vxe-table/style.min.css +1 -1
  14. package/lib/index.css +1 -1
  15. package/lib/index.min.css +1 -1
  16. package/lib/index.umd.js +330 -107
  17. package/lib/index.umd.min.js +1 -1
  18. package/lib/style.css +1 -1
  19. package/lib/style.min.css +1 -1
  20. package/lib/table/module/edit/hook.js +10 -5
  21. package/lib/table/module/edit/hook.min.js +1 -1
  22. package/lib/table/src/body.js +65 -58
  23. package/lib/table/src/body.min.js +1 -1
  24. package/lib/table/src/table.js +253 -42
  25. package/lib/table/src/table.min.js +1 -1
  26. package/lib/table/style/style.css +26 -0
  27. package/lib/table/style/style.min.css +1 -1
  28. package/lib/ui/index.js +1 -1
  29. package/lib/ui/index.min.js +1 -1
  30. package/lib/ui/src/log.js +1 -1
  31. package/lib/ui/src/log.min.js +1 -1
  32. package/lib/vxe-table/style/style.css +26 -0
  33. package/lib/vxe-table/style/style.min.css +1 -1
  34. package/package.json +1 -1
  35. package/packages/table/module/edit/hook.ts +5 -5
  36. package/packages/table/src/body.ts +60 -50
  37. package/packages/table/src/table.ts +220 -44
  38. package/styles/components/table.scss +26 -0
  39. /package/es/{iconfont.1739333111603.ttf → iconfont.1739428251944.ttf} +0 -0
  40. /package/es/{iconfont.1739333111603.woff → iconfont.1739428251944.woff} +0 -0
  41. /package/es/{iconfont.1739333111603.woff2 → iconfont.1739428251944.woff2} +0 -0
  42. /package/lib/{iconfont.1739333111603.ttf → iconfont.1739428251944.ttf} +0 -0
  43. /package/lib/{iconfont.1739333111603.woff → iconfont.1739428251944.woff} +0 -0
  44. /package/lib/{iconfont.1739333111603.woff2 → iconfont.1739428251944.woff2} +0 -0
package/lib/index.umd.js CHANGED
@@ -3138,7 +3138,7 @@ function eqEmptyValue(cellValue) {
3138
3138
  ;// ./packages/ui/index.ts
3139
3139
 
3140
3140
 
3141
- const version = "4.10.14";
3141
+ const version = "4.10.15";
3142
3142
  core_.VxeUI.version = version;
3143
3143
  core_.VxeUI.tableVersion = version;
3144
3144
  core_.VxeUI.setConfig({
@@ -3585,7 +3585,7 @@ var esnext_iterator_some = __webpack_require__(7550);
3585
3585
  const {
3586
3586
  log: log_log
3587
3587
  } = core_.VxeUI;
3588
- const log_version = `table v${"4.10.14"}`;
3588
+ const log_version = `table v${"4.10.15"}`;
3589
3589
  const warnLog = log_log.create('warn', log_version);
3590
3590
  const errLog = log_log.create('error', log_version);
3591
3591
  ;// ./packages/table/src/columnInfo.ts
@@ -6199,8 +6199,6 @@ const renderType = 'body';
6199
6199
  computeColumnOpts,
6200
6200
  computeRowDragOpts,
6201
6201
  computeColumnDragOpts,
6202
- computeLeftFixedWidth,
6203
- computeRightFixedWidth,
6204
6202
  computeResizableOpts
6205
6203
  } = $xeTable.getComputeMaps();
6206
6204
  const refElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
@@ -6641,7 +6639,8 @@ const renderType = 'body';
6641
6639
  expandColumn,
6642
6640
  selectRadioRow,
6643
6641
  pendingRowMaps,
6644
- isDragColMove
6642
+ isDragColMove,
6643
+ rowExpandHeightFlag
6645
6644
  } = tableReactData;
6646
6645
  const {
6647
6646
  fullAllDataRowIdData
@@ -6683,18 +6682,18 @@ const renderType = 'body';
6683
6682
  };
6684
6683
  }
6685
6684
  const rowid = getRowid($xeTable, row);
6686
- const rest = fullAllDataRowIdData[rowid];
6685
+ const rowRest = fullAllDataRowIdData[rowid];
6687
6686
  let rowLevel = 0;
6688
6687
  let seq = -1;
6689
6688
  let _rowIndex = 0;
6690
- if (rest) {
6691
- rowLevel = rest.level;
6689
+ if (rowRest) {
6690
+ rowLevel = rowRest.level;
6692
6691
  if (treeConfig && transform && seqMode === 'increasing') {
6693
- seq = rest._index + 1;
6692
+ seq = rowRest._index + 1;
6694
6693
  } else {
6695
- seq = rest.seq;
6694
+ seq = rowRest.seq;
6696
6695
  }
6697
- _rowIndex = rest._index;
6696
+ _rowIndex = rowRest._index;
6698
6697
  }
6699
6698
  const params = {
6700
6699
  $table: $xeTable,
@@ -6762,52 +6761,63 @@ const renderType = 'body';
6762
6761
  const expandOpts = computeExpandOpts.value;
6763
6762
  const {
6764
6763
  height: expandHeight,
6765
- padding
6764
+ padding,
6765
+ mode: expandMode
6766
6766
  } = expandOpts;
6767
- const cellStyle = {};
6768
- if (expandHeight) {
6769
- cellStyle.height = `${expandHeight}px`;
6770
- }
6771
- if (treeConfig) {
6772
- cellStyle.paddingLeft = `${rowLevel * treeOpts.indent + 30}px`;
6767
+ if (expandMode === 'fixed') {
6768
+ rows.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', {
6769
+ class: 'vxe-body--row-expanded-place',
6770
+ key: `expand_${rowid}`,
6771
+ rowid
6772
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', {
6773
+ class: 'vxe-body--row-expanded-place-column',
6774
+ colspan: tableColumn.length,
6775
+ style: {
6776
+ height: `${rowExpandHeightFlag ? rowRest.expandHeight || expandHeight : 0}px`
6777
+ }
6778
+ })]));
6779
+ } else {
6780
+ const cellStyle = {};
6781
+ if (expandHeight) {
6782
+ cellStyle.height = `${expandHeight}px`;
6783
+ }
6784
+ if (treeConfig) {
6785
+ cellStyle.paddingLeft = `${rowLevel * treeOpts.indent + 30}px`;
6786
+ }
6787
+ const {
6788
+ showOverflow
6789
+ } = expandColumn;
6790
+ 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;
6791
+ const expandParams = {
6792
+ $table: $xeTable,
6793
+ seq,
6794
+ column: expandColumn,
6795
+ fixed: fixedType,
6796
+ type: renderType,
6797
+ level: rowLevel,
6798
+ row,
6799
+ rowIndex,
6800
+ $rowIndex,
6801
+ _rowIndex
6802
+ };
6803
+ rows.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', {
6804
+ class: ['vxe-body--expanded-row', {
6805
+ 'is--padding': padding
6806
+ }],
6807
+ key: `expand_${rowid}`
6808
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', {
6809
+ class: ['vxe-body--expanded-column', {
6810
+ 'fixed--hidden': fixedType && !hasFixedColumn,
6811
+ 'col--ellipsis': hasEllipsis
6812
+ }],
6813
+ colspan: tableColumn.length
6814
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
6815
+ class: ['vxe-body--expanded-cell', {
6816
+ 'is--ellipsis': expandHeight
6817
+ }],
6818
+ style: cellStyle
6819
+ }, [expandColumn.renderData(expandParams)])])]));
6773
6820
  }
6774
- const {
6775
- showOverflow
6776
- } = expandColumn;
6777
- 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;
6778
- const expandParams = {
6779
- $table: $xeTable,
6780
- seq,
6781
- column: expandColumn,
6782
- fixed: fixedType,
6783
- type: renderType,
6784
- level: rowLevel,
6785
- row,
6786
- rowIndex,
6787
- $rowIndex,
6788
- _rowIndex
6789
- };
6790
- rows.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', {
6791
- class: ['vxe-body--expanded-row', {
6792
- 'is--padding': padding
6793
- }],
6794
- key: `expand_${rowid}`,
6795
- style: rowStyle ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(rowStyle) ? rowStyle(expandParams) : rowStyle : null,
6796
- ...trOn
6797
- }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', {
6798
- class: {
6799
- 'vxe-body--expanded-column': 1,
6800
- 'fixed--hidden': fixedType && !hasFixedColumn,
6801
- 'col--ellipsis': hasEllipsis
6802
- },
6803
- colspan: tableColumn.length
6804
- }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
6805
- class: {
6806
- 'vxe-body--expanded-cell': 1,
6807
- 'is--ellipsis': expandHeight
6808
- },
6809
- style: cellStyle
6810
- }, [expandColumn.renderData(expandParams)])])]));
6811
6821
  }
6812
6822
  // 如果是树形表格
6813
6823
  if (isExpandTree) {
@@ -6888,14 +6898,13 @@ const renderType = 'body';
6888
6898
  const emptyOpts = computeEmptyOpts.value;
6889
6899
  const mouseOpts = computeMouseOpts.value;
6890
6900
  const rowDragOpts = computeRowDragOpts.value;
6891
- const leftFixedWidth = computeLeftFixedWidth.value;
6892
- const rightFixedWidth = computeRightFixedWidth.value;
6901
+ const expandOpts = computeExpandOpts.value;
6893
6902
  let renderDataList = tableData;
6894
6903
  let renderColumnList = tableColumn;
6895
6904
  let isOptimizeMode = false;
6896
6905
  // 如果是使用优化模式
6897
6906
  if (scrollXLoad || scrollYLoad || isAllOverflow) {
6898
- if (expandColumn || spanMethod || footerSpanMethod) {
6907
+ if (expandColumn && expandOpts.mode !== 'fixed' || spanMethod || footerSpanMethod) {
6899
6908
  // 如果不支持优化模式
6900
6909
  } else {
6901
6910
  isOptimizeMode = true;
@@ -6976,9 +6985,6 @@ const renderType = 'body';
6976
6985
  $xeTable.triggerBodyScrollEvent(evnt, fixedType);
6977
6986
  }
6978
6987
  };
6979
- if (scrollYLoad || leftFixedWidth || rightFixedWidth) {
6980
- ons.onWheel = $xeTable.triggerBodyWheelEvent;
6981
- }
6982
6988
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
6983
6989
  ref: refElem,
6984
6990
  class: ['vxe-table--body-wrapper', fixedType ? `fixed-${fixedType}--wrapper` : 'body--wrapper'],
@@ -10551,8 +10557,9 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
10551
10557
  mini: 36
10552
10558
  },
10553
10559
  scrollVMLoading: false,
10560
+ rowExpandHeightFlag: 1,
10554
10561
  calcCellHeightFlag: 1,
10555
- resizeHeightFlag: 0,
10562
+ resizeHeightFlag: 1,
10556
10563
  isCustomStatus: false,
10557
10564
  isDragRowMove: false,
10558
10565
  dragRow: null,
@@ -10669,6 +10676,8 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
10669
10676
  const refDragTipElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
10670
10677
  const refDragRowLineElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
10671
10678
  const refDragColLineElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
10679
+ const refRowExpandElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
10680
+ const refRowExpandYSpaceElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
10672
10681
  const refScrollXVirtualElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
10673
10682
  const refScrollYVirtualElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
10674
10683
  const refScrollXHandleElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
@@ -10930,6 +10939,26 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
10930
10939
  const computeCustomOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
10931
10940
  return Object.assign({}, table_getConfig().table.customConfig, props.customConfig);
10932
10941
  });
10942
+ const computeTableRowExpandedList = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
10943
+ const {
10944
+ rowExpandedMaps,
10945
+ tableData,
10946
+ expandColumn
10947
+ } = reactData;
10948
+ const expandList = [];
10949
+ if (expandColumn) {
10950
+ const rowKeys = {};
10951
+ tableData.forEach(row => {
10952
+ rowKeys[getRowid($xeTable, row)] = true;
10953
+ });
10954
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(rowExpandedMaps, (row, rowid) => {
10955
+ if (rowKeys[rowid]) {
10956
+ expandList.push(row);
10957
+ }
10958
+ });
10959
+ }
10960
+ return expandList;
10961
+ });
10933
10962
  const computeAutoWidthColumnList = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
10934
10963
  const {
10935
10964
  visibleColumn
@@ -11216,6 +11245,14 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
11216
11245
  visibleSize: 6
11217
11246
  };
11218
11247
  };
11248
+ const calcVarRowHeightConfig = (sizeKey, sizeEl) => {
11249
+ const {
11250
+ rowHeightStore
11251
+ } = reactData;
11252
+ if (sizeEl && sizeEl.clientHeight) {
11253
+ rowHeightStore[sizeKey] = sizeEl.clientHeight;
11254
+ }
11255
+ };
11219
11256
  const computeRowHeight = () => {
11220
11257
  const {
11221
11258
  isAllOverflow
@@ -11248,7 +11285,9 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
11248
11285
  };
11249
11286
  const handleVirtualYVisible = currScrollTop => {
11250
11287
  const {
11251
- isAllOverflow
11288
+ isAllOverflow,
11289
+ expandColumn,
11290
+ rowExpandedMaps
11252
11291
  } = reactData;
11253
11292
  const {
11254
11293
  elemStore,
@@ -11256,6 +11295,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
11256
11295
  afterFullData,
11257
11296
  fullAllDataRowIdData
11258
11297
  } = internalData;
11298
+ const expandOpts = computeExpandOpts.value;
11259
11299
  const rowOpts = computeRowOpts.value;
11260
11300
  const cellOpts = computeCellOpts.value;
11261
11301
  const defaultRowHeight = computeDefaultRowHeight.value;
@@ -11268,7 +11308,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
11268
11308
  let offsetTop = 0;
11269
11309
  let visibleSize = 0;
11270
11310
  const isCustomCellHeight = isResizeCellHeight || cellOpts.height || rowOpts.height;
11271
- if (!isCustomCellHeight && isAllOverflow) {
11311
+ if (!isCustomCellHeight && !expandColumn && isAllOverflow) {
11272
11312
  toVisibleIndex = Math.floor(scrollTop / defaultRowHeight);
11273
11313
  visibleSize = Math.ceil(clientHeight / defaultRowHeight) + 1;
11274
11314
  } else {
@@ -11286,6 +11326,10 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
11286
11326
  break;
11287
11327
  }
11288
11328
  }
11329
+ // 是否展开行
11330
+ if (expandColumn && rowExpandedMaps[rowid]) {
11331
+ offsetTop += rowRest.expandHeight || expandOpts.height || 0;
11332
+ }
11289
11333
  }
11290
11334
  }
11291
11335
  return {
@@ -11938,7 +11982,8 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
11938
11982
  level: 0,
11939
11983
  height: 0,
11940
11984
  resizeHeight: 0,
11941
- oTop: 0
11985
+ oTop: 0,
11986
+ expandHeight: 0
11942
11987
  };
11943
11988
  fullAllDataRowIdData[rowid] = rest;
11944
11989
  fullDataRowIdData[rowid] = rest;
@@ -11988,7 +12033,8 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
11988
12033
  level: 0,
11989
12034
  height: 0,
11990
12035
  resizeHeight: 0,
11991
- oTop: 0
12036
+ oTop: 0,
12037
+ expandHeight: 0
11992
12038
  };
11993
12039
  fullAllDataRowIdData[rowid] = rest;
11994
12040
  fullDataRowIdData[rowid] = rest;
@@ -12311,6 +12357,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
12311
12357
  const emptyPlaceholderElem = refEmptyPlaceholder.value;
12312
12358
  const cellOffsetWidth = computeCellOffsetWidth.value;
12313
12359
  const mouseOpts = computeMouseOpts.value;
12360
+ const expandOpts = computeExpandOpts.value;
12314
12361
  const bodyWrapperElem = getRefElem(elemStore['main-body-wrapper']);
12315
12362
  const bodyTableElem = getRefElem(elemStore['main-body-table']);
12316
12363
  if (emptyPlaceholderElem) {
@@ -12380,6 +12427,11 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
12380
12427
  yBottomCornerEl.style.top = `${headerHeight + bodyHeight}px`;
12381
12428
  yBottomCornerEl.style.display = footerHeight ? 'block' : '';
12382
12429
  }
12430
+ const rowExpandEl = refRowExpandElem.value;
12431
+ if (rowExpandEl) {
12432
+ rowExpandEl.style.height = `${bodyHeight}px`;
12433
+ rowExpandEl.style.top = `${headerHeight}px`;
12434
+ }
12383
12435
  containerList.forEach((name, index) => {
12384
12436
  const fixedType = index > 0 ? name : '';
12385
12437
  const layoutList = ['header', 'body', 'footer'];
@@ -12489,7 +12541,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
12489
12541
  let isOptimizeMode = false;
12490
12542
  // 如果是使用优化模式
12491
12543
  if (scrollXLoad || scrollYLoad || isAllOverflow) {
12492
- if (expandColumn || spanMethod || footerSpanMethod) {
12544
+ if (expandColumn && expandOpts.mode !== 'fixed' || spanMethod || footerSpanMethod) {
12493
12545
  // 如果不支持优化模式
12494
12546
  } else {
12495
12547
  isOptimizeMode = true;
@@ -13255,15 +13307,25 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
13255
13307
  if (!el || !el.clientWidth) {
13256
13308
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
13257
13309
  }
13310
+ const varEl = refVarElem.value;
13311
+ if (varEl) {
13312
+ const [defEl, mediumEl, smallEl, miniEl] = varEl.children;
13313
+ calcVarRowHeightConfig('default', defEl);
13314
+ calcVarRowHeightConfig('medium', mediumEl);
13315
+ calcVarRowHeightConfig('small', smallEl);
13316
+ calcVarRowHeightConfig('mini', miniEl);
13317
+ }
13258
13318
  calcCellWidth();
13259
13319
  autoCellWidth();
13260
13320
  updateStyle();
13321
+ updateRowExpandStyle();
13261
13322
  return computeScrollLoad().then(() => {
13262
13323
  if (reFull === true) {
13263
13324
  // 初始化时需要在列计算之后再执行优化运算,达到最优显示效果
13264
13325
  calcCellWidth();
13265
13326
  autoCellWidth();
13266
13327
  updateStyle();
13328
+ updateRowExpandStyle();
13267
13329
  return computeScrollLoad();
13268
13330
  }
13269
13331
  });
@@ -14072,6 +14134,71 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
14072
14134
  setTimeout(() => $xeTable.recalculate(true), 300);
14073
14135
  });
14074
14136
  };
14137
+ const updateRowExpandStyle = () => {
14138
+ const {
14139
+ expandColumn,
14140
+ scrollYLoad,
14141
+ rowExpandedMaps
14142
+ } = reactData;
14143
+ const expandOpts = computeExpandOpts.value;
14144
+ const rowOpts = computeRowOpts.value;
14145
+ const cellOpts = computeCellOpts.value;
14146
+ const defaultRowHeight = computeDefaultRowHeight.value;
14147
+ const {
14148
+ mode
14149
+ } = expandOpts;
14150
+ if (expandColumn && mode === 'fixed') {
14151
+ const {
14152
+ elemStore,
14153
+ afterFullData,
14154
+ fullAllDataRowIdData
14155
+ } = internalData;
14156
+ const rowExpandEl = refRowExpandElem.value;
14157
+ const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
14158
+ if (rowExpandEl && bodyScrollElem) {
14159
+ let isUpdateHeight = false;
14160
+ if (scrollYLoad) {
14161
+ let offsetTop = 0;
14162
+ for (let rIndex = 0, rLen = afterFullData.length; rIndex < rLen; rIndex++) {
14163
+ const row = afterFullData[rIndex];
14164
+ const rowid = getRowid($xeTable, row);
14165
+ const rowRest = fullAllDataRowIdData[rowid] || {};
14166
+ rowRest.oTop = offsetTop;
14167
+ offsetTop += rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight;
14168
+ // 是否展开行
14169
+ if (expandColumn && rowExpandedMaps[rowid]) {
14170
+ offsetTop += rowRest.expandHeight || expandOpts.height || 0;
14171
+ }
14172
+ }
14173
+ }
14174
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(rowExpandEl.children, reEl => {
14175
+ const expandEl = reEl;
14176
+ const rowid = expandEl.getAttribute('rowid') || '';
14177
+ const rowRest = fullAllDataRowIdData[rowid];
14178
+ if (rowRest) {
14179
+ const expandHeight = expandEl.offsetHeight + 1;
14180
+ if (scrollYLoad) {
14181
+ expandEl.style.top = toCssUnit(rowRest.oTop + (rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight));
14182
+ } else {
14183
+ const trEl = bodyScrollElem.querySelector(`.vxe-body--row[rowid="${rowid}"]`);
14184
+ if (trEl) {
14185
+ expandEl.style.top = toCssUnit(trEl.offsetTop + trEl.offsetHeight);
14186
+ }
14187
+ }
14188
+ if (!isUpdateHeight) {
14189
+ if (rowRest.expandHeight !== expandHeight) {
14190
+ isUpdateHeight = true;
14191
+ }
14192
+ }
14193
+ rowRest.expandHeight = expandHeight;
14194
+ }
14195
+ });
14196
+ if (isUpdateHeight) {
14197
+ reactData.rowExpandHeightFlag++;
14198
+ }
14199
+ }
14200
+ }
14201
+ };
14075
14202
  tableMethods = {
14076
14203
  dispatchEvent,
14077
14204
  /**
@@ -14266,7 +14393,8 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
14266
14393
  level: parentLevel + nodes.length,
14267
14394
  height: 0,
14268
14395
  resizeHeight: 0,
14269
- oTop: 0
14396
+ oTop: 0,
14397
+ expandHeight: 0
14270
14398
  };
14271
14399
  fullDataRowIdData[rowid] = rest;
14272
14400
  fullAllDataRowIdData[rowid] = rest;
@@ -15226,6 +15354,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
15226
15354
  const el = refElem.value;
15227
15355
  if (el && el.clientWidth) {
15228
15356
  autoCellWidth();
15357
+ updateRowExpandStyle();
15229
15358
  }
15230
15359
  if (rceTimeout) {
15231
15360
  clearTimeout(rceTimeout);
@@ -17811,7 +17940,8 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
17811
17940
  level,
17812
17941
  height: 0,
17813
17942
  resizeHeight: 0,
17814
- oTop: 0
17943
+ oTop: 0,
17944
+ expandHeight: 0
17815
17945
  };
17816
17946
  }
17817
17947
  cacheItem.row = row;
@@ -20126,6 +20256,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20126
20256
  direction,
20127
20257
  ...params
20128
20258
  };
20259
+ updateRowExpandStyle();
20129
20260
  checkLastSyncScroll(isRollX, isRollY);
20130
20261
  if (rowOpts.isHover || highlightHoverRow) {
20131
20262
  $xeTable.clearHoverRow();
@@ -20187,6 +20318,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20187
20318
  const rightScrollElem = getRefElem(elemStore['right-body-scroll']);
20188
20319
  const headerScrollElem = getRefElem(elemStore['main-header-scroll']);
20189
20320
  const footerScrollElem = getRefElem(elemStore['main-footer-scroll']);
20321
+ const rowExpandEl = refRowExpandElem.value;
20190
20322
  if (inWheelScroll || inVirtualScroll || inHeaderScroll || inFooterScroll) {
20191
20323
  return;
20192
20324
  }
@@ -20233,6 +20365,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20233
20365
  setScrollTop(rightScrollElem, scrollTop);
20234
20366
  }
20235
20367
  setScrollTop(yHandleEl, scrollTop);
20368
+ setScrollTop(rowExpandEl, scrollTop);
20236
20369
  if (scrollYLoad) {
20237
20370
  $xeTable.triggerScrollYEvent(evnt);
20238
20371
  }
@@ -20372,6 +20505,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20372
20505
  const leftScrollElem = getRefElem(elemStore['left-body-scroll']);
20373
20506
  const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
20374
20507
  const rightScrollElem = getRefElem(elemStore['right-body-scroll']);
20508
+ const rowExpandEl = refRowExpandElem.value;
20375
20509
  if (!xHandleEl) {
20376
20510
  return;
20377
20511
  }
@@ -20407,6 +20541,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20407
20541
  setScrollTop(bodyScrollElem, currTopNum);
20408
20542
  setScrollTop(leftScrollElem, currTopNum);
20409
20543
  setScrollTop(rightScrollElem, currTopNum);
20544
+ setScrollTop(rowExpandEl, currTopNum);
20410
20545
  if (scrollYLoad) {
20411
20546
  $xeTable.triggerScrollYEvent(evnt);
20412
20547
  }
@@ -20415,16 +20550,6 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20415
20550
  fixed: ''
20416
20551
  });
20417
20552
  });
20418
- // internalData.inWheelScroll = true
20419
- // setScrollTop(yHandleEl, scrollTop)
20420
- // setScrollTop(bodyScrollElem, scrollTop)
20421
- // setScrollTop(leftScrollElem, scrollTop)
20422
- // setScrollTop(rightScrollElem, scrollTop)
20423
- // loadScrollYData(scrollTop)
20424
- // $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
20425
- // type: 'footer',
20426
- // fixed: ''
20427
- // })
20428
20553
  }
20429
20554
  },
20430
20555
  triggerVirtualScrollXEvent(evnt) {
@@ -20493,6 +20618,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20493
20618
  const leftScrollElem = getRefElem(elemStore['left-body-scroll']);
20494
20619
  const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
20495
20620
  const rightScrollElem = getRefElem(elemStore['right-body-scroll']);
20621
+ const rowExpandEl = refRowExpandElem.value;
20496
20622
  const xHandleEl = refScrollXHandleElem.value;
20497
20623
  const wrapperEl = evnt.currentTarget;
20498
20624
  const {
@@ -20509,6 +20635,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20509
20635
  setScrollTop(bodyScrollElem, scrollTop);
20510
20636
  setScrollTop(leftScrollElem, scrollTop);
20511
20637
  setScrollTop(rightScrollElem, scrollTop);
20638
+ setScrollTop(rowExpandEl, scrollTop);
20512
20639
  if (scrollYLoad) {
20513
20640
  $xeTable.triggerScrollYEvent(evnt);
20514
20641
  }
@@ -20605,7 +20732,9 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20605
20732
  updateScrollYSpace() {
20606
20733
  const {
20607
20734
  isAllOverflow,
20608
- scrollYLoad
20735
+ scrollYLoad,
20736
+ expandColumn,
20737
+ rowExpandedMaps
20609
20738
  } = reactData;
20610
20739
  const {
20611
20740
  scrollYStore,
@@ -20617,6 +20746,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20617
20746
  const {
20618
20747
  startIndex
20619
20748
  } = scrollYStore;
20749
+ const expandOpts = computeExpandOpts.value;
20620
20750
  const rowOpts = computeRowOpts.value;
20621
20751
  const cellOpts = computeCellOpts.value;
20622
20752
  const defaultRowHeight = computeDefaultRowHeight.value;
@@ -20626,7 +20756,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20626
20756
  let ySpaceHeight = 0;
20627
20757
  if (scrollYLoad) {
20628
20758
  const isCustomCellHeight = isResizeCellHeight || cellOpts.height || rowOpts.height;
20629
- if (!isCustomCellHeight && isAllOverflow) {
20759
+ if (!isCustomCellHeight && !expandColumn && isAllOverflow) {
20630
20760
  ySpaceHeight = afterFullData.length * defaultRowHeight;
20631
20761
  topSpaceHeight = Math.max(0, startIndex * defaultRowHeight);
20632
20762
  } else {
@@ -20635,12 +20765,20 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20635
20765
  const rowid = getRowid($xeTable, row);
20636
20766
  const rowRest = fullAllDataRowIdData[rowid] || {};
20637
20767
  ySpaceHeight += rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight;
20768
+ // 是否展开行
20769
+ if (expandColumn && rowExpandedMaps[rowid]) {
20770
+ ySpaceHeight += rowRest.expandHeight || expandOpts.height || 0;
20771
+ }
20638
20772
  }
20639
20773
  for (let i = 0; i < startIndex; i++) {
20640
20774
  const row = afterFullData[i];
20641
20775
  const rowid = getRowid($xeTable, row);
20642
20776
  const rowRest = fullAllDataRowIdData[rowid] || {};
20643
20777
  topSpaceHeight += rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight;
20778
+ // 是否展开行
20779
+ if (expandColumn && rowExpandedMaps[rowid]) {
20780
+ topSpaceHeight += rowRest.expandHeight || expandOpts.height || 0;
20781
+ }
20644
20782
  }
20645
20783
  }
20646
20784
  } else {
@@ -20665,6 +20803,10 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20665
20803
  if (scrollYSpaceEl) {
20666
20804
  scrollYSpaceEl.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
20667
20805
  }
20806
+ const rowExpandYSpaceEl = refRowExpandYSpaceElem.value;
20807
+ if (rowExpandYSpaceEl) {
20808
+ rowExpandYSpaceEl.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
20809
+ }
20668
20810
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(() => {
20669
20811
  updateStyle();
20670
20812
  });
@@ -20674,6 +20816,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20674
20816
  isAllOverflow
20675
20817
  } = reactData;
20676
20818
  handleTableColumn();
20819
+ $xeTable.updateScrollYSpace();
20677
20820
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(() => {
20678
20821
  handleTableColumn();
20679
20822
  $xeTable.updateScrollXSpace();
@@ -20684,6 +20827,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20684
20827
  },
20685
20828
  updateScrollYData() {
20686
20829
  $xeTable.handleTableData();
20830
+ $xeTable.updateScrollYSpace();
20687
20831
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(() => {
20688
20832
  $xeTable.handleTableData();
20689
20833
  $xeTable.updateScrollYSpace();
@@ -20912,6 +21056,91 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20912
21056
  }
20913
21057
  return table_renderEmptyElement($xeTable);
20914
21058
  };
21059
+ const renderRowExpandedVNs = () => {
21060
+ const {
21061
+ treeConfig
21062
+ } = props;
21063
+ const {
21064
+ expandColumn
21065
+ } = reactData;
21066
+ const tableRowExpandedList = computeTableRowExpandedList.value;
21067
+ const expandOpts = computeExpandOpts.value;
21068
+ const {
21069
+ mode
21070
+ } = expandOpts;
21071
+ if (mode !== 'fixed') {
21072
+ return table_renderEmptyElement($xeTable);
21073
+ }
21074
+ const expandVNs = [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
21075
+ key: 'repY',
21076
+ ref: refRowExpandYSpaceElem
21077
+ })];
21078
+ if (expandColumn) {
21079
+ tableRowExpandedList.forEach(row => {
21080
+ const expandOpts = computeExpandOpts.value;
21081
+ const {
21082
+ height: expandHeight,
21083
+ padding
21084
+ } = expandOpts;
21085
+ const {
21086
+ fullAllDataRowIdData
21087
+ } = internalData;
21088
+ const treeOpts = computeTreeOpts.value;
21089
+ const {
21090
+ transform,
21091
+ seqMode
21092
+ } = treeOpts;
21093
+ const cellStyle = {};
21094
+ const rowid = getRowid($xeTable, row);
21095
+ const rest = fullAllDataRowIdData[rowid];
21096
+ let rowLevel = 0;
21097
+ let seq = -1;
21098
+ let _rowIndex = 0;
21099
+ const rowIndex = $xeTable.getRowIndex(row);
21100
+ const $rowIndex = $xeTable.getVMRowIndex(row);
21101
+ if (rest) {
21102
+ rowLevel = rest.level;
21103
+ if (treeConfig && transform && seqMode === 'increasing') {
21104
+ seq = rest._index + 1;
21105
+ } else {
21106
+ seq = rest.seq;
21107
+ }
21108
+ _rowIndex = rest._index;
21109
+ }
21110
+ if (expandHeight) {
21111
+ cellStyle.height = `${expandHeight}px`;
21112
+ }
21113
+ if (treeConfig) {
21114
+ cellStyle.paddingLeft = `${rowLevel * treeOpts.indent + 30}px`;
21115
+ }
21116
+ const expandParams = {
21117
+ $table: $xeTable,
21118
+ seq,
21119
+ column: expandColumn,
21120
+ fixed: '',
21121
+ type: 'body',
21122
+ level: rowLevel,
21123
+ row,
21124
+ rowIndex,
21125
+ $rowIndex,
21126
+ _rowIndex
21127
+ };
21128
+ expandVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
21129
+ key: rowid,
21130
+ class: ['vxe-body--row-expanded-cell', {
21131
+ 'is--padding': padding,
21132
+ 'is--ellipsis': expandHeight
21133
+ }],
21134
+ rowid,
21135
+ style: cellStyle
21136
+ }, expandColumn.renderData(expandParams)));
21137
+ });
21138
+ }
21139
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
21140
+ ref: refRowExpandElem,
21141
+ class: 'vxe-table--row-expanded-wrapper'
21142
+ }, expandVNs);
21143
+ };
20915
21144
  const renderScrollX = () => {
20916
21145
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20917
21146
  key: 'vsx',
@@ -20964,6 +21193,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20964
21193
  } = props;
20965
21194
  const {
20966
21195
  overflowX,
21196
+ scrollYLoad,
20967
21197
  tableData,
20968
21198
  tableColumn,
20969
21199
  tableGroupColumn,
@@ -20974,9 +21204,16 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
20974
21204
  leftList,
20975
21205
  rightList
20976
21206
  } = columnStore;
21207
+ const leftFixedWidth = computeLeftFixedWidth.value;
21208
+ const rightFixedWidth = computeRightFixedWidth.value;
21209
+ const ons = {};
21210
+ if (scrollYLoad || leftFixedWidth || rightFixedWidth) {
21211
+ ons.onWheel = $xeTable.triggerBodyWheelEvent;
21212
+ }
20977
21213
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20978
21214
  ref: refTableViewportElem,
20979
- class: 'vxe-table--viewport-wrapper'
21215
+ class: 'vxe-table--viewport-wrapper',
21216
+ ...ons
20980
21217
  }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
20981
21218
  class: 'vxe-table--main-wrapper'
20982
21219
  }, [
@@ -21006,7 +21243,7 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
21006
21243
  tableColumn
21007
21244
  }) : table_renderEmptyElement($xeTable)]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
21008
21245
  class: 'vxe-table--fixed-wrapper'
21009
- }, [leftList && leftList.length && overflowX ? renderFixed('left') : table_renderEmptyElement($xeTable), rightList && rightList.length && overflowX ? renderFixed('right') : table_renderEmptyElement($xeTable)])]);
21246
+ }, [leftList && leftList.length && overflowX ? renderFixed('left') : table_renderEmptyElement($xeTable), rightList && rightList.length && overflowX ? renderFixed('right') : table_renderEmptyElement($xeTable)]), renderRowExpandedVNs()]);
21010
21247
  };
21011
21248
  const renderBody = () => {
21012
21249
  const scrollbarYToLeft = computeScrollbarYToLeft.value;
@@ -21443,28 +21680,9 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
21443
21680
  });
21444
21681
  });
21445
21682
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onMounted)(() => {
21446
- const {
21447
- rowHeightStore
21448
- } = reactData;
21449
- const varEl = refVarElem.value;
21450
21683
  const columnOpts = computeColumnOpts.value;
21451
21684
  const rowOpts = computeRowOpts.value;
21452
21685
  const customOpts = computeCustomOpts.value;
21453
- if (varEl) {
21454
- const [defEl, mediumEl, smallEl, miniEl] = varEl.children;
21455
- if (defEl) {
21456
- rowHeightStore.default = defEl.clientHeight;
21457
- }
21458
- if (mediumEl) {
21459
- rowHeightStore.medium = mediumEl.clientHeight;
21460
- }
21461
- if (smallEl) {
21462
- rowHeightStore.small = smallEl.clientHeight;
21463
- }
21464
- if (miniEl) {
21465
- rowHeightStore.mini = miniEl.clientHeight;
21466
- }
21467
- }
21468
21686
  if (columnOpts.drag || rowOpts.drag || customOpts.allowSort) {
21469
21687
  initTpImg();
21470
21688
  }
@@ -22733,7 +22951,8 @@ edit_hook_hooks.add('tableEditModule', {
22733
22951
  level: parentLevel + 1,
22734
22952
  height: 0,
22735
22953
  resizeHeight: 0,
22736
- oTop: 0
22954
+ oTop: 0,
22955
+ expandHeight: 0
22737
22956
  };
22738
22957
  fullDataRowIdData[rowid] = rest;
22739
22958
  fullAllDataRowIdData[rowid] = rest;
@@ -22758,7 +22977,8 @@ edit_hook_hooks.add('tableEditModule', {
22758
22977
  level: 0,
22759
22978
  height: 0,
22760
22979
  resizeHeight: 0,
22761
- oTop: 0
22980
+ oTop: 0,
22981
+ expandHeight: 0
22762
22982
  };
22763
22983
  fullDataRowIdData[rowid] = rest;
22764
22984
  fullAllDataRowIdData[rowid] = rest;
@@ -22814,7 +23034,8 @@ edit_hook_hooks.add('tableEditModule', {
22814
23034
  level: 0,
22815
23035
  height: 0,
22816
23036
  resizeHeight: 0,
22817
- oTop: 0
23037
+ oTop: 0,
23038
+ expandHeight: 0
22818
23039
  };
22819
23040
  fullDataRowIdData[rowid] = rest;
22820
23041
  fullAllDataRowIdData[rowid] = rest;
@@ -22852,7 +23073,8 @@ edit_hook_hooks.add('tableEditModule', {
22852
23073
  level: 0,
22853
23074
  height: 0,
22854
23075
  resizeHeight: 0,
22855
- oTop: 0
23076
+ oTop: 0,
23077
+ expandHeight: 0
22856
23078
  };
22857
23079
  fullDataRowIdData[rowid] = rest;
22858
23080
  fullAllDataRowIdData[rowid] = rest;
@@ -22913,7 +23135,8 @@ edit_hook_hooks.add('tableEditModule', {
22913
23135
  level: parentLevel + 1,
22914
23136
  height: 0,
22915
23137
  resizeHeight: 0,
22916
- oTop: 0
23138
+ oTop: 0,
23139
+ expandHeight: 0
22917
23140
  };
22918
23141
  fullDataRowIdData[rowid] = rest;
22919
23142
  fullAllDataRowIdData[rowid] = rest;