vxe-table 3.11.4 → 3.11.6-beta.0

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 -0
  2. package/es/index.min.css +1 -0
  3. package/es/style.css +1 -1
  4. package/es/style.min.css +1 -1
  5. package/es/table/module/filter/mixin.js +23 -2
  6. package/es/table/module/filter/panel.js +3 -6
  7. package/es/table/src/body.js +55 -30
  8. package/es/table/src/footer.js +30 -22
  9. package/es/table/src/methods.js +253 -109
  10. package/es/table/src/table.js +11 -3
  11. package/es/table/style.css +48 -3
  12. package/es/table/style.min.css +1 -1
  13. package/es/ui/index.js +2 -2
  14. package/es/ui/src/log.js +1 -1
  15. package/es/vxe-table/style.css +48 -3
  16. package/es/vxe-table/style.min.css +1 -1
  17. package/lib/index.css +1 -0
  18. package/lib/index.min.css +1 -0
  19. package/lib/index.umd.js +436 -196
  20. package/lib/index.umd.min.js +1 -1
  21. package/lib/style.css +1 -1
  22. package/lib/style.min.css +1 -1
  23. package/lib/table/module/filter/mixin.js +25 -2
  24. package/lib/table/module/filter/mixin.min.js +1 -1
  25. package/lib/table/module/filter/panel.js +3 -7
  26. package/lib/table/module/filter/panel.min.js +1 -1
  27. package/lib/table/src/body.js +65 -32
  28. package/lib/table/src/body.min.js +1 -1
  29. package/lib/table/src/footer.js +32 -23
  30. package/lib/table/src/footer.min.js +1 -1
  31. package/lib/table/src/methods.js +293 -127
  32. package/lib/table/src/methods.min.js +1 -1
  33. package/lib/table/src/table.js +16 -2
  34. package/lib/table/src/table.min.js +1 -1
  35. package/lib/table/style/style.css +48 -3
  36. package/lib/table/style/style.min.css +1 -1
  37. package/lib/ui/index.js +2 -2
  38. package/lib/ui/index.min.js +1 -1
  39. package/lib/ui/src/log.js +1 -1
  40. package/lib/ui/src/log.min.js +1 -1
  41. package/lib/vxe-table/style/style.css +48 -3
  42. package/lib/vxe-table/style/style.min.css +1 -1
  43. package/package.json +2 -2
  44. package/packages/table/module/filter/mixin.ts +26 -2
  45. package/packages/table/module/filter/panel.ts +3 -6
  46. package/packages/table/src/body.ts +66 -27
  47. package/packages/table/src/footer.ts +33 -21
  48. package/packages/table/src/methods.ts +266 -112
  49. package/packages/table/src/table.ts +11 -3
  50. package/packages/ui/index.ts +1 -1
  51. package/packages/ui/src/dom.ts +2 -2
  52. package/styles/components/table.scss +38 -3
  53. /package/es/{iconfont.1732091003142.ttf → iconfont.1732505453169.ttf} +0 -0
  54. /package/es/{iconfont.1732091003142.woff → iconfont.1732505453169.woff} +0 -0
  55. /package/es/{iconfont.1732091003142.woff2 → iconfont.1732505453169.woff2} +0 -0
  56. /package/lib/{iconfont.1732091003142.ttf → iconfont.1732505453169.ttf} +0 -0
  57. /package/lib/{iconfont.1732091003142.woff → iconfont.1732505453169.woff} +0 -0
  58. /package/lib/{iconfont.1732091003142.woff2 → iconfont.1732505453169.woff2} +0 -0
@@ -13,7 +13,8 @@ var _vn = require("../../ui/src/vn");
13
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
14
  const {
15
15
  getI18n,
16
- renderer
16
+ renderer,
17
+ renderEmptyElement
17
18
  } = _ui.VxeUI;
18
19
  const renderType = 'body';
19
20
  // 滚动、拖动过程中不需要触发
@@ -75,6 +76,7 @@ function renderColumn(h, _vm, $xetable, seq, rowid, fixedType, rowLevel, row, ro
75
76
  columnKey,
76
77
  overflowX,
77
78
  sYOpts,
79
+ scrollXLoad,
78
80
  scrollYLoad,
79
81
  highlightCurrentRow,
80
82
  showOverflow: allColumnOverflow,
@@ -99,8 +101,13 @@ function renderColumn(h, _vm, $xetable, seq, rowid, fixedType, rowLevel, row, ro
99
101
  tooltipConfig,
100
102
  rowOpts,
101
103
  columnOpts,
104
+ mouseOpts,
105
+ areaOpts,
102
106
  validErrorMaps
103
107
  } = $xetable;
108
+ const {
109
+ selectCellToRow
110
+ } = areaOpts;
104
111
  const cellOpts = $xetable.computeCellOpts;
105
112
  const {
106
113
  type,
@@ -299,7 +306,9 @@ function renderColumn(h, _vm, $xetable, seq, rowid, fixedType, rowLevel, row, ro
299
306
  if (showValidTip && errorValidItem) {
300
307
  const errRule = errorValidItem.rule;
301
308
  const validSlot = slots ? slots.valid : null;
302
- const validParams = Object.assign(Object.assign({}, params), errorValidItem);
309
+ const validParams = Object.assign(Object.assign(Object.assign({}, params), errorValidItem), {
310
+ rule: errorValidItem
311
+ });
303
312
  tdVNs.push(h('div', {
304
313
  class: ['vxe-cell--valid-error-tip', (0, _utils.getClass)(validOpts.className, errorValidItem)],
305
314
  style: errRule && errRule.maxWidth ? {
@@ -315,11 +324,18 @@ function renderColumn(h, _vm, $xetable, seq, rowid, fixedType, rowLevel, row, ro
315
324
  let cellHeight = '';
316
325
  if (hasEllipsis && (scrollYRHeight || rowHeight)) {
317
326
  cellHeight = `${scrollYRHeight || rowHeight}px`;
318
- } else if (scrollYLoad) {
327
+ } else if (scrollXLoad || scrollYLoad) {
319
328
  if (!hasEllipsis) {
320
329
  cellHeight = `${rest.height || 24}px`;
321
330
  }
322
331
  }
332
+ if (mouseConfig && mouseOpts.area && selectCellToRow) {
333
+ if (!$columnIndex && selectCellToRow === true || selectCellToRow === column.field) {
334
+ tdVNs.push(h('div', {
335
+ class: 'vxe-cell--area-status'
336
+ }));
337
+ }
338
+ }
323
339
  return h('td', {
324
340
  class: ['vxe-body--column', column.id, {
325
341
  [`col--${cellAlign}`]: cellAlign,
@@ -587,6 +603,7 @@ var _default = exports.default = {
587
603
  elemStore[`${prefix}emptyBlock`] = null;
588
604
  },
589
605
  render(h) {
606
+ const $xeTable = this.$parent;
590
607
  const {
591
608
  _e,
592
609
  $parent: $xetable,
@@ -652,16 +669,19 @@ var _default = exports.default = {
652
669
  emptyContent = $xetable.emptyText || getI18n('vxe.table.emptyText');
653
670
  }
654
671
  }
672
+ const ons = {
673
+ scroll: this.scrollEvent
674
+ };
675
+ if (sYOpts.mode === 'wheel') {
676
+ ons.wheel = this.wheelEvent;
677
+ }
655
678
  return h('div', {
679
+ ref: 'refElem',
656
680
  class: ['vxe-table--body-wrapper', fixedType ? `fixed-${fixedType}--wrapper` : 'body--wrapper'],
657
681
  attrs: {
658
682
  xid: tId
659
683
  },
660
- on: Object.assign({
661
- scroll: this.scrollEvent
662
- }, scrollYLoad && sYOpts.mode === 'wheel' ? {
663
- wheel: this.wheelEvent
664
- } : null)
684
+ on: ons
665
685
  }, [fixedType ? _e() : h('div', {
666
686
  class: 'vxe-body--x-space',
667
687
  ref: 'xSpace'
@@ -726,12 +746,12 @@ var _default = exports.default = {
726
746
  class: 'vxe-table--cell-multi-area'
727
747
  }), h('span', {
728
748
  class: 'vxe-table--cell-active-area'
729
- })]) : null, !fixedType ? h('div', {
749
+ })]) : renderEmptyElement($xeTable), !fixedType ? h('div', {
730
750
  class: 'vxe-table--empty-block',
731
751
  ref: 'emptyBlock'
732
752
  }, [h('div', {
733
753
  class: 'vxe-table--empty-content'
734
- }, emptyContent)]) : null]);
754
+ }, emptyContent)]) : renderEmptyElement($xeTable)]);
735
755
  },
736
756
  methods: {
737
757
  /**
@@ -740,37 +760,52 @@ var _default = exports.default = {
740
760
  * 如果存在列固定右侧,同步更新滚动状态
741
761
  */
742
762
  scrollEvent(evnt) {
763
+ const $xeTable = this.$parent;
764
+ const tableInternalData = $xeTable;
743
765
  const {
744
- $el: scrollBodyElem,
745
- $parent: $xeTable,
746
766
  fixedType
747
767
  } = this;
748
768
  const {
749
- $refs,
750
769
  lastScrollTop,
751
- lastScrollLeft
752
- } = $xeTable;
770
+ lastScrollLeft,
771
+ inVirtualScroll,
772
+ inBodyScroll,
773
+ bodyScrollType,
774
+ inFooterScroll
775
+ } = tableInternalData;
776
+ if (inVirtualScroll) {
777
+ return;
778
+ }
779
+ if (inFooterScroll) {
780
+ return;
781
+ }
782
+ if (inBodyScroll) {
783
+ if (bodyScrollType !== fixedType) {
784
+ return;
785
+ }
786
+ }
753
787
  const {
754
788
  tableHeader,
755
789
  tableBody,
756
790
  leftBody,
757
791
  rightBody,
758
792
  tableFooter
759
- } = $refs;
793
+ } = $xeTable.$refs;
794
+ const scrollBodyElem = this.$el;
760
795
  const headerElem = tableHeader ? tableHeader.$el : null;
761
796
  const footerElem = tableFooter ? tableFooter.$el : null;
762
797
  const bodyElem = tableBody.$el;
763
798
  const leftElem = leftBody ? leftBody.$el : null;
764
799
  const rightElem = rightBody ? rightBody.$el : null;
800
+ const xHandleEl = $xeTable.$refs.refScrollXHandleElem;
801
+ const yHandleEl = $xeTable.$refs.refScrollYHandleElem;
765
802
  const scrollTop = scrollBodyElem.scrollTop;
766
803
  const scrollLeft = bodyElem.scrollLeft;
767
804
  const isRollX = scrollLeft !== lastScrollLeft;
768
805
  const isRollY = scrollTop !== lastScrollTop;
769
- const xHandleEl = $refs.refScrollXHandleElem;
770
- const yHandleEl = $refs.refScrollYHandleElem;
771
- if (yHandleEl) {
772
- yHandleEl.scrollTop = scrollTop;
773
- } else if (isRollY) {
806
+ tableInternalData.inBodyScroll = true;
807
+ tableInternalData.bodyScrollType = fixedType;
808
+ if (isRollY) {
774
809
  if (leftElem && fixedType === 'left') {
775
810
  (0, _dom.setScrollTop)(bodyElem, scrollTop);
776
811
  (0, _dom.setScrollTop)(rightElem, scrollTop);
@@ -781,21 +816,19 @@ var _default = exports.default = {
781
816
  (0, _dom.setScrollTop)(leftElem, scrollTop);
782
817
  (0, _dom.setScrollTop)(rightElem, scrollTop);
783
818
  }
784
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
785
- type: renderType,
786
- fixed: fixedType
787
- });
819
+ (0, _dom.setScrollTop)(yHandleEl, scrollTop);
820
+ $xeTable.triggerScrollYEvent(evnt);
788
821
  }
789
- if (xHandleEl) {
790
- xHandleEl.scrollLeft = scrollLeft;
791
- } else if (isRollX) {
822
+ if (isRollX) {
823
+ (0, _dom.setScrollLeft)(xHandleEl, scrollLeft);
792
824
  (0, _dom.setScrollLeft)(headerElem, scrollLeft);
793
825
  (0, _dom.setScrollLeft)(footerElem, scrollLeft);
794
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
795
- type: renderType,
796
- fixed: fixedType
797
- });
826
+ $xeTable.triggerScrollXEvent(evnt);
798
827
  }
828
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
829
+ type: renderType,
830
+ fixed: fixedType
831
+ });
799
832
  },
