Normalized scroll sensibility

This commit is contained in:
Fede Bruchmann 2016-05-18 15:46:09 -03:00
parent 52152ad672
commit ee1e2a275f

View File

@ -611,6 +611,7 @@
disabledWeekDays: [], disabledWeekDays: [],
yearOffset: 0, yearOffset: 0,
beforeShowDay: null, beforeShowDay: null,
scrollSensitivity: 180, // milliseconds
enterLikeTab: true, enterLikeTab: true,
showApplyButton: false showApplyButton: false
@ -1863,8 +1864,42 @@
} }
}); });
/**
* Returns a function, that, when invoked, will only be triggered at most once during a given window of time.
*
* Taken from underscore.js (https://github.com/jashkenas/underscore).
*
* @param {Function} func
* @param {number} wait
* @returns {Function}
*/
throttle = function(func, wait) {
var context, args, timeout, result;
var previous = 0;
var later = function() {
previous = new Date;
timeout = null;
result = func.apply(context, args);
};
return function() {
var now = new Date;
var remaining = wait - (now - previous);
context = this;
args = arguments;
if (remaining <= 0) {
clearTimeout(timeout);
timeout = null;
previous = now;
result = func.apply(context, args);
} else if (!timeout) {
timeout = setTimeout(later, remaining);
}
return result;
};
};
datepicker datepicker
.on('mousewheel.xdsoft', function (event) { .on('mousewheel.xdsoft', throttle(function (event) {
if (!options.scrollMonth) { if (!options.scrollMonth) {
return true; return true;
} }
@ -1874,10 +1909,10 @@
_xdsoft_datetime.prevMonth(); _xdsoft_datetime.prevMonth();
} }
return false; return false;
}); }, options.scrollSensitivity));
input input
.on('mousewheel.xdsoft', function (event) { .on('mousewheel.xdsoft', throttle(function (event) {
if (!options.scrollInput) { if (!options.scrollInput) {
return true; return true;
} }
@ -1899,7 +1934,7 @@
datetimepicker.trigger('changedatetime.xdsoft'); datetimepicker.trigger('changedatetime.xdsoft');
return false; return false;
} }
}); }, options.scrollSensitivity));
datetimepicker datetimepicker
.on('changedatetime.xdsoft', function (event) { .on('changedatetime.xdsoft', function (event) {