vxe-table 3.12.10-beta.2 → 3.12.10-beta.21

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 (178) hide show
  1. package/es/index.css +1 -1
  2. package/es/index.min.css +1 -1
  3. package/es/locale/lang/ar-EG.js +2 -1
  4. package/es/locale/lang/de-DE.js +2 -1
  5. package/es/locale/lang/en-US.js +2 -1
  6. package/es/locale/lang/es-ES.js +2 -1
  7. package/es/locale/lang/fr-FR.js +2 -1
  8. package/es/locale/lang/hu-HU.js +2 -1
  9. package/es/locale/lang/hy-AM.js +2 -1
  10. package/es/locale/lang/it-IT.js +2 -1
  11. package/es/locale/lang/ja-JP.js +2 -1
  12. package/es/locale/lang/ko-KR.js +2 -1
  13. package/es/locale/lang/nb-NO.js +2 -1
  14. package/es/locale/lang/pt-BR.js +2 -1
  15. package/es/locale/lang/ru-RU.js +4 -3
  16. package/es/locale/lang/th-TH.js +2 -1
  17. package/es/locale/lang/ug-CN.js +2 -1
  18. package/es/locale/lang/uk-UA.js +518 -517
  19. package/es/locale/lang/vi-VN.js +2 -1
  20. package/es/locale/lang/zh-CHT.js +2 -1
  21. package/es/locale/lang/zh-CN.js +2 -1
  22. package/es/style.css +1 -1
  23. package/es/style.min.css +1 -1
  24. package/es/table/module/edit/mixin.js +7 -7
  25. package/es/table/module/export/mixin.js +55 -32
  26. package/es/table/module/keyboard/mixin.js +68 -25
  27. package/es/table/module/menu/mixin.js +3 -1
  28. package/es/table/src/body.js +96 -64
  29. package/es/table/src/cell.js +3 -7
  30. package/es/table/src/column.js +2 -0
  31. package/es/table/src/columnInfo.js +1 -0
  32. package/es/table/src/footer.js +31 -6
  33. package/es/table/src/header.js +45 -141
  34. package/es/table/src/methods.js +918 -456
  35. package/es/table/src/props.js +6 -2
  36. package/es/table/src/table.js +299 -149
  37. package/es/table/src/util.js +67 -57
  38. package/es/table/style.css +299 -191
  39. package/es/table/style.min.css +1 -1
  40. package/es/ui/index.js +20 -10
  41. package/es/ui/src/log.js +1 -1
  42. package/es/vxe-table/style.css +299 -191
  43. package/es/vxe-table/style.min.css +1 -1
  44. package/lib/index.css +1 -1
  45. package/lib/index.min.css +1 -1
  46. package/lib/index.umd.js +1735 -1025
  47. package/lib/index.umd.min.js +1 -1
  48. package/lib/locale/lang/ar-EG.js +2 -1
  49. package/lib/locale/lang/ar-EG.min.js +1 -1
  50. package/lib/locale/lang/de-DE.js +2 -1
  51. package/lib/locale/lang/de-DE.min.js +1 -1
  52. package/lib/locale/lang/en-US.js +2 -1
  53. package/lib/locale/lang/en-US.min.js +1 -1
  54. package/lib/locale/lang/en-US.umd.js +2 -1
  55. package/lib/locale/lang/es-ES.js +2 -1
  56. package/lib/locale/lang/es-ES.min.js +1 -1
  57. package/lib/locale/lang/es-ES.umd.js +2 -1
  58. package/lib/locale/lang/fr-FR.js +2 -1
  59. package/lib/locale/lang/fr-FR.min.js +1 -1
  60. package/lib/locale/lang/hu-HU.js +2 -1
  61. package/lib/locale/lang/hu-HU.min.js +1 -1
  62. package/lib/locale/lang/hu-HU.umd.js +2 -1
  63. package/lib/locale/lang/hy-AM.js +2 -1
  64. package/lib/locale/lang/hy-AM.min.js +1 -1
  65. package/lib/locale/lang/it-IT.js +2 -1
  66. package/lib/locale/lang/it-IT.min.js +1 -1
  67. package/lib/locale/lang/ja-JP.js +2 -1
  68. package/lib/locale/lang/ja-JP.min.js +1 -1
  69. package/lib/locale/lang/ja-JP.umd.js +2 -1
  70. package/lib/locale/lang/ko-KR.js +2 -1
  71. package/lib/locale/lang/ko-KR.min.js +1 -1
  72. package/lib/locale/lang/ko-KR.umd.js +2 -1
  73. package/lib/locale/lang/nb-NO.js +2 -1
  74. package/lib/locale/lang/nb-NO.min.js +1 -1
  75. package/lib/locale/lang/pt-BR.js +2 -1
  76. package/lib/locale/lang/pt-BR.min.js +1 -1
  77. package/lib/locale/lang/pt-BR.umd.js +2 -1
  78. package/lib/locale/lang/ru-RU.js +4 -3
  79. package/lib/locale/lang/ru-RU.min.js +1 -1
  80. package/lib/locale/lang/ru-RU.umd.js +4 -3
  81. package/lib/locale/lang/th-TH.js +2 -1
  82. package/lib/locale/lang/th-TH.min.js +1 -1
  83. package/lib/locale/lang/ug-CN.js +2 -1
  84. package/lib/locale/lang/ug-CN.min.js +1 -1
  85. package/lib/locale/lang/uk-UA.js +518 -517
  86. package/lib/locale/lang/uk-UA.min.js +1 -1
  87. package/lib/locale/lang/uk-UA.umd.js +518 -517
  88. package/lib/locale/lang/vi-VN.js +2 -1
  89. package/lib/locale/lang/vi-VN.min.js +1 -1
  90. package/lib/locale/lang/zh-CHT.js +2 -1
  91. package/lib/locale/lang/zh-CHT.min.js +1 -1
  92. package/lib/locale/lang/zh-CHT.umd.js +2 -1
  93. package/lib/locale/lang/zh-CN.js +2 -1
  94. package/lib/locale/lang/zh-CN.min.js +1 -1
  95. package/lib/locale/lang/zh-CN.umd.js +2 -1
  96. package/lib/style.css +1 -1
  97. package/lib/style.min.css +1 -1
  98. package/lib/table/module/edit/mixin.js +12 -2
  99. package/lib/table/module/edit/mixin.min.js +1 -1
  100. package/lib/table/module/export/mixin.js +52 -27
  101. package/lib/table/module/export/mixin.min.js +1 -1
  102. package/lib/table/module/keyboard/mixin.js +73 -27
  103. package/lib/table/module/keyboard/mixin.min.js +1 -1
  104. package/lib/table/module/menu/mixin.js +3 -1
  105. package/lib/table/src/body.js +89 -60
  106. package/lib/table/src/body.min.js +1 -1
  107. package/lib/table/src/cell.js +3 -5
  108. package/lib/table/src/cell.min.js +1 -1
  109. package/lib/table/src/column.js +2 -0
  110. package/lib/table/src/column.min.js +1 -1
  111. package/lib/table/src/columnInfo.js +1 -0
  112. package/lib/table/src/columnInfo.min.js +1 -1
  113. package/lib/table/src/footer.js +26 -6
  114. package/lib/table/src/footer.min.js +1 -1
  115. package/lib/table/src/header.js +38 -153
  116. package/lib/table/src/header.min.js +1 -1
  117. package/lib/table/src/methods.js +1076 -551
  118. package/lib/table/src/methods.min.js +1 -1
  119. package/lib/table/src/props.js +6 -2
  120. package/lib/table/src/props.min.js +1 -1
  121. package/lib/table/src/table.js +269 -129
  122. package/lib/table/src/table.min.js +1 -1
  123. package/lib/table/src/util.js +80 -70
  124. package/lib/table/src/util.min.js +1 -1
  125. package/lib/table/style/style.css +299 -191
  126. package/lib/table/style/style.min.css +1 -1
  127. package/lib/ui/index.js +20 -10
  128. package/lib/ui/index.min.js +1 -1
  129. package/lib/ui/src/log.js +1 -1
  130. package/lib/ui/src/log.min.js +1 -1
  131. package/lib/vxe-table/style/style.css +299 -191
  132. package/lib/vxe-table/style/style.min.css +1 -1
  133. package/package.json +2 -2
  134. package/packages/locale/lang/ar-EG.ts +2 -1
  135. package/packages/locale/lang/de-DE.ts +2 -1
  136. package/packages/locale/lang/en-US.ts +2 -1
  137. package/packages/locale/lang/es-ES.ts +2 -1
  138. package/packages/locale/lang/fr-FR.ts +2 -1
  139. package/packages/locale/lang/hu-HU.ts +2 -1
  140. package/packages/locale/lang/hy-AM.ts +2 -1
  141. package/packages/locale/lang/it-IT.ts +2 -1
  142. package/packages/locale/lang/ja-JP.ts +2 -1
  143. package/packages/locale/lang/ko-KR.ts +2 -1
  144. package/packages/locale/lang/nb-NO.ts +2 -1
  145. package/packages/locale/lang/pt-BR.ts +2 -1
  146. package/packages/locale/lang/ru-RU.ts +4 -3
  147. package/packages/locale/lang/th-TH.ts +2 -1
  148. package/packages/locale/lang/ug-CN.ts +2 -1
  149. package/packages/locale/lang/uk-UA.ts +518 -517
  150. package/packages/locale/lang/vi-VN.ts +2 -1
  151. package/packages/locale/lang/zh-CHT.ts +2 -1
  152. package/packages/locale/lang/zh-CN.ts +2 -1
  153. package/packages/table/module/edit/mixin.ts +7 -7
  154. package/packages/table/module/export/mixin.ts +50 -27
  155. package/packages/table/module/keyboard/mixin.ts +65 -24
  156. package/packages/table/module/menu/mixin.ts +4 -1
  157. package/packages/table/src/body.ts +102 -61
  158. package/packages/table/src/cell.ts +3 -7
  159. package/packages/table/src/column.ts +7 -2
  160. package/packages/table/src/columnInfo.ts +1 -0
  161. package/packages/table/src/footer.ts +31 -6
  162. package/packages/table/src/header.ts +45 -141
  163. package/packages/table/src/methods.ts +957 -461
  164. package/packages/table/src/props.ts +6 -2
  165. package/packages/table/src/table.ts +325 -149
  166. package/packages/table/src/util.ts +75 -62
  167. package/packages/ui/index.ts +21 -9
  168. package/styles/components/table.scss +352 -260
  169. package/styles/theme/base.scss +4 -6
  170. package/styles/theme/dark.scss +1 -0
  171. package/styles/theme/light.scss +1 -0
  172. package/styles/variable.scss +1 -0
  173. /package/es/{iconfont.1736736807414.ttf → iconfont.1737182271148.ttf} +0 -0
  174. /package/es/{iconfont.1736736807414.woff → iconfont.1737182271148.woff} +0 -0
  175. /package/es/{iconfont.1736736807414.woff2 → iconfont.1737182271148.woff2} +0 -0
  176. /package/lib/{iconfont.1736736807414.ttf → iconfont.1737182271148.ttf} +0 -0
  177. /package/lib/{iconfont.1736736807414.woff → iconfont.1737182271148.woff} +0 -0
  178. /package/lib/{iconfont.1736736807414.woff2 → iconfont.1737182271148.woff2} +0 -0