800
833
  handleWheel(evnt, isTopWheel, deltaTop, isRollX, isRollY) {
801
834
  const {
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_utils=require("../../ui/src/utils"),_util=require("./util"),_dom=require("../../ui/src/dom"),_vn=require("../../ui/src/vn");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{getI18n,renderer}=_ui.VxeUI,renderType="body";function isVMScrollProcess(e){return e._isResize||e.lastScrollTime&&Date.now()<e.lastScrollTime+e.delayHover}function renderLine(e,l,t,r){var{row:o,column:s}=r,{afterFullData:a,treeOpts:i,treeConfig:n,fullAllDataRowIdData:d}=t,{slots:s,treeNode:c}=s,d=d[(0,_util.getRowid)(t,o)];let p=0,u=0,h=[];return d&&(p=d.level,u=d._index,h=d.items),s&&s.line?t.callSlot(s.line,r,e):(d=t.eqRow(a[0],o),n&&c&&(i.showLine||i.line)?[e("div",{class:"vxe-tree--line-wrapper"},[e("div",{class:"vxe-tree--line",style:{height:`${d?1:(0,_util.calcTreeLine)(r,h,u)}px`,left:p*i.indent+(p?2-(0,_util.getOffsetSize)(t):0)+16+"px"}})])]:[])}function renderColumn(e,H,l,t,r,o,s,a,i,n,B,d,c,U,q){var{$listeners:p,fullAllDataRowIdData:N,afterFullData:u,tableData:V,height:h,columnKey:A,overflowX:g,sYOpts:v,scrollYLoad:F,highlightCurrentRow:W,showOverflow:P,isAllOverflow:j,align:z,currentColumn:K,cellClassName:X,cellStyle:w,mergeList:x,spanMethod:G,radioOpts:J,checkboxOpts:m,expandOpts:Q,treeOpts:Z,tooltipOpts:y,mouseConfig:ee,editConfig:f,editOpts:b,editRules:T,validOpts:S,editStore:_,tooltipConfig:le,rowOpts:te,columnOpts:re,validErrorMaps:C}=l,oe=l.computeCellOpts,{type:se,cellRender:ae,editRender:$,align:ie,showOverflow:O,className:ne,treeNode:de,slots:ce}=d,oe=oe.verticalAlign,_=_.actived,v=v.rHeight,R=te.height,E=$||ae,E=E?renderer.get(E.name):null,pe=E?E.tableCellClassName||E.cellClassName:"",ue=E?E.tableCellStyle||E.cellStyle:"";let I=y.showAll||y.enabled;var y=l.getColumnIndex(d),he=l.getVTColumnIndex(d),ge=(0,_utils.isEnableConf)($);let D=o?d.fixed!==o:d.fixed&&g;g=_xeUtils.default.isUndefined(O)||_xeUtils.default.isNull(O)?P:O,O="ellipsis"===g;let L="title"===g,k=!0===g||"tooltip"===g;g=L||k||O;let ve;var M={},N=N[r],ie=ie||(E?E.tableCellAlign:"")||z,E=C[r+":"+d.id],z=T&&S.showMessage&&("default"===S.message?h||1<V.length:"inline"===S.message),C={colid:d.id};let we=p["cell-mouseenter"],xe=p["cell-mouseleave"];T=$&&f&&"dblclick"===b.trigger;let Y={$table:l,$grid:l.$xegrid,isEdit:!1,seq:t,rowid:r,row:a,rowIndex:i,$rowIndex:n,_rowIndex:B,column:d,columnIndex:y,$columnIndex:c,_columnIndex:he,fixed:o,type:renderType,isHidden:D,level:s,visibleData:u,data:V,items:q};if((L||k||I||we||le)&&(M.mouseenter=e=>{isVMScrollProcess(l)||(L?(0,_dom.updateCellTitle)(e.currentTarget,d):(k||I)&&l.triggerBodyTooltipEvent(e,Y),we&&l.emitEvent("cell-mouseenter",Object.assign({cell:e.currentTarget},Y),e))}),(k||I||xe||le)&&(M.mouseleave=e=>{isVMScrollProcess(l)||((k||I)&&l.handleTargetLeaveEvent(e),xe&&l.emitEvent("cell-mouseleave",Object.assign({cell:e.currentTarget},Y),e))}),(m.range||ee)&&(M.mousedown=e=>{l.triggerCellMousedownEvent(e,Y)}),(te.isCurrent||W||p["cell-click"]||$&&f||"row"===Q.trigger||"cell"===Q.trigger||"row"===J.trigger||"radio"===d.type&&"cell"===J.trigger||"row"===m.trigger||"checkbox"===d.type&&"cell"===m.trigger||"row"===Z.trigger||d.treeNode&&"cell"===Z.trigger)&&(M.click=e=>{l.triggerCellClickEvent(e,Y)}),(T||p["cell-dblclick"])&&(M.dblclick=e=>{l.triggerCellDblclickEvent(e,Y)}),x.length){h=(0,_util.mergeBodyMethod)(x,B,he);if(h){var{rowspan:t,colspan:r}=h;if(!t||!r)return null;1<t&&(C.rowspan=t),1<r&&(C.colspan=r)}}else if(G){var{rowspan:i=1,colspan:n=1}=G(Y)||{};if(!i||!n)return null;1<i&&(C.rowspan=i),1<n&&(C.colspan=n)}!(D=D&&x&&(1<C.colspan||1<C.rowspan)?!1:D)&&f&&($||ae)&&(b.showStatus||b.showUpdateStatus)&&(ve=l.isUpdateByRow(a,d.field));y=[];D&&P&&j?y.push(e("div",{class:["vxe-cell",{"c--title":L,"c--tooltip":k,"c--ellipsis":O}],style:{maxHeight:g&&(v||R)?`${v||R}px`:""}})):(y.push(...renderLine(e,H,l,Y),e("div",{class:["vxe-cell",{"c--title":L,"c--tooltip":k,"c--ellipsis":O}],style:{maxHeight:g&&(v||R)?`${v||R}px`:""},attrs:{title:L?l.getCellLabel(a,d):null}},d.renderCell(e,Y))),z&&E&&(o=E.rule,s=ce?ce.valid:null,u=Object.assign(Object.assign({},Y),E),y.push(e("div",{class:["vxe-cell--valid-error-tip",(0,_utils.getClass)(S.className,E)],style:o&&o.maxWidth?{width:o.maxWidth+"px"}:null},[e("div",{class:"vxe-cell--valid-error-wrapper vxe-cell--valid-error-theme-"+(S.theme||"normal")},[s?l.callSlot(s,u,e):[e("span",{class:"vxe-cell--valid-error-msg"},E.content)]])]))));let me="";return g&&(v||R)?me=`${v||R}px`:F&&!g&&(me=`${N.height||24}px`),e("td",{class:["vxe-body--column",d.id,{["col--"+ie]:ie,["col--vertical-"+oe]:oe,["col--"+se]:se,"col--last":c===U.length-1,"col--tree-node":de,"col--edit":ge,"col--ellipsis":g,"fixed--hidden":D,"col--dirty":ve,"col--active":f&&ge&&_.row===a&&(_.column===d||"row"===b.mode),"col--valid-error":!!E,"col--current":K===d},(0,_utils.getClass)(pe,Y),(0,_utils.getClass)(ne,Y),(0,_utils.getClass)(X,Y)],key:A||re.useKey||te.useKey?d.id:c,attrs:C,style:Object.assign({height:me},_xeUtils.default.isFunction(ue)?ue(Y):ue,_xeUtils.default.isFunction(w)?w(Y):w),on:M},y)}function renderRows(w,x,m,y,f,b){let{stripe:T,rowKey:S,highlightHoverRow:_,rowClassName:C,rowStyle:$,editConfig:O,showOverflow:R,treeConfig:E,treeOpts:I,expandOpts:D,editOpts:L,treeExpandedMaps:k,scrollYLoad:M,rowExpandedMaps:Y,radioOpts:H,checkboxOpts:B,expandColumn:U,hasFixedColumn:q,fullAllDataRowIdData:N,rowOpts:V,pendingRowList:A,pendingRowMaps:F,columnOpts:W,isDragColMove:P}=m,j=I.children||I.childrenField,z=[];return f.forEach((t,r)=>{var e={};let o,s=m.getVTRowIndex(t),a=(o=m.getRowIndex(t),(V.isHover||_)&&(e.mouseenter=e=>{isVMScrollProcess(m)||m.triggerHoverEvent(e,{row:t,rowIndex:o})},e.mouseleave=()=>{isVMScrollProcess(m)||m.clearHoverRow()}),V.drag&&(e.dragstart=e=>{m.handleRowDragDragstartEvent(e)},e.dragover=e=>{m.handleRowDragDragoverEvent(e)},e.dragend=e=>{m.handleRowDragDragendEvent(e)}),(0,_util.getRowid)(m,t));var l=N[a];let i=l?l.level:0,n=l?l.seq:-1;var l={$table:m,seq:n,rowid:a,fixed:y,type:renderType,level:i,row:t,rowIndex:o,$rowIndex:r},d=U&&!!Y[a];let c=!1,p=[],u=!1;O&&(u=m.isInsertByRow(t)),!E||M||I.transform||(p=t[j],c=p&&p.length&&!!k[a]);var h,g=["vxe-body--row",E?"row--level-"+i:"",{"row--stripe":T&&(m.getVTRowIndex(t)+1)%2==0,"is--new":u,"is--expand-row":d,"is--expand-tree":c,"row--new":u&&(L.showStatus||L.showInsertStatus),"row--radio":H.highlight&&m.selectRadioRow===t,"row--checked":B.highlight&&m.isCheckedByCheckboxRow(t),"row--pending":A.length&&!!F[a]},C?_xeUtils.default.isFunction(C)?C(l):C:""],v=b.map((e,l)=>renderColumn(w,x,m,n,a,y,i,t,o,r,s,e,l,b,f));z.push(W.drag?w("transition-group",{props:{tag:"tr",name:"vxe-header--col-list"+(P?"":"-disabled")},class:g,attrs:{rowid:a},style:$?_xeUtils.default.isFunction($)?$(l):$:null,key:S||V.useKey||V.drag||E?a:r,nativeOn:e},v):w("tr",{class:g,attrs:{rowid:a},style:$?_xeUtils.default.isFunction($)?$(l):$:null,key:S||V.useKey||V.drag||E?a:r,on:e},v)),d&&({height:g,padding:l}=D,v={},d=(g&&(v.height=g+"px"),E&&(v.paddingLeft=i*I.indent+30+"px"),U).showOverflow,d=_xeUtils.default.isUndefined(d)||_xeUtils.default.isNull(d)?R:d,h={$table:m,seq:n,column:U,fixed:y,type:renderType,level:i,row:t,rowIndex:o,$rowIndex:r},z.push(w("tr",{class:["vxe-body--expanded-row",{"is--padding":l}],key:"expand_"+a,style:$?_xeUtils.default.isFunction($)?$(h):$:null,on:e},[w("td",{class:{"vxe-body--expanded-column":1,"fixed--hidden":y&&!q,"col--ellipsis":d},attrs:{colspan:b.length}},[w("div",{class:{"vxe-body--expanded-cell":1,"is--ellipsis":g},style:v},[U.renderData(w,h)])])]))),c&&z.push(...renderRows(w,x,m,y,p,b))}),z}var _default=exports.default={name:"VxeTableBody",props:{tableData:Array,tableColumn:Array,fixedColumn:Array,size:String,fixedType:String},data(){return{wheelTime:null,wheelYSize:0,wheelYInterval:0,wheelYTotal:0}},mounted(){var{$parent:e,$el:l,$refs:t,fixedType:r}=this,e=e.elemStore,r=`${r||"main"}-body-`;e[r+"wrapper"]=l,e[r+"table"]=t.table,e[r+"colgroup"]=t.colgroup,e[r+"list"]=t.tbody,e[r+"xSpace"]=t.xSpace,e[r+"ySpace"]=t.ySpace,e[r+"emptyBlock"]=t.emptyBlock},beforeDestroy(){clearTimeout(this.wheelTime)},destroyed(){var{$parent:e,fixedType:l}=this,e=e.elemStore,l=`${l||"main"}-body-`;e[l+"wrapper"]=null,e[l+"table"]=null,e[l+"colgroup"]=null,e[l+"list"]=null,e[l+"xSpace"]=null,e[l+"ySpace"]=null,e[l+"emptyBlock"]=null},render(t){let{_e:e,$parent:l,fixedColumn:r,fixedType:o}=this,{$scopedSlots:s,tId:a,tableData:i,tableColumn:n,visibleColumn:d,expandColumn:c,showOverflow:p,keyboardConfig:u,keyboardOpts:h,mergeList:g,spanMethod:v,scrollXLoad:w,scrollYLoad:x,isAllOverflow:m,emptyOpts:y,mouseConfig:f,mouseOpts:b,sYOpts:T,rowOpts:S,isDragRowMove:_}=l;o&&(n=c||!(w||x||p&&m)||g.length||v||u&&h.isMerge?d:r);let C;var $;return C=s.empty?s.empty.call(this,{$table:l},t):($=($=y.name?renderer.get(y.name):null)?$.renderTableEmpty||$.renderTableEmptyView||$.renderEmpty:null)?(0,_vn.getSlotVNs)($.call(this,t,y,{$table:l})):l.emptyText||getI18n("vxe.table.emptyText"),t("div",{class:["vxe-table--body-wrapper",o?`fixed-${o}--wrapper`:"body--wrapper"],attrs:{xid:a},on:Object.assign({scroll:this.scrollEvent},x&&"wheel"===T.mode?{wheel:this.wheelEvent}:null)},[o?e():t("div",{class:"vxe-body--x-space",ref:"xSpace"}),t("div",{class:"vxe-body--y-space",ref:"ySpace"}),t("table",{class:"vxe-table--body",attrs:{xid:a,cellspacing:0,cellpadding:0,border:0},ref:"table"},[t("colgroup",{ref:"colgroup"},n.map((e,l)=>t("col",{attrs:{name:e.id},key:l}))),S.drag?t("transition-group",{props:{tag:"tbody",name:"vxe-body--row-list"+(_?"":"-disabled")}},renderRows(t,this,l,o,i,n)):t("tbody",{ref:"tbody"},renderRows(t,this,l,o,i,n))]),t("div",{class:"vxe-table--checkbox-range"}),f&&b.area?t("div",{class:"vxe-table--cell-area"},[t("span",{class:"vxe-table--cell-main-area"},b.extension?[t("span",{class:"vxe-table--cell-main-area-btn",on:{mousedown(e){l.triggerCellExtendMousedownEvent(e,{$table:l,fixed:o,type:renderType})}}})]:null),t("span",{class:"vxe-table--cell-copy-area"}),t("span",{class:"vxe-table--cell-extend-area"}),t("span",{class:"vxe-table--cell-multi-area"}),t("span",{class:"vxe-table--cell-active-area"})]):null,o?null:t("div",{class:"vxe-table--empty-block",ref:"emptyBlock"},[t("div",{class:"vxe-table--empty-content"},C)])])},methods:{scrollEvent(e){var{$el:l,$parent:t,fixedType:r}=this,{$refs:o,lastScrollTop:s,lastScrollLeft:a}=t,{tableHeader:i,tableBody:n,leftBody:d,rightBody:c,tableFooter:p}=o,i=i?i.$el:null,p=p?p.$el:null,n=n.$el,d=d?d.$el:null,c=c?c.$el:null,l=l.scrollTop,u=n.scrollLeft,a=u!==a,s=l!==s,h=o.refScrollXHandleElem,o=o.refScrollYHandleElem;o?o.scrollTop=l:s&&(d&&"left"===r?((0,_dom.setScrollTop)(n,l),(0,_dom.setScrollTop)(c,l)):c&&"right"===r?((0,_dom.setScrollTop)(n,l),(0,_dom.setScrollTop)(d,l)):((0,_dom.setScrollTop)(d,l),(0,_dom.setScrollTop)(c,l)),t.handleScrollEvent(e,s,a,l,u,{type:renderType,fixed:r})),h?h.scrollLeft=u:a&&((0,_dom.setScrollLeft)(i,u),(0,_dom.setScrollLeft)(p,u),t.handleScrollEvent(e,s,a,l,u,{type:renderType,fixed:r}))},handleWheel(i,n,e,d,c){let p=this.$parent;var{$refs:l,elemStore:t,scrollYLoad:r,scrollXLoad:o}=p,{tableBody:l,leftBody:s,rightBody:a}=l;let u=l.$el,h=s?s.$el:null,g=a?a.$el:null;l=this.isPrevWheelTop===n?Math.max(0,this.wheelYSize-this.wheelYTotal):0,s=t["main-body-ySpace"],a=t["main-body-xSpace"];let v=(r&&s?s:u).clientHeight,w=(o&&a?a:u).clientWidth,x=(this.isPrevWheelTop=n,this.wheelYSize=Math.abs(n?e-l:e+l),this.wheelYInterval=0,this.wheelYTotal=0,clearTimeout(this.wheelTime),()=>{let{fixedType:e,wheelYTotal:l,wheelYSize:t,wheelYInterval:r}=this;var o,s,a;l<t&&(t<(l+=r=Math.max(5,Math.floor(1.5*r)))&&(r-=l-t),{scrollTop:a,clientHeight:o,scrollHeight:s}=u,a=a+r*(n?-1:1),u.scrollTop=a,h&&(h.scrollTop=a),g&&(g.scrollTop=a),(n?a<s-o:0<=a)&&(this.wheelTime=setTimeout(x,10)),this.wheelYTotal=l,this.wheelYInterval=r,p.emitEvent("scroll",{type:renderType,fixed:e,scrollTop:u.scrollTop,scrollLeft:u.scrollLeft,scrollHeight:u.scrollHeight,scrollWidth:u.scrollWidth,bodyHeight:v,bodyWidth:w,isX:d,isY:c},i))});x()},wheelEvent(e){var{deltaY:l,deltaX:t}=e,{$el:r,$parent:o}=this,{$refs:s,highlightHoverRow:a,scrollYLoad:i,lastScrollTop:n,lastScrollLeft:d,rowOpts:c}=o,s=s.tableBody,s=s.$el,p=l<0;(p?r.scrollTop<=0:r.scrollTop>=r.scrollHeight-r.clientHeight)||(r=r.scrollTop+l,t=(s=s.scrollLeft+t)!==d,(d=r!==n)&&(e.preventDefault(),o.lastScrollTop=r,o.lastScrollLeft=s,o.lastScrollTime=Date.now(),(c.isHover||a)&&o.clearHoverRow(),this.handleWheel(e,p,l,t,d),i)&&o.triggerScrollYEvent(e))}}};
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_utils=require("../../ui/src/utils"),_util=require("./util"),_dom=require("../../ui/src/dom"),_vn=require("../../ui/src/vn");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let{getI18n,renderer,renderEmptyElement}=_ui.VxeUI,renderType="body";function isVMScrollProcess(e){return e._isResize||e.lastScrollTime&&Date.now()<e.lastScrollTime+e.delayHover}function renderLine(e,l,t,r){var{row:o,column:s}=r,{afterFullData:a,treeOpts:i,treeConfig:n,fullAllDataRowIdData:d}=t,{slots:s,treeNode:c}=s,d=d[(0,_util.getRowid)(t,o)];let p=0,u=0,g=[];return d&&(p=d.level,u=d._index,g=d.items),s&&s.line?t.callSlot(s.line,r,e):(d=t.eqRow(a[0],o),n&&c&&(i.showLine||i.line)?[e("div",{class:"vxe-tree--line-wrapper"},[e("div",{class:"vxe-tree--line",style:{height:`${d?1:(0,_util.calcTreeLine)(r,g,u)}px`,left:p*i.indent+(p?2-(0,_util.getOffsetSize)(t):0)+16+"px"}})])]:[])}function renderColumn(e,H,l,t,r,o,s,a,i,n,B,d,c,U,q){var{$listeners:p,fullAllDataRowIdData:V,afterFullData:u,tableData:F,height:g,columnKey:N,overflowX:h,sYOpts:v,scrollXLoad:A,scrollYLoad:W,highlightCurrentRow:P,showOverflow:X,isAllOverflow:j,align:z,currentColumn:K,cellClassName:G,cellStyle:m,mergeList:w,spanMethod:J,radioOpts:Q,checkboxOpts:x,expandOpts:Z,treeOpts:ee,tooltipOpts:y,mouseConfig:le,editConfig:f,editOpts:b,editRules:S,validOpts:T,editStore:te,tooltipConfig:re,rowOpts:oe,columnOpts:se,mouseOpts:ae,areaOpts:_,validErrorMaps:C}=l,_=_.selectCellToRow,ie=l.computeCellOpts,{type:ne,cellRender:de,editRender:$,align:ce,showOverflow:O,className:pe,treeNode:ue,slots:ge}=d,ie=ie.verticalAlign,te=te.actived,v=v.rHeight,E=oe.height,R=$||de,R=R?renderer.get(R.name):null,he=R?R.tableCellClassName||R.cellClassName:"",ve=R?R.tableCellStyle||R.cellStyle:"";let I=y.showAll||y.enabled;var y=l.getColumnIndex(d),me=l.getVTColumnIndex(d),we=(0,_utils.isEnableConf)($);let D=o?d.fixed!==o:d.fixed&&h;h=_xeUtils.default.isUndefined(O)||_xeUtils.default.isNull(O)?X:O,O="ellipsis"===h;let L="title"===h,k=!0===h||"tooltip"===h;h=L||k||O;let xe;var Y={},V=V[r],ce=ce||(R?R.tableCellAlign:"")||z,R=C[r+":"+d.id],z=S&&T.showMessage&&("default"===T.message?g||1<F.length:"inline"===T.message),C={colid:d.id};let ye=p["cell-mouseenter"],fe=p["cell-mouseleave"];S=$&&f&&"dblclick"===b.trigger;let M={$table:l,$grid:l.$xegrid,isEdit:!1,seq:t,rowid:r,row:a,rowIndex:i,$rowIndex:n,_rowIndex:B,column:d,columnIndex:y,$columnIndex:c,_columnIndex:me,fixed:o,type:renderType,isHidden:D,level:s,visibleData:u,data:F,items:q};if((L||k||I||ye||re)&&(Y.mouseenter=e=>{isVMScrollProcess(l)||(L?(0,_dom.updateCellTitle)(e.currentTarget,d):(k||I)&&l.triggerBodyTooltipEvent(e,M),ye&&l.emitEvent("cell-mouseenter",Object.assign({cell:e.currentTarget},M),e))}),(k||I||fe||re)&&(Y.mouseleave=e=>{isVMScrollProcess(l)||((k||I)&&l.handleTargetLeaveEvent(e),fe&&l.emitEvent("cell-mouseleave",Object.assign({cell:e.currentTarget},M),e))}),(x.range||le)&&(Y.mousedown=e=>{l.triggerCellMousedownEvent(e,M)}),(oe.isCurrent||P||p["cell-click"]||$&&f||"row"===Z.trigger||"cell"===Z.trigger||"row"===Q.trigger||"radio"===d.type&&"cell"===Q.trigger||"row"===x.trigger||"checkbox"===d.type&&"cell"===x.trigger||"row"===ee.trigger||d.treeNode&&"cell"===ee.trigger)&&(Y.click=e=>{l.triggerCellClickEvent(e,M)}),(S||p["cell-dblclick"])&&(Y.dblclick=e=>{l.triggerCellDblclickEvent(e,M)}),w.length){g=(0,_util.mergeBodyMethod)(w,B,me);if(g){var{rowspan:t,colspan:r}=g;if(!t||!r)return null;1<t&&(C.rowspan=t),1<r&&(C.colspan=r)}}else if(J){var{rowspan:i=1,colspan:n=1}=J(M)||{};if(!i||!n)return null;1<i&&(C.rowspan=i),1<n&&(C.colspan=n)}!(D=D&&w&&(1<C.colspan||1<C.rowspan)?!1:D)&&f&&($||de)&&(b.showStatus||b.showUpdateStatus)&&(xe=l.isUpdateByRow(a,d.field));y=[];D&&X&&j?y.push(e("div",{class:["vxe-cell",{"c--title":L,"c--tooltip":k,"c--ellipsis":O}],style:{maxHeight:h&&(v||E)?`${v||E}px`:""}})):(y.push(...renderLine(e,H,l,M),e("div",{class:["vxe-cell",{"c--title":L,"c--tooltip":k,"c--ellipsis":O}],style:{maxHeight:h&&(v||E)?`${v||E}px`:""},attrs:{title:L?l.getCellLabel(a,d):null}},d.renderCell(e,M))),z&&R&&(o=R.rule,s=ge?ge.valid:null,u=Object.assign(Object.assign(Object.assign({},M),R),{rule:R}),y.push(e("div",{class:["vxe-cell--valid-error-tip",(0,_utils.getClass)(T.className,R)],style:o&&o.maxWidth?{width:o.maxWidth+"px"}:null},[e("div",{class:"vxe-cell--valid-error-wrapper vxe-cell--valid-error-theme-"+(T.theme||"normal")},[s?l.callSlot(s,u,e):[e("span",{class:"vxe-cell--valid-error-msg"},R.content)]])]))));let be="";return h&&(v||E)?be=`${v||E}px`:!A&&!W||h||(be=`${V.height||24}px`),le&&ae.area&&_&&((c||!0!==_)&&_!==d.field||y.push(e("div",{class:"vxe-cell--area-status"}))),e("td",{class:["vxe-body--column",d.id,{["col--"+ce]:ce,["col--vertical-"+ie]:ie,["col--"+ne]:ne,"col--last":c===U.length-1,"col--tree-node":ue,"col--edit":we,"col--ellipsis":h,"fixed--hidden":D,"col--dirty":xe,"col--active":f&&we&&te.row===a&&(te.column===d||"row"===b.mode),"col--valid-error":!!R,"col--current":K===d},(0,_utils.getClass)(he,M),(0,_utils.getClass)(pe,M),(0,_utils.getClass)(G,M)],key:N||se.useKey||oe.useKey?d.id:c,attrs:C,style:Object.assign({height:be},_xeUtils.default.isFunction(ve)?ve(M):ve,_xeUtils.default.isFunction(m)?m(M):m),on:Y},y)}function renderRows(m,w,x,y,f,b){let{stripe:S,rowKey:T,highlightHoverRow:_,rowClassName:C,rowStyle:$,editConfig:O,showOverflow:E,treeConfig:R,treeOpts:I,expandOpts:D,editOpts:L,treeExpandedMaps:k,scrollYLoad:Y,rowExpandedMaps:M,radioOpts:H,checkboxOpts:B,expandColumn:U,hasFixedColumn:q,fullAllDataRowIdData:V,rowOpts:F,pendingRowList:N,pendingRowMaps:A,columnOpts:W,isDragColMove:P}=x,X=I.children||I.childrenField,j=[];return f.forEach((t,r)=>{var e={};let o,s=x.getVTRowIndex(t),a=(o=x.getRowIndex(t),(F.isHover||_)&&(e.mouseenter=e=>{isVMScrollProcess(x)||x.triggerHoverEvent(e,{row:t,rowIndex:o})},e.mouseleave=()=>{isVMScrollProcess(x)||x.clearHoverRow()}),F.drag&&(e.dragstart=e=>{x.handleRowDragDragstartEvent(e)},e.dragover=e=>{x.handleRowDragDragoverEvent(e)},e.dragend=e=>{x.handleRowDragDragendEvent(e)}),(0,_util.getRowid)(x,t));var l=V[a];let i=l?l.level:0,n=l?l.seq:-1;var l={$table:x,seq:n,rowid:a,fixed:y,type:renderType,level:i,row:t,rowIndex:o,$rowIndex:r},d=U&&!!M[a];let c=!1,p=[],u=!1;O&&(u=x.isInsertByRow(t)),!R||Y||I.transform||(p=t[X],c=p&&p.length&&!!k[a]);var g,h=["vxe-body--row",R?"row--level-"+i:"",{"row--stripe":S&&(x.getVTRowIndex(t)+1)%2==0,"is--new":u,"is--expand-row":d,"is--expand-tree":c,"row--new":u&&(L.showStatus||L.showInsertStatus),"row--radio":H.highlight&&x.selectRadioRow===t,"row--checked":B.highlight&&x.isCheckedByCheckboxRow(t),"row--pending":N.length&&!!A[a]},C?_xeUtils.default.isFunction(C)?C(l):C:""],v=b.map((e,l)=>renderColumn(m,w,x,n,a,y,i,t,o,r,s,e,l,b,f));j.push(W.drag?m("transition-group",{props:{tag:"tr",name:"vxe-header--col-list"+(P?"":"-disabled")},class:h,attrs:{rowid:a},style:$?_xeUtils.default.isFunction($)?$(l):$:null,key:T||F.useKey||F.drag||R?a:r,nativeOn:e},v):m("tr",{class:h,attrs:{rowid:a},style:$?_xeUtils.default.isFunction($)?$(l):$:null,key:T||F.useKey||F.drag||R?a:r,on:e},v)),d&&({height:h,padding:l}=D,v={},d=(h&&(v.height=h+"px"),R&&(v.paddingLeft=i*I.indent+30+"px"),U).showOverflow,d=_xeUtils.default.isUndefined(d)||_xeUtils.default.isNull(d)?E:d,g={$table:x,seq:n,column:U,fixed:y,type:renderType,level:i,row:t,rowIndex:o,$rowIndex:r},j.push(m("tr",{class:["vxe-body--expanded-row",{"is--padding":l}],key:"expand_"+a,style:$?_xeUtils.default.isFunction($)?$(g):$:null,on:e},[m("td",{class:{"vxe-body--expanded-column":1,"fixed--hidden":y&&!q,"col--ellipsis":d},attrs:{colspan:b.length}},[m("div",{class:{"vxe-body--expanded-cell":1,"is--ellipsis":h},style:v},[U.renderData(m,g)])])]))),c&&j.push(...renderRows(m,w,x,y,p,b))}),j}var _default=exports.default={name:"VxeTableBody",props:{tableData:Array,tableColumn:Array,fixedColumn:Array,size:String,fixedType:String},data(){return{wheelTime:null,wheelYSize:0,wheelYInterval:0,wheelYTotal:0}},mounted(){var{$parent:e,$el:l,$refs:t,fixedType:r}=this,e=e.elemStore,r=`${r||"main"}-body-`;e[r+"wrapper"]=l,e[r+"table"]=t.table,e[r+"colgroup"]=t.colgroup,e[r+"list"]=t.tbody,e[r+"xSpace"]=t.xSpace,e[r+"ySpace"]=t.ySpace,e[r+"emptyBlock"]=t.emptyBlock},beforeDestroy(){clearTimeout(this.wheelTime)},destroyed(){var{$parent:e,fixedType:l}=this,e=e.elemStore,l=`${l||"main"}-body-`;e[l+"wrapper"]=null,e[l+"table"]=null,e[l+"colgroup"]=null,e[l+"list"]=null,e[l+"xSpace"]=null,e[l+"ySpace"]=null,e[l+"emptyBlock"]=null},render(t){var e=this.$parent;let{_e:l,$parent:r,fixedColumn:o,fixedType:s}=this,{$scopedSlots:a,tId:i,tableData:n,tableColumn:d,visibleColumn:c,expandColumn:p,showOverflow:u,keyboardConfig:g,keyboardOpts:h,mergeList:v,spanMethod:m,scrollXLoad:w,scrollYLoad:x,isAllOverflow:y,emptyOpts:f,mouseConfig:b,mouseOpts:S,sYOpts:T,rowOpts:_,isDragRowMove:C}=r;s&&(d=p||!(w||x||u&&y)||v.length||m||g&&h.isMerge?c:o);let $;$=a.empty?a.empty.call(this,{$table:r},t):(O=(O=f.name?renderer.get(f.name):null)?O.renderTableEmpty||O.renderTableEmptyView||O.renderEmpty:null)?(0,_vn.getSlotVNs)(O.call(this,t,f,{$table:r})):r.emptyText||getI18n("vxe.table.emptyText");var O={scroll:this.scrollEvent};return"wheel"===T.mode&&(O.wheel=this.wheelEvent),t("div",{ref:"refElem",class:["vxe-table--body-wrapper",s?`fixed-${s}--wrapper`:"body--wrapper"],attrs:{xid:i},on:O},[s?l():t("div",{class:"vxe-body--x-space",ref:"xSpace"}),t("div",{class:"vxe-body--y-space",ref:"ySpace"}),t("table",{class:"vxe-table--body",attrs:{xid:i,cellspacing:0,cellpadding:0,border:0},ref:"table"},[t("colgroup",{ref:"colgroup"},d.map((e,l)=>t("col",{attrs:{name:e.id},key:l}))),_.drag?t("transition-group",{props:{tag:"tbody",name:"vxe-body--row-list"+(C?"":"-disabled")}},renderRows(t,this,r,s,n,d)):t("tbody",{ref:"tbody"},renderRows(t,this,r,s,n,d))]),t("div",{class:"vxe-table--checkbox-range"}),b&&S.area?t("div",{class:"vxe-table--cell-area"},[t("span",{class:"vxe-table--cell-main-area"},S.extension?[t("span",{class:"vxe-table--cell-main-area-btn",on:{mousedown(e){r.triggerCellExtendMousedownEvent(e,{$table:r,fixed:s,type:renderType})}}})]:null),t("span",{class:"vxe-table--cell-copy-area"}),t("span",{class:"vxe-table--cell-extend-area"}),t("span",{class:"vxe-table--cell-multi-area"}),t("span",{class:"vxe-table--cell-active-area"})]):renderEmptyElement(e),s?renderEmptyElement(e):t("div",{class:"vxe-table--empty-block",ref:"emptyBlock"},[t("div",{class:"vxe-table--empty-content"},$)])])},methods:{scrollEvent(e){var l,t,r,o,s,a=this.$parent,i=a,n=this.fixedType,{lastScrollTop:d,lastScrollLeft:c,inVirtualScroll:p,inBodyScroll:u,bodyScrollType:g,inFooterScroll:h}=i;p||h||u&&g!==n||({tableHeader:p,tableBody:h,leftBody:u,rightBody:g,tableFooter:l}=a.$refs,o=this.$el,p=p?p.$el:null,l=l?l.$el:null,h=h.$el,u=u?u.$el:null,g=g?g.$el:null,t=a.$refs.refScrollXHandleElem,r=a.$refs.refScrollYHandleElem,o=o.scrollTop,c=(s=h.scrollLeft)!==c,d=o!==d,i.inBodyScroll=!0,i.bodyScrollType=n,d&&(u&&"left"===n?((0,_dom.setScrollTop)(h,o),(0,_dom.setScrollTop)(g,o)):g&&"right"===n?((0,_dom.setScrollTop)(h,o),(0,_dom.setScrollTop)(u,o)):((0,_dom.setScrollTop)(u,o),(0,_dom.setScrollTop)(g,o)),(0,_dom.setScrollTop)(r,o),a.triggerScrollYEvent(e)),c&&((0,_dom.setScrollLeft)(t,s),(0,_dom.setScrollLeft)(p,s),(0,_dom.setScrollLeft)(l,s),a.triggerScrollXEvent(e)),a.handleScrollEvent(e,d,c,o,s,{type:renderType,fixed:n}))},handleWheel(i,n,e,d,c){let p=this.$parent;var{$refs:l,elemStore:t,scrollYLoad:r,scrollXLoad:o}=p,{tableBody:l,leftBody:s,rightBody:a}=l;let u=l.$el,g=s?s.$el:null,h=a?a.$el:null;l=this.isPrevWheelTop===n?Math.max(0,this.wheelYSize-this.wheelYTotal):0,s=t["main-body-ySpace"],a=t["main-body-xSpace"];let v=(r&&s?s:u).clientHeight,m=(o&&a?a:u).clientWidth,w=(this.isPrevWheelTop=n,this.wheelYSize=Math.abs(n?e-l:e+l),this.wheelYInterval=0,this.wheelYTotal=0,clearTimeout(this.wheelTime),()=>{let{fixedType:e,wheelYTotal:l,wheelYSize:t,wheelYInterval:r}=this;var o,s,a;l<t&&(t<(l+=r=Math.max(5,Math.floor(1.5*r)))&&(r-=l-t),{scrollTop:a,clientHeight:o,scrollHeight:s}=u,a=a+r*(n?-1:1),u.scrollTop=a,g&&(g.scrollTop=a),h&&(h.scrollTop=a),(n?a<s-o:0<=a)&&(this.wheelTime=setTimeout(w,10)),this.wheelYTotal=l,this.wheelYInterval=r,p.emitEvent("scroll",{type:renderType,fixed:e,scrollTop:u.scrollTop,scrollLeft:u.scrollLeft,scrollHeight:u.scrollHeight,scrollWidth:u.scrollWidth,bodyHeight:v,bodyWidth:m,isX:d,isY:c},i))});w()},wheelEvent(e){var{deltaY:l,deltaX:t}=e,{$el:r,$parent:o}=this,{$refs:s,highlightHoverRow:a,scrollYLoad:i,lastScrollTop:n,lastScrollLeft:d,rowOpts:c}=o,s=s.tableBody,s=s.$el,p=l<0;(p?r.scrollTop<=0:r.scrollTop>=r.scrollHeight-r.clientHeight)||(r=r.scrollTop+l,t=(s=s.scrollLeft+t)!==d,(d=r!==n)&&(e.preventDefault(),o.lastScrollTop=r,o.lastScrollLeft=s,o.lastScrollTime=Date.now(),(c.isHover||a)&&o.clearHoverRow(),this.handleWheel(e,p,l,t,d),i)&&o.triggerScrollYEvent(e))}}};
@@ -307,14 +307,16 @@ var _default = exports.default = {
307
307
  tableColumn = visibleColumn;
308
308
  }
309
309
  }
310
+ const ons = {};
311
+ if (!fixedType) {
312
+ ons.scroll = this.scrollEvent;
313
+ }
310
314
  return h('div', {
311
315
  class: ['vxe-table--footer-wrapper', fixedType ? `fixed-${fixedType}--wrapper` : 'body--wrapper'],
312
316
  attrs: {
313
317
  xid: tId
314
318
  },
315
- on: {
316
- scroll: this.scrollEvent
317
- }
319
+ on: ons
318
320
  }, [fixedType ? _e() : h('div', {
319
321
  class: 'vxe-body--x-space',
320
322
  ref: 'xSpace'
@@ -359,36 +361,43 @@ var _default = exports.default = {
359
361
  * 如果存在列固定右侧,同步更新滚动状态
360
362
  */
361
363
  scrollEvent(evnt) {
364
+ const $xeTable = this.$parent;
365
+ const tableInternalData = $xeTable;
366
+ const {
367
+ inVirtualScroll,
368
+ inBodyScroll
369
+ } = tableInternalData;
370
+ if (inVirtualScroll) {
371
+ return;
372
+ }
373
+ if (inBodyScroll) {
374
+ return;
375
+ }
362
376
  const {
363
- $parent: $xeTable,
364
377
  fixedType
365
378
  } = this;
366
- const {
367
- $refs
368
- } = $xeTable;
369
379
  const {
370
380
  tableHeader,
371
381
  tableBody,
372
382
  tableFooter
373
- } = $refs;
383
+ } = $xeTable.$refs;
374
384
  const headerElem = tableHeader ? tableHeader.$el : null;
375
385
  const footerElem = tableFooter ? tableFooter.$el : null;
376
386
  const bodyElem = tableBody.$el;
377
- const scrollLeft = footerElem ? footerElem.scrollLeft : 0;
378
- const xHandleEl = $refs.refScrollXHandleElem;
379
- if (xHandleEl) {
380
- xHandleEl.scrollLeft = scrollLeft;
381
- } else {
382
- const isRollX = true;
383
- const isRollY = false;
384
- const scrollTop = bodyElem.scrollTop;
385
- (0, _dom.setScrollLeft)(headerElem, scrollLeft);
386
- (0, _dom.setScrollLeft)(bodyElem, scrollLeft);
387
- $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
388
- type: renderType,
389
- fixed: fixedType
390
- });
391
- }
387
+ const xHandleEl = $xeTable.$refs.refScrollXHandleElem;
388
+ const scrollLeft = footerElem.scrollLeft;
389
+ const isRollX = true;
390
+ const isRollY = false;
391
+ const scrollTop = bodyElem.scrollTop;
392
+ tableInternalData.inFooterScroll = true;
393
+ (0, _dom.setScrollLeft)(xHandleEl, scrollLeft);
394
+ (0, _dom.setScrollLeft)(headerElem, scrollLeft);
395
+ (0, _dom.setScrollLeft)(bodyElem, scrollLeft);
396
+ $xeTable.triggerScrollXEvent(evnt);
397
+ $xeTable.handleScrollEvent(evnt, isRollY, isRollX, scrollTop, scrollLeft, {
398
+ type: renderType,
399
+ fixed: fixedType
400
+ });
392
401
  }
393
402
  }
394
403
  };
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_utils=require("../../ui/src/utils"),_dom=require("../../ui/src/dom");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let renderType="footer",renderer=_ui.VxeUI.renderer;function mergeFooterMethod(l,t,r){for(let e=0;e<l.length;e++){var{row:o,col:n,rowspan:a,colspan:i}=l[e];if(-1<n&&-1<o&&a&&i){if(o===t&&n===r)return{rowspan:a,colspan:i};if(o<=t&&t<o+a&&n<=r&&r<n+i)return{rowspan:0,colspan:0}}}}function renderRows(v,e,b,w,y,_,h){let{$parent:T,fixedType:$}=e,{$listeners:C,footerCellClassName:F,footerCellStyle:S,footerAlign:I,mergeFooterList:U,footerSpanMethod:k,align:L,scrollXLoad:O,columnKey:R,columnOpts:A,showFooterOverflow:E,currentColumn:M,overflowX:q,scrollbarWidth:l,tooltipOpts:D}=T;return b.map((l,e)=>{var{type:t,showFooterOverflow:r,footerAlign:o,align:n,footerClassName:a,editRender:i,cellRender:s}=l,i=i||s,s=i?renderer.get(i.name):null;let d=D.showAll||D.enabled;i=l.children&&l.children.length,i=$?l.fixed!==$&&!i:l.fixed&&q,r=_xeUtils.default.isUndefined(r)||_xeUtils.default.isNull(r)?E:r,o=o||(s?s.tableFooterCellAlign:"")||I||n||(s?s.tableCellAlign:"")||L;let c="ellipsis"===r,u="title"===r,f=!0===r||"tooltip"===r,p=u||f||c;var n={colid:l.id},s={},r=T.getColumnIndex(l),x=T.getVTColumnIndex(l),m=x;let g={$table:T,$grid:T.xegrid,row:y,_rowIndex:h,$rowIndex:_,column:l,columnIndex:r,$columnIndex:e,_columnIndex:x,itemIndex:m,items:y,fixed:$,type:renderType,data:w};if(O&&!p&&(c=p=!0),(u||f||d)&&(s.mouseenter=e=>{u?(0,_dom.updateCellTitle)(e.currentTarget,l):(f||d)&&T.triggerFooterTooltipEvent(e,g)}),(f||d)&&(s.mouseleave=e=>{(f||d)&&T.handleTargetLeaveEvent(e)}),C["footer-cell-click"]&&(s.click=e=>{T.emitEvent("footer-cell-click",Object.assign({cell:e.currentTarget},g),e)}),C["footer-cell-dblclick"]&&(s.dblclick=e=>{T.emitEvent("footer-cell-dblclick",Object.assign({cell:e.currentTarget},g),e)}),U.length){r=mergeFooterMethod(U,h,x);if(r){var{rowspan:m,colspan:x}=r;if(!m||!x)return null;1<m&&(n.rowspan=m),1<x&&(n.colspan=x)}}else if(k){var{rowspan:r=1,colspan:m=1}=k(g)||{};if(!r||!m)return null;1<r&&(n.rowspan=r),1<m&&(n.colspan=m)}return v("td",{class:["vxe-footer--column",l.id,{["col--"+o]:o,["col--"+t]:t,"col--last":e===b.length-1,"fixed--hidden":i,"col--ellipsis":p,"col--current":M===l},(0,_utils.getClass)(a,g),(0,_utils.getClass)(F,g)],attrs:n,style:S?_xeUtils.default.isFunction(S)?S(g):S:null,on:s,key:R||A.useKey||A.drag?l.id:e},[v("div",{class:["vxe-cell",{"c--title":u,"c--tooltip":f,"c--ellipsis":c}]},l.renderFooter(v,g))])}).concat(l?[v("td",{key:"gr"+_,class:"vxe-footer--gutter col--gutter"})]:[])}function renderHeads(o,n,a){let{$parent:i,fixedType:s,tableColumn:d}=n,{footerRowClassName:c,footerRowStyle:u,isDragColMove:f}=i,p=i.columnOpts;return a.map((e,l)=>{var t=l,r={$table:i,row:e,_rowIndex:t,$rowIndex:l,fixed:s,type:renderType};return p.drag?o("transition-group",{props:{tag:"tr",name:"vxe-header--col-list"+(f?"":"-disabled"),class:["vxe-footer--row",c?_xeUtils.default.isFunction(c)?c(r):c:""],style:u?_xeUtils.default.isFunction(u)?u(r):u:null}},renderRows(o,n,d,a,e,l,t)):o("tr",{class:["vxe-footer--row",c?_xeUtils.default.isFunction(c)?c(r):c:""],style:u?_xeUtils.default.isFunction(u)?u(r):u:null},renderRows(o,n,d,a,e,l,t))})}var _default=exports.default={name:"VxeTableFooter",props:{footerTableData:Array,tableColumn:Array,fixedColumn:Array,fixedType:String,size:String},mounted(){var{$parent:e,$el:l,$refs:t,fixedType:r}=this,e=e.elemStore,r=`${r||"main"}-footer-`;e[r+"wrapper"]=l,e[r+"table"]=t.table,e[r+"colgroup"]=t.colgroup,e[r+"list"]=t.tfoot,e[r+"xSpace"]=t.xSpace},destroyed(){var{$parent:e,fixedType:l}=this,e=e.elemStore,l=`${l||"main"}-footer-`;e[l+"wrapper"]=null,e[l+"table"]=null,e[l+"colgroup"]=null,e[l+"list"]=null,e[l+"xSpace"]=null},render(t){let{_e:e,$parent:l,fixedType:r,fixedColumn:o,tableColumn:n,footerTableData:a}=this;var{tId:i,mergeFooterList:s,footerSpanMethod:d,scrollXLoad:c,showFooterOverflow:u,scrollbarWidth:f,visibleColumn:p,expandColumn:x}=l;return r&&(n=x||!c&&!u||s.length&&d?p:o),t("div",{class:["vxe-table--footer-wrapper",r?`fixed-${r}--wrapper`:"body--wrapper"],attrs:{xid:i},on:{scroll:this.scrollEvent}},[r?e():t("div",{class:"vxe-body--x-space",ref:"xSpace"}),t("table",{class:"vxe-table--footer",attrs:{xid:i,cellspacing:0,cellpadding:0,border:0},ref:"table"},[t("colgroup",{ref:"colgroup"},n.map((e,l)=>t("col",{attrs:{name:e.id},key:l})).concat(f?[t("col",{attrs:{name:"col_gutter"}})]:[])),t("tfoot",{ref:"tfoot"},renderHeads(t,this,a))])])},methods:{scrollEvent(e){var{$parent:l,fixedType:t}=this,r=l.$refs,{tableHeader:o,tableBody:n,tableFooter:a}=r,o=o?o.$el:null,a=a?a.$el:null,n=n.$el,a=a?a.scrollLeft:0,r=r.refScrollXHandleElem;r?r.scrollLeft=a:(r=n.scrollTop,(!!0,_dom.setScrollLeft)(o,a),(0,_dom.setScrollLeft)(n,a),l.handleScrollEvent(e,!1,!0,r,a,{type:renderType,fixed:t}))}}};
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_utils=require("../../ui/src/utils"),_dom=require("../../ui/src/dom");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let renderType="footer",renderer=_ui.VxeUI.renderer;function mergeFooterMethod(l,r,t){for(let e=0;e<l.length;e++){var{row:o,col:n,rowspan:a,colspan:i}=l[e];if(-1<n&&-1<o&&a&&i){if(o===r&&n===t)return{rowspan:a,colspan:i};if(o<=r&&r<o+a&&n<=t&&t<n+i)return{rowspan:0,colspan:0}}}}function renderRows(v,e,b,w,y,_,h){let{$parent:$,fixedType:T}=e,{$listeners:C,footerCellClassName:S,footerCellStyle:F,footerAlign:I,mergeFooterList:U,footerSpanMethod:k,align:E,scrollXLoad:L,columnKey:O,columnOpts:R,showFooterOverflow:A,currentColumn:M,overflowX:q,scrollbarWidth:l,tooltipOpts:D}=$;return b.map((l,e)=>{var{type:r,showFooterOverflow:t,footerAlign:o,align:n,footerClassName:a,editRender:i,cellRender:s}=l,i=i||s,s=i?renderer.get(i.name):null;let d=D.showAll||D.enabled;i=l.children&&l.children.length,i=T?l.fixed!==T&&!i:l.fixed&&q,t=_xeUtils.default.isUndefined(t)||_xeUtils.default.isNull(t)?A:t,o=o||(s?s.tableFooterCellAlign:"")||I||n||(s?s.tableCellAlign:"")||E;let c="ellipsis"===t,u="title"===t,f=!0===t||"tooltip"===t,p=u||f||c;var n={colid:l.id},s={},t=$.getColumnIndex(l),x=$.getVTColumnIndex(l),m=x;let g={$table:$,$grid:$.xegrid,row:y,_rowIndex:h,$rowIndex:_,column:l,columnIndex:t,$columnIndex:e,_columnIndex:x,itemIndex:m,items:y,fixed:T,type:renderType,data:w};if(L&&!p&&(c=p=!0),(u||f||d)&&(s.mouseenter=e=>{u?(0,_dom.updateCellTitle)(e.currentTarget,l):(f||d)&&$.triggerFooterTooltipEvent(e,g)}),(f||d)&&(s.mouseleave=e=>{(f||d)&&$.handleTargetLeaveEvent(e)}),C["footer-cell-click"]&&(s.click=e=>{$.emitEvent("footer-cell-click",Object.assign({cell:e.currentTarget},g),e)}),C["footer-cell-dblclick"]&&(s.dblclick=e=>{$.emitEvent("footer-cell-dblclick",Object.assign({cell:e.currentTarget},g),e)}),U.length){t=mergeFooterMethod(U,h,x);if(t){var{rowspan:m,colspan:x}=t;if(!m||!x)return null;1<m&&(n.rowspan=m),1<x&&(n.colspan=x)}}else if(k){var{rowspan:t=1,colspan:m=1}=k(g)||{};if(!t||!m)return null;1<t&&(n.rowspan=t),1<m&&(n.colspan=m)}return v("td",{class:["vxe-footer--column",l.id,{["col--"+o]:o,["col--"+r]:r,"col--last":e===b.length-1,"fixed--hidden":i,"col--ellipsis":p,"col--current":M===l},(0,_utils.getClass)(a,g),(0,_utils.getClass)(S,g)],attrs:n,style:F?_xeUtils.default.isFunction(F)?F(g):F:null,on:s,key:O||R.useKey||R.drag?l.id:e},[v("div",{class:["vxe-cell",{"c--title":u,"c--tooltip":f,"c--ellipsis":c}]},l.renderFooter(v,g))])}).concat(l?[v("td",{key:"gr"+_,class:"vxe-footer--gutter col--gutter"})]:[])}function renderHeads(o,n,a){let{$parent:i,fixedType:s,tableColumn:d}=n,{footerRowClassName:c,footerRowStyle:u,isDragColMove:f}=i,p=i.columnOpts;return a.map((e,l)=>{var r=l,t={$table:i,row:e,_rowIndex:r,$rowIndex:l,fixed:s,type:renderType};return p.drag?o("transition-group",{props:{tag:"tr",name:"vxe-header--col-list"+(f?"":"-disabled"),class:["vxe-footer--row",c?_xeUtils.default.isFunction(c)?c(t):c:""],style:u?_xeUtils.default.isFunction(u)?u(t):u:null}},renderRows(o,n,d,a,e,l,r)):o("tr",{class:["vxe-footer--row",c?_xeUtils.default.isFunction(c)?c(t):c:""],style:u?_xeUtils.default.isFunction(u)?u(t):u:null},renderRows(o,n,d,a,e,l,r))})}var _default=exports.default={name:"VxeTableFooter",props:{footerTableData:Array,tableColumn:Array,fixedColumn:Array,fixedType:String,size:String},mounted(){var{$parent:e,$el:l,$refs:r,fixedType:t}=this,e=e.elemStore,t=`${t||"main"}-footer-`;e[t+"wrapper"]=l,e[t+"table"]=r.table,e[t+"colgroup"]=r.colgroup,e[t+"list"]=r.tfoot,e[t+"xSpace"]=r.xSpace},destroyed(){var{$parent:e,fixedType:l}=this,e=e.elemStore,l=`${l||"main"}-footer-`;e[l+"wrapper"]=null,e[l+"table"]=null,e[l+"colgroup"]=null,e[l+"list"]=null,e[l+"xSpace"]=null},render(r){let{_e:e,$parent:l,fixedType:t,fixedColumn:o,tableColumn:n,footerTableData:a}=this;var{tId:i,mergeFooterList:s,footerSpanMethod:d,scrollXLoad:c,showFooterOverflow:u,scrollbarWidth:f,visibleColumn:p,expandColumn:x}=l,x=(t&&(n=x||!c&&!u||s.length&&d?p:o),{});return t||(x.scroll=this.scrollEvent),r("div",{class:["vxe-table--footer-wrapper",t?`fixed-${t}--wrapper`:"body--wrapper"],attrs:{xid:i},on:x},[t?e():r("div",{class:"vxe-body--x-space",ref:"xSpace"}),r("table",{class:"vxe-table--footer",attrs:{xid:i,cellspacing:0,cellpadding:0,border:0},ref:"table"},[r("colgroup",{ref:"colgroup"},n.map((e,l)=>r("col",{attrs:{name:e.id},key:l})).concat(f?[r("col",{attrs:{name:"col_gutter"}})]:[])),r("tfoot",{ref:"tfoot"},renderHeads(r,this,a))])])},methods:{scrollEvent(e){var l,r,t,o,n=this.$parent,a=n,{inVirtualScroll:i,inBodyScroll:s}=a;i||s||(i=this.fixedType,{tableHeader:s,tableBody:l,tableFooter:t}=n.$refs,s=s?s.$el:null,t=t?t.$el:null,l=l.$el,r=n.$refs.refScrollXHandleElem,t=t.scrollLeft,o=l.scrollTop,a.inFooterScroll=!0,(0,_dom.setScrollLeft)(r,t),(0,_dom.setScrollLeft)(s,t),(0,_dom.setScrollLeft)(l,t),n.triggerScrollXEvent(e),n.handleScrollEvent(e,!1,!0,o,t,{type:renderType,fixed:i}))}}};