vxe-table 3.15.12 → 3.15.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 (49) 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 +12 -4
  6. package/es/table/src/cell.js +2 -2
  7. package/es/table/src/methods.js +64 -22
  8. package/es/table/src/table.js +5 -0
  9. package/es/table/style.css +24 -0
  10. package/es/table/style.min.css +1 -1
  11. package/es/ui/index.js +4 -4
  12. package/es/ui/src/log.js +1 -1
  13. package/es/vxe-table/style.css +24 -0
  14. package/es/vxe-table/style.min.css +1 -1
  15. package/lib/index.css +1 -1
  16. package/lib/index.min.css +1 -1
  17. package/lib/index.umd.js +86 -33
  18. package/lib/index.umd.min.js +1 -1
  19. package/lib/style.css +1 -1
  20. package/lib/style.min.css +1 -1
  21. package/lib/table/module/menu/panel.js +12 -4
  22. package/lib/table/module/menu/panel.min.js +1 -1
  23. package/lib/table/src/cell.js +2 -2
  24. package/lib/table/src/cell.min.js +1 -1
  25. package/lib/table/src/methods.js +62 -22
  26. package/lib/table/src/methods.min.js +1 -1
  27. package/lib/table/src/table.js +5 -0
  28. package/lib/table/src/table.min.js +1 -1
  29. package/lib/table/style/style.css +24 -0
  30. package/lib/table/style/style.min.css +1 -1
  31. package/lib/ui/index.js +4 -4
  32. package/lib/ui/index.min.js +1 -1
  33. package/lib/ui/src/log.js +1 -1
  34. package/lib/ui/src/log.min.js +1 -1
  35. package/lib/vxe-table/style/style.css +24 -0
  36. package/lib/vxe-table/style/style.min.css +1 -1
  37. package/package.json +2 -2
  38. package/packages/table/module/menu/panel.ts +12 -4
  39. package/packages/table/src/cell.ts +2 -2
  40. package/packages/table/src/methods.ts +67 -23
  41. package/packages/table/src/table.ts +6 -0
  42. package/packages/ui/index.ts +3 -3
  43. package/styles/components/table.scss +35 -0
  44. /package/es/{iconfont.1745723938260.ttf → iconfont.1745827933282.ttf} +0 -0
  45. /package/es/{iconfont.1745723938260.woff → iconfont.1745827933282.woff} +0 -0
  46. /package/es/{iconfont.1745723938260.woff2 → iconfont.1745827933282.woff2} +0 -0
  47. /package/lib/{iconfont.1745723938260.ttf → iconfont.1745827933282.ttf} +0 -0
  48. /package/lib/{iconfont.1745723938260.woff → iconfont.1745827933282.woff} +0 -0
  49. /package/lib/{iconfont.1745723938260.woff2 → iconfont.1745827933282.woff2} +0 -0
