vxe-table 3.15.7 → 3.15.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) 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/render/index.js +16 -3
  6. package/es/table/src/footer.js +11 -15
  7. package/es/table/src/header.js +20 -11
  8. package/es/table/src/methods.js +9 -5
  9. package/es/table/style.css +12 -5
  10. package/es/table/style.min.css +1 -1
  11. package/es/ui/index.js +3 -3
  12. package/es/ui/src/log.js +1 -1
  13. package/es/vxe-table/style.css +12 -5
  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 +46 -37
  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/render/index.js +17 -3
  22. package/lib/table/render/index.min.js +1 -1
  23. package/lib/table/src/footer.js +10 -15
  24. package/lib/table/src/footer.min.js +1 -1
  25. package/lib/table/src/header.js +5 -10
  26. package/lib/table/src/header.min.js +1 -1
  27. package/lib/table/src/methods.js +10 -5
  28. package/lib/table/src/methods.min.js +1 -1
  29. package/lib/table/style/style.css +12 -5
  30. package/lib/table/style/style.min.css +1 -1
  31. package/lib/ui/index.js +3 -3
  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 +12 -5
  36. package/lib/vxe-table/style/style.min.css +1 -1
  37. package/package.json +2 -2
  38. package/packages/table/render/index.ts +17 -3
  39. package/packages/table/src/footer.ts +11 -15
  40. package/packages/table/src/header.ts +20 -11
  41. package/packages/table/src/methods.ts +11 -5
  42. package/packages/ui/index.ts +2 -2
  43. package/styles/components/table.scss +30 -17
  44. /package/es/{iconfont.1745290222894.ttf → iconfont.1745458119157.ttf} +0 -0
  45. /package/es/{iconfont.1745290222894.woff → iconfont.1745458119157.woff} +0 -0
  46. /package/es/{iconfont.1745290222894.woff2 → iconfont.1745458119157.woff2} +0 -0
  47. /package/lib/{iconfont.1745290222894.ttf → iconfont.1745458119157.ttf} +0 -0
  48. /package/lib/{iconfont.1745290222894.woff → iconfont.1745458119157.woff} +0 -0
  49. /package/lib/{iconfont.1745290222894.woff2 → iconfont.1745458119157.woff2} +0 -0
@@ -5,7 +5,7 @@ import { updateCellTitle } from '../../ui/src/dom';
5
5
  import { getCellHeight } from './util';
6
6
  const renderType = 'footer';
7
7
  const { renderer, renderEmptyElement } = VxeUI;
