vxe-table 3.9.21 → 3.10.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/es/locale/lang/ja-JP.js +5 -5
  2. package/es/locale/lang/ko-KR.js +5 -5
  3. package/es/locale/lang/uk-UA.js +5 -5
  4. package/es/locale/lang/vi-VN.js +5 -5
  5. package/es/locale/lang/zh-CHT.js +5 -5
  6. package/es/locale/lang/zh-CN.js +5 -5
  7. package/es/style.css +1 -1
  8. package/es/style.min.css +1 -1
  9. package/es/table/module/edit/mixin.js +3 -3
  10. package/es/table/src/body.js +53 -115
  11. package/es/table/src/footer.js +24 -21
  12. package/es/table/src/methods.js +392 -123
  13. package/es/table/src/props.js +2 -0
  14. package/es/table/src/table.js +71 -10
  15. package/es/table/src/util.js +58 -33
  16. package/es/table/style.css +47 -7
  17. package/es/table/style.min.css +1 -1
  18. package/es/ui/index.js +2 -2
  19. package/es/ui/src/log.js +1 -1
  20. package/es/vxe-table/style.css +47 -7
  21. package/es/vxe-table/style.min.css +1 -1
  22. package/lib/index.umd.js +682 -361
  23. package/lib/index.umd.min.js +1 -1
  24. package/lib/locale/lang/ja-JP.js +5 -5
  25. package/lib/locale/lang/ja-JP.min.js +1 -1
  26. package/lib/locale/lang/ja-JP.umd.js +5 -5
  27. package/lib/locale/lang/ko-KR.js +5 -5
  28. package/lib/locale/lang/ko-KR.min.js +1 -1
  29. package/lib/locale/lang/ko-KR.umd.js +5 -5
  30. package/lib/locale/lang/uk-UA.js +5 -5
  31. package/lib/locale/lang/uk-UA.min.js +1 -1
  32. package/lib/locale/lang/uk-UA.umd.js +5 -5
  33. package/lib/locale/lang/vi-VN.js +5 -5
  34. package/lib/locale/lang/vi-VN.min.js +1 -1
  35. package/lib/locale/lang/zh-CHT.js +5 -5
  36. package/lib/locale/lang/zh-CHT.min.js +1 -1
  37. package/lib/locale/lang/zh-CHT.umd.js +5 -5
  38. package/lib/locale/lang/zh-CN.js +5 -5
  39. package/lib/locale/lang/zh-CN.min.js +1 -1
  40. package/lib/locale/lang/zh-CN.umd.js +5 -5
  41. package/lib/style.css +1 -1
  42. package/lib/style.min.css +1 -1
  43. package/lib/table/module/edit/mixin.js +6 -3
  44. package/lib/table/module/edit/mixin.min.js +1 -1
  45. package/lib/table/src/body.js +54 -118
  46. package/lib/table/src/body.min.js +1 -1
  47. package/lib/table/src/footer.js +24 -33
  48. package/lib/table/src/footer.min.js +1 -1
  49. package/lib/table/src/methods.js +449 -148
  50. package/lib/table/src/methods.min.js +1 -1
  51. package/lib/table/src/props.js +2 -0
  52. package/lib/table/src/props.min.js +1 -1
  53. package/lib/table/src/table.js +64 -13
  54. package/lib/table/src/table.min.js +1 -1
  55. package/lib/table/src/util.js +72 -38
  56. package/lib/table/src/util.min.js +1 -1
  57. package/lib/table/style/style.css +47 -7
  58. package/lib/table/style/style.min.css +1 -1
  59. package/lib/ui/index.js +2 -2
  60. package/lib/ui/index.min.js +1 -1
  61. package/lib/ui/src/log.js +1 -1
  62. package/lib/ui/src/log.min.js +1 -1
  63. package/lib/vxe-table/style/style.css +47 -7
  64. package/lib/vxe-table/style/style.min.css +1 -1
  65. package/package.json +2 -2
  66. package/packages/locale/lang/ja-JP.ts +5 -5
  67. package/packages/locale/lang/ko-KR.ts +5 -5
  68. package/packages/locale/lang/uk-UA.ts +5 -5
  69. package/packages/locale/lang/vi-VN.ts +5 -5
  70. package/packages/locale/lang/zh-CHT.ts +5 -5
  71. package/packages/locale/lang/zh-CN.ts +5 -5
  72. package/packages/table/module/edit/mixin.ts +3 -3
  73. package/packages/table/src/body.ts +53 -118
  74. package/packages/table/src/footer.ts +24 -22
  75. package/packages/table/src/methods.ts +418 -127
  76. package/packages/table/src/props.ts +10 -8
  77. package/packages/table/src/table.ts +73 -10
  78. package/packages/table/src/util.ts +61 -36
  79. package/packages/ui/index.ts +1 -1
  80. package/styles/components/table-module/filter.scss +1 -1
  81. package/styles/components/table.scss +46 -13
  82. package/styles/modules.scss +0 -2
  83. package/styles/theme/base.scss +1 -1
  84. package/styles/theme/dark.scss +7 -4
  85. package/styles/variable.scss +5 -1
  86. /package/es/{iconfont.1729992873866.ttf → iconfont.1730364042434.ttf} +0 -0
  87. /package/es/{iconfont.1729992873866.woff → iconfont.1730364042434.woff} +0 -0
  88. /package/es/{iconfont.1729992873866.woff2 → iconfont.1730364042434.woff2} +0 -0
  89. /package/lib/{iconfont.1729992873866.ttf → iconfont.1730364042434.ttf} +0 -0
  90. /package/lib/{iconfont.1729992873866.woff → iconfont.1730364042434.woff} +0 -0
  91. /package/lib/{iconfont.1729992873866.woff2 → iconfont.1730364042434.woff2} +0 -0
