index.js 6.6 KB

1
  1. "use strict";var _baseComponent=_interopRequireDefault(require("../helpers/baseComponent")),_classNames5=_interopRequireDefault(require("../helpers/libs/classNames")),_useNativeAPI=require("../helpers/hooks/useNativeAPI"),_useDOM=require("../helpers/hooks/useDOM");function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _defineProperty(t,e,i){return(e=_toPropertyKey(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function _toPropertyKey(t){t=_toPrimitive(t,"string");return"symbol"==_typeof(t)?t:String(t)}function _toPrimitive(t,e){if("object"!=_typeof(t)||!t)return t;var i=t[Symbol.toPrimitive];if(void 0===i)return("string"===e?String:Number)(t);i=i.call(t,e||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}var defaultStyle="transition: transform .4s; transform: translate3d(0px, 0px, 0px) scale(1);";(0,_baseComponent.default)({properties:{prefixCls:{type:String,value:"wux-refresher"},pullingIcon:{type:String,value:""},pullingText:{type:String,value:"下拉刷新"},refreshingIcon:{type:String,value:""},refreshingText:{type:String,value:"正在刷新"},disablePullingRotation:{type:Boolean,value:!1},distance:{type:Number,value:30},prefixLCls:{type:String,value:"wux-loader"},isShowLoadingText:{type:Boolean,value:!1},loadingText:{type:String,value:"正在加载"},loadNoDataText:{type:String,value:"没有更多数据"},scrollTop:{type:Number,value:0,observer:"onScroll"}},data:{style:defaultStyle,visible:!1,active:!1,refreshing:!1,tail:!1,lVisible:!1,noData:!1,windowHeight:0,newContentHeight:0,oldContentHeight:0,loading:!1},computed:{classes:["prefixCls, pullingText, pullingIcon, disablePullingRotation, refreshingText, refreshingIcon, visible, active, refreshing, tail, prefixLCls, loading, noData",function(t,e,i,n,a,o,s,r,c,l,h,u,f){return{wrap:(0,_classNames5.default)(t,_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({},"".concat(t,"--hidden"),!s),"".concat(t,"--visible"),s),"".concat(t,"--active"),r),"".concat(t,"--refreshing"),c),"".concat(t,"--refreshing-tail"),l)),cover:"".concat(t,"__cover"),content:(0,_classNames5.default)("".concat(t,"__content"),_defineProperty({},"".concat(t,"__content--text"),e||a)),iconPulling:(0,_classNames5.default)("".concat(t,"__icon-pulling"),_defineProperty({},"".concat(t,"__icon-pulling--disabled"),n)),textPulling:"".concat(t,"__text-pulling"),iconRefreshing:"".concat(t,"__icon-refreshing"),textRefreshing:"".concat(t,"__text-refreshing"),pIcon:i||"".concat(t,"__icon--arrow-down"),rIcon:o||"".concat(t,"__icon--refresher"),lWrap:(0,_classNames5.default)(h,_defineProperty(_defineProperty(_defineProperty({},"".concat(h,"--hidden"),!u),"".concat(h,"--visible"),u),"".concat(h,"--end"),f)),lContent:"".concat(h,"__content"),loadingText:"".concat(h,"__text-loading")}}]},methods:{activate:function(){this.setData({style:defaultStyle,visible:!0})},deactivate:function(){this.activated&&(this.activated=!1),this.setData({style:defaultStyle,visible:!1,active:!1,refreshing:!1,tail:!1})},refreshing:function(){this.setData({style:"transition: transform .4s; transform: translate3d(0, 50px, 0) scale(1);",visible:!0,active:!0,refreshing:!0,loading:!1,noData:!1,newContentHeight:0,oldContentHeight:0,lVisible:!1})},tail:function(){this.setData({visible:!0,active:!0,refreshing:!0,tail:!0})},hide:function(){this.setData({lVisible:!1})},translate:function(t){var e="transition-duration: 0s; transform: translate3d(0, ".concat(t,"px, 0) scale(1);"),t=t<this.data.distance?"visible":"active";this.setData(_defineProperty({style:e},t,!0))},isRefreshing:function(){return this.data.refreshing},isLoading:function(){return this.data.loading},getTouchPoints:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,t=t.touches[e]||t.changedTouches[e];return{x:t.pageX,y:t.pageY}},getSwipeDirection:function(t,e,i,n){return Math.abs(t-e)>=Math.abs(i-n)?0<t-e?"Left":"Right":0<i-n?"Up":"Down"},requestAnimationFrame:function(t){var e=this,i=(new Date).getTime(),n=Math.max(0,16-(i-this.lastTime)),a=setTimeout(function(){t.bind(e)(i+n)},n);return this.lastTime=i+n,a},cancelAnimationFrame:function(t){clearTimeout(t)},finishPullToRefresh:function(){var t=this;setTimeout(function(){t.requestAnimationFrame(t.tail),setTimeout(function(){return t.deactivate()},200)},200)},finishLoadmore:function(t){var e=this;!0===t?setTimeout(function(){e.setData({noData:!0,loading:!1})},200):setTimeout(function(){e.setData({noData:!1,loading:!1}),e.requestAnimationFrame(e.hide),setTimeout(function(){return e.deactivate()},200)},200)},onTouchStart:function(t){this.isRefreshing()||this.isLoading()||(this.start=this.getTouchPoints(t),this.diffX=this.diffY=0,this.isMoved=!1,this.direction=!1,this.activate())},onTouchMove:function(t){!this.start||this.isRefreshing()||this.isLoading()||(this.isMoved||(this.isMoved=!0),this.move=this.getTouchPoints(t),this.diffX=this.move.x-this.start.x,this.diffY=this.move.y-this.start.y,this.direction=this.getSwipeDirection(this.start.x,this.move.x,this.start.y,this.move.y),this.diffY<0)||"Down"!==this.direction||(this.diffY=Math.pow(this.diffY,.8),this.triggerPull(this.diffY))},onTouchEnd:function(t){this.isMoved&&(this.start=!1,this.isMoved=!1,this.diffY<=0||"Down"!==this.direction||this.isRefreshing()||this.isLoading()||this.triggerRefresh(this.diffY))},triggerPull:function(t){var e=this.data.distance;!this.activated&&e<t?(this.activated=!0,this.triggerEvent("pulling")):this.activated&&t<e&&(this.activated=!1),this.translate(t)},triggerRefresh:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.data.distance;this.triggerPull(t),this.deactivate(),Math.abs(t)>=this.data.distance&&(this.refreshing(),this.triggerEvent("refresh"))},onScroll:function(s){var r=this;this.isMoved||(0,_useDOM.useRect)("#".concat(this.id)).then(function(t){var t=t.height,e=(r.data.newContentHeight!==t&&r.setData({newContentHeight:t}),r.data),i=e.oldContentHeight,n=e.windowHeight,a=e.distance,o=e.loading,e=e.noData;n&&!r.isRefreshing()&&(t-n-1.5*a<s&&!1===o&&!1===e&&t!==i?(r.setData({loading:!0,refreshing:!1,oldContentHeight:t}),r.triggerEvent("loadmore")):!1===o&&!1===e?r.hide():!0===o&&r.setData({oldContentHeight:t}),r.deactivate())})},noop:function(){}},created:function(){this.lastTime=0,this.activated=!1},attached:function(){var t=(0,_useNativeAPI.getSystemInfoSync)(["window"]).windowHeight;this.data.windowHeight!==t&&this.setData({windowHeight:t})}});