| 1 |
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils")),_conf=_interopRequireDefault(require("../../v-x-e-table/src/conf")),_size=_interopRequireDefault(require("../../mixins/size")),_tools=require("../../tools");function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}var browse=_tools.DomTools.browse,_default2={name:"VxeList",mixins:[_size.default],props:{data:Array,height:[Number,String],maxHeight:[Number,String],loading:Boolean,size:{type:String,default:function(){return _conf.default.list.size||_conf.default.size}},autoResize:{type:Boolean,default:function(){return _conf.default.list.autoResize}},syncResize:[Boolean,String,Number],scrollY:Object},data:function(){return{scrollYLoad:!1,bodyHeight:0,topSpaceHeight:0,items:[]}},computed:{sYOpts:function(){return Object.assign({},_conf.default.list.scrollY,this.scrollY)},styles:function(){var t=this.height,e=this.maxHeight,i={};return t?i.height=isNaN(t)?t:"".concat(t,"px"):e&&(i.height="auto",i.maxHeight=isNaN(e)?e:"".concat(e,"px")),i}},watch:{data:function(t){this.loadData(t)},syncResize:function(t){var e=this;t&&(this.recalculate(),this.$nextTick(function(){return setTimeout(function(){return e.recalculate()})}))}},created:function(){Object.assign(this,{fullData:[],lastScrollLeft:0,lastScrollTop:0,scrollYStore:{startIndex:0,endIndex:0,visibleSize:0}}),this.loadData(this.data),_tools.GlobalEvent.on(this,"resize",this.handleGlobalResizeEvent)},mounted:function(){var t,e=this;this.autoResize&&((t=(0,_tools.createResizeEvent)(function(){return e.recalculate()})).observe(this.$el),this.$resize=t)},beforeDestroy:function(){this.$resize&&this.$resize.disconnect()},destroyed:function(){_tools.GlobalEvent.off(this,"resize")},render:function(t){var e=this.$scopedSlots,i=this.styles,s=this.bodyHeight,l=this.topSpaceHeight,o=this.items,r=this.loading;return t("div",{class:["vxe-list",{"is--loading":r}]},[t("div",{ref:"virtualWrapper",class:"vxe-list--virtual-wrapper",style:i,on:{scroll:this.scrollEvent}},[t("div",{ref:"ySpace",class:"vxe-list--y-space",style:{height:s?"".concat(s,"px"):""}}),t("div",{ref:"body",class:"vxe-list--body",style:{marginTop:l?"".concat(l,"px"):""}},e.default?e.default.call(this,{items:o,$list:this},t):[])]),t("div",{class:["vxe-list--loading vxe-loading",{"is--visible":r}]},[t("div",{class:"vxe-loading--spinner"})])])},methods:{getParentElem:function(){return this.$el.parentNode},loadData:function(t){var e=this,i=this.sYOpts,s=this.scrollYStore,t=t||[];return s.startIndex=0,s.visibleIndex=0,this.fullData=t,this.scrollYLoad=i.enabled&&-1<i.gt&&i.gt<=t.length,this.handleData(),this.computeScrollLoad().then(function(){e.refreshScroll()})},reloadData:function(t){return this.clearScroll(),this.loadData(t)},handleData:function(){var t=this.fullData,e=this.scrollYLoad,i=this.scrollYStore;return this.items=e?t.slice(i.startIndex,i.endIndex):t.slice(0),this.$nextTick()},recalculate:function(){var t=this.$el;return t.clientWidth&&t.clientHeight?this.computeScrollLoad():Promise.resolve()},clearScroll:function(){var e=this,t=this.$refs.virtualWrapper;return t&&(t.scrollTop=0),new Promise(function(t){setTimeout(function(){t(e.$nextTick())})})},refreshScroll:function(){var t=this,e=this.lastScrollLeft,i=this.lastScrollTop;return this.clearScroll().then(function(){if(e||i)return t.lastScrollLeft=0,t.lastScrollTop=0,t.scrollTo(e,i)})},scrollTo:function(t,e){var i=this,s=this.$refs.virtualWrapper;return _xeUtils.default.isNumber(t)&&(s.scrollLeft=t),_xeUtils.default.isNumber(e)&&(s.scrollTop=e),this.scrollYLoad?new Promise(function(t){return setTimeout(function(){return t(i.$nextTick())},50)}):this.$nextTick()},computeScrollLoad:function(){var r=this;return this.$nextTick().then(function(){var t,e=r.$refs,i=r.sYOpts,s=r.scrollYLoad,l=r.scrollYStore,o=0;(t=(t=i.sItem?e.body.querySelector(i.sItem):t)||e.body.children[0])&&(o=t.offsetHeight),o=Math.max(20,o),l.rowHeight=o,s?(e=Math.max(8,Math.ceil(e.virtualWrapper.clientHeight/o)),i=i.oSize?_xeUtils.default.toNumber(i.oSize):browse.msie?20:browse.edge?10:0,l.offsetSize=i,l.visibleSize=e,l.endIndex=Math.max(l.startIndex,e+i,l.endIndex),r.updateYData()):r.updateYSpace(),r.rowHeight=o})},scrollEvent:function(t){var e=t.target,i=e.scrollTop,s=e.scrollLeft,l=s!==this.lastScrollLeft,e=i!==this.lastScrollTop;this.lastScrollTop=i,this.lastScrollLeft=s,this.scrollYLoad&&this.loadYData(t),this.$emit("scroll",{scrollLeft:s,scrollTop:i,isX:l,isY:e,$event:t})},loadYData:function(t){var e=this.scrollYStore,i=e.startIndex,s=e.endIndex,l=e.visibleSize,o=e.offsetSize,r=e.rowHeight,t=t.target.scrollTop,t=Math.floor(t/r),r=Math.max(0,t-1-o),o=t+l+o;(t<=i||s-l-1<=t)&&(i===r&&s===o||(e.startIndex=r,e.endIndex=o,this.updateYData()))},updateYData:function(){this.handleData(),this.updateYSpace()},updateYSpace:function(){var t=this.scrollYStore,e=this.scrollYLoad,i=this.fullData;this.bodyHeight=e?i.length*t.rowHeight:0,this.topSpaceHeight=e?Math.max(t.startIndex*t.rowHeight,0):0},handleGlobalResizeEvent:function(){this.recalculate()}}};exports.default=_default2;
|