vxe-table 4.13.12 → 4.13.14

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 (45) hide show
  1. package/es/index.css +1 -1
  2. package/es/index.min.css +1 -1
  3. package/es/style.css +1 -1
  4. package/es/style.min.css +1 -1
  5. package/es/table/module/menu/panel.js +8 -4
  6. package/es/table/src/cell.js +2 -2
  7. package/es/table/src/table.js +73 -24
  8. package/es/table/style.css +24 -0
  9. package/es/table/style.min.css +1 -1
  10. package/es/ui/index.js +4 -4
  11. package/es/ui/src/log.js +1 -1
  12. package/es/vxe-table/style.css +24 -0
  13. package/es/vxe-table/style.min.css +1 -1
  14. package/lib/index.css +1 -1
  15. package/lib/index.min.css +1 -1
  16. package/lib/index.umd.js +24 -20
  17. package/lib/index.umd.min.js +1 -1
  18. package/lib/style.css +1 -1
  19. package/lib/style.min.css +1 -1
  20. package/lib/table/module/menu/panel.js +8 -4
  21. package/lib/table/module/menu/panel.min.js +1 -1
  22. package/lib/table/src/cell.js +2 -2
  23. package/lib/table/src/cell.min.js +1 -1
  24. package/lib/table/src/table.js +9 -9
  25. package/lib/table/src/table.min.js +1 -1
  26. package/lib/table/style/style.css +24 -0
  27. package/lib/table/style/style.min.css +1 -1
  28. package/lib/ui/index.js +4 -4
  29. package/lib/ui/index.min.js +1 -1
  30. package/lib/ui/src/log.js +1 -1
  31. package/lib/ui/src/log.min.js +1 -1
  32. package/lib/vxe-table/style/style.css +24 -0
  33. package/lib/vxe-table/style/style.min.css +1 -1
  34. package/package.json +2 -2
  35. package/packages/table/module/menu/panel.ts +8 -4
  36. package/packages/table/src/cell.ts +2 -2
  37. package/packages/table/src/table.ts +80 -25
  38. package/packages/ui/index.ts +3 -3
  39. package/styles/components/table.scss +35 -0
  40. /package/es/{iconfont.1745723959074.ttf → iconfont.1745827953655.ttf} +0 -0
  41. /package/es/{iconfont.1745723959074.woff → iconfont.1745827953655.woff} +0 -0
  42. /package/es/{iconfont.1745723959074.woff2 → iconfont.1745827953655.woff2} +0 -0
  43. /package/lib/{iconfont.1745723959074.ttf → iconfont.1745827953655.ttf} +0 -0
  44. /package/lib/{iconfont.1745723959074.woff → iconfont.1745827953655.woff} +0 -0
  45. /package/lib/{iconfont.1745723959074.woff2 → iconfont.1745827953655.woff2} +0 -0
