vxe-table 4.13.7 → 4.13.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 +13 -3
  6. package/es/table/src/footer.js +11 -15
  7. package/es/table/src/header.js +20 -11
  8. package/es/table/src/table.js +6 -4
  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 +40 -36
  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 +14 -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/table.js +4 -4
  28. package/lib/table/src/table.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 +21 -11
  41. package/packages/table/src/table.ts +7 -4
  42. package/packages/ui/index.ts +2 -2
  43. package/styles/components/table.scss +30 -17
  44. /package/es/{iconfont.1745290253213.ttf → iconfont.1745458144424.ttf} +0 -0
  45. /package/es/{iconfont.1745290253213.woff → iconfont.1745458144424.woff} +0 -0
  46. /package/es/{iconfont.1745290253213.woff2 → iconfont.1745458144424.woff2} +0 -0
  47. /package/lib/{iconfont.1745290253213.ttf → iconfont.1745458144424.ttf} +0 -0
  48. /package/lib/{iconfont.1745290253213.woff → iconfont.1745458144424.woff} +0 -0
  49. /package/lib/{iconfont.1745290253213.woff2 → iconfont.1745458144424.woff2} +0 -0
@@ -35,7 +35,7 @@ export default defineComponent({
35
35
  const refFooterColgroup = ref();
36
36
  const refFooterTFoot = ref();
37
37
  const refFooterXSpace = ref();
38
- const renderRows = (tableColumn, footerTableData, row, $rowIndex, _rowIndex) => {
38
+ const renderRows = (isOptimizeMode, tableColumn, footerTableData, row, $rowIndex, _rowIndex) => {
39
39
  const $xeGrid = $xeTable.xeGrid;
40
40
  const { fixedType } = props;
41
41
  const { resizable: allResizable, border, footerCellClassName, footerCellStyle, footerAlign: allFooterAlign, footerSpanMethod, align: allAlign, columnKey, showFooterOverflow: allColumnFooterOverflow } = tableProps;
@@ -62,10 +62,10 @@ export default defineComponent({
62
62
  const isPadding = XEUtils.isBoolean(footerCellOpts.padding) ? footerCellOpts.padding : cellOpts.padding;
63
63
  const footOverflow = XEUtils.eqNull(showFooterOverflow) ? allColumnFooterOverflow : showFooterOverflow;
64
64
  const footAlign = footerAlign || (compConf ? compConf.tableFooterCellAlign : '') || allFooterAlign || align || (compConf ? compConf.tableCellAlign : '') || allAlign;
65
- let showEllipsis = footOverflow === 'ellipsis';
65
+ const showEllipsis = footOverflow === 'ellipsis';
66
66
  const showTitle = footOverflow === 'title';
67
67
  const showTooltip = footOverflow === true || footOverflow === 'tooltip';
68
- let hasEllipsis = showTitle || showTooltip || showEllipsis;
68
+ const hasEllipsis = showTitle || showTooltip || showEllipsis;
69
69
  const showResizable = (XEUtils.isBoolean(column.resizable) ? column.resizable : (columnOpts.resizable || allResizable));
70
70
  const attrs = { colid };
71
71
  const tfOns = {};
@@ -89,10 +89,6 @@ export default defineComponent({
89
89
  type: renderType,
90
90
  data: footerTableData
91
91
  };
92
- // 纵向虚拟滚动不支持动态行高
93
- if (scrollXLoad && !hasEllipsis) {
94
- showEllipsis = hasEllipsis = true;
95
- }
96
92
  if (showTitle || showTooltip || showAllTip) {
97
93
  tfOns.onMouseenter = (evnt) => {
98
94
  if (showTitle) {
@@ -151,7 +147,7 @@ export default defineComponent({
151
147
  const isLastColumn = $columnIndex === tableColumn.length - 1;
152
148
  const isAutoCellWidth = !column.resizeWidth && (column.minWidth === 'auto' || column.width === 'auto');
153
149
  let isVNPreEmptyStatus = false;
154
- if (!isMergeCell) {
150
+ if (isOptimizeMode && !isMergeCell) {
155
151
  if (scrollXLoad && !column.fixed && !virtualXOpts.immediate && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
156
152
  isVNPreEmptyStatus = true;
157
153
  }
@@ -203,7 +199,7 @@ export default defineComponent({
203
199
  ]);
204
200
  });
205
201
  };
206
- const renderHeads = (renderColumnList) => {
202
+ const renderHeads = (isOptimizeMode, renderColumnList) => {
207
203
  const { fixedType, footerTableData } = props;
208
204
  const { footerRowClassName, footerRowStyle } = tableProps;
209
205
  const { isColLoading, isDragColMove } = tableReactData;
@@ -223,7 +219,7 @@ export default defineComponent({
223
219
  ],
224
220
  style: footerRowStyle ? (XEUtils.isFunction(footerRowStyle) ? footerRowStyle(rowParams) : footerRowStyle) : null
225
221
  }, {
226
- default: () => renderRows(renderColumnList, footerTableData, row, $rowIndex, _rowIndex)
222
+ default: () => renderRows(isOptimizeMode, renderColumnList, footerTableData, row, $rowIndex, _rowIndex)
227
223
  });
228
224
  }
229
225
  return h('tr', {
@@ -233,18 +229,18 @@ export default defineComponent({
233
229
  footerRowClassName ? XEUtils.isFunction(footerRowClassName) ? footerRowClassName(rowParams) : footerRowClassName : ''
234
230
  ],
235
231
  style: footerRowStyle ? (XEUtils.isFunction(footerRowStyle) ? footerRowStyle(rowParams) : footerRowStyle) : null
236
- }, renderRows(renderColumnList, footerTableData, row, $rowIndex, _rowIndex));
232
+ }, renderRows(isOptimizeMode, renderColumnList, footerTableData, row, $rowIndex, _rowIndex));
237
233
  });
238
234
  };
239
235
  const renderVN = () => {
240
236
  const { fixedType, fixedColumn, tableColumn } = props;
241
237
  const { spanMethod, footerSpanMethod, showFooterOverflow: allColumnFooterOverflow } = tableProps;
242
238
  const { visibleColumn, fullColumnIdData } = tableInternalData;
243
- const { isGroup, isColLoading, overflowX, scrollXLoad, scrollYLoad, dragCol } = tableReactData;
239
+ const { isGroup, isColLoading, overflowX, scrollXLoad, dragCol } = tableReactData;
244
240
  let renderColumnList = tableColumn;
245
241
  let isOptimizeMode = false;
246
242
  // 如果是使用优化模式
247
- if (scrollXLoad || scrollYLoad || allColumnFooterOverflow) {
243
+ if (scrollXLoad && allColumnFooterOverflow) {
248
244
  if (spanMethod || footerSpanMethod) {
249
245
  // 如果不支持优化模式
250
246
  }
@@ -252,7 +248,7 @@ export default defineComponent({
252
248
  isOptimizeMode = true;
253
249
  }
254
250
  }
255
- if (!isColLoading && (fixedType || !overflowX)) {
251
+ if (!isOptimizeMode || (!isColLoading && (fixedType || !overflowX))) {
256
252
  renderColumnList = visibleColumn;
257
253
  }
258
254
  if (fixedType) {
@@ -330,7 +326,7 @@ export default defineComponent({
330
326
  */
331
327
  h('tfoot', {
332
328
  ref: refFooterTFoot
333
- }, renderHeads(renderColumnList))
329
+ }, renderHeads(isOptimizeMode, renderColumnList))
334
330
  ])
335
331
  ])
336
332
  ]);
@@ -57,10 +57,10 @@ export default defineComponent({
57
57
  const isPadding = XEUtils.isBoolean(headerCellOpts.padding) ? headerCellOpts.padding : cellOpts.padding;
58
58
  const headOverflow = XEUtils.eqNull(showHeaderOverflow) ? allColumnHeaderOverflow : showHeaderOverflow;
59
59
  const headAlign = headerAlign || (compConf ? compConf.tableHeaderCellAlign : '') || allHeaderAlign || align || (compConf ? compConf.tableCellAlign : '') || allAlign;
60
- let showEllipsis = headOverflow === 'ellipsis';
60
+ const showEllipsis = headOverflow === 'ellipsis';
61
61
  const showTitle = headOverflow === 'title';
62
62
  const showTooltip = headOverflow === true || headOverflow === 'tooltip';
63
- let hasEllipsis = showTitle || showTooltip || showEllipsis;
63
+ const hasEllipsis = showTitle || showTooltip || showEllipsis;
64
64
  let hasFilter = false;
65
65
  let firstFilterOption = null;
66
66
  if (filters) {
@@ -69,7 +69,20 @@ export default defineComponent({
69
69
  }
70
70
  const columnIndex = colRest.index;
71
71
  const _columnIndex = colRest._index;
72
- const cellParams = { $table: $xeTable, $grid: $xeGrid, $rowIndex, column, columnIndex, $columnIndex, _columnIndex, firstFilterOption, fixed: fixedType, type: renderType, isHidden: fixedHiddenColumn, hasFilter };
72
+ const cellParams = {
73
+ $table: $xeTable,
74
+ $grid: $xeGrid,
75
+ $rowIndex,
76
+ column,
77
+ columnIndex,
78
+ $columnIndex,
79
+ _columnIndex,
80
+ firstFilterOption,
81
+ fixed: fixedType,
82
+ type: renderType,
83
+ isHidden: fixedHiddenColumn,
84
+ hasFilter
85
+ };
73
86
  const thAttrs = {
74
87
  colid,
75
88
  colspan: column.colSpan > 1 ? column.colSpan : null,
@@ -79,10 +92,6 @@ export default defineComponent({
79
92
  onClick: (evnt) => $xeTable.triggerHeaderCellClickEvent(evnt, cellParams),
80
93
  onDblclick: (evnt) => $xeTable.triggerHeaderCellDblclickEvent(evnt, cellParams)
81
94
  };
82
- // 横向虚拟滚动不支持动态行高
83
- if (scrollXLoad && !hasEllipsis) {
84
- showEllipsis = hasEllipsis = true;
85
- }
86
95
  const isColDragCell = columnOpts.drag && columnDragOpts.trigger === 'cell';
87
96
  let isDisabledDrag = false;
88
97
  if (isColDragCell) {
@@ -105,7 +114,7 @@ export default defineComponent({
105
114
  const showResizable = (XEUtils.isBoolean(column.resizable) ? column.resizable : (columnOpts.resizable || allResizable));
106
115
  const isAutoCellWidth = !column.resizeWidth && (column.minWidth === 'auto' || column.width === 'auto');
107
116
  let isVNPreEmptyStatus = false;
108
- if (!isGroup) {
117
+ if (isOptimizeMode && !isGroup) {
109
118
  if (!dragCol || dragCol.id !== colid) {
110
119
  if (scrollXLoad && !column.fixed && !virtualXOpts.immediate && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
111
120
  isVNPreEmptyStatus = true;
@@ -202,7 +211,7 @@ export default defineComponent({
202
211
  const renderVN = () => {
203
212
  const { fixedType, fixedColumn, tableColumn } = props;
204
213
  const { mouseConfig, showHeaderOverflow: allColumnHeaderOverflow, spanMethod, footerSpanMethod } = tableProps;
205
- const { isGroup, isColLoading, overflowX, scrollXLoad, scrollYLoad, dragCol } = tableReactData;
214
+ const { isGroup, isColLoading, overflowX, scrollXLoad, dragCol } = tableReactData;
206
215
  const { visibleColumn, fullColumnIdData } = tableInternalData;
207
216
  const mouseOpts = computeMouseOpts.value;
208
217
  let renderHeaderList = headerColumn.value;
@@ -213,7 +222,7 @@ export default defineComponent({
213
222
  }
214
223
  else {
215
224
  // 如果是使用优化模式
216
- if (scrollXLoad || scrollYLoad || allColumnHeaderOverflow) {
225
+ if (scrollXLoad && allColumnHeaderOverflow) {
217
226
  if (spanMethod || footerSpanMethod) {
218
227
  // 如果不支持优化模式
219
228
  }
@@ -221,7 +230,7 @@ export default defineComponent({
221
230
  isOptimizeMode = true;
222
231
  }
223
232
  }
224
- if (!isColLoading && (fixedType || !overflowX)) {
233
+ if (!isOptimizeMode || (!isColLoading && (fixedType || !overflowX))) {
225
234
  renderColumnList = visibleColumn;
226
235
  }
227
236
  if (fixedType) {
@@ -1963,7 +1963,7 @@ export default defineComponent({
1963
1963
  };
1964
1964
  const updateStyle = () => {
1965
1965
  const { showHeaderOverflow: allColumnHeaderOverflow, showFooterOverflow: allColumnFooterOverflow, mouseConfig, spanMethod, footerSpanMethod } = props;
1966
- const { isGroup, currentRow, tableColumn, scrollXLoad, scrollYLoad, overflowX, scrollbarWidth, overflowY, scrollbarHeight, scrollXWidth, columnStore, editStore, isAllOverflow, expandColumn } = reactData;
1966
+ const { isGroup, currentRow, tableColumn, scrollXLoad, scrollYLoad, overflowX, scrollbarWidth, overflowY, scrollbarHeight, scrollXWidth, columnStore, editStore, isAllOverflow, expandColumn, isColLoading } = reactData;
1967
1967
  const { visibleColumn, tableHeight, headerHeight, footerHeight, elemStore, customHeight, customMinHeight, customMaxHeight } = internalData;
1968
1968
  const el = refElem.value;
1969
1969
  if (!el) {
@@ -2073,7 +2073,7 @@ export default defineComponent({
2073
2073
  }
2074
2074
  else {
2075
2075
  // 如果是使用优化模式
2076
- if (scrollXLoad || scrollYLoad || allColumnHeaderOverflow) {
2076
+ if (scrollXLoad && allColumnHeaderOverflow) {
2077
2077
  if (spanMethod || footerSpanMethod) {
2078
2078
  // 如果不支持优化模式
2079
2079
  }
@@ -2081,8 +2081,10 @@ export default defineComponent({
2081
2081
  isOptimizeMode = true;
2082
2082
  }
2083
2083
  }
2084
- if (fixedType) {
2084
+ if (!isOptimizeMode || (!isColLoading && (fixedType || !overflowX))) {
2085
2085
  renderColumnList = visibleColumn;
2086
+ }
2087
+ if (fixedType) {
2086
2088
  // 如果是使用优化模式
2087
2089
  if (isOptimizeMode) {
2088
2090
  renderColumnList = fixedColumn || [];
@@ -2174,7 +2176,7 @@ export default defineComponent({
2174
2176
  let renderColumnList = tableColumn;
2175
2177
  let isOptimizeMode = false;
2176
2178
  // 如果是使用优化模式
2177
- if (scrollXLoad || scrollYLoad || allColumnFooterOverflow) {
2179
+ if (scrollXLoad && allColumnFooterOverflow) {
2178
2180
  if (spanMethod || footerSpanMethod) {
2179
2181
  // 如果不支持优化模式
2180
2182
  }
@@ -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
  }