vxe-table 4.10.6-beta.9 → 4.10.6

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 (178) hide show
  1. package/es/grid/src/grid.js +1 -1
  2. package/es/index.css +1 -1
  3. package/es/index.min.css +1 -1
  4. package/es/locale/lang/ar-EG.js +2 -1
  5. package/es/locale/lang/de-DE.js +2 -1
  6. package/es/locale/lang/en-US.js +4 -3
  7. package/es/locale/lang/es-ES.js +2 -1
  8. package/es/locale/lang/fr-FR.js +2 -1
  9. package/es/locale/lang/hu-HU.js +2 -1
  10. package/es/locale/lang/hy-AM.js +2 -1
  11. package/es/locale/lang/it-IT.js +2 -1
  12. package/es/locale/lang/ja-JP.js +2 -1
  13. package/es/locale/lang/ko-KR.js +2 -1
  14. package/es/locale/lang/nb-NO.js +2 -1
  15. package/es/locale/lang/pt-BR.js +2 -1
  16. package/es/locale/lang/ru-RU.js +4 -3
  17. package/es/locale/lang/th-TH.js +2 -1
  18. package/es/locale/lang/ug-CN.js +2 -1
  19. package/es/locale/lang/uk-UA.js +518 -517
  20. package/es/locale/lang/vi-VN.js +2 -1
  21. package/es/locale/lang/zh-CHT.js +2 -1
  22. package/es/locale/lang/zh-CN.js +2 -1
  23. package/es/style.css +1 -1
  24. package/es/style.min.css +1 -1
  25. package/es/table/module/edit/hook.js +7 -7
  26. package/es/table/module/export/hook.js +97 -62
  27. package/es/table/module/keyboard/hook.js +63 -27
  28. package/es/table/src/body.js +118 -84
  29. package/es/table/src/cell.js +41 -55
  30. package/es/table/src/column.js +13 -1
  31. package/es/table/src/columnInfo.js +3 -0
  32. package/es/table/src/emits.js +2 -0
  33. package/es/table/src/footer.js +45 -7
  34. package/es/table/src/header.js +67 -165
  35. package/es/table/src/props.js +14 -4
  36. package/es/table/src/table.js +858 -398
  37. package/es/table/src/util.js +77 -62
  38. package/es/table/style.css +246 -191
  39. package/es/table/style.min.css +1 -1
  40. package/es/ui/index.js +20 -7
  41. package/es/ui/src/log.js +1 -1
  42. package/es/vxe-table/style.css +246 -191
  43. package/es/vxe-table/style.min.css +1 -1
  44. package/lib/grid/src/grid.js +1 -1
  45. package/lib/grid/src/grid.min.js +1 -1
  46. package/lib/index.css +1 -1
  47. package/lib/index.min.css +1 -1
  48. package/lib/index.umd.js +1489 -874
  49. package/lib/index.umd.min.js +1 -1
  50. package/lib/locale/lang/ar-EG.js +2 -1
  51. package/lib/locale/lang/ar-EG.min.js +1 -1
  52. package/lib/locale/lang/de-DE.js +2 -1
  53. package/lib/locale/lang/de-DE.min.js +1 -1
  54. package/lib/locale/lang/en-US.js +4 -3
  55. package/lib/locale/lang/en-US.min.js +1 -1
  56. package/lib/locale/lang/en-US.umd.js +4 -3
  57. package/lib/locale/lang/es-ES.js +2 -1
  58. package/lib/locale/lang/es-ES.min.js +1 -1
  59. package/lib/locale/lang/es-ES.umd.js +2 -1
  60. package/lib/locale/lang/fr-FR.js +2 -1
  61. package/lib/locale/lang/fr-FR.min.js +1 -1
  62. package/lib/locale/lang/hu-HU.js +2 -1
  63. package/lib/locale/lang/hu-HU.min.js +1 -1
  64. package/lib/locale/lang/hu-HU.umd.js +2 -1
  65. package/lib/locale/lang/hy-AM.js +2 -1
  66. package/lib/locale/lang/hy-AM.min.js +1 -1
  67. package/lib/locale/lang/it-IT.js +2 -1
  68. package/lib/locale/lang/it-IT.min.js +1 -1
  69. package/lib/locale/lang/ja-JP.js +2 -1
  70. package/lib/locale/lang/ja-JP.min.js +1 -1
  71. package/lib/locale/lang/ja-JP.umd.js +2 -1
  72. package/lib/locale/lang/ko-KR.js +2 -1
  73. package/lib/locale/lang/ko-KR.min.js +1 -1
  74. package/lib/locale/lang/ko-KR.umd.js +2 -1
  75. package/lib/locale/lang/nb-NO.js +2 -1
  76. package/lib/locale/lang/nb-NO.min.js +1 -1
  77. package/lib/locale/lang/pt-BR.js +2 -1
  78. package/lib/locale/lang/pt-BR.min.js +1 -1
  79. package/lib/locale/lang/pt-BR.umd.js +2 -1
  80. package/lib/locale/lang/ru-RU.js +4 -3
  81. package/lib/locale/lang/ru-RU.min.js +1 -1
  82. package/lib/locale/lang/ru-RU.umd.js +4 -3
  83. package/lib/locale/lang/th-TH.js +2 -1
  84. package/lib/locale/lang/th-TH.min.js +1 -1
  85. package/lib/locale/lang/ug-CN.js +2 -1
  86. package/lib/locale/lang/ug-CN.min.js +1 -1
  87. package/lib/locale/lang/uk-UA.js +518 -517
  88. package/lib/locale/lang/uk-UA.min.js +1 -1
  89. package/lib/locale/lang/uk-UA.umd.js +518 -517
  90. package/lib/locale/lang/vi-VN.js +2 -1
  91. package/lib/locale/lang/vi-VN.min.js +1 -1
  92. package/lib/locale/lang/zh-CHT.js +2 -1
  93. package/lib/locale/lang/zh-CHT.min.js +1 -1
  94. package/lib/locale/lang/zh-CN.js +2 -1
  95. package/lib/locale/lang/zh-CN.min.js +1 -1
  96. package/lib/locale/lang/zh-CN.umd.js +2 -1
  97. package/lib/style.css +1 -1
  98. package/lib/style.min.css +1 -1
  99. package/lib/table/module/edit/hook.js +7 -2
  100. package/lib/table/module/edit/hook.min.js +1 -1
  101. package/lib/table/module/export/hook.js +97 -57
  102. package/lib/table/module/export/hook.min.js +1 -1
  103. package/lib/table/module/keyboard/hook.js +71 -28
  104. package/lib/table/module/keyboard/hook.min.js +1 -1
  105. package/lib/table/src/body.js +121 -80
  106. package/lib/table/src/body.min.js +1 -1
  107. package/lib/table/src/cell.js +32 -42
  108. package/lib/table/src/cell.min.js +1 -1
  109. package/lib/table/src/column.js +13 -1
  110. package/lib/table/src/column.min.js +1 -1
  111. package/lib/table/src/columnInfo.js +3 -0
  112. package/lib/table/src/columnInfo.min.js +1 -1
  113. package/lib/table/src/emits.js +1 -1
  114. package/lib/table/src/emits.min.js +1 -1
  115. package/lib/table/src/footer.js +45 -5
  116. package/lib/table/src/footer.min.js +1 -1
  117. package/lib/table/src/header.js +51 -178
  118. package/lib/table/src/header.min.js +1 -1
  119. package/lib/table/src/props.js +14 -4
  120. package/lib/table/src/props.min.js +1 -1
  121. package/lib/table/src/table.js +911 -384
  122. package/lib/table/src/table.min.js +1 -1
  123. package/lib/table/src/util.js +100 -82
  124. package/lib/table/src/util.min.js +1 -1
  125. package/lib/table/style/style.css +246 -191
  126. package/lib/table/style/style.min.css +1 -1
  127. package/lib/ui/index.js +20 -7
  128. package/lib/ui/index.min.js +1 -1
  129. package/lib/ui/src/log.js +1 -1
  130. package/lib/ui/src/log.min.js +1 -1
  131. package/lib/vxe-table/style/style.css +246 -191
  132. package/lib/vxe-table/style/style.min.css +1 -1
  133. package/package.json +2 -2
  134. package/packages/grid/src/grid.ts +1 -1
  135. package/packages/locale/lang/ar-EG.ts +2 -1
  136. package/packages/locale/lang/de-DE.ts +2 -1
  137. package/packages/locale/lang/en-US.ts +4 -3
  138. package/packages/locale/lang/es-ES.ts +2 -1
  139. package/packages/locale/lang/fr-FR.ts +2 -1
  140. package/packages/locale/lang/hu-HU.ts +2 -1
  141. package/packages/locale/lang/hy-AM.ts +2 -1
  142. package/packages/locale/lang/it-IT.ts +2 -1
  143. package/packages/locale/lang/ja-JP.ts +2 -1
  144. package/packages/locale/lang/ko-KR.ts +2 -1
  145. package/packages/locale/lang/nb-NO.ts +2 -1
  146. package/packages/locale/lang/pt-BR.ts +2 -1
  147. package/packages/locale/lang/ru-RU.ts +4 -3
  148. package/packages/locale/lang/th-TH.ts +2 -1
  149. package/packages/locale/lang/ug-CN.ts +2 -1
  150. package/packages/locale/lang/uk-UA.ts +518 -517
  151. package/packages/locale/lang/vi-VN.ts +2 -1
  152. package/packages/locale/lang/zh-CHT.ts +2 -1
  153. package/packages/locale/lang/zh-CN.ts +2 -1
  154. package/packages/table/module/edit/hook.ts +7 -7
  155. package/packages/table/module/export/hook.ts +118 -65
  156. package/packages/table/module/keyboard/hook.ts +59 -25
  157. package/packages/table/src/body.ts +136 -94
  158. package/packages/table/src/cell.ts +41 -63
  159. package/packages/table/src/column.ts +13 -1
  160. package/packages/table/src/columnInfo.ts +3 -0
  161. package/packages/table/src/emits.ts +5 -1
  162. package/packages/table/src/footer.ts +48 -8
  163. package/packages/table/src/header.ts +67 -165
  164. package/packages/table/src/props.ts +14 -5
  165. package/packages/table/src/table.ts +862 -398
  166. package/packages/table/src/util.ts +81 -62
  167. package/packages/ui/index.ts +19 -6
  168. package/styles/components/table.scss +313 -274
  169. package/styles/theme/base.scss +4 -6
  170. package/styles/theme/dark.scss +1 -0
  171. package/styles/theme/light.scss +1 -0
  172. package/styles/variable.scss +1 -1
  173. /package/es/{iconfont.1736854674495.ttf → iconfont.1738985856004.ttf} +0 -0
  174. /package/es/{iconfont.1736854674495.woff → iconfont.1738985856004.woff} +0 -0
  175. /package/es/{iconfont.1736854674495.woff2 → iconfont.1738985856004.woff2} +0 -0
  176. /package/lib/{iconfont.1736854674495.ttf → iconfont.1738985856004.ttf} +0 -0
  177. /package/lib/{iconfont.1736854674495.woff → iconfont.1738985856004.woff} +0 -0
  178. /package/lib/{iconfont.1736854674495.woff2 → iconfont.1738985856004.woff2} +0 -0
@@ -58,7 +58,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
58
58
  computeSize
59
59
  } = useFns.useSize(props);
