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.
Files changed (61) hide show
  1. package/README.en.md +3 -3
  2. package/README.md +3 -3
  3. package/README.zh-TW.md +3 -3
  4. package/es/grid/src/grid.js +51 -21
  5. package/es/icon/style/{iconfont.1673016604432.ttf → iconfont.1676040467680.ttf} +0 -0
  6. package/es/icon/style/{iconfont.1673016604432.woff → iconfont.1676040467680.woff} +0 -0
  7. package/es/icon/style/{iconfont.1673016604432.woff2 → iconfont.1676040467680.woff2} +0 -0
  8. package/es/icon/style.css +1 -1
  9. package/es/{iconfont.1673016604432.ttf → iconfont.1676040467680.ttf} +0 -0
  10. package/es/{iconfont.1673016604432.woff → iconfont.1676040467680.woff} +0 -0
  11. package/es/{iconfont.1673016604432.woff2 → iconfont.1676040467680.woff2} +0 -0
  12. package/es/input/src/input.js +4 -4
  13. package/es/list/src/list.js +4 -1
  14. package/es/pager/src/pager.js +8 -2
  15. package/es/style.css +1 -1
  16. package/es/style.min.css +1 -1
  17. package/es/table/src/cell.js +2 -2
  18. package/es/table/src/table.js +151 -138
  19. package/es/toolbar/src/toolbar.js +2 -2
  20. package/es/tools/log.js +1 -1
  21. package/es/v-x-e-table/index.js +1 -1
  22. package/lib/grid/src/grid.js +72 -26
  23. package/lib/grid/src/grid.min.js +1 -1
  24. package/lib/icon/style/{iconfont.1673016604432.ttf → iconfont.1676040467680.ttf} +0 -0
  25. package/lib/icon/style/{iconfont.1673016604432.woff → iconfont.1676040467680.woff} +0 -0
  26. package/lib/icon/style/{iconfont.1673016604432.woff2 → iconfont.1676040467680.woff2} +0 -0
  27. package/lib/icon/style/style.css +1 -1
  28. package/lib/icon/style/style.min.css +1 -1
  29. package/lib/{iconfont.1673016604432.ttf → iconfont.1676040467680.ttf} +0 -0
  30. package/lib/{iconfont.1673016604432.woff → iconfont.1676040467680.woff} +0 -0
  31. package/lib/{iconfont.1673016604432.woff2 → iconfont.1676040467680.woff2} +0 -0
  32. package/lib/index.umd.js +277 -195
  33. package/lib/index.umd.min.js +1 -1
  34. package/lib/input/src/input.js +4 -4
  35. package/lib/input/src/input.min.js +1 -1
  36. package/lib/list/src/list.js +5 -0
  37. package/lib/list/src/list.min.js +1 -1
  38. package/lib/pager/src/pager.js +8 -2
  39. package/lib/pager/src/pager.min.js +1 -1
  40. package/lib/style.css +1 -1
  41. package/lib/style.min.css +1 -1
  42. package/lib/table/src/cell.js +2 -2
  43. package/lib/table/src/cell.min.js +1 -1
  44. package/lib/table/src/table.js +172 -159
  45. package/lib/table/src/table.min.js +1 -1
  46. package/lib/toolbar/src/toolbar.js +4 -2
  47. package/lib/toolbar/src/toolbar.min.js +1 -1
  48. package/lib/tools/log.js +1 -1
  49. package/lib/tools/log.min.js +1 -1
  50. package/lib/v-x-e-table/index.js +1 -1
  51. package/lib/v-x-e-table/index.min.js +1 -1
  52. package/package.json +1 -1
  53. package/packages/grid/src/grid.ts +50 -20
  54. package/packages/input/src/input.ts +4 -4
  55. package/packages/list/src/list.ts +5 -1
  56. package/packages/pager/src/pager.ts +8 -2
  57. package/packages/table/src/cell.ts +3 -3
  58. package/packages/table/src/table.ts +146 -130
  59. package/packages/toolbar/src/toolbar.ts +2 -2
  60. package/types/grid.d.ts +4 -0
  61. 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
- tableMethods.setAllCheckboxRow(true)
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
- tableMethods.setCheckboxRow(defSelection, true)
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
- tableMethods.setRadioRow(fullDataRowIdData[rowid].row)
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
- tableMethods.setRadioRow(fullDataRowIdData[rowid].row)
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
- tableMethods.setCheckboxRow(handleReserveRow(internalData.checkboxReserveRowMap), true)
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
- tableMethods.setCheckboxRow(childRows, true)
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
- if (rows && !XEUtils.isArray(rows)) {
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
- tablePrivateMethods.handleToggleCheckRowEvent(null, { row })
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
- const { treeConfig } = props
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
- const radioOpts = computeRadioOpts.value
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
- tableMethods.setAllCheckboxRow(value)
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
- tableMethods.setRadioRow(newValue)
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.commitProxy(refreshOpts.code || 'reload').catch((e) => e).then(() => {
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