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
@@ -400,6 +400,8 @@ export default defineComponent({
400
400
  // 已删除行
401
401
  removeRowMaps: {},
402
402
 
403
+ cvCacheMaps: {},
404
+
403
405
  inited: false,
404
406
  tooltipTimeout: null,
405
407
  initStatus: false,
@@ -2931,13 +2933,13 @@ export default defineComponent({
2931
2933
  if (bodyWrapperElem) {
2932
2934
  overflowY = scrollYHeight > bodyWrapperElem.clientHeight
2933
2935
  if (yHandleEl) {
2934
- reactData.scrollbarWidth = Math.max(scrollbarOpts.width || 0, yHandleEl.offsetWidth - yHandleEl.clientWidth)
2936
+ reactData.scrollbarWidth = scrollbarOpts.width || (yHandleEl.offsetWidth - yHandleEl.clientWidth) || 14
2935
2937
  }
2936
2938
  reactData.overflowY = overflowY
2937
2939
 
2938
2940
  overflowX = scrollXWidth > bodyWrapperElem.clientWidth
2939
2941
  if (xHandleEl) {
2940
- reactData.scrollbarHeight = Math.max(scrollbarOpts.height || 0, xHandleEl.offsetHeight - xHandleEl.clientHeight)
2942
+ reactData.scrollbarHeight = scrollbarOpts.height || (xHandleEl.offsetHeight - xHandleEl.clientHeight) || 14
2941
2943
  }
2942
2944
 
2943
2945
  const headerHeight = headerTableElem ? headerTableElem.clientHeight : 0
@@ -3134,6 +3136,7 @@ export default defineComponent({
3134
3136
  scrollYStore.endIndex = 1
3135
3137
  scrollXStore.startIndex = 0
3136
3138
  scrollXStore.endIndex = 1
3139
+ internalData.cvCacheMaps = {}
3137
3140
  reactData.isRowLoading = true
3138
3141
  reactData.scrollVMLoading = false
3139
3142
  internalData.treeExpandedMaps = {}
@@ -3744,7 +3747,7 @@ export default defineComponent({
3744
3747
  const lazyScrollXData = () => {
3745
3748
  const { lxTimeout, lxRunTime, scrollXStore } = internalData
3746
3749
  const { visibleSize } = scrollXStore
3747
- const fpsTime = Math.max(5, Math.min(10, Math.floor(visibleSize / 3)))
3750
+ const fpsTime = visibleSize > 26 ? 26 : (visibleSize > 16 ? 14 : 6)
3748
3751
  if (lxTimeout) {
3749
3752
  clearTimeout(lxTimeout)
3750
3753
  }
@@ -3762,7 +3765,7 @@ export default defineComponent({
3762
3765
  const lazyScrollYData = () => {
3763
3766
  const { lyTimeout, lyRunTime, scrollYStore } = internalData
3764
3767
  const { visibleSize } = scrollYStore
3765
- const fpsTime = Math.floor(Math.max(4, Math.min(10, visibleSize / 3)))
3768
+ const fpsTime = visibleSize > 30 ? 32 : (visibleSize > 20 ? 18 : 8)
3766
3769
  if (lyTimeout) {
3767
3770
  clearTimeout(lyTimeout)
3768
3771
  }
@@ -9850,12 +9853,14 @@ export default defineComponent({
9850
9853
  if (!bodyScrollElem) {
9851
9854
  return
9852
9855
  }
9856
+
9853
9857
  const wheelSpeed = getWheelSpeed(reactData.lastScrollTime)
9854
9858
  const deltaTop = shiftKey ? 0 : Math.ceil(deltaY * wheelSpeed)
9855
9859
  const deltaLeft = shiftKey ? Math.ceil((shiftKey ? (deltaY || deltaX) : deltaX) * wheelSpeed) : 0
9856
9860
 
9857
9861
  const isTopWheel = deltaTop < 0
9858
9862
  const currScrollTop = bodyScrollElem.scrollTop
9863
+
9859
9864
  // 如果滚动位置已经是顶部或底部,则不需要触发
9860
9865
  if (isTopWheel ? currScrollTop <= 0 : currScrollTop >= bodyScrollElem.scrollHeight - bodyScrollElem.clientHeight) {
9861
9866
  return
@@ -9872,9 +9877,8 @@ export default defineComponent({
9872
9877
  if (isRollX) {
9873
9878
  evnt.preventDefault()
9874
9879
  internalData.inWheelScroll = true
9875
- wheelScrollLeftTo(scrollLeft, (offsetLeft: number) => {
9876
- internalData.inWheelScroll = true
9877
- const currLeftNum = offsetLeft
9880
+ if (browseObj['-moz'] || browseObj.safari) {
9881
+ const currLeftNum = scrollLeft
9878
9882
  setScrollLeft(xHandleEl, currLeftNum)
9879
9883
  setScrollLeft(bodyScrollElem, currLeftNum)
9880
9884
  setScrollLeft(headerScrollElem, currLeftNum)
@@ -9886,14 +9890,29 @@ export default defineComponent({
9886
9890
  type: 'table',
9887
9891
  fixed: ''
9888
9892
  })
9889
- })
9893
+ } else {
9894
+ wheelScrollLeftTo(scrollLeft, (offsetLeft: number) => {
9895
+ internalData.inWheelScroll = true
9896
+ const currLeftNum = offsetLeft
9897
+ setScrollLeft(xHandleEl, currLeftNum)
9898
+ setScrollLeft(bodyScrollElem, currLeftNum)
9899
+ setScrollLeft(headerScrollElem, currLeftNum)
9900
+ setScrollLeft(footerScrollElem, currLeftNum)
9901
+ if (scrollXLoad) {
9902
+ $xeTable.triggerScrollXEvent(evnt)
9903
+ }
9904
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, bodyScrollElem.scrollTop, currLeftNum, {
9905
+ type: 'table',
9906
+ fixed: ''
9907
+ })
9908
+ })
9909
+ }
9890
9910
  }
9891
9911
  if (isRollY) {
9892
9912
  evnt.preventDefault()
9893
9913
  internalData.inWheelScroll = true
9894
- wheelScrollTopTo(scrollTop - currScrollTop, (offsetTop: number) => {
9895
- internalData.inWheelScroll = true
9896
- const currTopNum = bodyScrollElem.scrollTop + offsetTop
9914
+ if (browseObj['-moz'] || browseObj.safari) {
9915
+ const currTopNum = scrollTop
9897
9916
  setScrollTop(yHandleEl, currTopNum)
9898
9917
  setScrollTop(bodyScrollElem, currTopNum)
9899
9918
  setScrollTop(leftScrollElem, currTopNum)
@@ -9906,7 +9925,24 @@ export default defineComponent({
9906
9925
  type: 'table',
9907
9926
  fixed: ''
9908
9927
  })
9909
- })
9928
+ } else {
9929
+ wheelScrollTopTo(scrollTop - currScrollTop, (offsetTop: number) => {
9930
+ internalData.inWheelScroll = true
9931
+ const currTopNum = bodyScrollElem.scrollTop + offsetTop
9932
+ setScrollTop(yHandleEl, currTopNum)
9933
+ setScrollTop(bodyScrollElem, currTopNum)
9934
+ setScrollTop(leftScrollElem, currTopNum)
9935
+ setScrollTop(rightScrollElem, currTopNum)
9936
+ setScrollTop(rowExpandEl, currTopNum)
9937
+ if (scrollYLoad) {
9938
+ $xeTable.triggerScrollYEvent(evnt)
9939
+ }
9940
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, currTopNum, bodyScrollElem.scrollLeft, {
9941
+ type: 'table',
9942
+ fixed: ''
9943
+ })
9944
+ })
9945
+ }
9910
9946
  }
9911
9947
  },
9912
9948
  triggerVirtualScrollXEvent (evnt) {
@@ -10045,22 +10081,20 @@ export default defineComponent({
10045
10081
  isScrollXBig = true
10046
10082
  }
10047
10083
 
10048
- let marginLeft = ''
10049
- if (scrollXLoad && overflowX) {
10050
- marginLeft = `${xSpaceLeft}px`
10084
+ if (!(scrollXLoad && overflowX)) {
10085
+ xSpaceLeft = 0
10051
10086
  }
10087
+
10052
10088
  if (headerTableElem) {
10053
- headerTableElem.style.marginLeft = headerTableElem.getAttribute('xvm') ? marginLeft : ''
10089
+ headerTableElem.style.transform = headerTableElem.getAttribute('xvm') ? `translate(${xSpaceLeft}px, 0px)` : ''
10054
10090
  }
10055
10091
  if (bodyTableElem) {
10056
- bodyTableElem.style.marginLeft = marginLeft
10092
+ bodyTableElem.style.transform = `translate(${xSpaceLeft}px, ${reactData.scrollYTop || 0}px)`
10057
10093
  }
10058
10094
  if (footerTableElem) {
10059
- footerTableElem.style.marginLeft = footerTableElem.getAttribute('xvm') ? marginLeft : ''
10095
+ footerTableElem.style.transform = footerTableElem.getAttribute('xvm') ? `translate(${xSpaceLeft}px, 0px)` : ''
10060
10096
  }
10061
10097
 
10062
- reactData.isScrollXBig = isScrollXBig
10063
-
10064
10098
  const containerList = ['main']
10065
10099
  containerList.forEach(name => {
10066
10100
  const layoutList = ['header', 'body', 'footer']
@@ -10071,6 +10105,11 @@ export default defineComponent({
10071
10105
  }
10072
10106
  })
10073
10107
  })
10108
+
10109
+ reactData.scrollXLeft = xSpaceLeft
10110
+ reactData.scrollXWidth = ySpaceWidth
10111
+ reactData.isScrollXBig = isScrollXBig
10112
+
10074
10113
  const scrollXSpaceEl = refScrollXSpaceElem.value
10075
10114
  if (scrollXSpaceEl) {
10076
10115
  scrollXSpaceEl.style.width = `${ySpaceWidth}px`
@@ -10087,7 +10126,7 @@ export default defineComponent({
10087
10126
  },
10088
10127
  // 更新纵向 Y 可视渲染上下剩余空间大小
10089
10128
  updateScrollYSpace () {
10090
- const { isAllOverflow, scrollYLoad, expandColumn } = reactData
10129
+ const { isAllOverflow, overflowY, scrollYLoad, expandColumn } = reactData
10091
10130
  const { scrollYStore, elemStore, isResizeCellHeight, afterFullData, fullAllDataRowIdData, rowExpandedMaps } = internalData
10092
10131
  const { startIndex } = scrollYStore
10093
10132
  const mouseOpts = computeMouseOpts.value
@@ -10097,6 +10136,8 @@ export default defineComponent({
10097
10136
  const defaultRowHeight = computeDefaultRowHeight.value
10098
10137
  const bodyScrollElem = getRefElem(elemStore['main-body-scroll'])
10099
10138
  const bodyTableElem = getRefElem(elemStore['main-body-table'])
10139
+ const leftBodyTableElem = getRefElem(elemStore['left-body-table'])
10140
+ const rightbodyTableElem = getRefElem(elemStore['right-body-table'])
10100
10141
  const containerList = ['main', 'left', 'right']
10101
10142
  let ySpaceTop = 0
10102
10143
  let scrollYHeight = 0
@@ -10148,12 +10189,22 @@ export default defineComponent({
10148
10189
  }
10149
10190
  ySpaceHeight = maxYHeight
10150
10191
  }
10192
+ if (!(scrollYLoad && overflowY)) {
10193
+ scrollYTop = 0
10194
+ }
10195
+
10196
+ if (leftBodyTableElem) {
10197
+ leftBodyTableElem.style.transform = `translate(0px, ${scrollYTop}px)`
10198
+ }
10199
+ if (bodyTableElem) {
10200
+ bodyTableElem.style.transform = `translate(${reactData.scrollXLeft || 0}px, ${scrollYTop}px)`
10201
+ }
10202
+ if (rightbodyTableElem) {
10203
+ rightbodyTableElem.style.transform = `translate(0px, ${scrollYTop}px)`
10204
+ }
10205
+
10151
10206
  containerList.forEach(name => {
10152
10207
  const layoutList = ['header', 'body', 'footer']
10153
- const tableElem = getRefElem(elemStore[`${name}-body-table`])
10154
- if (tableElem) {
10155
- tableElem.style.marginTop = scrollYTop ? `${scrollYTop}px` : ''
10156
- }
10157
10208
  layoutList.forEach(layout => {
10158
10209
  const ySpaceElem = getRefElem(elemStore[`${name}-${layout}-ySpace`])
10159
10210
  if (ySpaceElem) {
@@ -10161,6 +10212,7 @@ export default defineComponent({
10161
10212
  }
10162
10213
  })
10163
10214
  })
10215
+
10164
10216
  const scrollYSpaceEl = refScrollYSpaceElem.value
10165
10217
  if (scrollYSpaceEl) {
10166
10218
  scrollYSpaceEl.style.height = ySpaceHeight ? `${ySpaceHeight}px` : ''
@@ -11358,6 +11410,9 @@ export default defineComponent({
11358
11410
  if (tableViewportEl) {
11359
11411
  tableViewportEl.removeEventListener('wheel', $xeTable.triggerBodyWheelEvent)
11360
11412
  }
11413
+ internalData.cvCacheMaps = {}
11414
+ internalData.prevDragRow = null
11415
+ internalData.prevDragCol = null
11361
11416
  if (resizeObserver) {
11362
11417
  resizeObserver.disconnect()
11363
11418
  }
@@ -208,7 +208,7 @@ VxeUI.setConfig({
208
208
  },
209
209
  virtualXConfig: {
210
210
  enabled: true,
211
- gt: 28,
211
+ gt: 24,
212
212
  preSize: 1,
213
213
  oSize: 0
214
214
  },
@@ -219,8 +219,8 @@ VxeUI.setConfig({
219
219
  oSize: 0
220
220
  },
221
221
  scrollbarConfig: {
222
- width: 14,
223
- height: 14
222
+ // width: 14,
223
+ // height: 14
224
224
  }
225
225
  },
226
226
  // export: {
@@ -1,7 +1,36 @@
1
+ @use "sass:map";
2
+ @use "sass:list";
1
3
  @use '../helpers/baseMixin.scss';
2
4
  @use './icon.scss';
3
5
  @use './table-module/all.scss';
4
6
 
7
+ $btnThemeList: (
8
+ (
9
+ name: "primary",
10
+ textColor: var(--vxe-ui-font-primary-color),
11
+ ),
12
+ (
13
+ name: "success",
14
+ textColor: var(--vxe-ui-status-success-color),
15
+ ),
16
+ (
17
+ name: "info",
18
+ textColor: var(--vxe-ui-status-info-color),
19
+ ),
20
+ (
21
+ name: "warning",
22
+ textColor: var(--vxe-ui-status-warning-color),
23
+ ),
24
+ (
25
+ name: "danger",
26
+ textColor: var(--vxe-ui-status-danger-color),
27
+ ),
28
+ (
29
+ name: "error",
30
+ textColor: var(--vxe-ui-status-error-color),
31
+ )
32
+ );
33
+
5
34
  .vxe-table-slots,
6
35
  .vxe-table--file-form {
7
36
  display: none;
@@ -792,6 +821,12 @@
792
821
  .vxe-cell-title-prefix-icon,
793
822
  .vxe-cell-title-suffix-icon {
794
823
  cursor: help;
824
+ @for $index from 0 to list.length($btnThemeList) {
825
+ $item: list.nth($btnThemeList, $index + 1);
826
+ &.theme--#{map.get($item, name)} {
827
+ color: map.get($item, textColor);
828
+ }
829
+ }
795
830
  }
796
831
  }
797
832