vxe-table 4.8.8 → 4.8.10

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.
package/lib/index.umd.js CHANGED
@@ -1998,7 +1998,7 @@ function eqEmptyValue(cellValue) {
1998
1998
  ;// CONCATENATED MODULE: ./packages/ui/index.ts
1999
1999
 
2000
2000
 
2001
- const version = "4.8.8";
2001
+ const version = "4.8.10";
2002
2002
  core_.VxeUI.version = version;
2003
2003
  core_.VxeUI.tableVersion = version;
2004
2004
  core_.VxeUI.setConfig({
@@ -2389,7 +2389,7 @@ var es_array_push = __webpack_require__(4114);
2389
2389
  const {
2390
2390
  log: log_log
2391
2391
  } = core_.VxeUI;
2392
- const log_version = `table v${"4.8.8"}`;
2392
+ const log_version = `table v${"4.8.10"}`;
2393
2393
  const warnLog = log_log.create('warn', log_version);
2394
2394
  const errLog = log_log.create('error', log_version);
2395
2395
  ;// CONCATENATED MODULE: ./packages/table/src/columnInfo.ts
@@ -5366,8 +5366,6 @@ const lineOffsetSizes = {
5366
5366
  if (yHandleEl) {
5367
5367
  yHandleEl.scrollTop = scrollTop;
5368
5368
  } else if (isRollY) {
5369
- tableInternalData.lastScrollTop = scrollTop;
5370
- tableInternalData.lastScrollLeft = scrollLeft;
5371
5369
  if (leftElem && fixedType === 'left') {
5372
5370
  setScrollTop(bodyElem, scrollTop);
5373
5371
  setScrollTop(rightElem, scrollTop);
@@ -5378,25 +5376,19 @@ const lineOffsetSizes = {
5378
5376
  setScrollTop(leftElem, scrollTop);
5379
5377
  setScrollTop(rightElem, scrollTop);
5380
5378
  }
5381
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, {
5379
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
5382
5380
  type: renderType,
5383
- fixed: fixedType,
5384
- scrollTop,
5385
- scrollLeft
5381
+ fixed: fixedType
5386
5382
  });
5387
5383
  }
5388
5384
  if (xHandleEl) {
5389
5385
  xHandleEl.scrollLeft = scrollLeft;
5390
5386
  } else if (isRollX) {
5391
- tableInternalData.lastScrollTop = scrollTop;
5392
- tableInternalData.lastScrollLeft = scrollLeft;
5393
5387
  setScrollLeft(headerElem, scrollLeft);
5394
5388
  setScrollLeft(footerElem, scrollLeft);
5395
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, {
5389
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
5396
5390
  type: renderType,
5397
- fixed: fixedType,
5398
- scrollTop,
5399
- scrollLeft
5391
+ fixed: fixedType
5400
5392
  });
5401
5393
  }
5402
5394
  };
@@ -6182,15 +6174,11 @@ function mergeFooterMethod(mergeFooterList, _rowIndex, _columnIndex) {
6182
6174
  const isRollX = true;
6183
6175
  const isRollY = false;
6184
6176
  const scrollTop = bodyElem.scrollTop;
6185
- tableInternalData.lastScrollLeft = scrollLeft;
6186
- tableReactData.lastScrollTime = Date.now();
6187
6177
  setScrollLeft(headerElem, scrollLeft);
6188
6178
  setScrollLeft(bodyElem, scrollLeft);
6189
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, {
6179
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
6190
6180
  type: footer_renderType,
6191
- fixed: fixedType,
6192
- scrollTop,
6193
- scrollLeft
6181
+ fixed: fixedType
6194
6182
  });
6195
6183
  }
6196
6184
  };
@@ -6704,7 +6692,7 @@ const {
6704
6692
  params: Object
6705
6693
  });
6706
6694
  ;// CONCATENATED MODULE: ./packages/table/src/emits.ts
