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
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, h, reactive, ref, provide, inject, nextTick, onActivated, onDeactivated, onBeforeUnmount, onUnmounted, watch, computed, onMounted } from 'vue';
2
2
  import XEUtils from 'xe-utils';
3
- import { browse, initTpImg, getTpImg, isPx, isScale, hasClass, addClass, removeClass, getEventTargetNode, getPaddingTopBottomSize, getOffsetPos, setScrollTop, setScrollLeft } from '../../ui/src/dom';
3
+ import { browse, initTpImg, getTpImg, isPx, isScale, hasClass, addClass, removeClass, getEventTargetNode, getPaddingTopBottomSize, getOffsetPos, setScrollTop, setScrollLeft, toCssUnit } from '../../ui/src/dom';
4
4
  import { getLastZIndex, nextZIndex, hasChildrenList, getFuncText, isEnableConf, formatText, eqEmptyValue } from '../../ui/src/utils';
5
5
  import { VxeUI } from '../../ui';
6
6
  import Cell from './cell';
@@ -250,8 +250,9 @@ export default defineComponent({
250
250
  mini: 36
251
251
  },
252
252
  scrollVMLoading: false,
253
+ rowExpandHeightFlag: 1,
253
254
  calcCellHeightFlag: 1,
254
- resizeHeightFlag: 0,
255
+ resizeHeightFlag: 1,
255
256
  isCustomStatus: false,
256
257
  isDragRowMove: false,
257
258
  dragRow: null,
@@ -368,6 +369,8 @@ export default defineComponent({
368
369
  const refDragTipElem = ref();
369
370
  const refDragRowLineElem = ref();
370
371
  const refDragColLineElem = ref();
372
+ const refRowExpandElem = ref();
373
+ const refRowExpandYSpaceElem = ref();
371
374
  const refScrollXVirtualElem = ref();
372
375
  const refScrollYVirtualElem = ref();
373
376
  const refScrollXHandleElem = ref();
@@ -604,6 +607,22 @@ export default defineComponent({
604
607
  const computeCustomOpts = computed(() => {
605
608
  return Object.assign({}, getConfig().table.customConfig, props.customConfig);
606
609
  });
610
+ const computeTableRowExpandedList = computed(() => {
611
+ const { rowExpandedMaps, tableData, expandColumn } = reactData;
612
+ const expandList = [];
613
+ if (expandColumn) {
614
+ const rowKeys = {};
615
+ tableData.forEach(row => {
616
+ rowKeys[getRowid($xeTable, row)] = true;
617
+ });
618
+ XEUtils.each(rowExpandedMaps, (row, rowid) => {
619
+ if (rowKeys[rowid]) {
620
+ expandList.push(row);
621
+ }
622
+ });
623
+ }
624
+ return expandList;
625
+ });
607
626
  const computeAutoWidthColumnList = computed(() => {
608
627
  const { visibleColumn } = internalData;
609
628
  const { tableColumn } = reactData;
@@ -842,6 +861,12 @@ export default defineComponent({
842
861
  }
843
862
  return { toVisibleIndex: 0, visibleSize: 6 };
844
863
  };
864
+ const calcVarRowHeightConfig = (sizeKey, sizeEl) => {
865
+ const { rowHeightStore } = reactData;
866
+ if (sizeEl && sizeEl.clientHeight) {
867
+ rowHeightStore[sizeKey] = sizeEl.clientHeight;
868
+ }
869
+ };
845
870
  const computeRowHeight = () => {
846
871
  const { isAllOverflow } = reactData;
847
872
  const tableHeader = refTableHeader.value;
@@ -872,8 +897,9 @@ export default defineComponent({
872
897
  return Math.max(18, rowHeight);
873
898
  };
874
899
  const handleVirtualYVisible = (currScrollTop) => {
875
- const { isAllOverflow } = reactData;
900
+ const { isAllOverflow, expandColumn, rowExpandedMaps } = reactData;
876
901
  const { elemStore, isResizeCellHeight, afterFullData, fullAllDataRowIdData } = internalData;
902
+ const expandOpts = computeExpandOpts.value;
877
903
  const rowOpts = computeRowOpts.value;
878
904
  const cellOpts = computeCellOpts.value;
879
905
  const defaultRowHeight = computeDefaultRowHeight.value;
@@ -886,7 +912,7 @@ export default defineComponent({
886
912
  let offsetTop = 0;
887
913
  let visibleSize = 0;
888
914
  const isCustomCellHeight = isResizeCellHeight || cellOpts.height || rowOpts.height;
889
- if (!isCustomCellHeight && isAllOverflow) {
915
+ if (!isCustomCellHeight && !expandColumn && isAllOverflow) {
890
916
  toVisibleIndex = Math.floor(scrollTop / defaultRowHeight);
891
917
  visibleSize = Math.ceil(clientHeight / defaultRowHeight) + 1;
892
918
  }
@@ -905,6 +931,10 @@ export default defineComponent({
905
931
  break;
906
932
  }
907
933
  }
934
+ // 是否展开行
935
+ if (expandColumn && rowExpandedMaps[rowid]) {
936
+ offsetTop += rowRest.expandHeight || expandOpts.height || 0;
937
+ }
908
938
  }
909
939
  }
910
940
  return { toVisibleIndex: Math.max(0, toVisibleIndex), visibleSize: Math.max(6, visibleSize) };
@@ -1456,7 +1486,7 @@ export default defineComponent({
1456
1486
  rowRest._index = index;
1457
1487
  }
1458
1488
  else {
1459
- const rest = { row, rowid, seq, index: -1, $index: -1, _index: index, treeIndex: -1, items: [], parent: null, level: 0, height: 0, resizeHeight: 0, oTop: 0 };
1489
+ const rest = { row, rowid, seq, index: -1, $index: -1, _index: index, treeIndex: -1, items: [], parent: null, level: 0, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 };
1460
1490
  fullAllDataRowIdData[rowid] = rest;
1461
1491
  fullDataRowIdData[rowid] = rest;
1462
1492
  }
@@ -1485,7 +1515,7 @@ export default defineComponent({
1485
1515
  rowRest.treeIndex = index;
1486
1516
  }
1487
1517
  else {
1488
- const rest = { row, rowid, seq, index: -1, $index: -1, _index: -1, treeIndex: -1, items: [], parent: null, level: 0, height: 0, resizeHeight: 0, oTop: 0 };
1518
+ const rest = { row, rowid, seq, index: -1, $index: -1, _index: -1, treeIndex: -1, items: [], parent: null, level: 0, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 };
1489
1519
  fullAllDataRowIdData[rowid] = rest;
1490
1520
  fullDataRowIdData[rowid] = rest;
1491
1521
  }
@@ -1695,6 +1725,7 @@ export default defineComponent({
1695
1725
  const emptyPlaceholderElem = refEmptyPlaceholder.value;
1696
1726
  const cellOffsetWidth = computeCellOffsetWidth.value;
1697
1727
  const mouseOpts = computeMouseOpts.value;
1728
+ const expandOpts = computeExpandOpts.value;
1698
1729
  const bodyWrapperElem = getRefElem(elemStore['main-body-wrapper']);
1699
1730
  const bodyTableElem = getRefElem(elemStore['main-body-table']);
1700
1731
  if (emptyPlaceholderElem) {
@@ -1764,6 +1795,11 @@ export default defineComponent({
1764
1795
  yBottomCornerEl.style.top = `${headerHeight + bodyHeight}px`;
1765
1796
  yBottomCornerEl.style.display = footerHeight ? 'block' : '';
1766
1797
  }
1798
+ const rowExpandEl = refRowExpandElem.value;
1799
+ if (rowExpandEl) {
1800
+ rowExpandEl.style.height = `${bodyHeight}px`;
1801
+ rowExpandEl.style.top = `${headerHeight}px`;
1802
+ }
1767
1803
  containerList.forEach((name, index) => {
1768
1804
  const fixedType = index > 0 ? name : '';
1769
1805
  const layoutList = ['header', 'body', 'footer'];
@@ -1872,7 +1908,7 @@ export default defineComponent({
1872
1908
  let isOptimizeMode = false;
1873
1909
  // 如果是使用优化模式
1874
1910
  if (scrollXLoad || scrollYLoad || isAllOverflow) {
1875
- if (expandColumn || spanMethod || footerSpanMethod) {
1911
+ if ((expandColumn && expandOpts.mode !== 'fixed') || spanMethod || footerSpanMethod) {
1876
1912
  // 如果不支持优化模式
1877
1913
  }
1878
1914
  else {
@@ -2524,15 +2560,25 @@ export default defineComponent({
2524
2560
  if (!el || !el.clientWidth) {
2525
2561
  return nextTick();
2526
2562
  }
2563
+ const varEl = refVarElem.value;
2564
+ if (varEl) {
2565
+ const [defEl, mediumEl, smallEl, miniEl] = varEl.children;
2566
+ calcVarRowHeightConfig('default', defEl);
2567
+ calcVarRowHeightConfig('medium', mediumEl);
2568
+ calcVarRowHeightConfig('small', smallEl);
2569
+ calcVarRowHeightConfig('mini', miniEl);
2570
+ }
2527
2571
  calcCellWidth();
2528
2572
  autoCellWidth();
2529
2573
  updateStyle();
2574
+ updateRowExpandStyle();
2530
2575
  return computeScrollLoad().then(() => {
2531
2576
  if (reFull === true) {
2532
2577
  // 初始化时需要在列计算之后再执行优化运算,达到最优显示效果
2533
2578
  calcCellWidth();
2534
2579
  autoCellWidth();
2535
2580
  updateStyle();
2581
+ updateRowExpandStyle();
2536
2582
  return computeScrollLoad();
2537
2583
  }
2538
2584
  });
@@ -3240,6 +3286,62 @@ export default defineComponent({
3240
3286
  setTimeout(() => $xeTable.recalculate(true), 300);
3241
3287
  });
3242
3288
  };
3289
+ const updateRowExpandStyle = () => {
3290
+ const { expandColumn, scrollYLoad, rowExpandedMaps } = reactData;
3291
+ const expandOpts = computeExpandOpts.value;
3292
+ const rowOpts = computeRowOpts.value;
3293
+ const cellOpts = computeCellOpts.value;
3294
+ const defaultRowHeight = computeDefaultRowHeight.value;
3295
+ const { mode } = expandOpts;
3296
+ if (expandColumn && mode === 'fixed') {
3297
+ const { elemStore, afterFullData, fullAllDataRowIdData } = internalData;
3298
+ const rowExpandEl = refRowExpandElem.value;
3299
+ const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
3300
+ if (rowExpandEl && bodyScrollElem) {
3301
+ let isUpdateHeight = false;
3302
+ if (scrollYLoad) {
3303
+ let offsetTop = 0;
3304
+ for (let rIndex = 0, rLen = afterFullData.length; rIndex < rLen; rIndex++) {
3305
+ const row = afterFullData[rIndex];
3306
+ const rowid = getRowid($xeTable, row);
3307
+ const rowRest = fullAllDataRowIdData[rowid] || {};
3308
+ rowRest.oTop = offsetTop;
3309
+ offsetTop += rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight;
3310
+ // 是否展开行
3311
+ if (expandColumn && rowExpandedMaps[rowid]) {
3312
+ offsetTop += rowRest.expandHeight || expandOpts.height || 0;
3313
+ }
3314
+ }
3315
+ }
3316
+ XEUtils.arrayEach(rowExpandEl.children, reEl => {
3317
+ const expandEl = reEl;
3318
+ const rowid = expandEl.getAttribute('rowid') || '';
3319
+ const rowRest = fullAllDataRowIdData[rowid];
3320
+ if (rowRest) {
3321
+ const expandHeight = expandEl.offsetHeight + 1;
3322
+ if (scrollYLoad) {
3323
+ expandEl.style.top = toCssUnit(rowRest.oTop + (rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight));
3324
+ }
3325
+ else {
3326
+ const trEl = bodyScrollElem.querySelector(`.vxe-body--row[rowid="${rowid}"]`);
3327
+ if (trEl) {
3328
+ expandEl.style.top = toCssUnit(trEl.offsetTop + trEl.offsetHeight);
3329
+ }
3330
+ }
3331
+ if (!isUpdateHeight) {
3332
+ if (rowRest.expandHeight !== expandHeight) {
3333
+ isUpdateHeight = true;
3334
+ }
3335
+ }
3336
+ rowRest.expandHeight = expandHeight;
3337
+ }
3338
+ });
3339
+ if (isUpdateHeight) {
3340
+ reactData.rowExpandHeightFlag++;
3341
+ }
3342
+ }
3343
+ }
3344
+ };
3243
3345
  tableMethods = {
3244
3346
  dispatchEvent,
3245
3347
  /**
@@ -3401,7 +3503,7 @@ export default defineComponent({
3401
3503
  XEUtils.eachTree(rows, (childRow, index, items, path, parentItem, nodes) => {
3402
3504
  const rowid = getRowid($xeTable, childRow);
3403
3505
  const parentRow = parentItem || parentRest.row;
3404
- const rest = { row: childRow, rowid, seq: -1, index, _index: -1, $index: -1, treeIndex: -1, items, parent: parentRow, level: parentLevel + nodes.length, height: 0, resizeHeight: 0, oTop: 0 };
3506
+ const rest = { row: childRow, rowid, seq: -1, index, _index: -1, $index: -1, treeIndex: -1, items, parent: parentRow, level: parentLevel + nodes.length, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 };
3405
3507
  fullDataRowIdData[rowid] = rest;
3406
3508
  fullAllDataRowIdData[rowid] = rest;
3407
3509
  }, { children: childrenField });
@@ -4259,6 +4361,7 @@ export default defineComponent({
4259
4361
  const el = refElem.value;
4260
4362
  if (el && el.clientWidth) {
4261
4363
  autoCellWidth();
4364
+ updateRowExpandStyle();
4262
4365
  }
4263
4366
  if (rceTimeout) {
4264
4367
  clearTimeout(rceTimeout);
@@ -6525,7 +6628,7 @@ export default defineComponent({
6525
6628
  }
6526
6629
  let cacheItem = fullAllDataRowIdData[rowid];
6527
6630
  if (isReset || !cacheItem) {
6528
- cacheItem = { row, rowid, seq, index: -1, _index: -1, $index: -1, treeIndex: index, items, parent: parentRow, level, height: 0, resizeHeight: 0, oTop: 0 };
6631
+ cacheItem = { row, rowid, seq, index: -1, _index: -1, $index: -1, treeIndex: index, items, parent: parentRow, level, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 };
6529
6632
  }
6530
6633
  cacheItem.row = row;
6531
6634
  cacheItem.items = items;
@@ -8468,6 +8571,7 @@ export default defineComponent({
8468
8571
  isLeft,
8469
8572
  isRight,
8470
8573
  direction }, params);
8574
+ updateRowExpandStyle();
8471
8575
  checkLastSyncScroll(isRollX, isRollY);
8472
8576
  if (rowOpts.isHover || highlightHoverRow) {
8473
8577
  $xeTable.clearHoverRow();
@@ -8517,6 +8621,7 @@ export default defineComponent({
8517
8621
  const rightScrollElem = getRefElem(elemStore['right-body-scroll']);
8518
8622
  const headerScrollElem = getRefElem(elemStore['main-header-scroll']);
8519
8623
  const footerScrollElem = getRefElem(elemStore['main-footer-scroll']);
8624
+ const rowExpandEl = refRowExpandElem.value;
8520
8625
  if (inWheelScroll || inVirtualScroll || inHeaderScroll || inFooterScroll) {
8521
8626
  return;
8522
8627
  }
@@ -8567,6 +8672,7 @@ export default defineComponent({
8567
8672
  setScrollTop(rightScrollElem, scrollTop);
8568
8673
  }
8569
8674
  setScrollTop(yHandleEl, scrollTop);
8675
+ setScrollTop(rowExpandEl, scrollTop);
8570
8676
  if (scrollYLoad) {
8571
8677
  $xeTable.triggerScrollYEvent(evnt);
8572
8678
  }
@@ -8676,6 +8782,7 @@ export default defineComponent({
8676
8782
  const leftScrollElem = getRefElem(elemStore['left-body-scroll']);
8677
8783
  const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
8678
8784
  const rightScrollElem = getRefElem(elemStore['right-body-scroll']);
8785
+ const rowExpandEl = refRowExpandElem.value;
8679
8786
  if (!xHandleEl) {
8680
8787
  return;
8681
8788
  }
@@ -8711,6 +8818,7 @@ export default defineComponent({
8711
8818
  setScrollTop(bodyScrollElem, currTopNum);
8712
8819
  setScrollTop(leftScrollElem, currTopNum);
8713
8820
  setScrollTop(rightScrollElem, currTopNum);
8821
+ setScrollTop(rowExpandEl, currTopNum);
8714
8822
  if (scrollYLoad) {
8715
8823
  $xeTable.triggerScrollYEvent(evnt);
8716
8824
  }
@@ -8719,16 +8827,6 @@ export default defineComponent({
8719
8827
  fixed: ''
8720
8828
  });
8721
8829
  });
8722
- // internalData.inWheelScroll = true
8723
- // setScrollTop(yHandleEl, scrollTop)
8724
- // setScrollTop(bodyScrollElem, scrollTop)
8725
- // setScrollTop(leftScrollElem, scrollTop)
8726
- // setScrollTop(rightScrollElem, scrollTop)
8727
- // loadScrollYData(scrollTop)
8728
- // $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
8729
- // type: 'footer',
8730
- // fixed: ''
8731
- // })
8732
8830
  }
8733
8831
  },
8734
8832
  triggerVirtualScrollXEvent(evnt) {
@@ -8777,6 +8875,7 @@ export default defineComponent({
8777
8875
  const leftScrollElem = getRefElem(elemStore['left-body-scroll']);
8778
8876
  const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
8779
8877
  const rightScrollElem = getRefElem(elemStore['right-body-scroll']);
8878
+ const rowExpandEl = refRowExpandElem.value;
8780
8879
  const xHandleEl = refScrollXHandleElem.value;
8781
8880
  const wrapperEl = evnt.currentTarget;
8782
8881
  const { scrollTop } = wrapperEl;
@@ -8791,6 +8890,7 @@ export default defineComponent({
8791
8890
  setScrollTop(bodyScrollElem, scrollTop);
8792
8891
  setScrollTop(leftScrollElem, scrollTop);
8793
8892
  setScrollTop(rightScrollElem, scrollTop);
8893
+ setScrollTop(rowExpandEl, scrollTop);
8794
8894
  if (scrollYLoad) {
8795
8895
  $xeTable.triggerScrollYEvent(evnt);
8796
8896
  }
@@ -8871,9 +8971,10 @@ export default defineComponent({
8871
8971
  },
8872
8972
  // 更新纵向 Y 可视渲染上下剩余空间大小
8873
8973
  updateScrollYSpace() {
8874
- const { isAllOverflow, scrollYLoad } = reactData;
8974
+ const { isAllOverflow, scrollYLoad, expandColumn, rowExpandedMaps } = reactData;
8875
8975
  const { scrollYStore, elemStore, isResizeCellHeight, afterFullData, fullAllDataRowIdData } = internalData;
8876
8976
  const { startIndex } = scrollYStore;
8977
+ const expandOpts = computeExpandOpts.value;
8877
8978
  const rowOpts = computeRowOpts.value;
8878
8979
  const cellOpts = computeCellOpts.value;
8879
8980
  const defaultRowHeight = computeDefaultRowHeight.value;
@@ -8883,7 +8984,7 @@ export default defineComponent({
8883
8984
  let ySpaceHeight = 0;
8884
8985
  if (scrollYLoad) {
8885
8986
  const isCustomCellHeight = isResizeCellHeight || cellOpts.height || rowOpts.height;
8886
- if (!isCustomCellHeight && isAllOverflow) {
8987
+ if (!isCustomCellHeight && !expandColumn && isAllOverflow) {
8887
8988
  ySpaceHeight = afterFullData.length * defaultRowHeight;
8888
8989
  topSpaceHeight = Math.max(0, startIndex * defaultRowHeight);
8889
8990
  }
@@ -8893,12 +8994,20 @@ export default defineComponent({
8893
8994
  const rowid = getRowid($xeTable, row);
8894
8995
  const rowRest = fullAllDataRowIdData[rowid] || {};
8895
8996
  ySpaceHeight += rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight;
8997
+ // 是否展开行
8998
+ if (expandColumn && rowExpandedMaps[rowid]) {
8999
+ ySpaceHeight += rowRest.expandHeight || expandOpts.height || 0;
9000
+ }
8896
9001
  }
8897
9002
  for (let i = 0; i < startIndex; i++) {
8898
9003
  const row = afterFullData[i];
8899
9004
  const rowid = getRowid($xeTable, row);
8900
9005
  const rowRest = fullAllDataRowIdData[rowid] || {};
8901
9006
  topSpaceHeight += rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight;
9007
+ // 是否展开行
9008
+ if (expandColumn && rowExpandedMaps[rowid]) {
9009
+ topSpaceHeight += rowRest.expandHeight || expandOpts.height || 0;
9010
+ }
8902
9011
  }
8903
9012
  }
8904
9013
  }
@@ -8924,6 +9033,10 @@ export default defineComponent({
8924
9033
  if (scrollYSpaceEl) {
8925
9034
  scrollYSpaceEl.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
8926
9035
  }
9036
+ const rowExpandYSpaceEl = refRowExpandYSpaceElem.value;
9037
+ if (rowExpandYSpaceEl) {
9038
+ rowExpandYSpaceEl.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
9039
+ }
8927
9040
  return nextTick().then(() => {
8928
9041
  updateStyle();
8929
9042
  });
@@ -8931,6 +9044,7 @@ export default defineComponent({
8931
9044
  updateScrollXData() {
8932
9045
  const { isAllOverflow } = reactData;
8933
9046
  handleTableColumn();
9047
+ $xeTable.updateScrollYSpace();
8934
9048
  return nextTick().then(() => {
8935
9049
  handleTableColumn();
8936
9050
  $xeTable.updateScrollXSpace();
@@ -8941,6 +9055,7 @@ export default defineComponent({
8941
9055
  },
8942
9056
  updateScrollYData() {
8943
9057
  $xeTable.handleTableData();
9058
+ $xeTable.updateScrollYSpace();
8944
9059
  return nextTick().then(() => {
8945
9060
  $xeTable.handleTableData();
8946
9061
  $xeTable.updateScrollYSpace();
@@ -9168,6 +9283,69 @@ export default defineComponent({
9168
9283
  }
9169
9284
  return renderEmptyElement($xeTable);
9170
9285
  };
9286
+ const renderRowExpandedVNs = () => {
9287
+ const { treeConfig } = props;
9288
+ const { expandColumn } = reactData;
9289
+ const tableRowExpandedList = computeTableRowExpandedList.value;
9290
+ const expandOpts = computeExpandOpts.value;
9291
+ const { mode } = expandOpts;
9292
+ if (mode !== 'fixed') {
9293
+ return renderEmptyElement($xeTable);
9294
+ }
9295
+ const expandVNs = [
9296
+ h('div', {
9297
+ key: 'repY',
9298
+ ref: refRowExpandYSpaceElem
9299
+ })
9300
+ ];
9301
+ if (expandColumn) {
9302
+ tableRowExpandedList.forEach((row) => {
9303
+ const expandOpts = computeExpandOpts.value;
9304
+ const { height: expandHeight, padding } = expandOpts;
9305
+ const { fullAllDataRowIdData } = internalData;
9306
+ const treeOpts = computeTreeOpts.value;
9307
+ const { transform, seqMode } = treeOpts;
9308
+ const cellStyle = {};
9309
+ const rowid = getRowid($xeTable, row);
9310
+ const rest = fullAllDataRowIdData[rowid];
9311
+ let rowLevel = 0;
9312
+ let seq = -1;
9313
+ let _rowIndex = 0;
9314
+ const rowIndex = $xeTable.getRowIndex(row);
9315
+ const $rowIndex = $xeTable.getVMRowIndex(row);
9316
+ if (rest) {
9317
+ rowLevel = rest.level;
9318
+ if (treeConfig && transform && seqMode === 'increasing') {
9319
+ seq = rest._index + 1;
9320
+ }
9321
+ else {
9322
+ seq = rest.seq;
9323
+ }
9324
+ _rowIndex = rest._index;
9325
+ }
9326
+ if (expandHeight) {
9327
+ cellStyle.height = `${expandHeight}px`;
9328
+ }
9329
+ if (treeConfig) {
9330
+ cellStyle.paddingLeft = `${(rowLevel * treeOpts.indent) + 30}px`;
9331
+ }
9332
+ const expandParams = { $table: $xeTable, seq, column: expandColumn, fixed: '', type: 'body', level: rowLevel, row, rowIndex, $rowIndex, _rowIndex };
9333
+ expandVNs.push(h('div', {
9334
+ key: rowid,
9335
+ class: ['vxe-body--row-expanded-cell', {
9336
+ 'is--padding': padding,
9337
+ 'is--ellipsis': expandHeight
9338
+ }],
9339
+ rowid,
9340
+ style: cellStyle
9341
+ }, expandColumn.renderData(expandParams)));
9342
+ });
9343
+ }
9344
+ return h('div', {
9345
+ ref: refRowExpandElem,
9346
+ class: 'vxe-table--row-expanded-wrapper'
9347
+ }, expandVNs);
9348
+ };
9171
9349
  const renderScrollX = () => {
9172
9350
  return h('div', {
9173
9351
  key: 'vsx',
@@ -9231,12 +9409,15 @@ export default defineComponent({
9231
9409
  };
9232
9410
  const renderViewport = () => {
9233
9411
  const { showHeader, showFooter } = props;
9234
- const { overflowX, tableData, tableColumn, tableGroupColumn, footerTableData, columnStore } = reactData;
9412
+ const { overflowX, scrollYLoad, tableData, tableColumn, tableGroupColumn, footerTableData, columnStore } = reactData;
9235
9413
  const { leftList, rightList } = columnStore;
9236
- return h('div', {
9237
- ref: refTableViewportElem,
9238
- class: 'vxe-table--viewport-wrapper'
9239
- }, [
9414
+ const leftFixedWidth = computeLeftFixedWidth.value;
9415
+ const rightFixedWidth = computeRightFixedWidth.value;
9416
+ const ons = {};
9417
+ if (scrollYLoad || leftFixedWidth || rightFixedWidth) {
9418
+ ons.onWheel = $xeTable.triggerBodyWheelEvent;
9419
+ }
9420
+ return h('div', Object.assign({ ref: refTableViewportElem, class: 'vxe-table--viewport-wrapper' }, ons), [
9240
9421
  h('div', {
9241
9422
  class: 'vxe-table--main-wrapper'
9242
9423
  }, [
@@ -9275,7 +9456,8 @@ export default defineComponent({
9275
9456
  }, [
9276
9457
  leftList && leftList.length && overflowX ? renderFixed('left') : renderEmptyElement($xeTable),
9277
9458
  rightList && rightList.length && overflowX ? renderFixed('right') : renderEmptyElement($xeTable)
9278
- ])
9459
+ ]),
9460
+ renderRowExpandedVNs()
9279
9461
  ]);
9280
9462
  };
9281
9463
  const renderBody = () => {
@@ -9719,26 +9901,9 @@ export default defineComponent({
9719
9901
  tablePrivateMethods.preventEvent(null, 'deactivated', { $table: $xeTable });
9720
9902
  });
9721
9903
  onMounted(() => {
9722
- const { rowHeightStore } = reactData;
9723
- const varEl = refVarElem.value;
9724
9904
  const columnOpts = computeColumnOpts.value;
9725
9905
  const rowOpts = computeRowOpts.value;
9726
9906
  const customOpts = computeCustomOpts.value;
9727
- if (varEl) {
9728
- const [defEl, mediumEl, smallEl, miniEl] = varEl.children;
9729
- if (defEl) {
9730
- rowHeightStore.default = defEl.clientHeight;
9731
- }
9732
- if (mediumEl) {
9733
- rowHeightStore.medium = mediumEl.clientHeight;
9734
- }
9735
- if (smallEl) {
9736
- rowHeightStore.small = smallEl.clientHeight;
9737
- }
9738
- if (miniEl) {
9739
- rowHeightStore.mini = miniEl.clientHeight;
9740
- }
9741
- }
9742
9907
  if (columnOpts.drag || rowOpts.drag || customOpts.allowSort) {
9743
9908
  initTpImg();
9744
9909
  }
@@ -3042,6 +3042,32 @@
3042
3042
  flex-direction: row;
3043
3043
  align-items: center;
3044
3044
  }
3045
+ .vxe-table--render-default .vxe-table--row-expanded-wrapper {
3046
+ position: absolute;
3047
+ top: 0;
3048
+ left: 0;
3049
+ width: 100%;
3050
+ height: 100%;
3051
+ overflow: hidden;
3052
+ pointer-events: none;
3053
+ }
3054
+ .vxe-table--render-default .vxe-body--row-expanded-cell {
3055
+ position: absolute;
3056
+ z-index: 5;
3057
+ top: 0;
3058
+ left: 0;
3059
+ width: 100%;
3060
+ overflow: auto;
3061
+ background-color: var(--vxe-ui-layout-background-color);
3062
+ pointer-events: all;
3063
+ }
3064
+ .vxe-table--render-default .vxe-body--row-expanded-cell.is--padding {
3065
+ padding: var(--vxe-ui-table-expand-padding-default);
3066
+ }
3067
+ .vxe-table--render-default .vxe-body--row-expanded-place-column {
3068
+ border-bottom: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
3069
+ border-right: var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color);
3070
+ }
3045
3071
  .vxe-table--render-default .vxe-table--expanded {
3046
3072
  cursor: pointer;
3047
3073
  }