django-vue3-admin-web/node_modules/vxe-pc-ui/lib/list/src/list.min.js
2025-10-20 21:21:14 +08:00

1 line
5.5 KiB
JavaScript

"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom"),_loading=_interopRequireDefault(require("../../loading/src/loading"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function createInternalData(){return{resizeObserver:void 0,fullData:[],lastScrollLeft:0,lastScrollTop:0,scrollYStore:{startIndex:0,endIndex:0,visibleSize:0,offsetSize:0,rowHeight:0}}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeList",props:{data:Array,height:[Number,String],maxHeight:[Number,String],loading:Boolean,className:[String,Function],size:{type:String,default:()=>(0,_ui.getConfig)().list.size||(0,_ui.getConfig)().size},autoResize:{type:Boolean,default:()=>(0,_ui.getConfig)().list.autoResize},syncResize:[Boolean,String,Number],virtualYConfig:Object,scrollY:Object},emits:["scroll"],setup(u,e){const{slots:n,emit:r}=e;var t=_xeUtils.default.uniqueId();const o=_xeUtils.default.browse(),c=(0,_ui.useSize)(u)["computeSize"],d=(0,_vue.reactive)({scrollYLoad:!1,bodyHeight:0,customHeight:0,customMaxHeight:0,parentHeight:0,topSpaceHeight:0,items:[]}),s=createInternalData(),v=(0,_vue.ref)(),g=(0,_vue.ref)(),h=(0,_vue.ref)(),l={refElem:v},f={xID:t,props:u,context:e,reactData:d,internalData:s,getRefMaps:()=>l},_=(0,_vue.computed)(()=>Object.assign({},(0,_ui.getConfig)().list.virtualYConfig||(0,_ui.getConfig)().list.scrollY,u.virtualYConfig||u.scrollY)),x=(0,_vue.computed)(()=>{var{height:e,maxHeight:t}=u,{customHeight:l,customMaxHeight:r}=d,a={};return e?a.height=l+"px":t&&(a.height="auto",a.maxHeight=r+"px"),a}),i=(e,t,l)=>{r(e,(0,_ui.createEvent)(l,{$list:f},t))},a=e=>{var t=d["parentHeight"],e=u[e];let l=0;return l=e?"100%"===e||"auto"===e?t:(l=(0,_dom.isScale)(e)?Math.floor((_xeUtils.default.toInteger(e)||1)/100*t):_xeUtils.default.toNumber(e),Math.max(40,l)):l},m=()=>{var e=d["scrollYLoad"],{scrollYStore:t,fullData:l}=s;d.bodyHeight=e?l.length*t.rowHeight:0,d.topSpaceHeight=e?Math.max(t.startIndex*t.rowHeight,0):0},p=()=>{var e=d["scrollYLoad"],{fullData:t,scrollYStore:l}=s;return d.items=e?t.slice(l.startIndex,l.endIndex):t.slice(0),(0,_vue.nextTick)()},S=()=>{p(),m()},b=()=>(0,_vue.nextTick)().then(()=>{var e=d["scrollYLoad"],t=s["scrollYStore"],l=h.value,r=_.value;let a=0,i;(i=l?(i=r.sItem?l.querySelector(r.sItem):i)||l.children[0]:i)&&(a=i.offsetHeight),a=Math.max(12,a),t.rowHeight=a,(e?(l=g.value,e=Math.max(8,Math.ceil(l.clientHeight/a)),l=r.oSize?_xeUtils.default.toNumber(r.oSize):o.edge?10:0,t.offsetSize=l,t.visibleSize=e,t.endIndex=Math.max(t.startIndex+e+l,t.endIndex),S):m)()}),H=()=>{var e=g.value;return e&&(e.scrollTop=0),(0,_vue.nextTick)()},z=(e,t)=>{var l=g.value;return e&&!_xeUtils.default.isNumber(e)&&(t=e.top,e=e.left),_xeUtils.default.isNumber(e)&&(l.scrollLeft=e),_xeUtils.default.isNumber(t)&&(l.scrollTop=t),d.scrollYLoad?new Promise(e=>{setTimeout(()=>{(0,_vue.nextTick)(()=>{e()})},50)}):(0,_vue.nextTick)()},I=()=>{const{lastScrollLeft:e,lastScrollTop:t}=s;return H().then(()=>{if(e||t)return s.lastScrollLeft=0,s.lastScrollTop=0,z(e,t)})},T=()=>{var e=v.value;if(e){var t=e.parentElement;if(d.parentHeight=t?t.clientHeight:0,d.customHeight=a("height"),d.customMaxHeight=a("maxHeight"),e.clientWidth&&e.clientHeight)return b()}return(0,_vue.nextTick)()},Y=e=>{var t=s["scrollYStore"],{startIndex:l,endIndex:r,visibleSize:a,offsetSize:i,rowHeight:o}=t,e=e.target.scrollTop,e=Math.floor(e/o),o=Math.max(0,e-1-i),i=e+a+i;!(e<=l||r-a-1<=e)||l===o&&r===i||(t.startIndex=o,t.endIndex=i,S())},L=e=>{var t=e.target,l=t.scrollTop,t=t.scrollLeft,r=t!==s.lastScrollLeft,a=l!==s.lastScrollTop;s.lastScrollTop=l,s.lastScrollLeft=t,d.scrollYLoad&&Y(e),i("scroll",{scrollLeft:t,scrollTop:l,isX:r,isY:a},e)},M=e=>{var t=s["scrollYStore"],l=_.value,e=e||[];return Object.assign(t,{startIndex:0,endIndex:1,visibleSize:0}),s.fullData=e,d.scrollYLoad=!!l.enabled&&-1<l.gt&&(0===l.gt||l.gt<=e.length),p(),b().then(()=>{I()})};t={dispatchEvent:i,loadData:M,reloadData(e){return H(),M(e)},recalculate:T,scrollTo:z,refreshScroll:I,clearScroll:H};Object.assign(f,t);const y=(0,_vue.ref)(0);return(0,_vue.watch)(()=>u.data?u.data.length:-1,()=>{y.value++}),(0,_vue.watch)(()=>u.data,()=>{y.value++}),(0,_vue.watch)(y,()=>{M(u.data||[])}),(0,_vue.watch)(()=>u.height,()=>{T()}),(0,_vue.watch)(()=>u.maxHeight,()=>{T()}),(0,_vue.watch)(()=>u.syncResize,e=>{e&&(T(),(0,_vue.nextTick)(()=>setTimeout(()=>T())))}),(0,_vue.onActivated)(()=>{T().then(()=>I())}),(0,_vue.nextTick)(()=>{M(u.data||[])}),(0,_vue.onMounted)(()=>{var e,t;T(),u.autoResize&&(e=v.value,(t=_ui.globalResize.create(()=>T())).observe(e),e&&t.observe(e.parentElement),s.resizeObserver=t),_ui.globalEvents.on(f,"resize",T)}),(0,_vue.onUnmounted)(()=>{var e=s["resizeObserver"];e&&e.disconnect(),_ui.globalEvents.off(f,"resize"),_xeUtils.default.assign(s,createInternalData())}),f.renderVN=()=>{var{className:e,loading:t}=u,{bodyHeight:l,topSpaceHeight:r,items:a}=d,i=n.default,o=c.value,s=x.value;return(0,_vue.h)("div",{ref:v,class:["vxe-list",e?_xeUtils.default.isFunction(e)?e({$list:f}):e:"",{["size--"+o]:o,"is--loading":t}]},[(0,_vue.h)("div",{ref:g,class:"vxe-list--virtual-wrapper",style:s,onScroll:L},[(0,_vue.h)("div",{class:"vxe-list--y-space",style:{height:l?l+"px":""}}),(0,_vue.h)("div",{ref:h,class:"vxe-list--body",style:{marginTop:r?r+"px":""}},i?i({items:a,$list:f}):[])]),(0,_vue.h)(_loading.default,{class:"vxe-list--loading",modelValue:t})])},f},render(){return this.renderVN()}});