Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 45 additions & 7 deletions src/zepto.flickable.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
* Zepto JavaScript Library
*/
(function( $ ){

var eventData,
eventDataObject = {

Expand All @@ -38,7 +37,8 @@
flickableObjects = 0, // Number of flickable objects that have been initialised
flickThreshold = 0.7, // Threshold in which a "touch and move" becomes a "flick" (the higher the number, the faster the swipe)
minTravelDistance = 5, // This is the minimum distance in px the user's finger must travel for it to be considered a valid flick
debug = false; // If true, a floating div will display event data on screen during touches
debug = false, // If true, a floating div will display event data on screen during touches
element_moving;


var methods = {
Expand Down Expand Up @@ -133,6 +133,14 @@
$(this).flickable('flickDown', settings.onFlickDown);
},

mousedown: function(e) {
element_moving = $(this)[0];
e.preventDefault();

_resetEventData(e);
$(this).trigger("onStart");
},

touchstart: function(e) {
_resetEventData(e);
$(this).trigger("onStart");
Expand All @@ -155,6 +163,31 @@

});

$('body').bind({
mousemove: function(e) {
el = $(element_moving);

if(el && el.length) {
if(settings.preventDefault) {
e.preventDefault();
}
_updateDelta(e);
el.trigger("onMove");
}
},
mouseup: function(e) {

el = $(element_moving);
element_moving = null;

if(el) {
e.preventDefault();

_endTouch(e);
el.trigger("onEnd");
}
}
});

if(!_browserSupports('transform')){
// Browser does not support CSS3 transitions ಠ_ಠ
Expand Down Expand Up @@ -547,8 +580,8 @@
var pageX, pageY;

// Android and iOS structure event data differently
(typeof e.touches[0].pageX != 'undefined') ? pageX=e.touches[0].pageX : pageX=e.pageX;
(typeof e.touches[0].pageY != 'undefined') ? pageY=e.touches[0].pageY : pageY=e.pageY;
(e.touches && typeof e.touches[0].pageX != 'undefined') ? pageX=e.touches[0].pageX : pageX=e.pageX;
(e.touches && typeof e.touches[0].pageY != 'undefined') ? pageY=e.touches[0].pageY : pageY=e.pageY;

eventData = eventDataObject;
eventData.start = {x:pageX, y:pageY, time: e.timeStamp};
Expand All @@ -567,8 +600,8 @@
var pageX, pageY;

// Android and iOS structure event data differently
(typeof e.touches[0].pageX != 'undefined') ? pageX=e.touches[0].pageX : pageX=e.pageX;
(typeof e.touches[0].pageY != 'undefined') ? pageY=e.touches[0].pageY : pageY=e.pageY;
(e.touches && typeof e.touches[0].pageX != 'undefined') ? pageX=e.touches[0].pageX : pageX=e.pageX;
(e.touches && typeof e.touches[0].pageY != 'undefined') ? pageY=e.touches[0].pageY : pageY=e.pageY;

var dirX, dirY,
prevX = pageX,
Expand Down Expand Up @@ -617,8 +650,13 @@
flickY = 0;

if((speedX > flickThreshold)) {
el = $(element_moving);
if(el)
$(this).one('click', function(e) { e.preventDefault(); });
(Math.abs(eventData.delta.dist.x) >= minTravelDistance) ? flickX = dirX : flickX = 0;
} else if((speedY > flickThreshold)) {
if(el)
$(this).one('click', function(e) { e.preventDefault(); });
(Math.abs(eventData.delta.dist.y) >= minTravelDistance) ? flickY = dirY : flickY = 0;
}

Expand Down Expand Up @@ -734,4 +772,4 @@

}

})( Zepto );
})( Zepto );