60
60
  const reactData = (0, _vue.reactive)({
61
- isCalcColumn: false,
62
61
  // 低性能的静态列
63
62
  staticColumns: [],
64
63
  // 渲染的列分组
@@ -271,15 +270,17 @@ var _default = exports.default = (0, _vue.defineComponent)({
271
270
  isFooter: false
272
271
  },
273
272
  scrollVMLoading: false,
274
- isCalcCellHeight: 0,
273
+ calcCellHeightFlag: 0,
274
+ resizeHeightFlag: 0,
275
275
  isCustomStatus: false,
276
276
  isDragRowMove: false,
277
277
  dragRow: null,
278
278
  isDragColMove: false,
279
279
  dragCol: null,
280
280
  dragTipText: '',
281
- _isResize: false,
282
- isLoading: false
281
+ isDragResize: false,
282
+ isRowLoading: false,
283
+ isColLoading: false
283
284
  });
284
285
  const internalData = {
285
286
  tZindex: 0,
@@ -353,10 +354,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
353
354
  fullDataRowIdData: {},
354
355
  fullColumnIdData: {},
355
356
  fullColumnFieldData: {},
356
- // 列选取状态
357
- columnStatusMaps: {},
358
- // 行选取状态
359
- rowStatusMaps: {},
360
357
  // prevDragRow: null,
361
358
  inited: false,
362
359
  tooltipTimeout: null,
@@ -384,8 +381,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
384
381
  const refTableRightFooter = (0, _vue.ref)();
385
382
  const refLeftContainer = (0, _vue.ref)();
386
383
  const refRightContainer = (0, _vue.ref)();
387
- const refCellResizeBar = (0, _vue.ref)();
388
- const refCellResizeTip = (0, _vue.ref)();
384
+ const refColResizeBar = (0, _vue.ref)();
385
+ const refRowResizeBar = (0, _vue.ref)();
389
386
  const refEmptyPlaceholder = (0, _vue.ref)();
390
387
  const refDragTipElem = (0, _vue.ref)();
391
388
  const refDragRowLineElem = (0, _vue.ref)();
@@ -484,7 +481,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
484
481
  const computeDefaultRowHeight = (0, _vue.computed)(() => {
485
482
  const vSize = computeSize.value;
486
483
  const rowHeightMaps = computeRowHeightMaps.value;
487
- return rowHeightMaps[vSize || 'default'];
484
+ return rowHeightMaps[vSize || 'default'] || 18;
488
485
  });
489
486
  const computeColumnOpts = (0, _vue.computed)(() => {
490
487
  return Object.assign({}, getConfig().table.columnConfig, props.columnConfig);
@@ -492,6 +489,12 @@ var _default = exports.default = (0, _vue.defineComponent)({
492
489
  const computeCellOpts = (0, _vue.computed)(() => {
493
490
  return Object.assign({}, getConfig().table.cellConfig, props.cellConfig);
494
491
  });
492
+ const computeHeaderCellOpts = (0, _vue.computed)(() => {
493
+ return Object.assign({}, getConfig().table.headerCellConfig, props.headerCellConfig);
494
+ });
495
+ const computeFooterCellOpts = (0, _vue.computed)(() => {
496
+ return Object.assign({}, getConfig().table.footerCellConfig, props.footerCellConfig);
497
+ });
495
498
  const computeRowOpts = (0, _vue.computed)(() => {
496
499
  return Object.assign({}, getConfig().table.rowConfig, props.rowConfig);
497
500
  });
@@ -521,6 +524,17 @@ var _default = exports.default = (0, _vue.defineComponent)({
521
524
  const computeTooltipOpts = (0, _vue.computed)(() => {
522
525
  return Object.assign({}, getConfig().tooltip, getConfig().table.tooltipConfig, props.tooltipConfig);
523
526
  });
527
+ const computeTableTipConfig = (0, _vue.computed)(() => {
528
+ const {
529
+ tooltipStore
530
+ } = reactData;
531
+ const tooltipOpts = computeTooltipOpts.value;
532
+ return Object.assign({}, tooltipOpts, tooltipStore.currOpts);
533
+ });
534
+ const computeValidTipConfig = (0, _vue.computed)(() => {
535
+ const tooltipOpts = computeTooltipOpts.value;
536
+ return Object.assign({}, tooltipOpts);
537
+ });
524
538
  const computeEditOpts = (0, _vue.computed)(() => {
525
539
  return Object.assign({}, getConfig().table.editConfig, props.editConfig);
526
540
  });
@@ -751,8 +765,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
751
765
  refTableRightFooter,
752
766
  refLeftContainer,
753
767
  refRightContainer,
754
- refCellResizeBar,
755
- refCellResizeTip,
768
+ refColResizeBar,
769
+ refRowResizeBar,
756
770
  refScrollXVirtualElem,
757
771
  refScrollYVirtualElem,
758
772
  refScrollXHandleElem,
@@ -774,6 +788,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
774
788
  computeScrollYThreshold,
775
789
  computeDefaultRowHeight,
776
790
  computeCellOpts,
791
+ computeHeaderCellOpts,
792
+ computeFooterCellOpts,
777
793
  computeRowOpts,
778
794
  computeRowDragOpts,
779
795
  computeColumnDragOpts,
@@ -925,14 +941,14 @@ var _default = exports.default = (0, _vue.defineComponent)({
925
941
  };
926
942
  const computeRowHeight = () => {
927
943
  const {
928
- showOverflow
929
- } = props;
944
+ isAllOverflow
945
+ } = reactData;
930
946
  const tableHeader = refTableHeader.value;
931
947
  const tableBody = refTableBody.value;
932
948
  const tableBodyElem = tableBody ? tableBody.$el : null;
933
949
  const defaultRowHeight = computeDefaultRowHeight.value;
934
950
  let rowHeight = 0;
935
- if (showOverflow) {
951
+ if (isAllOverflow) {
936
952
  if (tableBodyElem) {
937
953
  const tableHeaderElem = tableHeader ? tableHeader.$el : null;
938
954
  let firstTrElem;
@@ -955,16 +971,17 @@ var _default = exports.default = (0, _vue.defineComponent)({
955
971
  };
956
972
  const handleVirtualYVisible = currScrollTop => {
957
973
  const {
958
- showOverflow
959
- } = props;
960
- const {
961
- rowHeight
974
+ isAllOverflow
962
975
  } = reactData;
963
976
  const {
964
977
  elemStore,
978
+ isResizeCellHeight,
965
979
  afterFullData,
966
980
  fullAllDataRowIdData
967
981
  } = internalData;
982
+ const rowOpts = computeRowOpts.value;
983
+ const cellOpts = computeCellOpts.value;
984
+ const defaultRowHeight = computeDefaultRowHeight.value;
968
985
  const bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
969
986
  if (bodyScrollElem) {
970
987
  const clientHeight = bodyScrollElem.clientHeight;
@@ -973,15 +990,16 @@ var _default = exports.default = (0, _vue.defineComponent)({
973
990
  let toVisibleIndex = -1;
974
991
  let offsetTop = 0;
975
992
  let visibleSize = 0;
976
- if (showOverflow) {
977
- toVisibleIndex = Math.floor(scrollTop / rowHeight);
978
- visibleSize = Math.ceil(clientHeight / rowHeight) + 1;
993
+ const isCustomCellHeight = isResizeCellHeight || cellOpts.height || rowOpts.height;
994
+ if (!isCustomCellHeight && isAllOverflow) {
995
+ toVisibleIndex = Math.floor(scrollTop / defaultRowHeight);
996
+ visibleSize = Math.ceil(clientHeight / defaultRowHeight) + 1;
979
997
  } else {
980
998
  for (let rIndex = 0, rLen = afterFullData.length; rIndex < rLen; rIndex++) {
981
999
  const row = afterFullData[rIndex];
982
1000
  const rowid = (0, _util.getRowid)($xeTable, row);
983
- const rowRest = fullAllDataRowIdData[rowid];
984
- offsetTop += rowRest ? rowRest.height || rowHeight : rowHeight;
1001
+ const rowRest = fullAllDataRowIdData[rowid] || {};
1002
+ offsetTop += rowRest.resizeHeight || rowRest.height || cellOpts.height || rowOpts.height || defaultRowHeight;
985
1003
  if (toVisibleIndex === -1 && scrollTop < offsetTop) {
986
1004
  toVisibleIndex = rIndex;
987
1005
  }
@@ -1372,56 +1390,40 @@ var _default = exports.default = (0, _vue.defineComponent)({
1372
1390
  internalData.customMaxHeight = calcTableHeight('maxHeight');
1373
1391
  };
1374
1392
  const calcColumnAutoWidth = (column, wrapperEl) => {
1375
- const cellElList = wrapperEl.querySelectorAll(`.vxe-header--column.${column.id}>.vxe-cell,.vxe-body--column.${column.id}>.vxe-cell,.vxe-footer--column.${column.id}>.vxe-cell`);
1376
- const firstCellEl = cellElList[0];
1377
- let paddingSize = 0;
1378
- if (firstCellEl) {
1379
- const cellStyle = getComputedStyle(firstCellEl);
1380
- paddingSize = Math.floor(_xeUtils.default.toNumber(cellStyle.paddingLeft) + _xeUtils.default.toNumber(cellStyle.paddingRight)) + 2;
1381
- }
1382
- let colWidth = column.renderAutoWidth - paddingSize;
1383
- _xeUtils.default.arrayEach(cellElList, itemEl => {
1384
- const cellEl = itemEl;
1385
- const thElem = cellEl.parentElement;
1386
- let titleWidth = 0;
1387
- if (`${thElem.tagName}`.toLowerCase() === 'th') {
1388
- _xeUtils.default.arrayEach(cellEl.children, btnEl => {
1389
- titleWidth += btnEl.offsetWidth + 1;
1390
- });
1391
- } else {
1392
- const labelEl = cellEl.firstElementChild;
1393
- if (labelEl) {
1394
- titleWidth = labelEl.offsetWidth;
1395
- }
1396
- }
1397
- if (titleWidth) {
1398
- colWidth = Math.max(colWidth, Math.ceil(titleWidth) + 4);
1399
- }
1400
- });
1401
- return colWidth + paddingSize;
1393
+ const cellElemList = wrapperEl.querySelectorAll(`.vxe-cell--wrapper[colid="${column.id}"]`);
1394
+ let leftRightPadding = 0;
1395
+ const firstCellEl = cellElemList[0];
1396
+ if (firstCellEl && firstCellEl.parentElement) {
1397
+ const cellStyle = getComputedStyle(firstCellEl.parentElement);
1398
+ leftRightPadding = Math.ceil(_xeUtils.default.toNumber(cellStyle.paddingLeft) + _xeUtils.default.toNumber(cellStyle.paddingRight));
1399
+ }
1400
+ let colWidth = column.renderAutoWidth - leftRightPadding;
1401
+ for (let i = 0; i < cellElemList.length; i++) {
1402
+ const celEl = cellElemList[i];
1403
+ colWidth = Math.max(colWidth, celEl ? Math.ceil(celEl.scrollWidth) + 4 : 0);
1404
+ }
1405
+ return colWidth + leftRightPadding;
1402
1406
  };
1403
1407
  const calcCellWidth = () => {
1404
1408
  const autoWidthColumnList = computeAutoWidthColumnList.value;
1405
- reactData.isCalcColumn = true;
1406
- return (0, _vue.nextTick)().then(() => {
1407
- const {
1408
- fullColumnIdData
1409
- } = internalData;
1410
- const el = refElem.value;
1411
- if (el) {
1412
- autoWidthColumnList.forEach(column => {
1413
- const colid = column.id;
1414
- const colRest = fullColumnIdData[colid];
1415
- const colWidth = calcColumnAutoWidth(column, el);
1416
- if (colRest) {
1417
- colRest.width = Math.max(colWidth, colRest.width);
1418
- }
1419
- column.renderAutoWidth = colWidth;
1420
- });
1421
- $xeTable.analyColumnWidth();
1422
- }
1423
- reactData.isCalcColumn = false;
1424
- });
1409
+ const {
1410
+ fullColumnIdData
1411
+ } = internalData;
1412
+ const el = refElem.value;
1413
+ if (el) {
1414
+ el.setAttribute('data-calc-col', 'Y');
1415
+ autoWidthColumnList.forEach(column => {
1416
+ const colid = column.id;
1417
+ const colRest = fullColumnIdData[colid];
1418
+ const colWidth = calcColumnAutoWidth(column, el);
1419
+ if (colRest) {
1420
+ colRest.width = Math.max(colWidth, colRest.width);
1421
+ }
1422
+ column.renderAutoWidth = colWidth;
1423
+ });
1424
+ $xeTable.analyColumnWidth();
1425
+ el.removeAttribute('data-calc-col');
1426
+ }
1425
1427
  };
1426
1428
  /**
1427
1429
  * 列宽算法,计算单元格列宽,动态分配可用剩余空间
@@ -1477,39 +1479,39 @@ var _default = exports.default = (0, _vue.defineComponent)({
1477
1479
  });
1478
1480
  // 最小自适应
1479
1481
  autoMinList.forEach(column => {
1480
- const scaleWidth = Math.max(60, _xeUtils.default.toInteger(column.renderAutoWidth));
1481
- tableWidth += scaleWidth;
1482
- column.renderWidth = scaleWidth;
1482
+ const caWidth = Math.max(60, _xeUtils.default.toInteger(column.renderAutoWidth));
1483
+ tableWidth += caWidth;
1484
+ column.renderWidth = caWidth;
1483
1485
  });
1484
1486
  // 最小百分比
1485
1487
  scaleMinList.forEach(column => {
1486
- const scaleWidth = Math.floor(_xeUtils.default.toInteger(column.minWidth) * meanWidth);
1487
- tableWidth += scaleWidth;
1488
- column.renderWidth = scaleWidth;
1488
+ const smWidth = Math.floor(_xeUtils.default.toInteger(column.minWidth) * meanWidth);
1489
+ tableWidth += smWidth;
1490
+ column.renderWidth = smWidth;
1489
1491
  });
1490
1492
  // 固定百分比
1491
1493
  scaleList.forEach(column => {
1492
- const scaleWidth = Math.floor(_xeUtils.default.toInteger(column.width) * meanWidth);
1493
- tableWidth += scaleWidth;
1494
- column.renderWidth = scaleWidth;
1494
+ const sfWidth = Math.floor(_xeUtils.default.toInteger(column.width) * meanWidth);
1495
+ tableWidth += sfWidth;
1496
+ column.renderWidth = sfWidth;
1495
1497
  });
1496
1498
  // 固定宽
1497
1499
  pxList.forEach(column => {
1498
- const width = _xeUtils.default.toInteger(column.width);
1499
- tableWidth += width;
1500
- column.renderWidth = width;
1500
+ const pWidth = _xeUtils.default.toInteger(column.width);
1501
+ tableWidth += pWidth;
1502
+ column.renderWidth = pWidth;
1501
1503
  });
1502
1504
  // 自适应宽
1503
1505
  autoList.forEach(column => {
1504
- const width = Math.max(60, _xeUtils.default.toInteger(column.renderAutoWidth));
1505
- tableWidth += width;
1506
- column.renderWidth = width;
1506
+ const aWidth = Math.max(60, _xeUtils.default.toInteger(column.renderAutoWidth));
1507
+ tableWidth += aWidth;
1508
+ column.renderWidth = aWidth;
1507
1509
  });
1508
1510
  // 调整了列宽
1509
1511
  resizeList.forEach(column => {
1510
- const width = _xeUtils.default.toInteger(column.resizeWidth);
1511
- tableWidth += width;
1512
- column.renderWidth = width;
1512
+ const reWidth = _xeUtils.default.toInteger(column.resizeWidth);
1513
+ tableWidth += reWidth;
1514
+ column.renderWidth = reWidth;
1513
1515
  });
1514
1516
  remainWidth -= tableWidth;
1515
1517
  meanWidth = remainWidth > 0 ? Math.floor(remainWidth / (scaleMinList.length + pxMinList.length + autoMinList.length + remainList.length)) : 0;
@@ -1549,7 +1551,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
1549
1551
  }
1550
1552
  const tableHeight = bodyElem.offsetHeight;
1551
1553
  const overflowY = yHandleEl.scrollHeight > yHandleEl.clientHeight;
1552
- reactData.scrollbarWidth = overflowY ? Math.max(scrollbarOpts.width || 0, yHandleEl.offsetWidth - yHandleEl.clientWidth) : 0;
1554
+ reactData.scrollbarWidth = Math.max(scrollbarOpts.width || 0, yHandleEl.offsetWidth - yHandleEl.clientWidth);
1553
1555
  reactData.overflowY = overflowY;
1554
1556
  internalData.tableWidth = tableWidth;
1555
1557
  internalData.tableHeight = tableHeight;
@@ -1558,7 +1560,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
1558
1560
  const headerHeight = headerTableElem ? headerTableElem.clientHeight : 0;
1559
1561
  const overflowX = tableWidth > bodyWidth;
1560
1562
  const footerHeight = footerTableElem ? footerTableElem.clientHeight : 0;
1561
- reactData.scrollbarHeight = overflowX ? Math.max(scrollbarOpts.height || 0, xHandleEl.offsetHeight - xHandleEl.clientHeight) : 0;
1563
+ reactData.scrollbarHeight = Math.max(scrollbarOpts.height || 0, xHandleEl.offsetHeight - xHandleEl.clientHeight);
1562
1564
  internalData.headerHeight = headerHeight;
1563
1565
  internalData.footerHeight = footerHeight;
1564
1566
  reactData.overflowX = overflowX;
@@ -1568,64 +1570,43 @@ var _default = exports.default = (0, _vue.defineComponent)({
1568
1570
  $xeTable.checkScrolling();
1569
1571
  }
1570
1572
  };
1571
- // const updateCellOffset = () => {
1572
- // const { chTimeout, chRunTime } = internalData
1573
- // if (chTimeout) {
1574
- // clearTimeout(chTimeout)
1575
- // }
1576
- // if (!chRunTime || chRunTime + 10 < Date.now()) {
1577
- // internalData.chRunTime = Date.now()
1578
- // }
1579
- // internalData.chTimeout = setTimeout(() => {
1580
- // internalData.chRunTime = undefined
1581
- // internalData.chTimeout = undefined
1582
- // }, 80)
1583
- // }
1573
+ const calcCellAutoHeight = (rowRest, wrapperEl) => {
1574
+ const cellElemList = wrapperEl.querySelectorAll(`.vxe-cell--wrapper[rowid="${rowRest.rowid}"]`);
1575
+ let colHeight = rowRest.height;
1576
+ for (let i = 0; i < cellElemList.length; i++) {
1577
+ const cellElem = cellElemList[i];
1578
+ const tdEl = cellElem.parentElement;
1579
+ const topBottomPadding = Math.ceil(_xeUtils.default.toNumber(tdEl.style.paddingTop) + _xeUtils.default.toNumber(tdEl.style.paddingBottom));
1580
+ const cellHeight = cellElem ? cellElem.clientHeight : 0;
1581
+ colHeight = Math.max(colHeight - topBottomPadding, Math.ceil(cellHeight));
1582
+ }
1583
+ return colHeight;
1584
+ };
1584
1585
  const calcCellHeight = () => {
1585
- const {
1586
- showOverflow
1587
- } = props;
1588
1586
  const {
1589
1587
  tableData,
1588
+ isAllOverflow,
1589
+ scrollYLoad,
1590
1590
  scrollXLoad
1591
1591
  } = reactData;
1592
1592
  const {
1593
1593
  fullAllDataRowIdData
1594
1594
  } = internalData;
1595
+ const defaultRowHeight = computeDefaultRowHeight.value;
1595
1596
  const el = refElem.value;
1596
- if (!showOverflow && el) {
1597
- let paddingTop = 0;
1598
- let paddingBottom = 0;
1599
- let calcPadding = false;
1597
+ if (!isAllOverflow && scrollYLoad && el) {
1598
+ el.setAttribute('data-calc-row', 'Y');
1600
1599
  tableData.forEach(row => {
1601
1600
  const rowid = (0, _util.getRowid)($xeTable, row);
1602
1601
  const rowRest = fullAllDataRowIdData[rowid];
1603
- const cellList = el.querySelectorAll(`.vxe-body--row[rowid="${rowid}"]>.vxe-body--column>.vxe-cell>.vxe-cell--auto-wrapper`);
1604
- if (rowRest && cellList.length) {
1605
- let height = 0;
1606
- for (let i = 0; i < cellList.length; i++) {
1607
- const cellElem = cellList[i];
1608
- const tdEl = cellElem.parentElement;
1609
- if (!tdEl || !tdEl.clientWidth) {
1610
- break;
1611
- }
1612
- if (!calcPadding) {
1613
- paddingTop = _xeUtils.default.toNumber(getComputedStyle(tdEl).paddingTop);
1614
- paddingBottom = _xeUtils.default.toNumber(getComputedStyle(tdEl).paddingBottom);
1615
- calcPadding = true;
1616
- }
1617
- let cellHeight = paddingTop + paddingBottom;
1618
- if (cellElem) {
1619
- cellHeight += cellElem.clientHeight;
1620
- }
1621
- height = Math.max(height, cellHeight);
1622
- }
1623
- rowRest.height = scrollXLoad ? Math.max(rowRest.height, height) : height;
1602
+ if (rowRest) {
1603
+ const reHeight = calcCellAutoHeight(rowRest, el);
1604
+ rowRest.height = Math.max(defaultRowHeight, scrollXLoad ? Math.max(rowRest.height, reHeight) : reHeight);
1624
1605
  }
1606
+ el.removeAttribute('data-calc-row');
1625
1607
  });
1626
- reactData.isCalcCellHeight++;
1608
+ reactData.calcCellHeightFlag++;
1627
1609
  }
1628
- // updateCellOffset()
1629
1610
  };
1630
1611
  const getOrderField = column => {
1631
1612
  const {
@@ -1679,6 +1660,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
1679
1660
  parent: null,
1680
1661
  level: 0,
1681
1662
  height: 0,
1663
+ resizeHeight: 0,
1682
1664
  oTop: 0
1683
1665
  };
1684
1666
  fullAllDataRowIdData[rowid] = rest;
@@ -1728,6 +1710,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
1728
1710
  parent: null,
1729
1711
  level: 0,
1730
1712
  height: 0,
1713
+ resizeHeight: 0,
1731
1714
  oTop: 0
1732
1715
  };
1733
1716
  fullAllDataRowIdData[rowid] = rest;
@@ -1997,7 +1980,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
1997
1980
  const updateStyle = () => {
1998
1981
  const {
1999
1982
  border,
2000
- showOverflow: allColumnOverflow,
2001
1983
  showHeaderOverflow: allColumnHeaderOverflow,
2002
1984
  showFooterOverflow: allColumnFooterOverflow,
2003
1985
  mouseConfig,
@@ -2010,7 +1992,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
2010
1992
  tableColumn,
2011
1993
  scrollXLoad,
2012
1994
  scrollYLoad,
1995
+ overflowX,
2013
1996
  scrollbarWidth,
1997
+ overflowY,
2014
1998
  scrollbarHeight,
2015
1999
  columnStore,
2016
2000
  editStore,
@@ -2034,6 +2018,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
2034
2018
  return;
2035
2019
  }
2036
2020
  const containerList = ['main', 'left', 'right'];
2021
+ const osbWidth = overflowY ? scrollbarWidth : 0;
2022
+ const osbHeight = overflowX ? scrollbarHeight : 0;
2037
2023
  const emptyPlaceholderElem = refEmptyPlaceholder.value;
2038
2024
  const cellOffsetWidth = computeCellOffsetWidth.value;
2039
2025
  const mouseOpts = computeMouseOpts.value;
@@ -2041,16 +2027,16 @@ var _default = exports.default = (0, _vue.defineComponent)({
2041
2027
  const bodyTableElem = (0, _util.getRefElem)(elemStore['main-body-table']);
2042
2028
  if (emptyPlaceholderElem) {
2043
2029
  emptyPlaceholderElem.style.top = `${headerHeight}px`;
2044
- emptyPlaceholderElem.style.height = bodyWrapperElem ? `${bodyWrapperElem.offsetHeight - scrollbarHeight}px` : '';
2030
+ emptyPlaceholderElem.style.height = bodyWrapperElem ? `${bodyWrapperElem.offsetHeight - osbHeight}px` : '';
2045
2031
  }
2046
2032
  let bodyHeight = 0;
2047
2033
  let bodyMaxHeight = 0;
2048
- const bodyMinHeight = customMinHeight - headerHeight - footerHeight - scrollbarHeight;
2034
+ const bodyMinHeight = customMinHeight - headerHeight - footerHeight - osbHeight;
2049
2035
  if (customMaxHeight) {
2050
- bodyMaxHeight = Math.max(bodyMinHeight, customMaxHeight - headerHeight - footerHeight - scrollbarHeight);
2036
+ bodyMaxHeight = Math.max(bodyMinHeight, customMaxHeight - headerHeight - footerHeight - osbHeight);
2051
2037
  }
2052
2038
  if (customHeight) {
2053
- bodyHeight = customHeight - headerHeight - footerHeight - scrollbarHeight;
2039
+ bodyHeight = customHeight - headerHeight - footerHeight - osbHeight;
2054
2040
  }
2055
2041
  if (!bodyHeight) {
2056
2042
  if (bodyTableElem) {
@@ -2068,27 +2054,27 @@ var _default = exports.default = (0, _vue.defineComponent)({
2068
2054
  const scrollbarXToTop = computeScrollbarXToTop.value;
2069
2055
  const scrollXVirtualEl = refScrollXVirtualElem.value;
2070
2056
  if (scrollXVirtualEl) {
2071
- scrollXVirtualEl.style.height = `${scrollbarHeight}px`;
2072
- scrollXVirtualEl.style.visibility = scrollbarHeight ? 'visible' : 'hidden';
2057
+ scrollXVirtualEl.style.height = `${osbHeight}px`;
2058
+ scrollXVirtualEl.style.visibility = overflowX ? 'visible' : 'hidden';
2073
2059
  }
2074
2060
  const xWrapperEl = refScrollXWrapperElem.value;
2075
2061
  if (xWrapperEl) {
2076
- xWrapperEl.style.left = scrollbarXToTop ? `${scrollbarWidth}px` : '';
2077
- xWrapperEl.style.width = `${el.clientWidth - scrollbarWidth}px`;
2062
+ xWrapperEl.style.left = scrollbarXToTop ? `${osbWidth}px` : '';
2063
+ xWrapperEl.style.width = `${el.clientWidth - osbWidth}px`;
2078
2064
  }
2079
2065
  if (xLeftCornerEl) {
2080
- xLeftCornerEl.style.width = scrollbarXToTop ? `${scrollbarWidth}px` : '';
2081
- xLeftCornerEl.style.display = scrollbarXToTop ? scrollbarWidth && scrollbarHeight ? 'block' : '' : '';
2066
+ xLeftCornerEl.style.width = scrollbarXToTop ? `${osbWidth}px` : '';
2067
+ xLeftCornerEl.style.display = scrollbarXToTop ? osbWidth && osbHeight ? 'block' : '' : '';
2082
2068
  }
2083
2069
  if (xRightCornerEl) {
2084
- xRightCornerEl.style.width = scrollbarXToTop ? '' : `${scrollbarWidth}px`;
2085
- xRightCornerEl.style.display = scrollbarXToTop ? '' : scrollbarWidth && scrollbarHeight ? 'block' : '';
2070
+ xRightCornerEl.style.width = scrollbarXToTop ? '' : `${osbWidth}px`;
2071
+ xRightCornerEl.style.display = scrollbarXToTop ? '' : osbWidth && osbHeight ? 'block' : '';
2086
2072
  }
2087
2073
  const scrollYVirtualEl = refScrollYVirtualElem.value;
2088
2074
  if (scrollYVirtualEl) {
2089
- scrollYVirtualEl.style.width = `${scrollbarWidth}px`;
2075
+ scrollYVirtualEl.style.width = `${osbWidth}px`;
2090
2076
  scrollYVirtualEl.style.height = `${bodyHeight + headerHeight + footerHeight}px`;
2091
- scrollYVirtualEl.style.visibility = scrollbarWidth ? 'visible' : 'hidden';
2077
+ scrollYVirtualEl.style.visibility = overflowY ? 'visible' : 'hidden';
2092
2078
  }
2093
2079
  const yTopCornerEl = refScrollYTopCornerElem.value;
2094
2080
  if (yTopCornerEl) {
@@ -2207,14 +2193,14 @@ var _default = exports.default = (0, _vue.defineComponent)({
2207
2193
  if (wrapperElem) {
2208
2194
  wrapperElem.style.top = `${headerHeight}px`;
2209
2195
  }
2210
- fixedWrapperElem.style.height = `${customHeight > 0 ? customHeight : tableHeight + headerHeight + footerHeight + scrollbarHeight}px`;
2196
+ fixedWrapperElem.style.height = `${customHeight > 0 ? customHeight : tableHeight + headerHeight + footerHeight + osbHeight}px`;
2211
2197
  fixedWrapperElem.style.width = `${fixedColumn.reduce((previous, column) => previous + column.renderWidth, 0)}px`;
2212
2198
  }
2213
2199
  let tWidth = tableWidth;
2214
2200
  let renderColumnList = tableColumn;
2215
2201
  let isOptimizeMode = false;
2216
2202
  // 如果是使用优化模式
2217
- if (scrollXLoad || scrollYLoad || allColumnOverflow && isAllOverflow) {
2203
+ if (scrollXLoad || scrollYLoad || isAllOverflow) {
2218
2204
  if (expandColumn || spanMethod || footerSpanMethod) {
2219
2205
  // 如果不支持优化模式
2220
2206
  } else {
@@ -2236,7 +2222,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
2236
2222
  if (tableElem) {
2237
2223
  tableElem.style.width = tWidth ? `${tWidth}px` : '';
2238
2224
  // 兼容性处理
2239
- tableElem.style.paddingRight = scrollbarWidth && fixedType && (_dom.browse['-moz'] || _dom.browse.safari) ? `${scrollbarWidth}px` : '';
2225
+ tableElem.style.paddingRight = osbWidth && fixedType && (_dom.browse['-moz'] || _dom.browse.safari) ? `${osbWidth}px` : '';
2240
2226
  }
2241
2227
  const emptyBlockElem = (0, _util.getRefElem)(elemStore[`${name}-${layout}-emptyBlock`]);
2242
2228
  if (emptyBlockElem) {
@@ -2271,7 +2257,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
2271
2257
  // 如果是固定列
2272
2258
  if (fixedWrapperElem) {
2273
2259
  if (wrapperElem) {
2274
- wrapperElem.style.top = `${customHeight > 0 ? customHeight - footerHeight - scrollbarHeight : tableHeight + headerHeight}px`;
2260
+ wrapperElem.style.top = `${customHeight > 0 ? customHeight - footerHeight - osbHeight : tableHeight + headerHeight}px`;
2275
2261
  }
2276
2262
  }
2277
2263
  }
@@ -2298,7 +2284,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
2298
2284
  } else if (layout === 'footer') {
2299
2285
  cellOverflow = _xeUtils.default.isUndefined(showFooterOverflow) || _xeUtils.default.isNull(showFooterOverflow) ? allColumnFooterOverflow : showFooterOverflow;
2300
2286
  } else {
2301
- cellOverflow = _xeUtils.default.isUndefined(showOverflow) || _xeUtils.default.isNull(showOverflow) ? allColumnOverflow : showOverflow;
2287
+ cellOverflow = _xeUtils.default.isUndefined(showOverflow) || _xeUtils.default.isNull(showOverflow) ? isAllOverflow : showOverflow;
2302
2288
  }
2303
2289
  const showEllipsis = cellOverflow === 'ellipsis';
2304
2290
  const showTitle = cellOverflow === 'title';
@@ -2992,11 +2978,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
2992
2978
  * 加载表格数据
2993
2979
  * @param {Array} datas 数据
2994
2980
  */
2995
- const loadTableData = datas => {
2981
+ const loadTableData = (datas, isReset) => {
2996
2982
  const {
2997
2983
  keepSource,
2998
- treeConfig,
2999
- showOverflow
2984
+ treeConfig
3000
2985
  } = props;
3001
2986
  const {
3002
2987
  editStore,
@@ -3009,7 +2994,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
3009
2994
  lastScrollTop
3010
2995
  } = internalData;
3011
2996
  const treeOpts = computeTreeOpts.value;
3012
- const rowOpts = computeRowOpts.value;
3013
2997
  const {
3014
2998
  transform
3015
2999
  } = treeOpts;
@@ -3056,42 +3040,30 @@ var _default = exports.default = (0, _vue.defineComponent)({
3056
3040
  scrollYStore.endIndex = 1;
3057
3041
  scrollXStore.startIndex = 0;
3058
3042
  scrollXStore.endIndex = 1;
3043
+ reactData.isRowLoading = true;
3059
3044
  reactData.scrollVMLoading = false;
3060
3045
  editStore.insertMaps = {};
3061
3046
  editStore.removeMaps = {};
3062
3047
  const sYLoad = updateScrollYStatus(fullData);
3048
+ reactData.isDragColMove = false;
3063
3049
  reactData.isDragRowMove = false;
3064
3050
  // 全量数据
3065
3051
  internalData.tableFullData = fullData;
3066
3052
  internalData.tableFullTreeData = treeData;
3067
3053
  // 缓存数据
3068
- tablePrivateMethods.cacheRowMap(true);
3054
+ $xeTable.cacheRowMap(true, isReset);
3069
3055
  // 原始数据
3070
3056
  internalData.tableSynchData = datas;
3057
+ if (isReset) {
3058
+ internalData.isResizeCellHeight = false;
3059
+ reactData.rowExpandedMaps = {};
3060
+ reactData.rowExpandLazyLoadedMaps = {};
3061
+ reactData.treeExpandedMaps = {};
3062
+ reactData.treeExpandLazyLoadedMaps = {};
3063
+ }
3071
3064
  // 克隆原数据,用于显示编辑状态,与编辑值做对比
3072
3065
  if (keepSource) {
3073
- tablePrivateMethods.cacheSourceMap(fullData);
3074
- }
3075
- if (sYLoad) {
3076
- if (showOverflow) {
3077
- if (!rowOpts.height) {
3078
- const errColumn = internalData.tableFullColumn.find(column => column.showOverflow === false);
3079
- if (errColumn) {
3080
- (0, _log.errLog)('vxe.error.errProp', [`column[field="${errColumn.field}"].show-overflow=false`, 'show-overflow=true']);
3081
- }
3082
- }
3083
- }
3084
- if (process.env.NODE_ENV === 'development') {
3085
- if (!(props.height || props.maxHeight)) {
3086
- (0, _log.errLog)('vxe.error.reqProp', ['table.height | table.max-height | table.scroll-y={enabled: false}']);
3087
- }
3088
- // if (!props.showOverflow) {
3089
- // warnLog('vxe.error.reqProp', ['table.show-overflow'])
3090
- // }
3091
- if (props.spanMethod) {
3092
- (0, _log.warnLog)('vxe.error.scrollErrProp', ['table.span-method']);
3093
- }
3094
- }
3066
+ $xeTable.cacheSourceMap(fullData);
3095
3067
  }
3096
3068
  if ($xeTable.clearCellAreas && props.mouseConfig) {
3097
3069
  $xeTable.clearCellAreas();
@@ -3111,6 +3083,27 @@ var _default = exports.default = (0, _vue.defineComponent)({
3111
3083
  if (sYLoad) {
3112
3084
  scrollYStore.endIndex = scrollYStore.visibleSize;
3113
3085
  }
3086
+ if (sYLoad) {
3087
+ // if (showOverflow) {
3088
+ // if (!rowOpts.height) {
3089
+ // const errColumn = internalData.tableFullColumn.find(column => column.showOverflow === false)
3090
+ // if (errColumn) {
3091
+ // errLog('vxe.error.errProp', [`column[field="${errColumn.field}"].show-overflow=false`, 'show-overflow=true'])
3092
+ // }
3093
+ // }
3094
+ // }
3095
+ if (process.env.NODE_ENV === 'development') {
3096
+ if (!(props.height || props.maxHeight)) {
3097
+ (0, _log.errLog)('vxe.error.reqProp', ['table.height | table.max-height | table.scroll-y={enabled: false}']);
3098
+ }
3099
+ // if (!props.showOverflow) {
3100
+ // warnLog('vxe.error.reqProp', ['table.show-overflow'])
3101
+ // }
3102
+ if (props.spanMethod) {
3103
+ (0, _log.warnLog)('vxe.error.scrollErrProp', ['table.span-method']);
3104
+ }
3105
+ }
3106
+ }
3114
3107
  handleReserveStatus();
3115
3108
  tablePrivateMethods.checkSelectionStatus();
3116
3109
  return new Promise(resolve => {
@@ -3126,6 +3119,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
3126
3119
  if (sYOpts.scrollToTopOnChange) {
3127
3120
  targetScrollTop = 0;
3128
3121
  }
3122
+ reactData.isRowLoading = false;
3129
3123
  calcCellHeight();
3130
3124
  // 是否变更虚拟滚动
3131
3125
  if (oldScrollYLoad === sYLoad) {
@@ -3389,11 +3383,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
3389
3383
  internalData.collectColumn = collectColumn;
3390
3384
  const tableFullColumn = getColumnList(collectColumn);
3391
3385
  internalData.tableFullColumn = tableFullColumn;
3392
- reactData.isLoading = true;
3386
+ reactData.isColLoading = true;
3393
3387
  reactData.isDragColMove = false;
3394
3388
  initColumnSort();
3395
3389
  return Promise.resolve(restoreCustomStorage()).then(() => {
3396
- reactData.isLoading = false;
3397
3390
  cacheColumnMap();
3398
3391
  parseColumns(true).then(() => {
3399
3392
  if (reactData.scrollXLoad) {
@@ -3418,6 +3411,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
3418
3411
  if ($xeTable.handleUpdateCustomColumn) {
3419
3412
  $xeTable.handleUpdateCustomColumn();
3420
3413
  }
3414
+ reactData.isColLoading = false;
3421
3415
  return $xeTable.recalculate();
3422
3416
  });
3423
3417
  });
@@ -3559,10 +3553,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
3559
3553
  */
3560
3554
  const loadScrollYData = scrollTop => {
3561
3555
  const {
3562
- showOverflow
3563
- } = props;
3564
- const {
3565
- mergeList
3556
+ mergeList,
3557
+ isAllOverflow
3566
3558
  } = reactData;
3567
3559
  const {
3568
3560
  scrollYStore
@@ -3573,7 +3565,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
3573
3565
  endIndex,
3574
3566
  offsetSize
3575
3567
  } = scrollYStore;
3576
- const autoOffsetYSize = showOverflow ? offsetSize : offsetSize + 1;
3568
+ const autoOffsetYSize = isAllOverflow ? offsetSize : offsetSize + 1;
3577
3569
  const {
3578
3570
  toVisibleIndex,
3579
3571
  visibleSize
@@ -3635,7 +3627,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
3635
3627
  const {
3636
3628
  visibleSize
3637
3629
  } = scrollXStore;
3638
- const fpsTime = Math.max(5, Math.min(80, Math.floor(visibleSize * 3)));
3630
+ const fpsTime = Math.max(5, Math.min(10, Math.floor(visibleSize / 3)));
3639
3631
  if (lxTimeout) {
3640
3632
  clearTimeout(lxTimeout);
3641
3633
  }
@@ -3652,9 +3644,13 @@ var _default = exports.default = (0, _vue.defineComponent)({
3652
3644
  const lazyScrollYData = () => {
3653
3645
  const {
3654
3646
  lyTimeout,
3655
- lyRunTime
3647
+ lyRunTime,
3648
+ scrollYStore
3656
3649
  } = internalData;
3657
- const fpsTime = Math.floor(Math.max(4, Math.min(10, 20 / 3)));
3650
+ const {
3651
+ visibleSize
3652
+ } = scrollYStore;
3653
+ const fpsTime = Math.floor(Math.max(4, Math.min(10, visibleSize / 3)));
3658
3654
  if (lyTimeout) {
3659
3655
  clearTimeout(lyTimeout);
3660
3656
  }
@@ -3682,6 +3678,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
3682
3678
  internalData.lcsTimeout = setTimeout(() => {
3683
3679
  internalData.lcsRunTime = Date.now();
3684
3680
  internalData.lcsTimeout = undefined;
3681
+ internalData.intoRunScroll = false;
3685
3682
  internalData.inVirtualScroll = false;
3686
3683
  internalData.inWheelScroll = false;
3687
3684
  internalData.inHeaderScroll = false;
@@ -3701,6 +3698,43 @@ var _default = exports.default = (0, _vue.defineComponent)({
3701
3698
  $xeTable.updateCellAreas();
3702
3699
  }, 200);
3703
3700
  };
3701
+ const getWheelSpeed = lastScrollTime => {
3702
+ let multiple = 1;
3703
+ const currTime = Date.now();
3704
+ if (lastScrollTime + 25 > currTime) {
3705
+ multiple = 1.18;
3706
+ } else if (lastScrollTime + 30 > currTime) {
3707
+ multiple = 1.15;
3708
+ } else if (lastScrollTime + 40 > currTime) {
3709
+ multiple = 1.12;
3710
+ } else if (lastScrollTime + 55 > currTime) {
3711
+ multiple = 1.09;
3712
+ } else if (lastScrollTime + 75 > currTime) {
3713
+ multiple = 1.06;
3714
+ } else if (lastScrollTime + 100 > currTime) {
3715
+ multiple = 1.03;
3716
+ }
3717
+ return multiple;
3718
+ };
3719
+ const wheelScrollTo = (diffNum, cb) => {
3720
+ const duration = Math.abs(diffNum);
3721
+ const startTime = performance.now();
3722
+ let countTop = 0;
3723
+ const step = timestamp => {
3724
+ let progress = (timestamp - startTime) / duration;
3725
+ if (progress > 1) {
3726
+ progress = 1;
3727
+ }
3728
+ const easedProgress = Math.pow(progress, 2);
3729
+ const offsetTop = Math.floor(diffNum * easedProgress) - countTop;
3730
+ countTop += offsetTop;
3731
+ cb(offsetTop);
3732
+ if (progress < 1) {
3733
+ requestAnimationFrame(step);
3734
+ }
3735
+ };
3736
+ requestAnimationFrame(step);
3737
+ };
3704
3738
  const dispatchEvent = (type, params, evnt) => {
3705
3739
  emit(type, createEvent(evnt, {
3706
3740
  $table: $xeTable,
@@ -3717,12 +3751,31 @@ var _default = exports.default = (0, _vue.defineComponent)({
3717
3751
  }
3718
3752
  return (0, _vue.nextTick)();
3719
3753
  };
3720
- function handleUupdateResize() {
3754
+ const handleUpdateResize = () => {
3721
3755
  const el = refElem.value;
3722
3756
  if (el && el.clientWidth && el.clientHeight) {
3723
3757
  tableMethods.recalculate();
3724
3758
  }
3725
- }
3759
+ };
3760
+ const handleUpdateColResize = (evnt, params) => {
3761
+ $xeTable.analyColumnWidth();
3762
+ $xeTable.recalculate(true).then(() => {
3763
+ $xeTable.saveCustomStore('update:width');
3764
+ $xeTable.updateCellAreas();
3765
+ $xeTable.dispatchEvent('column-resizable-change', params, evnt);
3766
+ // 已废弃 resizable-change
3767
+ $xeTable.dispatchEvent('resizable-change', params, evnt);
3768
+ setTimeout(() => $xeTable.recalculate(true), 300);
3769
+ });
3770
+ };
3771
+ const handleUpdateRowResize = (evnt, params) => {
3772
+ reactData.resizeHeightFlag++;
3773
+ $xeTable.recalculate(true).then(() => {
3774
+ $xeTable.updateCellAreas();
3775
+ $xeTable.dispatchEvent('row-resizable-change', params, evnt);
3776
+ setTimeout(() => $xeTable.recalculate(true), 300);
3777
+ });
3778
+ };
3726
3779
  tableMethods = {
3727
3780
  dispatchEvent,
3728
3781
  /**
@@ -3780,7 +3833,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
3780
3833
  const {
3781
3834
  initStatus
3782
3835
  } = internalData;
3783
- return loadTableData(datas).then(() => {
3836
+ return loadTableData(datas, false).then(() => {
3784
3837
  internalData.inited = true;
3785
3838
  internalData.initStatus = true;
3786
3839
  if (!initStatus) {
@@ -3797,7 +3850,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
3797
3850
  return tableMethods.clearAll().then(() => {
3798
3851
  internalData.inited = true;
3799
3852
  internalData.initStatus = true;
3800
- return loadTableData(datas);
3853
+ return loadTableData(datas, true);
3801
3854
  }).then(() => {
3802
3855
  handleLoadDefaults();
3803
3856
  return tableMethods.recalculate();
@@ -3916,6 +3969,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
3916
3969
  parent: parentRow,
3917
3970
  level: parentLevel + nodes.length,
3918
3971
  height: 0,
3972
+ resizeHeight: 0,
3919
3973
  oTop: 0
3920
3974
  };
3921
3975
  fullDataRowIdData[rowid] = rest;
@@ -4156,29 +4210,32 @@ var _default = exports.default = (0, _vue.defineComponent)({
4156
4210
  return (0, _vue.nextTick)();
4157
4211
  },
4158
4212
  getCellElement(row, fieldOrColumn) {
4213
+ const {
4214
+ elemStore
4215
+ } = internalData;
4159
4216
  const column = (0, _util.handleFieldOrColumn)($xeTable, fieldOrColumn);
4160
4217
  if (!column) {
4161
4218
  return null;
4162
4219
  }
4163
4220
  const rowid = (0, _util.getRowid)($xeTable, row);
4164
- const tableBody = refTableBody.value;
4165
- const leftBody = refTableLeftBody.value;
4166
- const rightBody = refTableRightBody.value;
4221
+ const bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
4222
+ const leftScrollElem = (0, _util.getRefElem)(elemStore['left-body-scroll']);
4223
+ const rightScrollElem = (0, _util.getRefElem)(elemStore['right-body-scroll']);
4167
4224
  let bodyElem;
4168
4225
  if (column) {
4169
4226
  if (column.fixed) {
4170
4227
  if (column.fixed === 'left') {
4171
- if (leftBody) {
4172
- bodyElem = leftBody.$el;
4228
+ if (leftScrollElem) {
4229
+ bodyElem = leftScrollElem;
4173
4230
  }
4174
4231
  } else {
4175
- if (rightBody) {
4176
- bodyElem = rightBody.$el;
4232
+ if (rightScrollElem) {
4233
+ bodyElem = rightScrollElem;
4177
4234
  }
4178
4235
  }
4179
4236
  }
4180
4237
  if (!bodyElem) {
4181
- bodyElem = tableBody.$el;
4238
+ bodyElem = bodyScrollElem;
4182
4239
  }
4183
4240
  if (bodyElem) {
4184
4241
  return bodyElem.querySelector(`.vxe-body--row[rowid="${rowid}"] .${column.id}`);
@@ -4651,29 +4708,40 @@ var _default = exports.default = (0, _vue.defineComponent)({
4651
4708
  return (0, _vue.nextTick)();
4652
4709
  },
4653
4710
  setColumnWidth(fieldOrColumn, width) {
4711
+ const {
4712
+ elemStore
4713
+ } = internalData;
4654
4714
  let status = false;
4655
4715
  const cols = _xeUtils.default.isArray(fieldOrColumn) ? fieldOrColumn : [fieldOrColumn];
4656
- cols.forEach(item => {
4657
- const column = (0, _util.handleFieldOrColumn)($xeTable, item);
4658
- if (column) {
4659
- const colWidth = _xeUtils.default.toInteger(width);
4660
- let rdWidth = colWidth;
4661
- if ((0, _dom.isScale)(width)) {
4662
- const tableBody = refTableBody.value;
4663
- const bodyElem = tableBody ? tableBody.$el : null;
4664
- const bodyWidth = bodyElem ? bodyElem.clientWidth - 1 : 0;
4665
- rdWidth = Math.floor(colWidth * bodyWidth);
4666
- }
4667
- column.resizeWidth = rdWidth;
4668
- if (!status) {
4669
- status = true;
4716
+ let cWidth = _xeUtils.default.toInteger(width);
4717
+ if ((0, _dom.isScale)(width)) {
4718
+ const bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
4719
+ const bodyWidth = bodyScrollElem ? bodyScrollElem.clientWidth - 1 : 0;
4720
+ cWidth = Math.floor(cWidth * bodyWidth);
4721
+ }
4722
+ if (cWidth) {
4723
+ cols.forEach(item => {
4724
+ const column = (0, _util.handleFieldOrColumn)($xeTable, item);
4725
+ if (column) {
4726
+ column.resizeWidth = cWidth;
4727
+ if (!status) {
4728
+ status = true;
4729
+ }
4670
4730
  }
4731
+ });
4732
+ if (status) {
4733
+ return $xeTable.refreshColumn().then(() => {
4734
+ return {
4735
+ status
4736
+ };
4737
+ });
4671
4738
  }
4672
- });
4673
- if (status) {
4674
- return tableMethods.refreshColumn();
4675
4739
  }
4676
- return (0, _vue.nextTick)();
4740
+ return (0, _vue.nextTick)().then(() => {
4741
+ return {
4742
+ status
4743
+ };
4744
+ });
4677
4745
  },
4678
4746
  getColumnWidth(fieldOrColumn) {
4679
4747
  const column = (0, _util.handleFieldOrColumn)($xeTable, fieldOrColumn);
@@ -4706,6 +4774,106 @@ var _default = exports.default = (0, _vue.defineComponent)({
4706
4774
  return tableMethods.recalculate();
4707
4775
  });
4708
4776
  },
4777
+ setRowHeightConf(heightConf) {
4778
+ const {
4779
+ fullAllDataRowIdData
4780
+ } = internalData;
4781
+ let status = false;
4782
+ if (heightConf) {
4783
+ _xeUtils.default.each(heightConf, (height, rowid) => {
4784
+ const rowRest = fullAllDataRowIdData[rowid];
4785
+ if (rowRest) {
4786
+ const rHeight = _xeUtils.default.toInteger(height);
4787
+ if (rHeight) {
4788
+ rowRest.resizeHeight = rHeight;
4789
+ if (!status) {
4790
+ status = true;
4791
+ }
4792
+ }
4793
+ }
4794
+ });
4795
+ if (status) {
4796
+ internalData.isResizeCellHeight = true;
4797
+ reactData.resizeHeightFlag++;
4798
+ }
4799
+ }
4800
+ return (0, _vue.nextTick)().then(() => {
4801
+ return {
4802
+ status
4803
+ };
4804
+ });
4805
+ },
4806
+ getRowHeightConf(isFull) {
4807
+ const {
4808
+ fullAllDataRowIdData,
4809
+ afterFullData
4810
+ } = internalData;
4811
+ const rowOpts = computeRowOpts.value;
4812
+ const cellOpts = computeCellOpts.value;
4813
+ const defaultRowHeight = computeDefaultRowHeight.value;
4814
+ const rest = {};
4815
+ afterFullData.forEach(row => {
4816
+ const rowid = (0, _util.getRowid)($xeTable, row);
4817
+ const rowRest = fullAllDataRowIdData[rowid];
4818
+ if (rowRest) {
4819
+ const resizeHeight = rowRest.resizeHeight;
4820
+ if (resizeHeight || isFull) {
4821
+ const currCellHeight = resizeHeight || rowRest.height || cellOpts.height || rowOpts.height || defaultRowHeight;
4822
+ rest[rowid] = currCellHeight;
4823
+ }
4824
+ }
4825
+ });
4826
+ return rest;
4827
+ },
4828
+ setRowHeight(rowOrId, height) {
4829
+ const {
4830
+ fullAllDataRowIdData
4831
+ } = internalData;
4832
+ let status = false;
4833
+ const rows = _xeUtils.default.isArray(rowOrId) ? rowOrId : [rowOrId];
4834
+ let rHeight = _xeUtils.default.toInteger(height);
4835
+ if ((0, _dom.isScale)(height)) {
4836
+ const tableBody = refTableBody.value;
4837
+ const bodyElem = tableBody ? tableBody.$el : null;
4838
+ const bodyHeight = bodyElem ? bodyElem.clientHeight - 1 : 0;
4839
+ rHeight = Math.floor(rHeight * bodyHeight);
4840
+ }
4841
+ if (rHeight) {
4842
+ rows.forEach(row => {
4843
+ const rowid = _xeUtils.default.isString(row) || _xeUtils.default.isNumber(row) ? row : (0, _util.getRowid)($xeTable, row);
4844
+ const rowRest = fullAllDataRowIdData[rowid];
4845
+ if (rowRest) {
4846
+ rowRest.resizeHeight = rHeight;
4847
+ if (!status) {
4848
+ status = true;
4849
+ }
4850
+ }
4851
+ });
4852
+ if (status) {
4853
+ internalData.isResizeCellHeight = true;
4854
+ reactData.resizeHeightFlag++;
4855
+ }
4856
+ }
4857
+ return (0, _vue.nextTick)().then(() => {
4858
+ return {
4859
+ status
4860
+ };
4861
+ });
4862
+ },
4863
+ getRowHeight(rowOrId) {
4864
+ const {
4865
+ fullAllDataRowIdData
4866
+ } = internalData;
4867
+ const rowOpts = computeRowOpts.value;
4868
+ const cellOpts = computeCellOpts.value;
4869
+ const defaultRowHeight = computeDefaultRowHeight.value;
4870
+ const rowid = _xeUtils.default.isString(rowOrId) || _xeUtils.default.isNumber(rowOrId) ? rowOrId : (0, _util.getRowid)($xeTable, rowOrId);
4871
+ const rowRest = fullAllDataRowIdData[rowid];
4872
+ if (rowRest) {
4873
+ return rowRest.resizeHeight || rowRest.height || cellOpts.height || rowOpts.height || defaultRowHeight;
4874
+ }
4875
+ return 0;
4876
+ },
4709
4877
  /**
4710
4878
  * 刷新滚动操作,手动同步滚动相关位置(对于某些特殊的操作,比如滚动条错位、固定列不同步)
4711
4879
  */
@@ -5910,13 +6078,15 @@ var _default = exports.default = (0, _vue.defineComponent)({
5910
6078
  scrollXLoad,
5911
6079
  scrollYLoad
5912
6080
  } = reactData;
5913
- const tableBody = refTableBody.value;
5914
- const bodyElem = tableBody.$el;
6081
+ const {
6082
+ elemStore
6083
+ } = internalData;
6084
+ const bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
5915
6085
  return {
5916
6086
  virtualX: scrollXLoad,
5917
6087
  virtualY: scrollYLoad,
5918
- scrollTop: bodyElem.scrollTop,
5919
- scrollLeft: bodyElem.scrollLeft
6088
+ scrollTop: bodyScrollElem ? bodyScrollElem.scrollTop : 0,
6089
+ scrollLeft: bodyScrollElem ? bodyScrollElem.scrollLeft : 0
5920
6090
  };
5921
6091
  },
5922
6092
  /**
@@ -5967,9 +6137,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
5967
6137
  */
5968
6138
  scrollToRow(row, fieldOrColumn) {
5969
6139
  const {
5970
- showOverflow
5971
- } = props;
5972
- const {
6140
+ isAllOverflow,
5973
6141
  scrollYLoad,
5974
6142
  scrollXLoad
5975
6143
  } = reactData;
@@ -5986,7 +6154,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
5986
6154
  }
5987
6155
  return Promise.all(rest).then(() => {
5988
6156
  if (row) {
5989
- if (!showOverflow && (scrollYLoad || scrollXLoad)) {
6157
+ if (!isAllOverflow && (scrollYLoad || scrollXLoad)) {
5990
6158
  calcCellHeight();
5991
6159
  calcCellWidth();
5992
6160
  }
@@ -7054,13 +7222,17 @@ var _default = exports.default = (0, _vue.defineComponent)({
7054
7222
  return;
7055
7223
  }
7056
7224
  const {
7225
+ overflowX,
7057
7226
  scrollbarWidth,
7227
+ overflowY,
7058
7228
  scrollbarHeight
7059
7229
  } = reactData;
7060
7230
  const {
7061
7231
  prevDragToChild
7062
7232
  } = internalData;
7063
7233
  const wrapperRect = el.getBoundingClientRect();
7234
+ const osbWidth = overflowY ? scrollbarWidth : 0;
7235
+ const osbHeight = overflowX ? scrollbarHeight : 0;
7064
7236
  const tableWidth = el.clientWidth;
7065
7237
  const tableHeight = el.clientHeight;
7066
7238
  if (trEl) {
@@ -7071,14 +7243,14 @@ var _default = exports.default = (0, _vue.defineComponent)({
7071
7243
  const trRect = trEl.getBoundingClientRect();
7072
7244
  let trHeight = trEl.clientHeight;
7073
7245
  const offsetTop = Math.max(1, trRect.y - wrapperRect.y);
7074
- if (offsetTop + trHeight > tableHeight - scrollbarHeight) {
7075
- trHeight = tableHeight - offsetTop - scrollbarHeight;
7246
+ if (offsetTop + trHeight > tableHeight - osbHeight) {
7247
+ trHeight = tableHeight - offsetTop - osbHeight;
7076
7248
  }
7077
7249
  rdLineEl.style.display = 'block';
7078
- rdLineEl.style.left = `${scrollbarYToLeft ? scrollbarWidth : 0}px`;
7250
+ rdLineEl.style.left = `${scrollbarYToLeft ? osbWidth : 0}px`;
7079
7251
  rdLineEl.style.top = `${offsetTop}px`;
7080
7252
  rdLineEl.style.height = `${trHeight}px`;
7081
- rdLineEl.style.width = `${tableWidth - scrollbarWidth}px`;
7253
+ rdLineEl.style.width = `${tableWidth - osbWidth}px`;
7082
7254
  rdLineEl.setAttribute('drag-pos', dragPos);
7083
7255
  rdLineEl.setAttribute('drag-to-child', prevDragToChild ? 'y' : 'n');
7084
7256
  } else {
@@ -7103,7 +7275,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
7103
7275
  thWidth -= startX - offsetLeft;
7104
7276
  offsetLeft = startX;
7105
7277
  }
7106
- const endX = tableWidth - rightContainerWidth - (rightContainerWidth ? 0 : scrollbarWidth);
7278
+ const endX = tableWidth - rightContainerWidth - (rightContainerWidth ? 0 : osbWidth);
7107
7279
  if (offsetLeft + thWidth > endX) {
7108
7280
  thWidth = endX - offsetLeft;
7109
7281
  }
@@ -7114,7 +7286,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
7114
7286
  if (prevDragToChild) {
7115
7287
  cdLineEl.style.height = `${thRect.height}px`;
7116
7288
  } else {
7117
- cdLineEl.style.height = `${tableHeight - offsetTop - (scrollbarXToTop ? 0 : scrollbarHeight)}px`;
7289
+ cdLineEl.style.height = `${tableHeight - offsetTop - (scrollbarXToTop ? 0 : osbHeight)}px`;
7118
7290
  }
7119
7291
  cdLineEl.setAttribute('drag-pos', dragPos);
7120
7292
  cdLineEl.setAttribute('drag-to-child', prevDragToChild ? 'y' : 'n');
@@ -7150,11 +7322,11 @@ var _default = exports.default = (0, _vue.defineComponent)({
7150
7322
  * @param {Event} evnt 事件
7151
7323
  * @param {Row} row 行对象
7152
7324
  */
7153
- const handleTooltip = (evnt, cell, overflowElem, tipElem, params) => {
7325
+ const handleTooltip = (evnt, tdEl, overflowElem, tipElem, params) => {
7154
7326
  if (!overflowElem) {
7155
7327
  return (0, _vue.nextTick)();
7156
7328
  }
7157
- params.cell = cell;
7329
+ params.cell = tdEl;
7158
7330
  const {
7159
7331
  tooltipStore
7160
7332
  } = reactData;
@@ -7326,9 +7498,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
7326
7498
  },
7327
7499
  /**
7328
7500
  * 更新数据行的 Map
7329
- * 牺牲数据组装的耗时,用来换取使用过程中的流畅
7330
7501
  */
7331
- cacheRowMap(isSource) {
7502
+ cacheRowMap(isReset, isSource) {
7332
7503
  const {
7333
7504
  treeConfig
7334
7505
  } = props;
@@ -7356,7 +7527,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
7356
7527
  row[childrenField] = null;
7357
7528
  }
7358
7529
  let cacheItem = fullAllDataRowIdData[rowid];
7359
- if (!cacheItem) {
7530
+ if (isReset || !cacheItem) {
7360
7531
  cacheItem = {
7361
7532
  row,
7362
7533
  rowid,
@@ -7369,6 +7540,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
7369
7540
  parent: parentRow,
7370
7541
  level,
7371
7542
  height: 0,
7543
+ resizeHeight: 0,
7372
7544
  oTop: 0
7373
7545
  };
7374
7546
  }
@@ -7482,13 +7654,166 @@ var _default = exports.default = (0, _vue.defineComponent)({
7482
7654
  remainList
7483
7655
  });
7484
7656
  },
7485
- handleResizeDblclickEvent(evnt, params) {
7657
+ handleColResizeMousedownEvent(evnt, fixedType, params) {
7658
+ evnt.stopPropagation();
7659
+ evnt.preventDefault();
7660
+ const {
7661
+ column
7662
+ } = params;
7663
+ const {
7664
+ overflowX,
7665
+ scrollbarHeight
7666
+ } = reactData;
7667
+ const {
7668
+ elemStore,
7669
+ visibleColumn
7670
+ } = internalData;
7671
+ const resizableOpts = computeResizableOpts.value;
7672
+ const osbHeight = overflowX ? scrollbarHeight : 0;
7673
+ const tableEl = refElem.value;
7674
+ const leftContainerElem = refLeftContainer.value;
7675
+ const rightContainerElem = refRightContainer.value;
7676
+ const resizeBarElem = refColResizeBar.value;
7677
+ if (!resizeBarElem) {
7678
+ return;
7679
+ }
7680
+ const resizeTipElem = resizeBarElem.firstElementChild;
7681
+ const scrollbarXToTop = computeScrollbarXToTop.value;
7682
+ const {
7683
+ clientX: dragClientX
7684
+ } = evnt;
7685
+ const wrapperElem = refElem.value;
7686
+ const dragBtnElem = evnt.target;
7687
+ let resizeColumn = column;
7688
+ if (column.children && column.children.length) {
7689
+ _xeUtils.default.eachTree(column.children, childColumn => {
7690
+ resizeColumn = childColumn;
7691
+ });
7692
+ }
7693
+ const cell = dragBtnElem.parentNode;
7694
+ const cellParams = Object.assign(params, {
7695
+ cell
7696
+ });
7697
+ let dragLeft = 0;
7698
+ const bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
7699
+ if (!bodyScrollElem) {
7700
+ return;
7701
+ }
7702
+ const pos = (0, _dom.getOffsetPos)(dragBtnElem, wrapperElem);
7703
+ const dragBtnWidth = dragBtnElem.clientWidth;
7704
+ const dragBtnOffsetWidth = Math.floor(dragBtnWidth / 2);
7705
+ const minInterval = (0, _util.getColReMinWidth)(cellParams) - dragBtnOffsetWidth; // 列之间的最小间距
7706
+ let dragMinLeft = pos.left - cell.clientWidth + dragBtnWidth + minInterval;
7707
+ let dragPosLeft = pos.left + dragBtnOffsetWidth;
7708
+ const isLeftFixed = fixedType === 'left';
7709
+ const isRightFixed = fixedType === 'right';
7710
+ // 计算左右侧固定列偏移量
7711
+ let fixedOffsetWidth = 0;
7712
+ if (isLeftFixed || isRightFixed) {
7713
+ const siblingProp = isLeftFixed ? 'nextElementSibling' : 'previousElementSibling';
7714
+ let tempCellElem = cell[siblingProp];
7715
+ while (tempCellElem) {
7716
+ if ((0, _dom.hasClass)(tempCellElem, 'fixed--hidden')) {
7717
+ break;
7718
+ } else if (!(0, _dom.hasClass)(tempCellElem, 'col--group')) {
7719
+ fixedOffsetWidth += tempCellElem.offsetWidth;
7720
+ }
7721
+ tempCellElem = tempCellElem[siblingProp];
7722
+ }
7723
+ if (isRightFixed && rightContainerElem) {
7724
+ dragPosLeft = rightContainerElem.offsetLeft + fixedOffsetWidth;
7725
+ }
7726
+ }
7727
+ // 处理拖动事件
7728
+ const updateEvent = evnt => {
7729
+ evnt.stopPropagation();
7730
+ evnt.preventDefault();
7731
+ const tableHeight = tableEl.clientHeight;
7732
+ const offsetX = evnt.clientX - dragClientX;
7733
+ let left = dragPosLeft + offsetX;
7734
+ const scrollLeft = fixedType ? 0 : bodyScrollElem.scrollLeft;
7735
+ if (isLeftFixed) {
7736
+ // 左固定列(不允许超过右侧固定列、不允许超过右边距)
7737
+ left = Math.min(left, (rightContainerElem ? rightContainerElem.offsetLeft : bodyScrollElem.clientWidth) - fixedOffsetWidth - minInterval);
7738
+ } else if (isRightFixed) {
7739
+ // 右侧固定列(不允许超过左侧固定列、不允许超过左边距)
7740
+ dragMinLeft = (leftContainerElem ? leftContainerElem.clientWidth : 0) + fixedOffsetWidth + minInterval;
7741
+ left = Math.min(left, dragPosLeft + cell.clientWidth - minInterval);
7742
+ } else {
7743
+ dragMinLeft = Math.max(bodyScrollElem.scrollLeft, dragMinLeft);
7744
+ // left = Math.min(left, bodyScrollElem.clientWidth + bodyScrollElem.scrollLeft - 40)
7745
+ }
7746
+ dragLeft = Math.max(left, dragMinLeft);
7747
+ const resizeBarLeft = Math.max(1, dragLeft - scrollLeft);
7748
+ resizeBarElem.style.left = `${resizeBarLeft}px`;
7749
+ resizeBarElem.style.top = `${scrollbarXToTop ? osbHeight : 0}px`;
7750
+ resizeBarElem.style.height = `${scrollbarXToTop ? tableHeight - osbHeight : tableHeight}px`;
7751
+ if (resizableOpts.showDragTip && resizeTipElem) {
7752
+ resizeTipElem.textContent = getI18n('vxe.table.resizeColTip', [resizeColumn.renderWidth + (isRightFixed ? dragPosLeft - dragLeft : dragLeft - dragPosLeft)]);
7753
+ const tableWidth = tableEl.clientWidth;
7754
+ const wrapperRect = wrapperElem.getBoundingClientRect();
7755
+ const resizeBarWidth = resizeBarElem.clientWidth;
7756
+ const resizeTipWidth = resizeTipElem.clientWidth;
7757
+ const resizeTipHeight = resizeTipElem.clientHeight;
7758
+ let resizeTipLeft = -resizeTipWidth;
7759
+ if (resizeBarLeft < resizeTipWidth + resizeBarWidth) {
7760
+ resizeTipLeft = 0;
7761
+ } else if (resizeBarLeft > tableWidth) {
7762
+ resizeTipLeft += tableWidth - resizeBarLeft;
7763
+ }
7764
+ resizeTipElem.style.left = `${resizeTipLeft}px`;
7765
+ resizeTipElem.style.top = `${Math.min(tableHeight - resizeTipHeight, Math.max(0, evnt.clientY - wrapperRect.y - resizeTipHeight / 2))}px`;
7766
+ }
7767
+ reactData.isDragResize = true;
7768
+ };
7769
+ reactData.isDragResize = true;
7770
+ (0, _dom.addClass)(tableEl, 'col-drag--resize');
7771
+ resizeBarElem.style.display = 'block';
7772
+ document.onmousemove = updateEvent;
7773
+ document.onmouseup = function (evnt) {
7774
+ document.onmousemove = null;
7775
+ document.onmouseup = null;
7776
+ resizeBarElem.style.display = 'none';
7777
+ internalData._lastResizeTime = Date.now();
7778
+ setTimeout(() => {
7779
+ reactData.isDragResize = false;
7780
+ }, 50);
7781
+ const resizeWidth = resizeColumn.renderWidth + (isRightFixed ? dragPosLeft - dragLeft : dragLeft - dragPosLeft);
7782
+ const resizeParams = Object.assign(Object.assign({}, params), {
7783
+ resizeWidth,
7784
+ resizeColumn
7785
+ });
7786
+ if (resizableOpts.dragMode === 'fixed') {
7787
+ visibleColumn.forEach(item => {
7788
+ if (item.id !== resizeColumn.id) {
7789
+ if (!item.resizeWidth) {
7790
+ item.resizeWidth = item.renderWidth;
7791
+ }
7792
+ }
7793
+ });
7794
+ }
7795
+ if ($xeTable.handleColResizeCellAreaEvent) {
7796
+ $xeTable.handleColResizeCellAreaEvent(evnt, resizeParams);
7797
+ } else {
7798
+ resizeColumn.resizeWidth = resizeWidth;
7799
+ handleUpdateColResize(evnt, resizeParams);
7800
+ }
7801
+ (0, _dom.removeClass)(tableEl, 'col-drag--resize');
7802
+ };
7803
+ updateEvent(evnt);
7804
+ if ($xeTable.closeMenu) {
7805
+ $xeTable.closeMenu();
7806
+ }
7807
+ },
7808
+ handleColResizeDblclickEvent(evnt, params) {
7486
7809
  const resizableOpts = computeResizableOpts.value;
7487
7810
  const {
7488
7811
  isDblclickAutoWidth
7489
7812
  } = resizableOpts;
7490
7813
  const el = refElem.value;
7491
7814
  if (isDblclickAutoWidth && el) {
7815
+ evnt.stopPropagation();
7816
+ evnt.preventDefault();
7492
7817
  const {
7493
7818
  fullColumnIdData
7494
7819
  } = internalData;
@@ -7509,22 +7834,192 @@ var _default = exports.default = (0, _vue.defineComponent)({
7509
7834
  cell
7510
7835
  });
7511
7836
  const colMinWidth = (0, _util.getColReMinWidth)(cellParams);
7837
+ el.setAttribute('data-calc-col', 'Y');
7512
7838
  let resizeWidth = calcColumnAutoWidth(resizeColumn, el);
7839
+ el.removeAttribute('data-calc-col');
7513
7840
  if (colRest) {
7514
7841
  resizeWidth = Math.max(resizeWidth, colRest.width);
7515
7842
  }
7516
- resizeColumn.resizeWidth = Math.max(colMinWidth, resizeWidth);
7517
- reactData._isResize = false;
7518
- internalData._lastResizeTime = Date.now();
7519
- $xeTable.analyColumnWidth();
7520
- $xeTable.recalculate(true).then(() => {
7521
- $xeTable.saveCustomStore('update:visible');
7522
- $xeTable.updateCellAreas();
7523
- $xeTable.dispatchEvent('resizable-change', Object.assign(Object.assign({}, params), {
7524
- resizeWidth
7525
- }), evnt);
7526
- setTimeout(() => $xeTable.recalculate(true), 300);
7843
+ resizeWidth = Math.max(colMinWidth, resizeWidth);
7844
+ const resizeParams = Object.assign(Object.assign({}, params), {
7845
+ resizeWidth,
7846
+ resizeColumn
7527
7847
  });
7848
+ reactData.isDragResize = false;
7849
+ internalData._lastResizeTime = Date.now();
7850
+ if ($xeTable.handleColResizeDblclickCellAreaEvent) {
7851
+ $xeTable.handleColResizeDblclickCellAreaEvent(evnt, resizeParams);
7852
+ } else {
7853
+ resizeColumn.resizeWidth = resizeWidth;
7854
+ handleUpdateColResize(evnt, resizeParams);
7855
+ }
7856
+ }
7857
+ },
7858
+ handleRowResizeMousedownEvent(evnt, params) {
7859
+ evnt.stopPropagation();
7860
+ evnt.preventDefault();
7861
+ const {
7862
+ row
7863
+ } = params;
7864
+ const {
7865
+ overflowX,
7866
+ scrollbarWidth,
7867
+ overflowY,
7868
+ scrollbarHeight
7869
+ } = reactData;
7870
+ const {
7871
+ elemStore,
7872
+ fullAllDataRowIdData
7873
+ } = internalData;
7874
+ const osbWidth = overflowY ? scrollbarWidth : 0;
7875
+ const osbHeight = overflowX ? scrollbarHeight : 0;
7876
+ const scrollbarYToLeft = computeScrollbarYToLeft.value;
7877
+ const resizableOpts = computeResizableOpts.value;
7878
+ const rowOpts = computeRowOpts.value;
7879
+ const cellOpts = computeCellOpts.value;
7880
+ const tableEl = refElem.value;
7881
+ const resizeBarElem = refRowResizeBar.value;
7882
+ if (!resizeBarElem) {
7883
+ return;
7884
+ }
7885
+ const {
7886
+ clientY: dragClientY
7887
+ } = evnt;
7888
+ const resizeTipElem = resizeBarElem.firstElementChild;
7889
+ const dragBtnElem = evnt.currentTarget;
7890
+ const tdEl = dragBtnElem.parentNode;
7891
+ const trEl = tdEl.parentNode;
7892
+ const bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
7893
+ if (!bodyScrollElem) {
7894
+ return;
7895
+ }
7896
+ const rowid = (0, _util.getRowid)($xeTable, row);
7897
+ const rowRest = fullAllDataRowIdData[rowid];
7898
+ if (!rowRest) {
7899
+ return;
7900
+ }
7901
+ const defaultRowHeight = computeDefaultRowHeight.value;
7902
+ const currCellHeight = rowRest.resizeHeight || rowRest.height || cellOpts.height || rowOpts.height || defaultRowHeight;
7903
+ const tableRect = tableEl.getBoundingClientRect();
7904
+ const trRect = trEl.getBoundingClientRect();
7905
+ const targetOffsetY = dragClientY - trRect.y - trEl.clientHeight;
7906
+ let resizeHeight = currCellHeight;
7907
+ const cellEl = tdEl.querySelector('.vxe-cell');
7908
+ let cellMinHeight = 0;
7909
+ if (cellEl) {
7910
+ const cellStyle = getComputedStyle(cellEl);
7911
+ cellMinHeight = Math.max(1, Math.ceil(_xeUtils.default.toNumber(cellStyle.paddingTop) + _xeUtils.default.toNumber(cellStyle.paddingBottom)));
7912
+ }
7913
+ const minTop = trRect.y - tableRect.y + cellMinHeight;
7914
+ // 处理拖动事件
7915
+ const updateEvent = evnt => {
7916
+ evnt.stopPropagation();
7917
+ evnt.preventDefault();
7918
+ const tableWidth = tableEl.clientWidth - osbWidth;
7919
+ const tableHeight = tableEl.clientHeight - osbHeight;
7920
+ let dragTop = evnt.clientY - tableRect.y - targetOffsetY;
7921
+ if (dragTop < minTop) {
7922
+ dragTop = minTop;
7923
+ } else {
7924
+ resizeHeight = Math.max(cellMinHeight, currCellHeight + evnt.clientY - dragClientY);
7925
+ }
7926
+ resizeBarElem.style.left = `${scrollbarYToLeft ? osbWidth : 0}px`;
7927
+ resizeBarElem.style.top = `${dragTop}px`;
7928
+ resizeBarElem.style.width = `${tableWidth}px`;
7929
+ if (resizableOpts.showDragTip && resizeTipElem) {
7930
+ resizeTipElem.textContent = getI18n('vxe.table.resizeRowTip', [resizeHeight]);
7931
+ const resizeTipWidth = resizeTipElem.clientWidth;
7932
+ const resizeTipHeight = resizeTipElem.clientHeight;
7933
+ let resizeBarLeft = Math.max(2, evnt.clientX - tableRect.x);
7934
+ let resizeBarTop = 0;
7935
+ if (resizeBarLeft + resizeTipWidth >= tableWidth - 2) {
7936
+ resizeBarLeft = tableWidth - resizeTipWidth - 2;
7937
+ }
7938
+ if (dragTop + resizeTipHeight >= tableHeight) {
7939
+ resizeBarTop = tableHeight - (dragTop + resizeTipHeight);
7940
+ }
7941
+ resizeTipElem.style.left = `${resizeBarLeft}px`;
7942
+ resizeTipElem.style.top = `${resizeBarTop}px`;
7943
+ }
7944
+ reactData.isDragResize = true;
7945
+ };
7946
+ reactData.isDragResize = true;
7947
+ (0, _dom.addClass)(tableEl, 'row-drag--resize');
7948
+ resizeBarElem.style.display = 'block';
7949
+ document.onmousemove = updateEvent;
7950
+ document.onmouseup = function (evnt) {
7951
+ document.onmousemove = null;
7952
+ document.onmouseup = null;
7953
+ resizeBarElem.style.display = 'none';
7954
+ internalData._lastResizeTime = Date.now();
7955
+ setTimeout(() => {
7956
+ reactData.isDragResize = false;
7957
+ }, 50);
7958
+ if (resizeHeight !== currCellHeight) {
7959
+ const resizeParams = Object.assign(Object.assign({}, params), {
7960
+ resizeHeight,
7961
+ resizeRow: row
7962
+ });
7963
+ internalData.isResizeCellHeight = true;
7964
+ if ($xeTable.handleRowResizeCellAreaEvent) {
7965
+ $xeTable.handleRowResizeCellAreaEvent(evnt, resizeParams);
7966
+ } else {
7967
+ rowRest.resizeHeight = resizeHeight;
7968
+ handleUpdateRowResize(evnt, resizeParams);
7969
+ }
7970
+ }
7971
+ (0, _dom.removeClass)(tableEl, 'row-drag--resize');
7972
+ };
7973
+ updateEvent(evnt);
7974
+ },
7975
+ handleRowResizeDblclickEvent(evnt, params) {
7976
+ const resizableOpts = computeResizableOpts.value;
7977
+ const {
7978
+ isDblclickAutoHeight
7979
+ } = resizableOpts;
7980
+ const el = refElem.value;
7981
+ if (isDblclickAutoHeight && el) {
7982
+ evnt.stopPropagation();
7983
+ evnt.preventDefault();
7984
+ const {
7985
+ editStore
7986
+ } = reactData;
7987
+ const {
7988
+ fullAllDataRowIdData
7989
+ } = internalData;
7990
+ const {
7991
+ actived
7992
+ } = editStore;
7993
+ const {
7994
+ row
7995
+ } = params;
7996
+ const rowid = (0, _util.getRowid)($xeTable, row);
7997
+ const rowRest = fullAllDataRowIdData[rowid];
7998
+ if (!rowRest) {
7999
+ return;
8000
+ }
8001
+ const handleRsHeight = () => {
8002
+ el.setAttribute('data-calc-row', 'Y');
8003
+ const resizeHeight = calcCellAutoHeight(rowRest, el);
8004
+ el.removeAttribute('data-calc-row');
8005
+ const resizeParams = Object.assign(Object.assign({}, params), {
8006
+ resizeHeight,
8007
+ resizeRow: row
8008
+ });
8009
+ reactData.isDragResize = false;
8010
+ internalData._lastResizeTime = Date.now();
8011
+ if ($xeTable.handleRowResizeDblclickCellAreaEvent) {
8012
+ $xeTable.handleRowResizeDblclickCellAreaEvent(evnt, resizeParams);
8013
+ } else {
8014
+ rowRest.resizeHeight = resizeHeight;
8015
+ handleUpdateRowResize(evnt, resizeParams);
8016
+ }
8017
+ };
8018
+ if (actived.row || actived.column) {
8019
+ $xeTable.clearEdit().then(handleRsHeight);
8020
+ } else {
8021
+ handleRsHeight();
8022
+ }
7528
8023
  }
7529
8024
  },
7530
8025
  saveCustomStore(type) {
@@ -7930,10 +8425,21 @@ var _default = exports.default = (0, _vue.defineComponent)({
7930
8425
  const {
7931
8426
  column
7932
8427
  } = params;
7933
- const titleElem = evnt.currentTarget;
7934
8428
  handleTargetEnterEvent(true);
8429
+ const titleElem = evnt.currentTarget;
8430
+ if (!titleElem) {
8431
+ return;
8432
+ }
8433
+ const cellEl = titleElem.parentElement;
8434
+ if (!cellEl) {
8435
+ return;
8436
+ }
8437
+ const thEl = cellEl.parentElement;
8438
+ if (!thEl) {
8439
+ return;
8440
+ }
7935
8441
  if (tooltipStore.column !== column || !tooltipStore.visible) {
7936
- handleTooltip(evnt, titleElem, titleElem, null, params);
8442
+ handleTooltip(evnt, thEl, cellEl, null, params);
7937
8443
  }
7938
8444
  },
7939
8445
  /**
@@ -7957,7 +8463,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
7957
8463
  row,
7958
8464
  column
7959
8465
  } = params;
7960
- const cell = evnt.currentTarget;
8466
+ const tdEl = evnt.currentTarget;
7961
8467
  handleTargetEnterEvent(tooltipStore.column !== column || tooltipStore.row !== row);
7962
8468
  // 单元格处于编辑状态时不触发提示框
7963
8469
  if (column.editRender && (0, _utils.isEnableConf)(editConfig)) {
@@ -7971,17 +8477,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
7971
8477
  }
7972
8478
  }
7973
8479
  if (tooltipStore.column !== column || tooltipStore.row !== row || !tooltipStore.visible) {
7974
- let overflowElem;
7975
- let tipElem;
7976
- if (column.treeNode) {
7977
- overflowElem = cell.querySelector('.vxe-tree-cell');
7978
- if (column.type === 'html') {
7979
- tipElem = cell.querySelector('.vxe-cell--html');
7980
- }
7981
- } else {
7982
- tipElem = cell.querySelector(column.type === 'html' ? '.vxe-cell--html' : '.vxe-cell--label');
7983
- }
7984
- handleTooltip(evnt, cell, overflowElem || cell.children[0], tipElem, params);
8480
+ handleTooltip(evnt, tdEl, tdEl.querySelector('.vxe-cell--wrapper'), null, params);
7985
8481
  }
7986
8482
  },
7987
8483
  /**
@@ -7997,7 +8493,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
7997
8493
  const cell = evnt.currentTarget;
7998
8494
  handleTargetEnterEvent(tooltipStore.column !== column || !!tooltipStore.row);
7999
8495
  if (tooltipStore.column !== column || !tooltipStore.visible) {
8000
- handleTooltip(evnt, cell, cell.querySelector('.vxe-cell--item') || cell.children[0], null, params);
8496
+ handleTooltip(evnt, cell, cell.querySelector('.vxe-cell--wrapper') || cell.children[0], null, params);
8001
8497
  }
8002
8498
  },
8003
8499
  handleTargetLeaveEvent() {
@@ -8010,11 +8506,11 @@ var _default = exports.default = (0, _vue.defineComponent)({
8010
8506
  internalData.tooltipTimeout = setTimeout(() => {
8011
8507
  $tooltip = refTooltip.value;
8012
8508
  if ($tooltip && $tooltip.isActived && !$tooltip.isActived()) {
8013
- tableMethods.closeTooltip();
8509
+ $xeTable.closeTooltip();
8014
8510
  }
8015
8511
  }, tooltipOpts.leaveDelay);
8016
8512
  } else {
8017
- tableMethods.closeTooltip();
8513
+ $xeTable.closeTooltip();
8018
8514
  }
8019
8515
  },
8020
8516
  triggerHeaderCellClickEvent(evnt, params) {
@@ -8059,8 +8555,12 @@ var _default = exports.default = (0, _vue.defineComponent)({
8059
8555
  editConfig
8060
8556
  } = props;
8061
8557
  const {
8062
- editStore
8558
+ editStore,
8559
+ isDragResize
8063
8560
  } = reactData;
8561
+ if (isDragResize) {
8562
+ return;
8563
+ }
8064
8564
  const expandOpts = computeExpandOpts.value;
8065
8565
  const editOpts = computeEditOpts.value;
8066
8566
  const treeOpts = computeTreeOpts.value;
@@ -8170,8 +8670,12 @@ var _default = exports.default = (0, _vue.defineComponent)({
8170
8670
  editConfig
8171
8671
  } = props;
8172
8672
  const {
8173
- editStore
8673
+ editStore,
8674
+ isDragResize
8174
8675
  } = reactData;
8676
+ if (isDragResize) {
8677
+ return;
8678
+ }
8175
8679
  const editOpts = computeEditOpts.value;
8176
8680
  const {
8177
8681
  actived
@@ -8460,13 +8964,19 @@ var _default = exports.default = (0, _vue.defineComponent)({
8460
8964
  */
8461
8965
  triggerSortEvent(evnt, column, order) {
8462
8966
  const sortOpts = computeSortOpts.value;
8967
+ const {
8968
+ multiple,
8969
+ allowClear
8970
+ } = sortOpts;
8463
8971
  const {
8464
8972
  field,
8465
8973
  sortable
8466
8974
  } = column;
8467
8975
  if (sortable) {
8468
8976
  if (!order || column.order === order) {
8469
- tableMethods.clearSort(sortOpts.multiple ? column : null);
8977
+ if (allowClear) {
8978
+ tableMethods.clearSort(multiple ? column : null);
8979
+ }
8470
8980
  } else {
8471
8981
  tableMethods.sort({
8472
8982
  field,
@@ -8593,7 +9103,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
8593
9103
  isPeerDrag,
8594
9104
  isCrossDrag,
8595
9105
  isSelfToChildDrag,
8596
- dragEndMethod
9106
+ dragEndMethod,
9107
+ dragToChildMethod
8597
9108
  } = rowDragOpts;
8598
9109
  const treeOpts = computeTreeOpts.value;
8599
9110
  const {
@@ -8612,13 +9123,15 @@ var _default = exports.default = (0, _vue.defineComponent)({
8612
9123
  if (prevDragRow && dragRow) {
8613
9124
  // 判断是否有拖动
8614
9125
  if (prevDragRow !== dragRow) {
8615
- return Promise.resolve(dEndMethod ? dEndMethod({
9126
+ const dragParams = {
8616
9127
  oldRow: dragRow,
8617
9128
  newRow: prevDragRow,
8618
9129
  dragPos: prevDragPos,
8619
9130
  dragToChild: !!prevDragToChild,
8620
9131
  offsetIndex: dragOffsetIndex
8621
- }) : true).then(status => {
9132
+ };
9133
+ const isDragToChildFlag = isSelfToChildDrag && dragToChildMethod ? dragToChildMethod(dragParams) : prevDragToChild;
9134
+ return Promise.resolve(dEndMethod ? dEndMethod(dragParams) : true).then(status => {
8622
9135
  if (!status) {
8623
9136
  return;
8624
9137
  }
@@ -8696,7 +9209,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
8696
9209
  // 根到根
8697
9210
  }
8698
9211
  const fullList = _xeUtils.default.toTreeArray(internalData.afterTreeFullData, {
8699
- children: childrenField
9212
+ key: rowField,
9213
+ parentKey: parentField,
9214
+ children: mapChildrenField
8700
9215
  });
8701
9216
  // 移出
8702
9217
  const otfIndex = $xeTable.findRowIndexOf(fullList, dragRow);
@@ -8711,12 +9226,12 @@ var _default = exports.default = (0, _vue.defineComponent)({
8711
9226
  childRow[parentField] = dragRow[parentField];
8712
9227
  });
8713
9228
  }
8714
- dragRow[parentField] = prevDragToChild ? prevDragRow[rowField] : prevDragRow[parentField];
9229
+ dragRow[parentField] = isDragToChildFlag ? prevDragRow[rowField] : prevDragRow[parentField];
8715
9230
  internalData.tableFullTreeData = _xeUtils.default.toArrayTree(fullList, {
8716
- key: treeOpts.rowField,
8717
- parentKey: treeOpts.parentField,
9231
+ key: rowField,
9232
+ parentKey: parentField,
8718
9233
  children: childrenField,
8719
- mapChildren: treeOpts.mapChildrenField
9234
+ mapChildren: mapChildrenField
8720
9235
  });
8721
9236
  }
8722
9237
  }
@@ -8736,7 +9251,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
8736
9251
  }
8737
9252
  reactData.isDragRowMove = true;
8738
9253
  $xeTable.handleTableData(treeConfig && transform);
8739
- $xeTable.cacheRowMap();
9254
+ $xeTable.cacheRowMap(false);
8740
9255
  updateScrollYStatus();
8741
9256
  if (!(treeConfig && transform)) {
8742
9257
  $xeTable.updateAfterDataIndex();
@@ -8753,7 +9268,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
8753
9268
  oldRow: dragRow,
8754
9269
  newRow: prevDragRow,
8755
9270
  dragPos: prevDragPos,
8756
- dragToChild: !!prevDragToChild,
9271
+ dragToChild: isDragToChildFlag,
8757
9272
  offsetIndex: dragOffsetIndex,
8758
9273
  _index: {
8759
9274
  newIndex: nafIndex,
@@ -8785,18 +9300,16 @@ var _default = exports.default = (0, _vue.defineComponent)({
8785
9300
  prevDragRow,
8786
9301
  prevDragPos
8787
9302
  } = internalData;
8788
- if (treeConfig && prevDragToChild) {
9303
+ if (treeConfig && lazy && prevDragToChild) {
8789
9304
  // 懒加载
8790
- if (lazy) {
8791
- const newRowid = (0, _util.getRowid)($xeTable, prevDragRow);
8792
- const rowRest = fullAllDataRowIdData[newRowid];
8793
- if (prevDragRow[hasChildField]) {
8794
- if (rowRest && rowRest.treeLoaded) {
8795
- $xeTable.handleRowDragSwapEvent(evnt, true, dragRow, prevDragRow, prevDragPos, prevDragToChild);
8796
- }
8797
- } else {
9305
+ const newRowid = (0, _util.getRowid)($xeTable, prevDragRow);
9306
+ const rowRest = fullAllDataRowIdData[newRowid];
9307
+ if (prevDragRow[hasChildField]) {
9308
+ if (rowRest && rowRest.treeLoaded) {
8798
9309
  $xeTable.handleRowDragSwapEvent(evnt, true, dragRow, prevDragRow, prevDragPos, prevDragToChild);
8799
9310
  }
9311
+ } else {
9312
+ $xeTable.handleRowDragSwapEvent(evnt, true, dragRow, prevDragRow, prevDragPos, prevDragToChild);
8800
9313
  }
8801
9314
  } else {
8802
9315
  $xeTable.handleRowDragSwapEvent(evnt, true, dragRow, prevDragRow, prevDragPos, prevDragToChild);
@@ -8927,7 +9440,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
8927
9440
  isCrossDrag,
8928
9441
  isSelfToChildDrag,
8929
9442
  isToChildDrag,
8930
- dragEndMethod
9443
+ dragEndMethod,
9444
+ dragToChildMethod
8931
9445
  } = columnDragOpts;
8932
9446
  const {
8933
9447
  collectColumn
@@ -8938,13 +9452,15 @@ var _default = exports.default = (0, _vue.defineComponent)({
8938
9452
  if (prevDragCol !== dragCol) {
8939
9453
  const oldColumn = dragCol;
8940
9454
  const newColumn = prevDragCol;
8941
- return Promise.resolve(dragEndMethod ? dragEndMethod({
9455
+ const dragParams = {
8942
9456
  oldColumn,
8943
9457
  newColumn,
8944
9458
  dragPos: prevDragPos,
8945
9459
  dragToChild: !!prevDragToChild,
8946
9460
  offsetIndex: dragOffsetIndex
8947
- }) : true).then(status => {
9461
+ };
9462
+ const isDragToChildFlag = isSelfToChildDrag && dragToChildMethod ? dragToChildMethod(dragParams) : prevDragToChild;
9463
+ return Promise.resolve(dragEndMethod ? dragEndMethod(dragParams) : true).then(status => {
8948
9464
  if (!status) {
8949
9465
  return;
8950
9466
  }
@@ -9040,7 +9556,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9040
9556
  parent: nParent
9041
9557
  } = newMatchRest;
9042
9558
  // 转子级
9043
- if (isCrossDrag && isToChildDrag && prevDragToChild) {
9559
+ if (isCrossDrag && isToChildDrag && isDragToChildFlag) {
9044
9560
  oldColumn.parentId = newColumn.id;
9045
9561
  newColumn.children = (newColumn.children || []).concat([oldColumn]);
9046
9562
  } else {
@@ -9071,7 +9587,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9071
9587
  oldColumn,
9072
9588
  newColumn,
9073
9589
  dragPos: prevDragPos,
9074
- dragToChild: !!prevDragToChild,
9590
+ dragToChild: isDragToChildFlag,
9075
9591
  offsetIndex: dragOffsetIndex,
9076
9592
  _index: {
9077
9593
  newIndex: nafIndex,
@@ -9339,6 +9855,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9339
9855
  triggerBodyScrollEvent(evnt, fixedType) {
9340
9856
  const {
9341
9857
  elemStore,
9858
+ intoRunScroll,
9342
9859
  lastScrollTop,
9343
9860
  lastScrollLeft,
9344
9861
  inWheelScroll,
@@ -9358,6 +9875,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
9358
9875
  if (inWheelScroll || inVirtualScroll || inHeaderScroll || inFooterScroll) {
9359
9876
  return;
9360
9877
  }
9878
+ if (intoRunScroll) {
9879
+ return;
9880
+ }
9361
9881
  if (!bodyScrollElem) {
9362
9882
  return;
9363
9883
  }
@@ -9414,6 +9934,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9414
9934
  triggerHeaderScrollEvent(evnt, fixedType) {
9415
9935
  const {
9416
9936
  elemStore,
9937
+ intoRunScroll,
9417
9938
  inWheelScroll,
9418
9939
  inVirtualScroll,
9419
9940
  inBodyScroll,
@@ -9424,16 +9945,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
9424
9945
  const bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
9425
9946
  const headerScrollElem = (0, _util.getRefElem)(elemStore['main-header-scroll']);
9426
9947
  const footerScrollElem = (0, _util.getRefElem)(elemStore['main-footer-scroll']);
9427
- if (inWheelScroll) {
9428
- return;
9429
- }
9430
- if (inVirtualScroll) {
9431
- return;
9432
- }
9433
- if (inBodyScroll) {
9948
+ if (inWheelScroll || inVirtualScroll || inBodyScroll || inFooterScroll) {
9434
9949
  return;
9435
9950
  }
9436
- if (inFooterScroll) {
9951
+ if (intoRunScroll) {
9437
9952
  return;
9438
9953
  }
9439
9954
  if (!headerScrollElem) {
@@ -9462,6 +9977,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
9462
9977
  triggerFooterScrollEvent(evnt, fixedType) {
9463
9978
  const {
9464
9979
  elemStore,
9980
+ intoRunScroll,
9465
9981
  inWheelScroll,
9466
9982
  inVirtualScroll,
9467
9983
  inHeaderScroll,
@@ -9472,16 +9988,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
9472
9988
  const bodyScrollElem = (0, _util.getRefElem)(elemStore['main-body-scroll']);
9473
9989
  const headerScrollElem = (0, _util.getRefElem)(elemStore['main-header-scroll']);
9474
9990
  const footerScrollElem = (0, _util.getRefElem)(elemStore['main-footer-scroll']);
9475
- if (inWheelScroll) {
9476
- return;
9477
- }
9478
- if (inVirtualScroll) {
9991
+ if (inWheelScroll || inVirtualScroll || inHeaderScroll || inBodyScroll) {
9479
9992
  return;
9480
9993
  }
9481
- if (inHeaderScroll) {
9482
- return;
9483
- }
9484
- if (inBodyScroll) {
9994
+ if (intoRunScroll) {
9485
9995
  return;
9486
9996
  }
9487
9997
  if (!footerScrollElem) {
@@ -9509,9 +10019,13 @@ var _default = exports.default = (0, _vue.defineComponent)({
9509
10019
  },
9510
10020
  triggerBodyWheelEvent(evnt) {
9511
10021
  const {
10022
+ target,
9512
10023
  deltaY,
9513
10024
  deltaX
9514
10025
  } = evnt;
10026
+ if (target && /^textarea$/i.test(target.tagName)) {
10027
+ return;
10028
+ }
9515
10029
  const {
9516
10030
  highlightHoverRow
9517
10031
  } = _props.default;
@@ -9535,26 +10049,13 @@ var _default = exports.default = (0, _vue.defineComponent)({
9535
10049
  if (!bodyScrollElem) {
9536
10050
  return;
9537
10051
  }
9538
- let multiple = 1;
9539
- if (reactData.lastScrollTime + 25 > Date.now()) {
9540
- multiple = 1.18;
9541
- } else if (reactData.lastScrollTime + 30 > Date.now()) {
9542
- multiple = 1.15;
9543
- } else if (reactData.lastScrollTime + 40 > Date.now()) {
9544
- multiple = 1.12;
9545
- } else if (reactData.lastScrollTime + 55 > Date.now()) {
9546
- multiple = 1.09;
9547
- } else if (reactData.lastScrollTime + 75 > Date.now()) {
9548
- multiple = 1.06;
9549
- } else if (reactData.lastScrollTime + 100 > Date.now()) {
9550
- multiple = 1.03;
9551
- }
9552
- const deltaTop = deltaY * multiple;
9553
- const deltaLeft = deltaX * multiple;
10052
+ const wheelSpeed = getWheelSpeed(reactData.lastScrollTime);
10053
+ const deltaTop = deltaY * wheelSpeed;
10054
+ const deltaLeft = deltaX * wheelSpeed;
9554
10055
  const isTopWheel = deltaTop < 0;
9555
- const currScrollTop = yHandleEl.scrollTop;
10056
+ const currScrollTop = bodyScrollElem.scrollTop;
9556
10057
  // 如果滚动位置已经是顶部或底部,则不需要触发
9557
- if (isTopWheel ? currScrollTop <= 0 : currScrollTop >= yHandleEl.scrollHeight - yHandleEl.clientHeight) {
10058
+ if (isTopWheel ? currScrollTop <= 0 : currScrollTop >= bodyScrollElem.scrollHeight - bodyScrollElem.clientHeight) {
9558
10059
  return;
9559
10060
  }
9560
10061
  const scrollTop = bodyScrollElem.scrollTop + deltaTop;
@@ -9567,16 +10068,29 @@ var _default = exports.default = (0, _vue.defineComponent)({
9567
10068
  if (rowOpts.isHover || highlightHoverRow) {
9568
10069
  $xeTable.clearHoverRow();
9569
10070
  }
9570
- internalData.inWheelScroll = true;
9571
- (0, _dom.setScrollTop)(yHandleEl, scrollTop);
9572
- (0, _dom.setScrollTop)(bodyScrollElem, scrollTop);
9573
- (0, _dom.setScrollTop)(leftScrollElem, scrollTop);
9574
- (0, _dom.setScrollTop)(rightScrollElem, scrollTop);
9575
- loadScrollYData(scrollTop);
9576
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
9577
- type: 'table',
9578
- fixed: ''
10071
+ wheelScrollTo(scrollTop - bodyScrollElem.scrollTop, offsetTop => {
10072
+ const currTopNum = bodyScrollElem.scrollTop + offsetTop;
10073
+ internalData.inWheelScroll = true;
10074
+ (0, _dom.setScrollTop)(yHandleEl, currTopNum);
10075
+ (0, _dom.setScrollTop)(bodyScrollElem, currTopNum);
10076
+ (0, _dom.setScrollTop)(leftScrollElem, currTopNum);
10077
+ (0, _dom.setScrollTop)(rightScrollElem, currTopNum);
10078
+ $xeTable.triggerScrollYEvent(evnt);
10079
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, currTopNum, scrollLeft, {
10080
+ type: 'table',
10081
+ fixed: ''
10082
+ });
9579
10083
  });
10084
+ // internalData.inWheelScroll = true
10085
+ // setScrollTop(yHandleEl, scrollTop)
10086
+ // setScrollTop(bodyScrollElem, scrollTop)
10087
+ // setScrollTop(leftScrollElem, scrollTop)
10088
+ // setScrollTop(rightScrollElem, scrollTop)
10089
+ // loadScrollYData(scrollTop)
10090
+ // $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
10091
+ // type: 'footer',
10092
+ // fixed: ''
10093
+ // })
9580
10094
  }
9581
10095
  },
9582
10096
  triggerVirtualScrollXEvent(evnt) {
@@ -9746,45 +10260,43 @@ var _default = exports.default = (0, _vue.defineComponent)({
9746
10260
  // 更新纵向 Y 可视渲染上下剩余空间大小
9747
10261
  updateScrollYSpace() {
9748
10262
  const {
9749
- showOverflow
9750
- } = props;
9751
- const {
9752
- scrollYLoad,
9753
- rowHeight
10263
+ isAllOverflow,
10264
+ scrollYLoad
9754
10265
  } = reactData;
9755
10266
  const {
9756
10267
  scrollYStore,
9757
10268
  elemStore,
10269
+ isResizeCellHeight,
9758
10270
  afterFullData,
9759
10271
  fullAllDataRowIdData
9760
10272
  } = internalData;
9761
10273
  const {
9762
10274
  startIndex
9763
10275
  } = scrollYStore;
10276
+ const rowOpts = computeRowOpts.value;
10277
+ const cellOpts = computeCellOpts.value;
10278
+ const defaultRowHeight = computeDefaultRowHeight.value;
9764
10279
  const bodyTableElem = (0, _util.getRefElem)(elemStore['main-body-table']);
9765
10280
  const containerList = ['main', 'left', 'right'];
9766
10281
  let topSpaceHeight = 0;
9767
10282
  let ySpaceHeight = 0;
9768
10283
  if (scrollYLoad) {
9769
- if (showOverflow) {
9770
- ySpaceHeight = afterFullData.length * rowHeight;
9771
- topSpaceHeight = Math.max(0, startIndex * rowHeight);
10284
+ const isCustomCellHeight = isResizeCellHeight || cellOpts.height || rowOpts.height;
10285
+ if (!isCustomCellHeight && isAllOverflow) {
10286
+ ySpaceHeight = afterFullData.length * defaultRowHeight;
10287
+ topSpaceHeight = Math.max(0, startIndex * defaultRowHeight);
9772
10288
  } else {
9773
10289
  for (let i = 0; i < afterFullData.length; i++) {
9774
10290
  const row = afterFullData[i];
9775
10291
  const rowid = (0, _util.getRowid)($xeTable, row);
9776
- const rowRest = fullAllDataRowIdData[rowid];
9777
- if (rowRest) {
9778
- ySpaceHeight += rowRest.height || rowHeight;
9779
- }
10292
+ const rowRest = fullAllDataRowIdData[rowid] || {};
10293
+ ySpaceHeight += rowRest.resizeHeight || rowRest.height || cellOpts.height || rowOpts.height || defaultRowHeight;
9780
10294
  }
9781
10295
  for (let i = 0; i < startIndex; i++) {
9782
10296
  const row = afterFullData[i];
9783
10297
  const rowid = (0, _util.getRowid)($xeTable, row);
9784
- const rowRest = fullAllDataRowIdData[rowid];
9785
- if (rowRest) {
9786
- topSpaceHeight += rowRest.height || rowHeight;
9787
- }
10298
+ const rowRest = fullAllDataRowIdData[rowid] || {};
10299
+ topSpaceHeight += rowRest.resizeHeight || rowRest.height || cellOpts.height || rowOpts.height || defaultRowHeight;
9788
10300
  }
9789
10301
  }
9790
10302
  } else {
@@ -9809,19 +10321,19 @@ var _default = exports.default = (0, _vue.defineComponent)({
9809
10321
  if (scrollYSpaceEl) {
9810
10322
  scrollYSpaceEl.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
9811
10323
  }
9812
- (0, _vue.nextTick)(() => {
10324
+ return (0, _vue.nextTick)().then(() => {
9813
10325
  updateStyle();
9814
10326
  });
9815
10327
  },
9816
10328
  updateScrollXData() {
9817
10329
  const {
9818
- showOverflow
9819
- } = props;
10330
+ isAllOverflow
10331
+ } = reactData;
9820
10332
  handleTableColumn();
9821
10333
  return (0, _vue.nextTick)().then(() => {
9822
10334
  handleTableColumn();
9823
10335
  $xeTable.updateScrollXSpace();
9824
- if (!showOverflow) {
10336
+ if (!isAllOverflow) {
9825
10337
  $xeTable.updateScrollYSpace();
9826
10338
  }
9827
10339
  });
@@ -10173,7 +10685,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
10173
10685
  editRules
10174
10686
  } = props;
10175
10687
  const {
10176
- isCalcColumn,
10177
10688
  isGroup,
10178
10689
  overflowX,
10179
10690
  overflowY,
@@ -10183,15 +10694,15 @@ var _default = exports.default = (0, _vue.defineComponent)({
10183
10694
  initStore,
10184
10695
  columnStore,
10185
10696
  filterStore,
10186
- customStore,
10187
- tooltipStore
10697
+ customStore
10188
10698
  } = reactData;
10189
10699
  const {
10190
10700
  leftList,
10191
10701
  rightList
10192
10702
  } = columnStore;
10193
10703
  const loadingSlot = slots.loading;
10194
- const tooltipOpts = computeTooltipOpts.value;
10704
+ const tableTipConfig = computeTableTipConfig.value;
10705
+ const validTipConfig = computeValidTipConfig.value;
10195
10706
  const validOpts = computeValidOpts.value;
10196
10707
  const checkboxOpts = computeCheckboxOpts.value;
10197
10708
  const treeOpts = computeTreeOpts.value;
@@ -10203,7 +10714,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
10203
10714
  const areaOpts = computeAreaOpts.value;
10204
10715
  const loadingOpts = computeLoadingOpts.value;
10205
10716
  const isMenu = computeIsMenu.value;
10206
- const currLoading = reactData.isLoading || loading;
10717
+ const currLoading = reactData.isColLoading || reactData.isRowLoading || loading;
10207
10718
  const resizableOpts = computeResizableOpts.value;
10208
10719
  const isArea = mouseConfig && mouseOpts.area;
10209
10720
  const columnDragOpts = computeColumnDragOpts.value;
@@ -10224,7 +10735,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
10224
10735
  'row--highlight': rowOpts.isHover || highlightHoverRow,
10225
10736
  'column--highlight': columnOpts.isHover || highlightHoverColumn,
10226
10737
  'checkbox--range': checkboxOpts.range,
10227
- 'column--calc': isCalcColumn,
10228
10738
  'col--drag-cell': columnOpts.drag && columnDragOpts.trigger === 'cell',
10229
10739
  'is--header': showHeader,
10230
10740
  'is--footer': showFooter,
@@ -10233,7 +10743,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
10233
10743
  'is--fixed-left': leftList.length,
10234
10744
  'is--fixed-right': rightList.length,
10235
10745
  'is--animat': !!props.animat,
10236
- 'is--padding': props.padding,
10237
10746
  'is--round': props.round,
10238
10747
  'is--stripe': !treeConfig && stripe,
10239
10748
  'is--loading': currLoading,
@@ -10276,11 +10785,20 @@ var _default = exports.default = (0, _vue.defineComponent)({
10276
10785
  * 列宽线
10277
10786
  */
10278
10787
  (0, _vue.h)('div', {
10279
- key: 'cl',
10280
- ref: refCellResizeBar,
10281
- class: 'vxe-table--resizable-bar'
10788
+ key: 'tcl',
10789
+ ref: refColResizeBar,
10790
+ class: 'vxe-table--resizable-col-bar'
10791
+ }, resizableOpts.showDragTip ? [(0, _vue.h)('div', {
10792
+ class: 'vxe-table--resizable-number-tip'
10793
+ })] : []),
10794
+ /**
10795
+ * 行高线
10796
+ */
10797
+ (0, _vue.h)('div', {
10798
+ key: 'trl',
10799
+ ref: refRowResizeBar,
10800
+ class: 'vxe-table--resizable-row-bar'
10282
10801
  }, resizableOpts.showDragTip ? [(0, _vue.h)('div', {
10283
- ref: refCellResizeTip,
10284
10802
  class: 'vxe-table--resizable-number-tip'
10285
10803
  })] : []),
10286
10804
  /**
@@ -10366,22 +10884,28 @@ var _default = exports.default = (0, _vue.defineComponent)({
10366
10884
  /**
10367
10885
  * 工具提示
10368
10886
  */
10369
- (0, _vue.h)(VxeUITooltipComponent, Object.assign({
10887
+ (0, _vue.h)(VxeUITooltipComponent, {
10370
10888
  key: 'btp',
10371
- ref: refTooltip
10372
- }, tooltipOpts, tooltipStore.currOpts)),
10889
+ ref: refTooltip,
10890
+ theme: tableTipConfig.theme,
10891
+ enterable: tableTipConfig.enterable,
10892
+ enterDelay: tableTipConfig.enterDelay,
10893
+ leaveDelay: tableTipConfig.leaveDelay
10894
+ }),
10373
10895
  /**
10374
10896
  * 校验提示
10375
10897
  */
10376
- props.editRules && validOpts.showMessage && (validOpts.message === 'default' ? !height : validOpts.message === 'tooltip') ? (0, _vue.h)(VxeUITooltipComponent, Object.assign({
10898
+ props.editRules && validOpts.showMessage && (validOpts.message === 'default' ? !height : validOpts.message === 'tooltip') ? (0, _vue.h)(VxeUITooltipComponent, {
10377
10899
  key: 'vtp',
10378
10900
  ref: refValidTooltip,
10379
10901
  class: [{
10380
10902
  'old-cell-valid': editRules && getConfig().cellVaildMode === 'obsolete'
10381
- }, 'vxe-table--valid-error']
10382
- }, validOpts.message === 'tooltip' || tableData.length === 1 ? Object.assign({
10383
- isArrow: false
10384
- }, tooltipOpts) : {})) : renderEmptyElement($xeTable)]) : renderEmptyElement($xeTable)]);
10903
+ }, 'vxe-table--valid-error'],
10904
+ theme: validTipConfig.theme,
10905
+ enterable: validTipConfig.enterable,
10906
+ enterDelay: validTipConfig.enterDelay,
10907
+ leaveDelay: validTipConfig.leaveDelay
10908
+ }) : renderEmptyElement($xeTable)]) : renderEmptyElement($xeTable)]);
10385
10909
  };
10386
10910
  const dataFlag = (0, _vue.ref)(0);
10387
10911
  (0, _vue.watch)(() => props.data ? props.data.length : -1, () => {
@@ -10398,7 +10922,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
10398
10922
  if (value && value.length >= 50000) {
10399
10923
  (0, _log.warnLog)('vxe.error.errLargeData', ['loadData(data), reloadData(data)']);
10400
10924
  }
10401
- loadTableData(value).then(() => {
10925
+ loadTableData(value, true).then(() => {
10402
10926
  const {
10403
10927
  scrollXLoad,
10404
10928
  scrollYLoad,
@@ -10493,10 +11017,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
10493
11017
  });
10494
11018
  (0, _vue.watch)(() => props.syncResize, value => {
10495
11019
  if (value) {
10496
- handleUupdateResize();
11020
+ handleUpdateResize();
10497
11021
  (0, _vue.nextTick)(() => {
10498
- handleUupdateResize();
10499
- setTimeout(() => handleUupdateResize());
11022
+ handleUpdateResize();
11023
+ setTimeout(() => handleUpdateResize());
10500
11024
  });
10501
11025
  }
10502
11026
  });
@@ -10611,6 +11135,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
10611
11135
  if (props.showFooter && !(props.footerMethod || props.footerData)) {
10612
11136
  (0, _log.warnLog)('vxe.error.reqProp', ['footer-data | footer-method']);
10613
11137
  }
11138
+ if (rowOpts.height) {
11139
+ (0, _log.warnLog)('vxe.error.delProp', ['row-config.height', 'cell-config.height']);
11140
+ }
10614
11141
  // if (props.highlightCurrentRow) {
10615
11142
  // warnLog('vxe.error.delProp', ['highlight-current-row', 'row-config.isCurrent'])
10616
11143
  // }
@@ -10721,7 +11248,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
10721
11248
  endIndex: 0,
10722
11249
  visibleSize: 0
10723
11250
  });
10724
- loadTableData(data || []).then(() => {
11251
+ loadTableData(data || [], true).then(() => {
10725
11252
  if (data && data.length) {
10726
11253
  internalData.inited = true;
10727
11254
  internalData.initStatus = true;