6707
- /* harmony default export */ var emits = (['update:data', 'keydown-start', 'keydown', 'keydown-end', 'paste', 'copy', 'cut', 'current-change', 'radio-change', 'checkbox-change', 'checkbox-all', 'checkbox-range-start', 'checkbox-range-change', 'checkbox-range-end', 'checkbox-range-select', 'cell-click', 'cell-dblclick', 'cell-menu', 'cell-mouseenter', 'cell-mouseleave', 'cell-selected', 'cell-delete-value', 'cell-backspace-value', 'header-cell-click', 'header-cell-dblclick', 'header-cell-menu', 'footer-cell-click', 'footer-cell-dblclick', 'footer-cell-menu', 'clear-merge', 'sort-change', 'clear-sort', 'filter-change', 'filter-visible', 'clear-filter', 'resizable-change', 'toggle-row-expand', 'toggle-tree-expand', 'menu-click', 'edit-closed', 'row-dragstart', 'row-dragover', 'row-dragend', 'edit-actived', 'edit-activated', 'edit-disabled', 'valid-error', 'scroll', 'custom', 'change-fnr', 'open-fnr', 'show-fnr', 'hide-fnr', 'fnr-change', 'fnr-find', 'fnr-find-all', 'fnr-replace', 'fnr-replace-all', 'cell-area-copy', 'cell-area-cut', 'cell-area-paste', 'cell-area-merge', 'clear-cell-area-selection', 'clear-cell-area-merge', 'header-cell-area-selection', 'cell-area-selection-invalid', 'cell-area-selection-start', 'cell-area-selection-drag', 'cell-area-selection-end', 'cell-area-extension-start', 'cell-area-extension-drag', 'cell-area-extension-end', 'cell-area-selection-all-start', 'cell-area-selection-all-end', 'cell-area-arrows-start', 'cell-area-arrows-end', 'active-cell-change-start', 'active-cell-change-end']);
6695
+ /* harmony default export */ var emits = (['update:data', 'keydown-start', 'keydown', 'keydown-end', 'paste', 'copy', 'cut', 'current-change', 'radio-change', 'checkbox-change', 'checkbox-all', 'checkbox-range-start', 'checkbox-range-change', 'checkbox-range-end', 'checkbox-range-select', 'cell-click', 'cell-dblclick', 'cell-menu', 'cell-mouseenter', 'cell-mouseleave', 'cell-selected', 'cell-delete-value', 'cell-backspace-value', 'header-cell-click', 'header-cell-dblclick', 'header-cell-menu', 'footer-cell-click', 'footer-cell-dblclick', 'footer-cell-menu', 'clear-merge', 'sort-change', 'clear-sort', 'filter-change', 'filter-visible', 'clear-filter', 'resizable-change', 'toggle-row-expand', 'toggle-tree-expand', 'menu-click', 'edit-closed', 'row-dragstart', 'row-dragover', 'row-dragend', 'edit-actived', 'edit-activated', 'edit-disabled', 'valid-error', 'scroll', 'scroll-boundary', 'custom', 'change-fnr', 'open-fnr', 'show-fnr', 'hide-fnr', 'fnr-change', 'fnr-find', 'fnr-find-all', 'fnr-replace', 'fnr-replace-all', 'cell-area-copy', 'cell-area-cut', 'cell-area-paste', 'cell-area-merge', 'clear-cell-area-selection', 'clear-cell-area-merge', 'header-cell-area-selection', 'cell-area-selection-invalid', 'cell-area-selection-start', 'cell-area-selection-drag', 'cell-area-selection-end', 'cell-area-extension-start', 'cell-area-extension-drag', 'cell-area-extension-end', 'cell-area-selection-all-start', 'cell-area-selection-all-end', 'cell-area-arrows-start', 'cell-area-arrows-end', 'active-cell-change-start', 'active-cell-change-end']);
6708
6696
  ;// CONCATENATED MODULE: ./packages/table/module/custom/panel.ts
6709
6697
 
6710
6698
 
@@ -8911,9 +8899,29 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
8911
8899
  const computeSXOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
8912
8900
  return Object.assign({}, table_getConfig().table.scrollX, props.scrollX);
8913
8901
  });
8902
+ const computeScrollXThreshold = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
8903
+ const sXOpts = computeSXOpts.value;
8904
+ const {
8905
+ threshold
8906
+ } = sXOpts;
8907
+ if (threshold) {
8908
+ return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(threshold);
8909
+ }
8910
+ return 0;
8911
+ });
8914
8912
  const computeSYOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
