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
@@ -29,10 +29,10 @@ export default {
29
29
  type: [Boolean, String],
30
30
  default: () => getConfig().table.border
31
31
  },
32
- // 单元格是否有边距
32
+ // 已废弃,被 cell-config.padding 替换
33
33
  padding: {
34
34
  type: Boolean,
35
- default: () => getConfig().table.padding
35
+ default: null
36
36
  },
37
37
  // 是否圆角边框
38
38
  round: {
@@ -157,6 +157,10 @@ export default {
157
157
  columnConfig: Object,
158
158
  // 单元格配置信息
159
159
  cellConfig: Object,
160
+ // 表头单元格配置信息
161
+ headerCellConfig: Object,
162
+ // 表尾单元格配置信息
163
+ footerCellConfig: Object,
160
164
  // 行配置信息
161
165
  rowConfig: Object,
162
166
  // 已废弃,被 rowDragConfig 替换
@@ -165,12 +165,148 @@ const renderDragTip = (h, $xeTable) => {
165
165
  }
166
166
  return renderEmptyElement($xeTable);
167
167
  };
168
- function handleUupdateResize(_vm) {
168
+ function handleUpdateResize(_vm) {
169
169
  const { $el } = _vm;
170
170
  if ($el && $el.clientWidth && $el.clientHeight) {
171
171
  _vm.recalculate();
172
172
  }
173
173
  }
174
+ function renderScrollX(h, $xeTable) {
175
+ return h('div', {
176
+ key: 'vsx',
177
+ ref: 'refScrollXVirtualElem',
178
+ class: 'vxe-table--scroll-x-virtual'
179
+ }, [
180
+ h('div', {
181
+ ref: 'refScrollXLeftCornerElem',
182
+ class: 'vxe-table--scroll-x-left-corner'
183
+ }),
184
+ h('div', {
185
+ ref: 'refScrollXWrapperElem',
186
+ class: 'vxe-table--scroll-x-wrapper'
187
+ }, [
188
+ h('div', {
189
+ ref: 'refScrollXHandleElem',
190
+ class: 'vxe-table--scroll-x-handle',
191
+ on: {
192
+ scroll: $xeTable.triggerVirtualScrollXEvent
193
+ }
194
+ }, [
195
+ h('div', {
196
+ ref: 'refScrollXSpaceElem',
197
+ class: 'vxe-table--scroll-x-space'
198
+ })
199
+ ])
200
+ ]),
201
+ h('div', {
202
+ ref: 'refScrollXRightCornerElem',
203
+ class: 'vxe-table--scroll-x-right-corner'
204
+ })
205
+ ]);
206
+ }
207
+ function renderScrollY(h, $xeTable) {
208
+ return h('div', {
209
+ ref: 'refScrollYVirtualElem',
210
+ class: 'vxe-table--scroll-y-virtual'
211
+ }, [
212
+ h('div', {
213
+ ref: 'refScrollYTopCornerElem',
214
+ class: 'vxe-table--scroll-y-top-corner'
215
+ }),
216
+ h('div', {
217
+ ref: 'refScrollYWrapperElem',
218
+ class: 'vxe-table--scroll-y-wrapper'
219
+ }, [
220
+ h('div', {
221
+ ref: 'refScrollYHandleElem',
222
+ class: 'vxe-table--scroll-y-handle',
223
+ on: {
224
+ scroll: $xeTable.triggerVirtualScrollYEvent
225
+ }
226
+ }, [
227
+ h('div', {
228
+ ref: 'refScrollYSpaceElem',
229
+ class: 'vxe-table--scroll-y-space'
230
+ })
231
+ ])
232
+ ]),
233
+ h('div', {
234
+ ref: 'refScrollYBottomCornerElem',
235
+ class: 'vxe-table--scroll-y-bottom-corner'
236
+ })
237
+ ]);
238
+ }
239
+ function renderViewport(h, $xeTable) {
240
+ const props = $xeTable;
241
+ const reactData = $xeTable;
242
+ const { showHeader, showFooter } = props;
243
+ const { overflowX, tableData, tableColumn, tableGroupColumn, footerTableData, columnStore } = reactData;
244
+ const { leftList, rightList } = columnStore;
245
+ return h('div', {
246
+ ref: 'refTableViewportElem',
247
+ class: 'vxe-table--viewport-wrapper'
248
+ }, [
249
+ h('div', {
250
+ class: 'vxe-table--main-wrapper'
251
+ }, [
252
+ /**
253
+ * 表头
254
+ */
255
+ showHeader
256
+ ? h(TableHeaderComponent, {
257
+ ref: 'refTableHeader',
258
+ props: {
259
+ tableData,
260
+ tableColumn,
261
+ tableGroupColumn
262
+ }
263
+ })
264
+ : renderEmptyElement($xeTable),
265
+ /**
266
+ * 表体
267
+ */
268
+ h(TableBodyComponent, {
269
+ ref: 'refTableBody',
270
+ props: {
271
+ tableData,
272
+ tableColumn
273
+ }
274
+ }),
275
+ /**
276
+ * 表尾
277
+ */
278
+ showFooter
279
+ ? h(TableFooterComponent, {
280
+ ref: 'refTableFooter',
281
+ props: {
282
+ footerTableData,
283
+ tableColumn
284
+ }
285
+ })
286
+ : renderEmptyElement($xeTable)
287
+ ]),
288
+ h('div', {
289
+ class: 'vxe-table--fixed-wrapper'
290
+ }, [
291
+ leftList && leftList.length && overflowX ? renderFixed(h, $xeTable, 'left') : renderEmptyElement($xeTable),
292
+ rightList && rightList.length && overflowX ? renderFixed(h, $xeTable, 'right') : renderEmptyElement($xeTable)
293
+ ])
294
+ ]);
295
+ }
296
+ function renderBody(h, $xeTable) {
297
+ const scrollbarYToLeft = $xeTable.computeScrollbarYToLeft;
298
+ return h('div', {
299
+ class: 'vxe-table--layout-wrapper'
300
+ }, scrollbarYToLeft
301
+ ? [
302
+ renderScrollY(h, $xeTable),
303
+ renderViewport(h, $xeTable)
304
+ ]
305
+ : [
306
+ renderViewport(h, $xeTable),
307
+ renderScrollY(h, $xeTable)
308
+ ]);
309
+ }
174
310
  export default {
175
311
  name: 'VxeTable',
176
312
  mixins: [
@@ -206,8 +342,7 @@ export default {
206
342
  const xID = XEUtils.uniqueId();
207
343
  return {
208
344
  xID,
209
- tId: `${XEUtils.uniqueId()}`,
210
- isCalcColumn: false,
345
+ tId: xID,
211
346
  // 低性能的静态列
212
347
  staticColumns: [],
213
348
  // 渲染的列分组
@@ -418,15 +553,19 @@ export default {
418
553
  isFooter: false
419
554
  },
420
555
  scrollVMLoading: false,
421
- isCalcCellHeight: 0,
556
+ calcCellHeightFlag: 0,
557
+ resizeHeightFlag: 0,
422
558
  isCustomStatus: false,
423
559
  isDragRowMove: false,
424
560
  dragRow: null,
425
561
  isDragColMove: false,
426
562
  dragCol: null,
427
563
  dragTipText: '',
428
- _isResize: false,
429
- isLoading: false
564
+ isDragResize: false,
565
+ isLoading: false,
566
+ reScrollFlag: 0,
567
+ reLayoutFlag: 0,
568
+ footFlag: 0
430
569
  };
431
570
  },
432
571
  computed: Object.assign(Object.assign({}, {}), { tableId() {
@@ -484,6 +623,16 @@ export default {
484
623
  const props = $xeTable;
485
624
  return Object.assign({}, getConfig().table.scrollbarConfig, props.scrollbarConfig);
486
625
  },
626
+ computeScrollbarXToTop() {
627
+ const $xeTable = this;
628
+ const scrollbarOpts = $xeTable.computeScrollbarOpts;
629
+ return !!(scrollbarOpts.x && scrollbarOpts.x.position === 'top');
630
+ },
631
+ computeScrollbarYToLeft() {
632
+ const $xeTable = this;
633
+ const scrollbarOpts = $xeTable.computeScrollbarOpts;
634
+ return !!(scrollbarOpts.y && scrollbarOpts.y.position === 'left');
635
+ },
487
636
  computeScrollYThreshold() {
488
637
  const $xeTable = this;
489
638
  const sYOpts = $xeTable.computeSYOpts;
@@ -508,7 +657,7 @@ export default {
508
657
  const $xeTable = this;
509
658
  const vSize = $xeTable.computeSize;
510
659
  const rowHeightMaps = $xeTable.computeRowHeightMaps;
511
- return rowHeightMaps[vSize || 'default'];
660
+ return rowHeightMaps[vSize || 'default'] || 18;
512
661
  },
513
662
  columnOpts() {
514
663
  return this.computeColumnOpts;
@@ -517,7 +666,19 @@ export default {
517
666
  return Object.assign({}, getConfig().table.columnConfig, this.columnConfig);
518
667
  },
519
668
  computeCellOpts() {
520
- return Object.assign({}, getConfig().table.cellConfig, this.cellConfig);
669
+ const $xeTable = this;
670
+ const props = $xeTable;
671
+ return Object.assign({}, getConfig().table.cellConfig, props.cellConfig);
672
+ },
673
+ computeHeaderCellOpts() {
674
+ const $xeTable = this;
675
+ const props = $xeTable;
676
+ return Object.assign({}, getConfig().table.headerCellConfig, props.headerCellConfig);
677
+ },
678
+ computeFooterCellOpts() {
679
+ const $xeTable = this;
680
+ const props = $xeTable;
681
+ return Object.assign({}, getConfig().table.footerCellConfig, props.footerCellConfig);
521
682
  },
522
683
  rowOpts() {
523
684
  return this.computeRowOpts;
@@ -570,6 +731,18 @@ export default {
570
731
  tipConfig() {
571
732
  return Object.assign({}, this.tooltipOpts);
572
733
  },
734
+ computeTableTipConfig() {
735
+ const $xeTable = this;
736
+ const reactData = $xeTable;
737
+ const { tooltipStore } = reactData;
738
+ const tooltipOpts = $xeTable.computeTooltipOpts;
739
+ return Object.assign({}, tooltipOpts, tooltipStore.currOpts);
740
+ },
741
+ computeValidTipConfig() {
742
+ const $xeTable = this;
743
+ const tooltipOpts = $xeTable.computeTooltipOpts;
744
+ return Object.assign({}, tooltipOpts);
745
+ },
573
746
  validTipOpts() {
574
747
  return Object.assign({ isArrow: false }, this.tooltipOpts);
575
748
  },
@@ -622,24 +795,54 @@ export default {
622
795
  return Object.assign({}, getConfig().table.fnrConfig, this.fnrConfig);
623
796
  },
624
797
  headerCtxMenu() {
625
- const headerOpts = this.ctxMenuOpts.header;
798
+ return this.computeHeaderMenu;
799
+ },
800
+ computeHeaderMenu() {
801
+ const $xeTable = this;
802
+ const menuOpts = $xeTable.computeMenuOpts;
803
+ const headerOpts = menuOpts.header;
626
804
  return headerOpts && headerOpts.options ? headerOpts.options : [];
627
805
  },
628
806
  bodyCtxMenu() {
629
- const bodyOpts = this.ctxMenuOpts.body;
807
+ return this.computeBodyMenu;
808
+ },
809
+ computeBodyMenu() {
810
+ const $xeTable = this;
811
+ const menuOpts = $xeTable.computeMenuOpts;
812
+ const bodyOpts = menuOpts.body;
630
813
  return bodyOpts && bodyOpts.options ? bodyOpts.options : [];
631
814
  },
632
815
  footerCtxMenu() {
633
- const footerOpts = this.ctxMenuOpts.footer;
816
+ return this.computeFooterMenu;
817
+ },
818
+ computeFooterMenu() {
819
+ const $xeTable = this;
820
+ const menuOpts = $xeTable.computeMenuOpts;
821
+ const footerOpts = menuOpts.footer;
634
822
  return footerOpts && footerOpts.options ? footerOpts.options : [];
635
823
  },
636
824
  isCtxMenu() {
637
- return !!((this.contextMenu || this.menuConfig) && isEnableConf(this.ctxMenuOpts) && (this.headerCtxMenu.length || this.bodyCtxMenu.length || this.footerCtxMenu.length));
825
+ return this.computeIsMenu;
826
+ },
827
+ computeIsMenu() {
828
+ const $xeTable = this;
829
+ const props = $xeTable;
830
+ const menuOpts = $xeTable.computeMenuOpts;
831
+ const headerMenu = $xeTable.computeHeaderMenu;
832
+ const bodyMenu = $xeTable.computeBodyMenu;
833
+ const footerMenu = $xeTable.computeFooterMenu;
834
+ return !!((props.contextMenu || props.menuConfig) && isEnableConf(menuOpts) && (headerMenu.length || bodyMenu.length || footerMenu.length));
638
835
  },
639
836
  ctxMenuList() {
837
+ return this.computeMenuList;
838
+ },
839
+ computeMenuList() {
840
+ const $xeTable = this;
841
+ const reactData = $xeTable;
842
+ const { ctxMenuStore } = reactData;
640
843
  const rest = [];
641
- this.ctxMenuStore.list.forEach((list) => {
642
- list.forEach(item => {
844
+ ctxMenuStore.list.forEach((list) => {
845
+ list.forEach((item) => {
643
846
  rest.push(item);
644
847
  });
645
848
  });
@@ -814,7 +1017,7 @@ export default {
814
1017
  if (value && value.length >= 50000) {
815
1018
  warnLog('vxe.error.errLargeData', ['loadData(data), reloadData(data)']);
816
1019
  }
817
- this.loadTableData(value || []).then(() => {
1020
+ this.loadTableData(value || [], false).then(() => {
818
1021
  this.inited = true;
819
1022
  this.initStatus = true;
820
1023
  if (!initStatus) {
@@ -842,33 +1045,50 @@ export default {
842
1045
  reColumnFlag() {
843
1046
  this.$nextTick().then(() => this.refreshColumn());
844
1047
  },
1048
+ computeSize() {
1049
+ this.reScrollFlag++;
1050
+ },
845
1051
  showHeader() {
846
- this.$nextTick(() => {
847
- this.recalculate(true).then(() => this.refreshScroll());
848
- });
1052
+ this.reScrollFlag++;
849
1053
  },
850
1054
  showFooter() {
851
- this.$nextTick(() => {
852
- this.recalculate(true).then(() => this.refreshScroll());
1055
+ this.reScrollFlag++;
1056
+ },
1057
+ reScrollFlag() {
1058
+ const $xeTable = this;
1059
+ $xeTable.$nextTick(() => {
1060
+ $xeTable.recalculate(true).then(() => $xeTable.refreshScroll());
853
1061
  });
854
1062
  },
855
1063
  height() {
856
- this.$nextTick(() => this.recalculate(true));
1064
+ this.reLayoutFlag++;
857
1065
  },
858
1066
  maxHeight() {
859
- this.$nextTick(() => this.recalculate(true));
1067
+ this.reLayoutFlag++;
860
1068
  },
861
- computeSize() {
862
- this.$nextTick(() => {
863
- this.recalculate(true).then(() => this.refreshScroll());
864
- });
1069
+ computeScrollbarXToTop() {
1070
+ this.reLayoutFlag++;
1071
+ },
1072
+ computeScrollbarYToLeft() {
1073
+ this.reLayoutFlag++;
1074
+ },
1075
+ reLayoutFlag() {
1076
+ const $xeTable = this;
1077
+ $xeTable.$nextTick(() => $xeTable.recalculate(true));
1078
+ },
1079
+ footerData() {
1080
+ this.footFlag++;
1081
+ },
1082
+ footFlag() {
1083
+ const $xeTable = this;
1084
+ $xeTable.updateFooter();
865
1085
  },
866
1086
  syncResize(value) {
867
1087
  if (value) {
868
- handleUupdateResize(this);
1088
+ handleUpdateResize(this);
869
1089
  this.$nextTick(() => {
870
- handleUupdateResize(this);
871
- setTimeout(() => handleUupdateResize(this));
1090
+ handleUpdateResize(this);
1091
+ setTimeout(() => handleUpdateResize(this));
872
1092
  });
873
1093
  }
874
1094
  },
@@ -970,11 +1190,14 @@ export default {
970
1190
  if (treeConfig && (treeOpts.showLine || treeOpts.line) && (!(this.rowKey || rowOpts.useKey) || !showOverflow)) {
971
1191
  warnLog('vxe.error.reqProp', ['row-config.useKey | show-overflow']);
972
1192
  }
1193
+ if (treeConfig && !treeOpts.transform && this.stripe) {
1194
+ warnLog('vxe.error.noTree', ['stripe']);
1195
+ }
973
1196
  if (this.showFooter && !(this.footerMethod || this.footerData)) {
974
1197
  warnLog('vxe.error.reqProp', ['footer-data | footer-method']);
975
1198
  }
976
- if (treeConfig && !treeOpts.transform && this.stripe) {
977
- warnLog('vxe.error.noTree', ['stripe']);
1199
+ if (rowOpts.height) {
1200
+ warnLog('vxe.error.delProp', ['row-config.height', 'cell-config.height']);
978
1201
  }
979
1202
  if (this.tooltipOpts.enabled) {
980
1203
  warnLog('vxe.error.delProp', ['tooltip-config.enabled', 'tooltip-config.showAll']);
@@ -1116,7 +1339,7 @@ export default {
1116
1339
  endIndex: 1,
1117
1340
  visibleSize: 0
1118
1341
  });
1119
- this.loadTableData(data).then(() => {
1342
+ this.loadTableData(data, true).then(() => {
1120
1343
  if (data && data.length) {
1121
1344
  this.inited = true;
1122
1345
  this.initStatus = true;
@@ -1224,10 +1447,11 @@ export default {
1224
1447
  const reactData = $xeTable;
1225
1448
  const { xID } = $xeTable;
1226
1449
  const { loading, stripe, showHeader, height, treeConfig, mouseConfig, showFooter, highlightCell, highlightHoverRow, highlightHoverColumn, editConfig, editRules } = props;
1227
- const { isCalcColumn, isGroup, overflowX, overflowY, scrollXLoad, scrollYLoad, scrollbarHeight, tableData, tableColumn, tableGroupColumn, footerTableData, initStore, columnStore, filterStore, customStore, tooltipStore } = reactData;
1450
+ const { isGroup, overflowX, overflowY, scrollXLoad, scrollYLoad, tableData, initStore, columnStore, filterStore, customStore } = reactData;
1228
1451
  const { leftList, rightList } = columnStore;
1229
1452
  const loadingSlot = slots.loading;
1230
- const tooltipOpts = $xeTable.computeTooltipOpts;
1453
+ const tableTipConfig = $xeTable.computeTableTipConfig;
1454
+ const validTipConfig = $xeTable.computeValidTipConfig;
1231
1455
  const validOpts = $xeTable.computeValidOpts;
1232
1456
  const checkboxOpts = $xeTable.computeCheckboxOpts;
1233
1457
  const treeOpts = $xeTable.computeTreeOpts;
@@ -1243,9 +1467,11 @@ export default {
1243
1467
  const resizableOpts = $xeTable.computeResizableOpts;
1244
1468
  const isArea = mouseConfig && mouseOpts.area;
1245
1469
  const columnDragOpts = $xeTable.computeColumnDragOpts;
1470
+ const scrollbarXToTop = $xeTable.computeScrollbarXToTop;
1471
+ const scrollbarYToLeft = $xeTable.computeScrollbarYToLeft;
1246
1472
  return h('div', {
1247
1473
  ref: 'refElem',
1248
- class: ['vxe-table', 'vxe-table--render-default', `tid_${xID}`, `border--${tableBorder}`, {
1474
+ class: ['vxe-table', 'vxe-table--render-default', `tid_${xID}`, `border--${tableBorder}`, `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`, {
1249
1475
  [`size--${vSize}`]: vSize,
1250
1476
  [`valid-msg--${validOpts.msgMode}`]: !!editRules,
1251
1477
  'vxe-editable': !!editConfig,
@@ -1258,7 +1484,6 @@ export default {
1258
1484
  'row--highlight': rowOpts.isHover || highlightHoverRow,
1259
1485
  'column--highlight': columnOpts.isHover || highlightHoverColumn,
1260
1486
  'checkbox--range': checkboxOpts.range,
1261
- 'column--calc': isCalcColumn,
1262
1487
  'col--drag-cell': columnOpts.drag && columnDragOpts.trigger === 'cell',
1263
1488
  'is--header': showHeader,
1264
1489
  'is--footer': showFooter,
@@ -1267,7 +1492,6 @@ export default {
1267
1492
  'is--fixed-left': leftList.length,
1268
1493
  'is--fixed-right': rightList.length,
1269
1494
  'is--animat': !!props.animat,
1270
- 'is--padding': props.padding,
1271
1495
  'is--round': props.round,
1272
1496
  'is--stripe': !treeConfig && stripe,
1273
1497
  'is--loading': currLoading,
@@ -1294,108 +1518,15 @@ export default {
1294
1518
  h('div', {
1295
1519
  key: 'tw',
1296
1520
  class: 'vxe-table--render-wrapper'
1297
- }, [
1298
- h('div', {
1299
- ref: 'refTableViewportElem',
1300
- class: 'vxe-table--viewport-wrapper'
1301
- }, [
1302
- h('div', {
1303
- class: 'vxe-table--main-wrapper'
1304
- }, [
1305
- /**
1306
- * 表头
1307
- */
1308
- showHeader
1309
- ? h(TableHeaderComponent, {
1310
- ref: 'refTableHeader',
1311
- props: {
1312
- tableData,
1313
- tableColumn,
1314
- tableGroupColumn,
1315
- size: vSize
1316
- }
1317
- })
1318
- : renderEmptyElement($xeTable),
1319
- /**
1320
- * 表体
1321
- */
1322
- h(TableBodyComponent, {
1323
- ref: 'refTableBody',
1324
- props: {
1325
- tableData,
1326
- tableColumn,
1327
- size: vSize
1328
- }
1329
- }),
1330
- /**
1331
- * 表尾
1332
- */
1333
- showFooter
1334
- ? h(TableFooterComponent, {
1335
- ref: 'refTableFooter',
1336
- props: {
1337
- footerTableData,
1338
- tableColumn,
1339
- size: vSize
1340
- }
1341
- })
1342
- : renderEmptyElement($xeTable)
1343
- ]),
1344
- h('div', {
1345
- class: 'vxe-table--fixed-wrapper'
1346
- }, [
1347
- leftList && leftList.length && overflowX ? renderFixed(h, this, 'left') : renderEmptyElement($xeTable),
1348
- rightList && rightList.length && overflowX ? renderFixed(h, this, 'right') : renderEmptyElement($xeTable)
1349
- ])
1350
- ]),
1351
- h('div', {
1352
- ref: 'refScrollYVirtualElem',
1353
- class: 'vxe-table--scroll-y-virtual'
1354
- }, [
1355
- h('div', {
1356
- ref: 'refScrollYTopCornerElem',
1357
- class: 'vxe-table--scroll-y-top-corner'
1358
- }),
1359
- h('div', {
1360
- ref: 'refScrollYHandleElem',
1361
- class: 'vxe-table--scroll-y-handle',
1362
- on: {
1363
- scroll: this.scrollYEvent
1364
- }
1365
- }, [
1366
- h('div', {
1367
- ref: 'refScrollYSpaceElem',
1368
- class: 'vxe-table--scroll-y-space'
1369
- })
1370
- ]),
1371
- h('div', {
1372
- ref: 'refScrollYBottomCornerElem',
1373
- class: 'vxe-table--scroll-y-bottom-corner'
1374
- })
1375
- ])
1376
- ]),
1377
- h('div', {
1378
- key: 'vx',
1379
- ref: 'refScrollXVirtualElem',
1380
- class: 'vxe-table--scroll-x-virtual'
1381
- }, [
1382
- h('div', {
1383
- ref: 'refScrollXHandleElem',
1384
- class: 'vxe-table--scroll-x-handle',
1385
- on: {
1386
- scroll: this.scrollXEvent
1387
- }
1388
- }, [
1389
- h('div', {
1390
- ref: 'refScrollXSpaceElem',
1391
- class: 'vxe-table--scroll-x-space'
1392
- })
1521
+ }, scrollbarXToTop
1522
+ ? [
1523
+ renderScrollX(h, $xeTable),
1524
+ renderBody(h, $xeTable)
1525
+ ]
1526
+ : [
1527
+ renderBody(h, $xeTable),
1528
+ renderScrollX(h, $xeTable)
1393
1529
  ]),
1394
- h('div', {
1395
- ref: 'refScrollXRightCornerElem',
1396
- class: 'vxe-table--scroll-x-right-corner'
1397
- })
1398
- ]),
1399
1530
  /**
1400
1531
  * 空数据
1401
1532
  */
@@ -1419,18 +1550,27 @@ export default {
1419
1550
  * 列宽线
1420
1551
  */
1421
1552
  h('div', {
1422
- key: 'cl',
1423
- ref: 'refCellResizeBar',
1424
- class: 'vxe-table--resizable-bar',
1425
- style: overflowX
1426
- ? {
1427
- 'padding-bottom': `${scrollbarHeight}px`
1428
- }
1429
- : undefined
1553
+ key: 'tcl',
1554
+ ref: 'refColResizeBar',
1555
+ class: 'vxe-table--resizable-col-bar'
1556
+ }, resizableOpts.showDragTip
1557
+ ? [
1558
+ h('div', {
1559
+ ref: 'refColResizeTip',
1560
+ class: 'vxe-table--resizable-number-tip'
1561
+ })
1562
+ ]
1563
+ : []),
1564
+ /**
1565
+ * 行高线
1566
+ */
1567
+ h('div', {
1568
+ key: 'trl',
1569
+ ref: 'refRowResizeBar',
1570
+ class: 'vxe-table--resizable-row-bar'
1430
1571
  }, resizableOpts.showDragTip
1431
1572
  ? [
1432
1573
  h('div', {
1433
- ref: 'refCellResizeTip',
1434
1574
  class: 'vxe-table--resizable-number-tip'
1435
1575
  })
1436
1576
  ]
@@ -1546,7 +1686,12 @@ export default {
1546
1686
  ? h(VxeUITooltipComponent, {
1547
1687
  key: 'btp',
1548
1688
  ref: 'tooltip',
1549
- props: Object.assign({}, tooltipOpts, tooltipStore.currOpts)
1689
+ props: {
1690
+ theme: tableTipConfig.theme,
1691
+ enterable: tableTipConfig.enterable,
1692
+ enterDelay: tableTipConfig.enterDelay,
1693
+ leaveDelay: tableTipConfig.leaveDelay
1694
+ }
1550
1695
  })
1551
1696
  : renderEmptyElement($xeTable),
1552
1697
  /**
@@ -1559,7 +1704,12 @@ export default {
1559
1704
  class: [{
1560
1705
  'old-cell-valid': editRules && getConfig().cellVaildMode === 'obsolete'
1561
1706
  }, 'vxe-table--valid-error'],
1562
- props: validOpts.message === 'tooltip' || tableData.length === 1 ? Object.assign({ isArrow: false }, tooltipOpts) : {}
1707
+ props: {
1708
+ theme: validTipConfig.theme,
1709
+ enterable: validTipConfig.enterable,
1710
+ enterDelay: validTipConfig.enterDelay,
1711
+ leaveDelay: validTipConfig.leaveDelay
1712
+ }
1563
1713
  })
1564
1714
  : renderEmptyElement($xeTable)
1565
1715
  ])