pullup.min.js 3.1 KB

1
  1. define(function(n,t,e){"use strict";var l,r=n("../util"),i=n("../base"),s="Loading...",o="Pull Up To Refresh",u="Release To Refresh",a=60,c=40,d=function(n){d.superclass.constructor.call(this),this.userConfig=r.mix({upContent:o,downContent:u,pullUpHeight:a,height:c,loadingContent:s,bufferHeight:0,clsPrefix:"xs-plugin-pullup-"},n)};if(r.extend(d,i,{pluginId:"pullup",pluginInitializer:function(n){var t=this;return t.xscroll=n.render(),l=t.userConfig.clsPrefix,t.render(),t},pluginDestructor:function(){var n=this;r.remove(n.pullup),n.xscroll.off("scrollend",n._scrollEndHandler,n),n.xscroll.off("scroll",n._scrollHandler,n),n.xscroll.off("pan",n._panHandler,n),n.xscroll.boundry.resetBottom(),n.__isRender=!1,n._evtBinded=!1},pluginDisable:function(){var n=this;n.userConfig.container||r.remove(n.pullup),n.xscroll.off("scrollend",n._scrollEndHandler,n),n.xscroll.off("scroll",n._scrollHandler,n),n.xscroll.off("pan",n._panHandler,n),n.xscroll.boundry.resetBottom(),n.__isRender=!1,n._evtBinded=!1},render:function(){var n=this;if(!n.__isRender){if(n.__isRender=!0,n.userConfig.container)n.pullup=n.userConfig.container;else{var t=l+"container",e=n.userConfig.height,i=n.pullup=document.createElement("div");i.className=t,i.style.position="absolute",i.style.width="100%",i.style.height=e+"px",i.style.bottom=-e+"px",i.style.textAlign="center",n.xscroll.container.appendChild(i),r.addClass(i,l+n.status),i.innerHTML=n.userConfig[n.status+"Content"]||n.userConfig.content}return n.xscroll.boundry.expandBottom(n.userConfig.height),n.status="up",n._bindEvt(),n}},_bindEvt:function(){var n=this;if(!n._evtBinded){n._evtBinded=!0;var t=(n.pullup,n.xscroll);return t.on("pan",n._panHandler,n),n.userConfig.bufferHeight>0&&t.on("scroll",n._scrollHandler,n),t.on("scrollend",n._scrollEndHandler,n),n}},_scrollEndHandler:function(n){var t=this,e=t.xscroll,l=e.getScrollTop();return l==e.containerHeight-e.height+t.userConfig.height&&t._changeStatus("loading"),t},_scrollHandler:function(n){var t=this,e=t.xscroll;return!t.isLoading&&Math.abs(n.scrollTop)+e.height+t.userConfig.height+t.userConfig.bufferHeight>=e.containerHeight+e.boundry._xtop+e.boundry._xbottom&&t._changeStatus("loading"),t},_panHandler:function(n){var t=this,e=t.xscroll,l=-e.getScrollTop();return l<e.height-e.containerHeight-t.userConfig.pullUpHeight?t._changeStatus("down"):t._changeStatus("up"),t},_changeStatus:function(n){if("loading"==n||!this.isLoading){var t=this.status;return this.status=n,this.userConfig.container||(r.removeClass(this.pullup,l+t),r.addClass(this.pullup,l+n),this.pullup.innerHTML=this.userConfig[n+"Content"]),t!=n&&(this.trigger("statuschange",{prevVal:t,newVal:n}),"loading"==n&&(this.isLoading=!0,this.trigger("loading"))),this}},complete:function(){var n=this;n.xscroll;return n.isLoading=!1,n._changeStatus("up"),n},stop:function(){this.xscroll;return this.isLoading=!1,this._changeStatus("stop"),this.pluginDisable(),this},restart:function(){this.xscroll;return this.isLoading=!1,this._changeStatus("default"),this.render(),this}}),"object"==typeof e&&e.exports)e.exports=d;else if(window.XScroll&&window.XScroll.Plugins)return XScroll.Plugins.PullUp=d});