@@ -155,6 +155,8 @@ export default {
155
155
  resizeConfig: Object,
156
156
  // 列配置信息
157
157
  columnConfig: Object,
158
+ // 单元格配置信息
159
+ cellConfig: Object,
158
160
  // 行配置信息
159
161
  rowConfig: Object,
160
162
  // 列调整配置项
@@ -20,7 +20,7 @@ import exportMixin from '../module/export/mixin';
20
20
  import keyboardMixin from '../module/keyboard/mixin';
21
21
  import validatorMixin from '../module/validator/mixin';
22
22
  import customMixin from '../module/custom/mixin';
23
- const { getConfig, getI18n, renderer, globalResize, globalEvents, globalMixins } = VxeUI;
23
+ const { getConfig, getI18n, renderer, globalResize, globalEvents, globalMixins, renderEmptyElement } = VxeUI;
24
24
  /**
25
25
  * 渲染浮固定列
26
26
  * 分别渲染左边固定列和右边固定列
@@ -73,7 +73,7 @@ function renderFixed(h, $xetable, fixedType) {
73
73
  : _e()
74
74
  ]);
75
75
  }
76
- function renderEmptyContenet(h, _vm) {
76
+ function renderEmptyBody(h, _vm) {
77
77
  const { $scopedSlots, emptyOpts } = _vm;
78
78
  let emptyContent = '';
79
79
  const params = { $table: _vm };
@@ -390,6 +390,9 @@ export default {
390
390
  computeColumnOpts() {
391
391
  return Object.assign({}, getConfig().table.columnConfig, this.columnConfig);
392
392
  },
393
+ computeCellOpts() {
394
+ return Object.assign({}, getConfig().table.cellConfig, this.rowConfig);
395
+ },
393
396
  rowOpts() {
394
397
  return this.computeRowOpts;
395
398
  },
@@ -619,6 +622,15 @@ export default {
619
622
  }
620
623
  return false;
621
624
  },
625
+ computeVirtualScrollBars() {
626
+ const $xeTable = this;
627
+ const reactData = $xeTable;
628
+ const { overflowX, scrollXLoad, overflowY, scrollYLoad } = reactData;
629
+ return {
630
+ x: overflowX && scrollXLoad,
631
+ y: overflowY && scrollYLoad
632
+ };
633
+ },
622
634
  tabsResizeFlag() {
623
635
  const $xeTable = this;
624
636
  const $xeTabs = $xeTable.$xeTabs;
@@ -1002,10 +1014,12 @@ export default {
1002
1014
  // 使用已安装的组件,如果未安装则不渲染
1003
1015
  const VxeUILoadingComponent = VxeUI.getComponent('VxeLoading');
1004
1016
  const VxeUITooltipComponent = VxeUI.getComponent('VxeTooltip');
1005
- const { _e, $scopedSlots, tId, isCalcColumn, tableData, tableColumn, tableGroupColumn, isGroup, loading, stripe, showHeader, height, tableBorder, treeOpts, treeConfig, mouseConfig, mouseOpts, computeSize, validOpts, showFooter, overflowX, overflowY, scrollXLoad, scrollYLoad, scrollbarHeight, highlightCell, highlightHoverRow, highlightHoverColumn, editConfig, validTipOpts, initStore, columnStore, filterStore, customStore, ctxMenuStore, ctxMenuOpts, footerTableData, columnOpts, rowOpts, checkboxOpts, loadingOpts, editRules } = this;
1017
+ const $xeTable = this;
1018
+ const { _e, $scopedSlots, tId, isCalcColumn, tableData, tableColumn, tableGroupColumn, isGroup, loading, stripe, showHeader, height, tableBorder, treeOpts, treeConfig, mouseConfig, mouseOpts, computeSize, validOpts, showFooter, overflowX, overflowY, scrollXLoad, scrollYLoad, scrollbarHeight, highlightCell, highlightHoverRow, highlightHoverColumn, editConfig, validTipOpts, initStore, columnStore, filterStore, customStore, ctxMenuStore, ctxMenuOpts, footerTableData, columnOpts, rowOpts, checkboxOpts, loadingOpts, editRules } = $xeTable;
1006
1019
  const { leftList, rightList } = columnStore;
1007
1020
  const currLoading = this._isLoading || loading;
1008
1021
  const vSize = computeSize;
1022
+ const virtualScrollBars = $xeTable.computeVirtualScrollBars;
1009
1023
  return h('div', {
1010
1024
  class: ['vxe-table', 'vxe-table--render-default', `tid_${tId}`, vSize ? `size--${vSize}` : '', `border--${tableBorder}`, {
1011
1025
  [`valid-msg--${validOpts.msgMode}`]: !!editRules,
@@ -1050,6 +1064,7 @@ export default {
1050
1064
  ref: 'hideColumn'
1051
1065
  }, this.$slots.default),
1052
1066
  h('div', {
1067
+ key: 'tw',
1053
1068
  class: 'vxe-table--render-wrapper'
1054
1069
  }, [
1055
1070
  h('div', {
@@ -1097,37 +1112,74 @@ export default {
1097
1112
  h('div', {
1098
1113
  class: 'vxe-table--fixed-wrapper'
1099
1114
  }, [
1100
- /**
1101
- * 左侧固定区域
1102
- */
1103
1115
  leftList && leftList.length && overflowX ? renderFixed(h, this, 'left') : _e(),
1104
- /**
1105
- * 右侧固定区域
1106
- */
1107
1116
  rightList && rightList.length && overflowX ? renderFixed(h, this, 'right') : _e()
1108
1117
  ])
