UNPKG

@ionic/core

Version:
4 lines • 2.79 kB
/*! * (C) Ionic http://ionicframework.com - MIT License */ import{d as t,H as s,i,w as e,k as h,h as n,t as o,f as a}from"./p-Ct2aBEue.js";import{a as l,p as r,g as c}from"./p-V1THdfzs.js";import{b as d}from"./p-HthJZjZ6.js";const f=t(class extends s{constructor(t){super(),!1!==t&&this.__registerHost(),this.ionInfinite=i(this,"ionInfinite",7),this.thrPx=0,this.thrPc=0,this.didFire=!1,this.isBusy=!1,this.isLoading=!1,this.threshold="15%",this.disabled=!1,this.position="bottom",this.onScroll=()=>{const t=this.scrollEl;if(!t||!this.canStart())return 1;const s=this.el.offsetHeight;if(0===s)return 2;const i=t.scrollTop,e=t.offsetHeight,h=0!==this.thrPc?e*this.thrPc:this.thrPx;return("bottom"===this.position?t.scrollHeight-s-i-h-e:i-s-h)<0&&!this.didFire?(this.isLoading=!0,this.didFire=!0,this.ionInfinite.emit(),3):4}}thresholdChanged(){const t=this.threshold;t.lastIndexOf("%")>-1?(this.thrPx=0,this.thrPc=parseFloat(t)/100):(this.thrPx=parseFloat(t),this.thrPc=0)}disabledChanged(){const t=this.disabled;t&&(this.isLoading=!1,this.isBusy=!1),this.enableScrollEvents(!t)}async connectedCallback(){const t=l(this.el);t?(this.scrollEl=await c(t),this.thresholdChanged(),this.disabledChanged(),"top"===this.position&&e((()=>{this.scrollEl&&(this.scrollEl.scrollTop=this.scrollEl.scrollHeight-this.scrollEl.clientHeight)}))):r(this.el)}disconnectedCallback(){this.enableScrollEvents(!1),this.scrollEl=void 0}async complete(){const t=this.scrollEl;if(this.isLoading&&t)if(this.isLoading=!1,"top"===this.position){this.isBusy=!0;const s=t.scrollHeight-t.scrollTop;requestAnimationFrame((()=>{h((()=>{const i=t.scrollHeight-s;requestAnimationFrame((()=>{e((()=>{t.scrollTop=i,this.isBusy=!1,this.didFire=!1}))}))}))}))}else this.didFire=!1}canStart(){return!(this.disabled||this.isBusy||!this.scrollEl||this.isLoading)}enableScrollEvents(t){this.scrollEl&&(t?this.scrollEl.addEventListener("scroll",this.onScroll):this.scrollEl.removeEventListener("scroll",this.onScroll))}render(){const t=d(this),s=this.disabled;return n(a,{key:"e844956795f69be33396ce4480aa7a54ad01b28c",class:{[t]:!0,"infinite-scroll-loading":this.isLoading,"infinite-scroll-enabled":!s}})}get el(){return this}static get watchers(){return{threshold:[{thresholdChanged:0}],disabled:[{disabledChanged:0}]}}static get style(){return"ion-infinite-scroll{display:none;width:100%}.infinite-scroll-enabled{display:block}"}},[0,"ion-infinite-scroll",{threshold:[1],disabled:[4],position:[1],isLoading:[32],complete:[64]},void 0,{threshold:[{thresholdChanged:0}],disabled:[{disabledChanged:0}]}]),m=f,p=function(){"undefined"!=typeof customElements&&["ion-infinite-scroll"].forEach((t=>{"ion-infinite-scroll"===t&&(customElements.get(o(t))||customElements.define(o(t),f))}))};export{m as IonInfiniteScroll,p as defineCustomElement}