vxe-table 4.12.0-beta.9 → 4.12.1

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 (185) hide show
  1. package/es/grid/src/grid.js +45 -36
  2. package/es/locale/lang/ar-EG.js +7 -1
  3. package/es/locale/lang/de-DE.js +7 -1
  4. package/es/locale/lang/en-US.js +7 -1
  5. package/es/locale/lang/es-ES.js +7 -1
  6. package/es/locale/lang/fr-FR.js +7 -1
  7. package/es/locale/lang/hu-HU.js +7 -1
  8. package/es/locale/lang/hy-AM.js +7 -1
  9. package/es/locale/lang/id-ID.js +7 -1
  10. package/es/locale/lang/it-IT.js +7 -1
  11. package/es/locale/lang/ja-JP.js +7 -1
  12. package/es/locale/lang/ko-KR.js +7 -1
  13. package/es/locale/lang/nb-NO.js +7 -1
  14. package/es/locale/lang/pt-BR.js +7 -1
  15. package/es/locale/lang/ru-RU.js +7 -1
  16. package/es/locale/lang/th-TH.js +7 -1
  17. package/es/locale/lang/ug-CN.js +7 -1
  18. package/es/locale/lang/uk-UA.js +7 -1
  19. package/es/locale/lang/vi-VN.js +7 -1
  20. package/es/locale/lang/zh-CHT.js +7 -1
  21. package/es/locale/lang/zh-CN.js +7 -1
  22. package/es/style.css +1 -1
  23. package/es/table/module/custom/hook.js +1 -1
  24. package/es/table/module/custom/panel.js +4 -2
  25. package/es/table/module/edit/hook.js +29 -33
  26. package/es/table/module/export/export-panel.js +3 -2
  27. package/es/table/module/export/import-panel.js +3 -2
  28. package/es/table/module/filter/panel.js +12 -2
  29. package/es/table/module/keyboard/hook.js +105 -30
  30. package/es/table/module/menu/hook.js +2 -1
  31. package/es/table/module/validator/hook.js +4 -5
  32. package/es/table/render/index.js +3 -3
  33. package/es/table/src/body.js +45 -27
  34. package/es/table/src/cell.js +43 -24
  35. package/es/table/src/columnInfo.js +2 -2
  36. package/es/table/src/footer.js +12 -7
  37. package/es/table/src/header.js +12 -7
  38. package/es/table/src/props.js +4 -0
  39. package/es/table/src/table.js +501 -512
  40. package/es/table/src/util.js +34 -6
  41. package/es/ui/index.js +4 -3
  42. package/es/ui/src/log.js +1 -1
  43. package/helper/vetur/attributes.json +1 -1
  44. package/helper/vetur/tags.json +1 -1
  45. package/lib/grid/src/grid.js +42 -40
  46. package/lib/grid/src/grid.min.js +1 -1
  47. package/lib/index.umd.js +12594 -1185
  48. package/lib/index.umd.min.js +1 -1
  49. package/lib/locale/lang/ar-EG.js +7 -1
  50. package/lib/locale/lang/ar-EG.min.js +1 -1
  51. package/lib/locale/lang/de-DE.js +7 -1
  52. package/lib/locale/lang/de-DE.min.js +1 -1
  53. package/lib/locale/lang/en-US.js +7 -1
  54. package/lib/locale/lang/en-US.min.js +1 -1
  55. package/lib/locale/lang/en-US.umd.js +7 -1
  56. package/lib/locale/lang/es-ES.js +7 -1
  57. package/lib/locale/lang/es-ES.min.js +1 -1
  58. package/lib/locale/lang/es-ES.umd.js +7 -1
  59. package/lib/locale/lang/fr-FR.js +7 -1
  60. package/lib/locale/lang/fr-FR.min.js +1 -1
  61. package/lib/locale/lang/hu-HU.js +7 -1
  62. package/lib/locale/lang/hu-HU.min.js +1 -1
  63. package/lib/locale/lang/hu-HU.umd.js +7 -1
  64. package/lib/locale/lang/hy-AM.js +7 -1
  65. package/lib/locale/lang/hy-AM.min.js +1 -1
  66. package/lib/locale/lang/id-ID.js +7 -1
  67. package/lib/locale/lang/id-ID.min.js +1 -1
  68. package/lib/locale/lang/it-IT.js +7 -1
  69. package/lib/locale/lang/it-IT.min.js +1 -1
  70. package/lib/locale/lang/ja-JP.js +7 -1
  71. package/lib/locale/lang/ja-JP.min.js +1 -1
  72. package/lib/locale/lang/ja-JP.umd.js +7 -1
  73. package/lib/locale/lang/ko-KR.js +7 -1
  74. package/lib/locale/lang/ko-KR.min.js +1 -1
  75. package/lib/locale/lang/ko-KR.umd.js +7 -1
  76. package/lib/locale/lang/nb-NO.js +7 -1
  77. package/lib/locale/lang/nb-NO.min.js +1 -1
  78. package/lib/locale/lang/pt-BR.js +7 -1
  79. package/lib/locale/lang/pt-BR.min.js +1 -1
  80. package/lib/locale/lang/pt-BR.umd.js +7 -1
  81. package/lib/locale/lang/ru-RU.js +7 -1
  82. package/lib/locale/lang/ru-RU.min.js +1 -1
  83. package/lib/locale/lang/ru-RU.umd.js +7 -1
  84. package/lib/locale/lang/th-TH.js +7 -1
  85. package/lib/locale/lang/th-TH.min.js +1 -1
  86. package/lib/locale/lang/ug-CN.js +7 -1
  87. package/lib/locale/lang/ug-CN.min.js +1 -1
  88. package/lib/locale/lang/uk-UA.js +7 -1
  89. package/lib/locale/lang/uk-UA.min.js +1 -1
  90. package/lib/locale/lang/uk-UA.umd.js +7 -1
  91. package/lib/locale/lang/vi-VN.js +7 -1
  92. package/lib/locale/lang/vi-VN.min.js +1 -1
  93. package/lib/locale/lang/zh-CHT.js +7 -1
  94. package/lib/locale/lang/zh-CHT.min.js +1 -1
  95. package/lib/locale/lang/zh-CN.js +7 -1
  96. package/lib/locale/lang/zh-CN.min.js +1 -1
  97. package/lib/locale/lang/zh-CN.umd.js +7 -1
  98. package/lib/style.css +1 -1
  99. package/lib/table/module/custom/hook.js +1 -1
  100. package/lib/table/module/custom/hook.min.js +1 -1
  101. package/lib/table/module/custom/panel.js +4 -2
  102. package/lib/table/module/custom/panel.min.js +1 -1
  103. package/lib/table/module/edit/hook.js +36 -45
  104. package/lib/table/module/edit/hook.min.js +1 -1
  105. package/lib/table/module/export/export-panel.js +3 -2
  106. package/lib/table/module/export/export-panel.min.js +1 -1
  107. package/lib/table/module/export/import-panel.js +3 -2
  108. package/lib/table/module/export/import-panel.min.js +1 -1
  109. package/lib/table/module/filter/panel.js +8 -2
  110. package/lib/table/module/filter/panel.min.js +1 -1
  111. package/lib/table/module/keyboard/hook.js +113 -31
  112. package/lib/table/module/keyboard/hook.min.js +1 -1
  113. package/lib/table/module/menu/hook.js +2 -1
  114. package/lib/table/module/menu/hook.min.js +1 -1
  115. package/lib/table/module/validator/hook.js +6 -10
  116. package/lib/table/module/validator/hook.min.js +1 -1
  117. package/lib/table/render/index.js +4 -3
  118. package/lib/table/render/index.min.js +1 -1
  119. package/lib/table/src/body.js +53 -26
  120. package/lib/table/src/body.min.js +1 -1
  121. package/lib/table/src/cell.js +49 -25
  122. package/lib/table/src/cell.min.js +1 -1
  123. package/lib/table/src/columnInfo.js +2 -4
  124. package/lib/table/src/columnInfo.min.js +1 -1
  125. package/lib/table/src/footer.js +12 -5
  126. package/lib/table/src/footer.min.js +1 -1
  127. package/lib/table/src/header.js +12 -5
  128. package/lib/table/src/header.min.js +1 -1
  129. package/lib/table/src/props.js +4 -0
  130. package/lib/table/src/props.min.js +1 -1
  131. package/lib/table/src/table.js +594 -564
  132. package/lib/table/src/table.min.js +1 -1
  133. package/lib/table/src/util.js +36 -6
  134. package/lib/table/src/util.min.js +1 -1
  135. package/lib/ui/index.js +4 -3
  136. package/lib/ui/index.min.js +1 -1
  137. package/lib/ui/src/log.js +1 -1
  138. package/lib/ui/src/log.min.js +1 -1
  139. package/package.json +2 -2
  140. package/packages/grid/src/grid.ts +49 -42
  141. package/packages/locale/lang/ar-EG.ts +7 -1
  142. package/packages/locale/lang/de-DE.ts +7 -1
  143. package/packages/locale/lang/en-US.ts +7 -1
  144. package/packages/locale/lang/es-ES.ts +7 -1
  145. package/packages/locale/lang/fr-FR.ts +7 -1
  146. package/packages/locale/lang/hu-HU.ts +7 -1
  147. package/packages/locale/lang/hy-AM.ts +7 -1
  148. package/packages/locale/lang/id-ID.ts +7 -1
  149. package/packages/locale/lang/it-IT.ts +7 -1
  150. package/packages/locale/lang/ja-JP.ts +7 -1
  151. package/packages/locale/lang/ko-KR.ts +7 -1
  152. package/packages/locale/lang/nb-NO.ts +7 -1
  153. package/packages/locale/lang/pt-BR.ts +7 -1
  154. package/packages/locale/lang/ru-RU.ts +7 -1
  155. package/packages/locale/lang/th-TH.ts +7 -1
  156. package/packages/locale/lang/ug-CN.ts +7 -1
  157. package/packages/locale/lang/uk-UA.ts +7 -1
  158. package/packages/locale/lang/vi-VN.ts +7 -1
  159. package/packages/locale/lang/zh-CHT.ts +7 -1
  160. package/packages/locale/lang/zh-CN.ts +7 -1
  161. package/packages/table/module/custom/hook.ts +1 -1
  162. package/packages/table/module/custom/panel.ts +6 -2
  163. package/packages/table/module/edit/hook.ts +30 -33
  164. package/packages/table/module/export/export-panel.ts +4 -2
  165. package/packages/table/module/export/import-panel.ts +4 -2
  166. package/packages/table/module/filter/panel.ts +12 -2
  167. package/packages/table/module/keyboard/hook.ts +106 -32
  168. package/packages/table/module/menu/hook.ts +3 -1
  169. package/packages/table/module/validator/hook.ts +5 -5
  170. package/packages/table/render/index.ts +3 -4
  171. package/packages/table/src/body.ts +46 -27
  172. package/packages/table/src/cell.ts +43 -24
  173. package/packages/table/src/columnInfo.ts +3 -2
  174. package/packages/table/src/footer.ts +13 -7
  175. package/packages/table/src/header.ts +13 -7
  176. package/packages/table/src/props.ts +4 -0
  177. package/packages/table/src/table.ts +513 -518
  178. package/packages/table/src/util.ts +39 -6
  179. package/packages/ui/index.ts +3 -2
  180. /package/es/{iconfont.1741337003908.ttf → iconfont.1743045589885.ttf} +0 -0
  181. /package/es/{iconfont.1741337003908.woff → iconfont.1743045589885.woff} +0 -0
  182. /package/es/{iconfont.1741337003908.woff2 → iconfont.1743045589885.woff2} +0 -0
  183. /package/lib/{iconfont.1741337003908.ttf → iconfont.1743045589885.ttf} +0 -0
  184. /package/lib/{iconfont.1741337003908.woff → iconfont.1743045589885.woff} +0 -0
  185. /package/lib/{iconfont.1741337003908.woff2 → iconfont.1743045589885.woff2} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, TransitionGroup, h, ref, inject, nextTick, onMounted, onUnmounted } from 'vue';
