pulldown.min.js 2.5 KB

1
  1. define(function(n,e,t){"use strict";var o,r=n("../util"),i=n("../base"),s="Pull Down To Refresh",l="Loading...",a=function(n){a.superclass.constructor.call(this,n),this.userConfig=r.mix({content:s,height:60,autoRefresh:!0,downContent:"Pull Down To Refresh",upContent:"Release To Refresh",loadingContent:l,clsPrefix:"xs-plugin-pulldown-"},n)};if(r.extend(a,i,{pluginId:"pulldown",pluginInitializer:function(n){var e=this;return e.xscroll=n.render(),o=e.userConfig.clsPrefix,e.render(),e},pluginDestructor:function(){var n=this;r.remove(n.pulldown),n.xscroll.off("panstart",n._panStartHandler,n),n.xscroll.off("pan",n._panHandler,n),n.xscroll.off("panend",n._panEndHandler,n),n.__isRender=!1,n._evtBinded=!1},render:function(){var n=this;if(!n.__isRender){if(n.__isRender=!0,n.userConfig.container)n.pulldown=n.userConfig.container;else{var e=o+"container",t=n.userConfig.height||60,i=n.pulldown=document.createElement("div");i.className=e,i.style.position="absolute",i.style.width="100%",i.style.height=t+"px",i.style.lineHeight=t+"px",i.style.top=-t+"px",i.style.textAlign="center",n.xscroll.container.appendChild(i),n.status="up",r.addClass(i,o+n.status),i.innerHTML=n.userConfig[n.status+"Content"]||n.userConfig.content}return n._bindEvt(),n}},_bindEvt:function(){var n=this;if(!n._evtBinded){n._evtBinded=!0;var e=(n.pulldown,n.xscroll);e.on("pan",n._panHandler,n),e.on("panstart",n._panStartHandler,n),e.on("panend",n._panEndHandler,n)}},_changeStatus:function(n){var e=this.status;this.status=n,this.userConfig.container||(r.removeClass(this.pulldown,o+e),r.addClass(this.pulldown,o+n),this.userConfig[n+"Content"]&&(this.pulldown.innerHTML=this.userConfig[n+"Content"])),e!=n&&(this.trigger("statuschange",{prevVal:e,newVal:n}),"loading"==n&&this.trigger("loading"))},reset:function(n){return this.xscroll.boundry.resetTop(),this.xscroll.boundryCheckY(n),this._expanded=!1,this},_panStartHandler:function(n){clearTimeout(this.loadingItv)},_panHandler:function(n){var e=this,t=e.xscroll.getScrollTop();t>0||e._changeStatus(Math.abs(t)<e.userConfig.height?"down":"up")},_panEndHandler:function(n){var e=this,t=e.xscroll,o=e.userConfig.height||60,r=t.getScrollTop();r<-o&&(n.preventDefault(),t.boundry.resetTop(),e._changeStatus("loading"),t.boundry.expandTop(o),t.boundryCheckY(function(){}),e.userConfig.autoRefresh&&(clearTimeout(e.loadingItv),e.loadingItv=setTimeout(function(){t.boundry.resetTop(),t.boundryCheckY(function(){window.location.reload()})},800)))}}),"object"==typeof t&&t.exports)t.exports=a;else if(window.XScroll&&window.XScroll.Plugins)return XScroll.Plugins.PullDown=a});