var nowTouchType = 'head' var touchmoevIsOver = true; var isHover = true; var isMoving = false; var _test_x = 0 var _test_y = 0 var _x = 0 var _y = 0 var _realY = 0 var _realYDiff = 0 var _scrollDetail_y_start = 0 var disabledScolly = false; var defaultTranformYValue = 'matrix(1, 0, 0, 1, 0, 0) ' var opts = { maxHeight: 650, size: 480, height: 0, threshold: 0, duration: 300, status: 'close', triggerDy: 180, _scrollDetail_y:0 } function eventTransform_start(evt, ins) { isHover = true; _scrollDetail_y_start = opts._scrollDetail_y disabledScolly = false isMoving = false if (opts.status == 'open') { _y = evt.y - opts.maxHeight } else if (opts.status == 'close') { _y = evt.y - opts.size } _realY = evt.y _test_y = evt.y; ins.selectComponent('.xFloatDrawerWrapContent').setStyle({ 'transition-duration': '0ms', 'transform': defaultTranformYValue }) ins.callMethod('callEmits', { disabledScolly: disabledScolly, isMoving: isMoving }) ins.callMethod('setDisabledScolly', { disabledScolly: disabledScolly, isMoving: isMoving }) } function eventTransform_move(evt, ins) { var ele = ins.selectComponent('.xFloatDrawerWrapContent') var dy = evt.y - _test_y; if(dy<0){ disabledScolly = false; isMoving = false; opts._scrollDetail_y = 0 }else{ opts._scrollDetail_y = 0 } ins.callMethod('callEmits', { disabledScolly: disabledScolly, isMoving: isMoving }) ins.callMethod('setDisabledScolly', { disabledScolly: disabledScolly, isMoving: isMoving }) if(disabledScolly) return true; var movey = evt.y - _y if (movey <= opts.maxHeight) { movey = opts.maxHeight - (opts.maxHeight - movey) * opts.threshold } else if (movey >= opts.size) { movey = opts.size + (movey - opts.size) * opts.threshold } ele.setStyle({ 'transition-duration': '0ms', 'transform': 'matrix(1, 0, 0, 1, 0, ' + movey + ')' }) _realYDiff = evt.y - _realY var ratioValue = (movey - opts.size) / (opts.maxHeight - opts.size) * 100; ins.callMethod('callEmits', { name: 'heightChange', args: ratioValue }) } function eventTransform_end(evt, ins) { isHover = false; var ele = ins.selectComponent('.xFloatDrawerWrapContent') var duration = opts.duration var offset = 0 if (_realY - evt.y == 0) return; if (_realYDiff >= opts.triggerDy) { offset = opts.size opts.status = 'close'; ins.callMethod('callEmits', 'beforeClose') ins.callMethod('callEmits', { name: 'heightChange', args: 0 }) ins.callMethod('callEmits', {name:'close'}) } else if (_realYDiff < (opts.triggerDy * -1)) { offset = opts.maxHeight opts.status = 'open'; ins.callMethod('callEmits', { name: 'heightChange', args: 100 }) ins.callMethod('callEmits', {name:'open'}) } else { if (opts.status === 'open') { offset = opts.maxHeight ins.callMethod('callEmits', { name: 'heightChange', args: 100 }) } else { offset = opts.size ins.callMethod('callEmits', { name: 'heightChange', args: 0 }) } } ins.callMethod('setOpts', opts) ele.setStyle({ 'transition-duration': duration + 'ms', 'transform': 'matrix(1, 0, 0, 1, 0, ' + offset + ')' }) } function setTatus(status,instance){ var ele = instance.selectComponent('.xFloatDrawerWrapContent') var offset = 0 var duration = opts.duration if (status === 'open') { offset = opts.maxHeight } else { offset = opts.size } ele.setStyle({ 'transition-duration': duration + 'ms', 'transform': 'matrix(1, 0, 0, 1, 0, ' + offset + ')' }) } function mStartHead(evt, ins) { } function mMoveHead(evt, ins) { } function mEndHead(evt, ins) { } function mStart(evt, ins) { _test_x = evt.changedTouches[0].clientX; _test_y = evt.changedTouches[0].clientY; // var otps = ins.callMethod('getNowOpts') var ele = ins.selectComponent('.xFloatDrawerWrapContent') opts = ele.getDataset().opts; defaultTranformYValue = ele.getComputedStyle(['transform']).transform isMoving = false ins.callMethod('callEmits', { name: 'movestart', args: null }) eventTransform_start({ x: _test_x, y: _test_y }, ins); } function mMove(evt, ins) { isMoving = true eventTransform_move({ x: evt.changedTouches[0].clientX, y: evt.changedTouches[0].clientY }, ins); return false } function mEnd(evt, ins) { ins.callMethod('callEmits', { name: 'moveend', args: null }) eventTransform_end({ x: evt.changedTouches[0].clientX, y: evt.changedTouches[0].clientY }, ins) } module.exports = { mStart: mStart, mMove: mMove, mEnd: mEnd, mStartHead: mStartHead, mMoveHead: mMoveHead, mEndHead: mEndHead, propObserver: function(newValue, oldValue, ownerInstance, instance) { var ele = ownerInstance.selectComponent('.xFloatDrawerWrapContent') opts = ele.getDataset().opts; if(newValue!=undefined&&oldValue!=undefined&&newValue!=oldValue){ setTatus(newValue,ownerInstance) } } }