2
2
  import XEUtils from 'xe-utils';
3
3
  import { VxeUI } from '../../ui';
4
- import { getOffsetSize, calcTreeLine, mergeBodyMethod, getRowid } from './util';
4
+ import { getOffsetSize, calcTreeLine, mergeBodyMethod, getRowid, createHandleGetRowId } from './util';
5
5
  import { updateCellTitle, getPropClass } from '../../ui/src/dom';
6
6
  import { isEnableConf } from '../../ui/src/utils';
7
7
  import { getSlotVNs } from '../../ui/src/vn';
@@ -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, computeResizableOpts } = $xeTable.getComputeMaps();
24
+ const { computeEditOpts, computeMouseOpts, computeCellOffsetWidth, 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();
@@ -36,7 +36,7 @@ export default defineComponent({
36
36
  const { lastScrollTime, isDragResize } = tableReactData;
37
37
  return !!(isDragResize || (lastScrollTime && Date.now() < lastScrollTime + delayHover));
38
38
  };
39
- const renderLine = (params, cellHeight) => {
39
+ const renderLine = (rowid, params, cellHeight) => {
40
40
  const { row, column } = params;
41
41
  const { afterFullData } = tableInternalData;
42
42
  const { treeConfig } = tableProps;
@@ -46,7 +46,6 @@ export default defineComponent({
46
46
  if (slots && slots.line) {
47
47
  return $xeTable.callSlot(slots.line, params);
48
48
  }
49
- const rowid = getRowid($xeTable, row);
50
49
  const rest = fullAllDataRowIdData[rowid];
51
50
  let rLevel = 0;
52
51
  let prevRow = null;
@@ -78,9 +77,10 @@ export default defineComponent({
78
77
  * 渲染列
79
78
  */
80
79
  const renderTdColumn = (seq, rowid, fixedType, isOptimizeMode, rowLevel, row, rowIndex, $rowIndex, _rowIndex, column, $columnIndex, columns, items) => {
81
- const { fullAllDataRowIdData } = tableInternalData;
80
+ const $xeGrid = $xeTable.xeGrid;
81
+ const { fullAllDataRowIdData, fullColumnIdData, visibleColumn } = tableInternalData;
82
82
  const { columnKey, resizable: allResizable, showOverflow: allShowOverflow, border, height, cellClassName: allCellClassName, cellStyle, align: allAlign, spanMethod, mouseConfig, editConfig, editRules, tooltipConfig, padding: allPadding } = tableProps;
83
- const { tableData, dragRow, overflowX, currentColumn, scrollXLoad, scrollYLoad, calcCellHeightFlag, resizeHeightFlag, mergeList, editStore, isAllOverflow, validErrorMaps } = tableReactData;
83
+ const { tableData, dragRow, overflowX, currentColumn, scrollXLoad, scrollYLoad, calcCellHeightFlag, resizeHeightFlag, resizeWidthFlag, mergeList, editStore, isAllOverflow, validErrorMaps } = tableReactData;
84
84
  const { afterFullData, scrollXStore, scrollYStore } = tableInternalData;
85
85
  const cellOpts = computeCellOpts.value;
86
86
  const validOpts = computeValidOpts.value;
@@ -97,19 +97,21 @@ export default defineComponent({
97
97
  const columnOpts = computeColumnOpts.value;
98
98
  const mouseOpts = computeMouseOpts.value;
99
99
  const areaOpts = computeAreaOpts.value;
100
+ const cellOffsetWidth = computeCellOffsetWidth.value;
100
101
  const { selectCellToRow } = areaOpts;
101
102
  const { type, cellRender, editRender, align, showOverflow, className, treeNode, rowResize, padding, verticalAlign, slots } = column;
102
103
  const { verticalAlign: allVerticalAlign } = cellOpts;
103
104
  const { actived } = editStore;
104
- const rowRest = fullAllDataRowIdData[rowid];
105
+ const rowRest = fullAllDataRowIdData[rowid] || {};
105
106
  const colid = column.id;
107
+ const colRest = fullColumnIdData[colid] || {};
106
108
  const renderOpts = editRender || cellRender;
107
109
  const compConf = renderOpts ? renderer.get(renderOpts.name) : null;
108
110
  const compCellClassName = compConf ? (compConf.tableCellClassName || compConf.cellClassName) : null;
109
111
  const compCellStyle = compConf ? (compConf.tableCellStyle || compConf.cellStyle) : '';
110
112
  const showAllTip = tooltipOpts.showAll;
111
- const columnIndex = $xeTable.getColumnIndex(column);
112
- const _columnIndex = $xeTable.getVTColumnIndex(column);
113
+ const columnIndex = colRest.index;
114
+ const _columnIndex = colRest._index;
113
115
  const isEdit = isEnableConf(editRender);
114
116
  const resizeHeight = resizeHeightFlag ? rowRest.resizeHeight : 0;
115
117
  let fixedHiddenColumn = fixedType ? column.fixed !== fixedType : column.fixed && overflowX;
@@ -131,7 +133,7 @@ export default defineComponent({
131
133
  const tdAttrs = { colid };
132
134
  const cellParams = {
133
135
  $table: $xeTable,
134
- $grid: $xeTable.xegrid,
136
+ $grid: $xeGrid,
135
137
  isEdit: false,
136
138
  seq,
137
139
  rowid,
@@ -263,6 +265,18 @@ export default defineComponent({
263
265
  }
264
266
  }
265
267
  const tcStyle = {};
268
+ if (hasEllipsis && resizeWidthFlag) {
269
+ let tsColspan = tdAttrs.colspan || 0;
270
+ if (tsColspan > 1) {
271
+ for (let index = 1; index < tsColspan; index++) {
272
+ const nextColumn = visibleColumn[columnIndex + index];
273
+ if (nextColumn) {
274
+ tsColspan += nextColumn.renderWidth;
275
+ }
276
+ }
277
+ }
278
+ tcStyle.width = `${column.renderWidth - (cellOffsetWidth * tsColspan)}px`;
279
+ }
266
280
  if (scrollYLoad || hasEllipsis || isCsHeight || isRsHeight) {
267
281
  tcStyle.height = `${cellHeight}px`;
268
282
  }
@@ -283,7 +297,7 @@ export default defineComponent({
283
297
  }
284
298
  else {
285
299
  // 渲染单元格
286
- tdVNs.push(...renderLine(cellParams, cellHeight), h('div', {
300
+ tdVNs.push(...renderLine(rowid, cellParams, cellHeight), h('div', {
287
301
  key: 'tc',
288
302
  class: ['vxe-cell', {
289
303
  'c--title': showTitle,
@@ -386,8 +400,8 @@ export default defineComponent({
386
400
  };
387
401
  const renderRows = (fixedType, isOptimizeMode, tableData, tableColumn) => {
388
402
  const { stripe, rowKey, highlightHoverRow, rowClassName, rowStyle, editConfig, treeConfig } = tableProps;
389
- const { hasFixedColumn, treeExpandedMaps, isColLoading, scrollXLoad, scrollYLoad, isAllOverflow, rowExpandedMaps, expandColumn, selectRadioRow, pendingRowMaps, isDragColMove, rowExpandHeightFlag } = tableReactData;
390
- const { fullAllDataRowIdData } = tableInternalData;
403
+ const { hasFixedColumn, treeExpandedFlag, isColLoading, scrollXLoad, scrollYLoad, isAllOverflow, rowExpandedFlag, expandColumn, selectRadioRow, pendingRowFlag, isDragColMove, rowExpandHeightFlag } = tableReactData;
404
+ const { fullAllDataRowIdData, treeExpandedMaps, pendingRowMaps, rowExpandedMaps } = tableInternalData;
391
405
  const checkboxOpts = computeCheckboxOpts.value;
392
406
  const radioOpts = computeRadioOpts.value;
393
407
  const treeOpts = computeTreeOpts.value;
@@ -398,11 +412,15 @@ export default defineComponent({
398
412
  const { transform, seqMode } = treeOpts;
399
413
  const childrenField = treeOpts.children || treeOpts.childrenField;
400
414
  const rows = [];
415
+ const { handleGetRowId } = createHandleGetRowId($xeTable);
401
416
  tableData.forEach((row, $rowIndex) => {
402
- const trOn = {};
417
+ const rowid = handleGetRowId(row);
418
+ const rowRest = fullAllDataRowIdData[rowid] || {};
403
419
  let rowIndex = $rowIndex;
404
- // 确保任何情况下 rowIndex 都精准指向真实 data 索引
405
- rowIndex = $xeTable.getRowIndex(row);
420
+ let rowLevel = 0;
421
+ let seq = -1;
422
+ let _rowIndex = -1;
423
+ const trOn = {};
406
424
  // 当前行事件
407
425
  if (rowOpts.isHover || highlightHoverRow) {
408
426
  trOn.onMouseenter = (evnt) => {
@@ -418,11 +436,6 @@ export default defineComponent({
418
436
  $xeTable.clearHoverRow();
419
437
  };
420
438
  }
421
- const rowid = getRowid($xeTable, row);
422
- const rowRest = fullAllDataRowIdData[rowid];
423
- let rowLevel = 0;
424
- let seq = -1;
425
- let _rowIndex = 0;
426
439
  if (rowRest) {
427
440
  rowLevel = rowRest.level;
428
441
  if (treeConfig && transform && seqMode === 'increasing') {
@@ -431,11 +444,12 @@ export default defineComponent({
431
444
  else {
432
445
  seq = rowRest.seq;
433
446
  }
447
+ rowIndex = rowRest.index;
434
448
  _rowIndex = rowRest._index;
435
449
  }
436
450
  const params = { $table: $xeTable, seq, rowid, fixed: fixedType, type: renderType, level: rowLevel, row, rowIndex, $rowIndex, _rowIndex };
437
451
  // 行是否被展开
438
- const isExpandRow = expandColumn && !!rowExpandedMaps[rowid];
452
+ const isExpandRow = expandColumn && !!rowExpandedFlag && !!rowExpandedMaps[rowid];
439
453
  // 树节点是否被展开
440
454
  let isExpandTree = false;
441
455
  let rowChildren = [];
@@ -445,7 +459,7 @@ export default defineComponent({
445
459
  }
446
460
  if (treeConfig && !scrollYLoad && !transform) {
447
461
  rowChildren = row[childrenField];
448
- isExpandTree = rowChildren && rowChildren.length > 0 && !!treeExpandedMaps[rowid];
462
+ isExpandTree = !!treeExpandedFlag && rowChildren && rowChildren.length > 0 && !!treeExpandedMaps[rowid];
449
463
  }
450
464
  // 拖拽行事件
451
465
  if (rowOpts.drag && (!treeConfig || transform)) {
@@ -464,7 +478,7 @@ export default defineComponent({
464
478
  'row--new': isNewRow && (editOpts.showStatus || editOpts.showInsertStatus),
465
479
  'row--radio': radioOpts.highlight && $xeTable.eqRow(selectRadioRow, row),
466
480
  'row--checked': checkboxOpts.highlight && $xeTable.isCheckedByCheckboxRow(row),
467
- 'row--pending': !!pendingRowMaps[rowid]
481
+ 'row--pending': !!pendingRowFlag && !!pendingRowMaps[rowid]
468
482
  },
469
483
  getPropClass(rowClassName, params)
470
484
  ];
@@ -568,6 +582,7 @@ export default defineComponent({
568
582
  });
569
583
  const renderVN = () => {
570
584
  const { slots } = tableContext;
585
+ const $xeGrid = $xeTable.xeGrid;
571
586
  const { fixedColumn, fixedType, tableColumn } = props;
572
587
  const { spanMethod, footerSpanMethod, mouseConfig } = tableProps;
573
588
  const { isGroup, tableData, isRowLoading, isColLoading, overflowX, scrollXLoad, scrollYLoad, isAllOverflow, isDragRowMove, expandColumn, dragRow, dragCol } = tableReactData;
@@ -589,7 +604,7 @@ export default defineComponent({
589
604
  isOptimizeMode = true;
590
605
  }
591
606
  }
592
- if (fixedType || !overflowX) {
607
+ if (!isColLoading && (fixedType || !overflowX)) {
593
608
  renderColumnList = visibleColumn;
594
609
  }
595
610
  if (fixedType) {
@@ -648,7 +663,7 @@ export default defineComponent({
648
663
  let emptyContent;
649
664
  const emptySlot = slots ? slots.empty : null;
650
665
  if (emptySlot) {
651
- emptyContent = $xeTable.callSlot(emptySlot, { $table: $xeTable, $grid: $xeTable.xegrid });
666
+ emptyContent = $xeTable.callSlot(emptySlot, { $table: $xeTable, $grid: $xeGrid });
652
667
  }
653
668
  else {
654
669
  const compConf = emptyOpts.name ? renderer.get(emptyOpts.name) : null;
@@ -697,7 +712,10 @@ export default defineComponent({
697
712
  }, renderColumnList.map((column, $columnIndex) => {
698
713
  return h('col', {
699
714
  name: column.id,
700
- key: $columnIndex
715
+ key: $columnIndex,
716
+ style: {
717
+ width: `${column.renderWidth}px`
718
+ }
701
719
  });
702
720
  })),
703
721
  /**
@@ -201,15 +201,27 @@ function getFooterContent(params) {
201
201
  });
202
202
  if (footerFormatter) {
203
203
  if (XEUtils.isFunction(footerFormatter)) {
204
- return `${footerFormatter(footParams)}`;
204
+ return [
205
+ h('span', {
206
+ class: 'vxe-cell--label'
207
+ }, `${footerFormatter(footParams)}`)
208
+ ];
205
209
  }
206
210
  const isArr = XEUtils.isArray(footerFormatter);
207
211
  const gFormatOpts = isArr ? formats.get(footerFormatter[0]) : formats.get(footerFormatter);
208
212
  const footerFormatMethod = gFormatOpts ? gFormatOpts.tableFooterCellFormatMethod : null;
209
213
  if (footerFormatMethod) {
210
- return `${isArr ? footerFormatMethod(footParams, ...footerFormatter.slice(1)) : footerFormatMethod(footParams)}`;
214
+ return [
215
+ h('span', {
216
+ class: 'vxe-cell--label'
217
+ }, `${isArr ? footerFormatMethod(footParams, ...footerFormatter.slice(1)) : footerFormatMethod(footParams)}`)
218
+ ];
211
219
  }
212
- return '';
220
+ return [
221
+ h('span', {
222
+ class: 'vxe-cell--label'
223
+ }, '')
224
+ ];
213
225
  }
214
226
  if (renderOpts) {
215
227
  const compConf = renderer.get(renderOpts.name);
@@ -221,7 +233,9 @@ function getFooterContent(params) {
221
233
  }
222
234
  }
223
235
  return [
224
- formatText(itemValue, 1)
236
+ h('span', {
237
+ class: 'vxe-cell--label'
238
+ }, formatText(itemValue, 1))
225
239
  ];
226
240
  }
227
241
  function getDefaultCellLabel(params) {
@@ -380,8 +394,8 @@ export const Cell = {
380
394
  const tableReactData = $table.reactData;
381
395
  const tableInternalData = $table.internalData;
382
396
  const { computeTreeOpts } = $table.getComputeMaps();
383
- const { treeExpandedMaps, treeExpandLazyLoadedMaps } = tableReactData;
384
- const { fullAllDataRowIdData } = tableInternalData;
397
+ const { treeExpandedFlag } = tableReactData;
398
+ const { fullAllDataRowIdData, treeExpandedMaps, treeExpandLazyLoadedMaps } = tableInternalData;
385
399
  const treeOpts = computeTreeOpts.value;
386
400
  const { row, column, level } = params;
387
401
  const { slots } = column;
@@ -401,7 +415,7 @@ export const Cell = {
401
415
  }
402
416
  if (!isHidden) {
403
417
  const rowid = getRowid($table, row);
404
- isActive = !!treeExpandedMaps[rowid];
418
+ isActive = !!treeExpandedFlag && !!treeExpandedMaps[rowid];
405
419
  if (lazy) {
406
420
  const rest = fullAllDataRowIdData[rowid];
407
421
  isLazyLoading = !!treeExpandLazyLoadedMaps[rowid];
@@ -548,7 +562,8 @@ export const Cell = {
548
562
  const headerSlot = slots ? slots.header : null;
549
563
  const titleSlot = slots ? slots.title : null;
550
564
  const checkboxOpts = computeCheckboxOpts.value;
551
- const headerTitle = column.getTitle();
565
+ const { checkStrictly, showHeader, headerTitle } = checkboxOpts;
566
+ const colTitle = column.getTitle();
552
567
  const ons = {};
553
568
  if (!isHidden) {
554
569
  ons.onClick = (evnt) => {
@@ -561,11 +576,11 @@ export const Cell = {
561
576
  if (headerSlot) {
562
577
  return renderHeaderCellBaseVNs(params, renderTitleContent(checkboxParams, $table.callSlot(headerSlot, checkboxParams)));
563
578
  }
564
- if (checkboxOpts.checkStrictly ? !checkboxOpts.showHeader : checkboxOpts.showHeader === false) {
579
+ if (checkStrictly ? !showHeader : showHeader === false) {
565
580
  return renderHeaderCellBaseVNs(params, renderTitleContent(checkboxParams, [
566
581
  h('span', {
567
582
  class: 'vxe-checkbox--label'
568
- }, titleSlot ? $table.callSlot(titleSlot, checkboxParams) : headerTitle)
583
+ }, titleSlot ? $table.callSlot(titleSlot, checkboxParams) : colTitle)
569
584
  ]));
570
585
  }
571
586
  return renderHeaderCellBaseVNs(params, renderTitleContent(checkboxParams, [
@@ -573,15 +588,15 @@ export const Cell = {
573
588
  'is--checked': isAllCheckboxSelected,
574
589
  'is--disabled': isAllCheckboxDisabled,
575
590
  'is--indeterminate': isAllCheckboxIndeterminate
576
- }], title: getI18n('vxe.table.allTitle') }, ons), [
591
+ }], title: XEUtils.eqNull(headerTitle) ? getI18n('vxe.table.allTitle') : `${headerTitle || ''}` }, ons), [
577
592
  h('span', {
578
593
  class: ['vxe-checkbox--icon', isAllCheckboxIndeterminate ? getIcon().TABLE_CHECKBOX_INDETERMINATE : (isAllCheckboxSelected ? getIcon().TABLE_CHECKBOX_CHECKED : getIcon().TABLE_CHECKBOX_UNCHECKED)]
579
594
  })
580
- ].concat(titleSlot || headerTitle
595
+ ].concat(titleSlot || colTitle
581
596
  ? [
582
597
  h('span', {
583
598
  class: 'vxe-checkbox--label'
584
- }, titleSlot ? $table.callSlot(titleSlot, checkboxParams) : headerTitle)
599
+ }, titleSlot ? $table.callSlot(titleSlot, checkboxParams) : colTitle)
585
600
  ]
586
601
  : []))
587
602
  ]));
@@ -590,8 +605,10 @@ export const Cell = {
590
605
  const { $table, row, column, isHidden } = params;
591
606
  const tableProps = $table.props;
592
607
  const tableReactData = $table.reactData;
608
+ const tableInternalData = $table.internalData;
593
609
  const { treeConfig } = tableProps;
594
- const { selectCheckboxMaps, treeIndeterminateMaps } = tableReactData;
610
+ const { updateCheckboxFlag } = tableReactData;
611
+ const { selectCheckboxMaps, treeIndeterminateRowMaps } = tableInternalData;
595
612
  const { computeCheckboxOpts } = $table.getComputeMaps();
596
613
  const checkboxOpts = computeCheckboxOpts.value;
597
614
  const { labelField, checkMethod, visibleMethod } = checkboxOpts;
@@ -605,7 +622,7 @@ export const Cell = {
605
622
  const ons = {};
606
623
  if (!isHidden) {
607
624
  const rowid = getRowid($table, row);
608
- isChecked = !!selectCheckboxMaps[rowid];
625
+ isChecked = !!updateCheckboxFlag && !!selectCheckboxMaps[rowid];
609
626
  ons.onClick = (evnt) => {
610
627
  if (!isDisabled && isVisible) {
611
628
  $table.triggerCheckRowEvent(evnt, params, !isChecked);
@@ -615,7 +632,7 @@ export const Cell = {
615
632
  isDisabled = !checkMethod({ row });
616
633
  }
617
634
  if (treeConfig) {
618
- indeterminate = !!treeIndeterminateMaps[rowid];
635
+ indeterminate = !!treeIndeterminateRowMaps[rowid];
619
636
  }
620
637
  }
621
638
  const checkboxParams = Object.assign(Object.assign({}, params), { checked: isChecked, disabled: isDisabled, visible: isVisible, indeterminate });
@@ -649,8 +666,10 @@ export const Cell = {
649
666
  const { $table, row, column, isHidden } = params;
650
667
  const tableProps = $table.props;
651
668
  const tableReactData = $table.reactData;
669
+ const tableInternalData = $table.internalData;
652
670
  const { treeConfig } = tableProps;
653
- const { treeIndeterminateMaps } = tableReactData;
671
+ const { updateCheckboxFlag } = tableReactData;
672
+ const { treeIndeterminateRowMaps } = tableInternalData;
654
673
  const { computeCheckboxOpts } = $table.getComputeMaps();
655
674
  const checkboxOpts = computeCheckboxOpts.value;
656
675
  const { labelField, checkField, checkMethod, visibleMethod } = checkboxOpts;
@@ -665,7 +684,7 @@ export const Cell = {
665
684
  const ons = {};
666
685
  if (!isHidden) {
667
686
  const rowid = getRowid($table, row);
668
- isChecked = XEUtils.get(row, checkField);
687
+ isChecked = !!updateCheckboxFlag && XEUtils.get(row, checkField);
669
688
  ons.onClick = (evnt) => {
670
689
  if (!isDisabled && isVisible) {
671
690
  $table.triggerCheckRowEvent(evnt, params, !isChecked);
@@ -675,7 +694,7 @@ export const Cell = {
675
694
  isDisabled = !checkMethod({ row });
676
695
  }
677
696
  if (treeConfig) {
678
- isIndeterminate = !!treeIndeterminateMaps[rowid];
697
+ isIndeterminate = !!treeIndeterminateRowMaps[rowid];
679
698
  }
680
699
  }
681
700
  const checkboxParams = Object.assign(Object.assign({}, params), { checked: isChecked, disabled: isDisabled, visible: isVisible, indeterminate: isIndeterminate });
@@ -710,8 +729,8 @@ export const Cell = {
710
729
  */
711
730
  renderExpandCell(params) {
712
731
  const { $table, isHidden, row, column } = params;
713
- const tableReactData = $table.reactData;
714
- const { rowExpandedMaps, rowExpandLazyLoadedMaps } = tableReactData;
732
+ const tableInternalData = $table.internalData;
733
+ const { rowExpandedMaps, rowExpandLazyLoadedMaps } = tableInternalData;
715
734
  const { computeExpandOpts } = $table.getComputeMaps();
716
735
  const expandOpts = computeExpandOpts.value;
717
736
  const { lazy, labelField, iconLoaded, showIcon, iconOpen, iconClose, visibleMethod } = expandOpts;
@@ -809,7 +828,7 @@ export const Cell = {
809
828
  const { $table, column } = params;
810
829
  const { computeSortOpts } = $table.getComputeMaps();
811
830
  const sortOpts = computeSortOpts.value;
812
- const { showIcon, allowBtn, iconLayout, iconAsc, iconDesc, iconVisibleMethod } = sortOpts;
831
+ const { showIcon, allowBtn, ascTitle, descTitle, iconLayout, iconAsc, iconDesc, iconVisibleMethod } = sortOpts;
813
832
  const { order } = column;
814
833
  if (showIcon && (!iconVisibleMethod || iconVisibleMethod(params))) {
815
834
  return [
@@ -820,7 +839,7 @@ export const Cell = {
820
839
  class: ['vxe-sort--asc-btn', iconAsc || getIcon().TABLE_SORT_ASC, {
821
840
  'sort--active': order === 'asc'
822
841
  }],
823
- title: getI18n('vxe.table.sortAsc'),
842
+ title: XEUtils.eqNull(ascTitle) ? getI18n('vxe.table.sortAsc') : `${ascTitle || ''}`,
824
843
  onClick: allowBtn
825
844
  ? (evnt) => {
826
845
  evnt.stopPropagation();
@@ -832,7 +851,7 @@ export const Cell = {
832
851
  class: ['vxe-sort--desc-btn', iconDesc || getIcon().TABLE_SORT_DESC, {
833
852
  'sort--active': order === 'desc'
834
853
  }],
835
- title: getI18n('vxe.table.sortDesc'),
854
+ title: XEUtils.eqNull(descTitle) ? getI18n('vxe.table.sortDesc') : `${descTitle || ''}`,
836
855
  onClick: allowBtn
837
856
  ? (evnt) => {
838
857
  evnt.stopPropagation();
@@ -7,10 +7,10 @@ const { getI18n, formats } = VxeUI;
7
7
  export class ColumnInfo {
8
8
  /* eslint-disable @typescript-eslint/no-use-before-define */
9
9
  constructor($xeTable, _vm, { renderHeader, renderCell, renderFooter, renderData } = {}) {
10
- const $xeGrid = $xeTable.xegrid;
10
+ const tableProps = $xeTable.props;
11
+ const $xeGrid = $xeTable.xeGrid;
11
12
  const formatter = _vm.formatter;
12
13
  const visible = XEUtils.isBoolean(_vm.visible) ? _vm.visible : true;
13
- const { props: tableProps } = $xeTable;
14
14
  const types = ['seq', 'checkbox', 'radio', 'expand', 'html'];
15
15
  if (_vm.type && types.indexOf(_vm.type) === -1) {
16
16
  warnLog('vxe.error.errProp', [`type=${_vm.type}`, types.join(', ')]);
@@ -49,10 +49,11 @@ export default defineComponent({
49
49
  const refFooterTFoot = ref();
50
50
  const refFooterXSpace = ref();
51
51
  const renderRows = (tableColumn, footerTableData, row, $rowIndex, _rowIndex) => {
52
+ const $xeGrid = $xeTable.xeGrid;
52
53
  const { fixedType } = props;
53
54
  const { resizable: allResizable, border, footerCellClassName, footerCellStyle, footerAlign: allFooterAlign, footerSpanMethod, align: allAlign, columnKey, showFooterOverflow: allColumnFooterOverflow } = tableProps;
54
55
  const { scrollXLoad, scrollYLoad, overflowX, currentColumn, mergeFooterList } = tableReactData;
55
- const { scrollXStore } = tableInternalData;
56
+ const { fullColumnIdData, scrollXStore } = tableInternalData;
56
57
  const tooltipOpts = computeTooltipOpts.value;
57
58
  const resizableOpts = computeResizableOpts.value;
58
59
  const { isAllColumnDrag } = resizableOpts;
@@ -64,6 +65,7 @@ export default defineComponent({
64
65
  return tableColumn.map((column, $columnIndex) => {
65
66
  const { type, showFooterOverflow, footerAlign, align, footerClassName, editRender, cellRender } = column;
66
67
  const colid = column.id;
68
+ const colRest = fullColumnIdData[colid] || {};
67
69
  const renderOpts = editRender || cellRender;
68
70
  const compConf = renderOpts ? renderer.get(renderOpts.name) : null;
69
71
  const showAllTip = tooltipOpts.showAll;
@@ -79,12 +81,12 @@ export default defineComponent({
79
81
  const showResizable = (XEUtils.isBoolean(column.resizable) ? column.resizable : (columnOpts.resizable || allResizable));
80
82
  const attrs = { colid };
81
83
  const tfOns = {};
82
- const columnIndex = $xeTable.getColumnIndex(column);
83
- const _columnIndex = $xeTable.getVTColumnIndex(column);
84
+ const columnIndex = colRest.index;
85
+ const _columnIndex = colRest._index;
84
86
  const itemIndex = _columnIndex;
85
87
  const cellParams = {
86
88
  $table: $xeTable,
87
- $grid: $xeTable.xegrid,
89
+ $grid: $xeGrid,
88
90
  row,
89
91
  rowIndex: _rowIndex,
90
92
  _rowIndex,
@@ -250,7 +252,7 @@ export default defineComponent({
250
252
  const { fixedType, fixedColumn, tableColumn } = props;
251
253
  const { spanMethod, footerSpanMethod, showFooterOverflow: allColumnFooterOverflow } = tableProps;
252
254
  const { visibleColumn, fullColumnIdData } = tableInternalData;
253
- const { isGroup, overflowX, scrollXLoad, scrollYLoad, dragCol } = tableReactData;
255
+ const { isGroup, isColLoading, overflowX, scrollXLoad, scrollYLoad, dragCol } = tableReactData;
254
256
  let renderColumnList = tableColumn;
255
257
  let isOptimizeMode = false;
256
258
  // 如果是使用优化模式
@@ -262,7 +264,7 @@ export default defineComponent({
262
264
  isOptimizeMode = true;
263
265
  }
264
266
  }
265
- if (fixedType || !overflowX) {
267
+ if (!isColLoading && (fixedType || !overflowX)) {
266
268
  renderColumnList = visibleColumn;
267
269
  }
268
270
  if (fixedType) {
@@ -329,7 +331,10 @@ export default defineComponent({
329
331
  }, renderColumnList.map((column, $columnIndex) => {
330
332
  return h('col', {
331
333
  name: column.id,
332
- key: $columnIndex
334
+ key: $columnIndex,
335
+ style: {
336
+ width: `${column.renderWidth}px`
337
+ }
333
338
  });
334
339
  })),
335
340
  /**
@@ -33,10 +33,11 @@ export default defineComponent({
33
33
  headerColumn.value = isGroup ? convertHeaderColumnToRows(props.tableGroupColumn) : [];
34
34
  };
35
35
  const renderRows = (isGroup, isOptimizeMode, cols, $rowIndex) => {
36
+ const $xeGrid = $xeTable.xeGrid;
36
37
  const { fixedType } = props;
37
38
  const { resizable: allResizable, columnKey, headerCellClassName, headerCellStyle, showHeaderOverflow: allColumnHeaderOverflow, headerAlign: allHeaderAlign, align: allAlign, mouseConfig } = tableProps;
38
39
  const { currentColumn, dragCol, scrollXLoad, scrollYLoad, overflowX } = tableReactData;
39
- const { scrollXStore } = tableInternalData;
40
+ const { fullColumnIdData, scrollXStore } = tableInternalData;
40
41
  const columnOpts = computeColumnOpts.value;
41
42
  const columnDragOpts = computeColumnDragOpts.value;
42
43
  const cellOpts = computeCellOpts.value;
@@ -47,6 +48,7 @@ export default defineComponent({
47
48
  return cols.map((column, $columnIndex) => {
48
49
  const { type, showHeaderOverflow, headerAlign, align, filters, headerClassName, editRender, cellRender } = column;
49
50
  const colid = column.id;
51
+ const colRest = fullColumnIdData[colid] || {};
50
52
  const renderOpts = editRender || cellRender;
51
53
  const compConf = renderOpts ? renderer.get(renderOpts.name) : null;
52
54
  const isColGroup = column.children && column.children.length;
@@ -64,9 +66,9 @@ export default defineComponent({
64
66
  firstFilterOption = filters[0];
65
67
  hasFilter = filters.some((item) => item.checked);
66
68
  }
67
- const columnIndex = $xeTable.getColumnIndex(column);
68
- const _columnIndex = $xeTable.getVTColumnIndex(column);
69
- const cellParams = { $table: $xeTable, $grid: $xeTable.xegrid, $rowIndex, column, columnIndex, $columnIndex, _columnIndex, firstFilterOption, fixed: fixedType, type: renderType, isHidden: fixedHiddenColumn, hasFilter };
69
+ const columnIndex = colRest.index;
70
+ const _columnIndex = colRest._index;
71
+ const cellParams = { $table: $xeTable, $grid: $xeGrid, $rowIndex, column, columnIndex, $columnIndex, _columnIndex, firstFilterOption, fixed: fixedType, type: renderType, isHidden: fixedHiddenColumn, hasFilter };
70
72
  const thAttrs = {
71
73
  colid,
72
74
  colspan: column.colSpan > 1 ? column.colSpan : null,
@@ -199,7 +201,7 @@ export default defineComponent({
199
201
  const renderVN = () => {
200
202
  const { fixedType, fixedColumn, tableColumn } = props;
201
203
  const { mouseConfig, showHeaderOverflow: allColumnHeaderOverflow, spanMethod, footerSpanMethod } = tableProps;
202
- const { isGroup, overflowX, scrollXLoad, scrollYLoad, dragCol } = tableReactData;
204
+ const { isGroup, isColLoading, overflowX, scrollXLoad, scrollYLoad, dragCol } = tableReactData;
203
205
  const { visibleColumn, fullColumnIdData } = tableInternalData;
204
206
  const mouseOpts = computeMouseOpts.value;
205
207
  let renderHeaderList = headerColumn.value;
@@ -218,7 +220,7 @@ export default defineComponent({
218
220
  isOptimizeMode = true;
219
221
  }
220
222
  }
221
- if (fixedType || !overflowX) {
223
+ if (!isColLoading && (fixedType || !overflowX)) {
222
224
  renderColumnList = visibleColumn;
223
225
  }
224
226
  if (fixedType) {
@@ -290,7 +292,10 @@ export default defineComponent({
290
292
  }, renderColumnList.map((column, $columnIndex) => {
291
293
  return h('col', {
292
294
  name: column.id,
293
- key: $columnIndex
295
+ key: $columnIndex,
296
+ style: {
297
+ width: `${column.renderWidth}px`
298
+ }
294
299
  });
295
300
  })),
296
301
  /**
@@ -182,6 +182,8 @@ export default {
182
182
  resizeConfig: Object,
183
183
  // 列配置信息
184
184
  columnConfig: Object,
185
+ // 当前列配置信息
186
+ currentColumnConfig: Object,
185
187
  // 单元格配置信息
186
188
  cellConfig: Object,
187
189
  // 表头单元格配置信息
@@ -190,6 +192,8 @@ export default {
190
192
  footerCellConfig: Object,
191
193
  // 行配置信息
192
194
  rowConfig: Object,
195
+ // 当前行配置信息
196
+ currentRowConfig: Object,
193
197
  // 已废弃,被 rowDragConfig 替换
194
198
  dragConfig: Object,
195
199
  // 行拖拽排序配置项