vxe-table 3.15.27 → 3.15.29

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 (48) 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/index.js +11 -3
  6. package/es/table/module/filter/mixin.js +20 -8
  7. package/es/table/src/methods.js +192 -55
  8. package/es/table/src/table.js +6 -3
  9. package/es/table/style.css +6 -0
  10. package/es/table/style.min.css +1 -1
  11. package/es/ui/index.js +1 -1
  12. package/es/ui/src/log.js +1 -1
  13. package/es/vxe-table/style.css +6 -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 +264 -79
  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/index.js +10 -3
  22. package/lib/table/index.min.js +1 -1
  23. package/lib/table/module/filter/mixin.js +26 -8
  24. package/lib/table/module/filter/mixin.min.js +1 -1
  25. package/lib/table/src/methods.js +218 -61
  26. package/lib/table/src/methods.min.js +1 -1
  27. package/lib/table/src/table.js +8 -5
  28. package/lib/table/src/table.min.js +1 -1
  29. package/lib/table/style/style.css +6 -0
  30. package/lib/table/style/style.min.css +1 -1
  31. package/lib/ui/index.js +1 -1
  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 +6 -0
  36. package/lib/vxe-table/style/style.min.css +1 -1
  37. package/package.json +1 -1
  38. package/packages/table/index.ts +10 -3
  39. package/packages/table/module/filter/mixin.ts +27 -12
  40. package/packages/table/src/methods.ts +196 -57
  41. package/packages/table/src/table.ts +6 -3
  42. package/styles/components/table.scss +14 -0
  43. /package/es/{iconfont.1747094784148.ttf → iconfont.1747286367921.ttf} +0 -0
  44. /package/es/{iconfont.1747094784148.woff → iconfont.1747286367921.woff} +0 -0
  45. /package/es/{iconfont.1747094784148.woff2 → iconfont.1747286367921.woff2} +0 -0
  46. /package/lib/{iconfont.1747094784148.ttf → iconfont.1747286367921.ttf} +0 -0
  47. /package/lib/{iconfont.1747094784148.woff → iconfont.1747286367921.woff} +0 -0
  48. /package/lib/{iconfont.1747094784148.woff2 → iconfont.1747286367921.woff2} +0 -0
@@ -4,7 +4,7 @@ import { toFilters, handleFieldOrColumn, getRefElem } from '../../src/util'
4
4
  import { toCssUnit, triggerEvent, getDomNode } from '../../../ui/src/dom'
5
5
  import { isEnableConf } from '../../../ui/src/utils'
6
6
 
7
- import type { VxeTableConstructor, VxeTableDefines, TableReactData, TableInternalData } from '../../../../types'
7
+ import type { VxeTableConstructor, VxeTableDefines, TableReactData, TableInternalData, VxeTablePrivateMethods } from '../../../../types'
8
8
 
9
9
  const { renderer } = VxeUI
10
10
 
