vxe-table 4.12.0 → 4.12.2

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 (42) hide show
  1. package/es/style.css +1 -1
  2. package/es/table/module/edit/hook.js +22 -24
  3. package/es/table/module/keyboard/hook.js +3 -2
  4. package/es/table/module/validator/hook.js +2 -4
  5. package/es/table/src/body.js +7 -8
  6. package/es/table/src/table.js +79 -100
  7. package/es/ui/index.js +3 -3
  8. package/es/ui/src/dom.js +0 -1
  9. package/es/ui/src/log.js +1 -1
  10. package/lib/index.umd.js +12266 -1059
  11. package/lib/index.umd.min.js +1 -1
  12. package/lib/style.css +1 -1
  13. package/lib/table/module/edit/hook.js +26 -34
  14. package/lib/table/module/edit/hook.min.js +1 -1
  15. package/lib/table/module/keyboard/hook.js +2 -1
  16. package/lib/table/module/keyboard/hook.min.js +1 -1
  17. package/lib/table/module/validator/hook.js +3 -8
  18. package/lib/table/module/validator/hook.min.js +1 -1
  19. package/lib/table/src/body.js +7 -8
  20. package/lib/table/src/body.min.js +1 -1
  21. package/lib/table/src/table.js +83 -115
  22. package/lib/table/src/table.min.js +1 -1
  23. package/lib/ui/index.js +3 -3
  24. package/lib/ui/index.min.js +1 -1
  25. package/lib/ui/src/dom.js +0 -2
  26. package/lib/ui/src/dom.min.js +1 -1
  27. package/lib/ui/src/log.js +1 -1
  28. package/lib/ui/src/log.min.js +1 -1
  29. package/package.json +2 -2
  30. package/packages/table/module/edit/hook.ts +23 -24
  31. package/packages/table/module/keyboard/hook.ts +4 -2
  32. package/packages/table/module/validator/hook.ts +2 -4
  33. package/packages/table/src/body.ts +7 -8
  34. package/packages/table/src/table.ts +86 -108
  35. package/packages/ui/index.ts +2 -2
  36. package/packages/ui/src/dom.ts +0 -2
  37. /package/es/{iconfont.1742955995631.ttf → iconfont.1743125693758.ttf} +0 -0
  38. /package/es/{iconfont.1742955995631.woff → iconfont.1743125693758.woff} +0 -0
  39. /package/es/{iconfont.1742955995631.woff2 → iconfont.1743125693758.woff2} +0 -0
  40. /package/lib/{iconfont.1742955995631.ttf → iconfont.1743125693758.ttf} +0 -0
  41. /package/lib/{iconfont.1742955995631.woff → iconfont.1743125693758.woff} +0 -0
  42. /package/lib/{iconfont.1742955995631.woff2 → iconfont.1743125693758.woff2} +0 -0
@@ -53,6 +53,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
53
53
  emit
54
54
  } = context;
55
55
  const xID = _xeUtils.default.uniqueId();
56
+ const browseObj = _xeUtils.default.browse();
56
57
  // 使用已安装的组件,如果未安装则不渲染
57
58
  const VxeUILoadingComponent = _ui.VxeUI.getComponent('VxeLoading');
58
59
  const VxeUITooltipComponent = _ui.VxeUI.getComponent('VxeTooltip');
@@ -198,9 +199,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
198
199
  focused: {
199
200
  row: null,
200
201
  column: null
201
- },
202
- insertMaps: {},
203
- removeMaps: {}
202
+ }
204
203
  },
205
204
  // 存放 tooltip 相关信息