8915
8913
  return Object.assign({}, table_getConfig().table.scrollY, props.scrollY);
8916
8914
  });
8915
+ const computeScrollYThreshold = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
8916
+ const sYOpts = computeSYOpts.value;
8917
+ const {
8918
+ threshold
8919
+ } = sYOpts;
8920
+ if (threshold) {
8921
+ return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(threshold);
8922
+ }
8923
+ return 0;
8924
+ });
8917
8925
  const computeRowHeightMaps = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
8918
8926
  return {
8919
8927
  default: 48,
@@ -11851,9 +11859,6 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
11851
11859
  setScrollLeft(bodyElem, scrollLeft);
11852
11860
  setScrollLeft(headerElem, scrollLeft);
11853
11861
  setScrollLeft(footerElem, scrollLeft);
11854
- setScrollLeft(bodyElem, scrollLeft);
11855
- setScrollLeft(headerElem, scrollLeft);
11856
- setScrollLeft(footerElem, scrollLeft);
11857
11862
  };
11858
11863
  const scrollXEvent = evnt => {
11859
11864
  const wrapperEl = evnt.currentTarget;
@@ -11863,15 +11868,11 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
11863
11868
  } = wrapperEl;
11864
11869
  const isRollX = true;
11865
11870
  const isRollY = false;
11866
- internalData.lastScrollLeft = scrollLeft;
11867
- reactData.lastScrollTime = Date.now();
11868
11871
  handleSyncScrollX(scrollLeft);
11869
11872
  $xeTable.triggerScrollXEvent(evnt);
11870
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, {
11873
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
11871
11874
  type: 'table',
11872
- fixed: '',
11873
- scrollTop,
11874
- scrollLeft
11875
+ fixed: ''
11875
11876
  });
11876
11877
  };
11877
11878
  const debounceScrollYCalculate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().debounce(function () {
@@ -11899,15 +11900,11 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
11899
11900
  } = wrapperEl;
11900
11901
  const isRollX = false;
11901
11902
  const isRollY = true;
11902
- internalData.lastScrollTop = scrollTop;
11903
- reactData.lastScrollTime = Date.now();
11904
11903
  handleSyncScrollY(scrollTop);
11905
11904
  $xeTable.triggerScrollYEvent(evnt);
11906
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, {
11905
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
11907
11906
  type: 'table',
11908
- fixed: '',
11909
- scrollTop,
11910
- scrollLeft
11907
+ fixed: ''
11911
11908
  });
11912
11909
  };
11913
11910
  let keyCtxTimeout;
@@ -12658,25 +12655,35 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
12658
12655
  * 设置为固定列
12659
12656
  */
