From 6e1139542e9f64ed478f26d1d7e6ed6832747485 Mon Sep 17 00:00:00 2001 From: Ben Freundorfer Date: Wed, 29 Jul 2015 17:17:58 +0200 Subject: [PATCH 1/2] avoid the initial 'jolt' when starting to drag the panel. this was due to the 20px threshold when deciding whether the user intended to drag the panel --- index.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 5386221..600cea1 100644 --- a/index.js +++ b/index.js @@ -217,14 +217,18 @@ Slideout.prototype._initTouchEvents = function() { */ this.panel.addEventListener(touch.move, function(eve) { + var threshold = 20; //only start to move panel, when user drags for more than threshold pixels + if (scrolling || self._preventOpen || typeof eve.touches === 'undefined') { return; } var dif_x = eve.touches[0].clientX - self._startOffsetX; var translateX = self._currentOffsetX = dif_x; - if (Math.abs(translateX) > self._padding) { return; } + if (Math.abs(translateX) > (self._padding + threshold)) { return; } + + if (Math.abs(dif_x) > threshold) { + var translateX_sign = translateX < 0 ? -1 : 1 - if (Math.abs(dif_x) > 20) { self._opening = true; var oriented_dif_x = dif_x * self._orientation; @@ -234,6 +238,8 @@ Slideout.prototype._initTouchEvents = function() { self._opening = false; } + translateX = translateX - (threshold * translateX_sign); + if (!self._moved && html.className.search('slideout-open') === -1) { html.className += ' slideout-open'; } From 48065bcb0172b3909c2efb19a94f82dc7740f052 Mon Sep 17 00:00:00 2001 From: Ben Freundorfer Date: Wed, 29 Jul 2015 18:33:34 +0200 Subject: [PATCH 2/2] move some lines to more sensible places --- index.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index 600cea1..6a4b2ec 100644 --- a/index.js +++ b/index.js @@ -217,18 +217,15 @@ Slideout.prototype._initTouchEvents = function() { */ this.panel.addEventListener(touch.move, function(eve) { - var threshold = 20; //only start to move panel, when user drags for more than threshold pixels - if (scrolling || self._preventOpen || typeof eve.touches === 'undefined') { return; } + var threshold = 20; //only start to move panel, when user drags for more than threshold pixels var dif_x = eve.touches[0].clientX - self._startOffsetX; var translateX = self._currentOffsetX = dif_x; if (Math.abs(translateX) > (self._padding + threshold)) { return; } if (Math.abs(dif_x) > threshold) { - var translateX_sign = translateX < 0 ? -1 : 1 - self._opening = true; var oriented_dif_x = dif_x * self._orientation; @@ -238,6 +235,7 @@ Slideout.prototype._initTouchEvents = function() { self._opening = false; } + var translateX_sign = translateX < 0 ? -1 : 1 translateX = translateX - (threshold * translateX_sign); if (!self._moved && html.className.search('slideout-open') === -1) {