vxe-table 4.12.0 → 4.12.2

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 (42) hide show
  1. package/es/style.css +1 -1
  2. package/es/table/module/edit/hook.js +22 -24
  3. package/es/table/module/keyboard/hook.js +3 -2
  4. package/es/table/module/validator/hook.js +2 -4
  5. package/es/table/src/body.js +7 -8
  6. package/es/table/src/table.js +79 -100
  7. package/es/ui/index.js +3 -3
  8. package/es/ui/src/dom.js +0 -1
  9. package/es/ui/src/log.js +1 -1
  10. package/lib/index.umd.js +12266 -1059
  11. package/lib/index.umd.min.js +1 -1
  12. package/lib/style.css +1 -1
  13. package/lib/table/module/edit/hook.js +26 -34
  14. package/lib/table/module/edit/hook.min.js +1 -1
  15. package/lib/table/module/keyboard/hook.js +2 -1
  16. package/lib/table/module/keyboard/hook.min.js +1 -1
  17. package/lib/table/module/validator/hook.js +3 -8
  18. package/lib/table/module/validator/hook.min.js +1 -1
  19. package/lib/table/src/body.js +7 -8
  20. package/lib/table/src/body.min.js +1 -1
  21. package/lib/table/src/table.js +83 -115
  22. package/lib/table/src/table.min.js +1 -1
  23. package/lib/ui/index.js +3 -3
  24. package/lib/ui/index.min.js +1 -1
  25. package/lib/ui/src/dom.js +0 -2
  26. package/lib/ui/src/dom.min.js +1 -1
  27. package/lib/ui/src/log.js +1 -1
  28. package/lib/ui/src/log.min.js +1 -1
  29. package/package.json +2 -2
  30. package/packages/table/module/edit/hook.ts +23 -24
  31. package/packages/table/module/keyboard/hook.ts +4 -2
  32. package/packages/table/module/validator/hook.ts +2 -4
  33. package/packages/table/src/body.ts +7 -8
  34. package/packages/table/src/table.ts +86 -108
  35. package/packages/ui/index.ts +2 -2
  36. package/packages/ui/src/dom.ts +0 -2
  37. /package/es/{iconfont.1742955995631.ttf → iconfont.1743125693758.ttf} +0 -0
  38. /package/es/{iconfont.1742955995631.woff → iconfont.1743125693758.woff} +0 -0
  39. /package/es/{iconfont.1742955995631.woff2 → iconfont.1743125693758.woff2} +0 -0
  40. /package/lib/{iconfont.1742955995631.ttf → iconfont.1743125693758.ttf} +0 -0
  41. /package/lib/{iconfont.1742955995631.woff → iconfont.1743125693758.woff} +0 -0
  42. /package/lib/{iconfont.1742955995631.woff2 → iconfont.1743125693758.woff2} +0 -0
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, h, ComponentPublicInstance, reactive, ref, Ref, provide, inject, nextTick, onActivated, onDeactivated, onBeforeUnmount, onUnmounted, watch, computed, onMounted } from 'vue'
2
2
  import XEUtils from 'xe-utils'
3
- import { browse, initTpImg, getTpImg, isPx, isScale, hasClass, addClass, removeClass, getEventTargetNode, getPaddingTopBottomSize, getOffsetPos, setScrollTop, setScrollLeft, toCssUnit } from '../../ui/src/dom'
3
+ import { initTpImg, getTpImg, isPx, isScale, hasClass, addClass, removeClass, getEventTargetNode, getPaddingTopBottomSize, getOffsetPos, setScrollTop, setScrollLeft, toCssUnit } from '../../ui/src/dom'
4
4
  import { getLastZIndex, nextZIndex, hasChildrenList, getFuncText, isEnableConf, formatText, eqEmptyValue } from '../../ui/src/utils'
5
5
  import { VxeUI } from '../../ui'
6
6
  import Cell from './cell'
