vxe-table 4.7.76 → 4.7.78

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 +1 -1
  2. package/README.ja-JP.md +1 -1
  3. package/README.md +1 -1
  4. package/README.zh-TW.md +1 -1
  5. package/es/grid/src/grid.js +45 -36
  6. package/es/style.css +1 -1
  7. package/es/table/module/custom/panel.js +5 -0
  8. package/es/table/src/body.js +26 -2
  9. package/es/table/src/cell.js +6 -6
  10. package/es/table/src/column.js +45 -18
  11. package/es/table/src/footer.js +16 -4
  12. package/es/table/src/group.js +18 -12
  13. package/es/table/src/header.js +4 -1
  14. package/es/table/src/props.js +96 -24
  15. package/es/table/src/table.js +80 -20
  16. package/es/table/src/util.js +1 -1
  17. package/es/toolbar/src/toolbar.js +89 -68
  18. package/es/ui/index.js +2 -2
  19. package/es/ui/src/log.js +1 -1
  20. package/lib/grid/src/grid.js +45 -39
  21. package/lib/grid/src/grid.min.js +1 -1
  22. package/lib/index.umd.js +343 -198
  23. package/lib/index.umd.min.js +1 -1
  24. package/lib/style.css +1 -1
  25. package/lib/table/module/custom/panel.js +7 -0
  26. package/lib/table/module/custom/panel.min.js +1 -1
  27. package/lib/table/src/cell.js +3 -3
  28. package/lib/table/src/cell.min.js +1 -1
  29. package/lib/table/src/column.js +16 -10
  30. package/lib/table/src/column.min.js +1 -1
  31. package/lib/table/src/group.js +17 -11
  32. package/lib/table/src/group.min.js +1 -1
  33. package/lib/table/src/table.js +91 -22
  34. package/lib/table/src/table.min.js +1 -1
  35. package/lib/table/src/util.js +1 -1
  36. package/lib/table/src/util.min.js +1 -1
  37. package/lib/toolbar/src/toolbar.js +109 -76
  38. package/lib/toolbar/src/toolbar.min.js +1 -1
  39. package/lib/ui/index.js +2 -2
  40. package/lib/ui/index.min.js +1 -1
  41. package/lib/ui/src/log.js +1 -1
  42. package/lib/ui/src/log.min.js +1 -1
  43. package/package.json +2 -2
  44. package/packages/grid/src/grid.ts +54 -44
  45. package/packages/table/module/custom/panel.ts +5 -0
  46. package/packages/table/src/body.ts +26 -2
  47. package/packages/table/src/cell.ts +9 -8
  48. package/packages/table/src/column.ts +47 -20
  49. package/packages/table/src/footer.ts +16 -4
  50. package/packages/table/src/group.ts +19 -13
  51. package/packages/table/src/header.ts +4 -1
  52. package/packages/table/src/props.ts +97 -24
  53. package/packages/table/src/table.ts +80 -25
  54. package/packages/table/src/util.ts +2 -2
  55. package/packages/toolbar/src/toolbar.ts +97 -75
  56. /package/es/{iconfont.1725332971397.ttf → iconfont.1726051234125.ttf} +0 -0
  57. /package/es/{iconfont.1725332971397.woff → iconfont.1726051234125.woff} +0 -0
  58. /package/es/{iconfont.1725332971397.woff2 → iconfont.1726051234125.woff2} +0 -0
  59. /package/lib/{iconfont.1725332971397.ttf → iconfont.1726051234125.ttf} +0 -0
  60. /package/lib/{iconfont.1725332971397.woff → iconfont.1726051234125.woff} +0 -0
  61. /package/lib/{iconfont.1725332971397.woff2 → iconfont.1726051234125.woff2} +0 -0
