vxe-table 3.24.0-beta.0 → 3.24.0

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 (73) hide show
  1. package/es/grid/src/grid.js +2 -2
  2. package/es/style.css +1 -1
  3. package/es/table/module/edit/mixin.js +3 -1
  4. package/es/table/module/export/mixin.js +6 -4
  5. package/es/table/module/filter/mixin.js +4 -2
  6. package/es/table/module/filter/panel.js +4 -2
  7. package/es/table/src/body.js +4 -2
  8. package/es/table/src/cell.js +11 -6
  9. package/es/table/src/columnInfo.js +2 -1
  10. package/es/table/src/footer.js +2 -1
  11. package/es/table/src/header.js +5 -3
  12. package/es/table/src/methods.js +7 -4
  13. package/es/table/src/props.js +4 -0
  14. package/es/table/src/table.js +7 -1
  15. package/es/toolbar/src/toolbar.js +5 -4
  16. package/es/ui/index.js +1 -1
  17. package/es/ui/src/log.js +1 -1
  18. package/lib/grid/src/grid.js +2 -2
  19. package/lib/grid/src/grid.min.js +1 -1
  20. package/lib/index.umd.js +66 -36
  21. package/lib/index.umd.min.js +1 -1
  22. package/lib/style.css +1 -1
  23. package/lib/table/module/edit/mixin.js +3 -1
  24. package/lib/table/module/edit/mixin.min.js +1 -1
  25. package/lib/table/module/export/mixin.js +6 -4
  26. package/lib/table/module/export/mixin.min.js +1 -1
  27. package/lib/table/module/filter/mixin.js +4 -2
  28. package/lib/table/module/filter/mixin.min.js +1 -1
  29. package/lib/table/module/filter/panel.js +4 -2
  30. package/lib/table/module/filter/panel.min.js +1 -1
  31. package/lib/table/src/body.js +4 -2
  32. package/lib/table/src/body.min.js +1 -1
  33. package/lib/table/src/cell.js +11 -6
  34. package/lib/table/src/cell.min.js +1 -1
  35. package/lib/table/src/columnInfo.js +2 -1
  36. package/lib/table/src/columnInfo.min.js +1 -1
  37. package/lib/table/src/footer.js +2 -1
  38. package/lib/table/src/footer.min.js +1 -1
  39. package/lib/table/src/header.js +5 -3
  40. package/lib/table/src/header.min.js +1 -1
  41. package/lib/table/src/methods.js +5 -5
  42. package/lib/table/src/methods.min.js +1 -1
  43. package/lib/table/src/props.js +4 -0
  44. package/lib/table/src/props.min.js +1 -1
  45. package/lib/table/src/table.js +7 -1
  46. package/lib/table/src/table.min.js +1 -1
  47. package/lib/toolbar/src/toolbar.js +5 -4
  48. package/lib/toolbar/src/toolbar.min.js +1 -1
  49. package/lib/ui/index.js +1 -1
  50. package/lib/ui/index.min.js +1 -1
  51. package/lib/ui/src/log.js +1 -1
  52. package/lib/ui/src/log.min.js +1 -1
  53. package/package.json +2 -2
  54. package/packages/grid/src/grid.ts +2 -2
  55. package/packages/table/module/edit/mixin.ts +3 -1
  56. package/packages/table/module/export/mixin.ts +6 -4
  57. package/packages/table/module/filter/mixin.ts +6 -4
  58. package/packages/table/module/filter/panel.ts +4 -2
  59. package/packages/table/src/body.ts +4 -2
  60. package/packages/table/src/cell.ts +11 -6
  61. package/packages/table/src/columnInfo.ts +2 -1
  62. package/packages/table/src/footer.ts +2 -1
  63. package/packages/table/src/header.ts +5 -3
  64. package/packages/table/src/methods.ts +7 -4
  65. package/packages/table/src/props.ts +4 -0
  66. package/packages/table/src/table.ts +8 -1
  67. package/packages/toolbar/src/toolbar.ts +5 -4
  68. /package/es/{iconfont.1789131659648.ttf → iconfont.1789914697948.ttf} +0 -0
  69. /package/es/{iconfont.1789131659648.woff → iconfont.1789914697948.woff} +0 -0
  70. /package/es/{iconfont.1789131659648.woff2 → iconfont.1789914697948.woff2} +0 -0
  71. /package/lib/{iconfont.1789131659648.ttf → iconfont.1789914697948.ttf} +0 -0
  72. /package/lib/{iconfont.1789131659648.woff → iconfont.1789914697948.woff} +0 -0
  73. /package/lib/{iconfont.1789131659648.woff2 → iconfont.1789914697948.woff2} +0 -0