8
- function renderRows(h, _vm, tableColumn, footerTableData, row, $rowIndex, _rowIndex) {
8
+ function renderRows(h, _vm, isOptimizeMode, tableColumn, footerTableData, row, $rowIndex, _rowIndex) {
9
9
  const props = _vm;
10
10
  const $xeTable = _vm.$parent;
11
11
  const tableProps = $xeTable;
@@ -37,10 +37,10 @@ function renderRows(h, _vm, tableColumn, footerTableData, row, $rowIndex, _rowIn
37
37
  const isPadding = XEUtils.isBoolean(footerCellOpts.padding) ? footerCellOpts.padding : cellOpts.padding;
38
38
  const footOverflow = XEUtils.eqNull(showFooterOverflow) ? allColumnFooterOverflow : showFooterOverflow;
39
39
  const footAlign = footerAlign || (compConf ? compConf.tableFooterCellAlign : '') || allFooterAlign || align || (compConf ? compConf.tableCellAlign : '') || allAlign;
40
- let showEllipsis = footOverflow === 'ellipsis';
40
+ const showEllipsis = footOverflow === 'ellipsis';
41
41
  const showTitle = footOverflow === 'title';
42
42
  const showTooltip = footOverflow === true || footOverflow === 'tooltip';
43
- let hasEllipsis = showTitle || showTooltip || showEllipsis;
43
+ const hasEllipsis = showTitle || showTooltip || showEllipsis;
44
44
  const showResizable = (XEUtils.isBoolean(column.resizable) ? column.resizable : (columnOpts.resizable || allResizable));
45
45
  const attrs = { colid };
46
46
  const tfOns = {};
@@ -64,10 +64,6 @@ function renderRows(h, _vm, tableColumn, footerTableData, row, $rowIndex, _rowIn
64
64
  type: renderType,
65
65
  data: footerTableData
66
66
  };
67
- // 纵向虚拟滚动不支持动态行高
68
- if (scrollXLoad && !hasEllipsis) {
69
- showEllipsis = hasEllipsis = true;
70
- }
71
67
  if (showTitle || showTooltip || showAllTip) {
72
68
  tfOns.mouseenter = (evnt) => {
73
69
  if (showTitle) {
@@ -126,7 +122,7 @@ function renderRows(h, _vm, tableColumn, footerTableData, row, $rowIndex, _rowIn
126
122
  const isLastColumn = $columnIndex === tableColumn.length - 1;
127
123
  const isAutoCellWidth = !column.resizeWidth && (column.minWidth === 'auto' || column.width === 'auto');
128
124
  let isVNPreEmptyStatus = false;
129
- if (!isMergeCell) {
125
+ if (isOptimizeMode && !isMergeCell) {
130
126
  if (scrollXLoad && !column.fixed && !virtualXOpts.immediate && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
131
127
  isVNPreEmptyStatus = true;
132
128
  }
@@ -188,7 +184,7 @@ function renderRows(h, _vm, tableColumn, footerTableData, row, $rowIndex, _rowIn
188
184
  ]);
189
185
  });
190
186
  }
191
- function renderHeads(h, _vm, renderColumnList) {
187
+ function renderHeads(h, _vm, isOptimizeMode, renderColumnList) {
192
188
  const props = _vm;
193
189
  const $xeTable = _vm.$parent;
194
190
  const tableProps = $xeTable;
@@ -213,7 +209,7 @@ function renderHeads(h, _vm, renderColumnList) {
213
209
  ],
214
210
  style: footerRowStyle ? (XEUtils.isFunction(footerRowStyle) ? footerRowStyle(rowParams) : footerRowStyle) : undefined
215
211
  }
216
- }, renderRows(h, _vm, renderColumnList, footerTableData, row, $rowIndex, _rowIndex));
212
+ }, renderRows(h, _vm, isOptimizeMode, renderColumnList, footerTableData, row, $rowIndex, _rowIndex));
217
213
  }
218
214
  return h('tr', {
219
215
  key: $rowIndex,
@@ -222,7 +218,7 @@ function renderHeads(h, _vm, renderColumnList) {
222
218
  footerRowClassName ? XEUtils.isFunction(footerRowClassName) ? footerRowClassName(rowParams) : footerRowClassName : ''
223
219
  ],
224
220
  style: footerRowStyle ? (XEUtils.isFunction(footerRowStyle) ? footerRowStyle(rowParams) : footerRowStyle) : undefined
225
- }, renderRows(h, _vm, renderColumnList, footerTableData, row, $rowIndex, _rowIndex));
221
+ }, renderRows(h, _vm, isOptimizeMode, renderColumnList, footerTableData, row, $rowIndex, _rowIndex));
226
222
  });
227
223
  }