@@ -37,6 +37,8 @@ export default defineComponent({
37
37
 
38
38
  const xID = XEUtils.uniqueId()
39
39
 
40
+ const browseObj = XEUtils.browse()
41
+
40
42
  // 使用已安装的组件,如果未安装则不渲染
41
43
  const VxeUILoadingComponent = VxeUI.getComponent<VxeLoadingComponent>('VxeLoading')
42
44
  const VxeUITooltipComponent = VxeUI.getComponent<VxeTooltipComponent>('VxeTooltip')
@@ -183,9 +185,7 @@ export default defineComponent({
183
185
  focused: {
184
186
  row: null,
185
187
  column: null
186
- },
187
- insertMaps: {},
188
- removeMaps: {}
188
+ }
189
189
  },
190
190
  // 存放 tooltip 相关信息
191
191
  tooltipStore: {
@@ -248,6 +248,8 @@ export default defineComponent({
248
248
  treeExpandedFlag: 1,
249
249
  updateCheckboxFlag: 1,
250
250
  pendingRowFlag: 1,
251
+ insertRowFlag: 1,
252
+ removeRowFlag: 1,
251
253
 
252
254
  rowHeightStore: {
253
255
  default: 48,
@@ -354,7 +356,6 @@ export default defineComponent({
354
356
  fullDataRowIdData: {},
355
357
  fullColumnIdData: {},
356
358
  fullColumnFieldData: {},
357
- // prevDragRow: null,
358
359
 
359
360
  // 已展开的行集合
360
361
  rowExpandedMaps: {},
@@ -368,6 +369,10 @@ export default defineComponent({
368
369
  selectCheckboxMaps: {},
369
370
  // 已标记的对象集
370
371
  pendingRowMaps: {},
372
+ // 已新增的临时行
373
+ insertRowMaps: {},
374
+ // 已删除行
375
+ removeRowMaps: {},
371
376
 
372
377
  inited: false,
373
378
  tooltipTimeout: null,
@@ -439,7 +444,7 @@ export default defineComponent({
439
444
  })
440
445
 
441
446
  const computeValidOpts = computed(() => {
442
- return Object.assign({}, getConfig().table.validConfig, props.validConfig) as VxeTablePropTypes.ValidOpts
447
+ return Object.assign({}, getConfig().table.validConfig, props.validConfig)
443
448
  })
444
449
 
445
450
  /**
@@ -447,12 +452,12 @@ export default defineComponent({
447
452
  */
448
453
  const computeSXOpts = computed(() => {
449
454
  const virtualXOpts = computeVirtualXOpts.value
450
- return virtualXOpts as VxeTablePropTypes.SXOpts
455
+ return virtualXOpts
451
456
  })
452
457
 
453
458
  const computeScrollXThreshold = computed(() => {
454
- const sXOpts = computeSXOpts.value
455
- const { threshold } = sXOpts
459
+ const virtualXOpts = computeVirtualXOpts.value
460
+ const { threshold } = virtualXOpts
456
461
  if (threshold) {
457
462
  return XEUtils.toNumber(threshold)
458
463
  }
@@ -464,15 +469,15 @@ export default defineComponent({
464
469
  */
465
470
  const computeSYOpts = computed(() => {
466
471
  const virtualYOpts = computeVirtualYOpts.value
467
- return virtualYOpts as VxeTablePropTypes.SYOpts
472
+ return virtualYOpts
468
473
  })
469
474
 
470
475
  const computeVirtualXOpts = computed(() => {
471
- return Object.assign({}, getConfig().table.scrollX, getConfig().table.virtualXConfig, props.scrollX, props.virtualXConfig) as VxeTablePropTypes.VirtualXConfig
476
+ return Object.assign({}, getConfig().table.scrollX, getConfig().table.virtualXConfig, props.scrollX, props.virtualXConfig) as VxeTablePropTypes.VirtualXConfig & { gt: number }
472
477
  })
473
478
 
474
479
  const computeVirtualYOpts = computed(() => {
475
- return Object.assign({}, getConfig().table.scrollY, getConfig().table.virtualYConfig, props.scrollY, props.virtualYConfig) as VxeTablePropTypes.VirtualYConfig
480
+ return Object.assign({}, getConfig().table.scrollY, getConfig().table.virtualYConfig, props.scrollY, props.virtualYConfig) as VxeTablePropTypes.VirtualYConfig & { gt: number }
476
481
  })
477
482
 
478
483
  const computeScrollbarOpts = computed(() => {
@@ -490,8 +495,8 @@ export default defineComponent({
490
495
  })
491
496
 
492
497
  const computeScrollYThreshold = computed(() => {
493
- const sYOpts = computeSYOpts.value
494
- const { threshold } = sYOpts
498
+ const virtualYOpts = computeVirtualYOpts.value
499
+ const { threshold } = virtualYOpts
495
500
  if (threshold) {
496
501
  return XEUtils.toNumber(threshold)
497
502
  }
@@ -509,7 +514,7 @@ export default defineComponent({
509
514
  })
510
515
 
511
516
  const computeColumnOpts = computed(() => {
512
- return Object.assign({}, getConfig().table.columnConfig, props.columnConfig) as VxeTablePropTypes.ColumnOpts
517
+ return Object.assign({}, getConfig().table.columnConfig, props.columnConfig)
513
518
  })
514
519
 
515
520
  const computeCurrentColumnOpts = computed(() => {
@@ -1124,14 +1129,14 @@ export default defineComponent({
1124
1129
 
1125
1130
  const setMerges = (merges: VxeTableDefines.MergeOptions | VxeTableDefines.MergeOptions[], mList: VxeTableDefines.MergeItem[], rowList?: any[]) => {
1126
1131
  if (merges) {
1127
- const { treeConfig } = props
1132
+ // const { treeConfig } = props
1128
1133
  const { visibleColumn } = internalData
1129
1134
  if (!XEUtils.isArray(merges)) {
1130
1135
  merges = [merges]
1131
1136
  }
1132
- if (treeConfig && merges.length) {
1133
- errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
1134
- }
1137
+ // if (treeConfig && merges.length) {
1138
+ // errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
1139
+ // }
1135
1140
  merges.forEach((item) => {
1136
1141
  let { row, col, rowspan, colspan } = item
1137
1142
  if (rowList && XEUtils.isNumber(row)) {
@@ -1174,14 +1179,14 @@ export default defineComponent({
1174
1179
  const removeMerges = (merges: VxeTableDefines.MergeOptions | VxeTableDefines.MergeOptions[], mList: VxeTableDefines.MergeItem[], rowList?: any) => {
1175
1180
  const rest: VxeTableDefines.MergeItem[] = []
1176
1181
  if (merges) {
1177
- const { treeConfig } = props
1182
+ // const { treeConfig } = props
1178
1183
  const { visibleColumn } = internalData
1179
1184
  if (!XEUtils.isArray(merges)) {
1180
1185
  merges = [merges]
1181
1186
  }
1182
- if (treeConfig && merges.length) {
1183
- errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
1184
- }
1187
+ // if (treeConfig && merges.length) {
1188
+ // errLog('vxe.error.noTree', ['merge-cells | merge-footer-items'])
1189
+ // }
1185
1190
  merges.forEach((item) => {
1186
1191
  let { row, col } = item
1187
1192
  if (rowList && XEUtils.isNumber(row)) {
@@ -1889,7 +1894,7 @@ export default defineComponent({
1889
1894
  }
1890
1895
 
1891
1896
  const updateStyle = () => {
1892
- const { border, showHeaderOverflow: allColumnHeaderOverflow, showFooterOverflow: allColumnFooterOverflow, mouseConfig, spanMethod, footerSpanMethod } = props
1897
+ const { showHeaderOverflow: allColumnHeaderOverflow, showFooterOverflow: allColumnFooterOverflow, mouseConfig, spanMethod, footerSpanMethod } = props
1893
1898
  const { isGroup, currentRow, tableColumn, scrollXLoad, scrollYLoad, overflowX, scrollbarWidth, overflowY, scrollbarHeight, scrollXWidth, columnStore, editStore, isAllOverflow, expandColumn } = reactData
1894
1899
  const { visibleColumn, tableHeight, headerHeight, footerHeight, elemStore, customHeight, customMinHeight, customMaxHeight } = internalData
1895
1900
  const el = refElem.value
@@ -2050,33 +2055,6 @@ export default defineComponent({
2050
2055
  if (tableElem) {
2051
2056
  tableElem.style.width = tWidth ? `${tWidth}px` : ''
2052
2057
  }
2053
-
2054
- const listElem = getRefElem(elemStore[`${name}-${layout}-list`])
2055
- if (isGroup && listElem) {
2056
- XEUtils.arrayEach(listElem.querySelectorAll('.col--group'), (thElem: any) => {
2057
- const colNode = $xeTable.getColumnNode(thElem)
2058
- if (colNode) {
2059
- const column = colNode.item
2060
- const { showHeaderOverflow } = column
2061
- const cellOverflow = XEUtils.isBoolean(showHeaderOverflow) ? showHeaderOverflow : allColumnHeaderOverflow
2062
- const showEllipsis = cellOverflow === 'ellipsis'
2063
- const showTitle = cellOverflow === 'title'
2064
- const showTooltip = cellOverflow === true || cellOverflow === 'tooltip'
2065
- const hasEllipsis = showTitle || showTooltip || showEllipsis
2066
- let childWidth = 0
2067
- let countChild = 0
2068
- if (hasEllipsis) {
2069
- XEUtils.eachTree(column.children, (item) => {
2070
- if (!item.children || !column.children.length) {
2071
- countChild++
2072
- }
2073
- childWidth += item.renderWidth
2074
- }, { children: 'children' })
2075
- }
2076
- thElem.style.width = hasEllipsis ? `${childWidth - countChild - (border ? 2 : 0)}px` : ''
2077
- }
2078
- })
2079
- }
2080
2058
  } else if (layout === 'body') {
2081
2059
  if (currScrollElem) {
2082
2060
  currScrollElem.style.maxHeight = customMaxHeight ? `${bodyMaxHeight}px` : ''
@@ -2129,7 +2107,7 @@ export default defineComponent({
2129
2107
  if (tableElem) {
2130
2108
  tableElem.style.width = tWidth ? `${tWidth}px` : ''
2131
2109
  // 兼容性处理
2132
- tableElem.style.paddingRight = osbWidth && fixedType && (browse['-moz'] || browse.safari) ? `${osbWidth}px` : ''
2110
+ tableElem.style.paddingRight = osbWidth && fixedType && (browseObj['-moz'] || browseObj.safari) ? `${osbWidth}px` : ''
2133
2111
  }
2134
2112
  const emptyBlockElem = getRefElem(elemStore[`${name}-${layout}-emptyBlock`])
2135
2113
  if (emptyBlockElem) {
@@ -2226,7 +2204,7 @@ export default defineComponent({
2226
2204
  (sortConfig.multiple ? defaultSort : defaultSort.slice(0, 1)).forEach((item: any, index: number) => {
2227
2205
  const { field, order } = item
2228
2206
  if (field && order) {
2229
- const column = tableMethods.getColumnByField(field)
2207
+ const column = $xeTable.getColumnByField(field)
2230
2208
  if (column && column.sortable) {
2231
2209
  column.order = order
2232
2210
  column.sortTime = Date.now() + index
@@ -2234,7 +2212,7 @@ export default defineComponent({
2234
2212
  }
2235
2213
  })
2236
2214
  if (!sortOpts.remote) {
2237
- tablePrivateMethods.handleTableData(true).then(updateStyle)
2215
+ $xeTable.handleTableData(true).then(updateStyle)
2238
2216
  }
2239
2217
  }
2240
2218
  }
@@ -2295,7 +2273,7 @@ export default defineComponent({
2295
2273
  const expandOpts = computeExpandOpts.value
2296
2274
  const { expandAll, expandRowKeys } = expandOpts
2297
2275
  if (expandAll) {
2298
- tableMethods.setAllRowExpand(true)
2276
+ $xeTable.setAllRowExpand(true)
2299
2277
  } else if (expandRowKeys) {
2300
2278
  const defExpandeds: any[] = []
2301
2279
  expandRowKeys.forEach((rowid: any) => {
@@ -2303,7 +2281,7 @@ export default defineComponent({
2303
2281
  defExpandeds.push(fullDataRowIdData[rowid].row)
2304
2282
  }
2305
2283
  })
2306
- tableMethods.setRowExpand(defExpandeds, true)
2284
+ $xeTable.setRowExpand(defExpandeds, true)
2307
2285
  }
2308
2286
  }
2309
2287
  }
@@ -2667,14 +2645,14 @@ export default defineComponent({
2667
2645
  const handleDefaultMergeCells = () => {
2668
2646
  const { mergeCells } = props
2669
2647
  if (mergeCells) {
2670
- tableMethods.setMergeCells(mergeCells)
2648
+ $xeTable.setMergeCells(mergeCells)
2671
2649
  }
2672
2650
  }
2673
2651
 
2674
2652
  const handleDefaultMergeFooterItems = () => {
2675
2653
  const { mergeFooterItems } = props
2676
2654
  if (mergeFooterItems) {
2677
- tableMethods.setMergeFooterItems(mergeFooterItems)
2655
+ $xeTable.setMergeFooterItems(mergeFooterItems)
2678
2656
  }
2679
2657
  }
2680
2658
 
@@ -2765,7 +2743,7 @@ export default defineComponent({
2765
2743
  */
2766
2744
  const loadTableData = (datas: any[], isReset: boolean) => {
2767
2745
  const { keepSource, treeConfig } = props
2768
- const { editStore, scrollYLoad: oldScrollYLoad } = reactData
2746
+ const { scrollYLoad: oldScrollYLoad } = reactData
2769
2747
  const { scrollYStore, scrollXStore, lastScrollLeft, lastScrollTop } = internalData
2770
2748
  const treeOpts = computeTreeOpts.value
2771
2749
  const { transform } = treeOpts
@@ -2815,8 +2793,8 @@ export default defineComponent({
2815
2793
  scrollXStore.endIndex = 1
2816
2794
  reactData.isRowLoading = true
2817
2795
  reactData.scrollVMLoading = false
2818
- editStore.insertMaps = {}
2819
- editStore.removeMaps = {}
2796
+ internalData.insertRowMaps = {}
2797
+ internalData.removeRowMaps = {}
2820
2798
  const sYLoad = updateScrollYStatus(fullData)
2821
2799
  reactData.isDragColMove = false
2822
2800
  reactData.isDragRowMove = false
@@ -2838,10 +2816,10 @@ export default defineComponent({
2838
2816
  $xeTable.clearCellAreas()
2839
2817
  $xeTable.clearCopyCellArea()
2840
2818
  }
2841
- tableMethods.clearMergeCells()
2842
- tableMethods.clearMergeFooterItems()
2843
- tablePrivateMethods.handleTableData(true)
2844
- tableMethods.updateFooter()
2819
+ $xeTable.clearMergeCells()
2820
+ $xeTable.clearMergeFooterItems()
2821
+ $xeTable.handleTableData(true)
2822
+ $xeTable.updateFooter()
2845
2823
  return nextTick().then(() => {
2846
2824
  updateHeight()
2847
2825
  updateStyle()
@@ -2875,20 +2853,20 @@ export default defineComponent({
2875
2853
  }
2876
2854
 
2877
2855
  handleReserveStatus()
2878
- tablePrivateMethods.checkSelectionStatus()
2856
+ $xeTable.checkSelectionStatus()
2879
2857
  return new Promise<void>(resolve => {
2880
2858
  nextTick()
2881
- .then(() => tableMethods.recalculate())
2859
+ .then(() => $xeTable.recalculate())
2882
2860
  .then(() => {
2883
2861
  let targetScrollLeft = lastScrollLeft
2884
2862
  let targetScrollTop = lastScrollTop
2885
- const sXOpts = computeSXOpts.value
2886
- const sYOpts = computeSYOpts.value
2863
+ const virtualXOpts = computeVirtualXOpts.value
2864
+ const virtualYOpts = computeVirtualYOpts.value
2887
2865
  // 是否在更新数据之后自动滚动重置滚动条
2888
- if (sXOpts.scrollToLeftOnChange) {
2866
+ if (virtualXOpts.scrollToLeftOnChange) {
2889
2867
  targetScrollLeft = 0
2890
2868
  }
2891
- if (sYOpts.scrollToTopOnChange) {
2869
+ if (virtualYOpts.scrollToTopOnChange) {
2892
2870
  targetScrollTop = 0
2893
2871
  }
2894
2872
  reactData.isRowLoading = false
@@ -2924,7 +2902,7 @@ export default defineComponent({
2924
2902
  handleDefaultTreeExpand()
2925
2903
  handleDefaultMergeCells()
2926
2904
  handleDefaultMergeFooterItems()
2927
- nextTick(() => setTimeout(() => tableMethods.recalculate()))
2905
+ nextTick(() => setTimeout(() => $xeTable.recalculate()))
2928
2906
  }
2929
2907
 
2930
2908
  /**
@@ -2996,7 +2974,7 @@ export default defineComponent({
2996
2974
  const centerList: VxeTableDefines.ColumnInfo[] = []
2997
2975
  const rightList: VxeTableDefines.ColumnInfo[] = []
2998
2976
  const { isGroup, columnStore } = reactData
2999
- const sXOpts = computeSXOpts.value
2977
+ const virtualXOpts = computeVirtualXOpts.value
3000
2978
  const { collectColumn, tableFullColumn, scrollXStore, fullColumnIdData } = internalData
3001
2979
  // 如果是分组表头,如果子列全部被隐藏,则根列也隐藏
3002
2980
  if (isGroup) {
@@ -3052,7 +3030,7 @@ export default defineComponent({
3052
3030
  }
3053
3031
  const visibleColumn = leftList.concat(centerList).concat(rightList)
3054
3032
  // 如果gt为0,则总是启用
3055
- const scrollXLoad = !!sXOpts.enabled && sXOpts.gt > -1 && (sXOpts.gt === 0 || sXOpts.gt < tableFullColumn.length)
3033
+ const scrollXLoad = !!virtualXOpts.enabled && virtualXOpts.gt > -1 && (virtualXOpts.gt === 0 || virtualXOpts.gt < tableFullColumn.length)
3056
3034
  reactData.hasFixedColumn = leftList.length > 0 || rightList.length > 0
3057
3035
  Object.assign(columnStore, { leftList, centerList, rightList })
3058
3036
  if (scrollXLoad) {
@@ -3168,12 +3146,12 @@ export default defineComponent({
3168
3146
 
3169
3147
  const updateScrollYStatus = (fullData?: any[]) => {
3170
3148
  const { treeConfig } = props
3171
- const sYOpts = computeSYOpts.value
3149
+ const virtualYOpts = computeVirtualYOpts.value
3172
3150
  const treeOpts = computeTreeOpts.value
3173
3151
  const { transform } = treeOpts
3174
3152
  const allList = fullData || internalData.tableFullData
3175
3153
  // 如果gt为0,则总是启用
3176
- const scrollYLoad = (transform || !treeConfig) && !!sYOpts.enabled && sYOpts.gt > -1 && (sYOpts.gt === 0 || sYOpts.gt < allList.length)
3154
+ const scrollYLoad = (transform || !treeConfig) && !!virtualYOpts.enabled && virtualYOpts.gt > -1 && (virtualYOpts.gt === 0 || virtualYOpts.gt < allList.length)
3177
3155
  reactData.scrollYLoad = scrollYLoad
3178
3156
  return scrollYLoad
3179
3157
  }
@@ -3888,9 +3866,7 @@ export default defineComponent({
3888
3866
  */
3889
3867
  revertData (rows: any, field) {
3890
3868
  const { keepSource, treeConfig } = props
3891
- const { editStore } = reactData
3892
- const { fullAllDataRowIdData, fullDataRowIdData, tableSourceData, sourceDataRowIdData, tableFullData, afterFullData } = internalData
3893
- const removeTempMaps = { ...editStore.removeMaps }
3869
+ const { fullAllDataRowIdData, fullDataRowIdData, tableSourceData, sourceDataRowIdData, tableFullData, afterFullData, removeRowMaps } = internalData
3894
3870
  const treeOpts = computeTreeOpts.value
3895
3871
  const { transform } = treeOpts
3896
3872
  const { handleGetRowId } = createHandleGetRowId($xeTable)
@@ -3924,7 +3900,9 @@ export default defineComponent({
3924
3900
  XEUtils.destructuring(row, XEUtils.clone(oRow, true))
3925
3901
  }
3926
3902
  if (!fullDataRowIdData[rowid] && $xeTable.isRemoveByRow(row)) {
3927
- delete removeTempMaps[rowid]
3903
+ if (removeRowMaps[rowid]) {
3904
+ delete removeRowMaps[rowid]
3905
+ }
3928
3906
  tableFullData.unshift(row)
3929
3907
  afterFullData.unshift(row)
3930
3908
  reDelFlag = true
@@ -3936,7 +3914,7 @@ export default defineComponent({
3936
3914
  }
3937
3915
  if (rows) {
3938
3916
  if (reDelFlag) {
3939
- editStore.removeMaps = removeTempMaps
3917
+ reactData.removeRowFlag++
3940
3918
  $xeTable.updateFooter()
3941
3919
  $xeTable.cacheRowMap(false)
3942
3920
  $xeTable.handleTableData(treeConfig && transform)
@@ -4064,22 +4042,19 @@ export default defineComponent({
4064
4042
  * @param {Row} row 行对象
4065
4043
  */
4066
4044
  isInsertByRow (row) {
4067
- const { editStore } = reactData
4068
4045
  const rowid = getRowid($xeTable, row)
4069
- return !!editStore.insertMaps[rowid]
4046
+ return !!reactData.insertRowFlag && !!internalData.insertRowMaps[rowid]
4070
4047
  },
4071
4048
  isRemoveByRow (row) {
4072
- const { editStore } = reactData
4073
4049
  const rowid = getRowid($xeTable, row)
4074
- return !!editStore.removeMaps[rowid]
4050
+ return !!reactData.removeRowFlag && !!internalData.removeRowMaps[rowid]
4075
4051
  },
4076
4052
  /**
4077
4053
  * 删除所有新增的临时数据
4078
4054
  * @returns
4079
4055
  */
4080
4056
  removeInsertRow () {
4081
- const { editStore } = reactData
4082
- editStore.insertMaps = {}
4057
+ internalData.insertRowMaps = {}
4083
4058
  return $xeTable.remove($xeTable.getInsertRecords())
4084
4059
  },
4085
4060
  /**
@@ -4118,8 +4093,8 @@ export default defineComponent({
4118
4093
  * @param {Number} columnIndex 索引
4119
4094
  */
4120
4095
  getColumns (columnIndex?: number): any {
4121
- const columns = internalData.visibleColumn
4122
- return XEUtils.isUndefined(columnIndex) ? columns.slice(0) : columns[columnIndex]
4096
+ const { visibleColumn } = internalData
4097
+ return XEUtils.isUndefined(columnIndex) ? visibleColumn.slice(0) : visibleColumn[columnIndex]
4123
4098
  },
4124
4099
  /**
4125
4100
  * 根据列获取列的唯一主键
@@ -4133,7 +4108,7 @@ export default defineComponent({
4133
4108
  * @param {String} colid 列主键
4134
4109
  */
4135
4110
  getColumnById (colid) {
4136
- const fullColumnIdData = internalData.fullColumnIdData
4111
+ const { fullColumnIdData } = internalData
4137
4112
  return colid && fullColumnIdData[colid] ? fullColumnIdData[colid].column : null
4138
4113
  },
4139
4114
  /**
@@ -4145,7 +4120,7 @@ export default defineComponent({
4145
4120
  return field && fullColumnFieldData[field] ? fullColumnFieldData[field].column : null
4146
4121
  },
4147
4122
  getParentColumn (fieldOrColumn) {
4148
- const fullColumnIdData = internalData.fullColumnIdData
4123
+ const { fullColumnIdData } = internalData
4149
4124
  const column = handleFieldOrColumn($xeTable, fieldOrColumn)
4150
4125
  return column && column.parentId && fullColumnIdData[column.parentId] ? fullColumnIdData[column.parentId].column : null
4151
4126
  },
@@ -6803,7 +6778,7 @@ export default defineComponent({
6803
6778
  * @param {Event} evnt 事件
6804
6779
  * @param {Row} row 行对象
6805
6780
  */
6806
- const handleTooltip = (evnt: MouseEvent, tdEl: HTMLTableCellElement, overflowElem: HTMLElement | null, params: any) => {
6781
+ const handleTooltip = (evnt: MouseEvent, tdEl: HTMLTableCellElement, overflowElem: HTMLElement | null, tipElem: HTMLElement | null, params: any) => {
6807
6782
  const tipOverEl = overflowElem || tdEl
6808
6783
  if (!tipOverEl) {
6809
6784
  return nextTick()
@@ -6816,7 +6791,8 @@ export default defineComponent({
6816
6791
  const customContent = contentMethod ? contentMethod(params) : null
6817
6792
  const useCustom = contentMethod && !XEUtils.eqNull(customContent)
6818
6793
  const content = useCustom ? customContent : XEUtils.toString(column.type === 'html' ? tipOverEl.innerText : tipOverEl.textContent).trim()
6819
- if (content && (showAll || useCustom || (tipOverEl.scrollWidth > tipOverEl.clientWidth))) {
6794
+ const isOver = tipOverEl.scrollWidth > tipOverEl.clientWidth
6795
+ if (content && (showAll || useCustom || isOver)) {
6820
6796
  Object.assign(tooltipStore, {
6821
6797
  row,
6822
6798
  column,
@@ -6826,7 +6802,7 @@ export default defineComponent({
6826
6802
  nextTick(() => {
6827
6803
  const $tooltip = refTooltip.value
6828
6804
  if ($tooltip && $tooltip.open) {
6829
- $tooltip.open(tipOverEl, formatText(content))
6805
+ $tooltip.open(isOver ? tipOverEl : tipElem, formatText(content))
6830
6806
  }
6831
6807
  })
6832
6808
  }
@@ -7787,7 +7763,7 @@ export default defineComponent({
7787
7763
  return
7788
7764
  }
7789
7765
  if (tooltipStore.column !== column || !tooltipStore.visible) {
7790
- handleTooltip(evnt, thEl, thEl.querySelector<HTMLElement>('.vxe-cell--title') || cellEl, params)
7766
+ handleTooltip(evnt, thEl, thEl.querySelector<HTMLElement>('.vxe-cell--wrapper'), thEl.querySelector<HTMLElement>('.vxe-cell--title') || cellEl, params)
7791
7767
  }
7792
7768
  },
7793
7769
  /**
@@ -7814,7 +7790,7 @@ export default defineComponent({
7814
7790
  }
7815
7791
  }
7816
7792
  if (tooltipStore.column !== column || tooltipStore.row !== row || !tooltipStore.visible) {
7817
- handleTooltip(evnt, tdEl, tdEl.querySelector<HTMLElement>('.vxe-cell--label') || tdEl.querySelector<HTMLElement>('.vxe-cell--wrapper'), params)
7793
+ handleTooltip(evnt, tdEl, tdEl.querySelector<HTMLElement>('.vxe-cell--wrapper'), tdEl.querySelector<HTMLElement>('.vxe-cell--label') || tdEl.querySelector<HTMLElement>('.vxe-cell--wrapper'), params)
7818
7794
  }
7819
7795
  },
7820
7796
  /**
@@ -7826,7 +7802,7 @@ export default defineComponent({
7826
7802
  const tdEl = evnt.currentTarget as HTMLTableCellElement
7827
7803
  handleTargetEnterEvent(tooltipStore.column !== column || !!tooltipStore.row)
7828
7804
  if (tooltipStore.column !== column || !tooltipStore.visible) {
7829
- handleTooltip(evnt, tdEl, tdEl.querySelector<HTMLElement>('.vxe-cell--label') || tdEl.querySelector('.vxe-cell--wrapper') as HTMLElement, params)
7805
+ handleTooltip(evnt, tdEl, tdEl.querySelector<HTMLElement>('.vxe-cell--wrapper'), tdEl.querySelector<HTMLElement>('.vxe-cell--label') || tdEl.querySelector('.vxe-cell--wrapper') as HTMLElement, params)
7830
7806
  }
7831
7807
  },
7832
7808
  handleTargetLeaveEvent () {
@@ -9013,8 +8989,8 @@ export default defineComponent({
9013
8989
  * 横向 X 可视渲染事件处理
9014
8990
  */
9015
8991
  triggerScrollXEvent () {
9016
- const sXOpts = computeSXOpts.value
9017
- if (sXOpts.immediate) {
8992
+ const virtualXOpts = computeVirtualXOpts.value
8993
+ if (virtualXOpts.immediate) {
9018
8994
  loadScrollXData()
9019
8995
  } else {
9020
8996
  lazyScrollXData()
@@ -9024,8 +9000,8 @@ export default defineComponent({
9024
9000
  * 纵向 Y 可视渲染事件处理
9025
9001
  */
9026
9002
  triggerScrollYEvent () {
9027
- const sYOpts = computeSYOpts.value
9028
- if (sYOpts.immediate) {
9003
+ const virtualYOpts = computeVirtualYOpts.value
9004
+ if (virtualYOpts.immediate) {
9029
9005
  loadScrollYData()
9030
9006
  } else {
9031
9007
  lazyScrollYData()
@@ -9218,10 +9194,9 @@ export default defineComponent({
9218
9194
  if (!bodyScrollElem) {
9219
9195
  return
9220
9196
  }
9221
-
9222
9197
  const wheelSpeed = getWheelSpeed(reactData.lastScrollTime)
9223
- const deltaTop = Math.ceil((shiftKey ? deltaX : deltaY) * wheelSpeed)
9224
- const deltaLeft = Math.ceil((shiftKey ? deltaY : deltaX) * wheelSpeed)
9198
+ const deltaTop = shiftKey ? 0 : Math.ceil(deltaY * wheelSpeed)
9199
+ const deltaLeft = shiftKey ? Math.ceil((shiftKey ? (deltaY || deltaX) : deltaX) * wheelSpeed) : 0
9225
9200
 
9226
9201
  const isTopWheel = deltaTop < 0
9227
9202
  const currScrollTop = bodyScrollElem.scrollTop
@@ -9242,6 +9217,7 @@ export default defineComponent({
9242
9217
  evnt.preventDefault()
9243
9218
  internalData.inWheelScroll = true
9244
9219
  wheelScrollLeftTo(scrollLeft, (offsetLeft: number) => {
9220
+ internalData.inWheelScroll = true
9245
9221
  const currLeftNum = offsetLeft
9246
9222
  setScrollLeft(xHandleEl, currLeftNum)
9247
9223
  setScrollLeft(bodyScrollElem, currLeftNum)
@@ -9258,9 +9234,10 @@ export default defineComponent({
9258
9234
  }
9259
9235
  if (isRollY) {
9260
9236
  evnt.preventDefault()
9237
+ internalData.inWheelScroll = true
9261
9238
  wheelScrollTopTo(scrollTop - currScrollTop, (offsetTop: number) => {
9262
- const currTopNum = bodyScrollElem.scrollTop + offsetTop
9263
9239
  internalData.inWheelScroll = true
9240
+ const currTopNum = bodyScrollElem.scrollTop + offsetTop
9264
9241
  setScrollTop(yHandleEl, currTopNum)
9265
9242
  setScrollTop(bodyScrollElem, currTopNum)
9266
9243
  setScrollTop(leftScrollElem, currTopNum)
@@ -10342,6 +10319,9 @@ export default defineComponent({
10342
10319
  watch(computeScrollbarYToLeft, () => {
10343
10320
  reLayoutFlag.value++
10344
10321
  })
10322
+ watch(() => VxeUI.getLanguage(), () => {
10323
+ reLayoutFlag.value++
10324
+ })
10345
10325
  watch(reLayoutFlag, () => {
10346
10326
  nextTick(() => tableMethods.recalculate(true))
10347
10327
  })
@@ -10441,7 +10421,6 @@ export default defineComponent({
10441
10421
  nextTick(() => {
10442
10422
  const { data, exportConfig, importConfig, treeConfig, showOverflow } = props
10443
10423
  const { scrollXStore, scrollYStore } = internalData
10444
- const sYOpts = computeSYOpts.value
10445
10424
  const editOpts = computeEditOpts.value
10446
10425
  const treeOpts = computeTreeOpts.value
10447
10426
  const radioOpts = computeRadioOpts.value
@@ -10571,8 +10550,7 @@ export default defineComponent({
10571
10550
  Object.assign(scrollYStore, {
10572
10551
  startIndex: 0,
10573
10552
  endIndex: 0,
10574
- visibleSize: 0,
10575
- adaptive: sYOpts.adaptive !== false
10553
+ visibleSize: 0
10576
10554
  })
10577
10555
  Object.assign(scrollXStore, {
10578
10556
  startIndex: 0,
@@ -200,13 +200,13 @@ VxeUI.setConfig({
200
200
  enabled: true,
201
201
  gt: 60,
202
202
  preSize: 1,
203
- oSize: 2
203
+ oSize: 0
204
204
  },
205
205
  virtualYConfig: {
206
206
  enabled: true,
207
207
  gt: 100,
208
208
  preSize: 1,
209
- oSize: 2
209
+ oSize: 0
210
210
  },
211
211
  scrollbarConfig: {
212
212
  // width: 0,
@@ -2,8 +2,6 @@ import XEUtils from 'xe-utils'
2
2
 
3
3
  const reClsMap: { [key: string]: any } = {}
4
4
 
5
- export const browse = XEUtils.browse()
6
-
7
5
  let tpImgEl: HTMLImageElement | undefined
8
6
 
9
7
  export function initTpImg () {