@@ -11,7 +11,7 @@ function renderTitlePrefixIcon(params) {
11
11
  const titlePrefix = column.titlePrefix || column.titleHelp;
12
12
  if (titlePrefix) {
13
13
  return h('i', {
14
- class: ['vxe-cell-title-prefix-icon', titlePrefix.icon || getIcon().TABLE_TITLE_PREFIX],
14
+ class: ['vxe-cell-title-prefix-icon', titlePrefix.iconStatus ? `theme--${titlePrefix.iconStatus}` : '', titlePrefix.icon || getIcon().TABLE_TITLE_PREFIX],
15
15
  onMouseenter(evnt) {
16
16
  $table.triggerHeaderTitleEvent(evnt, titlePrefix, params);
17
17
  },
@@ -27,7 +27,7 @@ function renderTitleSuffixIcon(params) {
27
27
  const titleSuffix = column.titleSuffix;
28
28
  if (titleSuffix) {
29
29
  return h('i', {
30
- class: ['vxe-cell-title-suffix-icon', titleSuffix.icon || getIcon().TABLE_TITLE_SUFFIX],
30
+ class: ['vxe-cell-title-suffix-icon', titleSuffix.iconStatus ? `theme--${titleSuffix.iconStatus}` : '', titleSuffix.icon || getIcon().TABLE_TITLE_SUFFIX],
31
31
  onMouseenter(evnt) {
32
32
  $table.triggerHeaderTitleEvent(evnt, titleSuffix, params);
33
33
  },
@@ -376,6 +376,7 @@ export default defineComponent({
376
376
  insertRowMaps: {},
377
377
  // 已删除行
378
378
  removeRowMaps: {},
379
+ cvCacheMaps: {},
379
380
  inited: false,
380
381
  tooltipTimeout: null,
381
382
  initStatus: false,
@@ -2796,12 +2797,12 @@ export default defineComponent({
2796
2797
  if (bodyWrapperElem) {
2797
2798
  overflowY = scrollYHeight > bodyWrapperElem.clientHeight;
2798
2799
  if (yHandleEl) {
2799
- reactData.scrollbarWidth = Math.max(scrollbarOpts.width || 0, yHandleEl.offsetWidth - yHandleEl.clientWidth);
2800
+ reactData.scrollbarWidth = scrollbarOpts.width || (yHandleEl.offsetWidth - yHandleEl.clientWidth) || 14;
2800
2801
  }
2801
2802
  reactData.overflowY = overflowY;
2802
2803
  overflowX = scrollXWidth > bodyWrapperElem.clientWidth;
2803
2804
  if (xHandleEl) {
2804
- reactData.scrollbarHeight = Math.max(scrollbarOpts.height || 0, xHandleEl.offsetHeight - xHandleEl.clientHeight);
2805
+ reactData.scrollbarHeight = scrollbarOpts.height || (xHandleEl.offsetHeight - xHandleEl.clientHeight) || 14;
2805
2806
  }
2806
2807
  const headerHeight = headerTableElem ? headerTableElem.clientHeight : 0;
2807
2808
  const footerHeight = footerTableElem ? footerTableElem.clientHeight : 0;
@@ -2994,6 +2995,7 @@ export default defineComponent({
2994
2995
  scrollYStore.endIndex = 1;
2995
2996
  scrollXStore.startIndex = 0;
2996
2997
  scrollXStore.endIndex = 1;
2998
+ internalData.cvCacheMaps = {};
2997
2999
  reactData.isRowLoading = true;
2998
3000
  reactData.scrollVMLoading = false;
2999
3001
  internalData.treeExpandedMaps = {};
@@ -3590,7 +3592,7 @@ export default defineComponent({
3590
3592
  const lazyScrollXData = () => {
3591
3593
  const { lxTimeout, lxRunTime, scrollXStore } = internalData;
3592
3594
  const { visibleSize } = scrollXStore;
3593
- const fpsTime = Math.max(5, Math.min(10, Math.floor(visibleSize / 3)));
3595
+ const fpsTime = visibleSize > 26 ? 26 : (visibleSize > 16 ? 14 : 6);
3594
3596
  if (lxTimeout) {
3595
3597
  clearTimeout(lxTimeout);
3596
3598
  }
@@ -3607,7 +3609,7 @@ export default defineComponent({
3607
3609
  const lazyScrollYData = () => {
3608
3610
  const { lyTimeout, lyRunTime, scrollYStore } = internalData;
3609
3611
  const { visibleSize } = scrollYStore;
3610
- const fpsTime = Math.floor(Math.max(4, Math.min(10, visibleSize / 3)));
3612
+ const fpsTime = visibleSize > 30 ? 32 : (visibleSize > 20 ? 18 : 8);
3611
3613
  if (lyTimeout) {
3612
3614
  clearTimeout(lyTimeout);
3613
3615
  }
@@ -9743,9 +9745,8 @@ export default defineComponent({
9743
9745
  if (isRollX) {
9744
9746
  evnt.preventDefault();
9745
9747
  internalData.inWheelScroll = true;
9746
- wheelScrollLeftTo(scrollLeft, (offsetLeft) => {
9747
- internalData.inWheelScroll = true;
9748
- const currLeftNum = offsetLeft;
9748
+ if (browseObj['-moz'] || browseObj.safari) {
9749
+ const currLeftNum = scrollLeft;
9749
9750
  setScrollLeft(xHandleEl, currLeftNum);
9750
9751
  setScrollLeft(bodyScrollElem, currLeftNum);
9751
9752
  setScrollLeft(headerScrollElem, currLeftNum);
@@ -9757,14 +9758,30 @@ export default defineComponent({
9757
9758
  type: 'table',
9758
9759
  fixed: ''
9759
9760
  });
9760
- });
9761
+ }
9762
+ else {
9763
+ wheelScrollLeftTo(scrollLeft, (offsetLeft) => {
9764
+ internalData.inWheelScroll = true;
9765
+ const currLeftNum = offsetLeft;
9766
+ setScrollLeft(xHandleEl, currLeftNum);
9767
+ setScrollLeft(bodyScrollElem, currLeftNum);
9768
+ setScrollLeft(headerScrollElem, currLeftNum);
9769
+ setScrollLeft(footerScrollElem, currLeftNum);
9770
+ if (scrollXLoad) {
9771
+ $xeTable.triggerScrollXEvent(evnt);
9772
+ }
9773
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, bodyScrollElem.scrollTop, currLeftNum, {
9774
+ type: 'table',
9775
+ fixed: ''
9776
+ });
9777
+ });
9778
+ }
9761
9779
  }
9762
9780
  if (isRollY) {
9763
9781
  evnt.preventDefault();
9764
9782
  internalData.inWheelScroll = true;
9765
- wheelScrollTopTo(scrollTop - currScrollTop, (offsetTop) => {
9766
- internalData.inWheelScroll = true;
9767
- const currTopNum = bodyScrollElem.scrollTop + offsetTop;
9783
+ if (browseObj['-moz'] || browseObj.safari) {
9784
+ const currTopNum = scrollTop;
9768
9785
  setScrollTop(yHandleEl, currTopNum);
9769
9786
  setScrollTop(bodyScrollElem, currTopNum);
9770
9787
  setScrollTop(leftScrollElem, currTopNum);
@@ -9777,7 +9794,25 @@ export default defineComponent({
9777
9794
  type: 'table',
9778
9795
  fixed: ''
9779
9796
  });
9780
- });
9797
+ }
9798
+ else {
9799
+ wheelScrollTopTo(scrollTop - currScrollTop, (offsetTop) => {
9800
+ internalData.inWheelScroll = true;
9801
+ const currTopNum = bodyScrollElem.scrollTop + offsetTop;
9802
+ setScrollTop(yHandleEl, currTopNum);
9803
+ setScrollTop(bodyScrollElem, currTopNum);
9804
+ setScrollTop(leftScrollElem, currTopNum);
9805
+ setScrollTop(rightScrollElem, currTopNum);
9806
+ setScrollTop(rowExpandEl, currTopNum);
9807
+ if (scrollYLoad) {
9808
+ $xeTable.triggerScrollYEvent(evnt);
9809
+ }
9810
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, currTopNum, bodyScrollElem.scrollLeft, {
9811
+ type: 'table',
9812
+ fixed: ''
9813
+ });
9814
+ });
9815
+ }
9781
9816
  }
9782
9817
  },
9783
9818
  triggerVirtualScrollXEvent(evnt) {
@@ -9913,20 +9948,18 @@ export default defineComponent({
9913
9948
  ySpaceWidth = maxXWidth;
9914
9949
  isScrollXBig = true;
9915
9950
  }
9916
- let marginLeft = '';
9917
- if (scrollXLoad && overflowX) {
9918
- marginLeft = `${xSpaceLeft}px`;
9951
+ if (!(scrollXLoad && overflowX)) {
9952
+ xSpaceLeft = 0;
9919
9953
  }
9920
9954
  if (headerTableElem) {
9921
- headerTableElem.style.marginLeft = headerTableElem.getAttribute('xvm') ? marginLeft : '';
9955
+ headerTableElem.style.transform = headerTableElem.getAttribute('xvm') ? `translate(${xSpaceLeft}px, 0px)` : '';
9922
9956
  }
9923
9957
  if (bodyTableElem) {
9924
- bodyTableElem.style.marginLeft = marginLeft;
9958
+ bodyTableElem.style.transform = `translate(${xSpaceLeft}px, ${reactData.scrollYTop || 0}px)`;
9925
9959
  }
9926
9960
  if (footerTableElem) {
9927
- footerTableElem.style.marginLeft = footerTableElem.getAttribute('xvm') ? marginLeft : '';
9961
+ footerTableElem.style.transform = footerTableElem.getAttribute('xvm') ? `translate(${xSpaceLeft}px, 0px)` : '';
9928
9962
  }
9929
- reactData.isScrollXBig = isScrollXBig;
9930
9963
  const containerList = ['main'];
9931
9964
  containerList.forEach(name => {
9932
9965
  const layoutList = ['header', 'body', 'footer'];
@@ -9937,6 +9970,9 @@ export default defineComponent({
9937
9970
  }
9938
9971
  });
9939
9972
  });
9973
+ reactData.scrollXLeft = xSpaceLeft;
9974
+ reactData.scrollXWidth = ySpaceWidth;
9975
+ reactData.isScrollXBig = isScrollXBig;
9940
9976
  const scrollXSpaceEl = refScrollXSpaceElem.value;
9941
9977
  if (scrollXSpaceEl) {
9942
9978
  scrollXSpaceEl.style.width = `${ySpaceWidth}px`;
@@ -9952,7 +9988,7 @@ export default defineComponent({
9952
9988
  },
9953
9989
  // 更新纵向 Y 可视渲染上下剩余空间大小
9954
9990
  updateScrollYSpace() {
9955
- const { isAllOverflow, scrollYLoad, expandColumn } = reactData;
9991
+ const { isAllOverflow, overflowY, scrollYLoad, expandColumn } = reactData;
9956
9992
  const { scrollYStore, elemStore, isResizeCellHeight, afterFullData, fullAllDataRowIdData, rowExpandedMaps } = internalData;
9957
9993
  const { startIndex } = scrollYStore;
9958
9994
  const mouseOpts = computeMouseOpts.value;
@@ -9962,6 +9998,8 @@ export default defineComponent({
9962
9998
  const defaultRowHeight = computeDefaultRowHeight.value;
9963
9999
  const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
9964
10000
  const bodyTableElem = getRefElem(elemStore['main-body-table']);
10001
+ const leftBodyTableElem = getRefElem(elemStore['left-body-table']);
10002
+ const rightbodyTableElem = getRefElem(elemStore['right-body-table']);
9965
10003
  const containerList = ['main', 'left', 'right'];
9966
10004
  let ySpaceTop = 0;
9967
10005
  let scrollYHeight = 0;
@@ -10015,12 +10053,20 @@ export default defineComponent({
10015
10053
  }
10016
10054
  ySpaceHeight = maxYHeight;
10017
10055
  }
10056
+ if (!(scrollYLoad && overflowY)) {
10057
+ scrollYTop = 0;
10058
+ }
10059
+ if (leftBodyTableElem) {
10060
+ leftBodyTableElem.style.transform = `translate(0px, ${scrollYTop}px)`;
10061
+ }
10062
+ if (bodyTableElem) {
10063
+ bodyTableElem.style.transform = `translate(${reactData.scrollXLeft || 0}px, ${scrollYTop}px)`;
10064
+ }
10065
+ if (rightbodyTableElem) {
10066
+ rightbodyTableElem.style.transform = `translate(0px, ${scrollYTop}px)`;
10067
+ }
10018
10068
  containerList.forEach(name => {
10019
10069
  const layoutList = ['header', 'body', 'footer'];
10020
- const tableElem = getRefElem(elemStore[`${name}-body-table`]);
10021
- if (tableElem) {
10022
- tableElem.style.marginTop = scrollYTop ? `${scrollYTop}px` : '';
10023
- }
10024
10070
  layoutList.forEach(layout => {
10025
10071
  const ySpaceElem = getRefElem(elemStore[`${name}-${layout}-ySpace`]);
10026
10072
  if (ySpaceElem) {
@@ -11178,6 +11224,9 @@ export default defineComponent({
11178
11224
  if (tableViewportEl) {
11179
11225
  tableViewportEl.removeEventListener('wheel', $xeTable.triggerBodyWheelEvent);
11180
11226
  }
11227
+ internalData.cvCacheMaps = {};
11228
+ internalData.prevDragRow = null;
11229
+ internalData.prevDragCol = null;
11181
11230
  if (resizeObserver) {
11182
11231
  resizeObserver.disconnect();
11183
11232
  }
@@ -2327,6 +2327,30 @@
2327
2327
  .vxe-header--column .vxe-cell-title-suffix-icon {
2328
2328
  cursor: help;
2329
2329
  }
2330
+ .vxe-header--column .vxe-cell-title-prefix-icon.theme--primary,
2331
+ .vxe-header--column .vxe-cell-title-suffix-icon.theme--primary {
2332
+ color: var(--vxe-ui-font-primary-color);
2333
+ }
2334
+ .vxe-header--column .vxe-cell-title-prefix-icon.theme--success,
2335
+ .vxe-header--column .vxe-cell-title-suffix-icon.theme--success {
2336
+ color: var(--vxe-ui-status-success-color);
2337
+ }
2338
+ .vxe-header--column .vxe-cell-title-prefix-icon.theme--info,
2339
+ .vxe-header--column .vxe-cell-title-suffix-icon.theme--info {
2340
+ color: var(--vxe-ui-status-info-color);
2341
+ }
2342
+ .vxe-header--column .vxe-cell-title-prefix-icon.theme--warning,
2343
+ .vxe-header--column .vxe-cell-title-suffix-icon.theme--warning {
2344
+ color: var(--vxe-ui-status-warning-color);
2345
+ }
2346
+ .vxe-header--column .vxe-cell-title-prefix-icon.theme--danger,
2347
+ .vxe-header--column .vxe-cell-title-suffix-icon.theme--danger {
2348
+ color: var(--vxe-ui-status-danger-color);
2349
+ }
2350
+ .vxe-header--column .vxe-cell-title-prefix-icon.theme--error,
2351
+ .vxe-header--column .vxe-cell-title-suffix-icon.theme--error {
2352
+ color: var(--vxe-ui-status-error-color);
2353
+ }
2330
2354
 
2331
2355
  .vxe-cell--col-resizable {
2332
2356
  position: absolute;