vxe-table 3.14.0-beta.9 → 3.14.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 (209) hide show
  1. package/es/grid/src/grid.js +62 -42
  2. package/es/locale/lang/ar-EG.js +7 -1
  3. package/es/locale/lang/de-DE.js +7 -1
  4. package/es/locale/lang/en-US.js +7 -1
  5. package/es/locale/lang/es-ES.js +7 -1
  6. package/es/locale/lang/fr-FR.js +7 -1
  7. package/es/locale/lang/hu-HU.js +7 -1
  8. package/es/locale/lang/hy-AM.js +7 -1
  9. package/es/locale/lang/id-ID.js +7 -1
  10. package/es/locale/lang/it-IT.js +7 -1
  11. package/es/locale/lang/ja-JP.js +7 -1
  12. package/es/locale/lang/ko-KR.js +7 -1
  13. package/es/locale/lang/nb-NO.js +7 -1
  14. package/es/locale/lang/pt-BR.js +7 -1
  15. package/es/locale/lang/ru-RU.js +7 -1
  16. package/es/locale/lang/th-TH.js +7 -1
  17. package/es/locale/lang/ug-CN.js +7 -1
  18. package/es/locale/lang/uk-UA.js +7 -1
  19. package/es/locale/lang/vi-VN.js +7 -1
  20. package/es/locale/lang/zh-CHT.js +7 -1
  21. package/es/locale/lang/zh-CN.js +7 -1
  22. package/es/style.css +1 -1
  23. package/es/table/module/custom/mixin.js +4 -2
  24. package/es/table/module/custom/panel.js +24 -23
  25. package/es/table/module/edit/mixin.js +17 -11
  26. package/es/table/module/export/export-panel.js +5 -4
  27. package/es/table/module/export/import-panel.js +8 -7
  28. package/es/table/module/export/mixin.js +30 -27
  29. package/es/table/module/filter/panel.js +21 -10
  30. package/es/table/module/keyboard/mixin.js +141 -41
  31. package/es/table/module/menu/mixin.js +6 -3
  32. package/es/table/module/menu/panel.js +7 -7
  33. package/es/table/module/validator/mixin.js +2 -2
  34. package/es/table/render/index.js +2 -2
  35. package/es/table/src/body.js +39 -20
  36. package/es/table/src/cell.js +27 -22
  37. package/es/table/src/column.js +11 -9
  38. package/es/table/src/columnInfo.js +6 -6
  39. package/es/table/src/footer.js +12 -7
  40. package/es/table/src/group.js +6 -5
  41. package/es/table/src/header.js +15 -9
  42. package/es/table/src/methods.js +761 -698
  43. package/es/table/src/props.js +4 -0
  44. package/es/table/src/table.js +85 -49
  45. package/es/table/src/util.js +55 -20
  46. package/es/toolbar/src/toolbar.js +3 -3
  47. package/es/ui/index.js +2 -1
  48. package/es/ui/src/log.js +1 -1
  49. package/helper/vetur/attributes.json +1 -1
  50. package/helper/vetur/tags.json +1 -1
  51. package/lib/grid/src/grid.js +69 -59
  52. package/lib/grid/src/grid.min.js +1 -1
  53. package/lib/index.umd.js +1558 -1232
  54. package/lib/index.umd.min.js +1 -1
  55. package/lib/locale/lang/ar-EG.js +7 -1
  56. package/lib/locale/lang/ar-EG.min.js +1 -1
  57. package/lib/locale/lang/de-DE.js +7 -1
  58. package/lib/locale/lang/de-DE.min.js +1 -1
  59. package/lib/locale/lang/en-US.js +7 -1
  60. package/lib/locale/lang/en-US.min.js +1 -1
  61. package/lib/locale/lang/en-US.umd.js +7 -1
  62. package/lib/locale/lang/es-ES.js +7 -1
  63. package/lib/locale/lang/es-ES.min.js +1 -1
  64. package/lib/locale/lang/es-ES.umd.js +7 -1
  65. package/lib/locale/lang/fr-FR.js +7 -1
  66. package/lib/locale/lang/fr-FR.min.js +1 -1
  67. package/lib/locale/lang/hu-HU.js +7 -1
  68. package/lib/locale/lang/hu-HU.min.js +1 -1
  69. package/lib/locale/lang/hu-HU.umd.js +7 -1
  70. package/lib/locale/lang/hy-AM.js +7 -1
  71. package/lib/locale/lang/hy-AM.min.js +1 -1
  72. package/lib/locale/lang/id-ID.js +7 -1
  73. package/lib/locale/lang/id-ID.min.js +1 -1
  74. package/lib/locale/lang/it-IT.js +7 -1
  75. package/lib/locale/lang/it-IT.min.js +1 -1
  76. package/lib/locale/lang/ja-JP.js +7 -1
  77. package/lib/locale/lang/ja-JP.min.js +1 -1
  78. package/lib/locale/lang/ja-JP.umd.js +7 -1
  79. package/lib/locale/lang/ko-KR.js +7 -1
  80. package/lib/locale/lang/ko-KR.min.js +1 -1
  81. package/lib/locale/lang/ko-KR.umd.js +7 -1
  82. package/lib/locale/lang/nb-NO.js +7 -1
  83. package/lib/locale/lang/nb-NO.min.js +1 -1
  84. package/lib/locale/lang/pt-BR.js +7 -1
  85. package/lib/locale/lang/pt-BR.min.js +1 -1
  86. package/lib/locale/lang/pt-BR.umd.js +7 -1
  87. package/lib/locale/lang/ru-RU.js +7 -1
  88. package/lib/locale/lang/ru-RU.min.js +1 -1
  89. package/lib/locale/lang/ru-RU.umd.js +7 -1
  90. package/lib/locale/lang/th-TH.js +7 -1
  91. package/lib/locale/lang/th-TH.min.js +1 -1
  92. package/lib/locale/lang/ug-CN.js +7 -1
  93. package/lib/locale/lang/ug-CN.min.js +1 -1
  94. package/lib/locale/lang/uk-UA.js +7 -1
  95. package/lib/locale/lang/uk-UA.min.js +1 -1
  96. package/lib/locale/lang/uk-UA.umd.js +7 -1
  97. package/lib/locale/lang/vi-VN.js +7 -1
  98. package/lib/locale/lang/vi-VN.min.js +1 -1
  99. package/lib/locale/lang/zh-CHT.js +7 -1
  100. package/lib/locale/lang/zh-CHT.min.js +1 -1
  101. package/lib/locale/lang/zh-CHT.umd.js +7 -1
  102. package/lib/locale/lang/zh-CN.js +7 -1
  103. package/lib/locale/lang/zh-CN.min.js +1 -1
  104. package/lib/locale/lang/zh-CN.umd.js +7 -1
  105. package/lib/style.css +1 -1
  106. package/lib/table/module/custom/mixin.js +5 -3
  107. package/lib/table/module/custom/mixin.min.js +1 -1
  108. package/lib/table/module/custom/panel.js +22 -29
  109. package/lib/table/module/custom/panel.min.js +1 -1
  110. package/lib/table/module/edit/mixin.js +19 -13
  111. package/lib/table/module/edit/mixin.min.js +1 -1
  112. package/lib/table/module/export/export-panel.js +5 -4
  113. package/lib/table/module/export/export-panel.min.js +1 -1
  114. package/lib/table/module/export/import-panel.js +8 -7
  115. package/lib/table/module/export/import-panel.min.js +1 -1
  116. package/lib/table/module/export/mixin.js +35 -34
  117. package/lib/table/module/export/mixin.min.js +1 -1
  118. package/lib/table/module/filter/panel.js +16 -16
  119. package/lib/table/module/filter/panel.min.js +1 -1
  120. package/lib/table/module/keyboard/mixin.js +149 -47
  121. package/lib/table/module/keyboard/mixin.min.js +1 -1
  122. package/lib/table/module/menu/mixin.js +6 -3
  123. package/lib/table/module/menu/mixin.min.js +1 -1
  124. package/lib/table/module/menu/panel.js +7 -7
  125. package/lib/table/module/menu/panel.min.js +1 -1
  126. package/lib/table/module/validator/mixin.js +3 -3
  127. package/lib/table/module/validator/mixin.min.js +1 -1
  128. package/lib/table/render/index.js +3 -2
  129. package/lib/table/render/index.min.js +1 -1
  130. package/lib/table/src/body.js +47 -20
  131. package/lib/table/src/body.min.js +1 -1
  132. package/lib/table/src/cell.js +39 -23
  133. package/lib/table/src/cell.min.js +1 -1
  134. package/lib/table/src/column.js +11 -9
  135. package/lib/table/src/column.min.js +1 -1
  136. package/lib/table/src/columnInfo.js +6 -6
  137. package/lib/table/src/columnInfo.min.js +1 -1
  138. package/lib/table/src/footer.js +12 -5
  139. package/lib/table/src/footer.min.js +1 -1
  140. package/lib/table/src/group.js +6 -5
  141. package/lib/table/src/group.min.js +1 -1
  142. package/lib/table/src/header.js +16 -8
  143. package/lib/table/src/header.min.js +1 -1
  144. package/lib/table/src/methods.js +898 -825
  145. package/lib/table/src/methods.min.js +1 -1
  146. package/lib/table/src/props.js +4 -0
  147. package/lib/table/src/props.min.js +1 -1
  148. package/lib/table/src/table.js +93 -52
  149. package/lib/table/src/table.min.js +1 -1
  150. package/lib/table/src/util.js +62 -21
  151. package/lib/table/src/util.min.js +1 -1
  152. package/lib/toolbar/src/toolbar.js +3 -3
  153. package/lib/ui/index.js +2 -1
  154. package/lib/ui/index.min.js +1 -1
  155. package/lib/ui/src/log.js +1 -1
  156. package/lib/ui/src/log.min.js +1 -1
  157. package/package.json +2 -2
  158. package/packages/grid/src/grid.ts +75 -51
  159. package/packages/locale/lang/ar-EG.ts +7 -1
  160. package/packages/locale/lang/de-DE.ts +7 -1
  161. package/packages/locale/lang/en-US.ts +7 -1
  162. package/packages/locale/lang/es-ES.ts +7 -1
  163. package/packages/locale/lang/fr-FR.ts +7 -1
  164. package/packages/locale/lang/hu-HU.ts +7 -1
  165. package/packages/locale/lang/hy-AM.ts +7 -1
  166. package/packages/locale/lang/id-ID.ts +7 -1
  167. package/packages/locale/lang/it-IT.ts +7 -1
  168. package/packages/locale/lang/ja-JP.ts +7 -1
  169. package/packages/locale/lang/ko-KR.ts +7 -1
  170. package/packages/locale/lang/nb-NO.ts +7 -1
  171. package/packages/locale/lang/pt-BR.ts +7 -1
  172. package/packages/locale/lang/ru-RU.ts +7 -1
  173. package/packages/locale/lang/th-TH.ts +7 -1
  174. package/packages/locale/lang/ug-CN.ts +7 -1
  175. package/packages/locale/lang/uk-UA.ts +7 -1
  176. package/packages/locale/lang/vi-VN.ts +7 -1
  177. package/packages/locale/lang/zh-CHT.ts +7 -1
  178. package/packages/locale/lang/zh-CN.ts +7 -1
  179. package/packages/table/module/custom/mixin.ts +6 -3
  180. package/packages/table/module/custom/panel.ts +42 -37
  181. package/packages/table/module/edit/mixin.ts +20 -14
  182. package/packages/table/module/export/export-panel.ts +8 -5
  183. package/packages/table/module/export/import-panel.ts +11 -7
  184. package/packages/table/module/export/mixin.ts +37 -32
  185. package/packages/table/module/filter/panel.ts +25 -10
  186. package/packages/table/module/keyboard/mixin.ts +155 -49
  187. package/packages/table/module/menu/mixin.ts +12 -6
  188. package/packages/table/module/menu/panel.ts +10 -7
  189. package/packages/table/module/validator/mixin.ts +2 -2
  190. package/packages/table/render/index.ts +2 -2
  191. package/packages/table/src/body.ts +39 -20
  192. package/packages/table/src/cell.ts +27 -22
  193. package/packages/table/src/column.ts +14 -10
  194. package/packages/table/src/columnInfo.ts +9 -6
  195. package/packages/table/src/footer.ts +12 -7
  196. package/packages/table/src/group.ts +9 -5
  197. package/packages/table/src/header.ts +16 -9
  198. package/packages/table/src/methods.ts +840 -734
  199. package/packages/table/src/props.ts +16 -12
  200. package/packages/table/src/table.ts +99 -52
  201. package/packages/table/src/util.ts +63 -21
  202. package/packages/toolbar/src/toolbar.ts +3 -3
  203. package/packages/ui/index.ts +1 -0
  204. /package/es/{iconfont.1741336976538.ttf → iconfont.1742955973002.ttf} +0 -0
  205. /package/es/{iconfont.1741336976538.woff → iconfont.1742955973002.woff} +0 -0
  206. /package/es/{iconfont.1741336976538.woff2 → iconfont.1742955973002.woff2} +0 -0
  207. /package/lib/{iconfont.1741336976538.ttf → iconfont.1742955973002.ttf} +0 -0
  208. /package/lib/{iconfont.1741336976538.woff → iconfont.1742955973002.woff} +0 -0
  209. /package/lib/{iconfont.1741336976538.woff2 → iconfont.1742955973002.woff2} +0 -0
