vxe-table 4.10.13 → 4.10.15-beta.0

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 +138 -128
  6. package/es/table/src/body.js +57 -43
  7. package/es/table/src/table.js +236 -51
  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 +531 -265
  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 +169 -154
  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 +293 -49
  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 +2 -2
  35. package/packages/table/module/edit/hook.ts +141 -129
  36. package/packages/table/src/body.ts +60 -50
  37. package/packages/table/src/table.ts +247 -51
  38. package/styles/components/table.scss +26 -0
  39. /package/es/{iconfont.1739257038865.ttf → iconfont.1739426300784.ttf} +0 -0
  40. /package/es/{iconfont.1739257038865.woff → iconfont.1739426300784.woff} +0 -0
  41. /package/es/{iconfont.1739257038865.woff2 → iconfont.1739426300784.woff2} +0 -0
  42. /package/lib/{iconfont.1739257038865.ttf → iconfont.1739426300784.ttf} +0 -0
  43. /package/lib/{iconfont.1739257038865.woff → iconfont.1739426300784.woff} +0 -0
  44. /package/lib/{iconfont.1739257038865.woff2 → iconfont.1739426300784.woff2} +0 -0
@@ -38,7 +38,7 @@ hooks.add('tableEditModule', {
38
38
  }
39
39
  }
40
40
  };
41
- function syncActivedCell() {
41
+ const syncActivedCell = () => {
42
42
  const { editStore, tableColumn } = reactData;
43
43
  const editOpts = computeEditOpts.value;
44
44
  const { actived } = editStore;
@@ -51,8 +51,8 @@ hooks.add('tableEditModule', {
51
51
  setEditColumnModel(row, column);
52
52
  }
53
53
  }
54
- }
55
- function insertTreeRow(newRecords, isAppend) {
54
+ };
55
+ const insertTreeRow = (newRecords, isAppend) => {
56
56
  const { tableFullTreeData, afterFullData, fullDataRowIdData, fullAllDataRowIdData } = internalData;
57
57
  const treeOpts = computeTreeOpts.value;
58
58
  const { rowField, parentField, mapChildrenField } = treeOpts;
@@ -76,7 +76,7 @@ hooks.add('tableEditModule', {
76
76
  }
77
77
  parentChilds[funcName](item);
78
78
  mapChilds[funcName](item);
79
- const rest = { row: item, rowid, seq: -1, index: -1, _index: -1, $index: -1, treeIndex: -1, items: parentChilds, parent: parentRow, level: parentLevel + 1, height: 0, resizeHeight: 0, oTop: 0 };
79
+ const rest = { row: item, rowid, seq: -1, index: -1, _index: -1, $index: -1, treeIndex: -1, items: parentChilds, parent: parentRow, level: parentLevel + 1, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 };
80
80
  fullDataRowIdData[rowid] = rest;
81
81
  fullAllDataRowIdData[rowid] = rest;
82
82
  }
@@ -88,12 +88,12 @@ hooks.add('tableEditModule', {
88
88
  }
89
89
  afterFullData[funcName](item);
90
90
  tableFullTreeData[funcName](item);
91
- const rest = { row: item, rowid, seq: -1, index: -1, _index: -1, $index: -1, treeIndex: -1, items: tableFullTreeData, parent: null, level: 0, height: 0, resizeHeight: 0, oTop: 0 };
91
+ const rest = { row: item, rowid, seq: -1, index: -1, _index: -1, $index: -1, treeIndex: -1, items: tableFullTreeData, parent: null, level: 0, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 };
92
92
  fullDataRowIdData[rowid] = rest;
93
93
  fullAllDataRowIdData[rowid] = rest;
94
94
  }
95
95
  });
