vxe-table 3.15.13 → 3.15.15

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 (37) hide show
  1. package/es/style.css +1 -1
  2. package/es/table/src/footer.js +1 -1
  3. package/es/table/src/header.js +1 -1
  4. package/es/table/src/methods.js +110 -67
  5. package/es/table/src/table.js +5 -7
  6. package/es/ui/index.js +1 -1
  7. package/es/ui/src/dom.js +1 -1
  8. package/es/ui/src/log.js +1 -1
  9. package/lib/index.umd.js +127 -78
  10. package/lib/index.umd.min.js +1 -1
  11. package/lib/style.css +1 -1
  12. package/lib/table/src/footer.js +1 -1
  13. package/lib/table/src/footer.min.js +1 -1
  14. package/lib/table/src/header.js +1 -1
  15. package/lib/table/src/header.min.js +1 -1
  16. package/lib/table/src/methods.js +118 -67
  17. package/lib/table/src/methods.min.js +1 -1
  18. package/lib/table/src/table.js +4 -6
  19. package/lib/table/src/table.min.js +1 -1
  20. package/lib/ui/index.js +1 -1
  21. package/lib/ui/index.min.js +1 -1
  22. package/lib/ui/src/dom.js +1 -1
  23. package/lib/ui/src/dom.min.js +1 -1
  24. package/lib/ui/src/log.js +1 -1
  25. package/lib/ui/src/log.min.js +1 -1
  26. package/package.json +2 -2
  27. package/packages/table/src/footer.ts +1 -1
  28. package/packages/table/src/header.ts +1 -1
  29. package/packages/table/src/methods.ts +114 -71
  30. package/packages/table/src/table.ts +5 -7
  31. package/packages/ui/src/dom.ts +1 -1
  32. /package/es/{iconfont.1745800652359.ttf → iconfont.1745889617363.ttf} +0 -0
  33. /package/es/{iconfont.1745800652359.woff → iconfont.1745889617363.woff} +0 -0
  34. /package/es/{iconfont.1745800652359.woff2 → iconfont.1745889617363.woff2} +0 -0
  35. /package/lib/{iconfont.1745800652359.ttf → iconfont.1745889617363.ttf} +0 -0
  36. /package/lib/{iconfont.1745800652359.woff → iconfont.1745889617363.woff} +0 -0
  37. /package/lib/{iconfont.1745800652359.woff2 → iconfont.1745889617363.woff2} +0 -0
