vxe-table 3.14.0-beta.9 → 3.14.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 (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 +103 -68
  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 -5
  34. package/es/table/render/index.js +2 -2
  35. package/es/table/src/body.js +43 -25
  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 +1047 -971
  43. package/es/table/src/props.js +4 -0
  44. package/es/table/src/table.js +100 -64
  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 +2006 -1686
  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 +119 -105
  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 +4 -10
  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 +51 -25
  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 +1219 -1151
  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 +108 -67
  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 +139 -95
  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 +3 -6
  190. package/packages/table/render/index.ts +2 -2
  191. package/packages/table/src/body.ts +43 -25
  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 +1174 -1027
  199. package/packages/table/src/props.ts +16 -12
  200. package/packages/table/src/table.ts +117 -70
  201. package/packages/table/src/util.ts +65 -23
  202. package/packages/toolbar/src/toolbar.ts +3 -3
  203. package/packages/ui/index.ts +1 -0
  204. /package/es/{iconfont.1741336976538.ttf → iconfont.1743045564244.ttf} +0 -0
  205. /package/es/{iconfont.1741336976538.woff → iconfont.1743045564244.woff} +0 -0
  206. /package/es/{iconfont.1741336976538.woff2 → iconfont.1743045564244.woff2} +0 -0
  207. /package/lib/{iconfont.1741336976538.ttf → iconfont.1743045564244.ttf} +0 -0
  208. /package/lib/{iconfont.1741336976538.woff → iconfont.1743045564244.woff} +0 -0
  209. /package/lib/{iconfont.1741336976538.woff2 → iconfont.1743045564244.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,
@@ -589,9 +570,7 @@ export default {
589
570
  focused: {
590
571
  row: null,
591
572
  column: null
592
- },
593
- insertMaps: {},
594
- removeMaps: {}
573
+ }
595
574
  },
596
575
  // 存放 tooltip 相关信息
597
576
  tooltipStore: {
@@ -649,6 +628,11 @@ export default {
649
628
  isFooter: false
650
629
  },
651
630
 
631
+ rowExpandedFlag: 1,
632
+ treeExpandedFlag: 1,
633
+ updateCheckboxFlag: 1,
634
+ pendingRowFlag: 1,
635
+
652
636
  rowHeightStore: {
653
637
  default: 48,
654
638
  medium: 44,
@@ -667,6 +651,7 @@ export default {
667
651
  rowExpandHeightFlag: 1,
668
652
  calcCellHeightFlag: 1,
669
653
  resizeHeightFlag: 1,
654
+ resizeWidthFlag: 1,
670
655
 
671
656
  isCustomStatus: false,
672
657
 
@@ -709,7 +694,7 @@ export default {
709
694
  return Object.assign({ message: 'default' }, getConfig().table.validConfig, this.validConfig)
710
695
  },
711
696
  sXOpts () {
712
- return this.computeSXOpts
697
+ return this.computeVirtualXOpts
713
698
  },
714
699
  computeSXOpts () {
715
700
  return this.computeVirtualXOpts
@@ -717,15 +702,15 @@ export default {
717
702
  computeScrollXThreshold () {
718
703
  const $xeTable = this
719
704
 
720
- const sXOpts = $xeTable.computeSXOpts
721
- const { threshold } = sXOpts
705
+ const virtualXOpts = $xeTable.computeVirtualXOpts
706
+ const { threshold } = virtualXOpts
722
707
  if (threshold) {
723
708
  return XEUtils.toNumber(threshold)
724
709
  }
725
710
  return 0
726
711
  },
727
712
  sYOpts () {
728
- return this.computeSYOpts
713
+ return this.computeVirtualYOpts
729
714
  },
730
715
  computeSYOpts () {
731
716
  return this.computeVirtualYOpts
@@ -763,8 +748,8 @@ export default {
763
748
  computeScrollYThreshold () {
764
749
  const $xeTable = this
765
750
 
766
- const sYOpts = $xeTable.computeSYOpts
767
- const { threshold } = sYOpts
751
+ const virtualYOpts = $xeTable.computeVirtualYOpts
752
+ const { threshold } = virtualYOpts
768
753
  if (threshold) {
769
754
  return XEUtils.toNumber(threshold)
770
755
  }
@@ -774,13 +759,13 @@ export default {
774
759
  return this.computeRowHeightMaps
775
760
  },
776
761
  computeRowHeightMaps () {
777
- const $xeTable = this
778
- const reactData = $xeTable as TableReactData
762
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
763
+ const reactData = $xeTable as unknown as TableReactData
779
764
 
780
765
  return reactData.rowHeightStore
781
766
  },
782
767
  computeDefaultRowHeight () {
783
- const $xeTable = this
768
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
784
769
 
785
770
  const vSize = $xeTable.computeSize
786
771
  const rowHeightMaps = $xeTable.computeRowHeightMaps
@@ -790,31 +775,61 @@ export default {
790
775
  return this.computeColumnOpts
791
776
  },
792
777
  computeColumnOpts () {
793
- return Object.assign({}, getConfig().table.columnConfig, this.columnConfig)
778
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
779
+ const props = $xeTable
780
+
781
+ return Object.assign({}, getConfig().table.columnConfig, props.columnConfig)
782
+ },
783
+ computeCurrentColumnOpts () {
784
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
785
+ const props = $xeTable
786
+
787
+ return Object.assign({}, getConfig().table.currentColumnConfig, props.currentColumnConfig)
794
788
  },
795
789
  computeCellOpts () {
796
790
  const $xeTable = this
797
791
  const props = $xeTable
798
792
 
799
- return Object.assign({}, getConfig().table.cellConfig, props.cellConfig)
793
+ const cellOpts = Object.assign({}, getConfig().table.cellConfig, props.cellConfig)
794
+ if (cellOpts.height) {
795
+ cellOpts.height = XEUtils.toNumber(cellOpts.height)
796
+ }
797
+ return cellOpts
800
798
  },
801
799
  computeHeaderCellOpts () {
802
800
  const $xeTable = this
803
801
  const props = $xeTable
804
802
 
805
- return Object.assign({}, getConfig().table.headerCellConfig, props.headerCellConfig)
803
+ const headerCellOpts = Object.assign({}, getConfig().table.headerCellConfig, props.headerCellConfig)
804
+ if (headerCellOpts.height) {
805
+ headerCellOpts.height = XEUtils.toNumber(headerCellOpts.height)
806
+ }
807
+ return headerCellOpts
806
808
  },
807
809
  computeFooterCellOpts () {
808
810
  const $xeTable = this
809
811
  const props = $xeTable
810
812
 
811
- return Object.assign({}, getConfig().table.footerCellConfig, props.footerCellConfig)
813
+ const footerCellOpts = Object.assign({}, getConfig().table.footerCellConfig, props.footerCellConfig)
814
+ if (footerCellOpts.height) {
815
+ footerCellOpts.height = XEUtils.toNumber(footerCellOpts.height)
816
+ }
817
+ return footerCellOpts
812
818
  },
813
819
  rowOpts () {
814
820
  return this.computeRowOpts
815
821
  },
816
822
  computeRowOpts () {
817
- return Object.assign({}, getConfig().table.rowConfig, this.rowConfig)
823
+ const $xeTable = this
824
+ const props = $xeTable
825
+
826
+ return Object.assign({}, getConfig().table.rowConfig, props.rowConfig)
827
+ },
828
+ computeCurrentRowOpts () {
829
+ const $xeTable = this
830
+ const props = $xeTable
831
+
832
+ return Object.assign({}, getConfig().table.currentRowConfig, props.currentRowConfig)
818
833
  },
819
834
  computeRowDragOpts () {
820
835
  return Object.assign({}, getConfig().table.rowDragConfig, this.rowDragConfig)
@@ -838,25 +853,37 @@ export default {
838
853
  return this.computeSeqOpts
839
854
  },
840
855
  computeSeqOpts () {
841
- return Object.assign({ startIndex: 0 }, getConfig().table.seqConfig, this.seqConfig)
856
+ const $xeTable = this
857
+ const props = $xeTable
858
+
859
+ return Object.assign({ startIndex: 0 }, getConfig().table.seqConfig, props.seqConfig)
842
860
  },
843
861
  radioOpts () {
844
862
  return this.computeRadioOpts
845
863
  },
846
864
  computeRadioOpts () {
847
- return Object.assign({}, getConfig().table.radioConfig, this.radioConfig)
865
+ const $xeTable = this
866
+ const props = $xeTable
867
+
868
+ return Object.assign({}, getConfig().table.radioConfig, props.radioConfig)
848
869
  },
849
870
  checkboxOpts () {
850
871
  return this.computeCheckboxOpts
851
872
  },
852
873
  computeCheckboxOpts () {
853
- return Object.assign({}, getConfig().table.checkboxConfig, this.checkboxConfig)
874
+ const $xeTable = this
875
+ const props = $xeTable
876
+
877
+ return Object.assign({}, getConfig().table.checkboxConfig, props.checkboxConfig)
854
878
  },
855
879
  tooltipOpts () {
856
880
  return this.computeTooltipOpts
857
881
  },
858
882
  computeTooltipOpts () {
859
- return Object.assign({}, getConfig().tooltip, getConfig().table.tooltipConfig, this.tooltipConfig)
883
+ const $xeTable = this
884
+ const props = $xeTable
885
+
886
+ return Object.assign({}, getConfig().tooltip, getConfig().table.tooltipConfig, props.tooltipConfig)
860
887
  },
861
888
  tipConfig () {
862
889
  return { ...this.tooltipOpts }
@@ -1071,13 +1098,16 @@ export default {
1071
1098
  computeTableRowExpandedList () {
1072
1099
  const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
1073
1100
  const reactData = $xeTable as unknown as TableReactData
1101
+ const internalData = $xeTable as unknown as TableInternalData
1074
1102
 
1075
- const { rowExpandedMaps, tableData, expandColumn } = reactData
1103
+ const { rowExpandedFlag, tableData, expandColumn } = reactData
1104
+ const { rowExpandedMaps } = internalData
1105
+ const { handleGetRowId } = createHandleGetRowId($xeTable)
1076
1106
  const expandList: any[] = []
1077
- if (expandColumn) {
1107
+ if (expandColumn && rowExpandedFlag) {
1078
1108
  const rowKeys: Record<string, boolean> = {}
1079
1109
  tableData.forEach(row => {
1080
- rowKeys[getRowid($xeTable, row)] = true
1110
+ rowKeys[handleGetRowId(row)] = true
1081
1111
  })
1082
1112
  XEUtils.each(rowExpandedMaps, (row, rowid) => {
1083
1113
  if (rowKeys[rowid]) {
@@ -1170,7 +1200,7 @@ export default {
1170
1200
  }
1171
1201
  },
1172
1202
  tabsResizeFlag () {
1173
- const $xeTable = this
1203
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
1174
1204
  const $xeTabs = $xeTable.$xeTabs
1175
1205
 
1176
1206
  return $xeTabs ? $xeTabs.reactData.resizeFlag : null
@@ -1178,8 +1208,8 @@ export default {
1178
1208
  } as any,
1179
1209
  watch: {
1180
1210
  data (value: any) {
1181
- const $xeTable = this
1182
- const reactData = $xeTable
1211
+ const $xeTable = this as VxeTableConstructor & VxeTablePrivateMethods
1212
+ const reactData = $xeTable as unknown as TableReactData
1183
1213
 
1184
1214
  const { initStatus } = this
1185
1215
  if (value && value.length >= 50000) {
@@ -1330,13 +1360,15 @@ export default {
1330
1360
  lastScrollTop: 0,
1331
1361
  // 单选框属性,已选中保留的行
1332
1362
  radioReserveRow: null,
1333
- // 复选框属性,已选中保留的行
1363
+ // 复选框属性,已选中保留的行集合
1334
1364
  checkboxReserveRowMap: {},
1335
- // 行数据,已展开保留的行
1365
+ // 行数据,已展开保留的行集合
1336
1366
  rowExpandedReserveRowMap: {},
1337
- // 树结构数据,已展开保留的行
1367
+ // 树结构数据,已展开保留的行集合
1338
1368
  treeExpandedReserveRowMap: {},
1339
- // 完整数据、条件处理后
1369
+ // 树结构数据,不确定状态的集合
1370
+ treeIndeterminateRowMaps: {},
1371
+ // 列表完整数据、条件处理后
1340
1372
  tableFullData: [],
1341
1373
  afterFullData: [],
1342
1374
  // 列表条件处理后数据集合
@@ -1347,14 +1379,31 @@ export default {
1347
1379
  tableFullColumn: [],
1348
1380
  // 渲染所有列
1349
1381
  visibleColumn: [],
1350
- // 缓存数据集
1382
+ // 总的缓存数据集
1351
1383
  fullAllDataRowIdData: {},
1352
- fullDataRowMap: new Map(),
1384
+ // 渲染中缓存数据
1385
+ sourceDataRowIdData: {},
1353
1386
  fullDataRowIdData: {},
1354
- fullColumnMap: new Map(),
1355
1387
  fullColumnIdData: {},
1356
1388
  fullColumnFieldData: {},
1357
1389
 
1390
+ // 已展开的行集合
1391
+ rowExpandedMaps: {},
1392
+ // 懒加载中的展开行的集合
1393
+ rowExpandLazyLoadedMaps: {},
1394
+ // 已展开树节点集合
1395
+ treeExpandedMaps: {},
1396
+ // 懒加载中的树节点的集合
1397
+ treeExpandLazyLoadedMaps: {},
1398
+ // 复选框属性,已选中的行集合
1399
+ selectCheckboxMaps: {},
1400
+ // 已标记的对象集
1401
+ pendingRowMaps: {},
1402
+ // 已新增的临时行
1403
+ insertRowMaps: {},
1404
+ // 已删除行
1405
+ removeRowMaps: {},
1406
+
1358
1407
  swYSize: 0,
1359
1408
  swYInterval: 0,
1360
1409
  swYTotal: 0
@@ -1362,7 +1411,6 @@ export default {
1362
1411
 
1363
1412
  const { data, exportConfig, importConfig, treeConfig, showOverflow } = props
1364
1413
  const { scrollXStore, scrollYStore } = internalData
1365
- const sYOpts = $xeTable.computeSYOpts
1366
1414
  const editOpts = $xeTable.computeEditOpts
1367
1415
  const treeOpts = $xeTable.computeTreeOpts
1368
1416
  const radioOpts = $xeTable.computeRadioOpts
@@ -1527,8 +1575,7 @@ export default {
1527
1575
  Object.assign(scrollYStore, {
1528
1576
  startIndex: 0,
1529
1577
  endIndex: 1,
1530
- visibleSize: 0,
1531
- adaptive: sYOpts.adaptive !== false
1578
+ visibleSize: 0
1532
1579
  })
1533
1580
  Object.assign(scrollXStore, {
1534
1581
  startIndex: 0,
@@ -69,8 +69,8 @@ export const convertHeaderColumnToRows = (originColumns: any) => {
69
69
  return rows
70
70
  }
71
71
 
72
- export function restoreScrollLocation ($xeTable: any, scrollLeft: any, scrollTop: any) {
73
- const internalData = $xeTable
72
+ export function restoreScrollLocation ($xeTable: VxeTableConstructor, scrollLeft: number, scrollTop: number) {
73
+ const internalData = $xeTable as unknown as TableInternalData
74
74
 
75
75
  return $xeTable.clearScroll().then(() => {
76
76
  if (scrollLeft || scrollTop) {
@@ -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: {