@@ -34,10 +34,10 @@ export default {
34
34
  type: [Boolean, String] as PropType<VxeTablePropTypes.Border>,
35
35
  default: () => getConfig().table.border
36
36
  },
37
- // 单元格是否有边距
37
+ // 已废弃,被 cell-config.padding 替换
38
38
  padding: {
39
39
  type: Boolean as PropType<VxeTablePropTypes.Padding>,
40
- default: () => getConfig().table.padding
40
+ default: null
41
41
  },
42
42
  // 是否圆角边框
43
43
  round: {
@@ -163,6 +163,10 @@ export default {
163
163
  columnConfig: Object,
164
164
  // 单元格配置信息
165
165
  cellConfig: Object as PropType<VxeTablePropTypes.CellConfig>,
166
+ // 表头单元格配置信息
167
+ headerCellConfig: Object as PropType<VxeTablePropTypes.HeaderCellConfig>,
168
+ // 表尾单元格配置信息
169
+ footerCellConfig: Object as PropType<VxeTablePropTypes.FooterCellConfig>,
166
170
  // 行配置信息
167
171
  rowConfig: Object,
168
172
  // 已废弃,被 rowDragConfig 替换
@@ -178,13 +178,155 @@ const renderDragTip = (h: CreateElement, $xeTable: any) => {
178
178
  return renderEmptyElement($xeTable)
179
179
  }
180
180
 
181
- function handleUupdateResize (_vm: any) {
181
+ function handleUpdateResize (_vm: any) {
182
182
  const { $el } = _vm
183
183
  if ($el && $el.clientWidth && $el.clientHeight) {
184
184
  _vm.recalculate()
185
185
  }
186
186
  }
187
187
 
188
+ function renderScrollX (h: CreateElement, $xeTable: VxeTableConstructor & VxeTablePrivateMethods) {
189
+ return h('div', {
190
+ key: 'vsx',
191
+ ref: 'refScrollXVirtualElem',
192
+ class: 'vxe-table--scroll-x-virtual'
193
+ }, [
194
+ h('div', {
195
+ ref: 'refScrollXLeftCornerElem',
196
+ class: 'vxe-table--scroll-x-left-corner'
197
+ }),
198
+ h('div', {
199
+ ref: 'refScrollXWrapperElem',
200
+ class: 'vxe-table--scroll-x-wrapper'
201
+ }, [
202
+ h('div', {
203
+ ref: 'refScrollXHandleElem',
204
+ class: 'vxe-table--scroll-x-handle',
205
+ on: {
206
+ scroll: $xeTable.triggerVirtualScrollXEvent
207
+ }
208
+ }, [
209
+ h('div', {
210
+ ref: 'refScrollXSpaceElem',
211
+ class: 'vxe-table--scroll-x-space'
212
+ })
213
+ ])
214
+ ]),
215
+ h('div', {
216
+ ref: 'refScrollXRightCornerElem',
217
+ class: 'vxe-table--scroll-x-right-corner'
218
+ })
219
+ ])
220
+ }
221
+
222
+ function renderScrollY (h: CreateElement, $xeTable: VxeTableConstructor & VxeTablePrivateMethods) {
223
+ return h('div', {
224
+ ref: 'refScrollYVirtualElem',
225
+ class: 'vxe-table--scroll-y-virtual'
226
+ }, [
227
+ h('div', {
228
+ ref: 'refScrollYTopCornerElem',
229
+ class: 'vxe-table--scroll-y-top-corner'
230
+ }),
231
+ h('div', {
232
+ ref: 'refScrollYWrapperElem',
233
+ class: 'vxe-table--scroll-y-wrapper'
234
+ }, [
235
+ h('div', {
236
+ ref: 'refScrollYHandleElem',
237
+ class: 'vxe-table--scroll-y-handle',
238
+ on: {
239
+ scroll: $xeTable.triggerVirtualScrollYEvent
240
+ }
241
+ }, [
242
+ h('div', {
243
+ ref: 'refScrollYSpaceElem',
244
+ class: 'vxe-table--scroll-y-space'
245
+ })
246
+ ])
247
+ ]),
248
+ h('div', {
249
+ ref: 'refScrollYBottomCornerElem',
250
+ class: 'vxe-table--scroll-y-bottom-corner'
251
+ })
252
+ ])
253
+ }
254
+
255
+ function renderViewport (h: CreateElement, $xeTable: VxeTableConstructor & VxeTablePrivateMethods) {
256
+ const props = $xeTable
257
+ const reactData = $xeTable as unknown as TableReactData
258
+
259
+ const { showHeader, showFooter } = props
260
+ const { overflowX, tableData, tableColumn, tableGroupColumn, footerTableData, columnStore } = reactData
261
+ const { leftList, rightList } = columnStore
262
+
263
+ return h('div', {
264
+ ref: 'refTableViewportElem',
265
+ class: 'vxe-table--viewport-wrapper'
266
+ }, [
267
+ h('div', {
268
+ class: 'vxe-table--main-wrapper'
269
+ }, [
270
+ /**
271
+ * 表头
272
+ */
273
+ showHeader
274
+ ? h(TableHeaderComponent, {
275
+ ref: 'refTableHeader',
276
+ props: {
277
+ tableData,
278
+ tableColumn,
279
+ tableGroupColumn
280
+ }
281
+ })
282
+ : renderEmptyElement($xeTable),
283
+ /**
284
+ * 表体
285
+ */
286
+ h(TableBodyComponent, {
287
+ ref: 'refTableBody',
288
+ props: {
289
+ tableData,
290
+ tableColumn
291
+ }
292
+ }),
293
+ /**
294
+ * 表尾
295
+ */
296
+ showFooter
297
+ ? h(TableFooterComponent, {
298
+ ref: 'refTableFooter',
299
+ props: {
300
+ footerTableData,
301
+ tableColumn
302
+ }
303
+ })
304
+ : renderEmptyElement($xeTable)
305
+ ]),
306
+ h('div', {
307
+ class: 'vxe-table--fixed-wrapper'
308
+ }, [
309
+ leftList && leftList.length && overflowX ? renderFixed(h, $xeTable, 'left') : renderEmptyElement($xeTable),
310
+ rightList && rightList.length && overflowX ? renderFixed(h, $xeTable, 'right') : renderEmptyElement($xeTable)
311
+ ])
312
+ ])
313
+ }
314
+
315
+ function renderBody (h: CreateElement, $xeTable: VxeTableConstructor & VxeTablePrivateMethods) {
316
+ const scrollbarYToLeft = $xeTable.computeScrollbarYToLeft
317
+ return h('div', {
318
+ class: 'vxe-table--layout-wrapper'
319
+ }, scrollbarYToLeft
320
+ ? [
321
+ renderScrollY(h, $xeTable),
322
+ renderViewport(h, $xeTable)
323
+ ]
324
+ : [
325
+ renderViewport(h, $xeTable),
326
+ renderScrollY(h, $xeTable)
327
+ ])
328
+ }
329
+
188
330
  export default {
189
331
  name: 'VxeTable',
190
332
  mixins: [
@@ -220,8 +362,7 @@ export default {
220
362
  const xID = XEUtils.uniqueId()
221
363
  return {
222
364
  xID,
223
- tId: `${XEUtils.uniqueId()}`,
224
- isCalcColumn: false,
365
+ tId: xID,
225
366
  // 低性能的静态列
226
367
  staticColumns: [],
227
368
  // 渲染的列分组
@@ -434,7 +575,8 @@ export default {
434
575
 
435
576
  scrollVMLoading: false,
436
577
 
437
- isCalcCellHeight: 0,
578
+ calcCellHeightFlag: 0,
579
+ resizeHeightFlag: 0,
438
580
 
439
581
  isCustomStatus: false,
440
582
 
@@ -444,8 +586,12 @@ export default {
444
586
  dragCol: null,
445
587
  dragTipText: '',
446
588
 
447
- _isResize: false,
448
- isLoading: false
589
+ isDragResize: false,
590
+ isLoading: false,
591
+
592
+ reScrollFlag: 0,
593
+ reLayoutFlag: 0,
594
+ footFlag: 0
449
595
  }
450
596
  },
451
597
  computed: {
@@ -511,6 +657,18 @@ export default {
511
657
 
512
658
  return Object.assign({}, getConfig().table.scrollbarConfig, props.scrollbarConfig)
513
659
  },
660
+ computeScrollbarXToTop () {
661
+ const $xeTable = this
662
+
663
+ const scrollbarOpts = $xeTable.computeScrollbarOpts
664
+ return !!(scrollbarOpts.x && scrollbarOpts.x.position === 'top')
665
+ },
666
+ computeScrollbarYToLeft () {
667
+ const $xeTable = this
668
+
669
+ const scrollbarOpts = $xeTable.computeScrollbarOpts
670
+ return !!(scrollbarOpts.y && scrollbarOpts.y.position === 'left')
671
+ },
514
672
  computeScrollYThreshold () {
515
673
  const $xeTable = this
516
674
 
@@ -537,7 +695,7 @@ export default {
537
695
 
538
696
  const vSize = $xeTable.computeSize
539
697
  const rowHeightMaps = $xeTable.computeRowHeightMaps
540
- return rowHeightMaps[vSize || 'default']
698
+ return rowHeightMaps[vSize || 'default'] || 18
541
699
  },
542
700
  columnOpts () {
543
701
  return this.computeColumnOpts
@@ -546,7 +704,22 @@ export default {
546
704
  return Object.assign({}, getConfig().table.columnConfig, this.columnConfig)
547
705
  },
548
706
  computeCellOpts () {
549
- return Object.assign({}, getConfig().table.cellConfig, this.cellConfig)
707
+ const $xeTable = this
708
+ const props = $xeTable
709
+
710
+ return Object.assign({}, getConfig().table.cellConfig, props.cellConfig)
711
+ },
712
+ computeHeaderCellOpts () {
713
+ const $xeTable = this
714
+ const props = $xeTable
715
+
716
+ return Object.assign({}, getConfig().table.headerCellConfig, props.headerCellConfig)
717
+ },
718
+ computeFooterCellOpts () {
719
+ const $xeTable = this
720
+ const props = $xeTable
721
+
722
+ return Object.assign({}, getConfig().table.footerCellConfig, props.footerCellConfig)
550
723
  },
551
724
  rowOpts () {
552
725
  return this.computeRowOpts
@@ -599,6 +772,20 @@ export default {
599
772
  tipConfig () {
600
773
  return { ...this.tooltipOpts }
601
774
  },
775
+ computeTableTipConfig () {
776
+ const $xeTable = this
777
+ const reactData = $xeTable
778
+
779
+ const { tooltipStore } = reactData
780
+ const tooltipOpts = $xeTable.computeTooltipOpts
781
+ return Object.assign({}, tooltipOpts, tooltipStore.currOpts)
782
+ },
783
+ computeValidTipConfig () {
784
+ const $xeTable = this
785
+
786
+ const tooltipOpts = $xeTable.computeTooltipOpts
787
+ return Object.assign({}, tooltipOpts)
788
+ },
602
789
  validTipOpts () {
603
790
  return Object.assign({ isArrow: false }, this.tooltipOpts)
604
791
  },
@@ -651,24 +838,59 @@ export default {
651
838
  return Object.assign({}, getConfig().table.fnrConfig, this.fnrConfig)
652
839
  },
653
840
  headerCtxMenu () {
654
- const headerOpts = this.ctxMenuOpts.header
841
+ return this.computeHeaderMenu
842
+ },
843
+ computeHeaderMenu () {
844
+ const $xeTable = this
845
+
846
+ const menuOpts = $xeTable.computeMenuOpts
847
+ const headerOpts = menuOpts.header
655
848
  return headerOpts && headerOpts.options ? headerOpts.options : []
656
849
  },
657
850
  bodyCtxMenu () {
658
- const bodyOpts = this.ctxMenuOpts.body
851
+ return this.computeBodyMenu
852
+ },
853
+ computeBodyMenu () {
854
+ const $xeTable = this
855
+
856
+ const menuOpts = $xeTable.computeMenuOpts
857
+ const bodyOpts = menuOpts.body
659
858
  return bodyOpts && bodyOpts.options ? bodyOpts.options : []
660
859
  },
661
860
  footerCtxMenu () {
662
- const footerOpts = this.ctxMenuOpts.footer
861
+ return this.computeFooterMenu
862
+ },
863
+ computeFooterMenu () {
864
+ const $xeTable = this
865
+
866
+ const menuOpts = $xeTable.computeMenuOpts
867
+ const footerOpts = menuOpts.footer
663
868
  return footerOpts && footerOpts.options ? footerOpts.options : []
664
869
  },
665
870
  isCtxMenu () {
666
- return !!((this.contextMenu || this.menuConfig) && isEnableConf(this.ctxMenuOpts) && (this.headerCtxMenu.length || this.bodyCtxMenu.length || this.footerCtxMenu.length))
871
+ return this.computeIsMenu
872
+ },
873
+ computeIsMenu () {
874
+ const $xeTable = this
875
+ const props = $xeTable
876
+
877
+ const menuOpts = $xeTable.computeMenuOpts
878
+ const headerMenu = $xeTable.computeHeaderMenu
879
+ const bodyMenu = $xeTable.computeBodyMenu
880
+ const footerMenu = $xeTable.computeFooterMenu
881
+ return !!((props.contextMenu || props.menuConfig) && isEnableConf(menuOpts) && (headerMenu.length || bodyMenu.length || footerMenu.length))
667
882
  },
668
883
  ctxMenuList () {
884
+ return this.computeMenuList
885
+ },
886
+ computeMenuList () {
887
+ const $xeTable = this
888
+ const reactData = $xeTable as TableReactData
889
+
890
+ const { ctxMenuStore } = reactData
669
891
  const rest: any[] = []
670
- this.ctxMenuStore.list.forEach((list: any[]) => {
671
- list.forEach(item => {
892
+ ctxMenuStore.list.forEach((list) => {
893
+ list.forEach((item) => {
672
894
  rest.push(item)
673
895
  })
674
896
  })
@@ -852,7 +1074,7 @@ export default {
852
1074
  if (value && value.length >= 50000) {
853
1075
  warnLog('vxe.error.errLargeData', ['loadData(data), reloadData(data)'])
854
1076
  }
855
- this.loadTableData(value || []).then(() => {
1077
+ this.loadTableData(value || [], false).then(() => {
856
1078
  this.inited = true
857
1079
  this.initStatus = true
858
1080
  if (!initStatus) {
@@ -880,33 +1102,57 @@ export default {
880
1102
  reColumnFlag () {
881
1103
  this.$nextTick().then(() => this.refreshColumn())
882
1104
  },
1105
+
1106
+ computeSize () {
1107
+ this.reScrollFlag++
1108
+ },
883
1109
  showHeader () {
884
- this.$nextTick(() => {
885
- this.recalculate(true).then(() => this.refreshScroll())
886
- })
1110
+ this.reScrollFlag++
887
1111
  },
888
1112
  showFooter () {
889
- this.$nextTick(() => {
890
- this.recalculate(true).then(() => this.refreshScroll())
1113
+ this.reScrollFlag++
1114
+ },
1115
+ reScrollFlag () {
1116
+ const $xeTable = this
1117
+
1118
+ $xeTable.$nextTick(() => {
1119
+ $xeTable.recalculate(true).then(() => $xeTable.refreshScroll())
891
1120
  })
892
1121
  },
1122
+
893
1123
  height () {
894
- this.$nextTick(() => this.recalculate(true))
1124
+ this.reLayoutFlag++
895
1125
  },
896
1126
  maxHeight () {
897
- this.$nextTick(() => this.recalculate(true))
1127
+ this.reLayoutFlag++
898
1128
  },
899
- computeSize () {
900
- this.$nextTick(() => {
901
- this.recalculate(true).then(() => this.refreshScroll())
902
- })
1129
+ computeScrollbarXToTop () {
1130
+ this.reLayoutFlag++
1131
+ },
1132
+ computeScrollbarYToLeft () {
1133
+ this.reLayoutFlag++
1134
+ },
1135
+ reLayoutFlag () {
1136
+ const $xeTable = this
1137
+
1138
+ $xeTable.$nextTick(() => $xeTable.recalculate(true))
1139
+ },
1140
+
1141
+ footerData () {
1142
+ this.footFlag++
1143
+ },
1144
+ footFlag () {
1145
+ const $xeTable = this
1146
+
1147
+ $xeTable.updateFooter()
903
1148
  },
1149
+
904
1150
  syncResize (value: any) {
905
1151
  if (value) {
906
- handleUupdateResize(this)
1152
+ handleUpdateResize(this)
907
1153
  this.$nextTick(() => {
908
- handleUupdateResize(this)
909
- setTimeout(() => handleUupdateResize(this))
1154
+ handleUpdateResize(this)
1155
+ setTimeout(() => handleUpdateResize(this))
910
1156
  })
911
1157
  }
912
1158
  },
@@ -1010,11 +1256,14 @@ export default {
1010
1256
  if (treeConfig && (treeOpts.showLine || treeOpts.line) && (!(this.rowKey || rowOpts.useKey) || !showOverflow)) {
1011
1257
  warnLog('vxe.error.reqProp', ['row-config.useKey | show-overflow'])
1012
1258
  }
1259
+ if (treeConfig && !treeOpts.transform && this.stripe) {
1260
+ warnLog('vxe.error.noTree', ['stripe'])
1261
+ }
1013
1262
  if (this.showFooter && !(this.footerMethod || this.footerData)) {
1014
1263
  warnLog('vxe.error.reqProp', ['footer-data | footer-method'])
1015
1264
  }
1016
- if (treeConfig && !treeOpts.transform && this.stripe) {
1017
- warnLog('vxe.error.noTree', ['stripe'])
1265
+ if (rowOpts.height) {
1266
+ warnLog('vxe.error.delProp', ['row-config.height', 'cell-config.height'])
1018
1267
  }
1019
1268
  if (this.tooltipOpts.enabled) {
1020
1269
  warnLog('vxe.error.delProp', ['tooltip-config.enabled', 'tooltip-config.showAll'])
@@ -1160,7 +1409,7 @@ export default {
1160
1409
  endIndex: 1,
1161
1410
  visibleSize: 0
1162
1411
  })
1163
- this.loadTableData(data).then(() => {
1412
+ this.loadTableData(data, true).then(() => {
1164
1413
  if (data && data.length) {
1165
1414
  this.inited = true
1166
1415
  this.initStatus = true
@@ -1276,10 +1525,11 @@ export default {
1276
1525
  const { xID } = $xeTable
1277
1526
 
1278
1527
  const { loading, stripe, showHeader, height, treeConfig, mouseConfig, showFooter, highlightCell, highlightHoverRow, highlightHoverColumn, editConfig, editRules } = props
1279
- const { isCalcColumn, isGroup, overflowX, overflowY, scrollXLoad, scrollYLoad, scrollbarHeight, tableData, tableColumn, tableGroupColumn, footerTableData, initStore, columnStore, filterStore, customStore, tooltipStore } = reactData
1528
+ const { isGroup, overflowX, overflowY, scrollXLoad, scrollYLoad, tableData, initStore, columnStore, filterStore, customStore } = reactData
1280
1529
  const { leftList, rightList } = columnStore
1281
1530
  const loadingSlot = slots.loading
1282
- const tooltipOpts = $xeTable.computeTooltipOpts
1531
+ const tableTipConfig = $xeTable.computeTableTipConfig
1532
+ const validTipConfig = $xeTable.computeValidTipConfig
1283
1533
  const validOpts = $xeTable.computeValidOpts
1284
1534
  const checkboxOpts = $xeTable.computeCheckboxOpts
1285
1535
  const treeOpts = $xeTable.computeTreeOpts
@@ -1295,9 +1545,11 @@ export default {
1295
1545
  const resizableOpts = $xeTable.computeResizableOpts
1296
1546
  const isArea = mouseConfig && mouseOpts.area
1297
1547
  const columnDragOpts = $xeTable.computeColumnDragOpts
1548
+ const scrollbarXToTop = $xeTable.computeScrollbarXToTop
1549
+ const scrollbarYToLeft = $xeTable.computeScrollbarYToLeft
1298
1550
  return h('div', {
1299
1551
  ref: 'refElem',
1300
- class: ['vxe-table', 'vxe-table--render-default', `tid_${xID}`, `border--${tableBorder}`, {
1552
+ class: ['vxe-table', 'vxe-table--render-default', `tid_${xID}`, `border--${tableBorder}`, `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`, {
1301
1553
  [`size--${vSize}`]: vSize,
1302
1554
  [`valid-msg--${validOpts.msgMode}`]: !!editRules,
1303
1555
  'vxe-editable': !!editConfig,
@@ -1310,7 +1562,6 @@ export default {
1310
1562
  'row--highlight': rowOpts.isHover || highlightHoverRow,
1311
1563
  'column--highlight': columnOpts.isHover || highlightHoverColumn,
1312
1564
  'checkbox--range': checkboxOpts.range,
1313
- 'column--calc': isCalcColumn,
1314
1565
  'col--drag-cell': columnOpts.drag && columnDragOpts.trigger === 'cell',
1315
1566
  'is--header': showHeader,
1316
1567
  'is--footer': showFooter,
@@ -1319,7 +1570,6 @@ export default {
1319
1570
  'is--fixed-left': leftList.length,
1320
1571
  'is--fixed-right': rightList.length,
1321
1572
  'is--animat': !!props.animat,
1322
- 'is--padding': props.padding,
1323
1573
  'is--round': props.round,
1324
1574
  'is--stripe': !treeConfig && stripe,
1325
1575
  'is--loading': currLoading,
@@ -1346,108 +1596,15 @@ export default {
1346
1596
  h('div', {
1347
1597
  key: 'tw',
1348
1598
  class: 'vxe-table--render-wrapper'
1349
- }, [
1350
- h('div', {
1351
- ref: 'refTableViewportElem',
1352
- class: 'vxe-table--viewport-wrapper'
1353
- }, [
1354
- h('div', {
1355
- class: 'vxe-table--main-wrapper'
1356
- }, [
1357
- /**
1358
- * 表头
1359
- */
1360
- showHeader
1361
- ? h(TableHeaderComponent, {
1362
- ref: 'refTableHeader',
1363
- props: {
1364
- tableData,
1365
- tableColumn,
1366
- tableGroupColumn,
1367
- size: vSize
1368
- }
1369
- })
1370
- : renderEmptyElement($xeTable),
1371
- /**
1372
- * 表体
1373
- */
1374
- h(TableBodyComponent, {
1375
- ref: 'refTableBody',
1376
- props: {
1377
- tableData,
1378
- tableColumn,
1379
- size: vSize
1380
- }
1381
- }),
1382
- /**
1383
- * 表尾
1384
- */
1385
- showFooter
1386
- ? h(TableFooterComponent, {
1387
- ref: 'refTableFooter',
1388
- props: {
1389
- footerTableData,
1390
- tableColumn,
1391
- size: vSize
1392
- }
1393
- })
1394
- : renderEmptyElement($xeTable)
1395
- ]),
1396
- h('div', {
1397
- class: 'vxe-table--fixed-wrapper'
1398
- }, [
1399
- leftList && leftList.length && overflowX ? renderFixed(h, this, 'left') : renderEmptyElement($xeTable),
1400
- rightList && rightList.length && overflowX ? renderFixed(h, this, 'right') : renderEmptyElement($xeTable)
1401
- ])
1402
- ]),
1403
- h('div', {
1404
- ref: 'refScrollYVirtualElem',
1405
- class: 'vxe-table--scroll-y-virtual'
1406
- }, [
1407
- h('div', {
1408
- ref: 'refScrollYTopCornerElem',
1409
- class: 'vxe-table--scroll-y-top-corner'
1410
- }),
1411
- h('div', {
1412
- ref: 'refScrollYHandleElem',
1413
- class: 'vxe-table--scroll-y-handle',
1414
- on: {
1415
- scroll: this.scrollYEvent
1416
- }
1417
- }, [
1418
- h('div', {
1419
- ref: 'refScrollYSpaceElem',
1420
- class: 'vxe-table--scroll-y-space'
1421
- })
1599
+ }, scrollbarXToTop
1600
+ ? [
1601
+ renderScrollX(h, $xeTable),
1602
+ renderBody(h, $xeTable)
1603
+ ]
1604
+ : [
1605
+ renderBody(h, $xeTable),
1606
+ renderScrollX(h, $xeTable)
1422
1607
  ]),
1423
- h('div', {
1424
- ref: 'refScrollYBottomCornerElem',
1425
- class: 'vxe-table--scroll-y-bottom-corner'
1426
- })
1427
- ])
1428
- ]),
1429
- h('div', {
1430
- key: 'vx',
1431
- ref: 'refScrollXVirtualElem',
1432
- class: 'vxe-table--scroll-x-virtual'
1433
- }, [
1434
- h('div', {
1435
- ref: 'refScrollXHandleElem',
1436
- class: 'vxe-table--scroll-x-handle',
1437
- on: {
1438
- scroll: this.scrollXEvent
1439
- }
1440
- }, [
1441
- h('div', {
1442
- ref: 'refScrollXSpaceElem',
1443
- class: 'vxe-table--scroll-x-space'
1444
- })
1445
- ]),
1446
- h('div', {
1447
- ref: 'refScrollXRightCornerElem',
1448
- class: 'vxe-table--scroll-x-right-corner'
1449
- })
1450
- ]),
1451
1608
  /**
1452
1609
  * 空数据
1453
1610
  */
@@ -1471,18 +1628,27 @@ export default {
1471
1628
  * 列宽线
1472
1629
  */
1473
1630
  h('div', {
1474
- key: 'cl',
1475
- ref: 'refCellResizeBar',
1476
- class: 'vxe-table--resizable-bar',
1477
- style: overflowX
1478
- ? {
1479
- 'padding-bottom': `${scrollbarHeight}px`
1480
- }
1481
- : undefined
1631
+ key: 'tcl',
1632
+ ref: 'refColResizeBar',
1633
+ class: 'vxe-table--resizable-col-bar'
1634
+ }, resizableOpts.showDragTip
1635
+ ? [
1636
+ h('div', {
1637
+ ref: 'refColResizeTip',
1638
+ class: 'vxe-table--resizable-number-tip'
1639
+ })
1640
+ ]
1641
+ : []),
1642
+ /**
1643
+ * 行高线
1644
+ */
1645
+ h('div', {
1646
+ key: 'trl',
1647
+ ref: 'refRowResizeBar',
1648
+ class: 'vxe-table--resizable-row-bar'
1482
1649
  }, resizableOpts.showDragTip
1483
1650
  ? [
1484
1651
  h('div', {
1485
- ref: 'refCellResizeTip',
1486
1652
  class: 'vxe-table--resizable-number-tip'
1487
1653
  })
1488
1654
  ]
@@ -1598,7 +1764,12 @@ export default {
1598
1764
  ? h(VxeUITooltipComponent, {
1599
1765
  key: 'btp',
1600
1766
  ref: 'tooltip',
1601
- props: Object.assign({}, tooltipOpts, tooltipStore.currOpts)
1767
+ props: {
1768
+ theme: tableTipConfig.theme,
1769
+ enterable: tableTipConfig.enterable,
1770
+ enterDelay: tableTipConfig.enterDelay,
1771
+ leaveDelay: tableTipConfig.leaveDelay
1772
+ }
1602
1773
  })
1603
1774
  : renderEmptyElement($xeTable),
1604
1775
  /**
@@ -1611,7 +1782,12 @@ export default {
1611
1782
  class: [{
1612
1783
  'old-cell-valid': editRules && getConfig().cellVaildMode === 'obsolete'
1613
1784
  }, 'vxe-table--valid-error'],
1614
- props: validOpts.message === 'tooltip' || tableData.length === 1 ? Object.assign({ isArrow: false }, tooltipOpts) : {}
1785
+ props: {
1786
+ theme: validTipConfig.theme,
1787
+ enterable: validTipConfig.enterable,
1788
+ enterDelay: validTipConfig.enterDelay,
1789
+ leaveDelay: validTipConfig.leaveDelay
1790
+ }
1615
1791
  })
1616
1792
  : renderEmptyElement($xeTable)
1617
1793
  ])