@@ -41,6 +41,7 @@ export default {
41
41
  if (column && column.filters) {
42
42
  column.filters = toFilters(options || [])
43
43
  if (isUpdate) {
44
+ // 已废弃,即将去掉事件触发 new Event('click') -> null
44
45
  return $xeTable.handleColumnConfirmFilter(column, new Event('click'))
45
46
  }
46
47
  }
@@ -294,25 +295,37 @@ export default {
294
295
  * 当筛选面板中的重置按钮被按下时触发
295
296
  * @param {Event} evnt 事件
296
297
  */
297
- handleFilterResetFilter (evnt: any) {
298
- this.handleClearFilter(this.filterStore.column)
299
- this.confirmFilterEvent(evnt)
298
+ handleFilterResetFilter (evnt: Event) {
299
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
300
+ const reactData = $xeTable as unknown as TableReactData
301
+
302
+ const { filterStore } = reactData
303
+ $xeTable.handleClearFilter(filterStore.column)
304
+ $xeTable.confirmFilterEvent(evnt)
305
+ if (evnt) {
306
+ $xeTable.dispatchEvent('clear-filter', { filterList: [] }, evnt)
307
+ }
300
308
  },
301
309
  /**
302
310
  * 清空指定列的筛选条件
303
311
  * 如果为空则清空所有列的筛选条件
304
312
  * @param {String} fieldOrColumn 列
305
313
  */
306
- _clearFilter (fieldOrColumn: any) {
307
- const { filterStore } = this
314
+ _clearFilter (fieldOrColumn: string | VxeTableDefines.ColumnInfo<any> | null | undefined) {
315
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
316
+ const reactData = $xeTable as unknown as TableReactData
317
+ const internalData = $xeTable as unknown as TableInternalData
318
+
319
+ const { filterStore } = reactData
320
+ const { tableFullColumn } = internalData
308
321
  let column
309
322
  if (fieldOrColumn) {
310
- column = handleFieldOrColumn(this, fieldOrColumn)
323
+ column = handleFieldOrColumn($xeTable, fieldOrColumn)
311
324
  if (column) {
312
- this.handleClearFilter(column)
325
+ $xeTable.handleClearFilter(column)
313
326
  }
314
327
  } else {
315
- this.visibleColumn.forEach(this.handleClearFilter)
328
+ tableFullColumn.forEach($xeTable.handleClearFilter)
316
329
  }
317
330
  if (!fieldOrColumn || column !== filterStore.column) {
318
331
  Object.assign(filterStore, {
@@ -325,12 +338,14 @@ export default {
325
338
  visible: false
326
339
  })
327
340
  }
328
- return this.updateData()
341
+ return $xeTable.updateData()
329
342
  },
330
- _updateFilterOptionStatus (item: any, checked: any) {
343
+ _updateFilterOptionStatus (item: any, checked: boolean) {
344
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
345
+
331
346
  item._checked = checked
332
347
  item.checked = checked
333
- return this.$nextTick()
348
+ return $xeTable.$nextTick()
334
349
  }
335
350
  } as any
336
351
  }
@@ -3,7 +3,7 @@ import { getTpImg, isPx, isScale, hasClass, addClass, removeClass, getEventTarge
3
3
  import { getLastZIndex, nextZIndex, hasChildrenList, getFuncText, isEnableConf, formatText, eqEmptyValue } from '../../ui/src/utils'
4
4
  import { VxeUI } from '../../ui'
5
5
  import Cell from './cell'
6
- import { getRowUniqueId, clearTableAllStatus, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleRowidOrRow, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, getRootColumn, getColReMinWidth, createHandleUpdateRowId, createHandleGetRowId, getRefElem } from './util'
6
+ import { getRowUniqueId, clearTableAllStatus, toFilters, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleRowidOrRow, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, getRootColumn, getColReMinWidth, createHandleUpdateRowId, createHandleGetRowId, getRefElem } from './util'
7
7
  import { getSlotVNs } from '../../ui/src/vn'
8
8
  import { warnLog, errLog } from '../../ui/src/log'
9
9
 
@@ -30,8 +30,9 @@ function eqCellValue (row1: any, row2: any, field: any) {
30
30
  return XEUtils.isEqual(val1, val2)
31
31
  }
32
32
 
33
- function getNextSortOrder (_vm: any, column: any) {
34
- const orders = _vm.sortOpts.orders
33
+ function getNextSortOrder ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, column: any) {
34
+ const sortOpts = $xeTable.computeSortOpts
35
+ const { orders = [] } = sortOpts
35
36
  const currOrder = column.order || null
36
37
  const oIndex = orders.indexOf(currOrder) + 1
37
38
  return orders[oIndex < orders.length ? oIndex : 0]
@@ -2019,8 +2020,59 @@ function removeFooterMerges ($xeTable: VxeTableConstructor & VxeTablePrivateMeth
2019
2020
  return rest
2020
2021
  }
2021
2022
 
2022
- function clearAllSort (_vm: any) {
2023
- _vm.tableFullColumn.forEach((column: any) => {
2023
+ function handleSortEvent ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, evnt: Event | null, sortConfs: VxeTableDefines.SortConfs | VxeTableDefines.SortConfs[], isUpdate?: boolean) {
2024
+ const sortOpts = $xeTable.computeSortOpts
2025
+ const { multiple, remote, orders } = sortOpts
2026
+ if (!XEUtils.isArray(sortConfs)) {
2027
+ sortConfs = [sortConfs]
2028
+ }
2029
+ if (sortConfs && sortConfs.length) {
2030
+ if (!multiple) {
2031
+ sortConfs = [sortConfs[0]]
2032
+ clearAllSort($xeTable)
2033
+ }
2034
+ let firstColumn: any = null
2035
+ sortConfs.forEach((confs: any, index: number) => {
2036
+ let { field, order } = confs
2037
+ let column = field
2038
+ if (XEUtils.isString(field)) {
2039
+ column = $xeTable.getColumnByField(field)
2040
+ }
2041
+ if (!firstColumn) {
2042
+ firstColumn = column
2043
+ }
2044
+ if (column && column.sortable) {
2045
+ if (orders && orders.indexOf(order) === -1) {
2046
+ order = getNextSortOrder($xeTable, column)
2047
+ }
2048
+ if (column.order !== order) {
2049
+ column.order = order
2050
+ }
2051
+ column.sortTime = Date.now() + index
2052
+ }
2053
+ })
2054
+ if (isUpdate) {
2055
+ if (!remote) {
2056
+ $xeTable.handleTableData(true)
2057
+ }
2058
+ }
2059
+ if (evnt) {
2060
+ $xeTable.handleColumnSortEvent(evnt, firstColumn)
2061
+ }
2062
+ return $xeTable.$nextTick().then(() => {
2063
+ updateRowOffsetTop($xeTable)
2064
+ $xeTable.updateCellAreas()
2065
+ return updateStyle($xeTable)
2066
+ })
2067
+ }
2068
+ return $xeTable.$nextTick()
2069
+ }
2070
+
2071
+ function clearAllSort ($xeTable: VxeTableConstructor & VxeTablePrivateMethods) {
2072
+ const internalData = $xeTable as unknown as TableInternalData
2073
+
2074
+ const { tableFullColumn } = internalData
2075
+ tableFullColumn.forEach((column: any) => {
2024
2076
  column.order = null
2025
2077
  })
2026
2078
  }
@@ -3288,7 +3340,7 @@ function checkLastSyncScroll ($xeTable: VxeTableConstructor & VxeTablePrivateMet
3288
3340
  const reactData = $xeTable as unknown as TableReactData
3289
3341
  const internalData = $xeTable as unknown as TableInternalData
3290
3342
 
3291
- const { scrollXLoad, scrollYLoad } = reactData
3343
+ const { scrollXLoad, scrollYLoad, isAllOverflow } = reactData
3292
3344
  const { lcsTimeout } = internalData
3293
3345
  if (lcsTimeout) {
3294
3346
  clearTimeout(lcsTimeout)
@@ -3303,13 +3355,19 @@ function checkLastSyncScroll ($xeTable: VxeTableConstructor & VxeTablePrivateMet
3303
3355
  internalData.inBodyScroll = false
3304
3356
  internalData.inFooterScroll = false
3305
3357
  internalData.scrollRenderType = ''
3306
- calcCellHeight($xeTable)
3358
+ if (!isAllOverflow) {
3359
+ calcCellHeight($xeTable)
3360
+ updateRowOffsetTop($xeTable)
3361
+ }
3307
3362
  if (isRollX && scrollXLoad) {
3308
3363
  $xeTable.updateScrollXData()
3309
3364
  }
3310
3365
  if (isRollY && scrollYLoad) {
3311
3366
  $xeTable.updateScrollYData().then(() => {
3312
- calcCellHeight($xeTable)
3367
+ if (!isAllOverflow) {
3368
+ calcCellHeight($xeTable)
3369
+ updateRowOffsetTop($xeTable)
3370
+ }
3313
3371
  $xeTable.updateScrollYSpace()
3314
3372
  })
3315
3373
  }
@@ -4812,6 +4870,7 @@ const Methods = {
4812
4870
  }
4813
4871
  XEUtils.eachTree([targetColumn], (column) => {
4814
4872
  column.fixed = fixed
4873
+ column.renderFixed = fixed
4815
4874
  })
4816
4875
  $xeTable.saveCustomStore('update:fixed')
4817
4876
  if (!status) {
@@ -4838,6 +4897,7 @@ const Methods = {
4838
4897
  if (targetColumn && targetColumn.fixed) {
4839
4898
  XEUtils.eachTree([targetColumn], (column) => {
4840
4899
  column.fixed = null
4900
+ column.renderFixed = null
4841
4901
  })
4842
4902
  $xeTable.saveCustomStore('update:fixed')
4843
4903
  if (!status) {
@@ -6425,7 +6485,16 @@ const Methods = {
6425
6485
  }
6426
6486
  }
6427
6487
  if (tooltipStore.column !== column || tooltipStore.row !== row || !tooltipStore.visible) {
6428
- handleTooltip($xeTable, evnt, tdEl, tdEl.querySelector<HTMLElement>('.vxe-cell--wrapper'), tdEl.querySelector<HTMLElement>('.vxe-cell--label') || tdEl.querySelector<HTMLElement>('.vxe-cell--wrapper'), params)
6488
+ const ctEl = tdEl.querySelector<HTMLElement>('.vxe-cell--wrapper')
6489
+ let ovEl = null
6490
+ let tipEl = tdEl.querySelector<HTMLElement>(column.type === 'html' ? '.vxe-cell--html' : '.vxe-cell--label')
6491
+ if (column.treeNode) {
6492
+ ovEl = tdEl.querySelector<HTMLElement>('.vxe-tree-cell')
6493
+ }
6494
+ if (!tipEl) {
6495
+ tipEl = ctEl
6496
+ }
6497
+ handleTooltip($xeTable, evnt, tdEl, ovEl || ctEl, tipEl, params)
6429
6498
  }
6430
6499
  },
6431
6500
  /**
@@ -6440,10 +6509,19 @@ const Methods = {
6440
6509
  const tdEl = evnt.currentTarget as HTMLTableCellElement
6441
6510
  handleTargetEnterEvent($xeTable, tooltipStore.column !== column || !!tooltipStore.row)
6442
6511
  if (tooltipStore.column !== column || !tooltipStore.visible) {
6443
- handleTooltip($xeTable, evnt, tdEl, tdEl.querySelector<HTMLElement>('.vxe-cell--wrapper'), tdEl.querySelector<HTMLElement>('.vxe-cell--label') || tdEl.querySelector('.vxe-cell--wrapper') as HTMLElement, params)
6512
+ const ctEl = tdEl.querySelector<HTMLElement>('.vxe-cell--wrapper')
6513
+ let ovEl = null
6514
+ let tipEl = tdEl.querySelector<HTMLElement>(column.type === 'html' ? '.vxe-cell--html' : '.vxe-cell--label')
6515
+ if (column.type === 'html') {
6516
+ ovEl = tdEl.querySelector<HTMLElement>('.vxe-cell--html')
6517
+ }
6518
+ if (!tipEl) {
6519
+ tipEl = ctEl
6520
+ }
6521
+ handleTooltip($xeTable, evnt, tdEl, ovEl || ctEl, tipEl, params)
6444
6522
  }
6445
6523
  },
6446
- openTooltip (target: any, content: any) {
6524
+ openTooltip (target: HTMLElement, content: string | number) {
6447
6525
  const { $refs } = this
6448
6526
  const commTip = $refs.refCommTooltip
6449
6527
  if (commTip) {
@@ -7584,12 +7662,15 @@ const Methods = {
7584
7662
 
7585
7663
  const { mouseConfig } = props
7586
7664
  const mouseOpts = $xeTable.computeMouseOpts
7587
- const { field, sortable } = column
7665
+ const { field, sortable, order } = column
7588
7666
  if (sortable) {
7589
- const params = { $table: $xeTable, $event: evnt, column, field, property: field, order: column.order, sortList: $xeTable.getSortColumns(), sortTime: column.sortTime }
7667
+ const params = { $table: $xeTable, $event: evnt, column, field, property: field, order, sortList: $xeTable.getSortColumns(), sortTime: column.sortTime }
7590
7668
  if (mouseConfig && mouseOpts.area && $xeTable.handleSortEvent) {
7591
7669
  $xeTable.handleSortEvent(evnt, params)
7592
7670
  }
7671
+ if (!order) {
7672
+ $xeTable.dispatchEvent('clear-sort', params, evnt)
7673
+ }
7593
7674
  $xeTable.dispatchEvent('sort-change', params, evnt)
7594
7675
  }
7595
7676
  },
@@ -8516,49 +8597,13 @@ const Methods = {
8516
8597
  setSort (sortConfs: VxeTableDefines.SortConfs | VxeTableDefines.SortConfs[], isUpdate?: boolean) {
8517
8598
  const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
8518
8599
 
8519
- const sortOpts = $xeTable.computeSortOpts
8520
- const { multiple, remote, orders } = sortOpts
8521
- if (!XEUtils.isArray(sortConfs)) {
8522
- sortConfs = [sortConfs]
8523
- }
8524
- if (sortConfs && sortConfs.length) {
8525
- if (!multiple) {
8526
- sortConfs = [sortConfs[0]]
8527
- clearAllSort($xeTable)
8528
- }
8529
- let firstColumn: any = null
8530
- sortConfs.forEach((confs: any, index: number) => {
8531
- let { field, order } = confs
8532
- let column = field
8533
- if (XEUtils.isString(field)) {
8534
- column = $xeTable.getColumnByField(field)
8535
- }
8536
- if (!firstColumn) {
8537
- firstColumn = column
8538
- }
8539
- if (column && column.sortable) {
8540
- if (orders && orders.indexOf(order) === -1) {
8541
- order = getNextSortOrder($xeTable, column)
8542
- }
8543
- if (column.order !== order) {
8544
- column.order = order
8545
- }
8546
- column.sortTime = Date.now() + index
8547
- }
8548
- })
8549
- if (isUpdate) {
8550
- if (!remote) {
8551
- $xeTable.handleTableData(true)
8552
- }
8553
- $xeTable.handleColumnSortEvent(new Event('click'), firstColumn)
8554
- }
8555
- return $xeTable.$nextTick().then(() => {
8556
- updateRowOffsetTop($xeTable)
8557
- $xeTable.updateCellAreas()
8558
- return updateStyle($xeTable)
8559
- })
8560
- }
8561
- return $xeTable.$nextTick()
8600
+ // 已废弃,即将去掉事件触发 new Event('click') -> null
8601
+ return handleSortEvent($xeTable, new Event('click'), sortConfs, isUpdate)
8602
+ },
8603
+ setSortByEvent (evnt: Event, sortConfs: VxeTableDefines.SortConfs | VxeTableDefines.SortConfs[], isUpdate?: boolean) {
8604
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
8605
+
8606
+ return handleSortEvent($xeTable, evnt, sortConfs, isUpdate)
8562
8607
  },
8563
8608
  /**
8564
8609
  * 清空指定列的排序条件
@@ -8585,6 +8630,43 @@ const Methods = {
8585
8630
  return updateStyle($xeTable)
8586
8631
  })
8587
8632
  },
8633
+ clearSortByEvent (evnt: Event, fieldOrColumn?: VxeColumnPropTypes.Field | VxeTableDefines.ColumnInfo<any> | null) {
8634
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
8635
+ const internalData = $xeTable as unknown as TableInternalData
8636
+
8637
+ const { tableFullColumn } = internalData
8638
+ const sortOpts = $xeTable.computeSortOpts
8639
+ const sortCols: VxeTableDefines.ColumnInfo[] = []
8640
+ let column: VxeTableDefines.ColumnInfo<any> | null = null
8641
+ if (evnt) {
8642
+ if (fieldOrColumn) {
8643
+ column = handleFieldOrColumn($xeTable, fieldOrColumn)
8644
+ if (column) {
8645
+ column.order = null
8646
+ }
8647
+ } else {
8648
+ tableFullColumn.forEach((column) => {
8649
+ if (column.order) {
8650
+ column.order = null
8651
+ sortCols.push(column)
8652
+ }
8653
+ })
8654
+ }
8655
+ if (!sortOpts.remote) {
8656
+ $xeTable.handleTableData(true)
8657
+ }
8658
+ if (sortCols.length) {
8659
+ const params = { $table: $xeTable, $event: evnt, cols: sortCols, sortList: [] }
8660
+ $xeTable.dispatchEvent('clear-all-sort', params, evnt)
8661
+ } else if (column) {
8662
+ $xeTable.handleColumnSortEvent(evnt, column)
8663
+ }
8664
+ }
8665
+ return $xeTable.$nextTick().then(() => {
8666
+ updateRowOffsetTop($xeTable)
8667
+ return updateStyle($xeTable)
8668
+ })
8669
+ },
8588
8670
  // 在 v3 中废弃
8589
8671
  getSortColumn () {
8590
8672
  if (process.env.VUE_APP_VXE_ENV === 'development') {
@@ -8613,6 +8695,18 @@ const Methods = {
8613
8695
  }
8614
8696
  return sortList
8615
8697
  },
8698
+ setFilterByEvent (evnt: Event, fieldOrColumn: VxeColumnPropTypes.Field | VxeTableDefines.ColumnInfo<any>, options: VxeColumnPropTypes.FilterItem[], isUpdate?: boolean) {
8699
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
8700
+
8701
+ const column = handleFieldOrColumn($xeTable, fieldOrColumn)
8702
+ if (column && column.filters) {
8703
+ column.filters = toFilters(options || [])
8704
+ if (isUpdate) {
8705
+ return $xeTable.handleColumnConfirmFilter(column, evnt)
8706
+ }
8707
+ }
8708
+ return $xeTable.$nextTick()
8709
+ },
8616
8710
  /**
8617
8711
  * 关闭筛选
8618
8712
  * @param {Event} evnt 事件
@@ -8653,6 +8747,51 @@ const Methods = {
8653
8747
  isFilter (fieldOrColumn: any) {
8654
8748
  return this.isActiveFilterByColumn(fieldOrColumn)
8655
8749
  },
8750
+ clearFilterByEvent (evnt: Event, fieldOrColumn?: VxeColumnPropTypes.Field | VxeTableDefines.ColumnInfo<any> | null) {
8751
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
8752
+ const reactData = $xeTable as unknown as TableReactData
8753
+ const internalData = $xeTable as unknown as TableInternalData
8754
+
8755
+ const { filterStore } = reactData
8756
+ const { tableFullColumn } = internalData
8757
+ const filterOpts = $xeTable.computeFilterOpts
8758
+ const filterCols: VxeTableDefines.ColumnInfo[] = []
8759
+ let column: VxeTableDefines.ColumnInfo<any> | null = null
8760
+ if (fieldOrColumn) {
8761
+ column = handleFieldOrColumn($xeTable, fieldOrColumn)
8762
+ if (column) {
8763
+ $xeTable.handleClearFilter(column)
8764
+ }
8765
+ } else {
8766
+ tableFullColumn.forEach(column => {
8767
+ if (column.filters) {
8768
+ filterCols.push(column)
8769
+ $xeTable.handleClearFilter(column)
8770
+ }
8771
+ })
8772
+ }
8773
+ if (!fieldOrColumn || column !== filterStore.column) {
8774
+ Object.assign(filterStore, {
8775
+ isAllSelected: false,
8776
+ isIndeterminate: false,
8777
+ style: null,
8778
+ options: [],
8779
+ column: null,
8780
+ multiple: false,
8781
+ visible: false
8782
+ })
8783
+ }
8784
+ if (!filterOpts.remote) {
8785
+ $xeTable.updateData()
8786
+ }
8787
+ if (filterCols.length) {
8788
+ const params = { $table: $xeTable, $event: evnt, cols: filterCols, filterList: [] }
8789
+ $xeTable.dispatchEvent('clear-all-filter', params, evnt)
8790
+ } else if (column) {
8791
+ $xeTable.dispatchEvent('clear-filter', { filterList: () => $xeTable.getCheckedFilters() }, evnt)
8792
+ }
8793
+ return $xeTable.$nextTick()
8794
+ },
8656
8795
  /**
8657
8796
  * 判断展开行是否懒加载完成
8658
8797
  * @param {Row} row 行对象
@@ -8665,7 +8804,7 @@ const Methods = {
8665
8804
  return rowRest && !!rowRest.expandLoaded
8666
8805
  },
8667
8806
  clearRowExpandLoaded (row: any) {
8668
- const $xeTable = this as VxeTableConstructor
8807
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
8669
8808
  const reactData = $xeTable as unknown as TableReactData
8670
8809
  const internalData = $xeTable as unknown as TableInternalData
8671
8810
 
@@ -1794,6 +1794,7 @@ export default {
1794
1794
  const columnOpts = $xeTable.computeColumnOpts
1795
1795
  const rowOpts = $xeTable.computeRowOpts
1796
1796
  const customOpts = $xeTable.computeCustomOpts
1797
+ const virtualYOpts = $xeTable.computeVirtualYOpts
1797
1798
 
1798
1799
  if (columnOpts.drag || rowOpts.drag || customOpts.allowSort) {
1799
1800
  initTpImg()
@@ -1839,9 +1840,11 @@ export default {
1839
1840
  this.$resize = resizeObserver
1840
1841
  }
1841
1842
 
1842
- const tableViewportEl = $xeTable.$refs.refTableViewportElem as HTMLDivElement
1843
- if (tableViewportEl) {
1844
- tableViewportEl.addEventListener('wheel', $xeTable.triggerBodyWheelEvent, { passive: false })
1843
+ if (virtualYOpts.mode !== 'scroll') {
1844
+ const tableViewportEl = $xeTable.$refs.refTableViewportElem as HTMLDivElement
1845
+ if (tableViewportEl) {
1846
+ tableViewportEl.addEventListener('wheel', $xeTable.triggerBodyWheelEvent, { passive: false })
1847
+ }
1845
1848
  }
1846
1849
 
1847
1850
  this.preventEvent(null, 'mounted')
@@ -1050,6 +1050,20 @@ $btnThemeList: (
1050
1050
  }
1051
1051
  }
1052
1052
  }
1053
+ .vxe-header--column {
1054
+ &.col--ellipsis {
1055
+ &.col--center {
1056
+ .vxe-cell--wrapper {
1057
+ justify-content: center;
1058
+ }
1059
+ }
1060
+ &.col--right {
1061
+ .vxe-cell--wrapper {
1062
+ justify-content: right;
1063
+ }
1064
+ }
1065
+ }
1066
+ }
1053
1067
  .vxe-header--column,
1054
1068
  .vxe-footer--column {
1055
1069
  &.col--ellipsis {