vxe-table 3.25.0-beta.1 → 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 (52) hide show
  1. package/es/index.css +1 -1
  2. package/es/index.min.css +1 -1
  3. package/es/style.css +1 -1
  4. package/es/style.min.css +1 -1
  5. package/es/table/src/methods.js +246 -44
  6. package/es/table/src/props.js +2 -1
  7. package/es/table/src/scrollbar.js +54 -0
  8. package/es/table/src/table.js +266 -64
  9. package/es/table/src/util.js +11 -2
  10. package/es/table/style.css +30 -0
  11. package/es/table/style.min.css +1 -1
  12. package/es/ui/index.js +1 -1
  13. package/es/ui/src/log.js +1 -1
  14. package/es/vxe-table/style.css +30 -0
  15. package/es/vxe-table/style.min.css +1 -1
  16. package/lib/index.css +1 -1
  17. package/lib/index.min.css +1 -1
  18. package/lib/index.umd.js +337 -66
  19. package/lib/index.umd.min.js +1 -1
  20. package/lib/style.css +1 -1
  21. package/lib/style.min.css +1 -1
  22. package/lib/table/src/methods.js +21 -11
  23. package/lib/table/src/methods.min.js +1 -1
  24. package/lib/table/src/props.js +2 -1
  25. package/lib/table/src/props.min.js +1 -1
  26. package/lib/table/src/scrollbar.js +63 -0
  27. package/lib/table/src/scrollbar.min.js +1 -0
  28. package/lib/table/src/table.js +249 -52
  29. package/lib/table/src/table.min.js +1 -1
  30. package/lib/table/src/util.js +11 -2
  31. package/lib/table/src/util.min.js +1 -1
  32. package/lib/table/style/style.css +30 -0
  33. package/lib/table/style/style.min.css +1 -1
  34. package/lib/ui/index.js +1 -1
  35. package/lib/ui/index.min.js +1 -1
  36. package/lib/ui/src/log.js +1 -1
  37. package/lib/ui/src/log.min.js +1 -1
  38. package/lib/vxe-table/style/style.css +30 -0
  39. package/lib/vxe-table/style/style.min.css +1 -1
  40. package/package.json +2 -2
  41. package/packages/table/src/methods.ts +258 -44
  42. package/packages/table/src/props.ts +2 -1
  43. package/packages/table/src/scrollbar.ts +57 -0
  44. package/packages/table/src/table.ts +300 -69
  45. package/packages/table/src/util.ts +15 -2
  46. package/styles/components/table.scss +65 -0
  47. /package/es/{iconfont.1791954189007.ttf → iconfont.1792035018941.ttf} +0 -0
  48. /package/es/{iconfont.1791954189007.woff → iconfont.1792035018941.woff} +0 -0
  49. /package/es/{iconfont.1791954189007.woff2 → iconfont.1792035018941.woff2} +0 -0
  50. /package/lib/{iconfont.1791954189007.ttf → iconfont.1792035018941.ttf} +0 -0
  51. /package/lib/{iconfont.1791954189007.woff → iconfont.1792035018941.woff} +0 -0
  52. /package/lib/{iconfont.1791954189007.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;
@@ -314,7 +315,7 @@ const tableProps = exports.tableProps = {
314
315
  virtualYConfig: Object,
315
316
  useScrollbar: {
316
317
  type: Boolean,
317
- default: () => getConfig().table.useScrollbar
318
+ default: () => (0, _utils.getDefaultConfig)(getConfig().table.useScrollbar, getConfig().useScrollbar)
318
319
  },
319
320
  // 滚动条配置项
320
321
  scrollbarConfig: Object,
@@ -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,useScrollbar:{type:Boolean,default:()=>getConfig().table.useScrollbar},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 === false || scrollbarXOpts.visible === 'hidden' ? 'hidden' : 'visible'}`, `sy--${scrollbarYOpts.visible === false || scrollbarYOpts.visible === 'hidden' ? 'hidden' : '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 === false || scrollbarXOpts.visible === 'hidden' ? 'hidden' : 'visible'}`, `sy--${scrollbarYOpts.visible === false || scrollbarYOpts.visible === 'hidden' ? 'hidden' : '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],
@@ -567,9 +644,9 @@ var _default = exports.default = {
567
644
  data() {
568
645
  const xID = _xeUtils.default.uniqueId();
569
646
  const reactData = (0, _util.createReactData)();
570
- return Object.assign(Object.assign(Object.assign(Object.assign({}, {}), {
647
+ return Object.assign(Object.assign({
571
648
  xID
572
- }), reactData), {
649
+ }, reactData), {
573
650
  // 私有属性
574
651
  reScrollFlag: 0,
575
652
  reLayoutFlag: 0,
@@ -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({}, {}), {
@@ -705,6 +783,46 @@ var _default = exports.default = {
705
783
  const scrollbarOpts = $xeTable.computeScrollbarOpts;
706
784
  return scrollbarOpts.y ? Object.assign({}, scrollbarOpts.y, scrollbarOpts.yConfig) : scrollbarOpts.yConfig || {};
707
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);
825
+ },
708
826
  computeScrollbarXToTop() {
709
827
  const $xeTable = this;
710
828
  const scrollbarXOpts = $xeTable.computeScrollbarXOpts;
@@ -715,6 +833,22 @@ var _default = exports.default = {
715
833
  const scrollbarYOpts = $xeTable.computeScrollbarYOpts;
716
834
  return scrollbarYOpts.position === 'left';
717
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
+ },
718
852
  computeScrollYThreshold() {
719
853
  const $xeTable = this;
720
854
  const virtualYOpts = $xeTable.computeVirtualYOpts;
@@ -762,6 +896,11 @@ var _default = exports.default = {
762
896
  }
763
897
  return cellOpts;
764
898
  },
899
+ computeCellHeitht() {
900
+ const $xeTable = this;
901
+ const cellOpts = $xeTable.computeCellOpts;
902
+ return cellOpts.height;
903
+ },
765
904
  computeHeaderCellOpts() {
766
905
  const $xeTable = this;
767
906
  const $xeGantt = $xeTable.$xeGantt;
@@ -1282,12 +1421,8 @@ var _default = exports.default = {
1282
1421
  },
1283
1422
  computeTableStyle() {
1284
1423
  const $xeTable = this;
1285
- const scrollDefaultConf = $xeTable.scrollDefaultConf;
1286
- const scrollbarOpts = $xeTable.computeScrollbarOpts;
1287
- const scrollbarXOpts = $xeTable.computeScrollbarXOpts;
1288
- const scrollbarYOpts = $xeTable.computeScrollbarYOpts;
1289
- const barWidth = (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarYOpts.width, scrollbarOpts.width), scrollDefaultConf.width);
1290
- const barHeight = (0, _utils.getDefaultConfig)((0, _utils.getDefaultConfig)(scrollbarXOpts.height, scrollbarOpts.height), scrollDefaultConf.height);
1424
+ const barWidth = $xeTable.computeScrollYWidth;
1425
+ const barHeight = $xeTable.computeScrollXHeight;
1291
1426
  const stys = {};
1292
1427
  if (barWidth || barHeight) {
1293
1428
  stys['--vxe-ui-table-view-scrollbar-width'] = (0, _dom.toCssUnit)(barWidth || barHeight);
@@ -1553,17 +1688,6 @@ var _default = exports.default = {
1553
1688
  },
1554
1689
  computeVxeLanguage() {
1555
1690
  return _ui.VxeUI.getLanguage();
1556
- },
1557
- computeScrollbarVisible() {
1558
- const $xeTable = this;
1559
- const scrollbarXOpts = $xeTable.computeScrollbarXOpts;
1560
- const scrollbarYOpts = $xeTable.computeScrollbarYOpts;
1561
- return `${scrollbarXOpts.visible}${scrollbarYOpts.visible}`;
1562
- },
1563
- computeCellConfHeitht() {
1564
- const $xeTable = this;
1565
- const cellOpts = $xeTable.computeCellOpts;
1566
- return cellOpts.height;
1567
1691
  }
1568
1692
  }),
1569
1693
  watch: {
@@ -1611,55 +1735,98 @@ var _default = exports.default = {
1611
1735
  this.$nextTick().then(() => this.refreshColumn());
1612
1736
  },
1613
1737
  computeSize() {
1614
- this.reLayoutFlag++;
1738
+ const $xeTable = this;
1739
+ $xeTable.reLayoutFlag++;
1615
1740
  },
1616
1741
  showHeader() {
1617
- this.reLayoutFlag++;
1742
+ const $xeTable = this;
1743
+ $xeTable.reLayoutFlag++;
1618
1744
  },
1619
1745
  showFooter() {
1620
- this.reLayoutFlag++;
1746
+ const $xeTable = this;
1747
+ $xeTable.reLayoutFlag++;
1621
1748
  },
1622
1749
  showHeaderOverflow() {
1623
- this.reLayoutFlag++;
1750
+ const $xeTable = this;
1751
+ $xeTable.reLayoutFlag++;
1624
1752
  },
1625
1753
  showOverflow() {
1626
1754
  const $xeTable = this;
1627
1755
  updateColumnAllOverflow($xeTable);
1628
- this.reLayoutFlag++;
1756
+ $xeTable.reLayoutFlag++;
1629
1757
  },
1630
1758
  showFooterOverflow() {
1631
- this.reLayoutFlag++;
1759
+ const $xeTable = this;
1760
+ $xeTable.reLayoutFlag++;
1632
1761
  },
1633
1762
  overflowX() {
1634
- this.reLayoutFlag++;
1763
+ const $xeTable = this;
1764
+ $xeTable.reLayoutFlag++;
1635
1765
  },
1636
1766
  overflowY() {
1637
- this.reLayoutFlag++;
1767
+ const $xeTable = this;
1768
+ $xeTable.reLayoutFlag++;
1638
1769
  },
1639
1770
  height() {
1640
- this.reLayoutFlag++;
1771
+ const $xeTable = this;
1772
+ $xeTable.reLayoutFlag++;
1641
1773
  },
1642
1774
  maxHeight() {
1643
- this.reLayoutFlag++;
1775
+ const $xeTable = this;
1776
+ $xeTable.reLayoutFlag++;
1777
+ },
1778
+ computeVxeLanguage() {
1779
+ const $xeTable = this;
1780
+ $xeTable.reLayoutFlag++;
1644
1781
  },
1645
1782
  computeScrollbarXToTop() {
1646
- this.reLayoutFlag++;
1783
+ const $xeTable = this;
1784
+ $xeTable.reScrollFlag++;
1785
+ $xeTable.reLayoutFlag++;
1647
1786
  },
1648
1787
  computeScrollbarYToLeft() {
1649
- this.reLayoutFlag++;
1788
+ const $xeTable = this;
1789
+ $xeTable.reScrollFlag++;
1790
+ $xeTable.reLayoutFlag++;
1650
1791
  },
1651
- computeVxeLanguage() {
1652
- 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++;
1801
+ },
1802
+ computeScrollXHeight() {
1803
+ const $xeTable = this;
1804
+ $xeTable.reScrollFlag++;
1805
+ $xeTable.reLayoutFlag++;
1653
1806
  },
1654
- computeScrollbarVisible() {
1655
- this.reLayoutFlag++;
1807
+ computeScrollYWidth() {
1808
+ const $xeTable = this;
1809
+ $xeTable.reScrollFlag++;
1810
+ $xeTable.reLayoutFlag++;
1656
1811
  },
1657
- computeCellConfHeitht() {
1658
- this.reLayoutFlag++;
1812
+ computeCellHeitht() {
1813
+ const $xeTable = this;
1814
+ $xeTable.reLayoutFlag++;
1659
1815
  },
1660
1816
  reLayoutFlag() {
1661
1817
  const $xeTable = this;
1662
- $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
+ });
1663
1830
  },
1664
1831
  footerData() {
1665
1832
  this.footFlag++;
@@ -1762,7 +1929,6 @@ var _default = exports.default = {
1762
1929
  const $xeTable = this;
1763
1930
  const props = $xeTable;
1764
1931
  const internalData = $xeTable;
1765
- $xeTable.scrollDefaultConf = Object.assign({}, getConfig().scrollbar);
1766
1932
  _xeUtils.default.assign(internalData, (0, _util.createInternalData)());
1767
1933
  handleKeyField($xeTable);
1768
1934
  const {
@@ -2123,6 +2289,13 @@ var _default = exports.default = {
2123
2289
  warnLog('vxe.error.reqProp', ['tooltip-config']);
2124
2290
  }
2125
2291
  $xeTable.$nextTick(() => {
2292
+ const {
2293
+ useScrollbar,
2294
+ autoResize
2295
+ } = props;
2296
+ const {
2297
+ elemStore
2298
+ } = internalData;
2126
2299
  // 使用已安装的组件,如果未安装则不渲染
2127
2300
  const VxeUILoadingComponent = _ui.VxeUI.getComponent('VxeLoading');
2128
2301
  const VxeUITooltipComponent = _ui.VxeUI.getComponent('VxeTooltip');
@@ -2170,15 +2343,34 @@ var _default = exports.default = {
2170
2343
  errLog('vxe.error.reqComp', ['vxe-tooltip']);
2171
2344
  }
2172
2345
  }
2173
- 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();
2174
2362
  const resizeObserver = globalResize.create(() => {
2175
- if (this.autoResize) {
2176
- this.layoutReFlag++;
2363
+ if (props.autoResize) {
2364
+ $xeTable.handleResizeEvent();
2177
2365
  }
2178
2366
  });
2179
- resizeObserver.observe(this.$el);
2180
- resizeObserver.observe(this.getParentElem());
2181
- this.$resize = resizeObserver;
2367
+ if (el) {
2368
+ resizeObserver.observe(el);
2369
+ }
2370
+ if (parentEl) {
2371
+ resizeObserver.observe(parentEl);
2372
+ }
2373
+ internalData.resizeObserver = resizeObserver;
2182
2374
  }
2183
2375
  });
2184
2376
  if (virtualYOpts.mode !== 'scroll') {
@@ -2214,6 +2406,8 @@ var _default = exports.default = {
2214
2406
  const reactData = $xeTable;
2215
2407
  const internalData = $xeTable;
2216
2408
  const {
2409
+ scrollObserver,
2410
+ resizeObserver,
2217
2411
  _sToTime
2218
2412
  } = internalData;
2219
2413
  if (_sToTime) {
@@ -2235,8 +2429,11 @@ var _default = exports.default = {
2235
2429
  if (tableViewportEl) {
2236
2430
  tableViewportEl.removeEventListener('wheel', $xeTable.triggerBodyWheelEvent);
2237
2431
  }
2238
- if (this.$resize) {
2239
- this.$resize.disconnect();
2432
+ if (scrollObserver) {
2433
+ scrollObserver.disconnect();
2434
+ }
2435
+ if (resizeObserver) {
2436
+ resizeObserver.disconnect();
2240
2437
  }
2241
2438
  $xeTable.closeTooltip();
2242
2439
  $xeTable.closeFilter();
@@ -2412,7 +2609,7 @@ var _default = exports.default = {
2412
2609
  })]), h('div', {
2413
2610
  key: 'tw',
2414
2611
  class: 'vxe-table--render-wrapper'
2415
- }, 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)]),
2416
2613
  /**
2417
2614
  * 空数据
2418
2615
  */