UNPKG

primevue

Version:

PrimeVue is an open source UI library for Vue featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeBloc

2 lines (1 loc) 1.19 kB
import e from"primevue/basecomponent";import t from"primevue/deferredcontent/style";import{openBlock as n,createElementBlock as o,mergeProps as i,renderSlot as r,createCommentVNode as d}from"vue";var l={name:"DeferredContent",extends:e,inheritAttrs:!1,emits:["load"],style:t,data:function(){return{loaded:!1}},mounted:function(){this.loaded||(this.shouldLoad()?this.load():this.bindScrollListener())},beforeUnmount:function(){this.unbindScrollListener()},methods:{bindScrollListener:function(){var e=this;this.documentScrollListener=function(){e.shouldLoad()&&(e.load(),e.unbindScrollListener())},window.addEventListener("scroll",this.documentScrollListener)},unbindScrollListener:function(){this.documentScrollListener&&(window.removeEventListener("scroll",this.documentScrollListener),this.documentScrollListener=null)},shouldLoad:function(){if(this.loaded)return!1;var e=this.$refs.container.getBoundingClientRect();return document.documentElement.clientHeight>=e.top},load:function(e){this.loaded=!0,this.$emit("load",e)}}};l.render=function(e,t,l,s,u,c){return n(),o("div",i({ref:"container"},e.ptmi("root")),[u.loaded?r(e.$slots,"default",{key:0}):d("",!0)],16)};export{l as default};