vxe-table 3.25.0-beta.0 → 3.25.0-beta.2

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 (58) hide show
  1. package/es/index.css +1 -1
  2. package/es/index.min.css +1 -1
  3. package/es/locale/lang/fr-FR.js +29 -29
  4. package/es/style.css +1 -1
  5. package/es/style.min.css +1 -1
  6. package/es/table/src/methods.js +248 -40
  7. package/es/table/src/props.js +5 -0
  8. package/es/table/src/scrollbar.js +54 -0
  9. package/es/table/src/table.js +292 -73
  10. package/es/table/src/util.js +11 -2
  11. package/es/table/style.css +30 -0
  12. package/es/table/style.min.css +1 -1
  13. package/es/ui/index.js +9 -11
  14. package/es/ui/src/log.js +1 -1
  15. package/es/vxe-table/style.css +30 -0
  16. package/es/vxe-table/style.min.css +1 -1
  17. package/lib/index.css +1 -1
  18. package/lib/index.min.css +1 -1
  19. package/lib/index.umd.js +366 -84
  20. package/lib/index.umd.min.js +1 -1
  21. package/lib/locale/lang/fr-FR.js +29 -29
  22. package/lib/locale/lang/fr-FR.min.js +1 -1
  23. package/lib/locale/lang/fr-FR.umd.js +29 -29
  24. package/lib/style.css +1 -1
  25. package/lib/style.min.css +1 -1
  26. package/lib/table/src/methods.js +21 -11
  27. package/lib/table/src/methods.min.js +1 -1
  28. package/lib/table/src/props.js +5 -0
  29. package/lib/table/src/props.min.js +1 -1
  30. package/lib/table/src/scrollbar.js +63 -0
  31. package/lib/table/src/scrollbar.min.js +1 -0
  32. package/lib/table/src/table.js +265 -62
  33. package/lib/table/src/table.min.js +1 -1
  34. package/lib/table/src/util.js +11 -2
  35. package/lib/table/src/util.min.js +1 -1
  36. package/lib/table/style/style.css +30 -0
  37. package/lib/table/style/style.min.css +1 -1
  38. package/lib/ui/index.js +9 -11
  39. package/lib/ui/index.min.js +1 -1
  40. package/lib/ui/src/log.js +1 -1
  41. package/lib/ui/src/log.min.js +1 -1
  42. package/lib/vxe-table/style/style.css +30 -0
  43. package/lib/vxe-table/style/style.min.css +1 -1
  44. package/package.json +2 -2
  45. package/packages/locale/lang/fr-FR.ts +903 -903
  46. package/packages/table/src/methods.ts +260 -40
  47. package/packages/table/src/props.ts +5 -0
  48. package/packages/table/src/scrollbar.ts +57 -0
  49. package/packages/table/src/table.ts +329 -75
  50. package/packages/table/src/util.ts +15 -2
  51. package/packages/ui/index.ts +8 -10
  52. package/styles/components/table.scss +65 -0
  53. /package/es/{iconfont.1791880417274.ttf → iconfont.1792035018941.ttf} +0 -0
  54. /package/es/{iconfont.1791880417274.woff → iconfont.1792035018941.woff} +0 -0
  55. /package/es/{iconfont.1791880417274.woff2 → iconfont.1792035018941.woff2} +0 -0
  56. /package/lib/{iconfont.1791880417274.ttf → iconfont.1792035018941.ttf} +0 -0
  57. /package/lib/{iconfont.1791880417274.woff → iconfont.1792035018941.woff} +0 -0
  58. /package/lib/{iconfont.1791880417274.woff2 → iconfont.1792035018941.woff2} +0 -0
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.tableProps = void 0;
7
7
  var _ui = require("../../ui");
8
+ var _utils = require("../../ui/src/utils");
8
9
  const {
9
10
  getConfig
10
11
  } = _ui.VxeUI;