@@ -40,6 +40,7 @@ export default {
40
40
  const hasChildMenus = item.children && item.children.some((child: any) => child.visible !== false)
41
41
  const prefixOpts = Object.assign({}, item.prefixConfig)
42
42
  const suffixOpts = Object.assign({}, item.suffixConfig)
43
+ const menuContent = getFuncText(item.name)
43
44
  return item.visible === false
44
45
  ? null
45
46
  : h('li', {
@@ -72,8 +73,11 @@ export default {
72
73
  prefixOpts.content ? h('span', {}, `${prefixOpts.content}`) : _e()
73
74
  ]),
74
75
  h('span', {
75
- class: 'vxe-context-menu--link-content'
76
- }, getFuncText(item.name)),
76
+ class: 'vxe-context-menu--link-content',
77
+ attrs: {
78
+ title: menuContent
79
+ }
80
+ }, menuContent),
77
81
  h('div', {
78
82
  class: ['vxe-context-menu--link-suffix', suffixOpts.className || '']
79
83
  }, [
@@ -91,6 +95,7 @@ export default {
91
95
  }, item.children.map((child: any, cIndex: any) => {
92
96
  const childPrefixOpts = Object.assign({}, child.prefixConfig)
93
97
  const childSuffixOpts = Object.assign({}, child.suffixConfig)
98
+ const childMenuContent = getFuncText(child.name)
94
99
  return child.visible === false
95
100
  ? null
96
101
  : h('li', {
@@ -123,8 +128,11 @@ export default {
123
128
  childPrefixOpts.content ? h('span', `${childPrefixOpts.content}`) : _e()
124
129
  ]),
125
130
  h('span', {
126
- class: 'vxe-context-menu--link-content'
127
- }, getFuncText(child.name)),
131
+ class: 'vxe-context-menu--link-content',
132
+ attrs: {
133
+ title: childMenuContent
134
+ }
135
+ }, childMenuContent),
128
136
  h('div', {
129
137
  class: ['vxe-context-menu--link-suffix', childSuffixOpts.className || '']
130
138
  }, [
@@ -15,7 +15,7 @@ function renderTitlePrefixIcon (h: CreateElement, params: VxeTableDefines.CellRe
15
15
  const titlePrefix = column.titlePrefix || column.titleHelp
16
16
  if (titlePrefix) {
17
17
  return h('i', {
18
- class: ['vxe-cell-title-prefix-icon', titlePrefix.icon || getIcon().TABLE_TITLE_PREFIX],
18
+ class: ['vxe-cell-title-prefix-icon', titlePrefix.iconStatus ? `theme--${titlePrefix.iconStatus}` : '', titlePrefix.icon || getIcon().TABLE_TITLE_PREFIX],
19
19
  on: {
20
20
  mouseenter (evnt: any) {
21
21
  $table.triggerHeaderTitleEvent(evnt, titlePrefix, params)
@@ -34,7 +34,7 @@ function renderTitleSuffixIcon (h: CreateElement, params: VxeTableDefines.CellRe
34
34
  const titleSuffix = column.titleSuffix
35
35
  if (titleSuffix) {
36
36
  return h('i', {
37
- class: ['vxe-cell-title-suffix-icon', titleSuffix.icon || getIcon().TABLE_TITLE_SUFFIX],
37
+ class: ['vxe-cell-title-suffix-icon', titleSuffix.iconStatus ? `theme--${titleSuffix.iconStatus}` : '', titleSuffix.icon || getIcon().TABLE_TITLE_SUFFIX],
38
38
  on: {
39
39
  mouseenter (evnt: any) {
40
40
  $table.triggerHeaderTitleEvent(evnt, titleSuffix, params)
@@ -2513,13 +2513,13 @@ function calcScrollbar ($xeTable: VxeTableConstructor & VxeTablePrivateMethods)
2513
2513
  if (bodyWrapperElem) {
2514
2514
  overflowY = scrollYHeight > bodyWrapperElem.clientHeight
2515
2515
  if (yHandleEl) {
2516
- reactData.scrollbarWidth = Math.max(scrollbarOpts.width || 0, yHandleEl.offsetWidth - yHandleEl.clientWidth)
2516
+ reactData.scrollbarWidth = scrollbarOpts.width || (yHandleEl.offsetWidth - yHandleEl.clientWidth) || 14
2517
2517
  }
2518
2518
  reactData.overflowY = overflowY
2519
2519
 
2520
2520
  overflowX = scrollXWidth > bodyWrapperElem.clientWidth
2521
2521
  if (xHandleEl) {
2522
- reactData.scrollbarHeight = Math.max(scrollbarOpts.height || 0, xHandleEl.offsetHeight - xHandleEl.clientHeight)
2522
+ reactData.scrollbarHeight = scrollbarOpts.height || (xHandleEl.offsetHeight - xHandleEl.clientHeight) || 14
2523
2523
  }
2524
2524
  reactData.overflowX = overflowX
2525
2525
 
@@ -2724,6 +2724,7 @@ function loadTableData ($xeTable: VxeTableConstructor & VxeTablePrivateMethods,
2724
2724
  scrollYStore.endIndex = 1
2725
2725
  scrollXStore.startIndex = 0
2726
2726
  scrollXStore.endIndex = 1
2727
+ internalData.cvCacheMaps = {}
2727
2728
  reactData.isRowLoading = true
2728
2729
  reactData.scrollVMLoading = false
2729
2730
  internalData.treeExpandedMaps = {}
@@ -3176,7 +3177,7 @@ function lazyScrollXData ($xeTable: VxeTableConstructor & VxeTablePrivateMethods
3176
3177
 
3177
3178
  const { lxTimeout, lxRunTime, scrollXStore } = internalData
3178
3179
  const { visibleSize } = scrollXStore
3179
- const fpsTime = Math.max(5, Math.min(10, Math.floor(visibleSize / 3)))
3180
+ const fpsTime = visibleSize > 26 ? 26 : (visibleSize > 16 ? 14 : 6)
3180
3181
  if (lxTimeout) {
3181
3182
  clearTimeout(lxTimeout)
3182
3183
  }
@@ -3196,7 +3197,7 @@ function lazyScrollYData ($xeTable: VxeTableConstructor & VxeTablePrivateMethods
3196
3197
 
3197
3198
  const { lyTimeout, lyRunTime, scrollYStore } = internalData
3198
3199
  const { visibleSize } = scrollYStore
3199
- const fpsTime = Math.floor(Math.max(4, Math.min(10, visibleSize / 3)))
3200
+ const fpsTime = visibleSize > 30 ? 32 : (visibleSize > 20 ? 18 : 8)
3200
3201
  if (lyTimeout) {
3201
3202
  clearTimeout(lyTimeout)
3202
3203
  }
@@ -9549,8 +9550,8 @@ const Methods = {
9549
9550
  if (isRollX) {
9550
9551
  evnt.preventDefault()
9551
9552
  internalData.inWheelScroll = true
9552
- wheelScrollLeftTo(scrollLeft, (offsetLeft: number) => {
9553
- const currLeftNum = offsetLeft
9553
+ if (browseObj['-moz'] || browseObj.safari) {
9554
+ const currLeftNum = scrollLeft
9554
9555
  setScrollLeft(xHandleEl, currLeftNum)
9555
9556
  setScrollLeft(bodyScrollElem, currLeftNum)
9556
9557
  setScrollLeft(headerScrollElem, currLeftNum)
@@ -9562,13 +9563,27 @@ const Methods = {
9562
9563
  type: 'table',
9563
9564
  fixed: ''
9564
9565
  })
9565
- })
9566
+ } else {
9567
+ wheelScrollLeftTo(scrollLeft, (offsetLeft: number) => {
9568
+ const currLeftNum = offsetLeft
9569
+ setScrollLeft(xHandleEl, currLeftNum)
9570
+ setScrollLeft(bodyScrollElem, currLeftNum)
9571
+ setScrollLeft(headerScrollElem, currLeftNum)
9572
+ setScrollLeft(footerScrollElem, currLeftNum)
9573
+ if (scrollXLoad) {
9574
+ $xeTable.triggerScrollXEvent(evnt)
9575
+ }
9576
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, bodyScrollElem.scrollTop, currLeftNum, {
9577
+ type: 'table',
9578
+ fixed: ''
9579
+ })
9580
+ })
9581
+ }
9566
9582
  }
9567
9583
  if (isRollY) {
9568
9584
  evnt.preventDefault()
9569
- wheelScrollTopTo(scrollTop - currScrollTop, (offsetTop: number) => {
9570
- const currTopNum = bodyScrollElem.scrollTop + offsetTop
9571
- internalData.inWheelScroll = true
9585
+ if (browseObj['-moz'] || browseObj.safari) {
9586
+ const currTopNum = scrollTop
9572
9587
  setScrollTop(yHandleEl, currTopNum)
9573
9588
  setScrollTop(bodyScrollElem, currTopNum)
9574
9589
  setScrollTop(leftScrollElem, currTopNum)
@@ -9581,7 +9596,24 @@ const Methods = {
9581
9596
  type: 'table',
9582
9597
  fixed: ''
9583
9598
  })
9584
- })
9599
+ } else {
9600
+ wheelScrollTopTo(scrollTop - currScrollTop, (offsetTop: number) => {
9601
+ const currTopNum = bodyScrollElem.scrollTop + offsetTop
9602
+ internalData.inWheelScroll = true
9603
+ setScrollTop(yHandleEl, currTopNum)
9604
+ setScrollTop(bodyScrollElem, currTopNum)
9605
+ setScrollTop(leftScrollElem, currTopNum)
9606
+ setScrollTop(rightScrollElem, currTopNum)
9607
+ setScrollTop(rowExpandEl, currTopNum)
9608
+ if (scrollYLoad) {
9609
+ $xeTable.triggerScrollYEvent(evnt)
9610
+ }
9611
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, currTopNum, bodyScrollElem.scrollLeft, {
9612
+ type: 'table',
9613
+ fixed: ''
9614
+ })
9615
+ })
9616
+ }
9585
9617
  }
9586
9618
  },
9587
9619
  triggerVirtualScrollXEvent (evnt: Event) {
@@ -9721,22 +9753,20 @@ const Methods = {
9721
9753
  isScrollXBig = true
9722
9754
  }
9723
9755
 
9724
- let marginLeft = ''
9725
- if (scrollXLoad && overflowX) {
9726
- marginLeft = `${xSpaceLeft}px`
9756
+ if (!(scrollXLoad && overflowX)) {
9757
+ xSpaceLeft = 0
9727
9758
  }
9759
+
9728
9760
  if (headerTableElem) {
9729
- headerTableElem.style.marginLeft = headerTableElem.getAttribute('xvm') ? marginLeft : ''
9761
+ headerTableElem.style.transform = headerTableElem.getAttribute('xvm') ? `translate(${xSpaceLeft}px, 0px)` : ''
9730
9762
  }
9731
9763
  if (bodyTableElem) {
9732
- bodyTableElem.style.marginLeft = marginLeft
9764
+ bodyTableElem.style.transform = `translate(${xSpaceLeft}px, ${reactData.scrollYTop || 0}px)`
9733
9765
  }
9734
9766
  if (footerTableElem) {
9735
- footerTableElem.style.marginLeft = footerTableElem.getAttribute('xvm') ? marginLeft : ''
9767
+ footerTableElem.style.transform = footerTableElem.getAttribute('xvm') ? `translate(${xSpaceLeft}px, 0px)` : ''
9736
9768
  }
9737
9769
 
9738
- reactData.isScrollXBig = isScrollXBig
9739
-
9740
9770
  const containerList = ['main']
9741
9771
  containerList.forEach(name => {
9742
9772
  const layoutList = ['header', 'body', 'footer']
@@ -9747,6 +9777,10 @@ const Methods = {
9747
9777
  }
9748
9778
  })
9749
9779
  })
9780
+
9781
+ reactData.scrollXLeft = xSpaceLeft
9782
+ reactData.scrollXWidth = ySpaceWidth
9783
+ reactData.isScrollXBig = isScrollXBig
9750
9784
  const scrollXSpaceEl = $xeTable.$refs.refScrollXSpaceElem as HTMLDivElement
9751
9785
  if (scrollXSpaceEl) {
9752
9786
  scrollXSpaceEl.style.width = `${ySpaceWidth}px`
@@ -9787,6 +9821,8 @@ const Methods = {
9787
9821
  const defaultRowHeight = $xeTable.computeDefaultRowHeight
9788
9822
  const bodyScrollElem = getRefElem(elemStore['main-body-scroll'])
9789
9823
  const bodyTableElem = getRefElem(elemStore['main-body-table'])
9824
+ const leftBodyTableElem = getRefElem(elemStore['left-body-table'])
9825
+ const rightbodyTableElem = getRefElem(elemStore['right-body-table'])
9790
9826
  const containerList = ['main', 'left', 'right']
9791
9827
  let ySpaceTop = 0
9792
9828
  let scrollYHeight = 0
@@ -9838,12 +9874,19 @@ const Methods = {
9838
9874
  }
9839
9875
  ySpaceHeight = maxYHeight
9840
9876
  }
9877
+
9878
+ if (leftBodyTableElem) {
9879
+ leftBodyTableElem.style.transform = `translate(0px, ${scrollYTop}px)`
9880
+ }
9881
+ if (bodyTableElem) {
9882
+ bodyTableElem.style.transform = `translate(${reactData.scrollXLeft || 0}px, ${scrollYTop}px)`
9883
+ }
9884
+ if (rightbodyTableElem) {
9885
+ rightbodyTableElem.style.transform = `translate(0px, ${scrollYTop}px)`
9886
+ }
9887
+
9841
9888
  containerList.forEach(name => {
9842
9889
  const layoutList = ['header', 'body', 'footer']
9843
- const tableElem = getRefElem(elemStore[`${name}-body-table`])
9844
- if (tableElem) {
9845
- tableElem.style.marginTop = scrollYTop ? `${scrollYTop}px` : ''
9846
- }
9847
9890
  layoutList.forEach(layout => {
9848
9891
  const ySpaceElem = getRefElem(elemStore[`${name}-${layout}-ySpace`])
9849
9892
  if (ySpaceElem) {
@@ -9851,6 +9894,7 @@ const Methods = {
9851
9894
  }
9852
9895
  })
9853
9896
  })
9897
+
9854
9898
  const scrollYSpaceEl = $xeTable.$refs.refScrollYSpaceElem as HTMLDivElement
9855
9899
  if (scrollYSpaceEl) {
9856
9900
  scrollYSpaceEl.style.height = ySpaceHeight ? `${ySpaceHeight}px` : ''
@@ -1509,6 +1509,8 @@ export default {
1509
1509
  // 已删除行
1510
1510
  removeRowMaps: {},
1511
1511
 
1512
+ cvCacheMaps: {},
1513
+
1512
1514
  swYSize: 0,
1513
1515
  swYInterval: 0,
1514
1516
  swYTotal: 0
@@ -1821,11 +1823,15 @@ export default {
1821
1823
  },
1822
1824
  beforeDestroy () {
1823
1825
  const $xeTable = this
1826
+ const internalData = $xeTable as unknown as TableInternalData
1824
1827
 
1825
1828
  const tableViewportEl = $xeTable.$refs.refTableViewportElem as HTMLDivElement
1826
1829
  if (tableViewportEl) {
1827
1830
  tableViewportEl.removeEventListener('wheel', $xeTable.triggerBodyWheelEvent)
1828
1831
  }
1832
+ internalData.cvCacheMaps = {}
1833
+ internalData.prevDragRow = null
1834
+ internalData.prevDragCol = null
1829
1835
  if (this.$resize) {
1830
1836
  this.$resize.disconnect()
1831
1837
  }
@@ -209,7 +209,7 @@ VxeUI.setConfig({
209
209
  },
210
210
  virtualXConfig: {
211
211
  enabled: true,
212
- gt: 28,
212
+ gt: 24,
213
213
  preSize: 0,
214
214
  oSize: 1
215
215
  },
@@ -220,8 +220,8 @@ VxeUI.setConfig({
220
220
  oSize: 2
221
221
  },
222
222
  scrollbarConfig: {
223
- width: 14,
224
- height: 14
223
+ // width: 14,
224
+ // height: 14
225
225
  }
226
226
  },
227
227
  // 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