Add 'handlers' option to configure scrolling methods
Please refer to README.md and examples/options-handlers.html for the usage.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = {
|
||||
handlers: ['click-rail', 'drag-scrollbar', 'keyboard', 'wheel', 'touch'],
|
||||
maxScrollbarLength: null,
|
||||
minScrollbarLength: null,
|
||||
scrollXMarginOffset: 0,
|
||||
@@ -10,8 +11,6 @@ module.exports = {
|
||||
suppressScrollY: false,
|
||||
swipePropagation: true,
|
||||
useBothWheelAxes: false,
|
||||
useKeyboard: true,
|
||||
useSelectionScroll: false,
|
||||
wheelPropagation: false,
|
||||
wheelSpeed: 1,
|
||||
theme: 'default'
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
var instances = require('../instances')
|
||||
, h = require('../../lib/helper')
|
||||
, updateGeometry = require('../update-geometry')
|
||||
, updateScroll = require('../update-scroll');
|
||||
|
||||
@@ -165,7 +166,11 @@ function bindTouchHandler(element, i, supportsTouch, supportsIePointer) {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = function (element, supportsTouch, supportsIePointer) {
|
||||
module.exports = function (element) {
|
||||
if (!h.env.supportsTouch && !h.env.supportsIePointer) {
|
||||
return;
|
||||
}
|
||||
|
||||
var i = instances.get(element);
|
||||
bindTouchHandler(element, i, supportsTouch, supportsIePointer);
|
||||
bindTouchHandler(element, i, h.env.supportsTouch, h.env.supportsIePointer);
|
||||
};
|
||||
|
||||
@@ -6,13 +6,15 @@ var cls = require('../lib/class')
|
||||
, updateGeometry = require('./update-geometry');
|
||||
|
||||
// Handlers
|
||||
var clickRailHandler = require('./handler/click-rail')
|
||||
, dragScrollbarHandler = require('./handler/drag-scrollbar')
|
||||
, keyboardHandler = require('./handler/keyboard')
|
||||
, mouseWheelHandler = require('./handler/mouse-wheel')
|
||||
, nativeScrollHandler = require('./handler/native-scroll')
|
||||
, selectionHandler = require('./handler/selection')
|
||||
, touchHandler = require('./handler/touch');
|
||||
var handlers = {
|
||||
'click-rail': require('./handler/click-rail'),
|
||||
'drag-scrollbar': require('./handler/drag-scrollbar'),
|
||||
'keyboard': require('./handler/keyboard'),
|
||||
'wheel': require('./handler/mouse-wheel'),
|
||||
'touch': require('./handler/touch'),
|
||||
'selection': require('./handler/selection')
|
||||
};
|
||||
var nativeScrollHandler = require('./handler/native-scroll');
|
||||
|
||||
module.exports = function (element, userSettings) {
|
||||
userSettings = typeof userSettings === 'object' ? userSettings : {};
|
||||
@@ -25,21 +27,11 @@ module.exports = function (element, userSettings) {
|
||||
i.settings = h.extend(i.settings, userSettings);
|
||||
cls.add(element, 'ps-theme-' + i.settings.theme);
|
||||
|
||||
clickRailHandler(element);
|
||||
dragScrollbarHandler(element);
|
||||
mouseWheelHandler(element);
|
||||
i.settings.handlers.forEach(function (handlerName) {
|
||||
handlers[handlerName](element);
|
||||
});
|
||||
|
||||
nativeScrollHandler(element);
|
||||
|
||||
if (i.settings.useSelectionScroll) {
|
||||
selectionHandler(element);
|
||||
}
|
||||
|
||||
if (h.env.supportsTouch || h.env.supportsIePointer) {
|
||||
touchHandler(element, h.env.supportsTouch, h.env.supportsIePointer);
|
||||
}
|
||||
if (i.settings.useKeyboard) {
|
||||
keyboardHandler(element);
|
||||
}
|
||||
|
||||
updateGeometry(element);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user