vxe-table 3.23.10 → 3.24.0-beta.1

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 (98) hide show
  1. package/es/grid/src/grid.js +29 -0
  2. package/es/iconfont.1789279209327.ttf +0 -0
  3. package/es/iconfont.1789279209327.woff +0 -0
  4. package/es/iconfont.1789279209327.woff2 +0 -0
  5. package/es/index.css +1 -1
  6. package/es/index.min.css +1 -1
  7. package/es/style.css +1 -1
  8. package/es/style.min.css +1 -1
  9. package/es/table/module/edit/mixin.js +3 -1
  10. package/es/table/module/export/mixin.js +14 -7
  11. package/es/table/module/filter/mixin.js +4 -2
  12. package/es/table/module/filter/panel.js +4 -2
  13. package/es/table/src/body.js +4 -2
  14. package/es/table/src/cell.js +27 -14
  15. package/es/table/src/columnInfo.js +2 -1
  16. package/es/table/src/footer.js +2 -1
  17. package/es/table/src/header.js +5 -3
  18. package/es/table/src/methods.js +19 -9
  19. package/es/table/src/props.js +4 -0
  20. package/es/table/src/table.js +7 -1
  21. package/es/table/style.css +3 -3
  22. package/es/table/style.min.css +1 -1
  23. package/es/toolbar/src/toolbar.js +5 -4
  24. package/es/ui/index.js +1 -1
  25. package/es/ui/src/log.js +1 -1
  26. package/es/vxe-table/style.css +3 -3
  27. package/es/vxe-table/style.min.css +1 -1
  28. package/lib/grid/src/grid.js +29 -0
  29. package/lib/grid/src/grid.min.js +1 -1
  30. package/lib/iconfont.1789279209327.ttf +0 -0
  31. package/lib/iconfont.1789279209327.woff +0 -0
  32. package/lib/iconfont.1789279209327.woff2 +0 -0
  33. package/lib/index.css +1 -1
  34. package/lib/index.min.css +1 -1
  35. package/lib/index.umd.js +121 -47
  36. package/lib/index.umd.min.js +1 -1
  37. package/lib/style.css +1 -1
  38. package/lib/style.min.css +1 -1
  39. package/lib/table/module/edit/mixin.js +3 -1
  40. package/lib/table/module/edit/mixin.min.js +1 -1
  41. package/lib/table/module/export/mixin.js +17 -7
  42. package/lib/table/module/export/mixin.min.js +1 -1
  43. package/lib/table/module/filter/mixin.js +4 -2
  44. package/lib/table/module/filter/mixin.min.js +1 -1
  45. package/lib/table/module/filter/panel.js +4 -2
  46. package/lib/table/module/filter/panel.min.js +1 -1
  47. package/lib/table/src/body.js +4 -2
  48. package/lib/table/src/body.min.js +1 -1
  49. package/lib/table/src/cell.js +28 -16
  50. package/lib/table/src/cell.min.js +1 -1
  51. package/lib/table/src/columnInfo.js +2 -1
  52. package/lib/table/src/columnInfo.min.js +1 -1
  53. package/lib/table/src/footer.js +2 -1
  54. package/lib/table/src/footer.min.js +1 -1
  55. package/lib/table/src/header.js +5 -3
  56. package/lib/table/src/header.min.js +1 -1
  57. package/lib/table/src/methods.js +5 -5
  58. package/lib/table/src/methods.min.js +1 -1
  59. package/lib/table/src/props.js +4 -0
  60. package/lib/table/src/props.min.js +1 -1
  61. package/lib/table/src/table.js +7 -1
  62. package/lib/table/src/table.min.js +1 -1
  63. package/lib/table/style/style.css +3 -3
  64. package/lib/table/style/style.min.css +1 -1
  65. package/lib/toolbar/src/toolbar.js +5 -4
  66. package/lib/toolbar/src/toolbar.min.js +1 -1
  67. package/lib/ui/index.js +1 -1
  68. package/lib/ui/index.min.js +1 -1
  69. package/lib/ui/src/log.js +1 -1
  70. package/lib/ui/src/log.min.js +1 -1
  71. package/lib/vxe-table/style/style.css +3 -3
  72. package/lib/vxe-table/style/style.min.css +1 -1
  73. package/package.json +2 -2
  74. package/packages/grid/src/grid.ts +32 -0
  75. package/packages/table/module/edit/mixin.ts +3 -1
  76. package/packages/table/module/export/mixin.ts +14 -7
  77. package/packages/table/module/filter/mixin.ts +6 -4
  78. package/packages/table/module/filter/panel.ts +4 -2
  79. package/packages/table/src/body.ts +4 -2
  80. package/packages/table/src/cell.ts +28 -14
  81. package/packages/table/src/columnInfo.ts +2 -1
  82. package/packages/table/src/footer.ts +2 -1
  83. package/packages/table/src/header.ts +5 -3
  84. package/packages/table/src/methods.ts +18 -9
  85. package/packages/table/src/props.ts +4 -0
  86. package/packages/table/src/table.ts +8 -1
  87. package/packages/toolbar/src/toolbar.ts +5 -4
  88. package/styles/components/icon.scss +2 -2
  89. package/styles/components/table.scss +1 -1
  90. package/styles/icon/iconfont.ttf +0 -0
  91. package/styles/icon/iconfont.woff +0 -0
  92. package/styles/icon/iconfont.woff2 +0 -0
  93. package/es/iconfont.1789034993794.ttf +0 -0
  94. package/es/iconfont.1789034993794.woff +0 -0
  95. package/es/iconfont.1789034993794.woff2 +0 -0
  96. package/lib/iconfont.1789034993794.ttf +0 -0
  97. package/lib/iconfont.1789034993794.woff +0 -0
  98. package/lib/iconfont.1789034993794.woff2 +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxe-table",