@@ -25,9 +25,10 @@ function updatePopupStyle ($xeTable: VxeTableConstructor & VxeTablePrivateMethod
25
25
  }
26
26
  const tableEl = $xeTable.$refs.refElem as HTMLDivElement
27
27
  const filterOpts = $xeTable.computeFilterOpts
28
+ const rendererOpts = $xeTable.computeRendererOpts
28
29
  const { maxHeight: customMaxHeight, transfer, zIndex } = filterOpts
29
30
  const filterRender = column ? column.filterRender : null
30
- const compConf = filterRender && isEnableConf(filterRender) ? renderer.get(filterRender.name) : null
31
+ const compConf = filterRender && isEnableConf(filterRender) && filterRender.name ? (rendererOpts[filterRender.name] || renderer.get(filterRender.name)) : null
31
32
 
32
33
  const headerScrollElem = getRefElem(elemStore['main-header-scroll'])
33
34
  if (!headerScrollElem) {
@@ -464,13 +465,14 @@ export default {
464
465
  $xeTable.handleColumnConfirmFilter(column, evnt)
465
466
  }
466
467
  },
467
- handleClearFilter (column: any) {
468
+ handleClearFilter (column: VxeTableDefines.ColumnInfo) {
468
469
  const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
469
470
 
470
471
  if (column) {
471
472
  const { filters, filterRender } = column
472
473
  if (filters) {
473
- const compConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null
474
+ const rendererOpts = $xeTable.computeRendererOpts
475
+ const compConf = isEnableConf(filterRender) && filterRender.name ? (rendererOpts[filterRender.name] || renderer.get(filterRender.name)) : null
474
476
  const filterResetMethod = column.filterResetMethod || (compConf ? (compConf.tableFilterResetMethod || compConf.filterResetMethod) : null)
475
477
  filters.forEach((item: any) => {
476
478
  item._checked = false
@@ -480,7 +482,7 @@ export default {
480
482
  }
481
483
  })
482
484
  if (filterResetMethod) {
483
- filterResetMethod({ options: filters, column, $table: $xeTable })
485
+ filterResetMethod({ options: filters as VxeTableDefines.FilterOption[], column, $table: $xeTable })
484
486
  }
485
487
  }
486
488
  }
@@ -258,9 +258,10 @@ export default /* define-vxe-component start */ defineVxeComponent({
258
258
  return []
259
259
  }
260
260
  const filterOpts = $xeTable.computeFilterOpts
261
+ const rendererOpts = $xeTable.computeRendererOpts
261
262
  const hasCheckOption = $xeFilterPanel.computeHasCheckOption
262
263
  const { filterRender, filterMultiple } = column
263
- const compConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null
264
+ const compConf = filterRender && isEnableConf(filterRender) && filterRender.name ? (rendererOpts[filterRender.name] || renderer.get(filterRender.name)) : null
264
265
  const isDisabled = !hasCheckOption && !filterStore.isAllSelected && !filterStore.isIndeterminate
265
266
  return filterMultiple && (compConf ? !(compConf.showTableFilterFooter === false || compConf.showFilterFooter === false || compConf.isFooter === false) : true)
266
267
  ? [
@@ -298,8 +299,9 @@ export default /* define-vxe-component start */ defineVxeComponent({
298
299
  if (!column) {
299
300
  return renderEmptyElement($xeFilterPanel)
300
301
  }
302
+ const rendererOpts = $xeTable.computeRendererOpts
301
303
  const filterRender = column ? column.filterRender : null
302
- const compConf = filterRender && isEnableConf(filterRender) ? renderer.get(filterRender.name) : null
304
+ const compConf = filterRender && isEnableConf(filterRender) && filterRender.name ? (rendererOpts[filterRender.name] || renderer.get(filterRender.name)) : null
303
305
  const filterClassName = compConf ? (compConf.tableFilterClassName || compConf.filterClassName) : ''
304
306
  const params = Object.assign({}, tableInternalData._currFilterParams, { $panel: $xeFilterPanel, $table: $xeTable })
305
307
  const tableProps = $xeTable
@@ -117,6 +117,7 @@ function renderTdColumn (
117
117
  const tooltipOpts = $xeTable.computeTooltipOpts
118
118
  const virtualXOpts = $xeTable.computeVirtualXOpts
119
119
  const virtualYOpts = $xeTable.computeVirtualYOpts
120
+ const rendererOpts = $xeTable.computeRendererOpts
120
121
  const { isAllColumnDrag, isAllRowDrag } = $xeTable.resizableOpts
121
122
  const rowOpts = $xeTable.computeRowOpts
122
123
  const rowDragOpts = $xeTable.computeRowDragOpts
@@ -135,7 +136,7 @@ function renderTdColumn (
135
136
  const colid = column.id
136
137
  const colRest = fullColumnIdData[colid] || {}
137
138
  const renderOpts = editRender || cellRender
138
- const compConf = renderOpts ? renderer.get(renderOpts.name) : null
139
+ const compConf = renderOpts && renderOpts.name ? (rendererOpts[renderOpts.name] || renderer.get(renderOpts.name)) : null
139
140
  const compCellClassName = compConf ? (compConf.tableCellClassName || compConf.cellClassName) : null
140
141
  const compCellStyle = compConf ? (compConf.tableCellStyle || compConf.cellStyle) : ''
141
142
  const showAllTip = tooltipOpts.showAll
@@ -862,7 +863,8 @@ export default /* define-vxe-component start */ defineVxeComponent({
862
863
  if (emptySlot) {
863
864
  emptyContent = emptySlot.call($xeTable, emptyParams)
864
865
  } else {
865
- const compConf = emptyOpts.name ? renderer.get(emptyOpts.name) : null
866
+ const rendererOpts = $xeTable.computeRendererOpts
867
+ const compConf = emptyOpts.name ? (rendererOpts[emptyOpts.name] || renderer.get(emptyOpts.name)) : null
866
868
  const rtEmptyView = compConf ? (compConf.renderTableEmpty || compConf.renderTableEmptyView || compConf.renderEmpty) : null
867
869
  if (rtEmptyView) {
868
870
  emptyContent = getSlotVNs(rtEmptyView.call($xeTable, h, emptyOpts, emptyParams))
@@ -245,7 +245,8 @@ function getFooterContent (h: CreateElement, params: VxeTableDefines.CellRenderF
245
245
  const renderOpts = editRenderOpts || cellRenderOpts
246
246
  const itemValue = $table.getFooterCellLabel(row, column)
247
247
  if (renderOpts) {
248
- const compConf = renderer.get(renderOpts.name)
248
+ const rendererOpts = $table.computeRendererOpts
249
+ const compConf = renderOpts.name ? (rendererOpts[renderOpts.name] || renderer.get(renderOpts.name)) : null
249
250
  const rtFooter = compConf ? (compConf.renderTableFooter || compConf.renderFooter) : null
250
251
  if (rtFooter) {
251
252
  const footParams = Object.assign(params, {
@@ -387,7 +388,8 @@ export const Cell = {
387
388
  }
388
389
 
389
390
  if (renderOpts) {
390
- const compConf = renderer.get(renderOpts.name)
391
+ const rendererOpts = $table.computeRendererOpts
392
+ const compConf = renderOpts.name ? (rendererOpts[renderOpts.name] || renderer.get(renderOpts.name)) : null
391
393
  const rtHeader = compConf ? (compConf.renderTableHeader || compConf.renderHeader) : null
392
394
  if (rtHeader) {
393
395
  return getSlotVNs(renderTitleContent(h, params, rtHeader.call($table, h, renderOpts, params))) as VNode[]
@@ -477,9 +479,10 @@ export const Cell = {
477
479
  if (defaultSlot) {
478
480
  return renderCellBaseVNs(h, params, $table.callSlot(defaultSlot, params, h))
479
481
  }
482
+ const rendererOpts = $table.computeRendererOpts
480
483
  // 如果是编辑模式-查看:slot default > formatter > cellRender.renderTableDefault > editRender.renderTableCell > editRender.renderTableDefault > cellRender.tableCellFormatter > editRender.tableCellFormatter > field
481
484
  // 如果是查看表格:slot default > formatter > cellRender。renderTableDefault > cellRender.tableCellFormatter > field
482
- const cellCompConf = cellRenderOpts ? renderer.get(cellRenderOpts.name) : null
485
+ const cellCompConf = cellRenderOpts && cellRenderOpts.name ? (rendererOpts[cellRenderOpts.name] || renderer.get(cellRenderOpts.name)) : null
483
486
  if (cellRenderOpts) {
484
487
  const cellDefaultRenderFn = cellCompConf ? (cellCompConf.renderTableDefault || cellCompConf.renderDefault) : null
485
488
  if (cellDefaultRenderFn && cellRenderOpts) {
@@ -487,7 +490,7 @@ export const Cell = {
487
490
  }
488
491
  }
489
492
  if (editRenderOpts) {
490
- const editCompConf = editRenderOpts ? renderer.get(editRenderOpts.name) : null
493
+ const editCompConf = editRenderOpts && editRenderOpts.name ? (rendererOpts[editRenderOpts.name] || renderer.get(editRenderOpts.name)) : null
491
494
  const editCellRenderFn = editCompConf
492
495
  ? (
493
496
  (editCompConf.renderTableCell || editCompConf.renderCell) ||
@@ -1063,7 +1066,8 @@ export const Cell = {
1063
1066
  return $table.callSlot(slots.content, params, h)
1064
1067
  }
1065
1068
  if (contentRender) {
1066
- const compConf = renderer.get(contentRender.name)
1069
+ const rendererOpts = $table.computeRendererOpts
1070
+ const compConf = contentRender.name ? (rendererOpts[contentRender.name] || renderer.get(contentRender.name)) : null
1067
1071
  const rtExpand = compConf ? (compConf.renderTableExpand || compConf.renderExpand) : null
1068
1072
  if (rtExpand) {
1069
1073
  return getSlotVNs(rtExpand.call($table, h, contentRender, params))
@@ -1302,7 +1306,8 @@ export const Cell = {
1302
1306
  if (slots && slots.edit) {
1303
1307
  return $table.callSlot(slots.edit, cellParams, h)
1304
1308
  }
1305
- const compConf = renderer.get(editRender.name)
1309
+ const rendererOpts = $table.computeRendererOpts
1310
+ const compConf = editRenderOpts.name ? (rendererOpts[editRenderOpts.name] || renderer.get(editRenderOpts.name)) : null
1306
1311
  const rtEdit = compConf ? (compConf.renderTableEdit || compConf.renderEdit) : null
1307
1312
  if (rtEdit) {
1308
1313
  return getSlotVNs(rtEdit.call($table, h, editRender, cellParams))
@@ -27,7 +27,8 @@ export class ColumnInfo {
27
27
  const defaultVisible = XEUtils.isBoolean(visible) ? visible : true
28
28
  const defaultRenderWidth = width && isPx(width) && width !== 'auto' ? Math.max(0, XEUtils.toInteger(width)) : 0
29
29
 
30
- const flCompConf = filterRender && isEnableConf(filterRender) ? renderer.get(filterRender.name) : null
30
+ const rendererOpts = $xeTable.computeRendererOpts
31
+ const flCompConf = filterRender && isEnableConf(filterRender) && filterRender.name ? (rendererOpts[filterRender.name] || renderer.get(filterRender.name)) : null
31
32
  const ctFilterOptions = flCompConf ? flCompConf.createTableFilterOptions : null
32
33
 
33
34
  const filters = toFilters(colConfs.filters, colId)
@@ -35,13 +35,14 @@ function renderRows (h: CreateElement, _vm: any, isOptimizeMode: boolean, tableC
35
35
  const cellOpts = $xeTable.computeCellOpts
36
36
  const footerCellOpts = $xeTable.computeFooterCellOpts
37
37
  const currCellHeight = getCalcHeight(footerCellOpts.height) || defaultRowHeight
38
+ const rendererOpts = $xeTable.computeRendererOpts
38
39
 
39
40
  return tableColumn.map((column, $columnIndex) => {
40
41
  const { type, showFooterOverflow, footerAlign, align, footerClassName, editRender, cellRender } = column
41
42
  const colid = column.id
42
43
  const colRest = fullColumnIdData[colid] || {}
43
44
  const renderOpts = editRender || cellRender
44
- const compConf = renderOpts ? renderer.get(renderOpts.name) : null
45
+ const compConf = renderOpts && renderOpts.name ? (rendererOpts[renderOpts.name] || renderer.get(renderOpts.name)) : null
45
46
  const showAllTip = footerTooltipOpts.showAll
46
47
  const fixedHiddenColumn = overflowX && (fixedType ? column.fixed !== fixedType : !!column.fixed)
47
48
 
@@ -33,6 +33,7 @@ function renderRows (h: CreateElement, _vm: any, isGroup: boolean, isOptimizeMod
33
33
  const cellOpts = $xeTable.computeCellOpts
34
34
  const defaultRowHeight = $xeTable.computeDefaultRowHeight
35
35
  const headerCellOpts = $xeTable.computeHeaderCellOpts
36
+ const rendererOpts = $xeTable.computeRendererOpts
36
37
  const currCellHeight = getCalcHeight(headerCellOpts.height) || defaultRowHeight
37
38
  const { disabledMethod: dragDisabledMethod, isCrossDrag, isPeerDrag } = columnDragOpts
38
39
  const isLastRow = _rowIndex === headerGroups.length - 1
@@ -43,7 +44,7 @@ function renderRows (h: CreateElement, _vm: any, isGroup: boolean, isOptimizeMod
43
44
  const colid = column.id
44
45
  const colRest = fullColumnIdData[colid] || {}
45
46
  const renderOpts = editRender || cellRender
46
- const compConf = renderOpts ? renderer.get(renderOpts.name) : null
47
+ const compConf = renderOpts && renderOpts.name ? (rendererOpts[renderOpts.name] || renderer.get(renderOpts.name)) : null
47
48
  const isColGroup = column.children && column.children.length
48
49
  const fixedHiddenColumn = overflowX && !isColGroup && (fixedType ? column.fixed !== fixedType : !!column.fixed)
49
50
 
@@ -244,6 +245,7 @@ function renderFilterRows (h: CreateElement, _vm: any, isOptimizeMode: boolean,
244
245
  const defaultRowHeight = $xeTable.computeDefaultRowHeight
245
246
  const headerCellOpts = $xeTable.computeHeaderCellOpts
246
247
  const floatingFilterOpts = $xeTable.computeFloatingFilterOpts
248
+ const rendererOpts = $xeTable.computeRendererOpts
247
249
  const { cellClassName } = floatingFilterOpts
248
250
  const currCellHeight = getCalcHeight(headerCellOpts.height) || defaultRowHeight
249
251
 
@@ -252,8 +254,8 @@ function renderFilterRows (h: CreateElement, _vm: any, isOptimizeMode: boolean,
252
254
  const colid = column.id
253
255
  const colRest = fullColumnIdData[colid] || {}
254
256
  const renderOpts = editRender || cellRender
255
- const compConf = renderOpts ? renderer.get(renderOpts.name) : null
256
- const flCompConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null
257
+ const compConf = renderOpts && renderOpts.name ? (rendererOpts[renderOpts.name] || renderer.get(renderOpts.name)) : null
258
+ const flCompConf = isEnableConf(filterRender) && filterRender.name ? (rendererOpts[filterRender.name] || renderer.get(filterRender.name)) : null
257
259
  const rtFloatingFilter = flCompConf ? flCompConf.renderTableFloatingFilter : null
258
260
  const flSlot = slots ? (slots.floatingFilter || slots['floating-filter']) : null
259
261
  const fixedHiddenColumn = overflowX && (fixedType ? column.fixed !== fixedType : !!column.fixed)
@@ -817,6 +817,7 @@ function updateAfterFullData ($xeTable: VxeTableConstructor & VxeTablePrivateMet
817
817
  const filterOpts = $xeTable.computeFilterOpts
818
818
  const sortOpts = $xeTable.computeSortOpts
819
819
  const aggregateOpts = $xeTable.computeAggregateOpts
820
+ const rendererOpts = $xeTable.computeRendererOpts
820
821
  const treeOpts = $xeTable.computeTreeOpts
821
822
  const childrenField = treeOpts.children || treeOpts.childrenField
822
823
  const { transform, rowField, parentField, mapChildrenField } = treeOpts
@@ -862,7 +863,7 @@ function updateAfterFullData ($xeTable: VxeTableConstructor & VxeTablePrivateMet
862
863
  const handleFilter = (row: any) => {
863
864
  return filterColumns.every(({ column, valueList, itemList }) => {
864
865
  const { filterMethod, filterRender } = column
865
- const compConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null
866
+ const compConf = isEnableConf(filterRender) && filterRender.name ? (rendererOpts[filterRender.name] || renderer.get(filterRender.name)) : null
866
867
  const compFilterMethod = compConf ? (compConf.tableFilterMethod || compConf.filterMethod) : null
867
868
  const tdFilterMethod = compConf ? (compConf.tableFilterDefaultMethod || compConf.defaultTableFilterMethod || compConf.defaultFilterMethod) : null
868
869
  const cellValue = getCellValue(row, column)
@@ -5762,6 +5763,7 @@ const tableMethods: any = {
5762
5763
  }
5763
5764
  const { editConfig } = props
5764
5765
  const { formatter, editRender, cellRender } = column
5766
+ const rendererOpts = $xeTable.computeRendererOpts
5765
5767
  let etOpSize = null
5766
5768
  let etOgSize = null
5767
5769
  let clOpSize = null
@@ -5778,8 +5780,8 @@ const tableMethods: any = {
5778
5780
  const editRenderOpts = formatter ? null : (isEnableEdit && isEnableConf(editRender) ? editRender : null)
5779
5781
  const cellRenderOpts = formatter ? null : (isEnableConf(cellRender) ? cellRender : null)
5780
5782
  // formatter > cellRender.tableCellFormatter > editRender.tableCellFormatter
5781
- const cellCompConf = cellRenderOpts ? renderer.get(cellRenderOpts.name) : null
5782
- const editCompConf = editRenderOpts ? renderer.get(editRenderOpts.name) : null
5783
+ const cellCompConf = cellRenderOpts && cellRenderOpts.name ? (rendererOpts[cellRenderOpts.name] || renderer.get(cellRenderOpts.name)) : null
5784
+ const editCompConf = editRenderOpts && editRenderOpts.name ? (rendererOpts[editRenderOpts.name] || renderer.get(editRenderOpts.name)) : null
5783
5785
  const cellDfFormatter = cellCompConf ? cellCompConf.tableCellFormatter : null
5784
5786
  const editDfFormatter = editCompConf ? editCompConf.tableCellFormatter : null
5785
5787
  const cellValue = getCellValue(row, column)
@@ -7073,8 +7075,9 @@ const tableMethods: any = {
7073
7075
  if (column) {
7074
7076
  const { filterStore } = reactData
7075
7077
  const { filterRender, filters } = column
7078
+ const rendererOpts = $xeTable.computeRendererOpts
7076
7079
  const filterOptions = filters || []
7077
- const compConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null
7080
+ const compConf = isEnableConf(filterRender) && filterRender.name ? (rendererOpts[filterRender.name] || renderer.get(filterRender.name)) : null
7078
7081
  const frMethod = column.filterRecoverMethod || (compConf ? (compConf.tableFilterRecoverMethod || compConf.filterRecoverMethod) : null)
7079
7082
  filterStore.column = column
7080
7083
  // 复原状态
@@ -306,6 +306,10 @@ export const tableProps = {
306
306
  animat: { type: Boolean, default: () => getConfig().table.animat },
307
307
  // (可能会被废弃的参数,不要使用)
308
308
  delayHover: { type: Number, default: () => getConfig().table.delayHover },
309
+ /**
310
+ * 渲染器配置项
311
+ */
312
+ rendererConfig: Object as PropType<VxeTablePropTypes.RendererConfig>,
309
313
  // 额外的参数
310
314
  params: Object as PropType<VxeTablePropTypes.Params>
311
315
  }
@@ -173,7 +173,8 @@ function renderEmptyBody (h: CreateElement, $xeTable: VxeTableConstructor & VxeT
173
173
  if (emptySlot) {
174
174
  emptyContent = emptySlot.call($xeTable, emptyParams)
175
175
  } else {
176
- const compConf = emptyOpts.name ? renderer.get(emptyOpts.name) : null
176
+ const rendererOpts = $xeTable.computeRendererOpts
177
+ const compConf = emptyOpts.name ? (rendererOpts[emptyOpts.name] || renderer.get(emptyOpts.name)) : null
177
178
  const rtEmptyView = compConf ? (compConf.renderTableEmpty || compConf.renderTableEmptyView || compConf.renderEmpty) : null
178
179
  if (rtEmptyView) {
179
180
  emptyContent = getSlotVNs(rtEmptyView.call($xeTable, h, emptyOpts, emptyParams))
@@ -1489,6 +1490,12 @@ export default {
1489
1490
 
1490
1491
  return Object.assign({}, getConfig().table.undoRedoHistoryConfig, props.undoRedoHistoryConfig)
1491
1492
  },
1493
+ computeRendererOpts () {
1494
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
1495
+ const props = $xeTable
1496
+
1497
+ return Object.assign({}, getConfig().table.rendererConfig, props.rendererConfig)
1498
+ },
1492
1499
  combineTabsResizeFlag () {
1493
1500
  const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
1494
1501
  const $xeTabs = $xeTable.$xeTabs
@@ -486,10 +486,11 @@ export default /* define-vxe-component start */ defineVxeComponent({
486
486
  const buttonSuffixSlot = slots.buttonSuffix || slots['button-suffix']
487
487
  const btnVNs: VxeComponentSlotType[] = []
488
488
  if (buttons) {
489
+ const rendererOpts = ($table ? $table.computeRendererOpts : null) || {}
489
490
  buttons.forEach((item) => {
490
491
  const { dropdowns, buttonRender } = item
491
492
  if (item.visible !== false) {
492
- const compConf = buttonRender ? renderer.get(buttonRender.name) : null
493
+ const compConf = buttonRender && buttonRender.name ? (rendererOpts[buttonRender.name] || renderer.get(buttonRender.name)) : null
493
494
  if (buttonRender && compConf && compConf.renderToolbarButton) {
494
495
  const toolbarButtonClassName = compConf.toolbarButtonClassName
495
496
  const params = { $grid: $xeGrid, $gantt: $xeGantt, $table: $table!, button: item }
@@ -555,17 +556,17 @@ export default /* define-vxe-component start */ defineVxeComponent({
555
556
  const toolSuffixSlot = slots.toolSuffix || slots['tool-suffix']
556
557
  const btnVNs: VxeComponentSlotType[] = []
557
558
  if (tools) {
559
+ const rendererOpts = ($table ? $table.computeRendererOpts : null) || {}
558
560
  tools.forEach((item, tIndex) => {
559
561
  const { dropdowns, toolRender } = item
560
562
  if (item.visible !== false) {
561
- const rdName = toolRender ? toolRender.name : null
562
- const compConf = toolRender ? renderer.get(rdName) : null
563
+ const compConf = toolRender && toolRender.name ? (rendererOpts[toolRender.name] || renderer.get(toolRender.name)) : null
563
564
  if (toolRender && compConf && compConf.renderToolbarTool) {
564
565
  const toolbarToolClassName = compConf.toolbarToolClassName
565
566
  const params = { $grid: $xeGrid, $gantt: $xeGantt, $table: $table!, tool: item }
566
567
  btnVNs.push(
567
568
  h('span', {
568
- key: rdName as string,
569
+ key: tIndex,
569
570
  class: ['vxe-tool--item', toolbarToolClassName ? (XEUtils.isFunction(toolbarToolClassName) ? toolbarToolClassName(params) : toolbarToolClassName) : '']
570
571
  }, getSlotVNs(compConf.renderToolbarTool(h, toolRender, params)))
571
572
  )