206
205
  tooltipStore: {
@@ -262,6 +261,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
262
261
  treeExpandedFlag: 1,
263
262
  updateCheckboxFlag: 1,
264
263
  pendingRowFlag: 1,
264
+ insertRowFlag: 1,
265
+ removeRowFlag: 1,
265
266
  rowHeightStore: {
266
267
  default: 48,
267
268
  medium: 44,
@@ -361,7 +362,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
361
362
  fullDataRowIdData: {},
362
363
  fullColumnIdData: {},
363
364
  fullColumnFieldData: {},
364
- // prevDragRow: null,
365
365
  // 已展开的行集合
366
366
  rowExpandedMaps: {},
367
367
  // 懒加载中的展开行的集合
@@ -374,6 +374,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
374
374
  selectCheckboxMaps: {},
375
375
  // 已标记的对象集
376
376
  pendingRowMaps: {},
377
+ // 已新增的临时行
378
+ insertRowMaps: {},
379
+ // 已删除行
380
+ removeRowMaps: {},
377
381
  inited: false,
378
382
  tooltipTimeout: null,
379
383
  initStatus: false,
@@ -449,10 +453,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
449
453
  return virtualXOpts;
450
454
  });
451
455
  const computeScrollXThreshold = (0, _vue.computed)(() => {
452
- const sXOpts = computeSXOpts.value;
456
+ const virtualXOpts = computeVirtualXOpts.value;
453
457
  const {
454
458
  threshold
455
- } = sXOpts;
459
+ } = virtualXOpts;
456
460
  if (threshold) {
457
461
  return _xeUtils.default.toNumber(threshold);
458
462
  }
@@ -483,10 +487,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
483
487
  return !!(scrollbarOpts.y && scrollbarOpts.y.position === 'left');
484
488
  });