1109
1118
  ]),
1119
+ virtualScrollBars.x
1120
+ ? h('div', {
1121
+ key: 'vx',
1122
+ ref: 'refScrollXVirtualElem',
1123
+ class: 'vxe-table--scroll-x-virtual'
1124
+ }, [
1125
+ h('div', {
1126
+ ref: 'refScrollXHandleElem',
1127
+ class: 'vxe-table--scroll-x-handle',
1128
+ on: {
1129
+ scroll: $xeTable.scrollXEvent
1130
+ }
1131
+ }, [
1132
+ h('div', {
1133
+ ref: 'refScrollXSpaceElem',
1134
+ class: 'vxe-table--scroll-x-space'
1135
+ })
1136
+ ])
1137
+ ])
1138
+ : renderEmptyElement($xeTable),
1139
+ virtualScrollBars.y
1140
+ ? h('div', {
1141
+ key: 'vy',
1142
+ ref: 'refScrollYVirtualElem',
1143
+ class: 'vxe-table--scroll-y-virtual'
1144
+ }, [
1145
+ h('div', {
1146
+ ref: 'refScrollYHandleElem',
1147
+ class: 'vxe-table--scroll-y-handle',
1148
+ on: {
1149
+ scroll: $xeTable.scrollYEvent
1150
+ }
1151
+ }, [
1152
+ h('div', {
1153
+ ref: 'refScrollYSpaceElem',
1154
+ class: 'vxe-table--scroll-x-space'
1155
+ })
1156
+ ])
1157
+ ])
1158
+ : renderEmptyElement($xeTable),
1110
1159
  /**
1111
1160
  * 空数据
1112
1161
  */
