vxe-table 4.8.7 → 4.8.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/es/style.css +1 -1
  2. package/es/style.min.css +1 -1
  3. package/es/table/src/body.js +4 -8
  4. package/es/table/src/cell.js +7 -3
  5. package/es/table/src/footer.js +2 -4
  6. package/es/table/src/table.js +191 -72
  7. package/es/ui/index.js +1 -1
  8. package/es/ui/src/log.js +1 -1
  9. package/lib/index.umd.js +204 -85
  10. package/lib/index.umd.min.js +1 -1
  11. package/lib/style.css +1 -1
  12. package/lib/style.min.css +1 -1
  13. package/lib/table/src/body.js +4 -8
  14. package/lib/table/src/body.min.js +1 -1
  15. package/lib/table/src/cell.js +10 -3
  16. package/lib/table/src/cell.min.js +1 -1
  17. package/lib/table/src/footer.js +2 -4
  18. package/lib/table/src/footer.min.js +1 -1
  19. package/lib/table/src/table.js +188 -70
  20. package/lib/table/src/table.min.js +1 -1
  21. package/lib/ui/index.js +1 -1
  22. package/lib/ui/index.min.js +1 -1
  23. package/lib/ui/src/log.js +1 -1
  24. package/lib/ui/src/log.min.js +1 -1
  25. package/package.json +2 -2
  26. package/packages/table/src/body.ts +4 -8
  27. package/packages/table/src/cell.ts +9 -5
  28. package/packages/table/src/footer.ts +2 -4
  29. package/packages/table/src/table.ts +189 -70
  30. /package/es/{iconfont.1731032736115.ttf → iconfont.1731144197614.ttf} +0 -0
  31. /package/es/{iconfont.1731032736115.woff → iconfont.1731144197614.woff} +0 -0
  32. /package/es/{iconfont.1731032736115.woff2 → iconfont.1731144197614.woff2} +0 -0
  33. /package/lib/{iconfont.1731032736115.ttf → iconfont.1731144197614.ttf} +0 -0
  34. /package/lib/{iconfont.1731032736115.woff → iconfont.1731144197614.woff} +0 -0
  35. /package/lib/{iconfont.1731032736115.woff2 → iconfont.1731144197614.woff2} +0 -0
@@ -2851,11 +2851,9 @@ export default defineComponent({
2851
2851
  reactData.lastScrollTime = Date.now();
2852
2852
  handleSyncScrollX(scrollLeft);
2853
2853
  $xeTable.triggerScrollXEvent(evnt);
2854
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, {
2854
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
2855
2855
  type: 'table',
2856
- fixed: '',
2857
- scrollTop,
2858
- scrollLeft
2856
+ fixed: ''
2859
2857
  });
2860
2858
  };