485
489
  const computeScrollYThreshold = (0, _vue.computed)(() => {
486
- const sYOpts = computeSYOpts.value;
490
+ const virtualYOpts = computeVirtualYOpts.value;
487
491
  const {
488
492
  threshold
489
- } = sYOpts;
493
+ } = virtualYOpts;
490
494
  if (threshold) {
491
495
  return _xeUtils.default.toNumber(threshold);
492
496
  }
@@ -1149,18 +1153,16 @@ var _default = exports.default = (0, _vue.defineComponent)({
1149
1153
  };
1150
1154
  const setMerges = (merges, mList, rowList) => {
1151
1155
  if (merges) {
1152
- const {
1153
- treeConfig
1154
- } = props;
1156
+ // const { treeConfig } = props
1155
1157
  const {
1156
1158
  visibleColumn
1157
1159
  } = internalData;
1158
1160
  if (!_xeUtils.default.isArray(merges)) {
1159
1161
  merges = [merges];
1160
1162
  }
1161
- if (treeConfig && merges.length) {
1162
- (0, _log.errLog)('vxe.error.noTree', ['merge-cells | merge-footer-items']);
1163
- }
1163
+ // if (treeConfig && merges.length) {
1164
+ // errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
1165
+ // }
1164
1166
  merges.forEach(item => {
1165
1167
  let {
1166
1168
  row,
@@ -1207,18 +1209,16 @@ var _default = exports.default = (0, _vue.defineComponent)({
1207
1209
  const removeMerges = (merges, mList, rowList) => {
1208
1210
  const rest = [];
1209
1211
  if (merges) {
1210
- const {
1211
- treeConfig
1212
- } = props;
1212
+ // const { treeConfig } = props
1213
1213
  const {
1214
1214
  visibleColumn
1215
1215
  } = internalData;
1216
1216
  if (!_xeUtils.default.isArray(merges)) {
1217
1217
  merges = [merges];
1218
1218
  }
1219
- if (treeConfig && merges.length) {
1220
- (0, _log.errLog)('vxe.error.noTree', ['merge-cells | merge-footer-items']);
1221
- }
1219
+ // if (treeConfig && merges.length) {
1220
+ // errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
1221
+ // }
1222
1222
  merges.forEach(item => {
1223
1223
  let {
1224
1224
  row,
@@ -2113,7 +2113,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
2113
2113
  };
2114
2114
  const updateStyle = () => {
2115
2115
  const {
2116
- border,
2117
2116
  showHeaderOverflow: allColumnHeaderOverflow,
2118
2117
  showFooterOverflow: allColumnFooterOverflow,
2119
2118
  mouseConfig,
@@ -2292,36 +2291,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
2292
2291
  if (tableElem) {
2293
2292
  tableElem.style.width = tWidth ? `${tWidth}px` : '';
2294
2293
  }
2295
- const listElem = (0, _util.getRefElem)(elemStore[`${name}-${layout}-list`]);
2296
- if (isGroup && listElem) {
2297
- _xeUtils.default.arrayEach(listElem.querySelectorAll('.col--group'), thElem => {
2298
- const colNode = $xeTable.getColumnNode(thElem);
2299
- if (colNode) {
2300
- const column = colNode.item;
2301
- const {
2302
- showHeaderOverflow
2303
- } = column;
2304
- const cellOverflow = _xeUtils.default.isBoolean(showHeaderOverflow) ? showHeaderOverflow : allColumnHeaderOverflow;
2305
- const showEllipsis = cellOverflow === 'ellipsis';
2306
- const showTitle = cellOverflow === 'title';
2307
- const showTooltip = cellOverflow === true || cellOverflow === 'tooltip';
2308
- const hasEllipsis = showTitle || showTooltip || showEllipsis;
2309
- let childWidth = 0;
2310
- let countChild = 0;
2311
- if (hasEllipsis) {
2312
- _xeUtils.default.eachTree(column.children, item => {
2313
- if (!item.children || !column.children.length) {
2314
- countChild++;
2315
- }
2316
- childWidth += item.renderWidth;
2317
- }, {
2318
- children: 'children'
2319
- });
2320
- }
2321
- thElem.style.width = hasEllipsis ? `${childWidth - countChild - (border ? 2 : 0)}px` : '';
2322
- }
2323
- });
2324
- }
2325
2294
  } else if (layout === 'body') {
2326
2295
  if (currScrollElem) {
2327
2296
  currScrollElem.style.maxHeight = customMaxHeight ? `${bodyMaxHeight}px` : '';
@@ -2367,7 +2336,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
2367
2336
  if (tableElem) {
2368
2337
  tableElem.style.width = tWidth ? `${tWidth}px` : '';
2369
2338
  // 兼容性处理
2370
- tableElem.style.paddingRight = osbWidth && fixedType && (_dom.browse['-moz'] || _dom.browse.safari) ? `${osbWidth}px` : '';
2339
+ tableElem.style.paddingRight = osbWidth && fixedType && (browseObj['-moz'] || browseObj.safari) ? `${osbWidth}px` : '';
2371
2340
  }
2372
2341
  const emptyBlockElem = (0, _util.getRefElem)(elemStore[`${name}-${layout}-emptyBlock`]);
2373
2342
  if (emptyBlockElem) {
@@ -2460,7 +2429,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
2460
2429
  order
2461
2430
  } = item;
2462
2431
  if (field && order) {
2463
- const column = tableMethods.getColumnByField(field);
2432
+ const column = $xeTable.getColumnByField(field);
2464
2433
  if (column && column.sortable) {
2465
2434
  column.order = order;
2466
2435
  column.sortTime = Date.now() + index;
@@ -2468,7 +2437,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
2468
2437
  }
2469
2438
  });
2470
2439
  if (!sortOpts.remote) {
2471
- tablePrivateMethods.handleTableData(true).then(updateStyle);
2440
+ $xeTable.handleTableData(true).then(updateStyle);
2472
2441
  }
2473
2442
  }
2474
2443
  }
@@ -2549,7 +2518,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
2549
2518
  expandRowKeys
2550
2519
  } = expandOpts;
2551
2520
  if (expandAll) {
2552
- tableMethods.setAllRowExpand(true);
2521
+ $xeTable.setAllRowExpand(true);
2553
2522
  } else if (expandRowKeys) {
2554
2523
  const defExpandeds = [];
2555
2524
  expandRowKeys.forEach(rowid => {
@@ -2557,7 +2526,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
2557
2526
  defExpandeds.push(fullDataRowIdData[rowid].row);
2558
2527
  }
2559
2528
  });
2560
- tableMethods.setRowExpand(defExpandeds, true);
2529
+ $xeTable.setRowExpand(defExpandeds, true);
2561
2530
  }
2562
2531
  }
2563
2532
  };
@@ -2993,7 +2962,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
2993
2962
  mergeCells
2994
2963
  } = props;
2995
2964
  if (mergeCells) {
2996
- tableMethods.setMergeCells(mergeCells);
2965
+ $xeTable.setMergeCells(mergeCells);
2997
2966
  }
2998
2967
  };
2999
2968
  const handleDefaultMergeFooterItems = () => {
@@ -3001,7 +2970,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
3001
2970
  mergeFooterItems
3002
2971
  } = props;
3003
2972
  if (mergeFooterItems) {
3004
- tableMethods.setMergeFooterItems(mergeFooterItems);
2973
+ $xeTable.setMergeFooterItems(mergeFooterItems);
3005
2974
  }
3006
2975
  };
3007
2976
  // 计算可视渲染相关数据
@@ -3105,7 +3074,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
3105
3074
  treeConfig
3106
3075
  } = props;
3107
3076
  const {
3108
- editStore,
3109
3077
  scrollYLoad: oldScrollYLoad
3110
3078
  } = reactData;
3111
3079
  const {
@@ -3164,8 +3132,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
3164
3132
  scrollXStore.endIndex = 1;
3165
3133
  reactData.isRowLoading = true;
3166
3134
  reactData.scrollVMLoading = false;
3167
- editStore.insertMaps = {};
3168
- editStore.removeMaps = {};
3135
+ internalData.insertRowMaps = {};
3136
+ internalData.removeRowMaps = {};
3169
3137
  const sYLoad = updateScrollYStatus(fullData);
3170
3138
  reactData.isDragColMove = false;
3171
3139
  reactData.isDragRowMove = false;
@@ -3187,10 +3155,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
3187
3155
  $xeTable.clearCellAreas();
3188
3156
  $xeTable.clearCopyCellArea();
3189
3157
  }
3190
- tableMethods.clearMergeCells();
3191
- tableMethods.clearMergeFooterItems();
3192
- tablePrivateMethods.handleTableData(true);
3193
- tableMethods.updateFooter();
3158
+ $xeTable.clearMergeCells();
3159
+ $xeTable.clearMergeFooterItems();
3160
+ $xeTable.handleTableData(true);
3161
+ $xeTable.updateFooter();
3194
3162
  return (0, _vue.nextTick)().then(() => {
3195
3163
  updateHeight();
3196
3164
  updateStyle();
@@ -3221,18 +3189,18 @@ var _default = exports.default = (0, _vue.defineComponent)({
3221
3189
  }
3222
3190
  }
3223
3191
  handleReserveStatus();
3224
- tablePrivateMethods.checkSelectionStatus();
3192
+ $xeTable.checkSelectionStatus();
3225
3193
  return new Promise(resolve => {
3226
- (0, _vue.nextTick)().then(() => tableMethods.recalculate()).then(() => {
3194
+ (0, _vue.nextTick)().then(() => $xeTable.recalculate()).then(() => {
3227
3195
  let targetScrollLeft = lastScrollLeft;
3228
3196
  let targetScrollTop = lastScrollTop;
3229
- const sXOpts = computeSXOpts.value;
3230
- const sYOpts = computeSYOpts.value;
3197
+ const virtualXOpts = computeVirtualXOpts.value;
3198
+ const virtualYOpts = computeVirtualYOpts.value;
3231
3199
  // 是否在更新数据之后自动滚动重置滚动条
3232
- if (sXOpts.scrollToLeftOnChange) {
3200
+ if (virtualXOpts.scrollToLeftOnChange) {
3233
3201
  targetScrollLeft = 0;
3234
3202
  }
3235
- if (sYOpts.scrollToTopOnChange) {
3203
+ if (virtualYOpts.scrollToTopOnChange) {
3236
3204
  targetScrollTop = 0;
3237
3205
  }
3238
3206
  reactData.isRowLoading = false;
@@ -3265,7 +3233,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
3265
3233
  handleDefaultTreeExpand();
3266
3234
  handleDefaultMergeCells();
3267
3235
  handleDefaultMergeFooterItems();
3268
- (0, _vue.nextTick)(() => setTimeout(() => tableMethods.recalculate()));
3236
+ (0, _vue.nextTick)(() => setTimeout(() => $xeTable.recalculate()));
3269
3237
  };
3270
3238
  /**
3271
3239
  * 处理初始化的默认行为
@@ -3357,7 +3325,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
3357
3325
  isGroup,
3358
3326
  columnStore
3359
3327
  } = reactData;
3360
- const sXOpts = computeSXOpts.value;
3328
+ const virtualXOpts = computeVirtualXOpts.value;
3361
3329
  const {
3362
3330
  collectColumn,
3363
3331
  tableFullColumn,
@@ -3418,7 +3386,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
3418
3386
  }
3419
3387
  const visibleColumn = leftList.concat(centerList).concat(rightList);
3420
3388
  // 如果gt为0,则总是启用
3421
- const scrollXLoad = !!sXOpts.enabled && sXOpts.gt > -1 && (sXOpts.gt === 0 || sXOpts.gt < tableFullColumn.length);
3389
+ const scrollXLoad = !!virtualXOpts.enabled && virtualXOpts.gt > -1 && (virtualXOpts.gt === 0 || virtualXOpts.gt < tableFullColumn.length);
3422
3390
  reactData.hasFixedColumn = leftList.length > 0 || rightList.length > 0;
3423
3391
  Object.assign(columnStore, {
3424
3392
  leftList,
@@ -3541,14 +3509,14 @@ var _default = exports.default = (0, _vue.defineComponent)({
3541
3509
  const {
3542
3510
  treeConfig
3543
3511
  } = props;
3544
- const sYOpts = computeSYOpts.value;
3512
+ const virtualYOpts = computeVirtualYOpts.value;
3545
3513
  const treeOpts = computeTreeOpts.value;
3546
3514
  const {
3547
3515
  transform
3548
3516
  } = treeOpts;
3549
3517
  const allList = fullData || internalData.tableFullData;
3550
3518
  // 如果gt为0,则总是启用
3551
- const scrollYLoad = (transform || !treeConfig) && !!sYOpts.enabled && sYOpts.gt > -1 && (sYOpts.gt === 0 || sYOpts.gt < allList.length);
3519
+ const scrollYLoad = (transform || !treeConfig) && !!virtualYOpts.enabled && virtualYOpts.gt > -1 && (virtualYOpts.gt === 0 || virtualYOpts.gt < allList.length);
3552
3520
  reactData.scrollYLoad = scrollYLoad;
3553
3521
  return scrollYLoad;
3554
3522
  };
@@ -4376,18 +4344,15 @@ var _default = exports.default = (0, _vue.defineComponent)({
4376
4344
  keepSource,
4377
4345
  treeConfig
4378
4346
  } = props;
4379
- const {
4380
- editStore
4381
- } = reactData;
4382
4347
  const {
4383
4348
  fullAllDataRowIdData,
4384
4349
  fullDataRowIdData,
4385
4350
  tableSourceData,
4386
4351
  sourceDataRowIdData,
4387
4352
  tableFullData,
4388
- afterFullData
4353
+ afterFullData,
4354
+ removeRowMaps
4389
4355
  } = internalData;
4390
- const removeTempMaps = Object.assign({}, editStore.removeMaps);
4391
4356
  const treeOpts = computeTreeOpts.value;
4392
4357
  const {
4393
4358
  transform
@@ -4425,7 +4390,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
4425
4390
  _xeUtils.default.destructuring(row, _xeUtils.default.clone(oRow, true));
4426
4391
  }
4427
4392
  if (!fullDataRowIdData[rowid] && $xeTable.isRemoveByRow(row)) {
4428
- delete removeTempMaps[rowid];
4393
+ if (removeRowMaps[rowid]) {
4394
+ delete removeRowMaps[rowid];
4395
+ }
4429
4396
  tableFullData.unshift(row);
4430
4397
  afterFullData.unshift(row);
4431
4398
  reDelFlag = true;
@@ -4437,7 +4404,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
4437
4404
  }
4438
4405
  if (rows) {
4439
4406
  if (reDelFlag) {
4440
- editStore.removeMaps = removeTempMaps;
4407
+ reactData.removeRowFlag++;
4441
4408
  $xeTable.updateFooter();
4442
4409
  $xeTable.cacheRowMap(false);
4443
4410
  $xeTable.handleTableData(treeConfig && transform);
@@ -4581,28 +4548,19 @@ var _default = exports.default = (0, _vue.defineComponent)({
4581
4548
  * @param {Row} row 行对象
4582
4549
  */
4583
4550
  isInsertByRow(row) {
4584
- const {
4585
- editStore
4586
- } = reactData;
4587
4551
  const rowid = (0, _util.getRowid)($xeTable, row);
4588
- return !!editStore.insertMaps[rowid];
4552
+ return !!reactData.insertRowFlag && !!internalData.insertRowMaps[rowid];
4589
4553
  },
4590
4554
  isRemoveByRow(row) {
4591
- const {
4592
- editStore
4593
- } = reactData;
4594
4555
  const rowid = (0, _util.getRowid)($xeTable, row);
4595
- return !!editStore.removeMaps[rowid];
4556
+ return !!reactData.removeRowFlag && !!internalData.removeRowMaps[rowid];
4596
4557
  },
4597
4558
  /**
4598
4559
  * 删除所有新增的临时数据
4599
4560
  * @returns
4600
4561
  */
4601
4562
  removeInsertRow() {
4602
- const {
4603
- editStore
4604
- } = reactData;
4605
- editStore.insertMaps = {};
4563
+ internalData.insertRowMaps = {};
4606
4564
  return $xeTable.remove($xeTable.getInsertRecords());
4607
4565
  },
4608
4566
  /**
@@ -4647,8 +4605,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
4647
4605
  * @param {Number} columnIndex 索引
4648
4606
  */
4649
4607
  getColumns(columnIndex) {
4650
- const columns = internalData.visibleColumn;
4651
- return _xeUtils.default.isUndefined(columnIndex) ? columns.slice(0) : columns[columnIndex];
4608
+ const {
4609
+ visibleColumn
4610
+ } = internalData;
4611
+ return _xeUtils.default.isUndefined(columnIndex) ? visibleColumn.slice(0) : visibleColumn[columnIndex];
4652
4612
  },
4653
4613
  /**
4654
4614
  * 根据列获取列的唯一主键
@@ -4662,7 +4622,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
4662
4622
  * @param {String} colid 列主键
4663
4623
  */
4664
4624
  getColumnById(colid) {
4665
- const fullColumnIdData = internalData.fullColumnIdData;
4625
+ const {
4626
+ fullColumnIdData
4627
+ } = internalData;
4666
4628
  return colid && fullColumnIdData[colid] ? fullColumnIdData[colid].column : null;
4667
4629
  },
4668
4630
  /**
@@ -4674,7 +4636,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
4674
4636
  return field && fullColumnFieldData[field] ? fullColumnFieldData[field].column : null;
4675
4637
  },
4676
4638
  getParentColumn(fieldOrColumn) {
4677
- const fullColumnIdData = internalData.fullColumnIdData;
4639
+ const {
4640
+ fullColumnIdData
4641
+ } = internalData;
4678
4642
  const column = (0, _util.handleFieldOrColumn)($xeTable, fieldOrColumn);
4679
4643
  return column && column.parentId && fullColumnIdData[column.parentId] ? fullColumnIdData[column.parentId].column : null;
4680
4644
  },
@@ -7730,7 +7694,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
7730
7694
  * @param {Event} evnt 事件
7731
7695
  * @param {Row} row 行对象
7732
7696
  */
7733
- const handleTooltip = (evnt, tdEl, overflowElem, params) => {
7697
+ const handleTooltip = (evnt, tdEl, overflowElem, tipElem, params) => {
7734
7698
  const tipOverEl = overflowElem || tdEl;
7735
7699
  if (!tipOverEl) {
7736
7700
  return (0, _vue.nextTick)();
@@ -7751,7 +7715,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
7751
7715
  const customContent = contentMethod ? contentMethod(params) : null;
7752
7716
  const useCustom = contentMethod && !_xeUtils.default.eqNull(customContent);
7753
7717
  const content = useCustom ? customContent : _xeUtils.default.toString(column.type === 'html' ? tipOverEl.innerText : tipOverEl.textContent).trim();
7754
- if (content && (showAll || useCustom || tipOverEl.scrollWidth > tipOverEl.clientWidth)) {
7718
+ const isOver = tipOverEl.scrollWidth > tipOverEl.clientWidth;
7719
+ if (content && (showAll || useCustom || isOver)) {
7755
7720
  Object.assign(tooltipStore, {
7756
7721
  row,
7757
7722
  column,
@@ -7761,7 +7726,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
7761
7726
  (0, _vue.nextTick)(() => {
7762
7727
  const $tooltip = refTooltip.value;
7763
7728
  if ($tooltip && $tooltip.open) {
7764
- $tooltip.open(tipOverEl, (0, _utils.formatText)(content));
7729
+ $tooltip.open(isOver ? tipOverEl : tipElem, (0, _utils.formatText)(content));
7765
7730
  }
7766
7731
  });
7767
7732
  }
@@ -8887,7 +8852,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
8887
8852
  return;
8888
8853
  }
8889
8854
  if (tooltipStore.column !== column || !tooltipStore.visible) {
8890
- handleTooltip(evnt, thEl, thEl.querySelector('.vxe-cell--title') || cellEl, params);
8855
+ handleTooltip(evnt, thEl, thEl.querySelector('.vxe-cell--wrapper'), thEl.querySelector('.vxe-cell--title') || cellEl, params);
8891
8856
  }
8892
8857
  },
8893
8858
  /**
@@ -8925,7 +8890,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
8925
8890
  }
8926
8891
  }
8927
8892
  if (tooltipStore.column !== column || tooltipStore.row !== row || !tooltipStore.visible) {
8928
- handleTooltip(evnt, tdEl, tdEl.querySelector('.vxe-cell--label') || tdEl.querySelector('.vxe-cell--wrapper'), params);
8893
+ handleTooltip(evnt, tdEl, tdEl.querySelector('.vxe-cell--wrapper'), tdEl.querySelector('.vxe-cell--label') || tdEl.querySelector('.vxe-cell--wrapper'), params);
8929
8894
  }
8930
8895
  },
8931
8896
  /**
@@ -8941,7 +8906,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
8941
8906
  const tdEl = evnt.currentTarget;
8942
8907
  handleTargetEnterEvent(tooltipStore.column !== column || !!tooltipStore.row);
8943
8908
  if (tooltipStore.column !== column || !tooltipStore.visible) {
8944
- handleTooltip(evnt, tdEl, tdEl.querySelector('.vxe-cell--label') || tdEl.querySelector('.vxe-cell--wrapper'), params);
8909
+ handleTooltip(evnt, tdEl, tdEl.querySelector('.vxe-cell--wrapper'), tdEl.querySelector('.vxe-cell--label') || tdEl.querySelector('.vxe-cell--wrapper'), params);
8945
8910
  }
8946
8911
  },
8947
8912
  handleTargetLeaveEvent() {
@@ -10356,8 +10321,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
10356
10321
  * 横向 X 可视渲染事件处理
10357
10322
  */
10358
10323
  triggerScrollXEvent() {
10359
- const sXOpts = computeSXOpts.value;
10360
- if (sXOpts.immediate) {
10324
+ const virtualXOpts = computeVirtualXOpts.value;
10325
+ if (virtualXOpts.immediate) {
10361
10326
  loadScrollXData();
10362
10327
  } else {
10363
10328
  lazyScrollXData();
@@ -10367,8 +10332,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
10367
10332
  * 纵向 Y 可视渲染事件处理
10368
10333
  */
10369
10334
  triggerScrollYEvent() {
10370
- const sYOpts = computeSYOpts.value;
10371
- if (sYOpts.immediate) {
10335
+ const virtualYOpts = computeVirtualYOpts.value;
10336
+ if (virtualYOpts.immediate) {
10372
10337
  loadScrollYData();
10373
10338
  } else {
10374
10339
  lazyScrollYData();
@@ -10606,8 +10571,8 @@ var _default = exports.default = (0, _vue.defineComponent)({
10606
10571
  return;
10607
10572
  }
10608
10573
  const wheelSpeed = getWheelSpeed(reactData.lastScrollTime);
10609
- const deltaTop = Math.ceil((shiftKey ? deltaX : deltaY) * wheelSpeed);
10610
- const deltaLeft = Math.ceil((shiftKey ? deltaY : deltaX) * wheelSpeed);
10574
+ const deltaTop = shiftKey ? 0 : Math.ceil(deltaY * wheelSpeed);
10575
+ const deltaLeft = shiftKey ? Math.ceil((shiftKey ? deltaY || deltaX : deltaX) * wheelSpeed) : 0;
10611
10576
  const isTopWheel = deltaTop < 0;
10612
10577
  const currScrollTop = bodyScrollElem.scrollTop;
10613
10578
  // 如果滚动位置已经是顶部或底部,则不需要触发
@@ -10626,6 +10591,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
10626
10591
  evnt.preventDefault();
10627
10592
  internalData.inWheelScroll = true;
10628
10593
  wheelScrollLeftTo(scrollLeft, offsetLeft => {
10594
+ internalData.inWheelScroll = true;
10629
10595
  const currLeftNum = offsetLeft;
10630
10596
  (0, _dom.setScrollLeft)(xHandleEl, currLeftNum);
10631
10597
  (0, _dom.setScrollLeft)(bodyScrollElem, currLeftNum);
@@ -10642,9 +10608,10 @@ var _default = exports.default = (0, _vue.defineComponent)({
10642
10608
  }
10643
10609
  if (isRollY) {
10644
10610
  evnt.preventDefault();
10611
+ internalData.inWheelScroll = true;
10645
10612
  wheelScrollTopTo(scrollTop - currScrollTop, offsetTop => {
10646
- const currTopNum = bodyScrollElem.scrollTop + offsetTop;
10647
10613
  internalData.inWheelScroll = true;
10614
+ const currTopNum = bodyScrollElem.scrollTop + offsetTop;
10648
10615
  (0, _dom.setScrollTop)(yHandleEl, currTopNum);
10649
10616
  (0, _dom.setScrollTop)(bodyScrollElem, currTopNum);
10650
10617
  (0, _dom.setScrollTop)(leftScrollElem, currTopNum);
@@ -11746,6 +11713,9 @@ var _default = exports.default = (0, _vue.defineComponent)({
11746
11713
  (0, _vue.watch)(computeScrollbarYToLeft, () => {
11747
11714
  reLayoutFlag.value++;
11748
11715
  });
11716
+ (0, _vue.watch)(() => _ui.VxeUI.getLanguage(), () => {
11717
+ reLayoutFlag.value++;
11718
+ });
11749
11719
  (0, _vue.watch)(reLayoutFlag, () => {
11750
11720
  (0, _vue.nextTick)(() => tableMethods.recalculate(true));
11751
11721
  });
@@ -11849,7 +11819,6 @@ var _default = exports.default = (0, _vue.defineComponent)({
11849
11819
  scrollXStore,
11850
11820
  scrollYStore
11851
11821
  } = internalData;
11852
- const sYOpts = computeSYOpts.value;
11853
11822
  const editOpts = computeEditOpts.value;
11854
11823
  const treeOpts = computeTreeOpts.value;
11855
11824
  const radioOpts = computeRadioOpts.value;
@@ -11975,8 +11944,7 @@ var _default = exports.default = (0, _vue.defineComponent)({
11975
11944
  Object.assign(scrollYStore, {
11976
11945
  startIndex: 0,
11977
11946
  endIndex: 0,
11978
- visibleSize: 0,
11979
- adaptive: sYOpts.adaptive !== false
11947
+ visibleSize: 0
11980
11948
  });
11981
11949
  Object.assign(scrollXStore, {
11982
11950
  startIndex: 0,