228
224
  export default {
@@ -284,11 +280,11 @@ export default {
284
280
  const { fixedType, fixedColumn, tableColumn } = props;
285
281
  const { spanMethod, footerSpanMethod, showFooterOverflow: allColumnFooterOverflow } = tableProps;
286
282
  const { visibleColumn, fullColumnIdData } = tableInternalData;
287
- const { isGroup, isColLoading, overflowX, scrollXLoad, scrollYLoad, dragCol } = tableReactData;
283
+ const { isGroup, isColLoading, overflowX, scrollXLoad, dragCol } = tableReactData;
288
284
  let renderColumnList = tableColumn;
289
285
  let isOptimizeMode = false;
290
286
  // 如果是使用优化模式
291
- if (scrollXLoad || scrollYLoad || allColumnFooterOverflow) {
287
+ if (scrollXLoad && allColumnFooterOverflow) {
292
288
  if (spanMethod || footerSpanMethod) {
293
289
  // 如果不支持优化模式
294
290
  }
@@ -296,7 +292,7 @@ export default {
296
292
  isOptimizeMode = true;
297
293
  }
298
294
  }
299
- if (!isColLoading && (fixedType || !overflowX)) {
295
+ if (!isOptimizeMode || (!isColLoading && (fixedType || !overflowX))) {
300
296
  renderColumnList = visibleColumn;
301
297
  }
302
298
  if (fixedType) {
@@ -382,7 +378,7 @@ export default {
382
378
  */
383
379
  h('tfoot', {
384
380
  ref: 'refFooterTFoot'
385
- }, renderHeads(h, this, renderColumnList))
381
+ }, renderHeads(h, this, isOptimizeMode, renderColumnList))
386
382
  ])
387
383
  ])
388
384
  ]);
