vxe-table 3.12.10-beta.8 → 3.12.10

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 +4 -3
  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 +105 -69
  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 +135 -83
  29. package/es/table/src/cell.js +43 -57
  30. package/es/table/src/column.js +43 -8
  31. package/es/table/src/columnInfo.js +3 -0
  32. package/es/table/src/footer.js +50 -9
  33. package/es/table/src/header.js +70 -168
  34. package/es/table/src/methods.js +985 -502
  35. package/es/table/src/props.js +14 -4
  36. package/es/table/src/table.js +114 -33
  37. package/es/table/src/util.js +73 -57
  38. package/es/table/style.css +253 -189
  39. package/es/table/style.min.css +1 -1
  40. package/es/ui/index.js +26 -10
  41. package/es/ui/src/log.js +1 -1
  42. package/es/vxe-table/style.css +253 -189
  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 +1782 -1056
  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 +4 -3
  53. package/lib/locale/lang/en-US.min.js +1 -1
  54. package/lib/locale/lang/en-US.umd.js +4 -3
  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 +7 -2
  99. package/lib/table/module/edit/mixin.min.js +1 -1
  100. package/lib/table/module/export/mixin.js +105 -64
  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 +132 -79
  106. package/lib/table/src/body.min.js +1 -1
  107. package/lib/table/src/cell.js +32 -42
  108. package/lib/table/src/cell.min.js +1 -1
  109. package/lib/table/src/column.js +12 -0
  110. package/lib/table/src/column.min.js +1 -1
  111. package/lib/table/src/columnInfo.js +3 -0
  112. package/lib/table/src/columnInfo.min.js +1 -1
  113. package/lib/table/src/footer.js +46 -7
  114. package/lib/table/src/footer.min.js +1 -1
  115. package/lib/table/src/header.js +52 -175
  116. package/lib/table/src/header.min.js +1 -1
  117. package/lib/table/src/methods.js +1096 -560
  118. package/lib/table/src/methods.min.js +1 -1
  119. package/lib/table/src/props.js +14 -4
  120. package/lib/table/src/props.min.js +1 -1
  121. package/lib/table/src/table.js +113 -36
  122. package/lib/table/src/table.min.js +1 -1
  123. package/lib/table/src/util.js +87 -70
  124. package/lib/table/src/util.min.js +1 -1
  125. package/lib/table/style/style.css +253 -189
  126. package/lib/table/style/style.min.css +1 -1
  127. package/lib/ui/index.js +26 -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 +253 -189
  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 +4 -3
  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 +138 -80
  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 +148 -86
  158. package/packages/table/src/cell.ts +45 -67
  159. package/packages/table/src/column.ts +48 -10
  160. package/packages/table/src/columnInfo.ts +3 -0
  161. package/packages/table/src/footer.ts +53 -10
  162. package/packages/table/src/header.ts +70 -169
  163. package/packages/table/src/methods.ts +1031 -515
  164. package/packages/table/src/props.ts +16 -6
  165. package/packages/table/src/table.ts +124 -33
  166. package/packages/table/src/util.ts +82 -62
  167. package/packages/ui/index.ts +25 -9
  168. package/styles/components/table.scss +319 -271
  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.1736840896964.ttf → iconfont.1738985837413.ttf} +0 -0
  174. /package/es/{iconfont.1736840896964.woff → iconfont.1738985837413.woff} +0 -0
  175. /package/es/{iconfont.1736840896964.woff2 → iconfont.1738985837413.woff2} +0 -0
  176. /package/lib/{iconfont.1736840896964.ttf → iconfont.1738985837413.ttf} +0 -0
  177. /package/lib/{iconfont.1736840896964.woff → iconfont.1738985837413.woff} +0 -0
  178. /package/lib/{iconfont.1736840896964.woff2 → iconfont.1738985837413.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: {
@@ -86,14 +86,20 @@ export default {
86
86
  type: Boolean,
87
87
  default: () => getConfig().table.highlightHoverRow
88
88
  },
89
- // 已废弃,被 column-config.isCurrent 替换
89
+ /**
90
+ * (即将废弃)是否要高亮当前选中列
91
+ * @deprecated
92
+ */
90
93
  highlightCurrentColumn: {
91
- type: Boolean,
94
+ type: Boolean as PropType<VxeTablePropTypes.HighlightCurrentColumn>,
92
95
  default: () => getConfig().table.highlightCurrentColumn
93
96
  },
94
- // 已废弃,被 column-config.isHover 替换
97
+ /**
98
+ * (即将废弃)鼠标移到列是否要高亮显示
99
+ * @deprecated
100
+ */
95
101
  highlightHoverColumn: {
96
- type: Boolean,
102
+ type: Boolean as PropType<VxeTablePropTypes.HighlightHoverColumn>,
97
103
  default: () => getConfig().table.highlightHoverColumn
98
104
  },
99
105
  // 已废弃,直接删除
@@ -163,6 +169,10 @@ export default {
163
169
  columnConfig: Object,
164
170
  // 单元格配置信息
165
171
  cellConfig: Object as PropType<VxeTablePropTypes.CellConfig>,
172
+ // 表头单元格配置信息
173
+ headerCellConfig: Object as PropType<VxeTablePropTypes.HeaderCellConfig>,
174
+ // 表尾单元格配置信息
175
+ footerCellConfig: Object as PropType<VxeTablePropTypes.FooterCellConfig>,
166
176
  // 行配置信息
167
177
  rowConfig: Object,
168
178
  // 已废弃,被 rowDragConfig 替换
@@ -178,7 +178,7 @@ 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()
@@ -362,8 +362,7 @@ export default {
362
362
  const xID = XEUtils.uniqueId()
363
363
  return {
364
364
  xID,
365
- tId: `${XEUtils.uniqueId()}`,
366
- isCalcColumn: false,
365
+ tId: xID,
367
366
  // 低性能的静态列
368
367
  staticColumns: [],
369
368
  // 渲染的列分组
@@ -576,7 +575,8 @@ export default {
576
575
 
577
576
  scrollVMLoading: false,
578
577
 
579
- isCalcCellHeight: 0,
578
+ calcCellHeightFlag: 0,
579
+ resizeHeightFlag: 0,
580
580
 
581
581
  isCustomStatus: false,
582
582
 
@@ -586,8 +586,9 @@ export default {
586
586
  dragCol: null,
587
587
  dragTipText: '',
588
588
 
589
- _isResize: false,
590
- isLoading: false,
589
+ isDragResize: false,
590
+ isRowLoading: false,
591
+ isColLoading: false,
591
592
 
592
593
  reScrollFlag: 0,
593
594
  reLayoutFlag: 0,
@@ -695,7 +696,7 @@ export default {
695
696
 
696
697
  const vSize = $xeTable.computeSize
697
698
  const rowHeightMaps = $xeTable.computeRowHeightMaps
698
- return rowHeightMaps[vSize || 'default']
699
+ return rowHeightMaps[vSize || 'default'] || 18
699
700
  },
700
701
  columnOpts () {
701
702
  return this.computeColumnOpts
@@ -704,7 +705,22 @@ export default {
704
705
  return Object.assign({}, getConfig().table.columnConfig, this.columnConfig)
705
706
  },
706
707
  computeCellOpts () {
707
- return Object.assign({}, getConfig().table.cellConfig, this.cellConfig)
708
+ const $xeTable = this
709
+ const props = $xeTable
710
+
711
+ return Object.assign({}, getConfig().table.cellConfig, props.cellConfig)
712
+ },
713
+ computeHeaderCellOpts () {
714
+ const $xeTable = this
715
+ const props = $xeTable
716
+
717
+ return Object.assign({}, getConfig().table.headerCellConfig, props.headerCellConfig)
718
+ },
719
+ computeFooterCellOpts () {
720
+ const $xeTable = this
721
+ const props = $xeTable
722
+
723
+ return Object.assign({}, getConfig().table.footerCellConfig, props.footerCellConfig)
708
724
  },
709
725
  rowOpts () {
710
726
  return this.computeRowOpts
@@ -757,6 +773,20 @@ export default {
757
773
  tipConfig () {
758
774
  return { ...this.tooltipOpts }
759
775
  },
776
+ computeTableTipConfig () {
777
+ const $xeTable = this
778
+ const reactData = $xeTable
779
+
780
+ const { tooltipStore } = reactData
781
+ const tooltipOpts = $xeTable.computeTooltipOpts
782
+ return Object.assign({}, tooltipOpts, tooltipStore.currOpts)
783
+ },
784
+ computeValidTipConfig () {
785
+ const $xeTable = this
786
+
787
+ const tooltipOpts = $xeTable.computeTooltipOpts
788
+ return Object.assign({}, tooltipOpts)
789
+ },
760
790
  validTipOpts () {
761
791
  return Object.assign({ isArrow: false }, this.tooltipOpts)
762
792
  },
@@ -809,24 +839,59 @@ export default {
809
839
  return Object.assign({}, getConfig().table.fnrConfig, this.fnrConfig)
810
840
  },
811
841
  headerCtxMenu () {
812
- const headerOpts = this.ctxMenuOpts.header
842
+ return this.computeHeaderMenu
843
+ },
844
+ computeHeaderMenu () {
845
+ const $xeTable = this
846
+
847
+ const menuOpts = $xeTable.computeMenuOpts
848
+ const headerOpts = menuOpts.header
813
849
  return headerOpts && headerOpts.options ? headerOpts.options : []
814
850
  },
815
851
  bodyCtxMenu () {
816
- const bodyOpts = this.ctxMenuOpts.body
852
+ return this.computeBodyMenu
853
+ },
854
+ computeBodyMenu () {
855
+ const $xeTable = this
856
+
857
+ const menuOpts = $xeTable.computeMenuOpts
858
+ const bodyOpts = menuOpts.body
817
859
  return bodyOpts && bodyOpts.options ? bodyOpts.options : []
818
860
  },
819
861
  footerCtxMenu () {
820
- const footerOpts = this.ctxMenuOpts.footer
862
+ return this.computeFooterMenu
863
+ },
864
+ computeFooterMenu () {
865
+ const $xeTable = this
866
+
867
+ const menuOpts = $xeTable.computeMenuOpts
868
+ const footerOpts = menuOpts.footer
821
869
  return footerOpts && footerOpts.options ? footerOpts.options : []
822
870
  },
823
871
  isCtxMenu () {
824
- return !!((this.contextMenu || this.menuConfig) && isEnableConf(this.ctxMenuOpts) && (this.headerCtxMenu.length || this.bodyCtxMenu.length || this.footerCtxMenu.length))
872
+ return this.computeIsMenu
873
+ },
874
+ computeIsMenu () {
875
+ const $xeTable = this
876
+ const props = $xeTable
877
+
878
+ const menuOpts = $xeTable.computeMenuOpts
879
+ const headerMenu = $xeTable.computeHeaderMenu
880
+ const bodyMenu = $xeTable.computeBodyMenu
881
+ const footerMenu = $xeTable.computeFooterMenu
882
+ return !!((props.contextMenu || props.menuConfig) && isEnableConf(menuOpts) && (headerMenu.length || bodyMenu.length || footerMenu.length))
825
883
  },
826
884
  ctxMenuList () {
885
+ return this.computeMenuList
886
+ },
887
+ computeMenuList () {
888
+ const $xeTable = this
889
+ const reactData = $xeTable as TableReactData
890
+
891
+ const { ctxMenuStore } = reactData
827
892
  const rest: any[] = []
828
- this.ctxMenuStore.list.forEach((list: any[]) => {
829
- list.forEach(item => {
893
+ ctxMenuStore.list.forEach((list) => {
894
+ list.forEach((item) => {
830
895
  rest.push(item)
831
896
  })
832
897
  })
@@ -1010,7 +1075,7 @@ export default {
1010
1075
  if (value && value.length >= 50000) {
1011
1076
  warnLog('vxe.error.errLargeData', ['loadData(data), reloadData(data)'])
1012
1077
  }
1013
- this.loadTableData(value || []).then(() => {
1078
+ this.loadTableData(value || [], true).then(() => {
1014
1079
  this.inited = true
1015
1080
  this.initStatus = true
1016
1081
  if (!initStatus) {
@@ -1085,10 +1150,10 @@ export default {
1085
1150
 
1086
1151
  syncResize (value: any) {
1087
1152
  if (value) {
1088
- handleUupdateResize(this)
1153
+ handleUpdateResize(this)
1089
1154
  this.$nextTick(() => {
1090
- handleUupdateResize(this)
1091
- setTimeout(() => handleUupdateResize(this))
1155
+ handleUpdateResize(this)
1156
+ setTimeout(() => handleUpdateResize(this))
1092
1157
  })
1093
1158
  }
1094
1159
  },
@@ -1192,11 +1257,14 @@ export default {
1192
1257
  if (treeConfig && (treeOpts.showLine || treeOpts.line) && (!(this.rowKey || rowOpts.useKey) || !showOverflow)) {
1193
1258
  warnLog('vxe.error.reqProp', ['row-config.useKey | show-overflow'])
1194
1259
  }
1260
+ if (treeConfig && !treeOpts.transform && this.stripe) {
1261
+ warnLog('vxe.error.noTree', ['stripe'])
1262
+ }
1195
1263
  if (this.showFooter && !(this.footerMethod || this.footerData)) {
1196
1264
  warnLog('vxe.error.reqProp', ['footer-data | footer-method'])
1197
1265
  }
1198
- if (treeConfig && !treeOpts.transform && this.stripe) {
1199
- warnLog('vxe.error.noTree', ['stripe'])
1266
+ if (rowOpts.height) {
1267
+ warnLog('vxe.error.delProp', ['row-config.height', 'cell-config.height'])
1200
1268
  }
1201
1269
  if (this.tooltipOpts.enabled) {
1202
1270
  warnLog('vxe.error.delProp', ['tooltip-config.enabled', 'tooltip-config.showAll'])
@@ -1342,7 +1410,7 @@ export default {
1342
1410
  endIndex: 1,
1343
1411
  visibleSize: 0
1344
1412
  })
1345
- this.loadTableData(data).then(() => {
1413
+ this.loadTableData(data, true).then(() => {
1346
1414
  if (data && data.length) {
1347
1415
  this.inited = true
1348
1416
  this.initStatus = true
@@ -1458,10 +1526,11 @@ export default {
1458
1526
  const { xID } = $xeTable
1459
1527
 
1460
1528
  const { loading, stripe, showHeader, height, treeConfig, mouseConfig, showFooter, highlightCell, highlightHoverRow, highlightHoverColumn, editConfig, editRules } = props
1461
- const { isCalcColumn, isGroup, overflowX, overflowY, scrollXLoad, scrollYLoad, tableData, initStore, columnStore, filterStore, customStore, tooltipStore } = reactData
1529
+ const { isGroup, overflowX, overflowY, scrollXLoad, scrollYLoad, tableData, initStore, columnStore, filterStore, customStore } = reactData
1462
1530
  const { leftList, rightList } = columnStore
1463
1531
  const loadingSlot = slots.loading
1464
- const tooltipOpts = $xeTable.computeTooltipOpts
1532
+ const tableTipConfig = $xeTable.computeTableTipConfig
1533
+ const validTipConfig = $xeTable.computeValidTipConfig
1465
1534
  const validOpts = $xeTable.computeValidOpts
1466
1535
  const checkboxOpts = $xeTable.computeCheckboxOpts
1467
1536
  const treeOpts = $xeTable.computeTreeOpts
@@ -1473,7 +1542,7 @@ export default {
1473
1542
  const areaOpts = $xeTable.computeAreaOpts
1474
1543
  const loadingOpts = $xeTable.computeLoadingOpts
1475
1544
  const isMenu = $xeTable.computeIsMenu
1476
- const currLoading = reactData.isLoading || loading
1545
+ const currLoading = reactData.isColLoading || reactData.isRowLoading || loading
1477
1546
  const resizableOpts = $xeTable.computeResizableOpts
1478
1547
  const isArea = mouseConfig && mouseOpts.area
1479
1548
  const columnDragOpts = $xeTable.computeColumnDragOpts
@@ -1494,7 +1563,6 @@ export default {
1494
1563
  'row--highlight': rowOpts.isHover || highlightHoverRow,
1495
1564
  'column--highlight': columnOpts.isHover || highlightHoverColumn,
1496
1565
  'checkbox--range': checkboxOpts.range,
1497
- 'column--calc': isCalcColumn,
1498
1566
  'col--drag-cell': columnOpts.drag && columnDragOpts.trigger === 'cell',
1499
1567
  'is--header': showHeader,
1500
1568
  'is--footer': showFooter,
@@ -1503,7 +1571,6 @@ export default {
1503
1571
  'is--fixed-left': leftList.length,
1504
1572
  'is--fixed-right': rightList.length,
1505
1573
  'is--animat': !!props.animat,
1506
- 'is--padding': props.padding,
1507
1574
  'is--round': props.round,
1508
1575
  'is--stripe': !treeConfig && stripe,
1509
1576
  'is--loading': currLoading,
@@ -1562,13 +1629,27 @@ export default {
1562
1629
  * 列宽线
1563
1630
  */
1564
1631
  h('div', {
1565
- key: 'cl',
1566
- ref: 'refCellResizeBar',
1567
- class: 'vxe-table--resizable-bar'
1632
+ key: 'tcl',
1633
+ ref: 'refColResizeBar',
1634
+ class: 'vxe-table--resizable-col-bar'
1635
+ }, resizableOpts.showDragTip
1636
+ ? [
1637
+ h('div', {
1638
+ ref: 'refColResizeTip',
1639
+ class: 'vxe-table--resizable-number-tip'
1640
+ })
1641
+ ]
1642
+ : []),
1643
+ /**
1644
+ * 行高线
1645
+ */
1646
+ h('div', {
1647
+ key: 'trl',
1648
+ ref: 'refRowResizeBar',
1649
+ class: 'vxe-table--resizable-row-bar'
1568
1650
  }, resizableOpts.showDragTip
1569
1651
  ? [
1570
1652
  h('div', {
1571
- ref: 'refCellResizeTip',
1572
1653
  class: 'vxe-table--resizable-number-tip'
1573
1654
  })
1574
1655
  ]
@@ -1683,8 +1764,13 @@ export default {
1683
1764
  VxeUITooltipComponent
1684
1765
  ? h(VxeUITooltipComponent, {
1685
1766
  key: 'btp',
1686
- ref: 'tooltip',
1687
- props: Object.assign({}, tooltipOpts, tooltipStore.currOpts)
1767
+ ref: 'refTooltip',
1768
+ props: {
1769
+ theme: tableTipConfig.theme,
1770
+ enterable: tableTipConfig.enterable,
1771
+ enterDelay: tableTipConfig.enterDelay,
1772
+ leaveDelay: tableTipConfig.leaveDelay
1773
+ }
1688
1774
  })
1689
1775
  : renderEmptyElement($xeTable),
1690
1776
  /**
@@ -1697,7 +1783,12 @@ export default {
1697
1783
  class: [{
1698
1784
  'old-cell-valid': editRules && getConfig().cellVaildMode === 'obsolete'
1699
1785
  }, 'vxe-table--valid-error'],
1700
- props: validOpts.message === 'tooltip' || tableData.length === 1 ? Object.assign({ isArrow: false }, tooltipOpts) : {}
1786
+ props: {
1787
+ theme: validTipConfig.theme,
1788
+ enterable: validTipConfig.enterable,
1789
+ enterDelay: validTipConfig.enterDelay,
1790
+ leaveDelay: validTipConfig.leaveDelay
1791
+ }
1701
1792
  })
1702
1793
  : renderEmptyElement($xeTable)
1703
1794
  ])
@@ -3,7 +3,7 @@ import { ColumnInfo } from './columnInfo'
3
3
  import { isScale, isPx } from '../../ui/src/dom'
4
4
  import { warnLog, errLog } from '../../ui/src/log'
5
5
 
6
- import type { VxeTableDefines, VxeTableConstructor, TableReactData } from '../../../types'
6
+ import type { VxeTableDefines, VxeTableConstructor, TableReactData, TableInternalData, VxeTablePrivateMethods } from '../../../types'
7
7
 
8
8
  const getAllConvertColumns = (columns: any, parentColumn?: any) => {
9
9
  const result: any[] = []
@@ -132,9 +132,16 @@ function getElementMarginWidth (elem: any) {
132
132
  return 0
133
133
  }
134
134
 
135
+ export function getCellHeight (height: number | 'unset' | undefined | null) {
136
+ if (height === 'unset') {
137
+ return 0
138
+ }
139
+ return height || 0
140
+ }
141
+
135
142
  export function handleFieldOrColumn (_vm: any, fieldOrColumn: any) {
136
143
  if (fieldOrColumn) {
137
- return XEUtils.isString(fieldOrColumn) ? _vm.getColumnByField(fieldOrColumn) : fieldOrColumn
144
+ return XEUtils.isString(fieldOrColumn) || XEUtils.isNumber(fieldOrColumn) ? _vm.getColumnByField(`${fieldOrColumn}`) : fieldOrColumn
138
145
  }
139
146
  return null
140
147
  }
@@ -200,6 +207,7 @@ export function toFilters (filters: any) {
200
207
 
201
208
  export function getColReMinWidth (params: any) {
202
209
  const { $table, column, cell } = params
210
+ const internalData = $table
203
211
  const { showHeaderOverflow: allColumnHeaderOverflow, resizableOpts } = $table
204
212
  const { minWidth } = resizableOpts
205
213
  // 如果自定义调整宽度逻辑
@@ -209,6 +217,7 @@ export function getColReMinWidth (params: any) {
209
217
  return Math.max(1, XEUtils.toNumber(customMinWidth))
210
218
  }
211
219
  }
220
+ const { elemStore } = internalData
212
221
  const { showHeaderOverflow, minWidth: colMinWidth } = column
213
222
  const headOverflow = XEUtils.isUndefined(showHeaderOverflow) || XEUtils.isNull(showHeaderOverflow) ? allColumnHeaderOverflow : showHeaderOverflow
214
223
  const showEllipsis = headOverflow === 'ellipsis'
@@ -232,11 +241,10 @@ export function getColReMinWidth (params: any) {
232
241
  }
233
242
  // 如果设置最小宽
234
243
  if (colMinWidth) {
235
- const { refTableBody } = $table.$refs
236
- const bodyElem = refTableBody ? refTableBody.$el : null
237
- if (bodyElem) {
244
+ const bodyScrollElem = getRefElem(elemStore['main-body-scroll'])
245
+ if (bodyScrollElem) {
238
246
  if (isScale(colMinWidth)) {
239
- const bodyWidth = bodyElem.clientWidth - 1
247
+ const bodyWidth = bodyScrollElem.clientWidth - 1
240
248
  const meanWidth = bodyWidth / 100
241
249
  return Math.max(mWidth, Math.floor(XEUtils.toInteger(colMinWidth) * meanWidth))
242
250
  } else if (isPx(colMinWidth)) {
@@ -280,13 +288,32 @@ export function getOffsetSize ($xeTable: VxeTableConstructor) {
280
288
  }
281
289
 
282
290
  export function calcTreeLine (params: VxeTableDefines.CellRenderBodyParams, prevRow: any) {
283
- const { $table } = params
291
+ const { $table, row } = params
292
+ const tableProps = $table
284
293
  const tableReactData = $table as unknown as TableReactData
294
+ const tableInternalData = $table as unknown as TableInternalData
295
+
296
+ const { showOverflow } = tableProps
297
+ const { scrollYLoad } = tableReactData
298
+ const { fullAllDataRowIdData } = tableInternalData
299
+ const rowOpts = $table.computeRowOpts
300
+ const cellOpts = $table.computeCellOpts
301
+ const defaultRowHeight = $table.computeDefaultRowHeight
302
+ const rowid = getRowid($table, row)
303
+ const rowRest = fullAllDataRowIdData[rowid]
304
+ const currCellHeight = rowRest.resizeHeight || cellOpts.height || rowOpts.height || defaultRowHeight
285
305
  let expandSize = 1
286
306
  if (prevRow) {
287
307
  expandSize = countTreeExpand(prevRow, params)
288
308
  }
289
- return tableReactData.rowHeight * expandSize - (prevRow ? 1 : (12 - getOffsetSize($table)))
309
+ let cellHeight = currCellHeight
310
+ const vnHeight = rowRest.height
311
+ if (scrollYLoad) {
312
+ if (!showOverflow) {
313
+ cellHeight = vnHeight || currCellHeight
314
+ }
315
+ }
316
+ return cellHeight * expandSize - (prevRow ? 1 : (12 - getOffsetSize($table)))
290
317
  }
291
318
 
292
319
  export function mergeBodyMethod (mergeList: any, _rowIndex: any, _columnIndex: any) {
@@ -354,34 +381,29 @@ export function isColumnInfo (column: any) {
354
381
  return column instanceof ColumnInfo
355
382
  }
356
383
 
357
- export function createColumn ($xeTable: any, options: any, renderOptions: any): any {
384
+ export function createColumn ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, options: any, renderOptions: any): any {
358
385
  return isColumnInfo(options) ? options : new ColumnInfo($xeTable, options, renderOptions)
359
386
  }
360
387
 
361
- export function rowToVisible ($xeTable: any, row: any) {
362
- const reactData = $xeTable
363
- const internalData = $xeTable
388
+ export function rowToVisible ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, row: any) {
364
389
  const tableProps = $xeTable
390
+ const reactData = $xeTable as unknown as TableReactData
391
+ const internalData = $xeTable as unknown as TableInternalData
392
+
365
393
  const { showOverflow } = tableProps
366
- const refTableBody: any = $xeTable.$refs.refTableBody
367
- const { columnStore, scrollYLoad } = reactData
368
- const { afterFullData, scrollYStore, fullAllDataRowIdData } = internalData
369
- const { rowHeight } = scrollYStore
370
- const { leftList, rightList } = columnStore
371
- const bodyElem = refTableBody ? refTableBody.$el as HTMLDivElement : null
394
+ const { scrollYLoad } = reactData
395
+ const { elemStore, afterFullData, fullAllDataRowIdData, isResizeCellHeight } = internalData
396
+ const rowOpts = $xeTable.computeRowOpts
397
+ const cellOpts = $xeTable.computeCellOpts
398
+ const defaultRowHeight = $xeTable.computeDefaultRowHeight
399
+ const leftFixedWidth = $xeTable.computeLeftFixedWidth
400
+ const rightFixedWidth = $xeTable.computeRightFixedWidth
401
+ const bodyScrollElem = getRefElem(elemStore['main-body-scroll'])
372
402
  const rowid = getRowid($xeTable, row)
373
- let offsetFixedLeft = 0
374
- leftList.forEach((item: any) => {
375
- offsetFixedLeft += item.renderWidth
376
- })
377
- let offsetFixedRight = 0
378
- rightList.forEach((item: any) => {
379
- offsetFixedRight += item.renderWidth
380
- })
381
- if (bodyElem) {
382
- const bodyHeight = bodyElem.clientHeight
383
- const bodyScrollTop = bodyElem.scrollTop
384
- const trElem: HTMLTableRowElement | null = bodyElem.querySelector(`[rowid="${rowid}"]`)
403
+ if (bodyScrollElem) {
404
+ const bodyHeight = bodyScrollElem.clientHeight
405
+ const bodyScrollTop = bodyScrollElem.scrollTop
406
+ const trElem: HTMLTableRowElement | null = bodyScrollElem.querySelector(`[rowid="${rowid}"]`)
385
407
  if (trElem) {
386
408
  const trOffsetParent = trElem.offsetParent as HTMLElement
387
409
  const trOffsetTop = trElem.offsetTop + (trOffsetParent ? trOffsetParent.offsetTop : 0)
@@ -395,12 +417,13 @@ export function rowToVisible ($xeTable: any, row: any) {
395
417
  } else {
396
418
  // 如果是虚拟渲染滚动
397
419
  if (scrollYLoad) {
398
- if (showOverflow) {
399
- return $xeTable.scrollTo(null, ($xeTable.findRowIndexOf(afterFullData, row) - 1) * rowHeight)
420
+ const isCustomCellHeight = isResizeCellHeight || cellOpts.height || rowOpts.height
421
+ if (!isCustomCellHeight && showOverflow) {
422
+ return $xeTable.scrollTo(null, ($xeTable.findRowIndexOf(afterFullData, row) - 1) * defaultRowHeight)
400
423
  }
401
424
  let scrollTop = 0
402
425
  const rowRest = fullAllDataRowIdData[rowid]
403
- const rHeight = rowRest ? (rowRest.height || rowHeight) : rowHeight
426
+ const rHeight = rowRest ? (rowRest.resizeHeight || cellOpts.height || rowOpts.height || defaultRowHeight) : defaultRowHeight
404
427
  for (let i = 0; i < afterFullData.length; i++) {
405
428
  const currRow = afterFullData[i]
406
429
  const currRowid = getRowid($xeTable, currRow)
@@ -408,54 +431,50 @@ export function rowToVisible ($xeTable: any, row: any) {
408
431
  break
409
432
  }
410
433
  const rowRest = fullAllDataRowIdData[currRowid]
411
- scrollTop += rowRest ? (rowRest.height || rowHeight) : rowHeight
434
+ scrollTop += rowRest ? (rowRest.resizeHeight || cellOpts.height || rowOpts.height || defaultRowHeight) : defaultRowHeight
412
435
  }
413
436
  if (scrollTop < bodyScrollTop) {
414
- return $xeTable.scrollTo(null, scrollTop - offsetFixedLeft - 1)
437
+ return $xeTable.scrollTo(null, scrollTop - leftFixedWidth - 1)
415
438
  }
416
- return $xeTable.scrollTo(null, (scrollTop + rHeight) - (bodyHeight - offsetFixedRight - 1))
439
+ return $xeTable.scrollTo(null, (scrollTop + rHeight) - (bodyHeight - rightFixedWidth - 1))
417
440
  }
418
441
  }
419
442
  }
420
443
  return Promise.resolve()
421
444
  }
422
445
 
423
- export function colToVisible ($xeTable: any, column: any, row?: any) {
424
- const { columnStore, scrollXLoad, visibleColumn } = $xeTable
425
- const refTableBody: any = $xeTable.$refs.refTableBody
426
- const { leftList, rightList } = columnStore
427
- const bodyElem = refTableBody ? refTableBody.$el : null
446
+ export function colToVisible ($xeTable: VxeTableConstructor & VxeTablePrivateMethods, column: VxeTableDefines.ColumnInfo, row?: any) {
447
+ const reactData = $xeTable as unknown as TableReactData
448
+ const internalData = $xeTable as unknown as TableInternalData
449
+
450
+ const { scrollXLoad } = reactData
451
+ const { elemStore, visibleColumn } = internalData
452
+ const leftFixedWidth = $xeTable.computeLeftFixedWidth
453
+ const rightFixedWidth = $xeTable.computeRightFixedWidth
454
+ const bodyScrollElem = getRefElem(elemStore['main-body-scroll'])
428
455
  if (column.fixed) {
429
456
  return Promise.resolve()
430
457
  }
431
- let offsetFixedLeft = 0
432
- leftList.forEach((item: any) => {
433
- offsetFixedLeft += item.renderWidth
434
- })
435
- let offsetFixedRight = 0
436
- rightList.forEach((item: any) => {
437
- offsetFixedRight += item.renderWidth
438
- })
439
- if (bodyElem) {
440
- const bodyWidth = bodyElem.clientWidth
441
- const bodyScrollLeft = bodyElem.scrollLeft
458
+ if (bodyScrollElem) {
459
+ const bodyWidth = bodyScrollElem.clientWidth
460
+ const bodyScrollLeft = bodyScrollElem.scrollLeft
442
461
  let tdElem: HTMLTableCellElement | null = null
443
462
  if (row) {
444
463
  const rowid = getRowid($xeTable, row)
445
- tdElem = bodyElem.querySelector(`[rowid="${rowid}"] .${column.id}`)
464
+ tdElem = bodyScrollElem.querySelector(`[rowid="${rowid}"] .${column.id}`)
446
465
  }
447
466
  if (!tdElem) {
448
- tdElem = bodyElem.querySelector(`.${column.id}`)
467
+ tdElem = bodyScrollElem.querySelector(`.${column.id}`)
449
468
  }
450
469
  if (tdElem) {
451
470
  const tdOffsetParent = tdElem.offsetParent as HTMLElement
452
471
  const tdOffsetLeft = tdElem.offsetLeft + (tdOffsetParent ? tdOffsetParent.offsetLeft : 0)
453
472
  const cellWidth = tdElem.clientWidth
454
473
  // 检测是否在可视区中
455
- if (tdOffsetLeft < (bodyScrollLeft + offsetFixedLeft)) {
456
- return $xeTable.scrollTo(tdOffsetLeft - offsetFixedLeft - 1)
457
- } else if ((tdOffsetLeft + cellWidth - bodyScrollLeft) > (bodyWidth - offsetFixedRight)) {
458
- return $xeTable.scrollTo((tdOffsetLeft + cellWidth) - (bodyWidth - offsetFixedRight - 1))
474
+ if (tdOffsetLeft < (bodyScrollLeft + leftFixedWidth)) {
475
+ return $xeTable.scrollTo(tdOffsetLeft - leftFixedWidth - 1)
476
+ } else if ((tdOffsetLeft + cellWidth - bodyScrollLeft) > (bodyWidth - rightFixedWidth)) {
477
+ return $xeTable.scrollTo((tdOffsetLeft + cellWidth) - (bodyWidth - rightFixedWidth - 1))
459
478
  }
460
479
  } else {
461
480
  // 检测是否在虚拟渲染可视区中
@@ -463,15 +482,16 @@ export function colToVisible ($xeTable: any, column: any, row?: any) {
463
482
  let scrollLeft = 0
464
483
  const cellWidth = column.renderWidth
465
484
  for (let i = 0; i < visibleColumn.length; i++) {
466
- if (visibleColumn[i] === column) {
485
+ const currCol = visibleColumn[i]
486
+ if (currCol === column || currCol.id === column.id) {
467
487
  break
468
488
  }
469
- scrollLeft += visibleColumn[i].renderWidth
489
+ scrollLeft += currCol.renderWidth
470
490
  }
471
491
  if (scrollLeft < bodyScrollLeft) {
472
- return $xeTable.scrollTo(scrollLeft - offsetFixedLeft - 1)
492
+ return $xeTable.scrollTo(scrollLeft - leftFixedWidth - 1)
473
493
  }
474
- return $xeTable.scrollTo((scrollLeft + cellWidth) - (bodyWidth - offsetFixedRight - 1))
494
+ return $xeTable.scrollTo((scrollLeft + cellWidth) - (bodyWidth - rightFixedWidth - 1))
475
495
  }
476
496
  }
477
497
  }
@@ -41,7 +41,10 @@ VxeUI.setConfig({
41
41
  },
42
42
  resizableConfig: {
43
43
  dragMode: 'auto',
44
- showDragTip: true
44
+ showDragTip: true,
45
+ isSyncAutoHeight: true,
46
+ isSyncAutoWidth: true,
47
+ minHeight: 18
45
48
  },
46
49
  radioConfig: {
47
50
  // trigger: 'default'
@@ -75,6 +78,15 @@ VxeUI.setConfig({
75
78
  columnConfig: {
76
79
  maxFixedSize: 4
77
80
  },
81
+ cellConfig: {
82
+ padding: true
83
+ },
84
+ headerCellConfig: {
85
+ height: 'unset'
86
+ },
87
+ footerCellConfig: {
88
+ height: 'unset'
89
+ },
78
90
  // menuConfig: {
79
91
  // visibleMethod () {}
80
92
  // },
@@ -108,6 +120,8 @@ VxeUI.setConfig({
108
120
  // orders: ['asc', 'desc', null],
109
121
  // sortMethod: null,
110
122
  showIcon: true,
123
+ allowClear: true,
124
+ allowBtn: true,
111
125
  iconLayout: 'vertical'
112
126
  },
113
127
  filterConfig: {
@@ -180,18 +194,20 @@ VxeUI.setConfig({
180
194
  isReplace: true
181
195
  },
182
196
  virtualXConfig: {
183
- // enabled: false,
184
- gt: 60
185
- // oSize: 0
197
+ enabled: true,
198
+ gt: 60,
199
+ preSize: 0,
200
+ oSize: 1
186
201
  },
187
202
  virtualYConfig: {
188
- // enabled: false,
189
- gt: 100
190
- // oSize: 0
203
+ enabled: true,
204
+ gt: 100,
205
+ preSize: 1,
206
+ oSize: 2
191
207
  },
192
208
  scrollbarConfig: {
193
- width: 10,
194
- height: 10
209
+ // width: 0,
210
+ // height: 0
195
211
  }
196
212
  },
197
213
  // export: {