@@ -1076,7 +1076,7 @@ function updateStyle ($xeTable: VxeTableConstructor & VxeTablePrivateMethods) {
1076
1076
  if (tableElem) {
1077
1077
  tableElem.style.width = tWidth ? `${tWidth}px` : ''
1078
1078
  // 兼容性处理
1079
- tableElem.style.paddingRight = osbWidth && fixedType && (browseObj['-moz'] || browseObj.safari) ? `${osbWidth}px` : ''
1079
+ tableElem.style.paddingRight = osbWidth && fixedType && (browseObj.firefox || browseObj.safari) ? `${osbWidth}px` : ''
1080
1080
  }
1081
1081
  const emptyBlockElem = getRefElem(elemStore[`${name}-${layout}-emptyBlock`])
1082
1082
  if (emptyBlockElem) {
@@ -3172,45 +3172,45 @@ const createGetColumnCacheProp = (prop: 'index' | '_index' | '$index') => {
3172
3172
  }
3173
3173
  }
3174
3174
 
3175
- // function lazyScrollXData ($xeTable: VxeTableConstructor & VxeTablePrivateMethods) {
3176
- // const internalData = $xeTable as unknown as TableInternalData
3177
-
3178
- // const { lxTimeout, lxRunTime, scrollXStore } = internalData
3179
- // const { visibleSize } = scrollXStore
3180
- // const fpsTime = Math.max(5, Math.min(10, Math.floor(visibleSize / 3)))
3181
- // if (lxTimeout) {
3182
- // clearTimeout(lxTimeout)
3183
- // }
3184
- // if (!lxRunTime || lxRunTime + fpsTime < Date.now()) {
3185
- // internalData.lxRunTime = Date.now()
3186
- // loadScrollXData($xeTable)
3187
- // }
3188
- // internalData.lxTimeout = setTimeout(() => {
3189
- // internalData.lxTimeout = undefined
3190
- // internalData.lxRunTime = undefined
3191
- // loadScrollXData($xeTable)
3192
- // }, fpsTime)
3193
- // }
3194
-
3195
- // function lazyScrollYData ($xeTable: VxeTableConstructor & VxeTablePrivateMethods) {
3196
- // const internalData = $xeTable as unknown as TableInternalData
3197
-
3198
- // const { lyTimeout, lyRunTime, scrollYStore } = internalData
3199
- // const { visibleSize } = scrollYStore
3200
- // const fpsTime = Math.floor(Math.max(4, Math.min(10, visibleSize / 3)))
3201
- // if (lyTimeout) {
3202
- // clearTimeout(lyTimeout)
3203
- // }
3204
- // if (!lyRunTime || lyRunTime + fpsTime < Date.now()) {
3205
- // internalData.lyRunTime = Date.now()
3206
- // loadScrollYData($xeTable)
3207
- // }
3208
- // internalData.lyTimeout = setTimeout(() => {
3209
- // internalData.lyTimeout = undefined
3210
- // internalData.lyRunTime = undefined
3211
- // loadScrollYData($xeTable)
3212
- // }, fpsTime)
3213
- // }
3175
+ function lazyScrollXData ($xeTable: VxeTableConstructor & VxeTablePrivateMethods) {
3176
+ const internalData = $xeTable as unknown as TableInternalData
3177
+
3178
+ const { lxTimeout, lxRunTime, scrollXStore } = internalData
3179
+ const { visibleSize } = scrollXStore
3180
+ const fpsTime = visibleSize > 26 ? 26 : (visibleSize > 16 ? 14 : 6)
3181
+ if (lxTimeout) {
3182
+ clearTimeout(lxTimeout)
3183
+ }
3184
+ if (!lxRunTime || lxRunTime + fpsTime < Date.now()) {
3185
+ internalData.lxRunTime = Date.now()
3186
+ loadScrollXData($xeTable)
3187
+ }
3188
+ internalData.lxTimeout = setTimeout(() => {
3189
+ internalData.lxTimeout = undefined
3190
+ internalData.lxRunTime = undefined
3191
+ loadScrollXData($xeTable)
3192
+ }, fpsTime)
3193
+ }
3194
+
3195
+ function lazyScrollYData ($xeTable: VxeTableConstructor & VxeTablePrivateMethods) {
3196
+ const internalData = $xeTable as unknown as TableInternalData
3197
+
3198
+ const { lyTimeout, lyRunTime, scrollYStore } = internalData
3199
+ const { visibleSize } = scrollYStore
3200
+ const fpsTime = visibleSize > 30 ? 32 : (visibleSize > 20 ? 18 : 8)
3201
+ if (lyTimeout) {
3202
+ clearTimeout(lyTimeout)
3203
+ }
3204
+ if (!lyRunTime || lyRunTime + fpsTime < Date.now()) {
3205
+ internalData.lyRunTime = Date.now()
3206
+ loadScrollYData($xeTable)
3207
+ }
3208
+ internalData.lyTimeout = setTimeout(() => {
3209
+ internalData.lyTimeout = undefined
3210
+ internalData.lyRunTime = undefined
3211
+ loadScrollYData($xeTable)
3212
+ }, fpsTime)
3213
+ }
3214
3214
 
3215
3215
  function checkLastSyncScroll ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, isRollX: boolean, isRollY: boolean) {
3216
3216
  const reactData = $xeTable as unknown as TableReactData
@@ -9303,12 +9303,12 @@ const Methods = {
9303
9303
  triggerScrollXEvent () {
9304
9304
  const $xeTable = this
9305
9305
 
9306
- // const virtualXOpts = $xeTable.computeVirtualXOpts
9307
- // if (virtualXOpts.immediate) {
9308
- loadScrollXData($xeTable)
9309
- // } else {
9310
- // lazyScrollXData($xeTable)
9311
- // }
9306
+ const virtualXOpts = $xeTable.computeVirtualXOpts
9307
+ if (virtualXOpts.immediate) {
9308
+ loadScrollXData($xeTable)
9309
+ } else {
9310
+ lazyScrollXData($xeTable)
9311
+ }
9312
9312
  },
9313
9313
  /**
9314
9314
  * 纵向 Y 可视渲染事件处理
@@ -9316,12 +9316,12 @@ const Methods = {
9316
9316
  triggerScrollYEvent () {
9317
9317
  const $xeTable = this
9318
9318
 
9319
- // const virtualYOpts = $xeTable.computeVirtualYOpts
9320
- // if (virtualYOpts.immediate) {
9321
- loadScrollYData($xeTable)
9322
- // } else {
9323
- // lazyScrollYData($xeTable)
9324
- // }
9319
+ const virtualYOpts = $xeTable.computeVirtualYOpts
9320
+ if (virtualYOpts.immediate) {
9321
+ loadScrollYData($xeTable)
9322
+ } else {
9323
+ lazyScrollYData($xeTable)
9324
+ }
9325
9325
  },
9326
9326
  triggerBodyScrollEvent (evnt: Event, fixedType: '' | 'left' | 'right') {
9327
9327
  const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
@@ -9550,8 +9550,8 @@ const Methods = {
9550
9550
  if (isRollX) {
9551
9551
  evnt.preventDefault()
9552
9552
  internalData.inWheelScroll = true
9553
- wheelScrollLeftTo(scrollLeft, (offsetLeft: number) => {
9554
- const currLeftNum = offsetLeft
9553
+ if (browseObj.firefox || browseObj.safari) {
9554
+ const currLeftNum = scrollLeft
9555
9555
  setScrollLeft(xHandleEl, currLeftNum)
9556
9556
  setScrollLeft(bodyScrollElem, currLeftNum)
9557
9557
  setScrollLeft(headerScrollElem, currLeftNum)
@@ -9563,13 +9563,27 @@ const Methods = {
9563
9563
  type: 'table',
9564
9564
  fixed: ''
9565
9565
  })
9566
- })
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
+ }
9567
9582
  }
9568
9583
  if (isRollY) {
9569
9584
  evnt.preventDefault()
9570
- wheelScrollTopTo(scrollTop - currScrollTop, (offsetTop: number) => {
9571
- const currTopNum = bodyScrollElem.scrollTop + offsetTop
9572
- internalData.inWheelScroll = true
9585
+ if (browseObj.firefox || browseObj.safari) {
9586
+ const currTopNum = scrollTop
9573
9587
  setScrollTop(yHandleEl, currTopNum)
9574
9588
  setScrollTop(bodyScrollElem, currTopNum)
9575
9589
  setScrollTop(leftScrollElem, currTopNum)
@@ -9582,7 +9596,24 @@ const Methods = {
9582
9596
  type: 'table',
9583
9597
  fixed: ''
9584
9598
  })
9585
- })
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
+ }
9586
9617
  }
9587
9618
  },
9588
9619
  triggerVirtualScrollXEvent (evnt: Event) {
@@ -9722,22 +9753,20 @@ const Methods = {
9722
9753
  isScrollXBig = true
9723
9754
  }
9724
9755
 
9725
- let marginLeft = ''
9726
- if (scrollXLoad && overflowX) {
9727
- marginLeft = `${xSpaceLeft}px`
9756
+ if (!(scrollXLoad && overflowX)) {
9757
+ xSpaceLeft = 0
9728
9758
  }
9759
+
9729
9760
  if (headerTableElem) {
9730
- headerTableElem.style.marginLeft = headerTableElem.getAttribute('xvm') ? marginLeft : ''
9761
+ headerTableElem.style.transform = headerTableElem.getAttribute('xvm') ? `translate(${xSpaceLeft}px, 0px)` : ''
9731
9762
  }
9732
9763
  if (bodyTableElem) {
9733
- bodyTableElem.style.marginLeft = marginLeft
9764
+ bodyTableElem.style.transform = `translate(${xSpaceLeft}px, ${reactData.scrollYTop || 0}px)`
9734
9765
  }
9735
9766
  if (footerTableElem) {
9736
- footerTableElem.style.marginLeft = footerTableElem.getAttribute('xvm') ? marginLeft : ''
9767
+ footerTableElem.style.transform = footerTableElem.getAttribute('xvm') ? `translate(${xSpaceLeft}px, 0px)` : ''
9737
9768
  }
9738
9769
 
9739
- reactData.isScrollXBig = isScrollXBig
9740
-
9741
9770
  const containerList = ['main']
9742
9771
  containerList.forEach(name => {
9743
9772
  const layoutList = ['header', 'body', 'footer']
@@ -9748,6 +9777,10 @@ const Methods = {
9748
9777
  }
9749
9778
  })
9750
9779
  })
9780
+
9781
+ reactData.scrollXLeft = xSpaceLeft
9782
+ reactData.scrollXWidth = ySpaceWidth
9783
+ reactData.isScrollXBig = isScrollXBig
9751
9784
  const scrollXSpaceEl = $xeTable.$refs.refScrollXSpaceElem as HTMLDivElement
9752
9785
  if (scrollXSpaceEl) {
9753
9786
  scrollXSpaceEl.style.width = `${ySpaceWidth}px`
@@ -9788,6 +9821,8 @@ const Methods = {
9788
9821
  const defaultRowHeight = $xeTable.computeDefaultRowHeight
9789
9822
  const bodyScrollElem = getRefElem(elemStore['main-body-scroll'])
9790
9823
  const bodyTableElem = getRefElem(elemStore['main-body-table'])
9824
+ const leftBodyTableElem = getRefElem(elemStore['left-body-table'])
9825
+ const rightbodyTableElem = getRefElem(elemStore['right-body-table'])
9791
9826
  const containerList = ['main', 'left', 'right']
9792
9827
  let ySpaceTop = 0
9793
9828
  let scrollYHeight = 0
@@ -9839,12 +9874,19 @@ const Methods = {
9839
9874
  }
9840
9875
  ySpaceHeight = maxYHeight
9841
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
+
9842
9888
  containerList.forEach(name => {
9843
9889
  const layoutList = ['header', 'body', 'footer']
9844
- const tableElem = getRefElem(elemStore[`${name}-body-table`])
9845
- if (tableElem) {
9846
- tableElem.style.marginTop = scrollYTop ? `${scrollYTop}px` : ''
9847
- }
9848
9890
  layoutList.forEach(layout => {
9849
9891
  const ySpaceElem = getRefElem(elemStore[`${name}-${layout}-ySpace`])
9850
9892
  if (ySpaceElem) {
@@ -9852,6 +9894,7 @@ const Methods = {
9852
9894
  }
9853
9895
  })
9854
9896
  })
9897
+
9855
9898
  const scrollYSpaceEl = $xeTable.$refs.refScrollYSpaceElem as HTMLDivElement
9856
9899
  if (scrollYSpaceEl) {
9857
9900
  scrollYSpaceEl.style.height = ySpaceHeight ? `${ySpaceHeight}px` : ''
@@ -2,7 +2,7 @@ import { CreateElement } from 'vue'
2
2
  import XEUtils from 'xe-utils'
3
3
  import { getFuncText, isEnableConf } from '../../ui/src/utils'
4
4
  import { initTpImg } from '../../ui/src/dom'
5
- import { createHandleGetRowId } from './util'
5
+ import { createHandleGetRowId, getCellHeight } from './util'
6
6
  import { VxeUI } from '../../ui'
7
7
  import methods from './methods'
8
8
  import TableBodyComponent from './body'
@@ -844,9 +844,8 @@ export default {
844
844
  const props = $xeTable
845
845
 
846
846
  const headerCellOpts = Object.assign({}, getConfig().table.headerCellConfig, props.headerCellConfig)
847
- if (headerCellOpts.height) {
848
- headerCellOpts.height = XEUtils.toNumber(headerCellOpts.height)
849
- }
847
+ const cellOpts = $xeTable.computeCellOpts
848
+ headerCellOpts.height = XEUtils.toNumber(getCellHeight(headerCellOpts.height || cellOpts.height))
850
849
  return headerCellOpts
851
850
  },
852
851
  computeFooterCellOpts () {
@@ -854,9 +853,8 @@ export default {
854
853
  const props = $xeTable
855
854
 
856
855
  const footerCellOpts = Object.assign({}, getConfig().table.footerCellConfig, props.footerCellConfig)
857
- if (footerCellOpts.height) {
858
- footerCellOpts.height = XEUtils.toNumber(footerCellOpts.height)
859
- }
856
+ const cellOpts = $xeTable.computeCellOpts
857
+ footerCellOpts.height = XEUtils.toNumber(getCellHeight(footerCellOpts.height || cellOpts.height))
860
858
  return footerCellOpts
861
859
  },
862
860
  rowOpts () {
@@ -55,7 +55,7 @@ export function isScale (val: any) {
55
55
  }
56
56
 
57
57
  export function hasClass (elem: any, cls: any) {
58
- return elem && elem.className && elem.className.match && elem.className.match(getClsRE(cls))
58
+ return !!(elem && elem.className && elem.className.match && elem.className.match(getClsRE(cls)))
59
59
  }
60
60
 
61
61
  export function removeClass (elem: any, cls: any) {