@ionic/core
Version:
Base components for Ionic
4 lines • 7.99 kB
JavaScript
import{__awaiter,__generator}from"tslib";
/*!
* (C) Ionic http://ionicframework.com - MIT License
*/import{r as registerInstance,c as createEvent,w as writeTask,d as readTask,h,f as getElement,e as Host}from"./index-527b9e34.js";import{f as findClosestIonContent,p as printIonContentErrorMsg,g as getScrollElement}from"./index-e919e353.js";import{b as getIonMode,c as config}from"./ionic-global-ca86cf32.js";import{E as ENABLE_HTML_CONTENT_DEFAULT,a as sanitizeDOMString}from"./config-49c88215.js";import"./helpers-78efeec3.js";import"./index-738d7504.js";var infiniteScrollCss="ion-infinite-scroll{display:none;width:100%}.infinite-scroll-enabled{display:block}";var IonInfiniteScrollStyle0=infiniteScrollCss;var InfiniteScroll=function(){function n(n){var i=this;registerInstance(this,n);this.ionInfinite=createEvent(this,"ionInfinite",7);this.thrPx=0;this.thrPc=0;this.didFire=false;this.isBusy=false;this.onScroll=function(){var n=i.scrollEl;if(!n||!i.canStart()){return 1}var e=i.el.offsetHeight;if(e===0){return 2}var t=n.scrollTop;var o=n.scrollHeight;var s=n.offsetHeight;var r=i.thrPc!==0?s*i.thrPc:i.thrPx;var l=i.position==="bottom"?o-e-t-r-s:t-e-r;if(l<0){if(!i.didFire){i.isLoading=true;i.didFire=true;i.ionInfinite.emit();return 3}}return 4};this.isLoading=false;this.threshold="15%";this.disabled=false;this.position="bottom"}n.prototype.thresholdChanged=function(){var n=this.threshold;if(n.lastIndexOf("%")>-1){this.thrPx=0;this.thrPc=parseFloat(n)/100}else{this.thrPx=parseFloat(n);this.thrPc=0}};n.prototype.disabledChanged=function(){var n=this.disabled;if(n){this.isLoading=false;this.isBusy=false}this.enableScrollEvents(!n)};n.prototype.connectedCallback=function(){return __awaiter(this,void 0,void 0,(function(){var n,i;var e=this;return __generator(this,(function(t){switch(t.label){case 0:n=findClosestIonContent(this.el);if(!n){printIonContentErrorMsg(this.el);return[2]}i=this;return[4,getScrollElement(n)];case 1:i.scrollEl=t.sent();this.thresholdChanged();this.disabledChanged();if(this.position==="top"){writeTask((function(){if(e.scrollEl){e.scrollEl.scrollTop=e.scrollEl.scrollHeight-e.scrollEl.clientHeight}}))}return[2]}}))}))};n.prototype.disconnectedCallback=function(){this.enableScrollEvents(false);this.scrollEl=undefined};n.prototype.complete=function(){return __awaiter(this,void 0,void 0,(function(){var n,i;var e=this;return __generator(this,(function(t){n=this.scrollEl;if(!this.isLoading||!n){return[2]}this.isLoading=false;if(this.position==="top"){this.isBusy=true;i=n.scrollHeight-n.scrollTop;requestAnimationFrame((function(){readTask((function(){var t=n.scrollHeight;var o=t-i;requestAnimationFrame((function(){writeTask((function(){n.scrollTop=o;e.isBusy=false;e.didFire=false}))}))}))}))}else{this.didFire=false}return[2]}))}))};n.prototype.canStart=function(){return!this.disabled&&!this.isBusy&&!!this.scrollEl&&!this.isLoading};n.prototype.enableScrollEvents=function(n){if(this.scrollEl){if(n){this.scrollEl.addEventListener("scroll",this.onScroll)}else{this.scrollEl.removeEventListener("scroll",this.onScroll)}}};n.prototype.render=function(){var n;var i=getIonMode(this);var e=this.disabled;return h(Host,{key:"e844956795f69be33396ce4480aa7a54ad01b28c",class:(n={},n[i]=true,n["infinite-scroll-loading"]=this.isLoading,n["infinite-scroll-enabled"]=!e,n)})};Object.defineProperty(n.prototype,"el",{get:function(){return getElement(this)},enumerable:false,configurable:true});Object.defineProperty(n,"watchers",{get:function(){return{threshold:["thresholdChanged"],disabled:["disabledChanged"]}},enumerable:false,configurable:true});return n}();InfiniteScroll.style=IonInfiniteScrollStyle0;var infiniteScrollContentIosCss="ion-infinite-scroll-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;min-height:84px;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.infinite-loading{margin-left:0;margin-right:0;margin-top:0;margin-bottom:32px;display:none;width:100%}.infinite-loading-text{-webkit-margin-start:32px;margin-inline-start:32px;-webkit-margin-end:32px;margin-inline-end:32px;margin-top:4px;margin-bottom:0}.infinite-scroll-loading ion-infinite-scroll-content>.infinite-loading{display:block}.infinite-scroll-content-ios .infinite-loading-text{color:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666))}.infinite-scroll-content-ios .infinite-loading-spinner .spinner-lines-ios line,.infinite-scroll-content-ios .infinite-loading-spinner .spinner-lines-small-ios line,.infinite-scroll-content-ios .infinite-loading-spinner .spinner-crescent circle{stroke:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666))}.infinite-scroll-content-ios .infinite-loading-spinner .spinner-bubbles circle,.infinite-scroll-content-ios .infinite-loading-spinner .spinner-circles circle,.infinite-scroll-content-ios .infinite-loading-spinner .spinner-dots circle{fill:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666))}";var IonInfiniteScrollContentIosStyle0=infiniteScrollContentIosCss;var infiniteScrollContentMdCss="ion-infinite-scroll-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;min-height:84px;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.infinite-loading{margin-left:0;margin-right:0;margin-top:0;margin-bottom:32px;display:none;width:100%}.infinite-loading-text{-webkit-margin-start:32px;margin-inline-start:32px;-webkit-margin-end:32px;margin-inline-end:32px;margin-top:4px;margin-bottom:0}.infinite-scroll-loading ion-infinite-scroll-content>.infinite-loading{display:block}.infinite-scroll-content-md .infinite-loading-text{color:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666))}.infinite-scroll-content-md .infinite-loading-spinner .spinner-lines-md line,.infinite-scroll-content-md .infinite-loading-spinner .spinner-lines-small-md line,.infinite-scroll-content-md .infinite-loading-spinner .spinner-crescent circle{stroke:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666))}.infinite-scroll-content-md .infinite-loading-spinner .spinner-bubbles circle,.infinite-scroll-content-md .infinite-loading-spinner .spinner-circles circle,.infinite-scroll-content-md .infinite-loading-spinner .spinner-dots circle{fill:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666))}";var IonInfiniteScrollContentMdStyle0=infiniteScrollContentMdCss;var InfiniteScrollContent=function(){function n(n){registerInstance(this,n);this.customHTMLEnabled=config.get("innerHTMLTemplatesEnabled",ENABLE_HTML_CONTENT_DEFAULT);this.loadingSpinner=undefined;this.loadingText=undefined}n.prototype.componentDidLoad=function(){if(this.loadingSpinner===undefined){var n=getIonMode(this);this.loadingSpinner=config.get("infiniteLoadingSpinner",config.get("spinner",n==="ios"?"lines":"crescent"))}};n.prototype.renderLoadingText=function(){var n=this,i=n.customHTMLEnabled,e=n.loadingText;if(i){return h("div",{class:"infinite-loading-text",innerHTML:sanitizeDOMString(e)})}return h("div",{class:"infinite-loading-text"},this.loadingText)};n.prototype.render=function(){var n;var i=getIonMode(this);return h(Host,{key:"7c16060dcfe2a0b0fb3e2f8f4c449589a76f1baa",class:(n={},n[i]=true,n["infinite-scroll-content-".concat(i)]=true,n)},h("div",{key:"a94f4d8746e053dc718f97520bd7e48cb316443a",class:"infinite-loading"},this.loadingSpinner&&h("div",{key:"10143d5d2a50a2a2bc5de1cee8e7ab51263bcf23",class:"infinite-loading-spinner"},h("ion-spinner",{key:"8846e88191690d9c61a0b462889ed56fbfed8b0d",name:this.loadingSpinner})),this.loadingText!==undefined&&this.renderLoadingText()))};return n}();InfiniteScrollContent.style={ios:IonInfiniteScrollContentIosStyle0,md:IonInfiniteScrollContentMdStyle0};export{InfiniteScroll as ion_infinite_scroll,InfiniteScrollContent as ion_infinite_scroll_content};