12660
12657
  setColumnFixed(fieldOrColumn, fixed) {
12661
- const column = handleFieldOrColumn($xeTable, fieldOrColumn);
12662
- const targetColumn = getRootColumn($xeTable, column);
12663
- const isMaxFixedColumn = computeIsMaxFixedColumn.value;
12658
+ let status = false;
12659
+ const cols = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(fieldOrColumn) ? fieldOrColumn : [fieldOrColumn];
12664
12660
  const columnOpts = computeColumnOpts.value;
12665
- if (targetColumn && targetColumn.fixed !== fixed) {
12666
- // 是否超过最大固定列数量
12667
- if (!targetColumn.fixed && isMaxFixedColumn) {
12668
- if (core_.VxeUI.modal) {
12669
- core_.VxeUI.modal.message({
12670
- status: 'error',
12671
- content: table_getI18n('vxe.table.maxFixedCol', [columnOpts.maxFixedSize])
12672
- });
12661
+ const isMaxFixedColumn = computeIsMaxFixedColumn.value;
12662
+ for (let i = 0; i < cols.length; i++) {
12663
+ const item = cols[i];
12664
+ const column = handleFieldOrColumn($xeTable, item);
12665
+ const targetColumn = getRootColumn($xeTable, column);
12666
+ if (targetColumn && targetColumn.fixed !== fixed) {
12667
+ // 是否超过最大固定列数量
12668
+ if (!targetColumn.fixed && isMaxFixedColumn) {
12669
+ if (core_.VxeUI.modal) {
12670
+ core_.VxeUI.modal.message({
12671
+ status: 'error',
12672
+ content: table_getI18n('vxe.table.maxFixedCol', [columnOpts.maxFixedSize])
12673
+ });
12674
+ }
12675
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
12676
+ }
12677
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([targetColumn], column => {
12678
+ column.fixed = fixed;
12679
+ });
12680
+ tablePrivateMethods.saveCustomStore('update:fixed');
12681
+ if (!status) {
12682
+ status = true;
12673
12683
  }
12674
- return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
12675
12684
  }
12676
- external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([targetColumn], column => {
12677
- column.fixed = fixed;
12678
- });
12679
- tablePrivateMethods.saveCustomStore('update:fixed');
12685
+ }
12686
+ if (status) {
12680
12687
  return tableMethods.refreshColumn();
12681
12688
  }
12682
12689
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
@@ -12685,13 +12692,22 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
12685
12692
  * 取消指定固定列
12686
12693
  */
12687
12694
  clearColumnFixed(fieldOrColumn) {
12688
- const column = handleFieldOrColumn($xeTable, fieldOrColumn);
12689
- const targetColumn = getRootColumn($xeTable, column);
12690
- if (targetColumn && targetColumn.fixed) {
12691
- external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([targetColumn], column => {
12692
- column.fixed = null;
12693
- });
12694
- tablePrivateMethods.saveCustomStore('update:fixed');
12695
+ let status = false;
12696
+ const cols = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(fieldOrColumn) ? fieldOrColumn : [fieldOrColumn];
12697
+ cols.forEach(item => {
12698
+ const column = handleFieldOrColumn($xeTable, item);
12699
+ const targetColumn = getRootColumn($xeTable, column);
12700
+ if (targetColumn && targetColumn.fixed) {
12701
+ external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([targetColumn], column => {
12702
+ column.fixed = null;
12703
+ });
12704
+ tablePrivateMethods.saveCustomStore('update:fixed');
12705
+ if (!status) {
12706
+ status = true;
12707
+ }
12708
+ }
12709
+ });
12710
+ if (status) {
12695
12711
  return tableMethods.refreshColumn();
12696
12712
  }
12697
12713
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
@@ -12700,9 +12716,18 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
12700
12716
  * 隐藏指定列
12701
12717
  */
12702
12718
  hideColumn(fieldOrColumn) {
12703
- const column = handleFieldOrColumn($xeTable, fieldOrColumn);
12704
- if (column && column.visible) {
12705
- column.visible = false;
12719
+ let status = false;
12720
+ const cols = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(fieldOrColumn) ? fieldOrColumn : [fieldOrColumn];
12721
+ cols.forEach(item => {
12722
+ const column = handleFieldOrColumn($xeTable, item);
12723
+ if (column && column.visible) {
12724
+ column.visible = false;
12725
+ if (!status) {
12726
+ status = true;
12727
+ }
12728
+ }
12729
+ });
12730
+ if (status) {
12706
12731
  return tablePrivateMethods.handleCustom();
12707
12732
  }
12708
12733
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
@@ -12711,25 +12736,43 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
12711
12736
  * 显示指定列
12712
12737
  */
12713
12738
  showColumn(fieldOrColumn) {
12714
- const column = handleFieldOrColumn($xeTable, fieldOrColumn);
12715
- if (column && !column.visible) {
12716
- column.visible = true;
12739
+ let status = false;
12740
+ const cols = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(fieldOrColumn) ? fieldOrColumn : [fieldOrColumn];
12741
+ cols.forEach(item => {
12742
+ const column = handleFieldOrColumn($xeTable, item);
12743
+ if (column && !column.visible) {
12744
+ column.visible = true;
12745
+ if (!status) {
12746
+ status = true;
12747
+ }
12748
+ }
12749
+ });
12750
+ if (status) {
12717
12751
  return tablePrivateMethods.handleCustom();
12718
12752
  }
12719
12753
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
12720
12754
  },
12721
12755
  setColumnWidth(fieldOrColumn, width) {
12722
- const column = handleFieldOrColumn($xeTable, fieldOrColumn);
12723
- if (column) {
12724
- const colWidth = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toInteger(width);
12725
- let rdWidth = colWidth;
12726
- if (isScale(width)) {
12727
- const tableBody = refTableBody.value;
12728
- const bodyElem = tableBody ? tableBody.$el : null;
12729
- const bodyWidth = bodyElem ? bodyElem.clientWidth - 1 : 0;
12730
- rdWidth = Math.floor(colWidth * bodyWidth);
12756
+ let status = false;
12757
+ const cols = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(fieldOrColumn) ? fieldOrColumn : [fieldOrColumn];
12758
+ cols.forEach(item => {
12759
+ const column = handleFieldOrColumn($xeTable, item);
12760
+ if (column) {
12761
+ const colWidth = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toInteger(width);
12762
+ let rdWidth = colWidth;
12763
+ if (isScale(width)) {
12764
+ const tableBody = refTableBody.value;
12765
+ const bodyElem = tableBody ? tableBody.$el : null;
12766
+ const bodyWidth = bodyElem ? bodyElem.clientWidth - 1 : 0;
12767
+ rdWidth = Math.floor(colWidth * bodyWidth);
12768
+ }
12769
+ column.resizeWidth = rdWidth;
12770
+ if (!status) {
12771
+ status = true;
12772
+ }
12731
12773
  }
12732
- column.resizeWidth = rdWidth;
12774
+ });
12775
+ if (status) {
12733
12776
  return tableMethods.refreshColumn();
12734
12777
  }
12735
12778
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
@@ -13857,16 +13900,34 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
13857
13900
  */
13858
13901
  scrollTo(scrollLeft, scrollTop) {
13859
13902
  const tableBody = refTableBody.value;
13903
+ const tableHeader = refTableHeader.value;
13860
13904
  const tableFooter = refTableFooter.value;
13905
+ const leftBody = refTableLeftBody.value;
13861
13906
  const rightBody = refTableRightBody.value;
13862
13907
  const tableBodyElem = tableBody ? tableBody.$el : null;
13908
+ const leftBodyElem = leftBody ? leftBody.$el : null;
13863
13909
  const rightBodyElem = rightBody ? rightBody.$el : null;
13910
+ const tableHeaderElem = tableHeader ? tableHeader.$el : null;
13864
13911
  const tableFooterElem = tableFooter ? tableFooter.$el : null;
13865
13912
  if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(scrollLeft)) {
13866
- setScrollLeft(tableFooterElem || tableBodyElem, scrollLeft);
13913
+ const xHandleEl = refScrollXHandleElem.value;
13914
+ if (xHandleEl) {
13915
+ setScrollLeft(xHandleEl, scrollLeft);
13916
+ } else {
13917
+ setScrollLeft(tableBodyElem, scrollLeft);
13918
+ setScrollLeft(tableHeaderElem, scrollLeft);
13919
+ setScrollLeft(tableFooterElem, scrollLeft);
13920
+ }
13867
13921
  }
13868
13922
  if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(scrollTop)) {
13869
- setScrollTop(rightBodyElem || tableBodyElem, scrollTop);
13923
+ const yHandleEl = refScrollYHandleElem.value;
13924
+ if (yHandleEl) {
13925
+ setScrollTop(yHandleEl, scrollTop);
13926
+ } else {
13927
+ setScrollTop(tableBodyElem, scrollTop);
13928
+ setScrollTop(leftBodyElem, scrollTop);
13929
+ setScrollTop(rightBodyElem, scrollTop);
13930
+ }
13870
13931
  }
13871
13932
  if (reactData.scrollXLoad || reactData.scrollYLoad) {
13872
13933
  return new Promise(resolve => {
@@ -16379,40 +16440,100 @@ const customStorageKey = 'VXE_CUSTOM_STORE';
16379
16440
  triggerScrollXEvent() {
16380
16441
  loadScrollXData();
16381
16442
  },
16382
- handleScrollEvent(evnt, isRollY, isRollX, params) {
16443
+ handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, params) {
16383
16444
  const {
16384
16445
  highlightHoverRow
16385
16446
  } = props;
16447
+ const {
16448
+ lastScrollLeft,
16449
+ lastScrollTop
16450
+ } = internalData;
16386
16451
  const tableBody = refTableBody.value;
16387
16452
  const bodyElem = tableBody ? tableBody.$el : null;
16388
16453
  const rowOpts = computeRowOpts.value;
16389
16454
  const validTip = refValidTooltip.value;
16390
16455
  const tooltip = refTooltip.value;
16391
- if (rowOpts.isHover || highlightHoverRow) {
16392
- $xeTable.clearHoverRow();
16393
- }
16394
- if (validTip && validTip.reactData.visible) {
16395
- validTip.close();
16396
- }
16397
- if (tooltip && tooltip.reactData.visible) {
16398
- tooltip.close();
16399
- }
16400
- if (isRollX) {
16401
- tablePrivateMethods.checkScrolling();
16402
- }
16403
16456
  const bodyHeight = bodyElem ? bodyElem.clientHeight : 0;
16404
16457
  const bodyWidth = bodyElem ? bodyElem.clientWidth : 0;
16405
16458
  const scrollHeight = bodyElem ? bodyElem.scrollHeight : 0;
16406
16459
  const scrollWidth = bodyElem ? bodyElem.scrollWidth : 0;
16460
+ let isTop = false;
16461
+ let isBottom = false;
16462
+ let isLeft = false;
16463
+ let isRight = false;
16464
+ let direction = '';
16465
+ let isTopBoundary = false;
16466
+ let isBottomBoundary = false;
16467
+ let isLeftBoundary = false;
16468
+ let isRightBoundary = false;
16469
+ if (isRollX) {
16470
+ const xThreshold = computeScrollXThreshold.value;
16471
+ isLeft = scrollLeft <= 0;
16472
+ if (!isLeft) {
16473
+ isRight = scrollLeft + bodyWidth >= scrollWidth;
16474
+ }
16475
+ if (scrollLeft > lastScrollLeft) {
16476
+ direction = 'right';
16477
+ if (scrollLeft + bodyWidth >= scrollWidth - xThreshold) {
16478
+ isRightBoundary = true;
16479
+ }
16480
+ } else {
16481
+ direction = 'left';
16482
+ if (scrollLeft <= xThreshold) {
16483
+ isLeftBoundary = true;
16484
+ }
16485
+ }
16486
+ tablePrivateMethods.checkScrolling();
16487
+ internalData.lastScrollLeft = scrollLeft;
16488
+ reactData.lastScrollTime = Date.now();
16489
+ } else {
16490
+ const yThreshold = computeScrollYThreshold.value;
16491
+ isTop = scrollTop <= 0;
16492
+ if (!isTop) {
16493
+ isBottom = scrollTop + bodyHeight >= scrollHeight;
16494
+ }
16495
+ if (scrollTop > lastScrollTop) {
16496
+ direction = 'bottom';
16497
+ if (scrollTop + bodyHeight >= scrollHeight - yThreshold) {
16498
+ isBottomBoundary = true;
16499
+ }
16500
+ } else {
16501
+ direction = 'top';
16502
+ if (scrollTop <= yThreshold) {
16503
+ isTopBoundary = true;
16504
+ }
16505
+ }
16506
+ internalData.lastScrollTop = scrollTop;
16507
+ reactData.lastScrollTime = Date.now();
16508
+ }
16407
16509
  const evntParams = {
16510
+ scrollTop,
16511
+ scrollLeft,
16408
16512
  bodyHeight,
16409
16513
  bodyWidth,
16410
16514
  scrollHeight,
16411
16515
  scrollWidth,
16412
16516
  isX: isRollX,
16413
16517
  isY: isRollY,
16518
+ isTop,
16519
+ isBottom,
16520
+ isLeft,
16521
+ isRight,
16522
+ direction,
16414
16523
  ...params
16415
16524
  };
16525
+ if (rowOpts.isHover || highlightHoverRow) {
16526
+ $xeTable.clearHoverRow();
16527
+ }
16528
+ if (validTip && validTip.reactData.visible) {
16529
+ validTip.close();
16530
+ }
16531
+ if (tooltip && tooltip.reactData.visible) {
16532
+ tooltip.close();
16533
+ }
16534
+ if (isBottomBoundary || isTopBoundary || isRightBoundary || isLeftBoundary) {
16535
+ dispatchEvent('scroll-boundary', evntParams, evnt);
16536
+ }
16416
16537
  dispatchEvent('scroll', evntParams, evnt);
16417
16538
  },
16418
16539
  /**