3
- "version": "3.23.10",
3
+ "version": "3.24.0-beta.1",
4
4
  "description": "A PC-end table component based on Vxe UI, supporting copy-paste, data pivot table, and high-performance virtual list table solution.",
5
5
  "scripts": {
6
6
  "update": "npm install --legacy-peer-deps",
@@ -65,7 +65,7 @@
65
65
  "vue-i18n": "^8.15.1",
66
66
  "vue-router": "^3.5.1",
67
67
  "vue-template-compiler": "2.6.14",
68
- "vxe-pc-ui": "3.18.9"
68
+ "vxe-pc-ui": "3.18.12"
69
69
  },
70
70
  "vetur": {
71
71
  "tags": "helper/vetur/tags.json",
@@ -1161,6 +1161,10 @@ export default /* define-vxe-component start */ defineVxeComponent({
1161
1161
  const formOpts = $xeGrid.computeFormOpts
1162
1162
  return proxyConfig && isEnableConf(proxyOpts) && proxyOpts.form ? formData : formOpts.data
1163
1163
  },
1164
+ /**
1165
+ * 已废弃,被 getFormFlatItems 替换
1166
+ * @deprecated
1167
+ */
1164
1168
  getFormItems (itemIndex?: number): any {
1165
1169
  const $xeGrid = this
1166
1170
  const props = $xeGrid
@@ -1172,8 +1176,36 @@ export default /* define-vxe-component start */ defineVxeComponent({
1172
1176
  XEUtils.eachTree(formConfig && isEnableConf(formOpts) && items ? items : [], item => {
1173
1177
  itemList.push(item)
1174
1178
  }, { children: 'children' })
1179
+ // errLog('vxe.error.delFunc', ['getFormItems', 'getFormFlatItems'])
1175
1180
  return XEUtils.isUndefined(itemIndex) ? itemList : itemList[itemIndex]
1176
1181
  },
1182
+ getFormFlatItems () {
1183
+ const $xeGrid = this
1184
+
1185
+ const $form = $xeGrid.$refs.refForm as VxeFormInstance
1186
+ if ($form) {
1187
+ return $form.getFlatItems()
1188
+ }
1189
+ return []
1190
+ },
1191
+ getFormNestedItems () {
1192
+ const $xeGrid = this
1193
+
1194
+ const $form = $xeGrid.$refs.refForm as VxeFormInstance
1195
+ if ($form) {
1196
+ return $form.getNestedItems()
1197
+ }
1198
+ return []
1199
+ },
1200
+ getFormItemByField (field: string) {
1201
+ const $xeGrid = this
1202
+
1203
+ const $form = $xeGrid.$refs.refForm as VxeFormInstance
1204
+ if ($form) {
1205
+ return $form.getItemByField(field)
1206
+ }
1207
+ return null
1208
+ },
1177
1209
  resetForm () {
1178
1210
  const $xeGrid = this
1179
1211
 
@@ -977,7 +977,9 @@ export default {
977
977
  const { editRender } = column
978
978
  const editOpts = $xeTable.computeEditOpts
979
979
  if (editConfig && isEnableConf(editRender)) {
980
- const compRender = renderer.get(editRender.name)
980
+ const rendererOpts = $xeTable.computeRendererOpts
981
+ const renderName = editRender.name
982
+ const compRender = renderName ? (rendererOpts[renderName] || renderer.get(renderName)) : null
981
983
  let autoFocus: boolean | string | ((params: VxeGlobalRendererHandles.TableAutoFocusParams) => HTMLElement | null) | null | undefined = editRender.autofocus || editRender.autoFocus
982
984
  let autoSelect = editRender.autoSelect || editRender.autoselect
983
985
  let inputElem: HTMLElement | null = null
@@ -66,12 +66,13 @@ function getBodyLabelData ($xeTable: VxeTableConstructor & VxeTablePrivateMethod
66
66
  const { isTreeAllExpanded, isRowGroupAllExpanded, mode: expMode } = opts
67
67
  const { treeConfig } = props
68
68
  const { isRowGroupStatus } = reactData
69
- const { fullColumnFieldData } = internalData
69
+ const { fullColumnFieldData, fullAllDataRowIdData } = internalData
70
70
  const radioOpts = $xeTable.computeRadioOpts
71
71
  const checkboxOpts = $xeTable.computeCheckboxOpts
72
72
  const treeOpts = $xeTable.computeTreeOpts
73
73
  const columnOpts = $xeTable.computeColumnOpts
74
74
  const aggregateOpts = $xeTable.computeAggregateOpts
75
+ const rendererOpts = $xeTable.computeRendererOpts
75
76
  if (!htmlCellElem) {
76
77
  htmlCellElem = document.createElement('div')
77
78
  }
@@ -104,7 +105,7 @@ function getBodyLabelData ($xeTable: VxeTableConstructor & VxeTablePrivateMethod
104
105
  const renderOpts = editRender || cellRender
105
106
  let bodyExportMethod: VxeColumnPropTypes.ExportMethod | undefined = column.exportMethod || columnOpts.exportMethod
106
107
  if (!bodyExportMethod && renderOpts && renderOpts.name) {
107
- const compConf = renderer.get(renderOpts.name)
108
+ const compConf = rendererOpts[renderOpts.name] || renderer.get(renderOpts.name)
108
109
  if (compConf) {
109
110
  bodyExportMethod = compConf.tableExportMethod || compConf.exportMethod
110
111
  }
@@ -216,8 +217,9 @@ function getBodyLabelData ($xeTable: VxeTableConstructor & VxeTablePrivateMethod
216
217
  return rest
217
218
  }
218
219
  if (treeConfig) {
219
- const childrenField = treeOpts.children || treeOpts.childrenField
220
220
  // 如果是树结构
221
+ const { seqMode } = treeOpts
222
+ const childrenField = treeOpts.children || treeOpts.childrenField
221
223
  const rest: any[] = []
222
224
  const expandMaps: Record<string, boolean> = {}
223
225
  const useMaps: Record<string, boolean> = {}
@@ -237,12 +239,13 @@ function getBodyLabelData ($xeTable: VxeTableConstructor & VxeTablePrivateMethod
237
239
  _hasChild: hasRowChild,
238
240
  _expand: hasRowChild && $xeTable.isTreeExpandByRow(row)
239
241
  }
242
+ const rowRest = fullAllDataRowIdData[rowid] || {}
240
243
  columns.forEach((column, $columnIndex) => {
241
244
  let cellValue: string | number | boolean | null = ''
242
245
  const renderOpts = column.editRender || column.cellRender
243
246
  let bodyExportMethod: VxeColumnPropTypes.ExportMethod | undefined = column.exportMethod || columnOpts.exportMethod
244
247
  if (!bodyExportMethod && renderOpts && renderOpts.name) {
245
- const compConf = renderer.get(renderOpts.name)
248
+ const compConf = rendererOpts[renderOpts.name] || renderer.get(renderOpts.name)
246
249
  if (compConf) {
247
250
  bodyExportMethod = compConf.tableExportMethod || compConf.exportMethod
248
251
  }
@@ -255,7 +258,10 @@ function getBodyLabelData ($xeTable: VxeTableConstructor & VxeTablePrivateMethod
255
258
  } else {
256
259
  switch (column.type) {
257
260
  case 'seq': {
258
- const seqVal = path.map((num, i) => i % 2 === 0 ? (Number(num) + 1) : '.').join('')
261
+ let seqVal: number | string = path.map((num, i) => i % 2 === 0 ? (Number(num) + 1) : '.').join('')
262
+ if (seqMode === 'increasing') {
263
+ seqVal = rowRest ? (rowRest._index + 1) : -1
264
+ }
259
265
  cellValue = expMode === 'all' ? seqVal : getSeq($xeTable, seqVal, row, $rowIndex, column, $columnIndex)
260
266
  break
261
267
  }
@@ -306,7 +312,7 @@ function getBodyLabelData ($xeTable: VxeTableConstructor & VxeTablePrivateMethod
306
312
  const renderOpts = column.editRender || column.cellRender
307
313
  let bodyExportMethod: VxeColumnPropTypes.ExportMethod | undefined = column.exportMethod || columnOpts.exportMethod
308
314
  if (!bodyExportMethod && renderOpts && renderOpts.name) {
309
- const compConf = renderer.get(renderOpts.name)
315
+ const compConf = rendererOpts[renderOpts.name] || renderer.get(renderOpts.name)
310
316
  if (compConf) {
311
317
  bodyExportMethod = compConf.tableExportMethod || compConf.exportMethod
312
318
  }
@@ -377,10 +383,11 @@ function getHeaderTitle ($xeTable: VxeTableConstructor & VxeTablePrivateMethods,
377
383
 
378
384
  function getFooterCellValue ($xeTable: any, opts: VxeTablePropTypes.ExportHandleOptions, row: any, column: VxeTableDefines.ColumnInfo) {
379
385
  const columnOpts = $xeTable.computeColumnOpts
386
+ const rendererOpts = $xeTable.computeRendererOpts
380
387
  const renderOpts = column.editRender || column.cellRender
381
388
  let footLabelMethod: VxeColumnPropTypes.FooterExportMethod | undefined = column.footerExportMethod
382
389
  if (!footLabelMethod && renderOpts && renderOpts.name) {
383
- const compConf = renderer.get(renderOpts.name)
390
+ const compConf = rendererOpts[renderOpts.name] || renderer.get(renderOpts.name)
384
391
  if (compConf) {
385
392
  footLabelMethod = compConf.tableFooterExportMethod || compConf.footerExportMethod || (compConf as any).footerCellExportMethod
386
393
  }
@@ -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,16 +479,25 @@ export const Cell = {
477
479
  if (defaultSlot) {
478
480
  return renderCellBaseVNs(h, params, $table.callSlot(defaultSlot, params, h))
479
481
  }
480
- const renderOpts = editRenderOpts || cellRenderOpts
481
- // 如果是编辑表格:renderTableCell > formatter
482
- // 如果是查看表格:renderTableDefault > formatter
483
- if (renderOpts) {
484
- const compConf = renderer.get(renderOpts.name)
485
- if (compConf) {
486
- const renderFn = editRenderOpts ? (compConf.renderTableCell || compConf.renderCell) : (compConf.renderTableDefault || compConf.renderDefault)
487
- if (renderFn) {
488
- return renderCellBaseVNs(h, params, getSlotVNs(renderFn.call($table, h, renderOpts, Object.assign({ $type: editRenderOpts ? 'edit' : 'cell' }, params))))
489
- }
482
+ const rendererOpts = $table.computeRendererOpts
483
+ // 如果是编辑模式-查看:slot default > formatter > cellRender.renderTableDefault > editRender.renderTableCell > editRender.renderTableDefault > cellRender.tableCellFormatter > editRender.tableCellFormatter > field
484
+ // 如果是查看表格:slot default > formatter > cellRender。renderTableDefault > cellRender.tableCellFormatter > field
485
+ const cellCompConf = cellRenderOpts && cellRenderOpts.name ? (rendererOpts[cellRenderOpts.name] || renderer.get(cellRenderOpts.name)) : null
486
+ if (cellRenderOpts) {
487
+ const cellDefaultRenderFn = cellCompConf ? (cellCompConf.renderTableDefault || cellCompConf.renderDefault) : null
488
+ if (cellDefaultRenderFn && cellRenderOpts) {
489
+ return renderCellBaseVNs(h, params, getSlotVNs(cellDefaultRenderFn(h, cellRenderOpts, Object.assign({ $type: editRenderOpts ? 'edit' : 'cell' }, params))))
490
+ }
491
+ }
492
+ if (editRenderOpts) {
493
+ const editCompConf = editRenderOpts && editRenderOpts.name ? (rendererOpts[editRenderOpts.name] || renderer.get(editRenderOpts.name)) : null
494
+ const editCellRenderFn = editCompConf
495
+ ? (
496
+ (editCompConf.renderTableCell || editCompConf.renderCell) ||
497
+ (editCompConf.renderTableDefault || editCompConf.renderDefault))
498
+ : null
499
+ if (editCellRenderFn) {
500
+ return renderCellBaseVNs(h, params, getSlotVNs(editCellRenderFn(h, editRenderOpts, Object.assign({ $type: editRenderOpts ? 'edit' : 'cell' }, params))))
490
501
  }
491
502
  }
492
503
  cellValue = $table.getCellLabel(row, column)
@@ -1055,7 +1066,8 @@ export const Cell = {
1055
1066
  return $table.callSlot(slots.content, params, h)
1056
1067
  }
1057
1068
  if (contentRender) {
1058
- const compConf = renderer.get(contentRender.name)
1069
+ const rendererOpts = $table.computeRendererOpts
1070
+ const compConf = contentRender.name ? (rendererOpts[contentRender.name] || renderer.get(contentRender.name)) : null
1059
1071
  const rtExpand = compConf ? (compConf.renderTableExpand || compConf.renderExpand) : null
1060
1072
  if (rtExpand) {
1061
1073
  return getSlotVNs(rtExpand.call($table, h, contentRender, params))
@@ -1294,7 +1306,8 @@ export const Cell = {
1294
1306
  if (slots && slots.edit) {
1295
1307
  return $table.callSlot(slots.edit, cellParams, h)
1296
1308
  }
1297
- const compConf = renderer.get(editRender.name)
1309
+ const rendererOpts = $table.computeRendererOpts
1310
+ const compConf = editRenderOpts.name ? (rendererOpts[editRenderOpts.name] || renderer.get(editRenderOpts.name)) : null
1298
1311
  const rtEdit = compConf ? (compConf.renderTableEdit || compConf.renderEdit) : null
1299
1312
  if (rtEdit) {
1300
1313
  return getSlotVNs(rtEdit.call($table, h, editRender, cellParams))
@@ -1319,6 +1332,7 @@ export const Cell = {
1319
1332
  }
1320
1333
  }
1321
1334
 
1335
+ // slot default > formatter
1322
1336
  if (formatter) {
1323
1337
  return renderCellBaseVNs(h, params, [
1324
1338
  h('span', {
@@ -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
@@ -5774,13 +5776,17 @@ const tableMethods: any = {
5774
5776
  clOpSize = cellRender.options ? cellRender.options.length : 0
5775
5777
  clOgSize = cellRender.optionGroups ? cellRender.optionGroups.length : 0
5776
5778
  }
5777
- // formatter > tableCellFormatter
5778
- const renderOpts = formatter ? null : (editConfig && isEnableConf(editRender) ? editRender : (isEnableConf(cellRender) ? cellRender : null))
5779
- const compConf = renderOpts ? renderer.get(renderOpts.name) : null
5780
- const tcFormatter = compConf ? compConf.tableCellFormatter : null
5779
+ const isEnableEdit = editConfig && isEnableConf(editConfig)
5780
+ const editRenderOpts = formatter ? null : (isEnableEdit && isEnableConf(editRender) ? editRender : null)
5781
+ const cellRenderOpts = formatter ? null : (isEnableConf(cellRender) ? cellRender : null)
5782
+ // formatter > cellRender.tableCellFormatter > editRender.tableCellFormatter
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
5785
+ const cellDfFormatter = cellCompConf ? cellCompConf.tableCellFormatter : null
5786
+ const editDfFormatter = editCompConf ? editCompConf.tableCellFormatter : null
5781
5787
  const cellValue = getCellValue(row, column)
5782
5788
  let cellLabel = cellValue
5783
- if (formatter || tcFormatter) {
5789
+ if (formatter || cellDfFormatter || editDfFormatter) {
5784
5790
  let formatData: Record<string, VxeTableDefines.RowCacheFormatObj> | undefined
5785
5791
  const { fullAllDataRowIdData } = internalData
5786
5792
  const rowid = getRowid($xeTable, row)
@@ -5818,8 +5824,10 @@ const tableMethods: any = {
5818
5824
  } else {
5819
5825
  cellLabel = formatter(formatParams)
5820
5826
  }
5821
- } else if (renderOpts && tcFormatter) {
5822
- cellLabel = tcFormatter(renderOpts, formatParams)
5827
+ } else if (cellRenderOpts && cellDfFormatter) {
5828
+ cellLabel = cellDfFormatter(cellRenderOpts, formatParams)
5829
+ } else if (editRenderOpts && editDfFormatter) {
5830
+ cellLabel = editDfFormatter(editRenderOpts, formatParams)
5823
5831
  }
5824
5832
  if (formatData) {
5825
5833
  const ftValue = [cellValue, etOpSize, etOgSize, clOpSize, clOgSize]
@@ -7067,8 +7075,9 @@ const tableMethods: any = {
7067
7075
  if (column) {
7068
7076
  const { filterStore } = reactData
7069
7077
  const { filterRender, filters } = column
7078
+ const rendererOpts = $xeTable.computeRendererOpts
7070
7079
  const filterOptions = filters || []
7071
- const compConf = isEnableConf(filterRender) ? renderer.get(filterRender.name) : null
7080
+ const compConf = isEnableConf(filterRender) && filterRender.name ? (rendererOpts[filterRender.name] || renderer.get(filterRender.name)) : null
7072
7081
  const frMethod = column.filterRecoverMethod || (compConf ? (compConf.tableFilterRecoverMethod || compConf.filterRecoverMethod) : null)
7073
7082
  filterStore.column = column
7074
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
  )
@@ -4,7 +4,7 @@
4
4
 
5
5
  @font-face {
6
6
  font-family: "vxetableiconfont";
7
- src: url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2');
7
+ src: url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2');
8
8
  }
9
9
 
10
10
  @keyframes rollCircle {
@@ -47,7 +47,7 @@ $btnThemeList: (
47
47
  font-family: "vxetableiconfont" !important;
48
48
  font-style: normal;
49
49
  font-weight: 400;
50
- font-size: 1.1em;
50
+ font-size: 1em;
51
51
  line-height: 1em;
52
52
  -webkit-font-smoothing: antialiased;
53
53
  -moz-osx-font-smoothing: grayscale;
@@ -1065,7 +1065,7 @@ $btnThemeList: (
1065
1065
  vertical-align: middle;
1066
1066
  .vxe-sort--asc-btn,
1067
1067
  .vxe-sort--desc-btn {
1068
- height: 0.6em;
1068
+ height: 0.68em;
1069
1069
  }
1070
1070
  }
1071
1071
  .vxe-cell--sort-horizontal-layout {
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file