@@ -1904,18 +1904,19 @@ export default defineComponent({
1904
1904
  return nextTick()
1905
1905
  }
1906
1906
 
1907
- const handleCheckedCheckboxRow = (rows: any, value: boolean, isForce?: boolean) => {
1907
+ const handleCheckedCheckboxRow = (rows: any[], value: boolean, isForce?: boolean) => {
1908
1908
  if (rows && !XEUtils.isArray(rows)) {
1909
1909
  rows = [rows]
1910
1910
  }
1911
- rows.forEach((row: any) => tablePrivateMethods.handleSelectRow({ row }, !!value, isForce))
1911
+ tablePrivateMethods.handleBatchSelectRows(rows, !!value, isForce)
1912
+ tablePrivateMethods.checkSelectionStatus()
1912
1913
  return nextTick()
1913
1914
  }
1914
1915
 
1915
1916
  const handleCheckedAllCheckboxRow = (value: boolean, isForce?: boolean) => {
1916
1917
  const { treeConfig } = props
1917
1918
  const { selectCheckboxMaps } = reactData
1918
- const { afterFullData, afterFullRowMaps, checkboxReserveRowMap } = internalData
1919
+ const { afterFullData, checkboxReserveRowMap } = internalData
1919
1920
  const treeOpts = computeTreeOpts.value
1920
1921
  const childrenField = treeOpts.children || treeOpts.childrenField
1921
1922
  const checkboxOpts = computeCheckboxOpts.value
@@ -1923,16 +1924,6 @@ export default defineComponent({
1923
1924
  const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField
1924
1925
  const selectRowMaps: Record<string, any> = {}
1925
1926
 
1926
- // 疑惑!
1927
- if (!treeConfig) {
1928
- XEUtils.each(selectCheckboxMaps, (row, rowid) => {
1929
- if (!afterFullRowMaps[rowid]) {
1930
- selectRowMaps[rowid] = row
1931
- }
1932
- })
1933
- }
1934
- // 疑惑!
1935
-
1936
1927
  if (checkStrictly) {
1937
1928
  reactData.isAllSelected = value
1938
1929
  } else {
@@ -2867,7 +2858,13 @@ export default defineComponent({
2867
2858
  if (!XEUtils.isArray(rows)) {
2868
2859
  rest = [rows]
2869
2860
  }
2870
- rest.forEach(item => Object.assign(item, record))
2861
+ const rowkey = getRowkey($xeTable)
2862
+ rest.forEach(row => {
2863
+ const rowid = getRowid($xeTable, row)
2864
+ const newRecord = XEUtils.clone(Object.assign({}, record), true)
2865
+ XEUtils.set(newRecord, rowkey, rowid)
2866
+ Object.assign(row, newRecord)
2867
+ })
2871
2868
  }
2872
2869
  return nextTick()
2873
2870
  },
@@ -2887,11 +2884,14 @@ export default defineComponent({
2887
2884
  const oRow = tableSourceData[rowIndex]
2888
2885
  if (oRow && row) {
2889
2886
  if (field) {
2890
- const newValue = XEUtils.get(record || row, field)
2887
+ const newValue = XEUtils.clone(XEUtils.get(record || row, field), true)
2891
2888
  XEUtils.set(row, field, newValue)
2892
2889
  XEUtils.set(oRow, field, newValue)
2893
2890
  } else {
2894
- const newRecord = XEUtils.clone({ ...record }, true)
2891
+ const rowkey = getRowkey($xeTable)
2892
+ const rowid = getRowid($xeTable, row)
2893
+ const newRecord = XEUtils.clone(Object.assign({}, record), true)
2894
+ XEUtils.set(newRecord, rowkey, rowid)
2895
2895
  XEUtils.destructuring(oRow, Object.assign(row, newRecord))
2896
2896
  }
2897
2897
  }
@@ -3651,7 +3651,10 @@ export default defineComponent({
3651
3651
  * @param {Array/Row} rows 行数据
3652
3652
  * @param {Boolean} value 是否选中
3653
3653
  */
3654
- setCheckboxRow (rows: any, value) {
3654
+ setCheckboxRow (rows, value) {
3655
+ if (rows && !XEUtils.isArray(rows)) {
3656
+ rows = [rows]
3657
+ }
3655
3658
  return handleCheckedCheckboxRow(rows, value, true)
3656
3659
  },
3657
3660
  isCheckedByCheckboxRow (row) {
@@ -3676,6 +3679,7 @@ export default defineComponent({
3676
3679
  const { checkField } = checkboxOpts
3677
3680
  const value = checkField ? !XEUtils.get(row, checkField) : !selectCheckboxMaps[getRowid($xeTable, row)]
3678
3681
  tablePrivateMethods.handleSelectRow({ row }, value, true)
3682
+ tablePrivateMethods.checkSelectionStatus()
3679
3683
  return nextTick()
3680
3684
  },
3681
3685
  /**
@@ -5692,13 +5696,63 @@ export default defineComponent({
5692
5696
  }
5693
5697
  },
5694
5698
  /**
5699
+ * 多行
5700
+ * 多选,行选中事件
5701
+ * value 选中true 不选false 半选-1
5702
+ */
5703
+ handleBatchSelectRows (rows, value, isForce) {
5704
+ const { treeConfig } = props
5705
+ const { selectCheckboxMaps } = reactData
5706
+ const selectRowMaps = Object.assign({}, selectCheckboxMaps)
5707
+ const checkboxOpts = computeCheckboxOpts.value
5708
+ const { checkField, checkStrictly, checkMethod } = checkboxOpts
5709
+ if (checkField) {
5710
+ if (treeConfig && !checkStrictly) {
5711
+ rows.forEach(row => {
5712
+ tablePrivateMethods.handleSelectRow({ row }, value, isForce)
5713
+ })
5714
+ } else {
5715
+ rows.forEach(row => {
5716
+ if (isForce || (!checkMethod || checkMethod({ row }))) {
5717
+ XEUtils.set(row, checkField, value)
5718
+ handleCheckboxReserveRow(row, value)
5719
+ }
5720
+ })
5721
+ }
5722
+ } else {
5723
+ if (treeConfig && !checkStrictly) {
5724
+ rows.forEach(row => {
5725
+ tablePrivateMethods.handleSelectRow({ row }, value, isForce)
5726
+ })
5727
+ } else {
5728
+ rows.forEach(row => {
5729
+ const rowid = getRowid($xeTable, row)
5730
+ if (isForce || (!checkMethod || checkMethod({ row }))) {
5731
+ if (value) {
5732
+ if (!selectRowMaps[rowid]) {
5733
+ selectRowMaps[rowid] = row
5734
+ }
5735
+ } else {
5736
+ if (selectRowMaps[rowid]) {
5737
+ delete selectRowMaps[rowid]
5738
+ }
5739
+ }
5740
+ handleCheckboxReserveRow(row, value)
5741
+ }
5742
+ })
5743
+ }
5744
+ }
5745
+ reactData.selectCheckboxMaps = selectRowMaps
5746
+ },
5747
+ /**
5748
+ * 单行
5695
5749
  * 多选,行选中事件
5696
5750
  * value 选中true 不选false 半选-1
5697
5751
  */
5698
5752
  handleSelectRow ({ row }, value, isForce) {
5699
5753
  const { treeConfig } = props
5700
5754
  const { selectCheckboxMaps, treeIndeterminateMaps } = reactData
5701
- const selectRowMaps = { ...selectCheckboxMaps }
5755
+ const selectRowMaps = Object.assign({}, selectCheckboxMaps)
5702
5756
  const { afterFullData } = internalData
5703
5757
  const treeOpts = computeTreeOpts.value
5704
5758
  const childrenField = treeOpts.children || treeOpts.childrenField
@@ -5763,7 +5817,8 @@ export default defineComponent({
5763
5817
  parentStatus = selectItems.filter(item => vItemMaps[getRowid($xeTable, item)]).length === vItems.length ? true : (selectItems.length || value === -1 ? -1 : false)
5764
5818
  }
5765
5819
  reactData.selectCheckboxMaps = selectRowMaps
5766
- return tablePrivateMethods.handleSelectRow({ row: matchObj.parent }, parentStatus, isForce)
5820
+ tablePrivateMethods.handleSelectRow({ row: matchObj.parent }, parentStatus, isForce)
5821
+ return
5767
5822
  }
5768
5823
  } else {
5769
5824
  if (isForce || (!checkMethod || checkMethod({ row }))) {
@@ -5838,7 +5893,8 @@ export default defineComponent({
5838
5893
  parentStatus = selectItems.filter(item => vItemMaps[getRowid($xeTable, item)]).length === vItems.length ? true : (selectItems.length || value === -1 ? -1 : false)
5839
5894
  }
5840
5895
  reactData.selectCheckboxMaps = selectRowMaps
5841
- return tablePrivateMethods.handleSelectRow({ row: matchObj.parent }, parentStatus, isForce)
5896
+ tablePrivateMethods.handleSelectRow({ row: matchObj.parent }, parentStatus, isForce)
5897
+ return
5842
5898
  }
5843
5899
  } else {
5844
5900
  if (isForce || (!checkMethod || checkMethod({ row }))) {
@@ -5856,7 +5912,6 @@ export default defineComponent({
5856
5912
  }
5857
5913
  }
5858
5914
  reactData.selectCheckboxMaps = selectRowMaps
5859
- tablePrivateMethods.checkSelectionStatus()
5860
5915
  },
5861
5916
  triggerHeaderTitleEvent (evnt, iconParams, params) {
5862
5917
  const tipContent = iconParams.content || (iconParams as any).message
@@ -6102,6 +6157,7 @@ export default defineComponent({
6102
6157
  tablePrivateMethods.triggerCheckRowEvent(evnt, params, value)
6103
6158
  } else {
6104
6159
  tablePrivateMethods.handleSelectRow(params, value)
6160
+ tablePrivateMethods.checkSelectionStatus()
6105
6161
  }
6106
6162
  },
6107
6163
  triggerCheckRowEvent (evnt: MouseEvent, params, value) {
@@ -6130,6 +6186,7 @@ export default defineComponent({
6130
6186
  }
6131
6187
  if (!checkMethod || checkMethod({ row })) {
6132
6188
  tablePrivateMethods.handleSelectRow(params, value)
6189
+ tablePrivateMethods.checkSelectionStatus()
6133
6190
  tableMethods.dispatchEvent('checkbox-change', Object.assign({
6134
6191
  records: tableMethods.getCheckboxRecords(),
6135
6192
  reserves: tableMethods.getCheckboxReserveRecords(),
@@ -6911,9 +6968,7 @@ export default defineComponent({
6911
6968
  globalEvents.on($xeTable, 'mousewheel', handleGlobalMousewheelEvent)
6912
6969
  globalEvents.on($xeTable, 'keydown', handleGlobalKeydownEvent)
6913
6970
  globalEvents.on($xeTable, 'resize', handleGlobalResizeEvent)
6914
- if ($xeTable.handleGlobalContextmenuEvent) {
6915
- globalEvents.on($xeTable, 'contextmenu', $xeTable.handleGlobalContextmenuEvent)
6916
- }
6971
+ globalEvents.on($xeTable, 'contextmenu', $xeTable.handleGlobalContextmenuEvent)
6917
6972
  tablePrivateMethods.preventEvent(null, 'mounted', { $table: $xeTable })
6918
6973
  })
6919
6974
 
@@ -7119,7 +7174,7 @@ export default defineComponent({
7119
7174
  })
7120
7175
  : createCommentVNode(),
7121
7176
  /**
7122
- * 导出/导出
7177
+ * 导出
7123
7178
  */
7124
7179
  initStore.export && (props.exportConfig || props.printConfig)
7125
7180
  ? h(TableExportPanelComponent, {
@@ -120,7 +120,7 @@ export function getRowid ($xeTable: VxeTableConstructor, row: any) {
120
120
  }
121
121
 
122
122
  export interface XEColumnInstance {
123
- column: ColumnInfo;
123
+ columnConfig: ColumnInfo;
124
124
  }
125
125
 
126
126
  export const handleFieldOrColumn = ($xeTable: VxeTableConstructor, fieldOrColumn: string | VxeTableDefines.ColumnInfo | null) => {
@@ -294,7 +294,7 @@ export function assembleColumn ($xeTable: VxeTableConstructor & VxeTablePrivateM
294
294
  const { reactData } = $xeTable
295
295
  const { staticColumns } = reactData
296
296
  const parentElem = elem.parentNode
297
- const parentColumn = colgroup ? colgroup.column : null
297
+ const parentColumn = colgroup ? colgroup.columnConfig : null
298
298
  const parentCols = parentColumn ? parentColumn.children : staticColumns
299
299
  if (parentElem && parentCols) {
300
300
  parentCols.splice(XEUtils.arrayIndexOf(parentElem.children, elem), 0, column)
@@ -4,8 +4,8 @@ import { VxeUI } from '../../ui'
4
4
  import { getSlotVNs } from '../../ui/src/vn'
5
5
  import { warnLog, errLog } from '../../ui/src/log'
6
6
 
7
- import type { VxeButtonComponent, VxeButtonEvents } from 'vxe-pc-ui'
8
- import type { VxeGridConstructor, GridPrivateMethods, ToolbarMethods, VxeToolbarConstructor, VxeToolbarEmits, VxeToolbarPropTypes, VxeTableConstructor, ToolbarPrivateRef, VxeTableMethods, VxeTablePrivateMethods, ToolbarReactData } from '../../../types'
7
+ import type { ValueOf, VxeButtonComponent, VxeButtonEvents } from 'vxe-pc-ui'
8
+ import type { VxeGridConstructor, GridPrivateMethods, ToolbarMethods, ToolbarInternalData, VxeToolbarConstructor, VxeToolbarEmits, VxeToolbarPropTypes, ToolbarPrivateRef, ToolbarReactData } from '../../../types'
9
9
 
10
10
  const { getConfig, getIcon, getI18n, renderer, commands, createEvent, useFns } = VxeUI
11
11
 
@@ -19,10 +19,22 @@ export default defineComponent({
19
19
  print: [Boolean, Object] as PropType<VxeToolbarPropTypes.Print>,
20
20
  zoom: [Boolean, Object] as PropType< VxeToolbarPropTypes.Zoom>,
21
21
  custom: [Boolean, Object] as PropType<VxeToolbarPropTypes.Custom>,
22
- buttons: { type: Array as PropType<VxeToolbarPropTypes.Buttons>, default: () => getConfig().toolbar.buttons },
23
- tools: { type: Array as PropType<VxeToolbarPropTypes.Tools>, default: () => getConfig().toolbar.tools },
24
- perfect: { type: Boolean as PropType<VxeToolbarPropTypes.Perfect>, default: () => getConfig().toolbar.perfect },
25
- size: { type: String as PropType<VxeToolbarPropTypes.Size>, default: () => getConfig().toolbar.size || getConfig().size },
22
+ buttons: {
23
+ type: Array as PropType<VxeToolbarPropTypes.Buttons>,
24
+ default: () => getConfig().toolbar.buttons
25
+ },
26
+ tools: {
27
+ type: Array as PropType<VxeToolbarPropTypes.Tools>,
28
+ default: () => getConfig().toolbar.tools
29
+ },
30
+ perfect: {
31
+ type: Boolean as PropType<VxeToolbarPropTypes.Perfect>,
32
+ default: () => getConfig().toolbar.perfect
33
+ },
34
+ size: {
35
+ type: String as PropType<VxeToolbarPropTypes.Size>,
36
+ default: () => getConfig().toolbar.size || getConfig().size
37
+ },
26
38
  className: [String, Function] as PropType<VxeToolbarPropTypes.ClassName>
27
39
  },
28
40
  emits: [
@@ -41,9 +53,14 @@ export default defineComponent({
41
53
 
42
54
  const reactData = reactive<ToolbarReactData>({
43
55
  isRefresh: false,
56
+ connectFlag: 0,
44
57
  columns: []
45
58
  })
46
59
 
60
+ const internalData: ToolbarInternalData = {
61
+ connectTable: null
62
+ }
63
+
47
64
  const refElem = ref() as Ref<HTMLDivElement>
48
65
 
49
66
  const refMaps: ToolbarPrivateRef = {
@@ -55,15 +72,13 @@ export default defineComponent({
55
72
  props,
56
73
  context,
57
74
  reactData,
75
+ internalData,
58
76
  getRefMaps: () => refMaps
59
77
  } as unknown as VxeToolbarConstructor
60
78
 
61
79
  let toolbarMethods = {} as ToolbarMethods
62
80
 
63
- const $xeGrid = inject('$xeGrid', null as (VxeGridConstructor & GridPrivateMethods) | null)
64
- const refTable = ref<VxeTableConstructor & VxeTableMethods & VxeTablePrivateMethods>()
65
-
66
- const connectFlag = ref(0)
81
+ const $xeGrid = inject<(VxeGridConstructor & GridPrivateMethods) | null>('$xeGrid', null)
67
82
 
68
83
  const computeRefreshOpts = computed(() => {
69
84
  return Object.assign({}, getConfig().toolbar.refresh, props.refresh) as VxeToolbarPropTypes.RefreshOpts
@@ -90,8 +105,9 @@ export default defineComponent({
90
105
  })
91
106
 
92
107
  const computeTableCustomOpts = computed(() => {
93
- const $table = refTable.value
94
- if (connectFlag.value || $table) {
108
+ const { connectTable } = internalData
109
+ const $table = connectTable
110
+ if (reactData.connectFlag || $table) {
95
111
  if ($table) {
96
112
  const { computeCustomOpts } = $table.getComputeMaps()
97
113
  return computeCustomOpts.value
@@ -106,7 +122,8 @@ export default defineComponent({
106
122
  })
107
123
 
108
124
  const checkTable = () => {
109
- const $table = refTable.value
125
+ const { connectTable } = internalData
126
+ const $table = connectTable
110
127
  if ($table) {
111
128
  return true
112
129
  }
@@ -114,7 +131,8 @@ export default defineComponent({
114
131
  }
115
132
 
116
133
  const handleClickSettingEvent = ({ $event }: any) => {
117
- const $table = refTable.value
134
+ const { connectTable } = internalData
135
+ const $table = connectTable
118
136
  if ($table) {
119
137
  if ($table.triggerCustomEvent) {
120
138
  $table.triggerCustomEvent($event)
@@ -125,7 +143,8 @@ export default defineComponent({
125
143
  }
126
144
 
127
145
  const handleMouseenterSettingEvent = ({ $event }: any) => {
128
- const $table = refTable.value
146
+ const { connectTable } = internalData
147
+ const $table = connectTable
129
148
  if ($table) {
130
149
  $table.customOpenEvent($event)
131
150
  } else {
@@ -134,7 +153,8 @@ export default defineComponent({
134
153
  }
135
154
 
136
155
  const handleMouseleaveSettingEvent = ({ $event }: any) => {
137
- const $table = refTable.value
156
+ const { connectTable } = internalData
157
+ const $table = connectTable
138
158
  if ($table) {
139
159
  const { customStore } = $table.reactData
140
160
  customStore.activeBtn = false
@@ -176,7 +196,8 @@ export default defineComponent({
176
196
  }
177
197
 
178
198
  const btnEvent = (evnt: Event, item: VxeToolbarPropTypes.ButtonConfig) => {
179
- const $table = refTable.value
199
+ const { connectTable } = internalData
200
+ const $table = connectTable
180
201
  const { code } = item
181
202
  if (code) {
182
203
  if ($xeGrid) {
@@ -200,7 +221,8 @@ export default defineComponent({
200
221
  }
201
222
 
202
223
  const tolEvent = (evnt: Event, item: VxeToolbarPropTypes.ButtonConfig) => {
203
- const $table = refTable.value
224
+ const { connectTable } = internalData
225
+ const $table = connectTable
204
226
  const { code } = item
205
227
  if (code) {
206
228
  if ($xeGrid) {
@@ -225,7 +247,8 @@ export default defineComponent({
225
247
 
226
248
  const importEvent = () => {
227
249
  if (checkTable()) {
228
- const $table = refTable.value
250
+ const { connectTable } = internalData
251
+ const $table = connectTable
229
252
  if ($table) {
230
253
  $table.openImport()
231
254
  }
@@ -234,7 +257,8 @@ export default defineComponent({
234
257
 
235
258
  const exportEvent = () => {
236
259
  if (checkTable()) {
237
- const $table = refTable.value
260
+ const { connectTable } = internalData
261
+ const $table = connectTable
238
262
  if ($table) {
239
263
  $table.openExport()
240
264
  }
@@ -243,13 +267,29 @@ export default defineComponent({
243
267
 
244
268
  const printEvent = () => {
245
269
  if (checkTable()) {
246
- const $table = refTable.value
270
+ const { connectTable } = internalData
271
+ const $table = connectTable
247
272
  if ($table) {
248
273
  $table.openPrint()
249
274
  }
250
275
  }
251
276
  }
252
277
 
278
+ const dispatchEvent = (type: ValueOf<VxeToolbarEmits>, params: Record<string, any>, evnt: Event | null) => {
279
+ emit(type, createEvent(evnt, { $toolbar: $xeToolbar }, params))
280
+ }
281
+
282
+ toolbarMethods = {
283
+ dispatchEvent,
284
+ syncUpdate (params) {
285
+ internalData.connectTable = params.$table
286
+ reactData.columns = params.collectColumn
287
+ reactData.connectFlag++
288
+ }
289
+ }
290
+
291
+ Object.assign($xeToolbar, toolbarMethods)
292
+
253
293
  const renderDropdowns = (item: VxeToolbarPropTypes.ButtonConfig, isBtn: boolean) => {
254
294
  const { dropdowns } = item
255
295
  const downVNs: VNode[] = []
@@ -283,11 +323,8 @@ export default defineComponent({
283
323
  */
284
324
  const renderBtns = () => {
285
325
  const { buttons } = props
286
- const $table = refTable.value
287
- const buttonsSlot = slots.buttons
288
- if (buttonsSlot) {
289
- return getSlotVNs(buttonsSlot({ $grid: $xeGrid, $table: $table }))
290
- }
326
+ const { connectTable } = internalData
327
+ const $table = connectTable
291
328
  const btnVNs: VNode[] = []
292
329
  if (buttons) {
293
330
  buttons.forEach((item) => {
@@ -339,11 +376,8 @@ export default defineComponent({
339
376
  */
340
377
  const renderRightTools = () => {
341
378
  const { tools } = props
342
- const $table = refTable.value
343
- const toolsSlot = slots.tools
344
- if (toolsSlot) {
345
- return getSlotVNs(toolsSlot({ $grid: $xeGrid, $table: $table }))
346
- }
379
+ const { connectTable } = internalData
380
+ const $table = connectTable
347
381
  const btnVNs: VNode[] = []
348
382
  if (tools) {
349
383
  tools.forEach((item, tIndex) => {
@@ -487,47 +521,14 @@ export default defineComponent({
487
521
  : createCommentVNode()
488
522
  }
489
523
 
490
- toolbarMethods = {
491
- dispatchEvent (type, params, evnt) {
492
- emit(type, createEvent(evnt, { $toolbar: $xeToolbar }, params))
493
- },
494
- syncUpdate (params) {
495
- const { collectColumn } = params
496
- refTable.value = params.$table
497
- reactData.columns = collectColumn
498
- connectFlag.value++
499
- }
500
- }
501
-
502
- Object.assign($xeToolbar, toolbarMethods)
503
-
504
- nextTick(() => {
505
- const { refresh } = props
506
- const refreshOpts = computeRefreshOpts.value
507
- const queryMethod = refreshOpts.queryMethod || refreshOpts.query
508
- if (refresh && !$xeGrid && !queryMethod) {
509
- warnLog('vxe.error.notFunc', ['queryMethod'])
510
- }
511
- const customOpts = computeCustomOpts.value
512
- if (process.env.VUE_APP_VXE_ENV === 'development') {
513
- if (customOpts.isFooter) {
514
- warnLog('vxe.error.delProp', ['toolbar.custom.isFooter', 'table.custom-config.showFooter'])
515
- }
516
- if (customOpts.showFooter) {
517
- warnLog('vxe.error.delProp', ['toolbar.custom.showFooter', 'table.custom-config.showFooter'])
518
- }
519
- if (customOpts.immediate) {
520
- warnLog('vxe.error.delProp', ['toolbar.custom.immediate', 'table.custom-config.immediate'])
521
- }
522
- if (customOpts.trigger) {
523
- warnLog('vxe.error.delProp', ['toolbar.custom.trigger', 'table.custom-config.trigger'])
524
- }
525
- }
526
- })
527
-
528
524
  const renderVN = () => {
529
525
  const { perfect, loading, refresh, zoom, custom, className } = props
526
+ const { connectTable } = internalData
530
527
  const vSize = computeSize.value
528
+ const toolsSlot = slots.tools
529
+ const buttonsSlot = slots.buttons
530
+ const $table = connectTable
531
+
531
532
  return h('div', {
532
533
  ref: refElem,
533
534
  class: ['vxe-toolbar', className ? (XEUtils.isFunction(className) ? className({ $toolbar: $xeToolbar }) : className) : '', {
@@ -538,10 +539,10 @@ export default defineComponent({
538
539
  }, [
539
540
  h('div', {
540
541
  class: 'vxe-buttons--wrapper'
541
- }, renderBtns()),
542
+ }, buttonsSlot ? buttonsSlot({ $grid: $xeGrid, $table: $table }) : renderBtns()),
542
543
  h('div', {
543
544
  class: 'vxe-tools--wrapper'
544
- }, renderRightTools()),
545
+ }, toolsSlot ? toolsSlot({ $grid: $xeGrid, $table: $table }) : renderRightTools()),
545
546
  h('div', {
546
547
  class: 'vxe-tools--operate'
547
548
  }, [
@@ -557,15 +558,36 @@ export default defineComponent({
557
558
 
558
559
  $xeToolbar.renderVN = renderVN
559
560
 
560
- if (process.env.VUE_APP_VXE_ENV === 'development') {
561
- nextTick(() => {
561
+ nextTick(() => {
562
+ const { refresh } = props
563
+ const refreshOpts = computeRefreshOpts.value
564
+ const queryMethod = refreshOpts.queryMethod || refreshOpts.query
565
+ if (refresh && !$xeGrid && !queryMethod) {
566
+ warnLog('vxe.error.notFunc', ['queryMethod'])
567
+ }
568
+ const customOpts = computeCustomOpts.value
569
+ if (process.env.VUE_APP_VXE_ENV === 'development') {
570
+ if (customOpts.isFooter) {
571
+ warnLog('vxe.error.delProp', ['toolbar.custom.isFooter', 'table.custom-config.showFooter'])
572
+ }
573
+ if (customOpts.showFooter) {
574
+ warnLog('vxe.error.delProp', ['toolbar.custom.showFooter', 'table.custom-config.showFooter'])
575
+ }
576
+ if (customOpts.immediate) {
577
+ warnLog('vxe.error.delProp', ['toolbar.custom.immediate', 'table.custom-config.immediate'])
578
+ }
579
+ if (customOpts.trigger) {
580
+ warnLog('vxe.error.delProp', ['toolbar.custom.trigger', 'table.custom-config.trigger'])
581
+ }
582
+ }
583
+ if (process.env.VUE_APP_VXE_ENV === 'development') {
562
584
  if (props.refresh || props.import || props.export || props.print || props.zoom) {
563
585
  if (!VxeUIButtonComponent) {
564
586
  errLog('vxe.error.reqComp', ['vxe-button'])
565
587
  }
566
588
  }
567
- })
568
- }
589
+ }
590
+ })
569
591
 
570
592
  return $xeToolbar
571
593
  },