@@ -164,9 +164,11 @@ export default {
164
164
  // 是否自动根据状态属性去更新响应式表格宽高
165
165
  syncResize: [Boolean, String, Number],
166
166
  // 响应式布局配置项
167
- resizeConfig: Object,
167
+ resizeConfig: Object as PropType<VxeTablePropTypes.ResizeConfig>,
168
168
  // 列配置信息
169
- columnConfig: Object,
169
+ columnConfig: Object as PropType<VxeTablePropTypes.ColumnConfig>,
170
+ // 当前列配置信息
171
+ currentColumnConfig: Object as PropType<VxeTablePropTypes.CurrentColumnConfig>,
170
172
  // 单元格配置信息
171
173
  cellConfig: Object as PropType<VxeTablePropTypes.CellConfig>,
172
174
  // 表头单元格配置信息
@@ -174,7 +176,9 @@ export default {
174
176
  // 表尾单元格配置信息
175
177
  footerCellConfig: Object as PropType<VxeTablePropTypes.FooterCellConfig>,
176
178
  // 行配置信息
177
- rowConfig: Object,
179
+ rowConfig: Object as PropType<VxeTablePropTypes.RowConfig>,
180
+ // 当前行配置信息
181
+ currentRowConfig: Object as PropType<VxeTablePropTypes.CurrentRowConfig>,
178
182
  // 已废弃,被 rowDragConfig 替换
179
183
  dragConfig: Object as PropType<VxeTablePropTypes.DragConfig>,
180
184
  // 行拖拽排序配置项
@@ -182,27 +186,27 @@ export default {
182
186
  // 列拖拽排序配置项
183
187
  columnDragConfig: Object as PropType<VxeTablePropTypes.ColumnDragConfig>,
184
188
  // 列调整配置项
185
- resizableConfig: Object,
189
+ resizableConfig: Object as PropType<VxeTablePropTypes.ResizableConfig>,
186
190
  // 序号配置项
187
- seqConfig: Object,
191
+ seqConfig: Object as PropType<VxeTablePropTypes.SeqConfig>,
188
192
  // 排序配置项
189
- sortConfig: Object,
193
+ sortConfig: Object as PropType<VxeTablePropTypes.SortConfig>,
190
194
  // 筛选配置项
191
- filterConfig: Object,
195
+ filterConfig: Object as PropType<VxeTablePropTypes.FilterConfig>,
192
196
  // 单选框配置
193
- radioConfig: Object,
197
+ radioConfig: Object as PropType<VxeTablePropTypes.RadioConfig>,
194
198
  // 复选框配置项
195
- checkboxConfig: Object,
199
+ checkboxConfig: Object as PropType<VxeTablePropTypes.CheckboxConfig>,
196
200
  // tooltip 配置项
197
- tooltipConfig: Object,
201
+ tooltipConfig: Object as PropType<VxeTablePropTypes.TooltipConfig>,
198
202
  // 导出配置项
199
203
  exportConfig: [Boolean, Object],
200
204
  // 导入配置项
201
205
  importConfig: [Boolean, Object],
202
206
  // 打印配置项
203
- printConfig: Object,
207
+ printConfig: Object as PropType<VxeTablePropTypes.PrintConfig>,
204
208
  // 展开行配置项
205
- expandConfig: Object,
209
+ expandConfig: Object as PropType<VxeTablePropTypes.ExpandConfig>,
206
210
  // 树形结构配置项
207
211
  treeConfig: [Boolean, Object],
208
212
  // 快捷菜单配置项
@@ -2,7 +2,7 @@ import { CreateElement } from 'vue'
2
2
  import XEUtils from 'xe-utils'
3
3
  import { getFuncText, isEnableConf } from '../../ui/src/utils'
4
4
  import { initTpImg } from '../../ui/src/dom'
5
- import { getRowid } from './util'
5
+ import { createHandleGetRowId } from './util'
6
6
  import { VxeUI } from '../../ui'
7
7
  import methods from './methods'
8
8
  import TableBodyComponent from './body'
@@ -34,14 +34,15 @@ const { getConfig, getIcon, getI18n, renderer, globalResize, globalEvents, globa
34
34
  * 渲染浮固定列
35
35
  * 分别渲染左边固定列和右边固定列
36
36
  * 如果宽度足够情况下,则不需要渲染固定列
37
- * @param {Function} h 创建 VNode 函数
38
- * @param {Object} $xetable 表格实例
39
- * @param {String} fixedType 固定列类型
40
37
  */
41
- function renderFixed (h: CreateElement, $xetable: any, fixedType: any) {
42
- const { _e, tableData, tableColumn, tableGroupColumn, vSize, showHeader, showFooter, columnStore, footerTableData } = $xetable
38
+ function renderFixed (h: CreateElement, $xeTable: VxeTableConstructor & VxeTablePrivateMethods, fixedType: any) {
39
+ const props = $xeTable
40
+ const reactData = $xeTable as unknown as TableReactData
41
+
42
+ const { showHeader, showFooter } = props
43
+ const { tableData, tableColumn, tableGroupColumn, columnStore, footerTableData } = reactData
43
44
  const isFixedLeft = fixedType === 'left'
44
- const fixedColumn = columnStore[`${fixedType}List`]
45
+ const fixedColumn = isFixedLeft ? columnStore.leftList : columnStore.rightList
45
46
  return h('div', {
46
47
  ref: isFixedLeft ? 'refLeftContainer' : 'refRightContainer',
47
48
  class: `vxe-table--fixed-${fixedType}-wrapper`
@@ -53,19 +54,17 @@ function renderFixed (h: CreateElement, $xetable: any, fixedType: any) {
53
54
  tableData,
54
55
  tableColumn,
55
56
  tableGroupColumn,
56
- size: vSize,
57
57
  fixedColumn
58
58
  },
59
59
  ref: `${fixedType}Header`
60
60
  })
61
- : _e(),
61
+ : renderEmptyElement($xeTable),
62
62
  h(TableBodyComponent, {
63
63
  props: {
64
64
  fixedType,
65
65
  tableData,
66
66
  tableColumn,
67
- fixedColumn,
68
- size: vSize
67
+ fixedColumn
69
68
  },
70
69
  ref: `${fixedType}Body`
71
70
  }),
@@ -75,12 +74,11 @@ function renderFixed (h: CreateElement, $xetable: any, fixedType: any) {
75
74
  footerTableData,
76
75
  tableColumn,
77
76
  fixedColumn,
78
- fixedType,
79
- size: vSize
77
+ fixedType
80
78
  },
81
79
  ref: `${fixedType}Footer`
82
80
  })
83
- : _e()
81
+ : renderEmptyElement($xeTable)
84
82
  ])
85
83
  }
86
84
 
@@ -209,6 +207,7 @@ function renderRowExpandedVNs (h: CreateElement, $xeTable: VxeTableConstructor &
209
207
  ]
210
208
 
211
209
  if (expandColumn) {
210
+ const { handleGetRowId } = createHandleGetRowId($xeTable)
212
211
  tableRowExpandedList.forEach((row) => {
213
212
  const expandOpts = $xeTable.computeExpandOpts
214
213
  const { height: expandHeight, padding } = expandOpts
@@ -216,7 +215,7 @@ function renderRowExpandedVNs (h: CreateElement, $xeTable: VxeTableConstructor &
216
215
  const treeOpts = $xeTable.computeTreeOpts
217
216
  const { transform, seqMode } = treeOpts
218
217
  const cellStyle: Record<string, string> = {}
219
- const rowid = getRowid($xeTable, row)
218
+ const rowid = handleGetRowId(row)
220
219
  const rest = fullAllDataRowIdData[rowid]
221
220
  let rowLevel = 0
222
221
  let seq: string | number = -1
@@ -419,7 +418,6 @@ export default {
419
418
  props: tableProps,
420
419
  provide () {
421
420
  return {
422
- $xetable: this,
423
421
  $xeTable: this,
424
422
  xecolgroup: null
425
423
  }
@@ -430,9 +428,6 @@ export default {
430
428
  },
431
429
  $xeGrid: {
432
430
  default: null
433
- },
434
- $xegrid: {
435
- default: null
436
431
  }
437
432
  },
438
433
  data () {
@@ -471,8 +466,6 @@ export default {
471
466
  isAllSelected: false,
472
467
  // 复选框属性,有选中且非全选状态
473
468
  isIndeterminate: false,
474
- // 复选框属性,已选中的行集合
475
- selectCheckboxMaps: {},
476
469
  // 当前行
477
470
  currentRow: null,
478
471
  // 单选框属性,选中列
@@ -486,16 +479,6 @@ export default {
486
479
  hasFixedColumn: false,
487
480
  // 树节点列信息
488
481
  treeNodeColumn: null,
489
- // 已展开的行集合
490
- rowExpandedMaps: {},
491
- // 懒加载中的展开行的集合
492
- rowExpandLazyLoadedMaps: {},
493
- // 已展开树节点集合
494
- treeExpandedMaps: {},
495
- // 懒加载中的树节点的集合
496
- treeExpandLazyLoadedMaps: {},
497
- // 树节点不确定状态的集合
498
- treeIndeterminateMaps: {},
499
482
  // 合并单元格的对象集
500
483
  mergeList: [],
501
484
  // 合并表尾数据的对象集
@@ -512,8 +495,6 @@ export default {
512
495
  upDataFlag: 0,
513
496
  // 刷新列标识,当列的特定属性被改变时,触发表格刷新列
514
497
  reColumnFlag: 0,
515
- // 已标记的对象集
516
- pendingRowMaps: {},
517
498
  // 自定义列相关的信息
518
499
  customStore: {
519
500
  btnEl: null,
@@ -649,6 +630,11 @@ export default {
649
630
  isFooter: false
650
631
  },
651
632
 
633
+ rowExpandedFlag: 1,
634
+ treeExpandedFlag: 1,
635
+ updateCheckboxFlag: 1,
636
+ pendingRowFlag: 1,
637
+
652
638
  rowHeightStore: {
653
639
  default: 48,
654
640
  medium: 44,
@@ -667,6 +653,7 @@ export default {
667
653
  rowExpandHeightFlag: 1,
668
654
  calcCellHeightFlag: 1,
669
655
  resizeHeightFlag: 1,
656
+ resizeWidthFlag: 1,
670
657
 
671
658
  isCustomStatus: false,
672
659
 
@@ -774,13 +761,13 @@ export default {
774
761
  return this.computeRowHeightMaps
775
762
  },
776
763
  computeRowHeightMaps () {
777
- const $xeTable = this
778
- const reactData = $xeTable as TableReactData
764
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
765
+ const reactData = $xeTable as unknown as TableReactData
779
766
 
780
767
  return reactData.rowHeightStore
781
768
  },
782
769
  computeDefaultRowHeight () {
783
- const $xeTable = this
770
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
784
771
 
785
772
  const vSize = $xeTable.computeSize
786
773
  const rowHeightMaps = $xeTable.computeRowHeightMaps
@@ -790,31 +777,61 @@ export default {
790
777
  return this.computeColumnOpts
791
778
  },
792
779
  computeColumnOpts () {
793
- return Object.assign({}, getConfig().table.columnConfig, this.columnConfig)
780
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
781
+ const props = $xeTable
782
+
783
+ return Object.assign({}, getConfig().table.columnConfig, props.columnConfig)
784
+ },
785
+ computeCurrentColumnOpts () {
786
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
787
+ const props = $xeTable
788
+
789
+ return Object.assign({}, getConfig().table.currentColumnConfig, props.currentColumnConfig)
794
790
  },
795
791
  computeCellOpts () {
796
792
  const $xeTable = this
797
793
  const props = $xeTable
798
794
 
799
- return Object.assign({}, getConfig().table.cellConfig, props.cellConfig)
795
+ const cellOpts = Object.assign({}, getConfig().table.cellConfig, props.cellConfig)
796
+ if (cellOpts.height) {
797
+ cellOpts.height = XEUtils.toNumber(cellOpts.height)
798
+ }
799
+ return cellOpts
800
800
  },
801
801
  computeHeaderCellOpts () {
802
802
  const $xeTable = this
803
803
  const props = $xeTable
804
804
 
805
- return Object.assign({}, getConfig().table.headerCellConfig, props.headerCellConfig)
805
+ const headerCellOpts = Object.assign({}, getConfig().table.headerCellConfig, props.headerCellConfig)
806
+ if (headerCellOpts.height) {
807
+ headerCellOpts.height = XEUtils.toNumber(headerCellOpts.height)
808
+ }
809
+ return headerCellOpts
806
810
  },
807
811
  computeFooterCellOpts () {
808
812
  const $xeTable = this
809
813
  const props = $xeTable
810
814
 
811
- return Object.assign({}, getConfig().table.footerCellConfig, props.footerCellConfig)
815
+ const footerCellOpts = Object.assign({}, getConfig().table.footerCellConfig, props.footerCellConfig)
816
+ if (footerCellOpts.height) {
817
+ footerCellOpts.height = XEUtils.toNumber(footerCellOpts.height)
818
+ }
819
+ return footerCellOpts
812
820
  },
813
821
  rowOpts () {
814
822
  return this.computeRowOpts
815
823
  },
816
824
  computeRowOpts () {
817
- return Object.assign({}, getConfig().table.rowConfig, this.rowConfig)
825
+ const $xeTable = this
826
+ const props = $xeTable
827
+
828
+ return Object.assign({}, getConfig().table.rowConfig, props.rowConfig)
829
+ },
830
+ computeCurrentRowOpts () {
831
+ const $xeTable = this
832
+ const props = $xeTable
833
+
834
+ return Object.assign({}, getConfig().table.currentRowConfig, props.currentRowConfig)
818
835
  },
819
836
  computeRowDragOpts () {
820
837
  return Object.assign({}, getConfig().table.rowDragConfig, this.rowDragConfig)
@@ -838,25 +855,37 @@ export default {
838
855
  return this.computeSeqOpts
839
856
  },
840
857
  computeSeqOpts () {
841
- return Object.assign({ startIndex: 0 }, getConfig().table.seqConfig, this.seqConfig)
858
+ const $xeTable = this
859
+ const props = $xeTable
860
+
861
+ return Object.assign({ startIndex: 0 }, getConfig().table.seqConfig, props.seqConfig)
842
862
  },
843
863
  radioOpts () {
844
864
  return this.computeRadioOpts
845
865
  },
846
866
  computeRadioOpts () {
847
- return Object.assign({}, getConfig().table.radioConfig, this.radioConfig)
867
+ const $xeTable = this
868
+ const props = $xeTable
869
+
870
+ return Object.assign({}, getConfig().table.radioConfig, props.radioConfig)
848
871
  },
849
872
  checkboxOpts () {
850
873
  return this.computeCheckboxOpts
851
874
  },
852
875
  computeCheckboxOpts () {
853
- return Object.assign({}, getConfig().table.checkboxConfig, this.checkboxConfig)
876
+ const $xeTable = this
877
+ const props = $xeTable
878
+
879
+ return Object.assign({}, getConfig().table.checkboxConfig, props.checkboxConfig)
854
880
  },
855
881
  tooltipOpts () {
856
882
  return this.computeTooltipOpts
857
883
  },
858
884
  computeTooltipOpts () {
859
- return Object.assign({}, getConfig().tooltip, getConfig().table.tooltipConfig, this.tooltipConfig)
885
+ const $xeTable = this
886
+ const props = $xeTable
887
+
888
+ return Object.assign({}, getConfig().tooltip, getConfig().table.tooltipConfig, props.tooltipConfig)
860
889
  },
861
890
  tipConfig () {
862
891
  return { ...this.tooltipOpts }
@@ -1071,13 +1100,16 @@ export default {
1071
1100
  computeTableRowExpandedList () {
1072
1101
  const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
1073
1102
  const reactData = $xeTable as unknown as TableReactData
1103
+ const internalData = $xeTable as unknown as TableInternalData
1074
1104
 
1075
- const { rowExpandedMaps, tableData, expandColumn } = reactData
1105
+ const { rowExpandedFlag, tableData, expandColumn } = reactData
1106
+ const { rowExpandedMaps } = internalData
1107
+ const { handleGetRowId } = createHandleGetRowId($xeTable)
1076
1108
  const expandList: any[] = []
1077
- if (expandColumn) {
1109
+ if (expandColumn && rowExpandedFlag) {
1078
1110
  const rowKeys: Record<string, boolean> = {}
1079
1111
  tableData.forEach(row => {
1080
- rowKeys[getRowid($xeTable, row)] = true
1112
+ rowKeys[handleGetRowId(row)] = true
1081
1113
  })
1082
1114
  XEUtils.each(rowExpandedMaps, (row, rowid) => {
1083
1115
  if (rowKeys[rowid]) {
@@ -1330,13 +1362,15 @@ export default {
1330
1362
  lastScrollTop: 0,
1331
1363
  // 单选框属性,已选中保留的行
1332
1364
  radioReserveRow: null,
1333
- // 复选框属性,已选中保留的行
1365
+ // 复选框属性,已选中保留的行集合
1334
1366
  checkboxReserveRowMap: {},
1335
- // 行数据,已展开保留的行
1367
+ // 行数据,已展开保留的行集合
1336
1368
  rowExpandedReserveRowMap: {},
1337
- // 树结构数据,已展开保留的行
1369
+ // 树结构数据,已展开保留的行集合
1338
1370
  treeExpandedReserveRowMap: {},
1339
- // 完整数据、条件处理后
1371
+ // 树结构数据,不确定状态的集合
1372
+ treeIndeterminateRowMaps: {},
1373
+ // 列表完整数据、条件处理后
1340
1374
  tableFullData: [],
1341
1375
  afterFullData: [],
1342
1376
  // 列表条件处理后数据集合
@@ -1355,6 +1389,19 @@ export default {
1355
1389
  fullColumnIdData: {},
1356
1390
  fullColumnFieldData: {},
1357
1391
 
1392
+ // 已展开的行集合
1393
+ rowExpandedMaps: {},
1394
+ // 懒加载中的展开行的集合
1395
+ rowExpandLazyLoadedMaps: {},
1396
+ // 已展开树节点集合
1397
+ treeExpandedMaps: {},
1398
+ // 懒加载中的树节点的集合
1399
+ treeExpandLazyLoadedMaps: {},
1400
+ // 复选框属性,已选中的行集合
1401
+ selectCheckboxMaps: {},
1402
+ // 已标记的对象集
1403
+ pendingRowMaps: {},
1404
+
1358
1405
  swYSize: 0,
1359
1406
  swYInterval: 0,
1360
1407
  swYTotal: 0
@@ -103,37 +103,69 @@ export function getRowUniqueId () {
103
103
  }
104
104
 
105
105
  // 行主键 key
106
- export function getRowkey ($xeTable: any) {
106
+ export function getRowkey ($xeTable: VxeTableConstructor) {
107
107
  const props = $xeTable
108
108
  const rowOpts = $xeTable.computeRowOpts
109
109
  return `${props.rowId || rowOpts.keyField || '_X_ROW_KEY'}`
110
110
  }
111
111
 
112
112
  // 行主键 value
113
- export function getRowid ($xetable: any, row: any) {
114
- const rowid = XEUtils.get(row, getRowkey($xetable))
113
+ export function getRowid ($xeTable: VxeTableConstructor, row: any) {
114
+ const rowid = XEUtils.get(row, getRowkey($xeTable))
115
115
  return encodeRowid(rowid)
116
116
  }
117
117
 
118
+ export function createHandleUpdateRowId ($xeTable: VxeTableConstructor) {
119
+ const rowKey = getRowkey($xeTable)
120
+ const isDeepKey = rowKey.indexOf('.') > -1
121
+ const updateRId = isDeepKey ? updateDeepRowKey : updateFastRowKey
122
+ return {
123
+ rowKey,
124
+ handleUpdateRowId (row: any) {
125
+ return row ? updateRId(row, rowKey) : null
126
+ }
127
+ }
128
+ }
129
+
130
+ export function createHandleGetRowId ($xeTable: VxeTableConstructor) {
131
+ const rowKey = getRowkey($xeTable)
132
+ const isDeepKey = rowKey.indexOf('.') > -1
133
+ const getRId = isDeepKey ? getDeepRowIdByKey : getFastRowIdByKey
134
+ return {
135
+ rowKey,
136
+ handleGetRowId (row: any) {
137
+ return row ? getRId(row, rowKey) : null
138
+ }
139
+ }
140
+ }
141
+
118
142
  // 编码行主键
119
143
  export function encodeRowid (rowVal: string) {
120
144
  return XEUtils.eqNull(rowVal) ? '' : encodeURIComponent(rowVal)
121
145
  }
122
146
 
123
- export function updateDeepRowKey (row: any, rowkey: string) {
124
- let rowid = XEUtils.get(row, rowkey)
147
+ function getDeepRowIdByKey (row: any, rowKey: string) {
148
+ return XEUtils.get(row, rowKey)
149
+ }
150
+
151
+ export function updateDeepRowKey (row: any, rowKey: string) {
152
+ let rowid = getDeepRowIdByKey(row, rowKey)
125
153
  if (eqEmptyValue(rowid)) {
126
154
  rowid = getRowUniqueId()
127
- XEUtils.set(row, rowkey, rowid)
155
+ XEUtils.set(row, rowKey, rowid)
128
156
  }
129
157
  return rowid
130
158
  }
131
159
 
132
- export function updateFastRowKey (row: any, rowkey: string) {
133
- let rowid = row[rowkey]
160
+ function getFastRowIdByKey (row: any, rowKey: string) {
161
+ return row[rowKey]
162
+ }
163
+
164
+ export function updateFastRowKey (row: any, rowKey: string) {
165
+ let rowid = getFastRowIdByKey(row, rowKey)
134
166
  if (eqEmptyValue(rowid)) {
135
167
  rowid = getRowUniqueId()
136
- row[rowkey] = rowid
168
+ row[rowKey] = rowid
137
169
  }
138
170
  return rowid
139
171
  }
@@ -182,34 +214,44 @@ export const handleRowidOrRow = ($xeTable: VxeTableConstructor, rowidOrRow: any)
182
214
 
183
215
  // 组装列配置
184
216
  export function assembleColumn (_vm: any) {
185
- const { $el, $xetable, $xecolumn, columnConfig } = _vm
186
- const groupConfig = $xecolumn ? $xecolumn.columnConfig : null
217
+ const $xeTable = _vm.$xeTable as VxeTableConstructor & VxeTablePrivateMethods
218
+ const reactData = $xeTable as unknown as TableReactData
219
+ const { staticColumns } = reactData
220
+
221
+ const { $el, $xeColumn, columnConfig } = _vm
222
+ const groupConfig = $xeColumn ? $xeColumn.columnConfig : null
187
223
  if (groupConfig) {
188
- if ($xecolumn.$options._componentTag === 'vxe-table-column') {
189
- errLog('vxe.error.groupTag', [`<vxe-table-colgroup title=${$xecolumn.title} ...>`, `<vxe-table-column title=${$xecolumn.title} ...>`])
190
- } else if ($xecolumn.$options._componentTag === 'vxe-column') {
191
- warnLog('vxe.error.groupTag', [`<vxe-colgroup title=${$xecolumn.title} ...>`, `<vxe-column title=${$xecolumn.title} ...>`])
224
+ if ($xeColumn.$options._componentTag === 'vxe-table-column') {
225
+ errLog('vxe.error.groupTag', [`<vxe-table-colgroup title=${$xeColumn.title} ...>`, `<vxe-table-column title=${$xeColumn.title} ...>`])
226
+ } else if ($xeColumn.$options._componentTag === 'vxe-column') {
227
+ warnLog('vxe.error.groupTag', [`<vxe-colgroup title=${$xeColumn.title} ...>`, `<vxe-column title=${$xeColumn.title} ...>`])
192
228
  }
193
229
  if (!groupConfig.children) {
194
230
  groupConfig.children = []
195
231
  }
196
- groupConfig.children.splice(XEUtils.arrayIndexOf($xecolumn.$el.children, $el), 0, columnConfig)
232
+ groupConfig.children.splice(XEUtils.arrayIndexOf($xeColumn.$el.children, $el), 0, columnConfig)
197
233
  } else {
198
- $xetable.staticColumns.splice(XEUtils.arrayIndexOf($xetable.$refs.hideColumn.children, $el), 0, columnConfig)
234
+ staticColumns.splice(XEUtils.arrayIndexOf(($xeTable.$refs.hideColumn as any).children, $el), 0, columnConfig)
199
235
  }
200
236
  }
201
237
 
202
238
  // 销毁列
203
239
  export function destroyColumn (_vm: any) {
204
- const { $xetable, columnConfig } = _vm
205
- const matchObj = XEUtils.findTree($xetable.staticColumns, column => column === columnConfig)
240
+ const $xeTable = _vm.$xeTable as VxeTableConstructor & VxeTablePrivateMethods
241
+ const reactData = $xeTable as unknown as TableReactData
242
+ const { staticColumns } = reactData
243
+
244
+ const { columnConfig } = _vm
245
+ const matchObj = XEUtils.findTree(staticColumns, column => column === columnConfig)
206
246
  if (matchObj) {
207
247
  matchObj.items.splice(matchObj.index, 1)
208
248
  }
209
249
  }
210
250
 
211
- export function getRootColumn ($xetable: any, column: any) {
212
- const fullColumnIdData = $xetable.fullColumnIdData
251
+ export function getRootColumn ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, column: any) {
252
+ const internalData = $xeTable as unknown as TableInternalData
253
+
254
+ const { fullColumnIdData } = internalData
213
255
  if (!column) {
214
256
  return null
215
257
  }
@@ -719,13 +719,13 @@ export default /* define-vxe-component start */ defineVxeComponent({
719
719
  $xeToolbar.$nextTick(() => {
720
720
  const { refresh } = props
721
721
  const refreshOpts = $xeToolbar.computeRefreshOpts
722
- const $xetable = this.fintTable() as any
722
+ const $xeTable = this.fintTable() as any
723
723
  const queryMethod = refreshOpts.queryMethod || refreshOpts.query
724
724
  if (refresh && !$xeGrid && !queryMethod) {
725
725
  warnLog('vxe.error.notFunc', ['queryMethod'])
726
726
  }
727
- if ($xetable) {
728
- $xetable.connect(this)
727
+ if ($xeTable) {
728
+ $xeTable.connect(this)
729
729
  }
730
730
  const customOpts = $xeToolbar.computeCustomOpts
731
731
  if (customOpts.isFooter) {
@@ -130,6 +130,7 @@ VxeUI.setConfig({
130
130
  // remote: false,
131
131
  // filterMethod: null,
132
132
  // destroyOnClose: false,
133
+ // isEvery: false,
133
134
  showIcon: true
134
135
  },
135
136
  treeConfig: {