96
- }
96
+ };
97
97
  const handleInsertRowAt = (records, targetRow, isInsertNextRow) => {
98
98
  const { treeConfig } = props;
99
99
  const { mergeList, editStore } = reactData;
@@ -113,7 +113,7 @@ hooks.add('tableEditModule', {
113
113
  else {
114
114
  newRecords.forEach(item => {
115
115
  const rowid = getRowid($xeTable, item);
116
- const rest = { row: item, rowid, seq: -1, index: -1, _index: -1, $index: -1, treeIndex: -1, items: afterFullData, parent: null, level: 0, height: 0, resizeHeight: 0, oTop: 0 };
116
+ const rest = { row: item, rowid, seq: -1, index: -1, _index: -1, $index: -1, treeIndex: -1, items: afterFullData, parent: null, level: 0, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 };
117
117
  fullDataRowIdData[rowid] = rest;
118
118
  fullAllDataRowIdData[rowid] = rest;
119
119
  afterFullData.unshift(item);
@@ -137,7 +137,7 @@ hooks.add('tableEditModule', {
137
137
  else {
138
138
  newRecords.forEach(item => {
139
139
  const rowid = getRowid($xeTable, item);
140
- const rest = { row: item, rowid, seq: -1, index: -1, _index: -1, treeIndex: -1, $index: -1, items: afterFullData, parent: null, level: 0, height: 0, resizeHeight: 0, oTop: 0 };
140
+ const rest = { row: item, rowid, seq: -1, index: -1, _index: -1, treeIndex: -1, $index: -1, items: afterFullData, parent: null, level: 0, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 };
141
141
  fullDataRowIdData[rowid] = rest;
142
142
  fullAllDataRowIdData[rowid] = rest;
143
143
  afterFullData.push(item);
@@ -178,7 +178,7 @@ hooks.add('tableEditModule', {
178
178
  targetIndex = targetIndex + 1;
179
179
  }
180
180
  parentMapChilds.splice(targetIndex, 0, item);
181
- const rest = { row: item, rowid, seq: -1, index: -1, _index: -1, $index: -1, treeIndex: -1, items: parentMapChilds, parent: parentRow, level: parentLevel + 1, height: 0, resizeHeight: 0, oTop: 0 };
181
+ const rest = { row: item, rowid, seq: -1, index: -1, _index: -1, $index: -1, treeIndex: -1, items: parentMapChilds, parent: parentRow, level: parentLevel + 1, height: 0, resizeHeight: 0, oTop: 0, expandHeight: 0 };
182
182
  fullDataRowIdData[rowid] = rest;
183
183
  fullAllDataRowIdData[rowid] = rest;
184
184
  });
@@ -325,6 +325,132 @@ hooks.add('tableEditModule', {
325
325
  }
326
326
  });
327
327
  };
328
+ const handleEditActive = (params, evnt, isFocus) => {
329
+ const { editConfig, mouseConfig } = props;
330
+ const { editStore, tableColumn } = reactData;
331
+ const editOpts = computeEditOpts.value;
332
+ const { mode } = editOpts;
333
+ const { actived, focused } = editStore;
334
+ const { row, column } = params;
335
+ const { editRender } = column;
336
+ const cell = (params.cell || $xeTable.getCellElement(row, column));
337
+ const beforeEditMethod = editOpts.beforeEditMethod || editOpts.activeMethod;
338
+ params.cell = cell;
339
+ if (cell && isEnableConf(editConfig) && isEnableConf(editRender)) {
340
+ // 激活编辑
341
+ if (!$xeTable.isPendingByRow(row)) {
342
+ if (actived.row !== row || (mode === 'cell' ? actived.column !== column : false)) {
343
+ // 判断是否禁用编辑
344
+ let type = 'edit-disabled';
345
+ if (!beforeEditMethod || beforeEditMethod(Object.assign(Object.assign({}, params), { $table: $xeTable, $grid: $xeTable.xegrid }))) {
346
+ if (mouseConfig) {
347
+ $xeTable.clearSelected();
348
+ if ($xeTable.clearCellAreas) {
349
+ $xeTable.clearCellAreas();
350
+ $xeTable.clearCopyCellArea();
351
+ }
352
+ }
353
+ $xeTable.closeTooltip();
354
+ if (actived.column) {
355
+ handleClearEdit(evnt);
356
+ }
357
+ type = 'edit-activated';
358
+ column.renderHeight = cell.offsetHeight;
359
+ actived.args = params;
360
+ actived.row = row;
361
+ actived.column = column;
362
+ if (mode === 'row') {
363
+ tableColumn.forEach((column) => getEditColumnModel(row, column));
364
+ }
365
+ else {
366
+ getEditColumnModel(row, column);
367
+ }
368
+ const afterEditMethod = editOpts.afterEditMethod;
369
+ nextTick(() => {
370
+ if (isFocus) {
371
+ $xeTable.handleFocus(params, evnt);
372
+ }
373
+ if (afterEditMethod) {
374
+ afterEditMethod(Object.assign(Object.assign({}, params), { $table: $xeTable, $grid: $xeTable.xegrid }));
375
+ }
376
+ });
377
+ }
378
+ $xeTable.dispatchEvent(type, {
379
+ row,
380
+ rowIndex: $xeTable.getRowIndex(row),
381
+ $rowIndex: $xeTable.getVMRowIndex(row),
382
+ column,
383
+ columnIndex: $xeTable.getColumnIndex(column),
384
+ $columnIndex: $xeTable.getVMColumnIndex(column)
385
+ }, evnt);
386
+ // v4已废弃
387
+ if (type === 'edit-activated') {
388
+ $xeTable.dispatchEvent('edit-actived', {
389
+ row,
390
+ rowIndex: $xeTable.getRowIndex(row),
391
+ $rowIndex: $xeTable.getVMRowIndex(row),
392
+ column,
393
+ columnIndex: $xeTable.getColumnIndex(column),
394
+ $columnIndex: $xeTable.getVMColumnIndex(column)
395
+ }, evnt);
396
+ }
397
+ }
398
+ else {
399
+ const { column: oldColumn } = actived;
400
+ if (mouseConfig) {
401
+ $xeTable.clearSelected();
402
+ if ($xeTable.clearCellAreas) {
403
+ $xeTable.clearCellAreas();
404
+ $xeTable.clearCopyCellArea();
405
+ }
406
+ }
407
+ if (oldColumn !== column) {
408
+ const { model: oldModel } = oldColumn;
409
+ if (oldModel.update) {
410
+ setCellValue(row, oldColumn, oldModel.value);
411
+ }
412
+ if ($xeTable.clearValidate) {
413
+ $xeTable.clearValidate(row, column);
414
+ }
415
+ }
416
+ column.renderHeight = cell.offsetHeight;
417
+ actived.args = params;
418
+ actived.column = column;
419
+ if (isFocus) {
420
+ setTimeout(() => {
421
+ $xeTable.handleFocus(params, evnt);
422
+ });
423
+ }
424
+ }
425
+ focused.column = null;
426
+ focused.row = null;
427
+ $xeTable.focus();
428
+ }
429
+ }
430
+ return nextTick();
431
+ };
432
+ const handleEditCell = (row, fieldOrColumn, isPos) => {
433
+ const { editConfig } = props;
434
+ const column = XEUtils.isString(fieldOrColumn) ? $xeTable.getColumnByField(fieldOrColumn) : fieldOrColumn;
435
+ if (row && column && isEnableConf(editConfig) && isEnableConf(column.editRender)) {
436
+ return Promise.resolve(isPos ? $xeTable.scrollToRow(row, column) : null).then(() => {
437
+ const cell = $xeTable.getCellElement(row, column);
438
+ if (cell) {
439
+ handleEditActive({
440
+ row,
441
+ rowIndex: $xeTable.getRowIndex(row),
442
+ column,
443
+ columnIndex: $xeTable.getColumnIndex(column),
444
+ cell,
445
+ $table: $xeTable
446
+ }, null, false);
447
+ internalData._lastCallTime = Date.now();
448
+ }
449
+ return nextTick();
450
+ });
451
+ }
452
+ return nextTick();
453
+ };
328
454
  editMethods = {
329
455
  /**
330
456
  * 往表格中插入临时数据
@@ -658,7 +784,7 @@ hooks.add('tableEditModule', {
658
784
  if (fieldOrColumn) {
659
785
  column = XEUtils.isString(fieldOrColumn) ? $xeTable.getColumnByField(fieldOrColumn) : fieldOrColumn;
660
786
  }
661
- return $xeTable.setEditCell(row, column);
787
+ return handleEditCell(row, column, false);
662
788
  },
663
789
  setActiveCell(row, fieldOrColumn) {
664
790
  if (process.env.NODE_ENV === 'development') {
@@ -671,26 +797,7 @@ hooks.add('tableEditModule', {
671
797
  * 激活单元格编辑
672
798
  */
673
799
  setEditCell(row, fieldOrColumn) {
674
- const { editConfig } = props;
675
- const column = XEUtils.isString(fieldOrColumn) ? $xeTable.getColumnByField(fieldOrColumn) : fieldOrColumn;
676
- if (row && column && isEnableConf(editConfig) && isEnableConf(column.editRender)) {
677
- return $xeTable.scrollToRow(row, column).then(() => {
678
- const cell = $xeTable.getCellElement(row, column);
679
- if (cell) {
680
- editPrivateMethods.handleEdit({
681
- row,
682
- rowIndex: $xeTable.getRowIndex(row),
683
- column,
684
- columnIndex: $xeTable.getColumnIndex(column),
685
- cell,
686
- $table: $xeTable
687
- });
688
- internalData._lastCallTime = Date.now();
689
- }
690
- return nextTick();
691
- });
692
- }
693
- return nextTick();
800
+ return handleEditCell(row, fieldOrColumn, true);
694
801
  },
695
802
  /**
696
803
  * 只对 trigger=dblclick 有效,选中单元格
@@ -721,104 +828,7 @@ hooks.add('tableEditModule', {
721
828
  * 处理激活编辑
722
829
  */
723
830
  handleEdit(params, evnt) {
724
- const { editConfig, mouseConfig } = props;
725
- const { editStore, tableColumn } = reactData;
726
- const editOpts = computeEditOpts.value;
727
- const { mode } = editOpts;
728
- const { actived, focused } = editStore;
729
- const { row, column } = params;
730
- const { editRender } = column;
731
- const cell = (params.cell || $xeTable.getCellElement(row, column));
732
- const beforeEditMethod = editOpts.beforeEditMethod || editOpts.activeMethod;
733
- params.cell = cell;
734
- if (cell && isEnableConf(editConfig) && isEnableConf(editRender)) {
735
- // 激活编辑
736
- if (!$xeTable.isPendingByRow(row)) {
737
- if (actived.row !== row || (mode === 'cell' ? actived.column !== column : false)) {
738
- // 判断是否禁用编辑
739
- let type = 'edit-disabled';
740
- if (!beforeEditMethod || beforeEditMethod(Object.assign(Object.assign({}, params), { $table: $xeTable, $grid: $xeTable.xegrid }))) {
741
- if (mouseConfig) {
742
- editMethods.clearSelected();
743
- if ($xeTable.clearCellAreas) {
744
- $xeTable.clearCellAreas();
745
- $xeTable.clearCopyCellArea();
746
- }
747
- }
748
- $xeTable.closeTooltip();
749
- if (actived.column) {
750
- handleClearEdit(evnt);
751
- }
752
- type = 'edit-activated';
753
- column.renderHeight = cell.offsetHeight;
754
- actived.args = params;
755
- actived.row = row;
756
- actived.column = column;
757
- if (mode === 'row') {
758
- tableColumn.forEach((column) => getEditColumnModel(row, column));
759
- }
760
- else {
761
- getEditColumnModel(row, column);
762
- }
763
- const afterEditMethod = editOpts.afterEditMethod;
764
- nextTick(() => {
765
- editPrivateMethods.handleFocus(params, evnt);
766
- if (afterEditMethod) {
767
- afterEditMethod(Object.assign(Object.assign({}, params), { $table: $xeTable, $grid: $xeTable.xegrid }));
768
- }
769
- });
770
- }
771
- $xeTable.dispatchEvent(type, {
772
- row,
773
- rowIndex: $xeTable.getRowIndex(row),
774
- $rowIndex: $xeTable.getVMRowIndex(row),
775
- column,
776
- columnIndex: $xeTable.getColumnIndex(column),
777
- $columnIndex: $xeTable.getVMColumnIndex(column)
778
- }, evnt);
779
- // v4已废弃
780
- if (type === 'edit-activated') {
781
- $xeTable.dispatchEvent('edit-actived', {
782
- row,
783
- rowIndex: $xeTable.getRowIndex(row),
784
- $rowIndex: $xeTable.getVMRowIndex(row),
785
- column,
786
- columnIndex: $xeTable.getColumnIndex(column),
787
- $columnIndex: $xeTable.getVMColumnIndex(column)
788
- }, evnt);
789
- }
790
- }
791
- else {
792
- const { column: oldColumn } = actived;
793
- if (mouseConfig) {
794
- editMethods.clearSelected();
795
- if ($xeTable.clearCellAreas) {
796
- $xeTable.clearCellAreas();
797
- $xeTable.clearCopyCellArea();
798
- }
799
- }
800
- if (oldColumn !== column) {
801
- const { model: oldModel } = oldColumn;
802
- if (oldModel.update) {
803
- setCellValue(row, oldColumn, oldModel.value);
804
- }
805
- if ($xeTable.clearValidate) {
806
- $xeTable.clearValidate(row, column);
807
- }
808
- }
809
- column.renderHeight = cell.offsetHeight;
810
- actived.args = params;
811
- actived.column = column;
812
- setTimeout(() => {
813
- editPrivateMethods.handleFocus(params, evnt);
814
- });
815
- }
816
- focused.column = null;
817
- focused.row = null;
818
- $xeTable.focus();
819
- }
820
- }
821
- return nextTick();
831
+ return handleEditActive(params, evnt, true);
822
832
  },
823
833
  /**
824
834
  * @deprecated
@@ -21,7 +21,7 @@ export default defineComponent({
21
21
  setup(props) {
22
22
  const $xeTable = inject('$xeTable', {});
23
23
  const { xID, props: tableProps, context: tableContext, reactData: tableReactData, internalData: tableInternalData } = $xeTable;
24
- const { computeEditOpts, computeMouseOpts, computeAreaOpts, computeDefaultRowHeight, computeEmptyOpts, computeTooltipOpts, computeRadioOpts, computeExpandOpts, computeTreeOpts, computeCheckboxOpts, computeCellOpts, computeValidOpts, computeRowOpts, computeColumnOpts, computeRowDragOpts, computeColumnDragOpts, computeLeftFixedWidth, computeRightFixedWidth, computeResizableOpts } = $xeTable.getComputeMaps();
24
+ const { computeEditOpts, computeMouseOpts, computeAreaOpts, computeDefaultRowHeight, computeEmptyOpts, computeTooltipOpts, computeRadioOpts, computeExpandOpts, computeTreeOpts, computeCheckboxOpts, computeCellOpts, computeValidOpts, computeRowOpts, computeColumnOpts, computeRowDragOpts, computeColumnDragOpts, computeResizableOpts } = $xeTable.getComputeMaps();
25
25
  const refElem = ref();
26
26
  const refBodyScroll = ref();
27
27
  const refBodyTable = ref();
@@ -379,7 +379,7 @@ export default defineComponent({
379
379
  };
380
380
  const renderRows = (fixedType, isOptimizeMode, tableData, tableColumn) => {
381
381
  const { stripe, rowKey, highlightHoverRow, rowClassName, rowStyle, editConfig, treeConfig } = tableProps;
382
- const { hasFixedColumn, treeExpandedMaps, isColLoading, scrollXLoad, scrollYLoad, isAllOverflow, rowExpandedMaps, expandColumn, selectRadioRow, pendingRowMaps, isDragColMove } = tableReactData;
382
+ const { hasFixedColumn, treeExpandedMaps, isColLoading, scrollXLoad, scrollYLoad, isAllOverflow, rowExpandedMaps, expandColumn, selectRadioRow, pendingRowMaps, isDragColMove, rowExpandHeightFlag } = tableReactData;
383
383
  const { fullAllDataRowIdData } = tableInternalData;
384
384
  const checkboxOpts = computeCheckboxOpts.value;
385
385
  const radioOpts = computeRadioOpts.value;
@@ -412,19 +412,19 @@ export default defineComponent({
412
412
  };
413
413
  }
414
414
  const rowid = getRowid($xeTable, row);
415
- const rest = fullAllDataRowIdData[rowid];
415
+ const rowRest = fullAllDataRowIdData[rowid];
416
416
  let rowLevel = 0;
417
417
  let seq = -1;
418
418
  let _rowIndex = 0;
419
- if (rest) {
420
- rowLevel = rest.level;
419
+ if (rowRest) {
420
+ rowLevel = rowRest.level;
421
421
  if (treeConfig && transform && seqMode === 'increasing') {
422
- seq = rest._index + 1;
422
+ seq = rowRest._index + 1;
423
423
  }
424
424
  else {
425
- seq = rest.seq;
425
+ seq = rowRest.seq;
426
426
  }
427
- _rowIndex = rest._index;
427
+ _rowIndex = rowRest._index;
428
428
  }
429
429
  const params = { $table: $xeTable, seq, rowid, fixed: fixedType, type: renderType, level: rowLevel, row, rowIndex, $rowIndex, _rowIndex };
430
430
  // 行是否被展开
@@ -472,39 +472,57 @@ export default defineComponent({
472
472
  // 如果行被展开了
473
473
  if (isExpandRow) {
474
474
  const expandOpts = computeExpandOpts.value;
475
- const { height: expandHeight, padding } = expandOpts;
476
- const cellStyle = {};
477
- if (expandHeight) {
478
- cellStyle.height = `${expandHeight}px`;
479
- }
480
- if (treeConfig) {
481
- cellStyle.paddingLeft = `${(rowLevel * treeOpts.indent) + 30}px`;
475
+ const { height: expandHeight, padding, mode: expandMode } = expandOpts;
476
+ if (expandMode === 'fixed') {
477
+ rows.push(h('tr', {
478
+ class: 'vxe-body--row-expanded-place',
479
+ key: `expand_${rowid}`,
480
+ rowid
481
+ }, [
482
+ h('td', {
483
+ class: 'vxe-body--row-expanded-place-column',
484
+ colspan: tableColumn.length,
485
+ style: {
486
+ height: `${rowExpandHeightFlag ? (rowRest.expandHeight || expandHeight) : 0}px`
487
+ }
488
+ })
489
+ ]));
482
490
  }
483
- const { showOverflow } = expandColumn;
484
- const hasEllipsis = (XEUtils.isUndefined(showOverflow) || XEUtils.isNull(showOverflow)) ? isAllOverflow : showOverflow;
485
- const expandParams = { $table: $xeTable, seq, column: expandColumn, fixed: fixedType, type: renderType, level: rowLevel, row, rowIndex, $rowIndex, _rowIndex };
486
- rows.push(h('tr', Object.assign({ class: ['vxe-body--expanded-row', {
487
- 'is--padding': padding
488
- }], key: `expand_${rowid}`, style: rowStyle ? (XEUtils.isFunction(rowStyle) ? rowStyle(expandParams) : rowStyle) : null }, trOn), [
489
- h('td', {
490
- class: {
491
- 'vxe-body--expanded-column': 1,
492
- 'fixed--hidden': fixedType && !hasFixedColumn,
493
- 'col--ellipsis': hasEllipsis
494
- },
495
- colspan: tableColumn.length
491
+ else {
492
+ const cellStyle = {};
493
+ if (expandHeight) {
494
+ cellStyle.height = `${expandHeight}px`;
495
+ }
496
+ if (treeConfig) {
497
+ cellStyle.paddingLeft = `${(rowLevel * treeOpts.indent) + 30}px`;
498
+ }
499
+ const { showOverflow } = expandColumn;
500
+ const hasEllipsis = (XEUtils.isUndefined(showOverflow) || XEUtils.isNull(showOverflow)) ? isAllOverflow : showOverflow;
501
+ const expandParams = { $table: $xeTable, seq, column: expandColumn, fixed: fixedType, type: renderType, level: rowLevel, row, rowIndex, $rowIndex, _rowIndex };
502
+ rows.push(h('tr', {
503
+ class: ['vxe-body--expanded-row', {
504
+ 'is--padding': padding
505
+ }],
506
+ key: `expand_${rowid}`
496
507
  }, [
497
- h('div', {
498
- class: {
499
- 'vxe-body--expanded-cell': 1,
500
- 'is--ellipsis': expandHeight
501
- },
502
- style: cellStyle
508
+ h('td', {
509
+ class: ['vxe-body--expanded-column', {
510
+ 'fixed--hidden': fixedType && !hasFixedColumn,
511
+ 'col--ellipsis': hasEllipsis
512
+ }],
513
+ colspan: tableColumn.length
503
514
  }, [
504
- expandColumn.renderData(expandParams)
515
+ h('div', {
516
+ class: ['vxe-body--expanded-cell', {
517
+ 'is--ellipsis': expandHeight
518
+ }],
519
+ style: cellStyle
520
+ }, [
521
+ expandColumn.renderData(expandParams)
522
+ ])
505
523
  ])
506
- ])
507
- ]));
524
+ ]));
525
+ }
508
526
  }
509
527
  // 如果是树形表格
510
528
  if (isExpandTree) {
@@ -551,14 +569,13 @@ export default defineComponent({
551
569
  const emptyOpts = computeEmptyOpts.value;
552
570
  const mouseOpts = computeMouseOpts.value;
553
571
  const rowDragOpts = computeRowDragOpts.value;
554
- const leftFixedWidth = computeLeftFixedWidth.value;
555
- const rightFixedWidth = computeRightFixedWidth.value;
572
+ const expandOpts = computeExpandOpts.value;
556
573
  let renderDataList = tableData;
557
574
  let renderColumnList = tableColumn;
558
575
  let isOptimizeMode = false;
559
576
  // 如果是使用优化模式
560
577
  if (scrollXLoad || scrollYLoad || isAllOverflow) {
561
- if (expandColumn || spanMethod || footerSpanMethod) {
578
+ if ((expandColumn && expandOpts.mode !== 'fixed') || spanMethod || footerSpanMethod) {
562
579
  // 如果不支持优化模式
563
580
  }
564
581
  else {
@@ -639,9 +656,6 @@ export default defineComponent({
639
656
  $xeTable.triggerBodyScrollEvent(evnt, fixedType);
640
657
  }
641
658
  };
642
- if (scrollYLoad || leftFixedWidth || rightFixedWidth) {
643
- ons.onWheel = $xeTable.triggerBodyWheelEvent;
644
- }
645
659
  return h('div', {
646
660
  ref: refElem,
647
661
  class: ['vxe-table--body-wrapper', fixedType ? `fixed-${fixedType}--wrapper` : 'body--wrapper'],