1113
1162
  h('div', {
1163
+ key: 'tn',
1114
1164
  ref: 'emptyPlaceholder',
1115
1165
  class: 'vxe-table--empty-placeholder'
1116
1166
  }, [
1117
1167
  h('div', {
1118
1168
  class: 'vxe-table--empty-content'
1119
- }, renderEmptyContenet(h, this))
1169
+ }, renderEmptyBody(h, this))
1120
1170
  ]),
1121
1171
  /**
1122
1172
  * 边框线
1123
1173
  */
1124
1174
  h('div', {
1175
+ key: 'tl',
1125
1176
  class: 'vxe-table--border-line'
1126
1177
  }),
1127
1178
  /**
1128
1179
  * 列宽线
1129
1180
  */
1130
1181
  h('div', {
1182
+ key: 'cl',
1131
1183
  class: 'vxe-table--resizable-bar',
1132
1184
  style: overflowX
1133
1185
  ? {
@@ -1141,6 +1193,7 @@ export default {
1141
1193
  */
1142
1194
  VxeUILoadingComponent
1143
1195
  ? h(VxeUILoadingComponent, {
1196
+ key: 'lg',
1144
1197
  class: 'vxe-table--loading',
1145
1198
  props: {
1146
1199
  value: currLoading,
@@ -1154,6 +1207,7 @@ export default {
1154
1207
  */
1155
1208
  initStore.custom
1156
1209
  ? h(TableCustomPanelComponent, {
1210
+ key: 'cs',
1157
1211
  ref: 'customWrapper',
1158
1212
  props: {
1159
1213
  customStore
@@ -1165,6 +1219,7 @@ export default {
1165
1219
  */
1166
1220
  initStore.filter
1167
1221
  ? h(TableFilterPanelComponent, {
1222
+ key: 'tf',
1168
1223
  ref: 'filterWrapper',
1169
1224
  props: {
1170
1225
  filterStore
@@ -1176,6 +1231,7 @@ export default {
1176
1231
  */
1177
1232
  initStore.import && this.importConfig
1178
1233
  ? h(TableImportPanelComponent, {
1234
+ key: 'it',
1179
1235
  props: {
1180
1236
  defaultOptions: this.importParams,
1181
1237
  storeData: this.importStore
@@ -1187,6 +1243,7 @@ export default {
1187
1243
  */
1188
1244
  initStore.export && (this.exportConfig || this.printConfig)
1189
1245
  ? h(TableExportPanelComponent, {
1246
+ key: 'et',
1190
1247
  props: {
1191
1248
  defaultOptions: this.exportParams,
1192
1249
  storeData: this.exportStore
@@ -1198,6 +1255,7 @@ export default {
1198
1255
  */
1199
1256
  ctxMenuStore.visible && this.isCtxMenu
1200
1257
  ? h(TableMenuPanelComponent, {
1258
+ key: 'tm',
1201
1259
  ref: 'ctxWrapper',
1202
1260
  props: {
1203
1261
  ctxMenuStore,
@@ -1211,6 +1269,7 @@ export default {
1211
1269
  */
1212
1270
  VxeUITooltipComponent
1213
1271
  ? h(VxeUITooltipComponent, {
1272
+ key: 'ctp',
1214
1273
  ref: 'commTip',
1215
1274
  props: {
1216
1275
  isArrow: false,
@@ -1223,6 +1282,7 @@ export default {
1223
1282
  */
1224
1283
  VxeUITooltipComponent
1225
1284
  ? h(VxeUITooltipComponent, {
1285
+ key: 'btp',
1226
1286
  ref: 'tooltip',
1227
1287
  props: Object.assign({}, this.tipConfig, this.tooltipStore.currOpts)
1228
1288
  })
@@ -1232,6 +1292,7 @@ export default {
1232
1292
  */
1233
1293
  VxeUITooltipComponent && this.editRules && validOpts.showMessage && (validOpts.message === 'default' ? !height : validOpts.message === 'tooltip')
1234
1294
  ? h(VxeUITooltipComponent, {
1295
+ key: 'vtp',
1235
1296
  ref: 'validTip',
1236
1297
  class: [{
1237
1298
  'old-cell-valid': editRules && getConfig().cellVaildMode === 'obsolete'
@@ -80,16 +80,6 @@ export function restoreScrollLocation(_vm, scrollLeft, scrollTop) {
80
80
  export function toTreePathSeq(path) {
81
81
  return path.map((num, i) => i % 2 === 0 ? (Number(num) + 1) : '.').join('');
82
82
  }
83
- export function removeScrollListener(scrollElem) {
84
- if (scrollElem && scrollElem._onscroll) {
85
- scrollElem.onscroll = null;
86
- }
87
- }
88
- export function restoreScrollListener(scrollElem) {
89
- if (scrollElem && scrollElem._onscroll) {
90
- scrollElem.onscroll = scrollElem._onscroll;
91
- }
92
- }
93
83
  /**
94
84
  * 生成行的唯一主键
95
85
  */
@@ -317,30 +307,62 @@ export function isColumnInfo(column) {
317
307
  export function createColumn($xeTable, options, renderOptions) {
318
308
  return isColumnInfo(options) ? options : new ColumnInfo($xeTable, options, renderOptions);
319
309
  }
320
- export function rowToVisible($xetable, row) {
321
- const { tableBody } = $xetable.$refs;
310
+ export function rowToVisible($xeTable, row) {
311
+ const { reactData, internalData } = $xeTable;
312
+ const tableProps = $xeTable;
313
+ const { showOverflow } = tableProps;
314
+ const tableBody = $xeTable.$refs.tableBody;
315
+ const { columnStore, scrollYLoad } = reactData;
316
+ const { afterFullData, scrollYStore, fullAllDataRowIdData } = internalData;
317
+ const { leftList, rightList } = columnStore;
322
318
  const bodyElem = tableBody ? tableBody.$el : null;
319
+ const rowid = getRowid($xeTable, row);
320
+ let offsetFixedLeft = 0;
321
+ leftList.forEach(item => {
322
+ offsetFixedLeft += item.renderWidth;
323
+ });
324
+ let offsetFixedRight = 0;
325
+ rightList.forEach(item => {
326
+ offsetFixedRight += item.renderWidth;
327
+ });
323
328
  if (bodyElem) {
324
- const trElem = bodyElem.querySelector(`[rowid="${getRowid($xetable, row)}"]`);
329
+ const bodyHeight = bodyElem.clientHeight;
330
+ const bodyScrollTop = bodyElem.scrollTop;
331
+ const trElem = bodyElem.querySelector(`[rowid="${rowid}"]`);
325
332
  if (trElem) {
326
- const bodyHeight = bodyElem.clientHeight;
327
- const bodySrcollTop = bodyElem.scrollTop;
328
- const trOffsetTop = trElem.offsetTop + (trElem.offsetParent ? trElem.offsetParent.offsetTop : 0);
333
+ const trOffsetParent = trElem.offsetParent;
334
+ const trOffsetTop = trElem.offsetTop + (trOffsetParent ? trOffsetParent.offsetTop : 0);
329
335
  const trHeight = trElem.clientHeight;
330
336
  // 检测行是否在可视区中
331
- if (trOffsetTop < bodySrcollTop || trOffsetTop > bodySrcollTop + bodyHeight) {
332
- // 向上定位
333
- return $xetable.scrollTo(null, trOffsetTop);
337
+ if (trOffsetTop < bodyScrollTop || trOffsetTop > bodyScrollTop + bodyHeight) {
338
+ return $xeTable.scrollTo(null, trOffsetTop);
334
339
  }
335
- else if (trOffsetTop + trHeight >= bodyHeight + bodySrcollTop) {
336
- // 向下定位
337
- return $xetable.scrollTo(null, bodySrcollTop + trHeight);
340
+ else if (trOffsetTop + trHeight >= bodyHeight + bodyScrollTop) {
341
+ return $xeTable.scrollTo(null, bodyScrollTop + trHeight);
338
342
  }
339
343
  }
340
344
  else {
341
- // 如果是虚拟渲染跨行滚动
342
- if ($xetable.scrollYLoad) {
343
- return $xetable.scrollTo(null, ($xetable.afterFullData.indexOf(row) - 1) * $xetable.scrollYStore.rowHeight);
345
+ // 如果是虚拟渲染滚动
346
+ if (scrollYLoad) {
347
+ if (showOverflow) {
348
+ return $xeTable.scrollTo(null, ($xeTable.findRowIndexOf(afterFullData, row) - 1) * scrollYStore.rowHeight);
349
+ }
350
+ let scrollTop = 0;
351
+ const rest = fullAllDataRowIdData[rowid];
352
+ const rHeight = rest ? rest.height : 0;
353
+ for (let i = 0; i < afterFullData.length; i++) {
354
+ const currRow = afterFullData[i];
355
+ const currRowid = getRowid($xeTable, currRow);
356
+ if (currRow === row || currRowid === rowid) {
357
+ break;
358
+ }
359
+ const rest = fullAllDataRowIdData[currRowid];
360
+ scrollTop += rest ? rest.height : 0;
361
+ }
362
+ if (scrollTop < bodyScrollTop) {
363
+ return $xeTable.scrollTo(null, scrollTop - offsetFixedLeft - 1);
364
+ }
365
+ return $xeTable.scrollTo(null, (scrollTop + rHeight) - (bodyHeight - offsetFixedRight - 1));
344
366
  }
345
367
  }
346
368
  }
@@ -348,9 +370,12 @@ export function rowToVisible($xetable, row) {
348
370
  }
349
371
  export function colToVisible($xeTable, column) {
350
372
  const { columnStore, scrollXLoad, visibleColumn } = $xeTable;
351
- const { tableBody } = $xeTable.$refs;
373
+ const tableBody = $xeTable.$refs.tableBody;
352
374
  const { leftList, rightList } = columnStore;
353
375
  const bodyElem = tableBody ? tableBody.$el : null;
376
+ if (column.fixed) {
377
+ return Promise.resolve();
378
+ }
354
379
  let offsetFixedLeft = 0;
355
380
  leftList.forEach((item) => {
356
381
  offsetFixedLeft += item.renderWidth;
@@ -361,16 +386,16 @@ export function colToVisible($xeTable, column) {
361
386
  });
362
387
  if (bodyElem) {
363
388
  const bodyWidth = bodyElem.clientWidth;
364
- const bodySrcollLeft = bodyElem.scrollLeft;
389
+ const bodyScrollLeft = bodyElem.scrollLeft;
365
390
  const tdElem = bodyElem.querySelector(`.${column.id}`);
366
391
  if (tdElem) {
367
392
  const tdOffsetLeft = tdElem.offsetLeft + (tdElem.offsetParent ? tdElem.offsetParent.offsetLeft : 0);
368
393
  const cellWidth = tdElem.clientWidth;
369
394
  // 检测是否在可视区中
370
- if (tdOffsetLeft < (bodySrcollLeft + offsetFixedLeft)) {
395
+ if (tdOffsetLeft < (bodyScrollLeft + offsetFixedLeft)) {
371
396
  return $xeTable.scrollTo(tdOffsetLeft - offsetFixedLeft - 1);
372
397
  }
373
- else if ((tdOffsetLeft + cellWidth - bodySrcollLeft) > (bodyWidth - offsetFixedRight)) {
398
+ else if ((tdOffsetLeft + cellWidth - bodyScrollLeft) > (bodyWidth - offsetFixedRight)) {
374
399
  return $xeTable.scrollTo((tdOffsetLeft + cellWidth) - (bodyWidth - offsetFixedRight - 1));
375
400
  }
376
401
  }
@@ -379,13 +404,13 @@ export function colToVisible($xeTable, column) {
379
404
  if (scrollXLoad) {
380
405
  let scrollLeft = 0;
381
406
  const cellWidth = column.renderWidth;
382
- for (let index = 0; index < visibleColumn.length; index++) {
383
- if (visibleColumn[index] === column) {
407
+ for (let i = 0; i < visibleColumn.length; i++) {
408
+ if (visibleColumn[i] === column) {
384
409
  break;
385
410
  }
386
- scrollLeft += visibleColumn[index].renderWidth;
411
+ scrollLeft += visibleColumn[i].renderWidth;
387
412
  }
388
- if (scrollLeft < bodySrcollLeft) {
413
+ if (scrollLeft < bodyScrollLeft) {
389
414
  return $xeTable.scrollTo(scrollLeft - offsetFixedLeft - 1);
390
415
  }
391
416
  return $xeTable.scrollTo((scrollLeft + cellWidth) - (bodyWidth - offsetFixedRight - 1));
@@ -1373,7 +1373,7 @@
1373
1373
  border-radius: var(--vxe-ui-border-radius);
1374
1374
  background-color: var(--vxe-ui-layout-background-color);
1375
1375
  border: 1px solid var(--vxe-ui-base-popup-border-color);
1376
- box-shadow: 0 1px 6px rgba(0, 0, 0, 0.2);
1376
+ box-shadow: var(--vxe-ui-base-popup-box-shadow);
1377
1377
  z-index: 10;
1378
1378
  }
1379
1379
  .vxe-table--filter-wrapper:not(.is--multiple) {
@@ -1753,10 +1753,7 @@
1753
1753
  resize: none;
1754
1754
  }
1755
1755
 
1756
- .vxe-body--column.col--height.col--active > .vxe-cell {
1757
- height: 100%;
1758
- }
1759
- .vxe-body--column.col--height > .vxe-cell > .vxe-textarea, .vxe-body--column.col--height > .vxe-cell > .vxe-default-textarea {
1756
+ .vxe-body--column.col--vertical-top.col--active > .vxe-cell {
1760
1757
  height: 100%;
1761
1758
  }
1762
1759
  .vxe-body--column .vxe-cell--label.is--textarea {
@@ -2045,10 +2042,10 @@
2045
2042
  /*单元格编辑状态*/
2046
2043
  /*可编辑*/
2047
2044
  }
2048
- .vxe-table--render-default .vxe-table--body-wrapper > table {
2045
+ .vxe-table--render-default .vxe-table--body-wrapper {
2049
2046
  background-color: var(--vxe-ui-layout-background-color);
2050
2047
  }
2051
- .vxe-table--render-default .vxe-table--footer-wrapper > table {
2048
+ .vxe-table--render-default .vxe-table--footer-wrapper {
2052
2049
  background-color: var(--vxe-ui-table-footer-background-color);
2053
2050
  }
2054
2051
  .vxe-table--render-default .vxe-table--header,
@@ -2277,6 +2274,48 @@
2277
2274
  .vxe-table--render-default.size--mini .vxe-cell .vxe-default-input[type=date]::-webkit-inner-spin-button {
2278
2275
  margin-top: 1px;
2279
2276
  }
2277
+ .vxe-table--render-default .vxe-table--scroll-x-virtual,
2278
+ .vxe-table--render-default .vxe-table--scroll-y-virtual {
2279
+ position: absolute;
2280
+ z-index: 7;
2281
+ overflow: hidden;
2282
+ }
2283
+ .vxe-table--render-default .vxe-table--scroll-x-handle,
2284
+ .vxe-table--render-default .vxe-table--scroll-y-handle {
2285
+ position: absolute;
2286
+ }
2287
+ .vxe-table--render-default .vxe-table--scroll-x-handle div,
2288
+ .vxe-table--render-default .vxe-table--scroll-y-handle div {
2289
+ display: block;
2290
+ }
2291
+ .vxe-table--render-default .vxe-table--scroll-x-virtual,
2292
+ .vxe-table--render-default .vxe-table--scroll-x-handle {
2293
+ width: 100%;
2294
+ left: 0;
2295
+ bottom: 0;
2296
+ }
2297
+ .vxe-table--render-default .vxe-table--scroll-x-handle {
2298
+ overflow-y: hidden;
2299
+ overflow-x: auto;
2300
+ height: 18px;
2301
+ }
2302
+ .vxe-table--render-default .vxe-table--scroll-y-virtual,
2303
+ .vxe-table--render-default .vxe-table--scroll-y-handle {
2304
+ height: 100%;
2305
+ right: 0;
2306
+ top: 0;
2307
+ }
2308
+ .vxe-table--render-default .vxe-table--scroll-y-handle {
2309
+ overflow-y: auto;
2310
+ overflow-x: hidden;
2311
+ width: 18px;
2312
+ }
2313
+ .vxe-table--render-default .vxe-table--scroll-x-space {
2314
+ height: 1px;
2315
+ }
2316
+ .vxe-table--render-default .vxe-table--scroll-y-space {
2317
+ width: 1px;
2318
+ }
2280
2319
  .vxe-table--render-default.is--padding .vxe-cell {
2281
2320
  padding-left: var(--vxe-ui-table-cell-padding-left);
2282
2321
  padding-right: var(--vxe-ui-table-cell-padding-right);
@@ -2375,6 +2414,7 @@
2375
2414
  background-color: inherit;
2376
2415
  transition: 0.3s box-shadow;
2377
2416
  outline: 0;
2417
+ background-color: var(--vxe-ui-layout-background-color);
2378
2418
  }
2379
2419
  .vxe-table--render-default .vxe-table--fixed-left-wrapper .vxe-table--body-wrapper,
2380
2420
  .vxe-table--render-default .vxe-table--fixed-right-wrapper .vxe-table--body-wrapper {