vxe-table 4.13.26 → 4.13.28
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.
- package/es/grid/src/grid.js +1 -1
- package/es/index.css +1 -1
- package/es/index.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table/module/filter/hook.js +6 -2
- package/es/table/src/emits.js +2 -0
- package/es/table/src/table.js +162 -53
- package/es/table/style.css +6 -0
- package/es/table/style.min.css +1 -1
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/es/vxe-table/style.css +6 -0
- package/es/vxe-table/style.min.css +1 -1
- package/lib/grid/src/grid.js +1 -1
- package/lib/grid/src/grid.min.js +1 -1
- package/lib/index.css +1 -1
- package/lib/index.min.css +1 -1
- package/lib/index.umd.js +23 -16
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/module/filter/hook.js +8 -2
- package/lib/table/module/filter/hook.min.js +1 -1
- package/lib/table/src/emits.js +1 -1
- package/lib/table/src/emits.min.js +1 -1
- package/lib/table/src/table.js +11 -10
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/style/style.css +6 -0
- package/lib/table/style/style.min.css +1 -1
- package/lib/ui/index.js +1 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/vxe-table/style/style.css +6 -0
- package/lib/vxe-table/style/style.min.css +1 -1
- package/package.json +1 -1
- package/packages/grid/src/grid.ts +1 -1
- package/packages/table/module/filter/hook.ts +6 -2
- package/packages/table/src/emits.ts +2 -0
- package/packages/table/src/table.ts +159 -53
- package/styles/components/table.scss +14 -0
- /package/es/{iconfont.1747094817139.ttf → iconfont.1747194464593.ttf} +0 -0
- /package/es/{iconfont.1747094817139.woff → iconfont.1747194464593.woff} +0 -0
- /package/es/{iconfont.1747094817139.woff2 → iconfont.1747194464593.woff2} +0 -0
- /package/lib/{iconfont.1747094817139.ttf → iconfont.1747194464593.ttf} +0 -0
- /package/lib/{iconfont.1747094817139.woff → iconfont.1747194464593.woff} +0 -0
- /package/lib/{iconfont.1747094817139.woff2 → iconfont.1747194464593.woff2} +0 -0
|
@@ -52,6 +52,9 @@ hooks.add('tableFilterModule', {
|
|
|
52
52
|
const { filterStore } = reactData
|
|
53
53
|
$xeTable.handleClearFilter(filterStore.column)
|
|
54
54
|
$xeTable.confirmFilterEvent(evnt)
|
|
55
|
+
if (evnt) {
|
|
56
|
+
$xeTable.dispatchEvent('clear-filter', { filterList: [] }, evnt)
|
|
57
|
+
}
|
|
55
58
|
}
|
|
56
59
|
|
|
57
60
|
const filterPrivateMethods: TableFilterPrivateMethods = {
|
|
@@ -272,6 +275,7 @@ hooks.add('tableFilterModule', {
|
|
|
272
275
|
if (column && column.filters) {
|
|
273
276
|
column.filters = toFilters(options || [])
|
|
274
277
|
if (isUpdate) {
|
|
278
|
+
// 已废弃,即将去掉事件触发 new Event('click') -> null
|
|
275
279
|
return $xeTable.handleColumnConfirmFilter(column, new Event('click'))
|
|
276
280
|
}
|
|
277
281
|
}
|
|
@@ -290,10 +294,10 @@ hooks.add('tableFilterModule', {
|
|
|
290
294
|
if (fieldOrColumn) {
|
|
291
295
|
column = handleFieldOrColumn($xeTable, fieldOrColumn)
|
|
292
296
|
if (column) {
|
|
293
|
-
|
|
297
|
+
$xeTable.handleClearFilter(column)
|
|
294
298
|
}
|
|
295
299
|
} else {
|
|
296
|
-
tableFullColumn.forEach(
|
|
300
|
+
tableFullColumn.forEach($xeTable.handleClearFilter)
|
|
297
301
|
}
|
|
298
302
|
if (!fieldOrColumn || column !== filterStore.column) {
|
|
299
303
|
Object.assign(filterStore, {
|
|
@@ -9,7 +9,7 @@ import TableHeaderComponent from './header'
|
|
|
9
9
|
import TableFooterComponent from './footer'
|
|
10
10
|
import tableProps from './props'
|
|
11
11
|
import tableEmits from './emits'
|
|
12
|
-
import { getRowUniqueId, clearTableAllStatus, hasDeepKey, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleRowidOrRow, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, getRootColumn, getRefElem, getColReMinWidth, createHandleUpdateRowId, createHandleGetRowId, getCellHeight } from './util'
|
|
12
|
+
import { getRowUniqueId, clearTableAllStatus, toFilters, hasDeepKey, getRowkey, getRowid, rowToVisible, colToVisible, getCellValue, setCellValue, handleRowidOrRow, handleFieldOrColumn, toTreePathSeq, restoreScrollLocation, getRootColumn, getRefElem, getColReMinWidth, createHandleUpdateRowId, createHandleGetRowId, getCellHeight } from './util'
|
|
13
13
|
import { getSlotVNs } from '../../ui/src/vn'
|
|
14
14
|
import { warnLog, errLog } from '../../ui/src/log'
|
|
15
15
|
import TableCustomPanelComponent from '../module/custom/panel'
|
|
@@ -987,7 +987,7 @@ export default defineComponent({
|
|
|
987
987
|
|
|
988
988
|
const getNextSortOrder = (column: VxeTableDefines.ColumnInfo) => {
|
|
989
989
|
const sortOpts = computeSortOpts.value
|
|
990
|
-
const { orders } = sortOpts
|
|
990
|
+
const { orders = [] } = sortOpts
|
|
991
991
|
const currOrder = column.order || null
|
|
992
992
|
const oIndex = orders.indexOf(currOrder) + 1
|
|
993
993
|
return orders[oIndex < orders.length ? oIndex : 0]
|
|
@@ -1399,6 +1399,54 @@ export default defineComponent({
|
|
|
1399
1399
|
return rest
|
|
1400
1400
|
}
|
|
1401
1401
|
|
|
1402
|
+
const handleSortEvent = (evnt: Event | null, sortConfs: VxeTableDefines.SortConfs | VxeTableDefines.SortConfs[], isUpdate?: boolean) => {
|
|
1403
|
+
const sortOpts = computeSortOpts.value
|
|
1404
|
+
const { multiple, remote, orders } = sortOpts
|
|
1405
|
+
if (!XEUtils.isArray(sortConfs)) {
|
|
1406
|
+
sortConfs = [sortConfs]
|
|
1407
|
+
}
|
|
1408
|
+
if (sortConfs && sortConfs.length) {
|
|
1409
|
+
if (!multiple) {
|
|
1410
|
+
sortConfs = [sortConfs[0]]
|
|
1411
|
+
clearAllSort()
|
|
1412
|
+
}
|
|
1413
|
+
let firstColumn: any = null
|
|
1414
|
+
sortConfs.forEach((confs: any, index: number) => {
|
|
1415
|
+
let { field, order } = confs
|
|
1416
|
+
let column = field
|
|
1417
|
+
if (XEUtils.isString(field)) {
|
|
1418
|
+
column = $xeTable.getColumnByField(field)
|
|
1419
|
+
}
|
|
1420
|
+
if (!firstColumn) {
|
|
1421
|
+
firstColumn = column
|
|
1422
|
+
}
|
|
1423
|
+
if (column && column.sortable) {
|
|
1424
|
+
if (orders && orders.indexOf(order) === -1) {
|
|
1425
|
+
order = getNextSortOrder(column)
|
|
1426
|
+
}
|
|
1427
|
+
if (column.order !== order) {
|
|
1428
|
+
column.order = order
|
|
1429
|
+
}
|
|
1430
|
+
column.sortTime = Date.now() + index
|
|
1431
|
+
}
|
|
1432
|
+
})
|
|
1433
|
+
if (isUpdate) {
|
|
1434
|
+
if (!remote) {
|
|
1435
|
+
$xeTable.handleTableData(true)
|
|
1436
|
+
}
|
|
1437
|
+
}
|
|
1438
|
+
if (evnt) {
|
|
1439
|
+
$xeTable.handleColumnSortEvent(evnt, firstColumn)
|
|
1440
|
+
}
|
|
1441
|
+
return nextTick().then(() => {
|
|
1442
|
+
updateRowOffsetTop()
|
|
1443
|
+
$xeTable.updateCellAreas()
|
|
1444
|
+
return updateStyle()
|
|
1445
|
+
})
|
|
1446
|
+
}
|
|
1447
|
+
return nextTick()
|
|
1448
|
+
}
|
|
1449
|
+
|
|
1402
1450
|
const clearAllSort = () => {
|
|
1403
1451
|
const { tableFullColumn } = internalData
|
|
1404
1452
|
tableFullColumn.forEach((column) => {
|
|
@@ -5723,49 +5771,11 @@ export default defineComponent({
|
|
|
5723
5771
|
return nextTick()
|
|
5724
5772
|
},
|
|
5725
5773
|
setSort (sortConfs, isUpdate) {
|
|
5726
|
-
|
|
5727
|
-
|
|
5728
|
-
|
|
5729
|
-
|
|
5730
|
-
|
|
5731
|
-
if (sortConfs && sortConfs.length) {
|
|
5732
|
-
if (!multiple) {
|
|
5733
|
-
sortConfs = [sortConfs[0]]
|
|
5734
|
-
clearAllSort()
|
|
5735
|
-
}
|
|
5736
|
-
let firstColumn: any = null
|
|
5737
|
-
sortConfs.forEach((confs: any, index: number) => {
|
|
5738
|
-
let { field, order } = confs
|
|
5739
|
-
let column = field
|
|
5740
|
-
if (XEUtils.isString(field)) {
|
|
5741
|
-
column = tableMethods.getColumnByField(field)
|
|
5742
|
-
}
|
|
5743
|
-
if (!firstColumn) {
|
|
5744
|
-
firstColumn = column
|
|
5745
|
-
}
|
|
5746
|
-
if (column && column.sortable) {
|
|
5747
|
-
if (orders && orders.indexOf(order) === -1) {
|
|
5748
|
-
order = getNextSortOrder(column)
|
|
5749
|
-
}
|
|
5750
|
-
if (column.order !== order) {
|
|
5751
|
-
column.order = order
|
|
5752
|
-
}
|
|
5753
|
-
column.sortTime = Date.now() + index
|
|
5754
|
-
}
|
|
5755
|
-
})
|
|
5756
|
-
if (isUpdate) {
|
|
5757
|
-
if (!remote) {
|
|
5758
|
-
$xeTable.handleTableData(true)
|
|
5759
|
-
}
|
|
5760
|
-
$xeTable.handleColumnSortEvent(new Event('click'), firstColumn)
|
|
5761
|
-
}
|
|
5762
|
-
return nextTick().then(() => {
|
|
5763
|
-
updateRowOffsetTop()
|
|
5764
|
-
tableMethods.updateCellAreas()
|
|
5765
|
-
return updateStyle()
|
|
5766
|
-
})
|
|
5767
|
-
}
|
|
5768
|
-
return nextTick()
|
|
5774
|
+
// 已废弃,即将去掉事件触发 new Event('click') -> null
|
|
5775
|
+
return handleSortEvent(new Event('click'), sortConfs, isUpdate)
|
|
5776
|
+
},
|
|
5777
|
+
setSortByEvent (evnt, sortConfs, isUpdate) {
|
|
5778
|
+
return handleSortEvent(evnt, sortConfs, isUpdate)
|
|
5769
5779
|
},
|
|
5770
5780
|
/**
|
|
5771
5781
|
* 清空指定列的排序条件
|
|
@@ -5790,6 +5800,40 @@ export default defineComponent({
|
|
|
5790
5800
|
return updateStyle()
|
|
5791
5801
|
})
|
|
5792
5802
|
},
|
|
5803
|
+
clearSortByEvent (evnt, fieldOrColumn) {
|
|
5804
|
+
const { tableFullColumn } = internalData
|
|
5805
|
+
const sortOpts = computeSortOpts.value
|
|
5806
|
+
const sortCols: VxeTableDefines.ColumnInfo[] = []
|
|
5807
|
+
let column: VxeTableDefines.ColumnInfo<any> | null = null
|
|
5808
|
+
if (evnt) {
|
|
5809
|
+
if (fieldOrColumn) {
|
|
5810
|
+
column = handleFieldOrColumn($xeTable, fieldOrColumn)
|
|
5811
|
+
if (column) {
|
|
5812
|
+
column.order = null
|
|
5813
|
+
}
|
|
5814
|
+
} else {
|
|
5815
|
+
tableFullColumn.forEach((column) => {
|
|
5816
|
+
if (column.order) {
|
|
5817
|
+
column.order = null
|
|
5818
|
+
sortCols.push(column)
|
|
5819
|
+
}
|
|
5820
|
+
})
|
|
5821
|
+
}
|
|
5822
|
+
if (!sortOpts.remote) {
|
|
5823
|
+
$xeTable.handleTableData(true)
|
|
5824
|
+
}
|
|
5825
|
+
if (sortCols.length) {
|
|
5826
|
+
const params = { $table: $xeTable, $event: evnt, cols: sortCols, sortList: [] }
|
|
5827
|
+
dispatchEvent('clear-all-sort', params, evnt)
|
|
5828
|
+
} else if (column) {
|
|
5829
|
+
$xeTable.handleColumnSortEvent(evnt, column)
|
|
5830
|
+
}
|
|
5831
|
+
}
|
|
5832
|
+
return nextTick().then(() => {
|
|
5833
|
+
updateRowOffsetTop()
|
|
5834
|
+
return updateStyle()
|
|
5835
|
+
})
|
|
5836
|
+
},
|
|
5793
5837
|
isSort (fieldOrColumn) {
|
|
5794
5838
|
if (fieldOrColumn) {
|
|
5795
5839
|
const column = handleFieldOrColumn($xeTable, fieldOrColumn)
|
|
@@ -5813,6 +5857,16 @@ export default defineComponent({
|
|
|
5813
5857
|
}
|
|
5814
5858
|
return sortList
|
|
5815
5859
|
},
|
|
5860
|
+
setFilterByEvent (evnt, fieldOrColumn, options, isUpdate) {
|
|
5861
|
+
const column = handleFieldOrColumn($xeTable, fieldOrColumn)
|
|
5862
|
+
if (column && column.filters) {
|
|
5863
|
+
column.filters = toFilters(options || [])
|
|
5864
|
+
if (isUpdate) {
|
|
5865
|
+
return $xeTable.handleColumnConfirmFilter(column, evnt)
|
|
5866
|
+
}
|
|
5867
|
+
}
|
|
5868
|
+
return nextTick()
|
|
5869
|
+
},
|
|
5816
5870
|
/**
|
|
5817
5871
|
* 关闭筛选
|
|
5818
5872
|
* @param {Event} evnt 事件
|
|
@@ -5849,6 +5903,47 @@ export default defineComponent({
|
|
|
5849
5903
|
isFilter (fieldOrColumn) {
|
|
5850
5904
|
return tableMethods.isActiveFilterByColumn(fieldOrColumn)
|
|
5851
5905
|
},
|
|
5906
|
+
clearFilterByEvent (evnt, fieldOrColumn) {
|
|
5907
|
+
const { filterStore } = reactData
|
|
5908
|
+
const { tableFullColumn } = internalData
|
|
5909
|
+
const filterOpts = computeFilterOpts.value
|
|
5910
|
+
const filterCols: VxeTableDefines.ColumnInfo[] = []
|
|
5911
|
+
let column: VxeTableDefines.ColumnInfo<any> | null = null
|
|
5912
|
+
if (fieldOrColumn) {
|
|
5913
|
+
column = handleFieldOrColumn($xeTable, fieldOrColumn)
|
|
5914
|
+
if (column) {
|
|
5915
|
+
$xeTable.handleClearFilter(column)
|
|
5916
|
+
}
|
|
5917
|
+
} else {
|
|
5918
|
+
tableFullColumn.forEach(column => {
|
|
5919
|
+
if (column.filters) {
|
|
5920
|
+
filterCols.push(column)
|
|
5921
|
+
$xeTable.handleClearFilter(column)
|
|
5922
|
+
}
|
|
5923
|
+
})
|
|
5924
|
+
}
|
|
5925
|
+
if (!fieldOrColumn || column !== filterStore.column) {
|
|
5926
|
+
Object.assign(filterStore, {
|
|
5927
|
+
isAllSelected: false,
|
|
5928
|
+
isIndeterminate: false,
|
|
5929
|
+
style: null,
|
|
5930
|
+
options: [],
|
|
5931
|
+
column: null,
|
|
5932
|
+
multiple: false,
|
|
5933
|
+
visible: false
|
|
5934
|
+
})
|
|
5935
|
+
}
|
|
5936
|
+
if (!filterOpts.remote) {
|
|
5937
|
+
$xeTable.updateData()
|
|
5938
|
+
}
|
|
5939
|
+
if (filterCols.length) {
|
|
5940
|
+
const params = { $table: $xeTable, $event: evnt, cols: filterCols, filterList: [] }
|
|
5941
|
+
dispatchEvent('clear-all-filter', params, evnt)
|
|
5942
|
+
} else if (column) {
|
|
5943
|
+
$xeTable.dispatchEvent('clear-filter', { filterList: () => $xeTable.getCheckedFilters() }, evnt)
|
|
5944
|
+
}
|
|
5945
|
+
return nextTick()
|
|
5946
|
+
},
|
|
5852
5947
|
/**
|
|
5853
5948
|
* 判断展开行是否懒加载完成
|
|
5854
5949
|
* @param {Row} row 行对象
|
|
@@ -8481,7 +8576,12 @@ export default defineComponent({
|
|
|
8481
8576
|
}
|
|
8482
8577
|
}
|
|
8483
8578
|
if (tooltipStore.column !== column || tooltipStore.row !== row || !tooltipStore.visible) {
|
|
8484
|
-
|
|
8579
|
+
const ctEl = tdEl.querySelector<HTMLElement>('.vxe-cell--wrapper')
|
|
8580
|
+
let ovEl = null
|
|
8581
|
+
if (column.treeNode) {
|
|
8582
|
+
ovEl = tdEl.querySelector<HTMLElement>('.vxe-tree-cell')
|
|
8583
|
+
}
|
|
8584
|
+
handleTooltip(evnt, tdEl, ovEl || ctEl, tdEl.querySelector<HTMLElement>('.vxe-cell--label') || tdEl.querySelector<HTMLElement>('.vxe-cell--wrapper'), params)
|
|
8485
8585
|
}
|
|
8486
8586
|
},
|
|
8487
8587
|
/**
|
|
@@ -8905,12 +9005,15 @@ export default defineComponent({
|
|
|
8905
9005
|
handleColumnSortEvent (evnt, column) {
|
|
8906
9006
|
const { mouseConfig } = props
|
|
8907
9007
|
const mouseOpts = computeMouseOpts.value
|
|
8908
|
-
const { field, sortable } = column
|
|
9008
|
+
const { field, sortable, order } = column
|
|
8909
9009
|
if (sortable) {
|
|
8910
|
-
const params = { $table: $xeTable, $event: evnt, column, field, property: field, order
|
|
9010
|
+
const params = { $table: $xeTable, $event: evnt, column, field, property: field, order, sortList: tableMethods.getSortColumns(), sortTime: column.sortTime }
|
|
8911
9011
|
if (mouseConfig && mouseOpts.area && $xeTable.handleSortEvent) {
|
|
8912
9012
|
$xeTable.handleSortEvent(evnt, params)
|
|
8913
9013
|
}
|
|
9014
|
+
if (!order) {
|
|
9015
|
+
dispatchEvent('clear-sort', params, evnt)
|
|
9016
|
+
}
|
|
8914
9017
|
dispatchEvent('sort-change', params, evnt)
|
|
8915
9018
|
}
|
|
8916
9019
|
},
|
|
@@ -8924,10 +9027,10 @@ export default defineComponent({
|
|
|
8924
9027
|
if (sortable) {
|
|
8925
9028
|
if (!order || column.order === order) {
|
|
8926
9029
|
if (allowClear) {
|
|
8927
|
-
|
|
9030
|
+
$xeTable.clearSort(multiple ? column : null)
|
|
8928
9031
|
}
|
|
8929
9032
|
} else {
|
|
8930
|
-
|
|
9033
|
+
$xeTable.sort({ field, order })
|
|
8931
9034
|
}
|
|
8932
9035
|
$xeTable.handleColumnSortEvent(evnt, column)
|
|
8933
9036
|
}
|
|
@@ -11282,6 +11385,7 @@ export default defineComponent({
|
|
|
11282
11385
|
const rowOpts = computeRowOpts.value
|
|
11283
11386
|
const customOpts = computeCustomOpts.value
|
|
11284
11387
|
const rowGroupOpts = computeRowGroupOpts.value
|
|
11388
|
+
const virtualYOpts = computeVirtualYOpts.value
|
|
11285
11389
|
const { groupFields } = rowGroupOpts
|
|
11286
11390
|
|
|
11287
11391
|
if (columnOpts.drag || rowOpts.drag || customOpts.allowSort) {
|
|
@@ -11497,9 +11601,11 @@ export default defineComponent({
|
|
|
11497
11601
|
}
|
|
11498
11602
|
})
|
|
11499
11603
|
|
|
11500
|
-
|
|
11501
|
-
|
|
11502
|
-
tableViewportEl
|
|
11604
|
+
if (virtualYOpts.mode !== 'scroll') {
|
|
11605
|
+
const tableViewportEl = refTableViewportElem.value
|
|
11606
|
+
if (tableViewportEl) {
|
|
11607
|
+
tableViewportEl.addEventListener('wheel', $xeTable.triggerBodyWheelEvent, { passive: false })
|
|
11608
|
+
}
|
|
11503
11609
|
}
|
|
11504
11610
|
|
|
11505
11611
|
globalEvents.on($xeTable, 'paste', handleGlobalPasteEvent)
|
|
@@ -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 {
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|