@@ -35,10 +35,10 @@ const renderRows = (h, _vm, isGroup, isOptimizeMode, cols, $rowIndex) => {
35
35
  const isPadding = XEUtils.isBoolean(headerCellOpts.padding) ? headerCellOpts.padding : cellOpts.padding;
36
36
  const headOverflow = XEUtils.isUndefined(showHeaderOverflow) || XEUtils.isNull(showHeaderOverflow) ? allColumnHeaderOverflow : showHeaderOverflow;
37
37
  const headAlign = headerAlign || (compConf ? compConf.tableHeaderCellAlign : '') || allHeaderAlign || align || (compConf ? compConf.tableCellAlign : '') || allAlign;
38
- let showEllipsis = headOverflow === 'ellipsis';
38
+ const showEllipsis = headOverflow === 'ellipsis';
39
39
  const showTitle = headOverflow === 'title';
40
40
  const showTooltip = headOverflow === true || headOverflow === 'tooltip';
41
- let hasEllipsis = showTitle || showTooltip || showEllipsis;
41
+ const hasEllipsis = showTitle || showTooltip || showEllipsis;
42
42
  let hasFilter = false;
43
43
  let firstFilterOption = null;
44
44
  if (filters) {
@@ -47,7 +47,20 @@ const renderRows = (h, _vm, isGroup, isOptimizeMode, cols, $rowIndex) => {
47
47
  }
48
48
  const columnIndex = colRest.index;
49
49
  const _columnIndex = colRest._index;
50
- const cellParams = { $table: $xeTable, $grid: $xeGrid, $rowIndex, column, columnIndex, $columnIndex, _columnIndex, firstFilterOption, fixed: fixedType, type: cellType, isHidden: fixedHiddenColumn, hasFilter };
50
+ const cellParams = {
51
+ $table: $xeTable,
52
+ $grid: $xeGrid,
53
+ $rowIndex,
54
+ column,
55
+ columnIndex,
56
+ $columnIndex,
57
+ _columnIndex,
58
+ firstFilterOption,
59
+ fixed: fixedType,
60
+ type: cellType,
61
+ isHidden: fixedHiddenColumn,
62
+ hasFilter
63
+ };
51
64
  const thAttrs = {
52
65
  colid,
53
66
  colspan: column.colSpan > 1 ? column.colSpan : null,
@@ -57,10 +70,6 @@ const renderRows = (h, _vm, isGroup, isOptimizeMode, cols, $rowIndex) => {
57
70
  click: (evnt) => $xeTable.triggerHeaderCellClickEvent(evnt, cellParams),
58
71
  dblclick: (evnt) => $xeTable.triggerHeaderCellDblclickEvent(evnt, cellParams)
59
72
  };
60
- // 虚拟滚动不支持动态高度
61
- if (scrollXLoad && !hasEllipsis) {
62
- showEllipsis = hasEllipsis = true;
63
- }
64
73
  const isColDragCell = columnOpts.drag && columnDragOpts.trigger === 'cell';
65
74
  let isDisabledDrag = false;
66
75
  if (isColDragCell) {
@@ -83,7 +92,7 @@ const renderRows = (h, _vm, isGroup, isOptimizeMode, cols, $rowIndex) => {
83
92
  const showResizable = (XEUtils.isBoolean(column.resizable) ? column.resizable : (columnOpts.resizable || allResizable));
84
93
  const isAutoCellWidth = !column.resizeWidth && (column.minWidth === 'auto' || column.width === 'auto');
85
94
  let isVNPreEmptyStatus = false;
86
- if (!isGroup) {
95
+ if (isOptimizeMode && !isGroup) {
87
96
  if (!dragCol || dragCol.id !== colid) {
88
97
  if (scrollXLoad && !column.fixed && !virtualXOpts.immediate && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
89
98
  isVNPreEmptyStatus = true;
@@ -254,7 +263,7 @@ export default {
254
263
  const { fixedType, fixedColumn, tableColumn } = props;
255
264
  const { headerColumn } = this;
256
265
  const { mouseConfig, showHeaderOverflow: allColumnHeaderOverflow, spanMethod, footerSpanMethod } = tableProps;
257
- const { isGroup, isColLoading, overflowX, scrollXLoad, scrollYLoad, dragCol } = tableReactData;
266
+ const { isGroup, isColLoading, overflowX, scrollXLoad, dragCol } = tableReactData;
258
267
  const { visibleColumn, fullColumnIdData } = tableInternalData;
259
268
  const mouseOpts = $xeTable.computeMouseOpts;
260
269
  let renderHeaderList = headerColumn;
@@ -265,7 +274,7 @@ export default {
265
274
  }
266
275
  else {
267
276
  // 如果是使用优化模式
268
- if (scrollXLoad || scrollYLoad || allColumnHeaderOverflow) {
277
+ if (scrollXLoad && allColumnHeaderOverflow) {
269
278
  if (spanMethod || footerSpanMethod) {
270
279
  // 如果不支持优化模式
271
280
  }
@@ -273,7 +282,7 @@ export default {
273
282
  isOptimizeMode = true;
274
283
  }
275
284
  }
276
- if (!isColLoading && (fixedType || !overflowX)) {
285
+ if (!isOptimizeMode || (!isColLoading && (fixedType || !overflowX))) {
277
286
  renderColumnList = visibleColumn;
278
287
  }
279
288
  if (fixedType) {
@@ -829,7 +829,7 @@ function updateStyle($xeTable) {
829
829
  const reactData = $xeTable;
830
830
  const internalData = $xeTable;
831
831
  const { showHeaderOverflow: allColumnHeaderOverflow, showFooterOverflow: allColumnFooterOverflow, mouseConfig, spanMethod, footerSpanMethod } = props;
832
- const { isGroup, currentRow, tableColumn, scrollXLoad, scrollYLoad, overflowX, scrollbarWidth, overflowY, scrollbarHeight, scrollXWidth, columnStore, editStore, isAllOverflow, expandColumn } = reactData;
832
+ const { isGroup, currentRow, tableColumn, scrollXLoad, scrollYLoad, overflowX, scrollbarWidth, overflowY, scrollbarHeight, scrollXWidth, columnStore, editStore, isAllOverflow, expandColumn, isColLoading } = reactData;
833
833
  const { visibleColumn, tableHeight, headerHeight, footerHeight, elemStore, customHeight, customMinHeight, customMaxHeight } = internalData;
834
834
  const el = $xeTable.$refs.refElem;
835
835
  if (!el) {
@@ -939,7 +939,7 @@ function updateStyle($xeTable) {
939
939
  }
940
940
  else {
941
941
  // 如果是使用优化模式
942
- if (scrollXLoad || scrollYLoad || allColumnHeaderOverflow) {
942
+ if (scrollXLoad && allColumnHeaderOverflow) {
943
943
  if (spanMethod || footerSpanMethod) {
944
944
  // 如果不支持优化模式
945
945
  }
@@ -947,8 +947,10 @@ function updateStyle($xeTable) {
947
947
  isOptimizeMode = true;
948
948
  }
949
949
  }
950
- if (fixedType) {
950
+ if (!isOptimizeMode || (!isColLoading && (fixedType || !overflowX))) {
951
951
  renderColumnList = visibleColumn;
952
+ }
953
+ if (fixedType) {
952
954
  // 如果是使用优化模式
953
955
  if (isOptimizeMode) {
954
956
  renderColumnList = fixedColumn || [];
@@ -1040,7 +1042,7 @@ function updateStyle($xeTable) {
1040
1042
  let renderColumnList = tableColumn;
1041
1043
  let isOptimizeMode = false;
1042
1044
  // 如果是使用优化模式
1043
- if (scrollXLoad || scrollYLoad || allColumnFooterOverflow) {
1045
+ if (scrollXLoad && allColumnFooterOverflow) {
1044
1046
  if (spanMethod || footerSpanMethod) {
1045
1047
  // 如果不支持优化模式
1046
1048
  }
@@ -1048,8 +1050,10 @@ function updateStyle($xeTable) {
1048
1050
  isOptimizeMode = true;
1049
1051
  }
1050
1052
  }
1051
- if (fixedType) {
1053
+ if (!isOptimizeMode) {
1052
1054
  renderColumnList = visibleColumn;
1055
+ }
1056
+ if (fixedType) {
1053
1057
  if (isOptimizeMode) {
1054
1058
  renderColumnList = fixedColumn || [];
1055
1059
  }
@@ -2493,11 +2493,6 @@
2493
2493
  line-height: var(--vxe-ui-table-row-line-height);
2494
2494
  text-align: left;
2495
2495
  }
2496
- .vxe-table--render-default .vxe-header--column.col--current,
2497
- .vxe-table--render-default .vxe-body--column.col--current,
2498
- .vxe-table--render-default .vxe-footer--column.col--current {
2499
- background-color: var(--vxe-ui-table-column-current-background-color);
2500
- }
2501
2496
  .vxe-table--render-default .vxe-header--column.col--center,
2502
2497
  .vxe-table--render-default .vxe-body--column.col--center,
2503
2498
  .vxe-table--render-default .vxe-footer--column.col--center {
@@ -2529,6 +2524,18 @@
2529
2524
  .vxe-table--render-default .vxe-body--row.row--stripe > .vxe-body--column {
2530
2525
  background-color: var(--vxe-ui-table-row-striped-background-color);
2531
2526
  }
2527
+ .vxe-table--render-default .vxe-header--column,
2528
+ .vxe-table--render-default .vxe-body--column,
2529
+ .vxe-table--render-default .vxe-footer--column {
2530
+ position: relative;
2531
+ line-height: var(--vxe-ui-table-row-line-height);
2532
+ text-align: left;
2533
+ }
2534
+ .vxe-table--render-default .vxe-header--column.col--current,
2535
+ .vxe-table--render-default .vxe-body--column.col--current,
2536
+ .vxe-table--render-default .vxe-footer--column.col--current {
2537
+ background-color: var(--vxe-ui-table-column-current-background-color);
2538
+ }
2532
2539
  .vxe-table--render-default .vxe-body--row.row--radio > .vxe-body--column {
2533
2540
  background-color: var(--vxe-ui-table-row-radio-checked-background-color);
2534
2541
  }