vxe-table 4.3.8 → 4.3.10
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/README.en.md +3 -3
- package/README.md +3 -3
- package/README.zh-TW.md +3 -3
- package/es/grid/src/grid.js +51 -21
- package/es/icon/style/{iconfont.1673016604432.ttf → iconfont.1676040467680.ttf} +0 -0
- package/es/icon/style/{iconfont.1673016604432.woff → iconfont.1676040467680.woff} +0 -0
- package/es/icon/style/{iconfont.1673016604432.woff2 → iconfont.1676040467680.woff2} +0 -0
- package/es/icon/style.css +1 -1
- package/es/{iconfont.1673016604432.ttf → iconfont.1676040467680.ttf} +0 -0
- package/es/{iconfont.1673016604432.woff → iconfont.1676040467680.woff} +0 -0
- package/es/{iconfont.1673016604432.woff2 → iconfont.1676040467680.woff2} +0 -0
- package/es/input/src/input.js +4 -4
- package/es/list/src/list.js +4 -1
- package/es/pager/src/pager.js +8 -2
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table/src/cell.js +2 -2
- package/es/table/src/table.js +151 -138
- package/es/toolbar/src/toolbar.js +2 -2
- package/es/tools/log.js +1 -1
- package/es/v-x-e-table/index.js +1 -1
- package/lib/grid/src/grid.js +72 -26
- package/lib/grid/src/grid.min.js +1 -1
- package/lib/icon/style/{iconfont.1673016604432.ttf → iconfont.1676040467680.ttf} +0 -0
- package/lib/icon/style/{iconfont.1673016604432.woff → iconfont.1676040467680.woff} +0 -0
- package/lib/icon/style/{iconfont.1673016604432.woff2 → iconfont.1676040467680.woff2} +0 -0
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/{iconfont.1673016604432.ttf → iconfont.1676040467680.ttf} +0 -0
- package/lib/{iconfont.1673016604432.woff → iconfont.1676040467680.woff} +0 -0
- package/lib/{iconfont.1673016604432.woff2 → iconfont.1676040467680.woff2} +0 -0
- package/lib/index.umd.js +277 -195
- package/lib/index.umd.min.js +1 -1
- package/lib/input/src/input.js +4 -4
- package/lib/input/src/input.min.js +1 -1
- package/lib/list/src/list.js +5 -0
- package/lib/list/src/list.min.js +1 -1
- package/lib/pager/src/pager.js +8 -2
- package/lib/pager/src/pager.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/src/cell.js +2 -2
- package/lib/table/src/cell.min.js +1 -1
- package/lib/table/src/table.js +172 -159
- package/lib/table/src/table.min.js +1 -1
- package/lib/toolbar/src/toolbar.js +4 -2
- package/lib/toolbar/src/toolbar.min.js +1 -1
- package/lib/tools/log.js +1 -1
- package/lib/tools/log.min.js +1 -1
- package/lib/v-x-e-table/index.js +1 -1
- package/lib/v-x-e-table/index.min.js +1 -1
- package/package.json +1 -1
- package/packages/grid/src/grid.ts +50 -20
- package/packages/input/src/input.ts +4 -4
- package/packages/list/src/list.ts +5 -1
- package/packages/pager/src/pager.ts +8 -2
- package/packages/table/src/cell.ts +3 -3
- package/packages/table/src/table.ts +146 -130
- package/packages/toolbar/src/toolbar.ts +2 -2
- package/types/grid.d.ts +4 -0
- package/types/table.d.ts +1 -1
|
@@ -1634,7 +1634,7 @@ export default defineComponent({
|
|
|
1634
1634
|
const checkboxOpts = computeCheckboxOpts.value
|
|
1635
1635
|
const { checkAll, checkRowKeys } = checkboxOpts
|
|
1636
1636
|
if (checkAll) {
|
|
1637
|
-
|
|
1637
|
+
handleCheckedAllCheckboxRow(true, true)
|
|
1638
1638
|
} else if (checkRowKeys) {
|
|
1639
1639
|
const defSelection: any[] = []
|
|
1640
1640
|
checkRowKeys.forEach((rowid: any) => {
|
|
@@ -1642,7 +1642,7 @@ export default defineComponent({
|
|
|
1642
1642
|
defSelection.push(fullDataRowIdData[rowid].row)
|
|
1643
1643
|
}
|
|
1644
1644
|
})
|
|
1645
|
-
|
|
1645
|
+
handleCheckedCheckboxRow(defSelection, true, true)
|
|
1646
1646
|
}
|
|
1647
1647
|
}
|
|
1648
1648
|
}
|
|
@@ -1658,7 +1658,7 @@ export default defineComponent({
|
|
|
1658
1658
|
const { checkRowKey: rowid, reserve } = radioOpts
|
|
1659
1659
|
if (rowid) {
|
|
1660
1660
|
if (fullDataRowIdData[rowid]) {
|
|
1661
|
-
|
|
1661
|
+
handleCheckedRadioRow(fullDataRowIdData[rowid].row, true)
|
|
1662
1662
|
}
|
|
1663
1663
|
if (reserve) {
|
|
1664
1664
|
const rowkey = getRowkey($xetable)
|
|
@@ -1711,6 +1711,125 @@ export default defineComponent({
|
|
|
1711
1711
|
}
|
|
1712
1712
|
}
|
|
1713
1713
|
|
|
1714
|
+
const handleCheckedRadioRow = (row: any, isForce?: boolean) => {
|
|
1715
|
+
const radioOpts = computeRadioOpts.value
|
|
1716
|
+
const { checkMethod } = radioOpts
|
|
1717
|
+
if (row && (isForce || (!checkMethod || checkMethod({ row })))) {
|
|
1718
|
+
reactData.selectRow = row
|
|
1719
|
+
handleRadioReserveRow(row)
|
|
1720
|
+
}
|
|
1721
|
+
return nextTick()
|
|
1722
|
+
}
|
|
1723
|
+
|
|
1724
|
+
const handleCheckedCheckboxRow = (rows: any, value: boolean, isForce?: boolean) => {
|
|
1725
|
+
if (rows && !XEUtils.isArray(rows)) {
|
|
1726
|
+
rows = [rows]
|
|
1727
|
+
}
|
|
1728
|
+
rows.forEach((row: any) => tablePrivateMethods.handleSelectRow({ row }, !!value, isForce))
|
|
1729
|
+
return nextTick()
|
|
1730
|
+
}
|
|
1731
|
+
|
|
1732
|
+
const handleCheckedAllCheckboxRow = (value: boolean, isForce?: boolean) => {
|
|
1733
|
+
const { treeConfig } = props
|
|
1734
|
+
const { selection } = reactData
|
|
1735
|
+
const { afterFullData, checkboxReserveRowMap } = internalData
|
|
1736
|
+
const treeOpts = computeTreeOpts.value
|
|
1737
|
+
const checkboxOpts = computeCheckboxOpts.value
|
|
1738
|
+
const { checkField, reserve, checkStrictly, checkMethod } = checkboxOpts
|
|
1739
|
+
let selectRows: any[] = []
|
|
1740
|
+
const beforeSelection = treeConfig ? [] : selection.filter((row) => $xetable.findRowIndexOf(afterFullData, row) === -1)
|
|
1741
|
+
if (checkStrictly) {
|
|
1742
|
+
reactData.isAllSelected = value
|
|
1743
|
+
} else {
|
|
1744
|
+
/**
|
|
1745
|
+
* 绑定属性方式(高性能,有污染)
|
|
1746
|
+
* 必须在行数据存在对应的属性,否则将不响应
|
|
1747
|
+
*/
|
|
1748
|
+
if (checkField) {
|
|
1749
|
+
const checkValFn = (row: any) => {
|
|
1750
|
+
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
1751
|
+
if (value) {
|
|
1752
|
+
selectRows.push(row)
|
|
1753
|
+
}
|
|
1754
|
+
XEUtils.set(row, checkField, value)
|
|
1755
|
+
}
|
|
1756
|
+
}
|
|
1757
|
+
// 如果存在选中方法
|
|
1758
|
+
// 如果方法成立,则更新值,否则忽略该数据
|
|
1759
|
+
if (treeConfig) {
|
|
1760
|
+
XEUtils.eachTree(afterFullData, checkValFn, treeOpts)
|
|
1761
|
+
} else {
|
|
1762
|
+
afterFullData.forEach(checkValFn)
|
|
1763
|
+
}
|
|
1764
|
+
} else {
|
|
1765
|
+
/**
|
|
1766
|
+
* 默认方式(低性能,无污染)
|
|
1767
|
+
* 无需任何属性,直接绑定
|
|
1768
|
+
*/
|
|
1769
|
+
if (treeConfig) {
|
|
1770
|
+
if (value) {
|
|
1771
|
+
/**
|
|
1772
|
+
* 如果是树勾选
|
|
1773
|
+
* 如果方法成立,则添加到临时集合中
|
|
1774
|
+
*/
|
|
1775
|
+
XEUtils.eachTree(afterFullData, (row) => {
|
|
1776
|
+
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
1777
|
+
selectRows.push(row)
|
|
1778
|
+
}
|
|
1779
|
+
}, treeOpts)
|
|
1780
|
+
} else {
|
|
1781
|
+
/**
|
|
1782
|
+
* 如果是树取消
|
|
1783
|
+
* 如果方法成立,则不添加到临时集合中
|
|
1784
|
+
*/
|
|
1785
|
+
if (!isForce && checkMethod) {
|
|
1786
|
+
XEUtils.eachTree(afterFullData, (row) => {
|
|
1787
|
+
if (checkMethod({ row }) ? 0 : $xetable.findRowIndexOf(selection, row) > -1) {
|
|
1788
|
+
selectRows.push(row)
|
|
1789
|
+
}
|
|
1790
|
+
}, treeOpts)
|
|
1791
|
+
}
|
|
1792
|
+
}
|
|
1793
|
+
} else {
|
|
1794
|
+
if (value) {
|
|
1795
|
+
/**
|
|
1796
|
+
* 如果是行勾选
|
|
1797
|
+
* 如果存在选中方法且成立或者本身已勾选,则添加到临时集合中
|
|
1798
|
+
* 如果不存在选中方法,则添加所有数据到临时集合中
|
|
1799
|
+
*/
|
|
1800
|
+
if (!isForce && checkMethod) {
|
|
1801
|
+
selectRows = afterFullData.filter((row) => $xetable.findRowIndexOf(selection, row) > -1 || checkMethod({ row }))
|
|
1802
|
+
} else {
|
|
1803
|
+
selectRows = afterFullData.slice(0)
|
|
1804
|
+
}
|
|
1805
|
+
} else {
|
|
1806
|
+
/**
|
|
1807
|
+
* 如果是行取消
|
|
1808
|
+
* 如果方法成立,则不添加到临时集合中;如果方法不成立则判断当前是否已勾选,如果已被勾选则添加到新集合中
|
|
1809
|
+
* 如果不存在选中方法,无需处理,临时集合默认为空
|
|
1810
|
+
*/
|
|
1811
|
+
if (!isForce && checkMethod) {
|
|
1812
|
+
selectRows = afterFullData.filter((row) => checkMethod({ row }) ? 0 : $xetable.findRowIndexOf(selection, row) > -1)
|
|
1813
|
+
}
|
|
1814
|
+
}
|
|
1815
|
+
}
|
|
1816
|
+
}
|
|
1817
|
+
if (reserve) {
|
|
1818
|
+
if (value) {
|
|
1819
|
+
selectRows.forEach((row) => {
|
|
1820
|
+
checkboxReserveRowMap[getRowid($xetable, row)] = row
|
|
1821
|
+
})
|
|
1822
|
+
} else {
|
|
1823
|
+
afterFullData.forEach((row) => handleCheckboxReserveRow(row, false))
|
|
1824
|
+
}
|
|
1825
|
+
}
|
|
1826
|
+
reactData.selection = checkField ? [] : beforeSelection.concat(selectRows)
|
|
1827
|
+
}
|
|
1828
|
+
reactData.treeIndeterminates = []
|
|
1829
|
+
tablePrivateMethods.checkSelectionStatus()
|
|
1830
|
+
return nextTick()
|
|
1831
|
+
}
|
|
1832
|
+
|
|
1714
1833
|
// 还原展开、选中等相关状态
|
|
1715
1834
|
const handleReserveStatus = () => {
|
|
1716
1835
|
const { treeConfig } = props
|
|
@@ -1728,14 +1847,14 @@ export default defineComponent({
|
|
|
1728
1847
|
if (radioOpts.reserve && radioReserveRow) {
|
|
1729
1848
|
const rowid = getRowid($xetable, radioReserveRow)
|
|
1730
1849
|
if (fullDataRowIdData[rowid]) {
|
|
1731
|
-
|
|
1850
|
+
handleCheckedRadioRow(fullDataRowIdData[rowid].row, true)
|
|
1732
1851
|
}
|
|
1733
1852
|
}
|
|
1734
1853
|
// 复选框
|
|
1735
1854
|
reactData.selection = getRecoverRow(selection) // 刷新多选行状态
|
|
1736
1855
|
// 还原保留选中状态
|
|
1737
1856
|
if (checkboxOpts.reserve) {
|
|
1738
|
-
|
|
1857
|
+
handleCheckedCheckboxRow(handleReserveRow(internalData.checkboxReserveRowMap), true, true)
|
|
1739
1858
|
}
|
|
1740
1859
|
if (currentRow && !fullAllDataRowIdData[getRowid($xetable, currentRow)]) {
|
|
1741
1860
|
reactData.currentRow = null // 刷新当前行状态
|
|
@@ -1802,7 +1921,7 @@ export default defineComponent({
|
|
|
1802
1921
|
}
|
|
1803
1922
|
// 如果当前节点已选中,则展开后子节点也被选中
|
|
1804
1923
|
if (!checkStrictly && tableMethods.isCheckedByCheckboxRow(row)) {
|
|
1805
|
-
|
|
1924
|
+
handleCheckedCheckboxRow(childRows, true)
|
|
1806
1925
|
}
|
|
1807
1926
|
return nextTick().then(() => {
|
|
1808
1927
|
if (transform) {
|
|
@@ -3049,11 +3168,7 @@ export default defineComponent({
|
|
|
3049
3168
|
* @param {Boolean} value 是否选中
|
|
3050
3169
|
*/
|
|
3051
3170
|
setCheckboxRow (rows: any, value) {
|
|
3052
|
-
|
|
3053
|
-
rows = [rows]
|
|
3054
|
-
}
|
|
3055
|
-
rows.forEach((row: any) => tablePrivateMethods.handleSelectRow({ row }, !!value))
|
|
3056
|
-
return nextTick()
|
|
3171
|
+
return handleCheckedCheckboxRow(rows, value, true)
|
|
3057
3172
|
},
|
|
3058
3173
|
isCheckedByCheckboxRow (row) {
|
|
3059
3174
|
const { selection } = reactData
|
|
@@ -3072,7 +3187,11 @@ export default defineComponent({
|
|
|
3072
3187
|
* 多选,切换某一行的选中状态
|
|
3073
3188
|
*/
|
|
3074
3189
|
toggleCheckboxRow (row) {
|
|
3075
|
-
|
|
3190
|
+
const { selection } = reactData
|
|
3191
|
+
const checkboxOpts = computeCheckboxOpts.value
|
|
3192
|
+
const { checkField } = checkboxOpts
|
|
3193
|
+
const value = checkField ? !XEUtils.get(row, checkField) : $xetable.findRowIndexOf(selection, row) === -1
|
|
3194
|
+
tablePrivateMethods.handleSelectRow({ row }, value, true)
|
|
3076
3195
|
return nextTick()
|
|
3077
3196
|
},
|
|
3078
3197
|
/**
|
|
@@ -3080,104 +3199,7 @@ export default defineComponent({
|
|
|
3080
3199
|
* @param {Boolean} value 是否选中
|
|
3081
3200
|
*/
|
|
3082
3201
|
setAllCheckboxRow (value) {
|
|
3083
|
-
|
|
3084
|
-
const { selection } = reactData
|
|
3085
|
-
const { afterFullData, checkboxReserveRowMap } = internalData
|
|
3086
|
-
const treeOpts = computeTreeOpts.value
|
|
3087
|
-
const checkboxOpts = computeCheckboxOpts.value
|
|
3088
|
-
const { checkField, reserve, checkStrictly, checkMethod } = checkboxOpts
|
|
3089
|
-
let selectRows: any[] = []
|
|
3090
|
-
const beforeSelection = treeConfig ? [] : selection.filter((row) => $xetable.findRowIndexOf(afterFullData, row) === -1)
|
|
3091
|
-
if (checkStrictly) {
|
|
3092
|
-
reactData.isAllSelected = value
|
|
3093
|
-
} else {
|
|
3094
|
-
/**
|
|
3095
|
-
* 绑定属性方式(高性能,有污染)
|
|
3096
|
-
* 必须在行数据存在对应的属性,否则将不响应
|
|
3097
|
-
*/
|
|
3098
|
-
if (checkField) {
|
|
3099
|
-
const checkValFn = (row: any) => {
|
|
3100
|
-
if (!checkMethod || checkMethod({ row })) {
|
|
3101
|
-
if (value) {
|
|
3102
|
-
selectRows.push(row)
|
|
3103
|
-
}
|
|
3104
|
-
XEUtils.set(row, checkField, value)
|
|
3105
|
-
}
|
|
3106
|
-
}
|
|
3107
|
-
// 如果存在选中方法
|
|
3108
|
-
// 如果方法成立,则更新值,否则忽略该数据
|
|
3109
|
-
if (treeConfig) {
|
|
3110
|
-
XEUtils.eachTree(afterFullData, checkValFn, treeOpts)
|
|
3111
|
-
} else {
|
|
3112
|
-
afterFullData.forEach(checkValFn)
|
|
3113
|
-
}
|
|
3114
|
-
} else {
|
|
3115
|
-
/**
|
|
3116
|
-
* 默认方式(低性能,无污染)
|
|
3117
|
-
* 无需任何属性,直接绑定
|
|
3118
|
-
*/
|
|
3119
|
-
if (treeConfig) {
|
|
3120
|
-
if (value) {
|
|
3121
|
-
/**
|
|
3122
|
-
* 如果是树勾选
|
|
3123
|
-
* 如果方法成立,则添加到临时集合中
|
|
3124
|
-
*/
|
|
3125
|
-
XEUtils.eachTree(afterFullData, (row) => {
|
|
3126
|
-
if (!checkMethod || checkMethod({ row })) {
|
|
3127
|
-
selectRows.push(row)
|
|
3128
|
-
}
|
|
3129
|
-
}, treeOpts)
|
|
3130
|
-
} else {
|
|
3131
|
-
/**
|
|
3132
|
-
* 如果是树取消
|
|
3133
|
-
* 如果方法成立,则不添加到临时集合中
|
|
3134
|
-
*/
|
|
3135
|
-
if (checkMethod) {
|
|
3136
|
-
XEUtils.eachTree(afterFullData, (row) => {
|
|
3137
|
-
if (checkMethod({ row }) ? 0 : $xetable.findRowIndexOf(selection, row) > -1) {
|
|
3138
|
-
selectRows.push(row)
|
|
3139
|
-
}
|
|
3140
|
-
}, treeOpts)
|
|
3141
|
-
}
|
|
3142
|
-
}
|
|
3143
|
-
} else {
|
|
3144
|
-
if (value) {
|
|
3145
|
-
/**
|
|
3146
|
-
* 如果是行勾选
|
|
3147
|
-
* 如果存在选中方法且成立或者本身已勾选,则添加到临时集合中
|
|
3148
|
-
* 如果不存在选中方法,则添加所有数据到临时集合中
|
|
3149
|
-
*/
|
|
3150
|
-
if (checkMethod) {
|
|
3151
|
-
selectRows = afterFullData.filter((row) => $xetable.findRowIndexOf(selection, row) > -1 || checkMethod({ row }))
|
|
3152
|
-
} else {
|
|
3153
|
-
selectRows = afterFullData.slice(0)
|
|
3154
|
-
}
|
|
3155
|
-
} else {
|
|
3156
|
-
/**
|
|
3157
|
-
* 如果是行取消
|
|
3158
|
-
* 如果方法成立,则不添加到临时集合中;如果方法不成立则判断当前是否已勾选,如果已被勾选则添加到新集合中
|
|
3159
|
-
* 如果不存在选中方法,无需处理,临时集合默认为空
|
|
3160
|
-
*/
|
|
3161
|
-
if (checkMethod) {
|
|
3162
|
-
selectRows = afterFullData.filter((row) => checkMethod({ row }) ? 0 : $xetable.findRowIndexOf(selection, row) > -1)
|
|
3163
|
-
}
|
|
3164
|
-
}
|
|
3165
|
-
}
|
|
3166
|
-
}
|
|
3167
|
-
if (reserve) {
|
|
3168
|
-
if (value) {
|
|
3169
|
-
selectRows.forEach((row) => {
|
|
3170
|
-
checkboxReserveRowMap[getRowid($xetable, row)] = row
|
|
3171
|
-
})
|
|
3172
|
-
} else {
|
|
3173
|
-
afterFullData.forEach((row) => handleCheckboxReserveRow(row, false))
|
|
3174
|
-
}
|
|
3175
|
-
}
|
|
3176
|
-
reactData.selection = checkField ? [] : beforeSelection.concat(selectRows)
|
|
3177
|
-
}
|
|
3178
|
-
reactData.treeIndeterminates = []
|
|
3179
|
-
tablePrivateMethods.checkSelectionStatus()
|
|
3180
|
-
return nextTick()
|
|
3202
|
+
return handleCheckedAllCheckboxRow(value, true)
|
|
3181
3203
|
},
|
|
3182
3204
|
/**
|
|
3183
3205
|
* 获取单选框保留选中的行
|
|
@@ -3294,7 +3316,7 @@ export default defineComponent({
|
|
|
3294
3316
|
const rowOpts = computeRowOpts.value
|
|
3295
3317
|
const el = refElem.value
|
|
3296
3318
|
tableMethods.clearCurrentRow()
|
|
3297
|
-
tableMethods.clearCurrentColumn()
|
|
3319
|
+
// tableMethods.clearCurrentColumn()
|
|
3298
3320
|
reactData.currentRow = row
|
|
3299
3321
|
if (rowOpts.isCurrent || props.highlightCurrentRow) {
|
|
3300
3322
|
if (el) {
|
|
@@ -3311,13 +3333,7 @@ export default defineComponent({
|
|
|
3311
3333
|
* @param {Row} row 行对象
|
|
3312
3334
|
*/
|
|
3313
3335
|
setRadioRow (row) {
|
|
3314
|
-
|
|
3315
|
-
const { checkMethod } = radioOpts
|
|
3316
|
-
if (row && (!checkMethod || checkMethod({ row }))) {
|
|
3317
|
-
reactData.selectRow = row
|
|
3318
|
-
handleRadioReserveRow(row)
|
|
3319
|
-
}
|
|
3320
|
-
return nextTick()
|
|
3336
|
+
return handleCheckedRadioRow(row, true)
|
|
3321
3337
|
},
|
|
3322
3338
|
/**
|
|
3323
3339
|
* 用于当前行,手动清空当前高亮的状态
|
|
@@ -3385,7 +3401,7 @@ export default defineComponent({
|
|
|
3385
3401
|
setCurrentColumn (fieldOrColumn) {
|
|
3386
3402
|
const column = handleFieldOrColumn($xetable, fieldOrColumn)
|
|
3387
3403
|
if (column) {
|
|
3388
|
-
tableMethods.clearCurrentRow()
|
|
3404
|
+
// tableMethods.clearCurrentRow()
|
|
3389
3405
|
tableMethods.clearCurrentColumn()
|
|
3390
3406
|
reactData.currentColumn = column
|
|
3391
3407
|
}
|
|
@@ -4867,7 +4883,7 @@ export default defineComponent({
|
|
|
4867
4883
|
* 多选,行选中事件
|
|
4868
4884
|
* value 选中true 不选false 半选-1
|
|
4869
4885
|
*/
|
|
4870
|
-
handleSelectRow ({ row }, value) {
|
|
4886
|
+
handleSelectRow ({ row }, value, isForce) {
|
|
4871
4887
|
const { treeConfig } = props
|
|
4872
4888
|
const { selection, treeIndeterminates } = reactData
|
|
4873
4889
|
const { afterFullData } = internalData
|
|
@@ -4884,7 +4900,7 @@ export default defineComponent({
|
|
|
4884
4900
|
} else {
|
|
4885
4901
|
// 更新子节点状态
|
|
4886
4902
|
XEUtils.eachTree([row], (item) => {
|
|
4887
|
-
if ($xetable.eqRow(item, row) || (!checkMethod || checkMethod({ row: item }))) {
|
|
4903
|
+
if ($xetable.eqRow(item, row) || (isForce || (!checkMethod || checkMethod({ row: item })))) {
|
|
4888
4904
|
XEUtils.set(item, checkField, value)
|
|
4889
4905
|
XEUtils.remove(treeIndeterminates, half => $xetable.eqRow(half, item))
|
|
4890
4906
|
handleCheckboxReserveRow(row, value)
|
|
@@ -4895,7 +4911,7 @@ export default defineComponent({
|
|
|
4895
4911
|
const matchObj = XEUtils.findTree(afterFullData, item => $xetable.eqRow(item, row), treeOpts)
|
|
4896
4912
|
if (matchObj && matchObj.parent) {
|
|
4897
4913
|
let parentStatus
|
|
4898
|
-
const vItems = checkMethod ? matchObj.items.filter((item) => checkMethod({ row: item })) : matchObj.items
|
|
4914
|
+
const vItems = !isForce && checkMethod ? matchObj.items.filter((item) => checkMethod({ row: item })) : matchObj.items
|
|
4899
4915
|
const indeterminatesItem = XEUtils.find(matchObj.items, item => $xetable.findRowIndexOf(treeIndeterminates, item) > -1)
|
|
4900
4916
|
if (indeterminatesItem) {
|
|
4901
4917
|
parentStatus = -1
|
|
@@ -4903,10 +4919,10 @@ export default defineComponent({
|
|
|
4903
4919
|
const selectItems = matchObj.items.filter(item => XEUtils.get(item, checkField))
|
|
4904
4920
|
parentStatus = selectItems.filter(item => $xetable.findRowIndexOf(vItems, item) > -1).length === vItems.length ? true : (selectItems.length || value === -1 ? -1 : false)
|
|
4905
4921
|
}
|
|
4906
|
-
return tablePrivateMethods.handleSelectRow({ row: matchObj.parent }, parentStatus)
|
|
4922
|
+
return tablePrivateMethods.handleSelectRow({ row: matchObj.parent }, parentStatus, isForce)
|
|
4907
4923
|
}
|
|
4908
4924
|
} else {
|
|
4909
|
-
if (!checkMethod || checkMethod({ row })) {
|
|
4925
|
+
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
4910
4926
|
XEUtils.set(row, checkField, value)
|
|
4911
4927
|
handleCheckboxReserveRow(row, value)
|
|
4912
4928
|
}
|
|
@@ -4921,7 +4937,7 @@ export default defineComponent({
|
|
|
4921
4937
|
} else {
|
|
4922
4938
|
// 更新子节点状态
|
|
4923
4939
|
XEUtils.eachTree([row], (item) => {
|
|
4924
|
-
if ($xetable.eqRow(item, row) || (!checkMethod || checkMethod({ row: item }))) {
|
|
4940
|
+
if ($xetable.eqRow(item, row) || (isForce || (!checkMethod || checkMethod({ row: item })))) {
|
|
4925
4941
|
if (value) {
|
|
4926
4942
|
selection.push(item)
|
|
4927
4943
|
} else {
|
|
@@ -4936,7 +4952,7 @@ export default defineComponent({
|
|
|
4936
4952
|
const matchObj = XEUtils.findTree(afterFullData, item => $xetable.eqRow(item, row), treeOpts)
|
|
4937
4953
|
if (matchObj && matchObj.parent) {
|
|
4938
4954
|
let parentStatus
|
|
4939
|
-
const vItems = checkMethod ? matchObj.items.filter((item) => checkMethod({ row: item })) : matchObj.items
|
|
4955
|
+
const vItems = !isForce && checkMethod ? matchObj.items.filter((item) => checkMethod({ row: item })) : matchObj.items
|
|
4940
4956
|
const indeterminatesItem = XEUtils.find(matchObj.items, item => $xetable.findRowIndexOf(treeIndeterminates, item) > -1)
|
|
4941
4957
|
if (indeterminatesItem) {
|
|
4942
4958
|
parentStatus = -1
|
|
@@ -4944,10 +4960,10 @@ export default defineComponent({
|
|
|
4944
4960
|
const selectItems = matchObj.items.filter(item => $xetable.findRowIndexOf(selection, item) > -1)
|
|
4945
4961
|
parentStatus = selectItems.filter(item => $xetable.findRowIndexOf(vItems, item) > -1).length === vItems.length ? true : (selectItems.length || value === -1 ? -1 : false)
|
|
4946
4962
|
}
|
|
4947
|
-
return tablePrivateMethods.handleSelectRow({ row: matchObj.parent }, parentStatus)
|
|
4963
|
+
return tablePrivateMethods.handleSelectRow({ row: matchObj.parent }, parentStatus, isForce)
|
|
4948
4964
|
}
|
|
4949
4965
|
} else {
|
|
4950
|
-
if (!checkMethod || checkMethod({ row })) {
|
|
4966
|
+
if (isForce || (!checkMethod || checkMethod({ row }))) {
|
|
4951
4967
|
if (value) {
|
|
4952
4968
|
if ($xetable.findRowIndexOf(selection, row) === -1) {
|
|
4953
4969
|
selection.push(row)
|
|
@@ -5208,7 +5224,7 @@ export default defineComponent({
|
|
|
5208
5224
|
* 多选,选中所有事件
|
|
5209
5225
|
*/
|
|
5210
5226
|
triggerCheckAllEvent (evnt, value) {
|
|
5211
|
-
|
|
5227
|
+
handleCheckedAllCheckboxRow(value)
|
|
5212
5228
|
if (evnt) {
|
|
5213
5229
|
tableMethods.dispatchEvent('checkbox-all', {
|
|
5214
5230
|
records: tableMethods.getCheckboxRecords(),
|
|
@@ -5228,7 +5244,7 @@ export default defineComponent({
|
|
|
5228
5244
|
let newValue = row
|
|
5229
5245
|
let isChange = oldValue !== newValue
|
|
5230
5246
|
if (isChange) {
|
|
5231
|
-
|
|
5247
|
+
handleCheckedRadioRow(newValue)
|
|
5232
5248
|
} else if (!radioOpts.strict) {
|
|
5233
5249
|
isChange = oldValue === newValue
|
|
5234
5250
|
if (isChange) {
|
|
@@ -264,7 +264,7 @@ export default defineComponent({
|
|
|
264
264
|
}, 300)
|
|
265
265
|
}
|
|
266
266
|
|
|
267
|
-
const refreshEvent = () => {
|
|
267
|
+
const refreshEvent = (evnt: KeyboardEvent) => {
|
|
268
268
|
const { isRefresh } = reactData
|
|
269
269
|
const refreshOpts = computeRefreshOpts.value
|
|
270
270
|
if (!isRefresh) {
|
|
@@ -280,7 +280,7 @@ export default defineComponent({
|
|
|
280
280
|
}
|
|
281
281
|
} else if ($xegrid) {
|
|
282
282
|
reactData.isRefresh = true
|
|
283
|
-
$xegrid.
|
|
283
|
+
$xegrid.triggerToolbarCommitEvent({ code: refreshOpts.code || 'reload' }, evnt).catch((e) => e).then(() => {
|
|
284
284
|
reactData.isRefresh = false
|
|
285
285
|
})
|
|
286
286
|
}
|
package/types/grid.d.ts
CHANGED
|
@@ -73,6 +73,9 @@ export type VxeGridEmits = [
|
|
|
73
73
|
'form-reset',
|
|
74
74
|
'form-collapse',
|
|
75
75
|
'form-toggle-collapse',
|
|
76
|
+
'proxy-query',
|
|
77
|
+
'proxy-delete',
|
|
78
|
+
'proxy-save',
|
|
76
79
|
'toolbar-button-click',
|
|
77
80
|
'toolbar-tool-click',
|
|
78
81
|
'zoom'
|
|
@@ -132,6 +135,7 @@ export interface VxeGridMethods extends GridMethods, TablePublicMethods { }
|
|
|
132
135
|
export interface GridPrivateMethods {
|
|
133
136
|
callSlot<T>(slotFunc: ((params: T) => SlotVNodeType | SlotVNodeType[]) | string | null, params: T): SlotVNodeType[]
|
|
134
137
|
extendTableMethods<T>(methodKeys: T[]): any
|
|
138
|
+
triggerToolbarCommitEvent(params: VxeToolbarPropTypes.ButtonConfig | VxeToolbarPropTypes.ToolConfig, evnt: Event): Promise<any>
|
|
135
139
|
triggerToolbarBtnEvent(button: VxeToolbarPropTypes.ButtonConfig, evnt: Event): void
|
|
136
140
|
triggerToolbarTolEvent(button: VxeToolbarPropTypes.ToolConfig, evnt: Event): void
|
|
137
141
|
triggerZoomEvent(evnt: Event): void
|
package/types/table.d.ts
CHANGED
|
@@ -691,7 +691,7 @@ export interface TablePrivateMethods {
|
|
|
691
691
|
saveCustomVisible(): void
|
|
692
692
|
analyColumnWidth(): void
|
|
693
693
|
checkSelectionStatus(): void
|
|
694
|
-
handleSelectRow(params: any, value: any): void
|
|
694
|
+
handleSelectRow(params: any, value: any, isForce?: boolean): void
|
|
695
695
|
handleCustom(): Promise<any>
|
|
696
696
|
preventEvent(evnt: any, type: any, args?: any, next?: any, end?: any): any
|
|
697
697
|
triggerHeaderHelpEvent(evnt: MouseEvent, params: VxeTableDefines.CellRenderHeaderParams): void
|