@@ -312,6 +313,10 @@ const tableProps = exports.tableProps = {
312
313
  virtualXConfig: Object,
313
314
  // 纵向虚拟滚动配置项
314
315
  virtualYConfig: Object,
316
+ useScrollbar: {
317
+ type: Boolean,
318
+ default: () => (0, _utils.getDefaultConfig)(getConfig().table.useScrollbar, getConfig().useScrollbar)
319
+ },
315
320
  // 滚动条配置项
316
321
  scrollbarConfig: Object,
317
322
  // 撤销/恢复历史配置项
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.tableProps=void 0;var _ui=require("../../ui");let getConfig=_ui.VxeUI.getConfig,tableProps=exports.tableProps={id:[String,Function],data:Array,height:[Number,String],minHeight:{type:[Number,String],default:()=>null},maxHeight:[Number,String],resizable:{type:Boolean,default:()=>getConfig().table.resizable},stripe:{type:Boolean,default:()=>getConfig().table.stripe},border:{type:[Boolean,String],default:()=>getConfig().table.border},padding:{type:Boolean,default:null},round:{type:Boolean,default:()=>getConfig().table.round},size:{type:String,default:()=>getConfig().table.size||getConfig().size},fit:{type:Boolean,default:()=>getConfig().table.fit},loading:Boolean,align:{type:String,default:()=>getConfig().table.align},headerAlign:{type:String,default:()=>getConfig().table.headerAlign},footerAlign:{type:String,default:()=>getConfig().table.footerAlign},showHeader:{type:Boolean,default:()=>getConfig().table.showHeader},highlightCurrentRow:{type:Boolean,default:()=>getConfig().table.highlightCurrentRow},highlightHoverRow:{type:Boolean,default:()=>getConfig().table.highlightHoverRow},highlightCurrentColumn:{type:Boolean,default:()=>getConfig().table.highlightCurrentColumn},highlightHoverColumn:{type:Boolean,default:()=>getConfig().table.highlightHoverColumn},highlightCell:Boolean,showFooter:Boolean,footerData:Array,footerMethod:Function,rowClassName:[String,Function],cellClassName:[String,Function],headerRowClassName:[String,Function],headerCellClassName:[String,Function],footerRowClassName:[String,Function],footerCellClassName:[String,Function],cellStyle:[Object,Function],headerCellStyle:[Object,Function],footerCellStyle:[Object,Function],rowStyle:[Object,Function],headerRowStyle:[Object,Function],footerRowStyle:[Object,Function],showCustomHeader:{type:Boolean,default:()=>getConfig().table.showCustomHeader},mergeHeaderCells:Array,mergeCells:Array,mergeFooterCells:Array,mergeFooterItems:Array,spanMethod:Function,footerSpanMethod:Function,showOverflow:{type:[Boolean,String],default:()=>getConfig().table.showOverflow},showHeaderOverflow:{type:[Boolean,String],default:()=>getConfig().table.showHeaderOverflow},showFooterOverflow:{type:[Boolean,String],default:()=>getConfig().table.showFooterOverflow},columnKey:Boolean,rowKey:Boolean,rowId:{type:String,default:()=>getConfig().table.rowId},zIndex:Number,emptyText:{type:String,default:()=>getConfig().table.emptyText},keepSource:{type:Boolean,default:()=>getConfig().table.keepSource},autoResize:{type:Boolean,default:()=>getConfig().table.autoResize},syncResize:[Boolean,String,Number],resizeConfig:Object,columnConfig:Object,currentColumnConfig:Object,cellConfig:Object,headerCellConfig:Object,footerCellConfig:Object,rowConfig:Object,aggregateConfig:Object,aggregateAccuracyConfig:Object,rowGroupConfig:Object,currentRowConfig:Object,dragConfig:Object,rowDragConfig:Object,columnDragConfig:Object,resizableConfig:Object,seqConfig:Object,sortConfig:Object,filterConfig:Object,floatingFilterConfig:Object,radioConfig:Object,checkboxConfig:Object,tooltipConfig:Object,headerTooltipConfig:Object,footerTooltipConfig:Object,exportConfig:[Boolean,Object],importConfig:[Boolean,Object],printConfig:Object,expandConfig:Object,treeConfig:[Boolean,Object],menuConfig:[Boolean,Object],contextMenu:[Boolean,Object],mouseConfig:Object,areaConfig:Object,keyboardConfig:Object,clipConfig:Object,fnrConfig:Object,editConfig:[Boolean,Object],editDirtyConfig:Object,validConfig:Object,editRules:Object,loadingConfig:Object,emptyRender:[Boolean,Object],customConfig:Object,scrollX:Object,scrollY:Object,virtualXConfig:Object,virtualYConfig:Object,scrollbarConfig:Object,undoRedoHistoryConfig:Object,animat:{type:Boolean,default:()=>getConfig().table.animat},delayHover:{type:Number,default:()=>getConfig().table.delayHover},rendererConfig:Object,params:Object};
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.tableProps=void 0;var _ui=require("../../ui"),_utils=require("../../ui/src/utils");let getConfig=_ui.VxeUI.getConfig,tableProps=exports.tableProps={id:[String,Function],data:Array,height:[Number,String],minHeight:{type:[Number,String],default:()=>null},maxHeight:[Number,String],resizable:{type:Boolean,default:()=>getConfig().table.resizable},stripe:{type:Boolean,default:()=>getConfig().table.stripe},border:{type:[Boolean,String],default:()=>getConfig().table.border},padding:{type:Boolean,default:null},round:{type:Boolean,default:()=>getConfig().table.round},size:{type:String,default:()=>getConfig().table.size||getConfig().size},fit:{type:Boolean,default:()=>getConfig().table.fit},loading:Boolean,align:{type:String,default:()=>getConfig().table.align},headerAlign:{type:String,default:()=>getConfig().table.headerAlign},footerAlign:{type:String,default:()=>getConfig().table.footerAlign},showHeader:{type:Boolean,default:()=>getConfig().table.showHeader},highlightCurrentRow:{type:Boolean,default:()=>getConfig().table.highlightCurrentRow},highlightHoverRow:{type:Boolean,default:()=>getConfig().table.highlightHoverRow},highlightCurrentColumn:{type:Boolean,default:()=>getConfig().table.highlightCurrentColumn},highlightHoverColumn:{type:Boolean,default:()=>getConfig().table.highlightHoverColumn},highlightCell:Boolean,showFooter:Boolean,footerData:Array,footerMethod:Function,rowClassName:[String,Function],cellClassName:[String,Function],headerRowClassName:[String,Function],headerCellClassName:[String,Function],footerRowClassName:[String,Function],footerCellClassName:[String,Function],cellStyle:[Object,Function],headerCellStyle:[Object,Function],footerCellStyle:[Object,Function],rowStyle:[Object,Function],headerRowStyle:[Object,Function],footerRowStyle:[Object,Function],showCustomHeader:{type:Boolean,default:()=>getConfig().table.showCustomHeader},mergeHeaderCells:Array,mergeCells:Array,mergeFooterCells:Array,mergeFooterItems:Array,spanMethod:Function,footerSpanMethod:Function,showOverflow:{type:[Boolean,String],default:()=>getConfig().table.showOverflow},showHeaderOverflow:{type:[Boolean,String],default:()=>getConfig().table.showHeaderOverflow},showFooterOverflow:{type:[Boolean,String],default:()=>getConfig().table.showFooterOverflow},columnKey:Boolean,rowKey:Boolean,rowId:{type:String,default:()=>getConfig().table.rowId},zIndex:Number,emptyText:{type:String,default:()=>getConfig().table.emptyText},keepSource:{type:Boolean,default:()=>getConfig().table.keepSource},autoResize:{type:Boolean,default:()=>getConfig().table.autoResize},syncResize:[Boolean,String,Number],resizeConfig:Object,columnConfig:Object,currentColumnConfig:Object,cellConfig:Object,headerCellConfig:Object,footerCellConfig:Object,rowConfig:Object,aggregateConfig:Object,aggregateAccuracyConfig:Object,rowGroupConfig:Object,currentRowConfig:Object,dragConfig:Object,rowDragConfig:Object,columnDragConfig:Object,resizableConfig:Object,seqConfig:Object,sortConfig:Object,filterConfig:Object,floatingFilterConfig:Object,radioConfig:Object,checkboxConfig:Object,tooltipConfig:Object,headerTooltipConfig:Object,footerTooltipConfig:Object,exportConfig:[Boolean,Object],importConfig:[Boolean,Object],printConfig:Object,expandConfig:Object,treeConfig:[Boolean,Object],menuConfig:[Boolean,Object],contextMenu:[Boolean,Object],mouseConfig:Object,areaConfig:Object,keyboardConfig:Object,clipConfig:Object,fnrConfig:Object,editConfig:[Boolean,Object],editDirtyConfig:Object,validConfig:Object,editRules:Object,loadingConfig:Object,emptyRender:[Boolean,Object],customConfig:Object,scrollX:Object,scrollY:Object,virtualXConfig:Object,virtualYConfig:Object,useScrollbar:{type:Boolean,default:()=>(0,_utils.getDefaultConfig)(getConfig().table.useScrollbar,getConfig().useScrollbar)},scrollbarConfig:Object,undoRedoHistoryConfig:Object,animat:{type:Boolean,default:()=>getConfig().table.animat},delayHover:{type:Number,default:()=>getConfig().table.delayHover},rendererConfig:Object,params:Object};
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getScrollFromClick = getScrollFromClick;
7
+ exports.getScrollFromDrag = getScrollFromDrag;
8
+ exports.getThumbOffsetSize = getThumbOffsetSize;
9
+ exports.getThumbSize = getThumbSize;
10
+ /**
11
+ * 计算滚动条滑块的长度
12
+ */
13
+ function getThumbSize(viewportSize, contentSize, trackSize) {
14
+ if (contentSize <= viewportSize) {
15
+ return 0;
16
+ }
17
+ const ratio = viewportSize / contentSize;
18
+ const ideal = trackSize * ratio;
19
+ return Math.max(20, Math.min(ideal, trackSize));
20
+ }
21
+ /**
22
+ * 计算滚动条滑块的偏移位置
23
+ */
24
+ function getThumbOffsetSize(offsetSize, viewportSize, contentSize, trackSize, thumbSize) {
25
+ const maxScroll = contentSize - viewportSize;
26
+ if (maxScroll <= 0) {
27
+ return 0;
28
+ }
29
+ const maxThumbOffset = trackSize - thumbSize;
30
+ if (maxThumbOffset <= 0) {
31
+ return 0;
32
+ }
33
+ const clamped = Math.min(Math.max(offsetSize, 0), maxScroll);
34
+ const ratio = clamped / maxScroll;
35
+ return ratio * maxThumbOffset;
36
+ }
37
+ /**
38
+ * 根据点击轨道的位置,计算滑块的偏移位置
39
+ */
40
+ function getScrollFromClick(clickPosition, viewportSize, contentSize, trackSize, thumbSize) {
41
+ const maxThumbOffset = trackSize - thumbSize;
42
+ const maxScroll = contentSize - viewportSize;
43
+ if (maxScroll <= 0 || maxThumbOffset <= 0) {
44
+ return 0;
45
+ }
46
+ let thumbOffset = clickPosition - thumbSize / 2;
47
+ thumbOffset = Math.min(Math.max(thumbOffset, 0), maxThumbOffset);
48
+ const scrollOffset = thumbOffset / maxThumbOffset * maxScroll;
49
+ return scrollOffset;
50
+ }
51
+ /**
52
+ * 拖拽 thumb 时,根据鼠标位置计算滑块的偏移位置
53
+ */
54
+ function getScrollFromDrag(pointerPosition, dragOffset, viewportSize, contentSize, trackSize, thumbSize) {
55
+ const maxScroll = contentSize - viewportSize;
56
+ const maxThumbOffset = trackSize - thumbSize;
57
+ if (maxScroll <= 0 || maxThumbOffset <= 0) {
58
+ return 0;
59
+ }
60
+ let thumbOffset = pointerPosition - dragOffset;
61
+ thumbOffset = Math.min(Math.max(thumbOffset, 0), maxThumbOffset);
62
+ return thumbOffset / maxThumbOffset * maxScroll;
63
+ }
@@ -0,0 +1 @@
1
+ function getThumbSize(t,e,r){return e<=t?0:Math.max(20,Math.min(r*(t/e),r))}function getThumbOffsetSize(t,e,r,o,m){r-=e;return r<=0||(e=o-m)<=0?0:Math.min(Math.max(t,0),r)/r*e}function getScrollFromClick(t,e,r,o,m){o-=m,r-=e;return r<=0||o<=0?0:(e=t-m/2,(e=Math.min(Math.max(e,0),o))/o*r)}function getScrollFromDrag(t,e,r,o,m,i){o-=r,r=m-i;return o<=0||r<=0?0:(m=t-e,(m=Math.min(Math.max(m,0),r))/r*o)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.getScrollFromClick=getScrollFromClick,exports.getScrollFromDrag=getScrollFromDrag,exports.getThumbOffsetSize=getThumbOffsetSize,exports.getThumbSize=getThumbSize;
@@ -41,6 +41,7 @@ const {
41
41
  renderer,
42
42
  globalResize,
43
43
  globalEvents,
44
+ domUtils,
44
45
  globalMixins,
45
46
  renderEmptyElement
46
47
  } = _ui.VxeUI;
@@ -130,6 +131,8 @@ function renderViewFixed(h, $xeTable, fixedType) {
130
131
  const scrollbarOpts = $xeTable.computeScrollbarOpts;
131
132
  const scrollbarXOpts = $xeTable.computeScrollbarXOpts;
132
133
  const scrollbarYOpts = $xeTable.computeScrollbarYOpts;
134
+ const scrollXVisible = $xeTable.computeScrollXVisible;
135
+ const scrollYVisible = $xeTable.computeScrollYVisible;
133
136
  const {
134
137
  overscrollBehavior: overscrollXBehavior
135
138
  } = scrollbarXOpts;
@@ -142,7 +145,7 @@ function renderViewFixed(h, $xeTable, fixedType) {
142
145
  const osYBehavior = _xeUtils.default.eqNull(overscrollYBehavior) ? scrollbarOpts.overscrollBehavior : overscrollYBehavior;
143
146
  return h('div', {
144
147
  ref: isFixedLeft ? 'refLeftContainer' : 'refRightContainer',
145
- class: [`vxe-table--fixed-${fixedType}-wrapper`, `sx--${scrollbarXOpts.visible}`, `sy--${scrollbarYOpts.visible}`, {
148
+ class: [`vxe-table--fixed-${fixedType}-wrapper`, `sx--${scrollXVisible === false || scrollXVisible === 'hidden' ? 'hidden' : 'visible'}`, `sy--${scrollYVisible === false || scrollYVisible === 'hidden' ? 'hidden' : 'visible'}`, {
146
149
  [`x-ob--${osXBehavior}`]: osXBehavior,
147
150
  [`y-ob--${osYBehavior}`]: osYBehavior
148
151
  }]
@@ -434,6 +437,7 @@ function renderScrollX(h, $xeTable) {
434
437
  }
435
438
  function renderScrollY(h, $xeTable) {
436
439
  return h('div', {
440
+ key: 'vsy',
437
441
  ref: 'refScrollYVirtualElem',
438
442
  class: 'vxe-table--scroll-y-virtual'
439
443
  }, [h('div', {
@@ -474,6 +478,8 @@ function renderViewport(h, $xeTable) {
474
478
  const scrollbarOpts = $xeTable.computeScrollbarOpts;
475
479
  const scrollbarXOpts = $xeTable.computeScrollbarXOpts;
476
480
  const scrollbarYOpts = $xeTable.computeScrollbarYOpts;
481
+ const scrollXVisible = $xeTable.computeScrollXVisible;
482
+ const scrollYVisible = $xeTable.computeScrollYVisible;
477
483
  const {
478
484
  overscrollBehavior: overscrollXBehavior
479
485
  } = scrollbarXOpts;
@@ -487,13 +493,14 @@ function renderViewport(h, $xeTable) {
487
493
  const osXBehavior = _xeUtils.default.eqNull(overscrollXBehavior) ? scrollbarOpts.overscrollBehavior : overscrollXBehavior;
488
494
  const osYBehavior = _xeUtils.default.eqNull(overscrollYBehavior) ? scrollbarOpts.overscrollBehavior : overscrollYBehavior;
489
495
  return h('div', {
496
+ key: 'tvw',
490
497
  ref: 'refTableViewportElem',
491
498
  class: ['vxe-table--viewport-wrapper', {
492
499
  [`x-ob--${osXBehavior}`]: osXBehavior,
493
500
  [`y-ob--${osYBehavior}`]: osYBehavior
494
501
  }]
495
502
  }, [h('div', {
496
- class: ['vxe-table--main-wrapper', `sx--${scrollbarXOpts.visible}`, `sy--${scrollbarYOpts.visible}`]
503
+ class: ['vxe-table--main-wrapper', `sx--${scrollXVisible === false || scrollXVisible === 'hidden' ? 'hidden' : 'visible'}`, `sy--${scrollYVisible === false || scrollYVisible === 'hidden' ? 'hidden' : 'visible'}`]
497
504
  }, [
498
505
  /**
499
506
  * 表头
@@ -529,12 +536,82 @@ function renderViewport(h, $xeTable) {
529
536
  class: 'vxe-table--fixed-wrapper'
530
537
  }, [leftList && leftList.length && overflowX ? renderViewFixed(h, $xeTable, 'left') : renderEmptyElement($xeTable), rightList && rightList.length && overflowX ? renderViewFixed(h, $xeTable, 'right') : renderEmptyElement($xeTable)]), renderRowExpandedVNs(h, $xeTable)]);
531
538
  }
532
- function renderBody(h, $xeTable) {
539
+ function renderNativeBody(h, $xeTable) {
533
540
  const scrollbarYToLeft = $xeTable.computeScrollbarYToLeft;
534
541
  return h('div', {
542
+ key: 'lnb',
535
543
  class: 'vxe-table--layout-wrapper'
536
544
  }, scrollbarYToLeft ? [renderScrollY(h, $xeTable), renderViewport(h, $xeTable)] : [renderViewport(h, $xeTable), renderScrollY(h, $xeTable)]);
537
545
  }
546
+ function renderVirtualBody(h, $xeTable) {
547
+ const props = $xeTable;
548
+ const reactData = $xeTable;
549
+ const internalData = $xeTable;
550
+ const $xeGantt = $xeTable.$xeGantt;
551
+ const $xeGanttView = internalData.xeGanttView;
552
+ const {
553
+ useScrollbar
554
+ } = props;
555
+ const {
556
+ xThumbWidth,
557
+ yThumbHeight
558
+ } = reactData;
559
+ const scrollbarOpts = $xeTable.computeScrollbarOpts;
560
+ const scrollXAutoHide = $xeTable.computeScrollXAutoHide;
561
+ const scrollYAutoHide = $xeTable.computeScrollYAutoHide;
562
+ const scrollXVisible = $xeTable.computeScrollXVisible;
563
+ const scrollYVisible = $xeTable.computeScrollYVisible;
564
+ const scrollbarXToTop = $xeTable.computeScrollbarXToTop;
565
+ const scrollbarYToLeft = $xeTable.computeScrollbarYToLeft;
566
+ const scrollbarWrapperClss = $xeTable.computeScrollbarWrapperClss;
567
+ const hideXScroll = scrollXVisible === false || scrollXVisible === 'hidden';
568
+ const hideYScroll = scrollYVisible === false || scrollYVisible === 'hidden';
569
+ return h('div', {
570
+ key: 'lvb',
571
+ class: ['vxe-table--layout-wrapper', `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`, {
572
+ 'is--virtual-scrollbar': useScrollbar,
573
+ 'ov-padding': useScrollbar && scrollbarOpts.padding,
574
+ 'ov-x--auto-hide': useScrollbar && scrollXAutoHide,
575
+ 'ov-y--auto-hide': useScrollbar && scrollYAutoHide,
576
+ 'overflow-y': yThumbHeight,
577
+ 'overflow-x': xThumbWidth
578
+ }]
579
+ }, [renderViewport(h, $xeTable), h('div', {
580
+ class: scrollbarWrapperClss
581
+ }, [hideXScroll ? renderEmptyElement($xeTable) : h('div', {
582
+ ref: 'refTrackXElem',
583
+ class: 'vxe-scrollbar--track-x',
584
+ on: {
585
+ click: $xeTable.clickTrackXEvent
586
+ }
587
+ }, [h('div', {
588
+ ref: 'refThumbXElem',
589
+ class: 'vxe-scrollbar--thumb-x',
590
+ on: {
591
+ pointerdown: $xeTable.pointerdownThumbXEvent,
592
+ pointermove: $xeTable.pointermoveThumbXEvent,
593
+ pointerup: $xeTable.cleatPointerThumbEvent,
594
+ pointercancel: $xeTable.cleatPointerThumbEvent,
595
+ lostpointercapture: $xeTable.cleatPointerThumbEvent
596
+ }
597
+ })]), hideYScroll || $xeGantt && $xeGanttView && $xeGantt.reactData.showRightView && !scrollbarYToLeft ? renderEmptyElement($xeTable) : h('div', {
598
+ ref: 'refTrackYElem',
599
+ class: 'vxe-scrollbar--track-y',
600
+ on: {
601
+ click: $xeTable.clickTrackYEvent
602
+ }
603
+ }, [h('div', {
604
+ ref: 'refThumbYElem',
605
+ class: 'vxe-scrollbar--thumb-y',
606
+ on: {
607
+ pointerdown: $xeTable.pointerdownThumbYEvent,
608
+ pointermove: $xeTable.pointermoveThumbYEvent,
609
+ pointerup: $xeTable.cleatPointerThumbEvent,
610
+ pointercancel: $xeTable.cleatPointerThumbEvent,
611
+ lostpointercapture: $xeTable.cleatPointerThumbEvent
612
+ }
613
+ })])])]);
614
+ }
538
615
  var _default = exports.default = {
539
616
  name: 'VxeTable',
540
617
  mixins: [globalMixins.sizeMixin, _mixin.default, _mixin2.default, _mixin3.default, _mixin4.default, _mixin5.default, _mixin6.default, _mixin7.default],
@@ -577,7 +654,8 @@ var _default = exports.default = {
577
654
  kfFlag: 0,
578
655
  layoutReFlag: 0,
579
656
  mergeFooteCellFlag: 0,
580
- crossTableDragRowInfo: _store.crossTableDragRowGlobal
657
+ crossTableDragRowInfo: _store.crossTableDragRowGlobal,
658
+ scrollDefaultConf: Object.assign({}, getConfig().scrollbar)
581
659
  });
582
660
  },
583
661
  computed: Object.assign(Object.assign({}, {}), {
@@ -696,18 +774,54 @@ var _default = exports.default = {
696
774
  return Object.assign({}, getConfig().table.scrollbarConfig, props.scrollbarConfig);
697
775
  },
698
776
  computeScrollbarXOpts() {
699
- var _a;
700
777
  const $xeTable = this;
701
- const props = $xeTable;
702
778
  const scrollbarOpts = $xeTable.computeScrollbarOpts;
703
- return Object.assign({}, scrollbarOpts.x, ((_a = props.scrollbarConfig) === null || _a === void 0 ? void 0 : _a.x) || {});
779
+ return scrollbarOpts.x ? Object.assign({}, scrollbarOpts.x, scrollbarOpts.xConfig) : scrollbarOpts.xConfig || {};
704
780
  },
705
781
  computeScrollbarYOpts() {
706
- var _a;
707
782
  const $xeTable = this;
708
- const props = $xeTable;
709
783
  const scrollbarOpts = $xeTable.computeScrollbarOpts;
710
- return Object.assign({}, scrollbarOpts.y, ((_a = props.scrollbarConfig) === null || _a === void 0 ? void 0 : _a.y) || {});
784
+ return scrollbarOpts.y ? Object.assign({}, scrollbarOpts.y, scrollbarOpts.yConfig) : scrollbarOpts.yConfig || {};
785
+ },
786
+ computeScrollXHeight() {
787
+ const $xeTable = this;
788
+ const scrollDefaultConf = $xeTable.scrollDefaultConf;
789
+ const scrollbarOpts = $xeTable.computeScrollbarOpts;
790
+ const scrollbarXOpts = $xeTable.computeScrollbarXOpts;
791
+ return _xeUtils.default.toNumber((0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarXOpts.height, scrollbarOpts.height), scrollDefaultConf.height));
792
+ },
793
+ computeScrollYWidth() {
794
+ const $xeTable = this;
795
+ const scrollDefaultConf = $xeTable.scrollDefaultConf;
796
+ const scrollbarOpts = $xeTable.computeScrollbarOpts;
797
+ const scrollbarYOpts = $xeTable.computeScrollbarYOpts;
798
+ return _xeUtils.default.toNumber((0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarYOpts.width, scrollbarOpts.width), scrollDefaultConf.width));
799
+ },
800
+ computeScrollXVisible() {
801
+ const $xeTable = this;
802
+ const scrollbarOpts = $xeTable.computeScrollbarOpts;
803
+ const scrollbarXOpts = $xeTable.computeScrollbarXOpts;
804
+ return (0, _utils.getDefaultConfig)(scrollbarXOpts.visible, scrollbarOpts.visible);
805
+ },
806
+ computeScrollYVisible() {
807
+ const $xeTable = this;
808
+ const scrollbarOpts = $xeTable.computeScrollbarOpts;
809
+ const scrollbarYOpts = $xeTable.computeScrollbarYOpts;
810
+ return (0, _utils.getDefaultConfig)(scrollbarYOpts.visible, scrollbarOpts.visible);
811
+ },
812
+ computeScrollXAutoHide() {
813
+ const $xeTable = this;
814
+ const scrollDefaultConf = $xeTable.scrollDefaultConf;
815
+ const scrollbarOpts = $xeTable.computeScrollbarOpts;
816
+ const scrollbarXOpts = $xeTable.computeScrollbarXOpts;
817
+ return (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarXOpts.autoHide, scrollbarOpts.autoHide), scrollDefaultConf.autoHide);
818
+ },
819
+ computeScrollYAutoHide() {
820
+ const $xeTable = this;
821
+ const scrollDefaultConf = $xeTable.scrollDefaultConf;
822
+ const scrollbarOpts = $xeTable.computeScrollbarOpts;
823
+ const scrollbarYOpts = $xeTable.computeScrollbarYOpts;
824
+ return (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarYOpts.autoHide, scrollbarOpts.autoHide), scrollDefaultConf.autoHide);
711
825
  },
712
826
  computeScrollbarXToTop() {
713
827
  const $xeTable = this;
@@ -719,6 +833,22 @@ var _default = exports.default = {
719
833
  const scrollbarYOpts = $xeTable.computeScrollbarYOpts;
720
834
  return scrollbarYOpts.position === 'left';
721
835
  },
836
+ computeScrollbarWrapperClss() {
837
+ const $xeTable = this;
838
+ const reactData = $xeTable;
839
+ const {
840
+ yThumbHeight,
841
+ xThumbWidth
842
+ } = reactData;
843
+ const scrollbarXToTop = $xeTable.computeScrollbarXToTop;
844
+ const scrollbarYToLeft = $xeTable.computeScrollbarYToLeft;
845
+ const scrollXVisible = $xeTable.computeScrollXVisible;
846
+ const scrollYVisible = $xeTable.computeScrollYVisible;
847
+ return domUtils.buildClass(['vxe-scrollbar is--virtual', `ov-x--${scrollXVisible === false ? 'hidden' : 'visible'}`, `ov-y--${scrollYVisible === false ? 'hidden' : 'visible'}`, `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`], {
848
+ 'overflow-y': yThumbHeight,
849
+ 'overflow-x': xThumbWidth
850
+ });
851
+ },
722
852
  computeScrollYThreshold() {
723
853
  const $xeTable = this;
724
854
  const virtualYOpts = $xeTable.computeVirtualYOpts;
@@ -766,6 +896,11 @@ var _default = exports.default = {
766
896
  }
767
897
  return cellOpts;
768
898
  },
899
+ computeCellHeitht() {
900
+ const $xeTable = this;
901
+ const cellOpts = $xeTable.computeCellOpts;
902
+ return cellOpts.height;
903
+ },
769
904
  computeHeaderCellOpts() {
770
905
  const $xeTable = this;
771
906
  const $xeGantt = $xeTable.$xeGantt;
@@ -1286,19 +1421,16 @@ var _default = exports.default = {
1286
1421
  },
1287
1422
  computeTableStyle() {
1288
1423
  const $xeTable = this;
1289
- const scrollbarOpts = $xeTable.computeScrollbarOpts;
1290
- const {
1291
- width,
1292
- height
1293
- } = scrollbarOpts;
1294
- const tStys = {};
1295
- if (width) {
1296
- tStys['--vxe-ui-table-view-scrollbar-width'] = (0, _dom.toCssUnit)(width);
1297
- }
1298
- if (height) {
1299
- tStys['--vxe-ui-table-view-scrollbar-height'] = (0, _dom.toCssUnit)(height);
1424
+ const barWidth = $xeTable.computeScrollYWidth;
1425
+ const barHeight = $xeTable.computeScrollXHeight;
1426
+ const stys = {};
1427
+ if (barWidth || barHeight) {
1428
+ stys['--vxe-ui-table-view-scrollbar-width'] = (0, _dom.toCssUnit)(barWidth || barHeight);
1429
+ stys['--vxe-ui-scrollbar-y-width'] = (0, _dom.toCssUnit)(barWidth || barHeight);
1430
+ stys['--vxe-ui-table-view-scrollbar-height'] = (0, _dom.toCssUnit)(barHeight || barWidth);
1431
+ stys['--vxe-ui-scrollbar-x-height'] = (0, _dom.toCssUnit)(barHeight || barWidth);
1300
1432
  }
1301
- return tStys;
1433
+ return stys;
1302
1434
  },
1303
1435
  computeTableRowExpandedList() {
1304
1436
  const $xeTable = this;
@@ -1556,17 +1688,6 @@ var _default = exports.default = {
1556
1688
  },
1557
1689
  computeVxeLanguage() {
1558
1690
  return _ui.VxeUI.getLanguage();
1559
- },
1560
- computeScrollbarVisible() {
1561
- const $xeTable = this;
1562
- const scrollbarXOpts = $xeTable.computeScrollbarXOpts;
1563
- const scrollbarYOpts = $xeTable.computeScrollbarYOpts;
1564
- return `${scrollbarXOpts.visible}${scrollbarYOpts.visible}`;
1565
- },
1566
- computeCellConfHeitht() {
1567
- const $xeTable = this;
1568
- const cellOpts = $xeTable.computeCellOpts;
1569
- return cellOpts.height;
1570
1691
  }
1571
1692
  }),
1572
1693
  watch: {
@@ -1614,55 +1735,98 @@ var _default = exports.default = {
1614
1735
  this.$nextTick().then(() => this.refreshColumn());
1615
1736
  },
1616
1737
  computeSize() {
1617
- this.reLayoutFlag++;
1738
+ const $xeTable = this;
1739
+ $xeTable.reLayoutFlag++;
1618
1740
  },
1619
1741
  showHeader() {
1620
- this.reLayoutFlag++;
1742
+ const $xeTable = this;
1743
+ $xeTable.reLayoutFlag++;
1621
1744
  },
1622
1745
  showFooter() {
1623
- this.reLayoutFlag++;
1746
+ const $xeTable = this;
1747
+ $xeTable.reLayoutFlag++;
1624
1748
  },
1625
1749
  showHeaderOverflow() {
1626
- this.reLayoutFlag++;
1750
+ const $xeTable = this;
1751
+ $xeTable.reLayoutFlag++;
1627
1752
  },
1628
1753
  showOverflow() {
1629
1754
  const $xeTable = this;
1630
1755
  updateColumnAllOverflow($xeTable);
1631
- this.reLayoutFlag++;
1756
+ $xeTable.reLayoutFlag++;
1632
1757
  },
1633
1758
  showFooterOverflow() {
1634
- this.reLayoutFlag++;
1759
+ const $xeTable = this;
1760
+ $xeTable.reLayoutFlag++;
1635
1761
  },
1636
1762
  overflowX() {
1637
- this.reLayoutFlag++;
1763
+ const $xeTable = this;
1764
+ $xeTable.reLayoutFlag++;
1638
1765
  },
1639
1766
  overflowY() {
1640
- this.reLayoutFlag++;
1767
+ const $xeTable = this;
1768
+ $xeTable.reLayoutFlag++;
1641
1769
  },
1642
1770
  height() {
1643
- this.reLayoutFlag++;
1771
+ const $xeTable = this;
1772
+ $xeTable.reLayoutFlag++;
1644
1773
  },
1645
1774
  maxHeight() {
1646
- this.reLayoutFlag++;
1775
+ const $xeTable = this;
1776
+ $xeTable.reLayoutFlag++;
1777
+ },
1778
+ computeVxeLanguage() {
1779
+ const $xeTable = this;
1780
+ $xeTable.reLayoutFlag++;
1647
1781
  },
1648
1782
  computeScrollbarXToTop() {
1649
- this.reLayoutFlag++;
1783
+ const $xeTable = this;
1784
+ $xeTable.reScrollFlag++;
1785
+ $xeTable.reLayoutFlag++;
1650
1786
  },
1651
1787
  computeScrollbarYToLeft() {
1652
- this.reLayoutFlag++;
1788
+ const $xeTable = this;
1789
+ $xeTable.reScrollFlag++;
1790
+ $xeTable.reLayoutFlag++;
1653
1791
  },
1654
- computeVxeLanguage() {
1655
- this.reLayoutFlag++;
1792
+ computeScrollXVisible() {
1793
+ const $xeTable = this;
1794
+ $xeTable.reScrollFlag++;
1795
+ $xeTable.reLayoutFlag++;
1796
+ },
1797
+ computeScrollYVisible() {
1798
+ const $xeTable = this;
1799
+ $xeTable.reScrollFlag++;
1800
+ $xeTable.reLayoutFlag++;
1656
1801
  },
1657
- computeScrollbarVisible() {
1658
- this.reLayoutFlag++;
1802
+ computeScrollXHeight() {
1803
+ const $xeTable = this;
1804
+ $xeTable.reScrollFlag++;
1805
+ $xeTable.reLayoutFlag++;
1806
+ },
1807
+ computeScrollYWidth() {
1808
+ const $xeTable = this;
1809
+ $xeTable.reScrollFlag++;
1810
+ $xeTable.reLayoutFlag++;
1659
1811
  },
1660
- computeCellConfHeitht() {
1661
- this.reLayoutFlag++;
1812
+ computeCellHeitht() {
1813
+ const $xeTable = this;
1814
+ $xeTable.reLayoutFlag++;
1662
1815
  },
1663
1816
  reLayoutFlag() {
1664
1817
  const $xeTable = this;
1665
- $xeTable.$nextTick(() => $xeTable.recalculate(true));
1818
+ $xeTable.$nextTick(() => {
1819
+ $xeTable.recalculate(true);
1820
+ });
1821
+ },
1822
+ reScrollFlag() {
1823
+ const $xeTable = this;
1824
+ $xeTable.$nextTick(() => {
1825
+ $xeTable.updateScrollbar();
1826
+ $xeTable.$nextTick(() => {
1827
+ $xeTable.updateScrollbar();
1828
+ });
1829
+ });
1666
1830
  },
1667
1831
  footerData() {
1668
1832
  this.footFlag++;
@@ -1800,6 +1964,7 @@ var _default = exports.default = {
1800
1964
  const areaOpts = $xeTable.computeAreaOpts;
1801
1965
  const sortOpts = $xeTable.computeSortOpts;
1802
1966
  const filterOpts = $xeTable.computeFilterOpts;
1967
+ const scrollbarOpts = $xeTable.computeScrollbarOpts;
1803
1968
  const {
1804
1969
  groupFields
1805
1970
  } = aggregateOpts;
@@ -2050,6 +2215,12 @@ var _default = exports.default = {
2050
2215
  // if ((hasEnableConf(printConfig, printOpts) || hasEnableConf(importConfig, importOpts) || hasEnableConf(exportConfig, exportOpts)) && !$xeTable.exportData) {
2051
2216
  // errLog('vxe.error.reqModule', ['Export'])
2052
2217
  // }
2218
+ if (scrollbarOpts.x) {
2219
+ warnLog('vxe.error.delProp', ['scrollbar-config.x', 'scrollbar-config.xConfig']);
2220
+ }
2221
+ if (scrollbarOpts.y) {
2222
+ warnLog('vxe.error.delProp', ['scrollbar-config.y', 'scrollbar-config.yConfig']);
2223
+ }
2053
2224
  Object.assign(scrollYStore, {
2054
2225
  startIndex: 0,
2055
2226
  endIndex: 1,
@@ -2118,6 +2289,13 @@ var _default = exports.default = {
2118
2289
  warnLog('vxe.error.reqProp', ['tooltip-config']);
2119
2290
  }
2120
2291
  $xeTable.$nextTick(() => {
2292
+ const {
2293
+ useScrollbar,
2294
+ autoResize
2295
+ } = props;
2296
+ const {
2297
+ elemStore
2298
+ } = internalData;
2121
2299
  // 使用已安装的组件,如果未安装则不渲染
2122
2300
  const VxeUILoadingComponent = _ui.VxeUI.getComponent('VxeLoading');
2123
2301
  const VxeUITooltipComponent = _ui.VxeUI.getComponent('VxeTooltip');
@@ -2165,15 +2343,34 @@ var _default = exports.default = {
2165
2343
  errLog('vxe.error.reqComp', ['vxe-tooltip']);
2166
2344
  }
2167
2345
  }
2168
- if (this.autoResize) {
2346
+ const el = $xeTable.$refs.refElem;
2347
+ if (useScrollbar) {
2348
+ const viewInnerEl = (0, _util.getRefElem)(elemStore['main-body-table']);
2349
+ const scrollObserver = globalResize.create(() => {
2350
+ $xeTable.reScrollFlag++;
2351
+ });
2352
+ if (el) {
2353
+ scrollObserver.observe(el);
2354
+ }
2355
+ if (viewInnerEl) {
2356
+ scrollObserver.observe(viewInnerEl);
2357
+ }
2358
+ internalData.scrollObserver = scrollObserver;
2359
+ }
2360
+ if (autoResize) {
2361
+ const parentEl = $xeTable.getParentElem();
2169
2362
  const resizeObserver = globalResize.create(() => {
2170
- if (this.autoResize) {
2171
- this.layoutReFlag++;
2363
+ if (props.autoResize) {
2364
+ $xeTable.handleResizeEvent();
2172
2365
  }
2173
2366
  });
2174
- resizeObserver.observe(this.$el);
2175
- resizeObserver.observe(this.getParentElem());
2176
- this.$resize = resizeObserver;
2367
+ if (el) {
2368
+ resizeObserver.observe(el);
2369
+ }
2370
+ if (parentEl) {
2371
+ resizeObserver.observe(parentEl);
2372
+ }
2373
+ internalData.resizeObserver = resizeObserver;
2177
2374
  }
2178
2375
  });
2179
2376
  if (virtualYOpts.mode !== 'scroll') {
@@ -2209,6 +2406,8 @@ var _default = exports.default = {
2209
2406
  const reactData = $xeTable;
2210
2407
  const internalData = $xeTable;
2211
2408
  const {
2409
+ scrollObserver,
2410
+ resizeObserver,
2212
2411
  _sToTime
2213
2412
  } = internalData;
2214
2413
  if (_sToTime) {
@@ -2230,8 +2429,11 @@ var _default = exports.default = {
2230
2429
  if (tableViewportEl) {
2231
2430
  tableViewportEl.removeEventListener('wheel', $xeTable.triggerBodyWheelEvent);
2232
2431
  }
2233
- if (this.$resize) {
2234
- this.$resize.disconnect();
2432
+ if (scrollObserver) {
2433
+ scrollObserver.disconnect();
2434
+ }
2435
+ if (resizeObserver) {
2436
+ resizeObserver.disconnect();
2235
2437
  }
2236
2438
  $xeTable.closeTooltip();
2237
2439
  $xeTable.closeFilter();
@@ -2270,6 +2472,7 @@ var _default = exports.default = {
2270
2472
  const {
2271
2473
  loading,
2272
2474
  stripe,
2475
+ useScrollbar,
2273
2476
  showHeader,
2274
2477
  height,
2275
2478
  treeConfig,
@@ -2345,7 +2548,7 @@ var _default = exports.default = {
2345
2548
  }
2346
2549
  return h('div', {
2347
2550
  ref: 'refElem',
2348
- class: ['vxe-table', 'vxe-table--render-default', `tid_${xID}`, `border--${tableBorder}`, `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`, {
2551
+ class: ['vxe-table', 'vxe-table--render-default', `tid_${xID}`, `border--${tableBorder}`, useScrollbar ? 'is--virtual-scrollbar' : 'is--native-scrollbar', `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`, {
2349
2552
  [`size--${vSize}`]: vSize,
2350
2553
  [`valid-msg--${validOpts.msgMode}`]: !!editRules,
2351
2554
  'vxe-editable': !!editConfig,
@@ -2406,7 +2609,7 @@ var _default = exports.default = {
2406
2609
  })]), h('div', {
2407
2610
  key: 'tw',
2408
2611
  class: 'vxe-table--render-wrapper'
2409
- }, scrollbarXToTop ? [renderScrollX(h, $xeTable), renderBody(h, $xeTable)] : [renderBody(h, $xeTable), renderScrollX(h, $xeTable)]),
2612
+ }, useScrollbar ? [renderVirtualBody(h, $xeTable)] : scrollbarXToTop ? [renderScrollX(h, $xeTable), renderNativeBody(h, $xeTable)] : [renderNativeBody(h, $xeTable), renderScrollX(h, $xeTable)]),
2410
2613
  /**
2411
2614
  * 空数据
2412
2615
  */