2861
2859
  const debounceScrollYCalculate = XEUtils.debounce(function () {
@@ -2881,11 +2879,9 @@ export default defineComponent({
2881
2879
  reactData.lastScrollTime = Date.now();
2882
2880
  handleSyncScrollY(scrollTop);
2883
2881
  $xeTable.triggerScrollYEvent(evnt);
2884
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, {
2882
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
2885
2883
  type: 'table',
2886
- fixed: '',
2887
- scrollTop,
2888
- scrollLeft
2884
+ fixed: ''
2889
2885
  });
2890
2886
  };
2891
2887
  let keyCtxTimeout;
@@ -3545,25 +3541,35 @@ export default defineComponent({
3545
3541
  * 设置为固定列
3546
3542
  */
3547
3543
  setColumnFixed(fieldOrColumn, fixed) {
3548
- const column = handleFieldOrColumn($xeTable, fieldOrColumn);
3549
- const targetColumn = getRootColumn($xeTable, column);
3550
- const isMaxFixedColumn = computeIsMaxFixedColumn.value;
3544
+ let status = false;
3545
+ const cols = XEUtils.isArray(fieldOrColumn) ? fieldOrColumn : [fieldOrColumn];
3551
3546
  const columnOpts = computeColumnOpts.value;
3552
- if (targetColumn && targetColumn.fixed !== fixed) {
3553
- // 是否超过最大固定列数量
3554
- if (!targetColumn.fixed && isMaxFixedColumn) {
3555
- if (VxeUI.modal) {
3556
- VxeUI.modal.message({
3557
- status: 'error',
3558
- content: getI18n('vxe.table.maxFixedCol', [columnOpts.maxFixedSize])
3559
- });
3547
+ const isMaxFixedColumn = computeIsMaxFixedColumn.value;
3548
+ for (let i = 0; i < cols.length; i++) {
3549
+ const item = cols[i];
3550
+ const column = handleFieldOrColumn($xeTable, item);
3551
+ const targetColumn = getRootColumn($xeTable, column);
3552
+ if (targetColumn && targetColumn.fixed !== fixed) {
3553
+ // 是否超过最大固定列数量
3554
+ if (!targetColumn.fixed && isMaxFixedColumn) {
3555
+ if (VxeUI.modal) {
3556
+ VxeUI.modal.message({
3557
+ status: 'error',
3558
+ content: getI18n('vxe.table.maxFixedCol', [columnOpts.maxFixedSize])
3559
+ });
3560
+ }
3561
+ return nextTick();
3562
+ }
3563
+ XEUtils.eachTree([targetColumn], (column) => {
3564
+ column.fixed = fixed;
3565
+ });
3566
+ tablePrivateMethods.saveCustomStore('update:fixed');
3567
+ if (!status) {
3568
+ status = true;
3560
3569
  }
3561
- return nextTick();
3562
3570
  }
3563
- XEUtils.eachTree([targetColumn], (column) => {
3564
- column.fixed = fixed;
3565
- });
3566
- tablePrivateMethods.saveCustomStore('update:fixed');
3571
+ }
3572
+ if (status) {
3567
3573
  return tableMethods.refreshColumn();
3568
3574
  }
3569
3575
  return nextTick();
@@ -3572,13 +3578,22 @@ export default defineComponent({
3572
3578
  * 取消指定固定列
3573
3579
  */
3574
3580
  clearColumnFixed(fieldOrColumn) {
3575
- const column = handleFieldOrColumn($xeTable, fieldOrColumn);
3576
- const targetColumn = getRootColumn($xeTable, column);
3577
- if (targetColumn && targetColumn.fixed) {
3578
- XEUtils.eachTree([targetColumn], (column) => {
3579
- column.fixed = null;
3580
- });
3581
- tablePrivateMethods.saveCustomStore('update:fixed');
3581
+ let status = false;
3582
+ const cols = XEUtils.isArray(fieldOrColumn) ? fieldOrColumn : [fieldOrColumn];
3583
+ cols.forEach(item => {
3584
+ const column = handleFieldOrColumn($xeTable, item);
3585
+ const targetColumn = getRootColumn($xeTable, column);
3586
+ if (targetColumn && targetColumn.fixed) {
3587
+ XEUtils.eachTree([targetColumn], (column) => {
3588
+ column.fixed = null;
3589
+ });
3590
+ tablePrivateMethods.saveCustomStore('update:fixed');
3591
+ if (!status) {
3592
+ status = true;
3593
+ }
3594
+ }
3595
+ });
3596
+ if (status) {
3582
3597
  return tableMethods.refreshColumn();
3583
3598
  }
3584
3599
  return nextTick();
@@ -3587,9 +3602,18 @@ export default defineComponent({
3587
3602
  * 隐藏指定列
3588
3603
  */
3589
3604
  hideColumn(fieldOrColumn) {
3590
- const column = handleFieldOrColumn($xeTable, fieldOrColumn);
3591
- if (column && column.visible) {
3592
- column.visible = false;
3605
+ let status = false;
3606
+ const cols = XEUtils.isArray(fieldOrColumn) ? fieldOrColumn : [fieldOrColumn];
3607
+ cols.forEach(item => {
3608
+ const column = handleFieldOrColumn($xeTable, item);
3609
+ if (column && column.visible) {
3610
+ column.visible = false;
3611
+ if (!status) {
3612
+ status = true;
3613
+ }
3614
+ }
3615
+ });
3616
+ if (status) {
3593
3617
  return tablePrivateMethods.handleCustom();
3594
3618
  }
3595
3619
  return nextTick();
@@ -3598,25 +3622,43 @@ export default defineComponent({
3598
3622
  * 显示指定列
3599
3623
  */
3600
3624
  showColumn(fieldOrColumn) {
3601
- const column = handleFieldOrColumn($xeTable, fieldOrColumn);
3602
- if (column && !column.visible) {
3603
- column.visible = true;
3625
+ let status = false;
3626
+ const cols = XEUtils.isArray(fieldOrColumn) ? fieldOrColumn : [fieldOrColumn];
3627
+ cols.forEach(item => {
3628
+ const column = handleFieldOrColumn($xeTable, item);
3629
+ if (column && !column.visible) {
3630
+ column.visible = true;
3631
+ if (!status) {
3632
+ status = true;
3633
+ }
3634
+ }
3635
+ });
3636
+ if (status) {
3604
3637
  return tablePrivateMethods.handleCustom();
3605
3638
  }
3606
3639
  return nextTick();
3607
3640
  },
3608
3641
  setColumnWidth(fieldOrColumn, width) {
3609
- const column = handleFieldOrColumn($xeTable, fieldOrColumn);
3610
- if (column) {
3611
- const colWidth = XEUtils.toInteger(width);
3612
- let rdWidth = colWidth;
3613
- if (isScale(width)) {
3614
- const tableBody = refTableBody.value;
3615
- const bodyElem = tableBody ? tableBody.$el : null;
3616
- const bodyWidth = bodyElem ? bodyElem.clientWidth - 1 : 0;
3617
- rdWidth = Math.floor(colWidth * bodyWidth);
3618
- }
3619
- column.resizeWidth = rdWidth;
3642
+ let status = false;
3643
+ const cols = XEUtils.isArray(fieldOrColumn) ? fieldOrColumn : [fieldOrColumn];
3644
+ cols.forEach(item => {
3645
+ const column = handleFieldOrColumn($xeTable, item);
3646
+ if (column) {
3647
+ const colWidth = XEUtils.toInteger(width);
3648
+ let rdWidth = colWidth;
3649
+ if (isScale(width)) {
3650
+ const tableBody = refTableBody.value;
3651
+ const bodyElem = tableBody ? tableBody.$el : null;
3652
+ const bodyWidth = bodyElem ? bodyElem.clientWidth - 1 : 0;
3653
+ rdWidth = Math.floor(colWidth * bodyWidth);
3654
+ }
3655
+ column.resizeWidth = rdWidth;
3656
+ if (!status) {
3657
+ status = true;
3658
+ }
3659
+ }
3660
+ });
3661
+ if (status) {
3620
3662
  return tableMethods.refreshColumn();
3621
3663
  }
3622
3664
  return nextTick();
@@ -4584,16 +4626,36 @@ export default defineComponent({
4584
4626
  */
4585
4627
  scrollTo(scrollLeft, scrollTop) {
4586
4628
  const tableBody = refTableBody.value;
4629
+ const tableHeader = refTableHeader.value;
4587
4630
  const tableFooter = refTableFooter.value;
4631
+ const leftBody = refTableLeftBody.value;
4588
4632
  const rightBody = refTableRightBody.value;
4589
4633
  const tableBodyElem = tableBody ? tableBody.$el : null;
4634
+ const leftBodyElem = leftBody ? leftBody.$el : null;
4590
4635
  const rightBodyElem = rightBody ? rightBody.$el : null;
4636
+ const tableHeaderElem = tableHeader ? tableHeader.$el : null;
4591
4637
  const tableFooterElem = tableFooter ? tableFooter.$el : null;
4592
4638
  if (XEUtils.isNumber(scrollLeft)) {
4593
- setScrollLeft(tableFooterElem || tableBodyElem, scrollLeft);
4639
+ const xHandleEl = refScrollXHandleElem.value;
4640
+ if (xHandleEl) {
4641
+ setScrollLeft(xHandleEl, scrollLeft);
4642
+ }
4643
+ else {
4644
+ setScrollLeft(tableBodyElem, scrollLeft);
4645
+ setScrollLeft(tableHeaderElem, scrollLeft);
4646
+ setScrollLeft(tableFooterElem, scrollLeft);
4647
+ }
4594
4648
  }
4595
4649
  if (XEUtils.isNumber(scrollTop)) {
4596
- setScrollTop(rightBodyElem || tableBodyElem, scrollTop);
4650
+ const yHandleEl = refScrollYHandleElem.value;
4651
+ if (yHandleEl) {
4652
+ setScrollTop(yHandleEl, scrollTop);
4653
+ }
4654
+ else {
4655
+ setScrollTop(tableBodyElem, scrollTop);
4656
+ setScrollTop(leftBodyElem, scrollTop);
4657
+ setScrollTop(rightBodyElem, scrollTop);
4658
+ }
4597
4659
  }
4598
4660
  if (reactData.scrollXLoad || reactData.scrollYLoad) {
4599
4661
  return new Promise(resolve => {
@@ -5470,6 +5532,16 @@ export default defineComponent({
5470
5532
  });
5471
5533
  }
5472
5534
  };
5535
+ const updateRowDropOrigin = (row) => {
5536
+ const el = refElem.value;
5537
+ if (el) {
5538
+ const clss = 'row--drag-origin';
5539
+ const rowid = getRowid($xeTable, row);
5540
+ XEUtils.arrayEach(el.querySelectorAll(`[rowid="${rowid}"]`), (elem) => {
5541
+ addClass(elem, clss);
5542
+ });
5543
+ }
5544
+ };
5473
5545
  const clearRowDropTarget = () => {
5474
5546
  const el = refElem.value;
5475
5547
  if (el) {
@@ -5479,6 +5551,17 @@ export default defineComponent({
5479
5551
  });
5480
5552
  }
5481
5553
  };
5554
+ const updateRowDropTarget = (row, dragPos) => {
5555
+ const el = refElem.value;
5556
+ if (el) {
5557
+ const clss = 'row--drag-active-target';
5558
+ const rowid = getRowid($xeTable, row);
5559
+ XEUtils.arrayEach(el.querySelectorAll(`[rowid="${rowid}"]`), (elem) => {
5560
+ addClass(elem, clss);
5561
+ elem.setAttribute('drag-pos', dragPos);
5562
+ });
5563
+ }
5564
+ };
5482
5565
  const showRowDropTip = (evnt) => {
5483
5566
  const rdTipEl = refRowDragTipElem.value;
5484
5567
  if (!rdTipEl) {
@@ -6614,7 +6697,7 @@ export default defineComponent({
6614
6697
  const treeOpts = computeTreeOpts.value;
6615
6698
  const { transform } = treeOpts;
6616
6699
  const { dragRow } = reactData;
6617
- const { afterFullData, tableFullData, prevDragRow, prevDragPos } = internalData;
6700
+ const { afterFullData, afterTreeFullData, tableFullData, tableFullTreeData, prevDragRow, prevDragPos } = internalData;
6618
6701
  if (prevDragRow && dragRow) {
6619
6702
  // 判断是否有拖动
6620
6703
  if (prevDragRow !== dragRow) {
@@ -6628,18 +6711,36 @@ export default defineComponent({
6628
6711
  return;
6629
6712
  }
6630
6713
  const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
6631
- // 移出源位置
6632
- const oafIndex = $xeTable.findRowIndexOf(afterFullData, dragRow);
6633
- const otfIndex = $xeTable.findRowIndexOf(tableFullData, dragRow);
6634
- afterFullData.splice(oafIndex, 1);
6635
- tableFullData.splice(otfIndex, 1);
6636
- // 插新位置
6637
- const pafIndex = $xeTable.findRowIndexOf(afterFullData, prevDragRow);
6638
- const ptfIndex = $xeTable.findRowIndexOf(tableFullData, prevDragRow);
6639
- const nafIndex = pafIndex + dragOffsetIndex;
6640
- const ntfIndex = ptfIndex + dragOffsetIndex;
6641
- afterFullData.splice(nafIndex, 0, dragRow);
6642
- tableFullData.splice(ntfIndex, 0, dragRow);
6714
+ let oafIndex = -1;
6715
+ let nafIndex = -1;
6716
+ if (treeConfig) {
6717
+ // 移出源位置
6718
+ oafIndex = $xeTable.findRowIndexOf(afterTreeFullData, dragRow);
6719
+ const otfIndex = $xeTable.findRowIndexOf(tableFullTreeData, dragRow);
6720
+ afterTreeFullData.splice(oafIndex, 1);
6721
+ tableFullTreeData.splice(otfIndex, 1);
6722
+ // 插新位置
6723
+ const pafIndex = $xeTable.findRowIndexOf(afterTreeFullData, prevDragRow);
6724
+ const ptfIndex = $xeTable.findRowIndexOf(tableFullTreeData, prevDragRow);
6725
+ nafIndex = pafIndex + dragOffsetIndex;
6726
+ const ntfIndex = ptfIndex + dragOffsetIndex;
6727
+ afterTreeFullData.splice(nafIndex, 0, dragRow);
6728
+ tableFullTreeData.splice(ntfIndex, 0, dragRow);
6729
+ }
6730
+ else {
6731
+ // 移出源位置
6732
+ oafIndex = $xeTable.findRowIndexOf(afterFullData, dragRow);
6733
+ const otfIndex = $xeTable.findRowIndexOf(tableFullData, dragRow);
6734
+ afterFullData.splice(oafIndex, 1);
6735
+ tableFullData.splice(otfIndex, 1);
6736
+ // 插新位置
6737
+ const pafIndex = $xeTable.findRowIndexOf(afterFullData, prevDragRow);
6738
+ const ptfIndex = $xeTable.findRowIndexOf(tableFullData, prevDragRow);
6739
+ nafIndex = pafIndex + dragOffsetIndex;
6740
+ const ntfIndex = ptfIndex + dragOffsetIndex;
6741
+ afterFullData.splice(nafIndex, 0, dragRow);
6742
+ tableFullData.splice(ntfIndex, 0, dragRow);
6743
+ }
6643
6744
  reactData.isDragRowMove = true;
6644
6745
  $xeTable.cacheRowMap();
6645
6746
  $xeTable.updateScrollYStatus();
@@ -6687,8 +6788,7 @@ export default defineComponent({
6687
6788
  const { dragRow } = reactData;
6688
6789
  const offsetY = evnt.clientY - trEl.getBoundingClientRect().y;
6689
6790
  const dragPos = offsetY < trEl.clientHeight / 2 ? 'top' : 'bottom';
6690
- addClass(trEl, 'row--drag-active-target');
6691
- trEl.setAttribute('drag-pos', dragPos);
6791
+ updateRowDropTarget(row, dragPos);
6692
6792
  internalData.prevDragRow = row;
6693
6793
  internalData.prevDragPos = dragPos;
6694
6794
  dispatchEvent('row-dragover', {
@@ -6718,7 +6818,7 @@ export default defineComponent({
6718
6818
  }
6719
6819
  reactData.dragRow = row;
6720
6820
  trEl.draggable = true;
6721
- addClass(trEl, 'row--drag-origin');
6821
+ updateRowDropOrigin(row);
6722
6822
  showRowDropTip(evnt);
6723
6823
  updateRowDropTipContent(tdEl);
6724
6824
  dispatchEvent('row-dragstart', params, evnt);
@@ -6735,7 +6835,7 @@ export default defineComponent({
6735
6835
  triggerScrollXEvent() {
6736
6836
  loadScrollXData();
6737
6837
  },
6738
- handleScrollEvent(evnt, isRollY, isRollX, params) {
6838
+ handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, params) {
6739
6839
  const { highlightHoverRow } = props;
6740
6840
  const tableBody = refTableBody.value;
6741
6841
  const bodyElem = tableBody ? tableBody.$el : null;
@@ -6751,17 +6851,36 @@ export default defineComponent({
6751
6851
  if (tooltip && tooltip.reactData.visible) {
6752
6852
  tooltip.close();
6753
6853
  }
6754
- if (isRollX) {
6755
- tablePrivateMethods.checkScrolling();
6756
- }
6757
6854
  const bodyHeight = bodyElem ? bodyElem.clientHeight : 0;
6758
6855
  const bodyWidth = bodyElem ? bodyElem.clientWidth : 0;
6759
6856
  const scrollHeight = bodyElem ? bodyElem.scrollHeight : 0;
6760
6857
  const scrollWidth = bodyElem ? bodyElem.scrollWidth : 0;
6761
- const evntParams = Object.assign({ bodyHeight,
6858
+ let isTop = false;
6859
+ let isBottom = false;
6860
+ let isLeft = false;
6861
+ let isRight = false;
6862
+ if (isRollX) {
6863
+ isLeft = scrollLeft <= 0;
6864
+ if (!isTop) {
6865
+ isRight = scrollLeft + bodyWidth >= scrollWidth;
6866
+ }
6867
+ tablePrivateMethods.checkScrolling();
6868
+ }
6869
+ else {
6870
+ isTop = scrollTop <= 0;
6871
+ if (!isTop) {
6872
+ isBottom = scrollTop + bodyHeight >= scrollHeight;
6873
+ }
6874
+ }
6875
+ const evntParams = Object.assign({ scrollTop,
6876
+ scrollLeft,
6877
+ bodyHeight,
6762
6878
  bodyWidth,
6763
6879
  scrollHeight,
6764
- scrollWidth, isX: isRollX, isY: isRollY }, params);
6880
+ scrollWidth, isX: isRollX, isY: isRollY, isTop,
6881
+ isBottom,
6882
+ isLeft,
6883
+ isRight }, params);
6765
6884
  dispatchEvent('scroll', evntParams, evnt);
6766
6885
  },
6767
6886
  /**
package/es/ui/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { VxeUI } from '@vxe-ui/core';
2
2
  import { getFuncText } from './src/utils';
3
- export const version = "4.8.7";
3
+ export const version = "4.8.9";
4
4
  VxeUI.version = version;
5
5
  VxeUI.tableVersion = version;
6
6
  VxeUI.setConfig({
package/es/ui/src/log.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { VxeUI } from '@vxe-ui/core';
2
2
  const { log } = VxeUI;
3
- const version = `table v${"4.8.7"}`;
3
+ const version = `table v${"4.8.9"}`;
4
4
  export const warnLog = log.create('warn', version);
5
5
  export const errLog = log.create('error', version);