diff --git a/src/_main.js b/src/_main.js index 37f54f4..c59f63b 100644 --- a/src/_main.js +++ b/src/_main.js @@ -14,4 +14,5 @@ angular.module('ajoslin.scrolly', [ var jqLite = angular.element, copy = angular.copy, forEach = angular.forEach, - isString = angular.isString; + isString = angular.isString, + extend = angular.extend; diff --git a/src/services/dragger.js b/src/services/dragger.js index a56e418..7145da6 100644 --- a/src/services/dragger.js +++ b/src/services/dragger.js @@ -104,6 +104,9 @@ angular.module('ajoslin.scrolly.dragger', []) * A factory for creating drag-listeners on elements. * * @param {element} element Element to attach drag listeners to. + * @param {object=} options Options object. Able to have the following properties: + * - **`mouse`** - {boolean=} - Whether to bind mouse events for this dragger. Default `true`. + * - **`touch`** - {boolean=} - Whether to bind touch events for this dragger. Default `true`. * * @returns {object} Newly created dragger object with the following properties: * @@ -153,6 +156,11 @@ angular.module('ajoslin.scrolly.dragger', []) //Creates a dragger for an element function $dragger(elm, options) { + options = extend({ + mouse: true, + touch: true + }, options); + var self = {}; var raw = elm[0]; var listeners = {}; @@ -188,9 +196,17 @@ angular.module('ajoslin.scrolly.dragger', []) } }; - elm.bind('touchstart', dragStart); - elm.bind('touchmove', dragMove); - elm.bind('touchend touchcancel', dragEnd); + if (options.touch) { + elm.bind('touchstart', dragStart); + elm.bind('touchmove', dragMove); + elm.bind('touchend touchcancel', dragEnd); + } + if (options.mouse) { + elm.bind('mousedown', dragStart); + elm.bind('mousemove', dragMove); + elm.bind('mouseup mouseout', dragEnd); + } + elm.bind('$destroy', function() { delete listeners[DIRECTION_VERITCAL]; delete listeners[DIRECTION_HORIZONTAL]; diff --git a/src/services/dragger.spec.js b/src/services/dragger.spec.js index f05bc60..312bec1 100644 --- a/src/services/dragger.spec.js +++ b/src/services/dragger.spec.js @@ -8,6 +8,54 @@ describe('scrolly.dragger', function() { $dragger = _$dragger_; })); + describe('options', function() { + var elm, spy, d; + function setup(opts) { + elm = angular.element("