diff --git a/dist/slider.js b/dist/slider.js index 904b199..38cf694 100644 --- a/dist/slider.js +++ b/dist/slider.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.7.1 +// Generated by CoffeeScript 1.10.0 (function() { var MODULE_NAME, SLIDER_TAG, angularize, contain, events, gap, halfWidth, hide, module, offset, offsetLeft, pixelize, qualifiedDirectiveDefinition, roundStep, show, sliderDirective, width; @@ -11,7 +11,7 @@ }; pixelize = function(position) { - return "" + position + "px"; + return position + "px"; }; hide = function(element) { @@ -98,6 +98,7 @@ ngModel: '=?', ngModelLow: '=?', ngModelHigh: '=?', + ngSlideStop: '&ngSlideStop', change: '&' }, template: '
\n
\n
{{ values.length ? values[floor || 0] : floor }}
\n
{{ values.length ? values[ceiling || values.length - 1] : ceiling }}
\n
{{ values.length ? values[local.ngModelLow || local.ngModel || 0] : local.ngModelLow || local.ngModel || 0 }}
\n
{{ values.length ? values[local.ngModelHigh] : local.ngModelHigh }}
', @@ -112,22 +113,22 @@ } return { post: function(scope, element, attributes) { - var bar, barWidth, bound, ceilBub, dimensions, e, flrBub, handleHalfWidth, highBub, lowBub, maxOffset, maxPtr, maxValue, minOffset, minPtr, minValue, ngDocument, offsetRange, selection, updateDOM, upper, valueRange, w, _i, _j, _len, _len1, _ref, _ref1; - _ref = (function() { - var _i, _len, _ref, _results; - _ref = element.children(); - _results = []; - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - e = _ref[_i]; - _results.push(angularize(e)); + var bar, barWidth, bound, ceilBub, dimensions, e, flrBub, handleHalfWidth, highBub, i, j, len, len1, lowBub, maxOffset, maxPtr, maxValue, minOffset, minPtr, minValue, ngDocument, offsetRange, ref1, ref2, selection, updateDOM, upper, valueRange, w; + ref1 = (function() { + var i, len, ref1, results; + ref1 = element.children(); + results = []; + for (i = 0, len = ref1.length; i < len; i++) { + e = ref1[i]; + results.push(angularize(e)); } - return _results; - })(), bar = _ref[0], minPtr = _ref[1], maxPtr = _ref[2], flrBub = _ref[3], ceilBub = _ref[4], lowBub = _ref[5], highBub = _ref[6]; + return results; + })(), bar = ref1[0], minPtr = ref1[1], maxPtr = ref1[2], flrBub = ref1[3], ceilBub = ref1[4], lowBub = ref1[5], highBub = ref1[6]; selection = angularize(bar.children()[0]); if (!range) { - _ref1 = [maxPtr, highBub]; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - upper = _ref1[_i]; + ref2 = [maxPtr, highBub]; + for (i = 0, len = ref2.length; i < len; i++) { + upper = ref2[i]; upper.remove(); } if (!attributes.highlight) { @@ -141,7 +142,7 @@ ngDocument = angularize(document); handleHalfWidth = barWidth = minOffset = maxOffset = minValue = maxValue = valueRange = offsetRange = void 0; dimensions = function() { - var value, _j, _len1, _ref2; + var j, len1, ref3, value; if (scope.step == null) { scope.step = 1; } @@ -154,15 +155,15 @@ if (!range) { scope.ngModelLow = scope.ngModel; } - if ((_ref2 = scope.values) != null ? _ref2.length : void 0) { + if ((ref3 = scope.values) != null ? ref3.length : void 0) { if (scope.ceiling == null) { scope.ceiling = scope.values.length - 1; } } scope.local[low] = scope[low]; scope.local[high] = scope[high]; - for (_j = 0, _len1 = watchables.length; _j < _len1; _j++) { - value = watchables[_j]; + for (j = 0, len1 = watchables.length; j < len1; j++) { + value = watchables[j]; if (typeof value === 'number') { scope[value] = roundStep(parseFloat(scope[value]), parseInt(scope.precision), parseFloat(scope.step), parseFloat(scope.floor)); } @@ -234,8 +235,8 @@ } }; onMove = function(event) { - var eventX, newOffset, newPercent, newValue, _ref2, _ref3, _ref4; - eventX = event.clientX || ((_ref2 = event.touches) != null ? _ref2[0].clientX : void 0) || ((_ref3 = event.originalEvent) != null ? (_ref4 = _ref3.changedTouches) != null ? _ref4[0].clientX : void 0 : void 0) || 0; + var eventX, newOffset, newPercent, newValue, ref3, ref4, ref5; + eventX = event.clientX || ((ref3 = event.touches) != null ? ref3[0].clientX : void 0) || ((ref4 = event.originalEvent) != null ? (ref5 = ref4.changedTouches) != null ? ref5[0].clientX : void 0 : void 0) || 0; newOffset = eventX - element[0].getBoundingClientRect().left - handleHalfWidth; newOffset = Math.max(Math.min(newOffset, maxOffset), minOffset); newPercent = percentOffset(newOffset); @@ -286,16 +287,19 @@ setPointers(); event.stopPropagation(); event.preventDefault(); + ngDocument.bind(events.end, function() { + return scope.ngSlideStop(); + }); ngDocument.bind(events.move, onMove); return ngDocument.bind(events.end, onEnd); }; return handle.bind(events.start, onStart); }; setBindings = function() { - var method, _j, _len1, _ref2; - _ref2 = ['touch', 'mouse']; - for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) { - method = _ref2[_j]; + var j, len1, method, ref3; + ref3 = ['touch', 'mouse']; + for (j = 0, len1 = ref3.length; j < len1; j++) { + method = ref3[j]; bind(minPtr, lowBub, low, events[method]); bind(maxPtr, highBub, high, events[method]); } @@ -307,8 +311,8 @@ return setPointers(); }; $timeout(updateDOM); - for (_j = 0, _len1 = watchables.length; _j < _len1; _j++) { - w = watchables[_j]; + for (j = 0, len1 = watchables.length; j < len1; j++) { + w = watchables[j]; scope.$watch(w, updateDOM, true); } return window.addEventListener('resize', updateDOM); diff --git a/slider.coffee b/slider.coffee index afd66a1..0a2c86f 100644 --- a/slider.coffee +++ b/slider.coffee @@ -56,6 +56,7 @@ sliderDirective = ($timeout) -> ngModel: '=?' ngModelLow: '=?' ngModelHigh: '=?' + ngSlideStop: '&ngSlideStop' change: '&' template: '''
@@ -216,6 +217,8 @@ sliderDirective = ($timeout) -> setPointers() event.stopPropagation() event.preventDefault() + ngDocument.bind events.end, -> + scope.ngSlideStop(); ngDocument.bind events.move, onMove ngDocument.bind events.end, onEnd handle.bind events.start, onStart