angularjs-slider
Advanced tools
Comparing version 2.5.0 to 2.6.0
{ | ||
"name": "angularjs-slider", | ||
"version": "2.5.0", | ||
"version": "2.6.0", | ||
"homepage": "https://github.com/angular-slider/angularjs-slider", | ||
@@ -5,0 +5,0 @@ "authors": [ |
@@ -0,1 +1,8 @@ | ||
# 2.6.0 (2016-01-31) | ||
## Features | ||
- Add a `noSwitching` option to prevent the user from switching the min and max handles (#233). | ||
## Bug fixes | ||
- Refactor the internal `roundStep` function that was too strict (5d130f09d). | ||
# 2.5.0 (2016-01-24) | ||
@@ -2,0 +9,0 @@ ## Features |
@@ -32,2 +32,14 @@ var app = angular.module('rzSliderDemo', ['rzModule', 'ui.bootstrap']); | ||
//Range slider with noSwitching config | ||
$scope.noSwitchingSlider = { | ||
minValue: 10, | ||
maxValue: 90, | ||
options: { | ||
floor: 0, | ||
ceil: 100, | ||
step: 1, | ||
noSwitching: true | ||
} | ||
}; | ||
//Slider with selection bar | ||
@@ -34,0 +46,0 @@ $scope.slider_visible_bar = { |
@@ -1,5 +0,5 @@ | ||
/*! angularjs-slider - v2.5.0 - | ||
/*! angularjs-slider - v2.6.0 - | ||
(c) Rafal Zajac <rzajac@gmail.com>, Valentin Hervieu <valentin@hervieu.me>, Jussi Saarivirta <jusasi@gmail.com>, Angelin Sirbu <angelin.sirbu@gmail.com> - | ||
https://github.com/angular-slider/angularjs-slider - | ||
2016-01-24 */ | ||
2016-01-31 */ | ||
/*jslint unparam: true */ | ||
@@ -55,2 +55,3 @@ /*global angular: false, console: false, define, module */ | ||
enforceRange: false, | ||
noSwitching: false, | ||
onlyBindHandles: false, | ||
@@ -635,2 +636,4 @@ onStart: null, | ||
this.minValue = this.options.floor; | ||
this.scope.rzSliderModel = this.roundStep(this.scope.rzSliderModel); | ||
@@ -640,6 +643,4 @@ if (this.range) | ||
this.minValue = this.roundStep(+this.options.floor); | ||
if (this.options.ceil != null) | ||
this.maxValue = this.roundStep(+this.options.ceil); | ||
this.maxValue = this.options.ceil; | ||
else | ||
@@ -804,3 +805,3 @@ this.maxValue = this.options.ceil = this.range ? this.scope.rzSliderHigh : this.scope.rzSliderModel; | ||
var self = this; | ||
this.scope.$evalAsync(function () { | ||
this.scope.$evalAsync(function() { | ||
self.options.onStart(self.options.id, self.scope.rzSliderModel, self.scope.rzSliderHigh); | ||
@@ -820,3 +821,3 @@ }); | ||
var self = this; | ||
this.scope.$evalAsync(function () { | ||
this.scope.$evalAsync(function() { | ||
self.options.onChange(self.options.id, self.scope.rzSliderModel, self.scope.rzSliderHigh); | ||
@@ -836,3 +837,3 @@ }); | ||
var self = this; | ||
this.scope.$evalAsync(function () { | ||
this.scope.$evalAsync(function() { | ||
self.options.onEnd(self.options.id, self.scope.rzSliderModel, self.scope.rzSliderHigh); | ||
@@ -852,3 +853,3 @@ }); | ||
this.updateLowHandle(newOffset); | ||
else if (which === 'rzSliderHigh') | ||
else | ||
this.updateHighHandle(newOffset); | ||
@@ -893,3 +894,3 @@ | ||
/** | ||
* Show / hide floor / ceiling label | ||
* Show/hide floor/ceiling label | ||
* | ||
@@ -1004,3 +1005,3 @@ * @returns {undefined} | ||
/** | ||
* Round value to step and precision | ||
* Round value to step and precision based on minValue | ||
* | ||
@@ -1011,6 +1012,6 @@ * @param {number} value | ||
roundStep: function(value) { | ||
var steppedValue = parseFloat(value / this.step).toPrecision(12) | ||
steppedValue = Math.round(steppedValue) * this.step; | ||
steppedValue = steppedValue.toFixed(this.precision); | ||
return +steppedValue; | ||
var steppedDifference = parseFloat((value - this.minValue) / this.step).toPrecision(12); | ||
steppedDifference = Math.round(+steppedDifference) * this.step; | ||
var newValue = (this.minValue + (+steppedDifference)).toFixed(this.precision); | ||
return +newValue; | ||
}, | ||
@@ -1190,4 +1191,11 @@ | ||
} | ||
var offset = this.getEventPosition(event); | ||
return Math.abs(offset - this.minH.rzsp) < Math.abs(offset - this.maxH.rzsp) ? this.minH : this.maxH; | ||
var offset = this.getEventPosition(event), | ||
distanceMin = Math.abs(offset - this.minH.rzsp), | ||
distanceMax = Math.abs(offset - this.maxH.rzsp); | ||
if (distanceMin < distanceMax) | ||
return this.minH; | ||
else if (distanceMin > distanceMax) | ||
return this.maxH; | ||
else //if event is at the same distance from min/max then if it's at left of minH, we return minH else maxH | ||
return offset < this.minH.rzsp ? this.minH : this.maxH; | ||
}, | ||
@@ -1336,17 +1344,10 @@ | ||
if (newOffset <= 0) { | ||
if (pointer.rzsp === 0) | ||
return; | ||
newValue = this.minValue; | ||
newOffset = 0; | ||
} else if (newOffset >= this.maxPos) { | ||
if (pointer.rzsp === this.maxPos) | ||
return; | ||
newValue = this.maxValue; | ||
newOffset = this.maxPos; | ||
} else { | ||
newValue = this.offsetToValue(newOffset); | ||
newValue = this.roundStep(newValue); | ||
newOffset = this.valueToOffset(newValue); | ||
} | ||
this.positionTrackingHandle(newValue, newOffset); | ||
this.positionTrackingHandle(newValue); | ||
}, | ||
@@ -1417,13 +1418,10 @@ | ||
var newValue = this.roundStep(this.sanitizeValue(action)), | ||
newOffset = this.valueToOffset(newValue); | ||
var newValue = this.roundStep(this.sanitizeValue(action)); | ||
if (!this.options.draggableRangeOnly) { | ||
this.positionTrackingHandle(newValue, newOffset); | ||
this.positionTrackingHandle(newValue); | ||
} else { | ||
var difference = this.scope.rzSliderHigh - this.scope.rzSliderModel, | ||
newMinOffset, newMaxOffset, | ||
newMinValue, newMaxValue; | ||
if (this.tracking === 'rzSliderModel') { | ||
newMinValue = newValue; | ||
newMinOffset = newOffset; | ||
newMaxValue = newValue + difference; | ||
@@ -1433,8 +1431,5 @@ if (newMaxValue > this.maxValue) { | ||
newMinValue = newMaxValue - difference; | ||
newMinOffset = this.valueToOffset(newMinValue); | ||
} | ||
newMaxOffset = this.valueToOffset(newMaxValue); | ||
} else { | ||
newMaxValue = newValue; | ||
newMaxOffset = newOffset; | ||
newMinValue = newValue - difference; | ||
@@ -1444,7 +1439,5 @@ if (newMinValue < this.minValue) { | ||
newMaxValue = newMinValue + difference; | ||
newMaxOffset = this.valueToOffset(newMaxValue); | ||
} | ||
newMinOffset = this.valueToOffset(newMinValue); | ||
} | ||
this.positionTrackingBar(newMinValue, newMaxValue, newMinOffset, newMaxOffset); | ||
this.positionTrackingBar(newMinValue, newMaxValue); | ||
} | ||
@@ -1487,3 +1480,2 @@ }, | ||
var newOffset = this.getEventPosition(event), | ||
newMinOffset, newMaxOffset, | ||
newMinValue, newMaxValue; | ||
@@ -1495,5 +1487,3 @@ | ||
newMinValue = this.minValue; | ||
newMinOffset = 0; | ||
newMaxValue = this.minValue + this.dragging.difference; | ||
newMaxOffset = this.valueToOffset(newMaxValue); | ||
} else if (newOffset >= this.maxPos - this.dragging.highLimit) { | ||
@@ -1503,14 +1493,10 @@ if (this.maxH.rzsp === this.maxPos) | ||
newMaxValue = this.maxValue; | ||
newMaxOffset = this.maxPos; | ||
newMinValue = this.maxValue - this.dragging.difference; | ||
newMinOffset = this.valueToOffset(newMinValue); | ||
} else { | ||
newMinValue = this.offsetToValue(newOffset - this.dragging.lowLimit); | ||
newMinValue = this.roundStep(newMinValue); | ||
newMinOffset = this.valueToOffset(newMinValue); | ||
newMaxValue = newMinValue + this.dragging.difference; | ||
newMaxOffset = this.valueToOffset(newMaxValue); | ||
} | ||
this.positionTrackingBar(newMinValue, newMaxValue, newMinOffset, newMaxOffset); | ||
this.positionTrackingBar(newMinValue, newMaxValue); | ||
}, | ||
@@ -1523,10 +1509,8 @@ | ||
* @param {number} newMaxValue the new maximum value | ||
* @param {number} newMinOffset the new minimum offset | ||
* @param {number} newMaxOffset the new maximum offset | ||
*/ | ||
positionTrackingBar: function(newMinValue, newMaxValue, newMinOffset, newMaxOffset) { | ||
positionTrackingBar: function(newMinValue, newMaxValue) { | ||
this.scope.rzSliderModel = newMinValue; | ||
this.scope.rzSliderHigh = newMaxValue; | ||
this.updateHandles('rzSliderModel', newMinOffset); | ||
this.updateHandles('rzSliderHigh', newMaxOffset); | ||
this.updateHandles('rzSliderModel', this.valueToOffset(newMinValue)); | ||
this.updateHandles('rzSliderHigh', this.valueToOffset(newMaxValue)); | ||
this.applyModel(); | ||
@@ -1539,33 +1523,38 @@ }, | ||
* @param {number} newValue new model value | ||
* @param {number} newOffset new offset value | ||
*/ | ||
positionTrackingHandle: function(newValue, newOffset) { | ||
positionTrackingHandle: function(newValue) { | ||
var valueChanged = false; | ||
var switched = false; | ||
if (this.range) { | ||
newValue = this.applyMinRange(newValue); | ||
newOffset = this.valueToOffset(newValue); | ||
/* This is to check if we need to switch the min and max handles */ | ||
if (this.tracking === 'rzSliderModel' && newValue >= this.scope.rzSliderHigh) { | ||
switched = true; | ||
this.scope[this.tracking] = this.scope.rzSliderHigh; | ||
this.updateHandles(this.tracking, this.maxH.rzsp); | ||
this.updateAriaAttributes(); | ||
this.tracking = 'rzSliderHigh'; | ||
this.minH.removeClass('rz-active'); | ||
this.maxH.addClass('rz-active'); | ||
if (this.options.keyboardSupport) | ||
this.focusElement(this.maxH); | ||
if (this.tracking === 'rzSliderModel' && newValue > this.scope.rzSliderHigh) { | ||
if (this.options.noSwitching && this.scope.rzSliderHigh !== this.minValue) { | ||
newValue = this.applyMinRange(this.scope.rzSliderHigh); | ||
} | ||
else { | ||
this.scope[this.tracking] = this.scope.rzSliderHigh; | ||
this.updateHandles(this.tracking, this.maxH.rzsp); | ||
this.updateAriaAttributes(); | ||
this.tracking = 'rzSliderHigh'; | ||
this.minH.removeClass('rz-active'); | ||
this.maxH.addClass('rz-active'); | ||
if (this.options.keyboardSupport) | ||
this.focusElement(this.maxH); | ||
} | ||
valueChanged = true; | ||
} else if (this.tracking === 'rzSliderHigh' && newValue <= this.scope.rzSliderModel) { | ||
switched = true; | ||
this.scope[this.tracking] = this.scope.rzSliderModel; | ||
this.updateHandles(this.tracking, this.minH.rzsp); | ||
this.updateAriaAttributes(); | ||
this.tracking = 'rzSliderModel'; | ||
this.maxH.removeClass('rz-active'); | ||
this.minH.addClass('rz-active'); | ||
if (this.options.keyboardSupport) | ||
this.focusElement(this.minH); | ||
} else if (this.tracking === 'rzSliderHigh' && newValue < this.scope.rzSliderModel) { | ||
if (this.options.noSwitching && this.scope.rzSliderModel !== this.maxValue) { | ||
newValue = this.applyMinRange(this.scope.rzSliderModel); | ||
} | ||
else { | ||
this.scope[this.tracking] = this.scope.rzSliderModel; | ||
this.updateHandles(this.tracking, this.minH.rzsp); | ||
this.updateAriaAttributes(); | ||
this.tracking = 'rzSliderModel'; | ||
this.maxH.removeClass('rz-active'); | ||
this.minH.addClass('rz-active'); | ||
if (this.options.keyboardSupport) | ||
this.focusElement(this.minH); | ||
} | ||
valueChanged = true; | ||
@@ -1577,3 +1566,3 @@ } | ||
this.scope[this.tracking] = newValue; | ||
this.updateHandles(this.tracking, newOffset); | ||
this.updateHandles(this.tracking, this.valueToOffset(newValue)); | ||
this.updateAriaAttributes(); | ||
@@ -1583,6 +1572,4 @@ valueChanged = true; | ||
if (valueChanged) { | ||
if (valueChanged) | ||
this.applyModel(); | ||
} | ||
return switched; | ||
}, | ||
@@ -1589,0 +1576,0 @@ |
@@ -1,2 +0,2 @@ | ||
/*! angularjs-slider - v2.5.0 - (c) Rafal Zajac <rzajac@gmail.com>, Valentin Hervieu <valentin@hervieu.me>, Jussi Saarivirta <jusasi@gmail.com>, Angelin Sirbu <angelin.sirbu@gmail.com> - https://github.com/angular-slider/angularjs-slider - 2016-01-24 */ | ||
!function(a,b){"use strict";"function"==typeof define&&define.amd?define(["angular"],b):"object"==typeof module&&module.exports?module.exports=b(require("angular")):b(a.angular)}(this,function(a){"use strict";var b=a.module("rzModule",[]).factory("RzSliderOptions",function(){var b={floor:0,ceil:null,step:1,precision:0,minRange:0,id:null,translate:null,stepsArray:null,draggableRange:!1,draggableRangeOnly:!1,showSelectionBar:!1,showSelectionBarEnd:!1,hideLimitLabels:!1,readOnly:!1,disabled:!1,interval:350,showTicks:!1,showTicksValues:!1,ticksTooltip:null,ticksValuesTooltip:null,vertical:!1,selectionBarColor:null,keyboardSupport:!0,scale:1,enforceRange:!1,onlyBindHandles:!1,onStart:null,onChange:null,onEnd:null},c={},d={};return d.options=function(b){a.extend(c,b)},d.getOptions=function(d){return a.extend({},b,c,d)},d}).factory("rzThrottle",["$timeout",function(a){return function(b,c,d){var e,f,g,h=Date.now||function(){return(new Date).getTime()},i=null,j=0;d=d||{};var k=function(){j=h(),i=null,g=b.apply(e,f),e=f=null};return function(){var l=h(),m=c-(l-j);return e=this,f=arguments,0>=m?(a.cancel(i),i=null,j=l,g=b.apply(e,f),e=f=null):i||d.trailing===!1||(i=a(k,m)),g}}}]).factory("RzSlider",["$timeout","$document","$window","$compile","RzSliderOptions","rzThrottle",function(b,c,d,e,f,g){var h=function(a,b){this.scope=a,this.sliderElem=b,this.range=void 0!==this.scope.rzSliderModel&&void 0!==this.scope.rzSliderHigh,this.dragging={active:!1,value:0,difference:0,offset:0,lowLimit:0,highLimit:0},this.positionProperty="left",this.dimensionProperty="width",this.handleHalfDim=0,this.maxPos=0,this.precision=0,this.step=1,this.tracking="",this.minValue=0,this.maxValue=0,this.valueRange=0,this.initHasRun=!1,this.internalChange=!1,this.fullBar=null,this.selBar=null,this.minH=null,this.maxH=null,this.flrLab=null,this.ceilLab=null,this.minLab=null,this.maxLab=null,this.cmbLab=null,this.ticks=null,this.init()};return h.prototype={init:function(){var b,c,e=this,f=function(){e.calcViewDimensions()};this.applyOptions(),this.initElemHandles(),this.manageElementsStyle(),this.setDisabledState(),this.calcViewDimensions(),this.setMinAndMax(),this.addAccessibility(),this.updateCeilLab(),this.updateFloorLab(),this.initHandles(),this.manageEventsBindings(),this.scope.$on("reCalcViewDimensions",f),a.element(d).on("resize",f),this.initHasRun=!0,b=g(function(){e.onLowHandleChange()},e.options.interval),c=g(function(){e.onHighHandleChange()},e.options.interval),this.scope.$on("rzSliderForceRender",function(){e.resetLabelsValue(),b(),e.range&&c(),e.resetSlider()}),this.scope.$watch("rzSliderOptions",function(a,b){a!==b&&(e.applyOptions(),e.resetSlider())},!0),this.scope.$watch("rzSliderModel",function(a,c){e.internalChange||a!==c&&b()}),this.scope.$watch("rzSliderHigh",function(a,b){e.internalChange||a!==b&&(null!=a&&c(),(e.range&&null==a||!e.range&&null!=a)&&(e.applyOptions(),e.resetSlider()))}),this.scope.$on("$destroy",function(){e.unbindEvents(),a.element(d).off("resize",f)})},onLowHandleChange:function(){this.setMinAndMax(),this.updateLowHandle(this.valueToOffset(this.scope.rzSliderModel)),this.updateSelectionBar(),this.updateTicksScale(),this.updateAriaAttributes(),this.range&&this.updateCmbLabel()},onHighHandleChange:function(){this.setMinAndMax(),this.updateHighHandle(this.valueToOffset(this.scope.rzSliderHigh)),this.updateSelectionBar(),this.updateTicksScale(),this.updateCmbLabel(),this.updateAriaAttributes()},applyOptions:function(){this.options=f.getOptions(this.scope.rzSliderOptions),this.options.step<=0&&(this.options.step=1),this.range=void 0!==this.scope.rzSliderModel&&void 0!==this.scope.rzSliderHigh,this.options.draggableRange=this.range&&this.options.draggableRange,this.options.draggableRangeOnly=this.range&&this.options.draggableRangeOnly,this.options.draggableRangeOnly&&(this.options.draggableRange=!0),this.options.showTicks=this.options.showTicks||this.options.showTicksValues,this.scope.showTicks=this.options.showTicks,this.options.showSelectionBar=this.options.showSelectionBar||this.options.showSelectionBarEnd,this.options.stepsArray?(this.options.floor=0,this.options.ceil=this.options.stepsArray.length-1,this.options.step=1,this.customTrFn=function(a){return this.options.stepsArray[a]}):this.options.translate?this.customTrFn=this.options.translate:this.customTrFn=function(a){return String(a)},this.options.vertical&&(this.positionProperty="bottom",this.dimensionProperty="height")},resetSlider:function(){this.manageElementsStyle(),this.addAccessibility(),this.setMinAndMax(),this.updateCeilLab(),this.updateFloorLab(),this.unbindEvents(),this.manageEventsBindings(),this.setDisabledState(),this.calcViewDimensions()},initElemHandles:function(){a.forEach(this.sliderElem.children(),function(b,c){var d=a.element(b);switch(c){case 0:this.fullBar=d;break;case 1:this.selBar=d;break;case 2:this.minH=d;break;case 3:this.maxH=d;break;case 4:this.flrLab=d;break;case 5:this.ceilLab=d;break;case 6:this.minLab=d;break;case 7:this.maxLab=d;break;case 8:this.cmbLab=d;break;case 9:this.ticks=d}},this),this.selBar.rzsp=0,this.minH.rzsp=0,this.maxH.rzsp=0,this.flrLab.rzsp=0,this.ceilLab.rzsp=0,this.minLab.rzsp=0,this.maxLab.rzsp=0,this.cmbLab.rzsp=0},manageElementsStyle:function(){this.range?this.maxH.css("display",""):this.maxH.css("display","none"),this.alwaysHide(this.flrLab,this.options.showTicksValues||this.options.hideLimitLabels),this.alwaysHide(this.ceilLab,this.options.showTicksValues||this.options.hideLimitLabels),this.alwaysHide(this.minLab,this.options.showTicksValues),this.alwaysHide(this.maxLab,this.options.showTicksValues||!this.range),this.alwaysHide(this.cmbLab,this.options.showTicksValues||!this.range),this.alwaysHide(this.selBar,!this.range&&!this.options.showSelectionBar),this.options.vertical&&this.sliderElem.addClass("vertical"),this.options.draggableRange?this.selBar.addClass("rz-draggable"):this.selBar.removeClass("rz-draggable")},alwaysHide:function(a,b){a.rzAlwaysHide=b,b?this.hideEl(a):this.showEl(a)},manageEventsBindings:function(){this.options.disabled||this.options.readOnly?this.unbindEvents():this.bindEvents()},setDisabledState:function(){this.options.disabled?this.sliderElem.attr("disabled","disabled"):this.sliderElem.attr("disabled",null)},resetLabelsValue:function(){this.minLab.rzsv=void 0,this.maxLab.rzsv=void 0},initHandles:function(){this.updateLowHandle(this.valueToOffset(this.scope.rzSliderModel)),this.range&&this.updateHighHandle(this.valueToOffset(this.scope.rzSliderHigh)),this.updateSelectionBar(),this.range&&this.updateCmbLabel(),this.updateTicksScale()},translateFn:function(a,b,c){c=void 0===c?!0:c;var d=String(c?this.customTrFn(a,this.options.id):a),e=!1;(void 0===b.rzsv||b.rzsv.length!==d.length||b.rzsv.length>0&&0===b.rzsd)&&(e=!0,b.rzsv=d),b.text(d),e&&this.getDimension(b)},setMinAndMax:function(){this.step=+this.options.step,this.precision=+this.options.precision,this.scope.rzSliderModel=this.roundStep(this.scope.rzSliderModel),this.range&&(this.scope.rzSliderHigh=this.roundStep(this.scope.rzSliderHigh)),this.minValue=this.roundStep(+this.options.floor),null!=this.options.ceil?this.maxValue=this.roundStep(+this.options.ceil):this.maxValue=this.options.ceil=this.range?this.scope.rzSliderHigh:this.scope.rzSliderModel,this.options.enforceRange&&(this.scope.rzSliderModel=this.sanitizeValue(this.scope.rzSliderModel),this.range&&(this.scope.rzSliderHigh=this.sanitizeValue(this.scope.rzSliderHigh))),this.valueRange=this.maxValue-this.minValue},addAccessibility:function(){this.minH.attr("role","slider"),this.updateAriaAttributes(),!this.options.keyboardSupport||this.options.readOnly||this.options.disabled?this.minH.attr("tabindex",""):this.minH.attr("tabindex","0"),this.options.vertical&&this.minH.attr("aria-orientation","vertical"),this.range&&(this.maxH.attr("role","slider"),!this.options.keyboardSupport||this.options.readOnly||this.options.disabled?this.maxH.attr("tabindex",""):this.maxH.attr("tabindex","0"),this.options.vertical&&this.maxH.attr("aria-orientation","vertical"))},updateAriaAttributes:function(){this.minH.attr({"aria-valuenow":this.scope.rzSliderModel,"aria-valuetext":this.customTrFn(this.scope.rzSliderModel),"aria-valuemin":this.minValue,"aria-valuemax":this.maxValue}),this.range&&this.maxH.attr({"aria-valuenow":this.scope.rzSliderHigh,"aria-valuetext":this.customTrFn(this.scope.rzSliderHigh),"aria-valuemin":this.minValue,"aria-valuemax":this.maxValue})},calcViewDimensions:function(){var a=this.getDimension(this.minH);this.handleHalfDim=a/2,this.barDimension=this.getDimension(this.fullBar),this.maxPos=this.barDimension-a,this.getDimension(this.sliderElem),this.sliderElem.rzsp=this.sliderElem[0].getBoundingClientRect()[this.positionProperty],this.initHasRun&&(this.updateFloorLab(),this.updateCeilLab(),this.initHandles())},updateTicksScale:function(){if(this.options.showTicks){var a=Math.round((this.maxValue-this.minValue)/this.step)+1;this.scope.ticks=[];for(var b=0;a>b;b++){var c=this.roundStep(this.minValue+b*this.step),d={selected:this.isTickSelected(c)};d.selected&&this.options.getSelectionBarColor&&(d.style={"background-color":this.getSelectionBarColor()}),this.options.ticksTooltip&&(d.tooltip=this.options.ticksTooltip(c),d.tooltipPlacement=this.options.vertical?"right":"top"),this.options.showTicksValues&&(d.value=this.getDisplayValue(c),this.options.ticksValuesTooltip&&(d.valueTooltip=this.options.ticksValuesTooltip(c),d.valueTooltipPlacement=this.options.vertical?"right":"top")),this.scope.ticks.push(d)}}},isTickSelected:function(a){return!this.range&&this.options.showSelectionBar&&a<=this.scope.rzSliderModel?!0:this.range&&a>=this.scope.rzSliderModel&&a<=this.scope.rzSliderHigh?!0:!1},updateCeilLab:function(){this.translateFn(this.maxValue,this.ceilLab),this.setPosition(this.ceilLab,this.barDimension-this.ceilLab.rzsd),this.getDimension(this.ceilLab)},updateFloorLab:function(){this.translateFn(this.minValue,this.flrLab),this.getDimension(this.flrLab)},callOnStart:function(){if(this.options.onStart){var a=this;this.scope.$evalAsync(function(){a.options.onStart(a.options.id,a.scope.rzSliderModel,a.scope.rzSliderHigh)})}},callOnChange:function(){if(this.options.onChange){var a=this;this.scope.$evalAsync(function(){a.options.onChange(a.options.id,a.scope.rzSliderModel,a.scope.rzSliderHigh)})}},callOnEnd:function(){if(this.options.onEnd){var a=this;this.scope.$evalAsync(function(){a.options.onEnd(a.options.id,a.scope.rzSliderModel,a.scope.rzSliderHigh)})}},updateHandles:function(a,b){"rzSliderModel"===a?this.updateLowHandle(b):"rzSliderHigh"===a&&this.updateHighHandle(b),this.updateSelectionBar(),this.updateTicksScale(),this.range&&this.updateCmbLabel()},updateLowHandle:function(a){this.setPosition(this.minH,a),this.translateFn(this.scope.rzSliderModel,this.minLab);var b=Math.min(Math.max(a-this.minLab.rzsd/2+this.handleHalfDim,0),this.barDimension-this.ceilLab.rzsd);this.setPosition(this.minLab,b),this.shFloorCeil()},updateHighHandle:function(a){this.setPosition(this.maxH,a),this.translateFn(this.scope.rzSliderHigh,this.maxLab);var b=Math.min(a-this.maxLab.rzsd/2+this.handleHalfDim,this.barDimension-this.ceilLab.rzsd);this.setPosition(this.maxLab,b),this.shFloorCeil()},shFloorCeil:function(){var a=!1,b=!1;this.minLab.rzsp<=this.flrLab.rzsp+this.flrLab.rzsd+5?(a=!0,this.hideEl(this.flrLab)):(a=!1,this.showEl(this.flrLab)),this.minLab.rzsp+this.minLab.rzsd>=this.ceilLab.rzsp-this.handleHalfDim-10?(b=!0,this.hideEl(this.ceilLab)):(b=!1,this.showEl(this.ceilLab)),this.range&&(this.maxLab.rzsp+this.maxLab.rzsd>=this.ceilLab.rzsp-10?this.hideEl(this.ceilLab):b||this.showEl(this.ceilLab),this.maxLab.rzsp<=this.flrLab.rzsp+this.flrLab.rzsd+this.handleHalfDim?this.hideEl(this.flrLab):a||this.showEl(this.flrLab))},updateSelectionBar:function(){var a=0,b=0;if(this.range||!this.options.showSelectionBarEnd?(b=Math.abs(this.maxH.rzsp-this.minH.rzsp)+this.handleHalfDim,a=this.range?this.minH.rzsp+this.handleHalfDim:0):(b=Math.abs(this.maxPos-this.minH.rzsp)+this.handleHalfDim,a=this.minH.rzsp+this.handleHalfDim),this.setDimension(this.selBar,b),this.setPosition(this.selBar,a),this.options.getSelectionBarColor){var c=this.getSelectionBarColor();this.scope.barStyle={backgroundColor:c}}},getSelectionBarColor:function(){return this.range?this.options.getSelectionBarColor(this.scope.rzSliderModel,this.scope.rzSliderHigh):this.options.getSelectionBarColor(this.scope.rzSliderModel)},updateCmbLabel:function(){var a,b;if(this.minLab.rzsp+this.minLab.rzsd+10>=this.maxLab.rzsp){a=this.getDisplayValue(this.scope.rzSliderModel),b=this.getDisplayValue(this.scope.rzSliderHigh),this.translateFn(a+" - "+b,this.cmbLab,!1);var c=Math.min(Math.max(this.selBar.rzsp+this.selBar.rzsd/2-this.cmbLab.rzsd/2,0),this.barDimension-this.cmbLab.rzsd);this.setPosition(this.cmbLab,c),this.hideEl(this.minLab),this.hideEl(this.maxLab),this.showEl(this.cmbLab)}else this.showEl(this.maxLab),this.showEl(this.minLab),this.hideEl(this.cmbLab)},getDisplayValue:function(a){return this.customTrFn(a,this.options.id)},roundStep:function(a){var b=parseFloat(a/this.step).toPrecision(12);return b=Math.round(b)*this.step,b=b.toFixed(this.precision),+b},hideEl:function(a){return a.css({opacity:0})},showEl:function(a){return a.rzAlwaysHide?a:a.css({opacity:1})},setPosition:function(a,b){a.rzsp=b;var c={};return c[this.positionProperty]=b+"px",a.css(c),b},getDimension:function(a){var b=a[0].getBoundingClientRect();return this.options.vertical?a.rzsd=(b.bottom-b.top)*this.options.scale:a.rzsd=(b.right-b.left)*this.options.scale,a.rzsd},setDimension:function(a,b){a.rzsd=b;var c={};return c[this.dimensionProperty]=b+"px",a.css(c),b},valueToOffset:function(a){return(this.sanitizeValue(a)-this.minValue)*this.maxPos/this.valueRange||0},sanitizeValue:function(a){return Math.min(Math.max(a,this.minValue),this.maxValue)},offsetToValue:function(a){return a/this.maxPos*this.valueRange+this.minValue},getEventXY:function(a){var b=this.options.vertical?"clientY":"clientX";return b in a?a[b]:void 0===a.originalEvent?a.touches[0][b]:a.originalEvent.touches[0][b]},getEventPosition:function(a){var b=this.sliderElem.rzsp,c=0;return c=this.options.vertical?-this.getEventXY(a)+b:this.getEventXY(a)-b,(c-this.handleHalfDim)*this.options.scale},getEventNames:function(a){var b={moveEvent:"",endEvent:""};return a.touches||void 0!==a.originalEvent&&a.originalEvent.touches?(b.moveEvent="touchmove",b.endEvent="touchend"):(b.moveEvent="mousemove",b.endEvent="mouseup"),b},getNearestHandle:function(a){if(!this.range)return this.minH;var b=this.getEventPosition(a);return Math.abs(b-this.minH.rzsp)<Math.abs(b-this.maxH.rzsp)?this.minH:this.maxH},focusElement:function(a){var b=0;a[b].focus()},bindEvents:function(){var b,c,d;this.options.draggableRange?(b="rzSliderDrag",c=this.onDragStart,d=this.onDragMove):(b="rzSliderModel",c=this.onStart,d=this.onMove),this.options.onlyBindHandles||(this.selBar.on("mousedown",a.bind(this,c,null,b)),this.selBar.on("mousedown",a.bind(this,d,this.selBar))),this.options.draggableRangeOnly?(this.minH.on("mousedown",a.bind(this,c,null,b)),this.maxH.on("mousedown",a.bind(this,c,null,b))):(this.minH.on("mousedown",a.bind(this,this.onStart,this.minH,"rzSliderModel")),this.range&&this.maxH.on("mousedown",a.bind(this,this.onStart,this.maxH,"rzSliderHigh")),this.options.onlyBindHandles||(this.fullBar.on("mousedown",a.bind(this,this.onStart,null,null)),this.fullBar.on("mousedown",a.bind(this,this.onMove,this.fullBar)),this.ticks.on("mousedown",a.bind(this,this.onStart,null,null)),this.ticks.on("mousedown",a.bind(this,this.onMove,this.ticks)))),this.options.onlyBindHandles||(this.selBar.on("touchstart",a.bind(this,c,null,b)),this.selBar.on("touchstart",a.bind(this,d,this.selBar))),this.options.draggableRangeOnly?(this.minH.on("touchstart",a.bind(this,c,null,b)),this.maxH.on("touchstart",a.bind(this,c,null,b))):(this.minH.on("touchstart",a.bind(this,this.onStart,this.minH,"rzSliderModel")),this.range&&this.maxH.on("touchstart",a.bind(this,this.onStart,this.maxH,"rzSliderHigh")),this.options.onlyBindHandles||(this.fullBar.on("touchstart",a.bind(this,this.onStart,null,null)),this.fullBar.on("touchstart",a.bind(this,this.onMove,this.fullBar)),this.ticks.on("touchstart",a.bind(this,this.onStart,null,null)),this.ticks.on("touchstart",a.bind(this,this.onMove,this.ticks)))),this.options.keyboardSupport&&(this.minH.on("focus",a.bind(this,this.onPointerFocus,this.minH,"rzSliderModel")),this.range&&this.maxH.on("focus",a.bind(this,this.onPointerFocus,this.maxH,"rzSliderHigh")))},unbindEvents:function(){this.minH.off(),this.maxH.off(),this.fullBar.off(),this.selBar.off(),this.ticks.off()},onStart:function(b,d,e){var f,g,h=this.getEventNames(e);e.stopPropagation(),e.preventDefault(),this.calcViewDimensions(),b?this.tracking=d:(b=this.getNearestHandle(e),this.tracking=b===this.minH?"rzSliderModel":"rzSliderHigh"),b.addClass("rz-active"),this.options.keyboardSupport&&this.focusElement(b),f=a.bind(this,this.dragging.active?this.onDragMove:this.onMove,b),g=a.bind(this,this.onEnd,f),c.on(h.moveEvent,f),c.one(h.endEvent,g),this.callOnStart()},onMove:function(a,b){var c,d=this.getEventPosition(b);if(0>=d){if(0===a.rzsp)return;c=this.minValue,d=0}else if(d>=this.maxPos){if(a.rzsp===this.maxPos)return;c=this.maxValue,d=this.maxPos}else c=this.offsetToValue(d),c=this.roundStep(c),d=this.valueToOffset(c);this.positionTrackingHandle(c,d)},onEnd:function(a,b){var d=this.getEventNames(b).moveEvent;this.options.keyboardSupport||(this.minH.removeClass("rz-active"),this.maxH.removeClass("rz-active"),this.tracking=""),this.dragging.active=!1,c.off(d,a),this.scope.$emit("slideEnded"),this.callOnEnd()},onPointerFocus:function(b,c){this.tracking=c,b.one("blur",a.bind(this,this.onPointerBlur,b)),b.on("keydown",a.bind(this,this.onKeyboardEvent)),b.addClass("rz-active")},onPointerBlur:function(a){a.off("keydown"),this.tracking="",a.removeClass("rz-active")},onKeyboardEvent:function(a){var b=this.scope[this.tracking],c=a.keyCode||a.which,d={38:"UP",40:"DOWN",37:"LEFT",39:"RIGHT",33:"PAGEUP",34:"PAGEDOWN",36:"HOME",35:"END"},e={UP:b+this.step,DOWN:b-this.step,LEFT:b-this.step,RIGHT:b+this.step,PAGEUP:b+this.valueRange/10,PAGEDOWN:b-this.valueRange/10,HOME:this.minValue,END:this.maxValue},f=d[c],g=e[f];if(null!=g&&""!==this.tracking){a.preventDefault();var h=this.roundStep(this.sanitizeValue(g)),i=this.valueToOffset(h);if(this.options.draggableRangeOnly){var j,k,l,m,n=this.scope.rzSliderHigh-this.scope.rzSliderModel;"rzSliderModel"===this.tracking?(l=h,j=i,m=h+n,m>this.maxValue&&(m=this.maxValue,l=m-n,j=this.valueToOffset(l)),k=this.valueToOffset(m)):(m=h,k=i,l=h-n,l<this.minValue&&(l=this.minValue,m=l+n,k=this.valueToOffset(m)),j=this.valueToOffset(l)),this.positionTrackingBar(l,m,j,k)}else this.positionTrackingHandle(h,i)}},onDragStart:function(a,b,c){var d=this.getEventPosition(c);this.dragging={active:!0,value:this.offsetToValue(d),difference:this.scope.rzSliderHigh-this.scope.rzSliderModel,lowLimit:d-this.minH.rzsp,highLimit:this.maxH.rzsp-d},this.onStart(a,b,c)},onDragMove:function(a,b){var c,d,e,f,g=this.getEventPosition(b);if(g<=this.dragging.lowLimit){if(0===this.minH.rzsp)return;e=this.minValue,c=0,f=this.minValue+this.dragging.difference,d=this.valueToOffset(f)}else if(g>=this.maxPos-this.dragging.highLimit){if(this.maxH.rzsp===this.maxPos)return;f=this.maxValue,d=this.maxPos,e=this.maxValue-this.dragging.difference,c=this.valueToOffset(e)}else e=this.offsetToValue(g-this.dragging.lowLimit),e=this.roundStep(e),c=this.valueToOffset(e),f=e+this.dragging.difference,d=this.valueToOffset(f);this.positionTrackingBar(e,f,c,d)},positionTrackingBar:function(a,b,c,d){this.scope.rzSliderModel=a,this.scope.rzSliderHigh=b,this.updateHandles("rzSliderModel",c),this.updateHandles("rzSliderHigh",d),this.applyModel()},positionTrackingHandle:function(a,b){var c=!1,d=!1;return this.range&&(a=this.applyMinRange(a),b=this.valueToOffset(a),"rzSliderModel"===this.tracking&&a>=this.scope.rzSliderHigh?(d=!0,this.scope[this.tracking]=this.scope.rzSliderHigh,this.updateHandles(this.tracking,this.maxH.rzsp),this.updateAriaAttributes(),this.tracking="rzSliderHigh",this.minH.removeClass("rz-active"),this.maxH.addClass("rz-active"),this.options.keyboardSupport&&this.focusElement(this.maxH),c=!0):"rzSliderHigh"===this.tracking&&a<=this.scope.rzSliderModel&&(d=!0,this.scope[this.tracking]=this.scope.rzSliderModel,this.updateHandles(this.tracking,this.minH.rzsp),this.updateAriaAttributes(),this.tracking="rzSliderModel",this.maxH.removeClass("rz-active"),this.minH.addClass("rz-active"),this.options.keyboardSupport&&this.focusElement(this.minH),c=!0)),this.scope[this.tracking]!==a&&(this.scope[this.tracking]=a,this.updateHandles(this.tracking,b),this.updateAriaAttributes(),c=!0),c&&this.applyModel(),d},applyMinRange:function(a){if(0!==this.options.minRange){var b="rzSliderModel"===this.tracking?this.scope.rzSliderHigh:this.scope.rzSliderModel,c=Math.abs(a-b);if(c<this.options.minRange)return"rzSliderModel"===this.tracking?this.scope.rzSliderHigh-this.options.minRange:this.scope.rzSliderModel+this.options.minRange}return a},applyModel:function(){this.internalChange=!0,this.scope.$apply(),this.callOnChange(),this.internalChange=!1}},h}]).directive("rzslider",["RzSlider",function(a){return{restrict:"E",scope:{rzSliderModel:"=?",rzSliderHigh:"=?",rzSliderOptions:"=?",rzSliderTplUrl:"@"},templateUrl:function(a,b){return b.rzSliderTplUrl||"rzSliderTpl.html"},link:function(b,c){b.slider=new a(b,c)}}}]);return b.run(["$templateCache",function(a){a.put("rzSliderTpl.html",'<span class=rz-bar-wrapper><span class=rz-bar></span></span> <span class=rz-bar-wrapper><span class="rz-bar rz-selection" ng-style=barStyle></span></span> <span class=rz-pointer></span> <span class=rz-pointer></span> <span class="rz-bubble rz-limit"></span> <span class="rz-bubble rz-limit"></span> <span class=rz-bubble></span> <span class=rz-bubble></span> <span class=rz-bubble></span><ul ng-show=showTicks class=rz-ticks><li ng-repeat="t in ticks track by $index" class=tick ng-class="{selected: t.selected}" ng-style=t.style ng-attr-uib-tooltip="{{ t.tooltip }}" ng-attr-tooltip-placement={{t.tooltipPlacement}} ng-attr-tooltip-append-to-body="{{ t.tooltip ? true : undefined}}"><span ng-if="t.value != null" class=tick-value ng-attr-uib-tooltip="{{ t.valueTooltip }}" ng-attr-tooltip-placement={{t.valueTooltipPlacement}}>{{ t.value }}</span></li></ul>')}]),b}); | ||
/*! angularjs-slider - v2.6.0 - (c) Rafal Zajac <rzajac@gmail.com>, Valentin Hervieu <valentin@hervieu.me>, Jussi Saarivirta <jusasi@gmail.com>, Angelin Sirbu <angelin.sirbu@gmail.com> - https://github.com/angular-slider/angularjs-slider - 2016-01-31 */ | ||
!function(a,b){"use strict";"function"==typeof define&&define.amd?define(["angular"],b):"object"==typeof module&&module.exports?module.exports=b(require("angular")):b(a.angular)}(this,function(a){"use strict";var b=a.module("rzModule",[]).factory("RzSliderOptions",function(){var b={floor:0,ceil:null,step:1,precision:0,minRange:0,id:null,translate:null,stepsArray:null,draggableRange:!1,draggableRangeOnly:!1,showSelectionBar:!1,showSelectionBarEnd:!1,hideLimitLabels:!1,readOnly:!1,disabled:!1,interval:350,showTicks:!1,showTicksValues:!1,ticksTooltip:null,ticksValuesTooltip:null,vertical:!1,selectionBarColor:null,keyboardSupport:!0,scale:1,enforceRange:!1,noSwitching:!1,onlyBindHandles:!1,onStart:null,onChange:null,onEnd:null},c={},d={};return d.options=function(b){a.extend(c,b)},d.getOptions=function(d){return a.extend({},b,c,d)},d}).factory("rzThrottle",["$timeout",function(a){return function(b,c,d){var e,f,g,h=Date.now||function(){return(new Date).getTime()},i=null,j=0;d=d||{};var k=function(){j=h(),i=null,g=b.apply(e,f),e=f=null};return function(){var l=h(),m=c-(l-j);return e=this,f=arguments,0>=m?(a.cancel(i),i=null,j=l,g=b.apply(e,f),e=f=null):i||d.trailing===!1||(i=a(k,m)),g}}}]).factory("RzSlider",["$timeout","$document","$window","$compile","RzSliderOptions","rzThrottle",function(b,c,d,e,f,g){var h=function(a,b){this.scope=a,this.sliderElem=b,this.range=void 0!==this.scope.rzSliderModel&&void 0!==this.scope.rzSliderHigh,this.dragging={active:!1,value:0,difference:0,offset:0,lowLimit:0,highLimit:0},this.positionProperty="left",this.dimensionProperty="width",this.handleHalfDim=0,this.maxPos=0,this.precision=0,this.step=1,this.tracking="",this.minValue=0,this.maxValue=0,this.valueRange=0,this.initHasRun=!1,this.internalChange=!1,this.fullBar=null,this.selBar=null,this.minH=null,this.maxH=null,this.flrLab=null,this.ceilLab=null,this.minLab=null,this.maxLab=null,this.cmbLab=null,this.ticks=null,this.init()};return h.prototype={init:function(){var b,c,e=this,f=function(){e.calcViewDimensions()};this.applyOptions(),this.initElemHandles(),this.manageElementsStyle(),this.setDisabledState(),this.calcViewDimensions(),this.setMinAndMax(),this.addAccessibility(),this.updateCeilLab(),this.updateFloorLab(),this.initHandles(),this.manageEventsBindings(),this.scope.$on("reCalcViewDimensions",f),a.element(d).on("resize",f),this.initHasRun=!0,b=g(function(){e.onLowHandleChange()},e.options.interval),c=g(function(){e.onHighHandleChange()},e.options.interval),this.scope.$on("rzSliderForceRender",function(){e.resetLabelsValue(),b(),e.range&&c(),e.resetSlider()}),this.scope.$watch("rzSliderOptions",function(a,b){a!==b&&(e.applyOptions(),e.resetSlider())},!0),this.scope.$watch("rzSliderModel",function(a,c){e.internalChange||a!==c&&b()}),this.scope.$watch("rzSliderHigh",function(a,b){e.internalChange||a!==b&&(null!=a&&c(),(e.range&&null==a||!e.range&&null!=a)&&(e.applyOptions(),e.resetSlider()))}),this.scope.$on("$destroy",function(){e.unbindEvents(),a.element(d).off("resize",f)})},onLowHandleChange:function(){this.setMinAndMax(),this.updateLowHandle(this.valueToOffset(this.scope.rzSliderModel)),this.updateSelectionBar(),this.updateTicksScale(),this.updateAriaAttributes(),this.range&&this.updateCmbLabel()},onHighHandleChange:function(){this.setMinAndMax(),this.updateHighHandle(this.valueToOffset(this.scope.rzSliderHigh)),this.updateSelectionBar(),this.updateTicksScale(),this.updateCmbLabel(),this.updateAriaAttributes()},applyOptions:function(){this.options=f.getOptions(this.scope.rzSliderOptions),this.options.step<=0&&(this.options.step=1),this.range=void 0!==this.scope.rzSliderModel&&void 0!==this.scope.rzSliderHigh,this.options.draggableRange=this.range&&this.options.draggableRange,this.options.draggableRangeOnly=this.range&&this.options.draggableRangeOnly,this.options.draggableRangeOnly&&(this.options.draggableRange=!0),this.options.showTicks=this.options.showTicks||this.options.showTicksValues,this.scope.showTicks=this.options.showTicks,this.options.showSelectionBar=this.options.showSelectionBar||this.options.showSelectionBarEnd,this.options.stepsArray?(this.options.floor=0,this.options.ceil=this.options.stepsArray.length-1,this.options.step=1,this.customTrFn=function(a){return this.options.stepsArray[a]}):this.options.translate?this.customTrFn=this.options.translate:this.customTrFn=function(a){return String(a)},this.options.vertical&&(this.positionProperty="bottom",this.dimensionProperty="height")},resetSlider:function(){this.manageElementsStyle(),this.addAccessibility(),this.setMinAndMax(),this.updateCeilLab(),this.updateFloorLab(),this.unbindEvents(),this.manageEventsBindings(),this.setDisabledState(),this.calcViewDimensions()},initElemHandles:function(){a.forEach(this.sliderElem.children(),function(b,c){var d=a.element(b);switch(c){case 0:this.fullBar=d;break;case 1:this.selBar=d;break;case 2:this.minH=d;break;case 3:this.maxH=d;break;case 4:this.flrLab=d;break;case 5:this.ceilLab=d;break;case 6:this.minLab=d;break;case 7:this.maxLab=d;break;case 8:this.cmbLab=d;break;case 9:this.ticks=d}},this),this.selBar.rzsp=0,this.minH.rzsp=0,this.maxH.rzsp=0,this.flrLab.rzsp=0,this.ceilLab.rzsp=0,this.minLab.rzsp=0,this.maxLab.rzsp=0,this.cmbLab.rzsp=0},manageElementsStyle:function(){this.range?this.maxH.css("display",""):this.maxH.css("display","none"),this.alwaysHide(this.flrLab,this.options.showTicksValues||this.options.hideLimitLabels),this.alwaysHide(this.ceilLab,this.options.showTicksValues||this.options.hideLimitLabels),this.alwaysHide(this.minLab,this.options.showTicksValues),this.alwaysHide(this.maxLab,this.options.showTicksValues||!this.range),this.alwaysHide(this.cmbLab,this.options.showTicksValues||!this.range),this.alwaysHide(this.selBar,!this.range&&!this.options.showSelectionBar),this.options.vertical&&this.sliderElem.addClass("vertical"),this.options.draggableRange?this.selBar.addClass("rz-draggable"):this.selBar.removeClass("rz-draggable")},alwaysHide:function(a,b){a.rzAlwaysHide=b,b?this.hideEl(a):this.showEl(a)},manageEventsBindings:function(){this.options.disabled||this.options.readOnly?this.unbindEvents():this.bindEvents()},setDisabledState:function(){this.options.disabled?this.sliderElem.attr("disabled","disabled"):this.sliderElem.attr("disabled",null)},resetLabelsValue:function(){this.minLab.rzsv=void 0,this.maxLab.rzsv=void 0},initHandles:function(){this.updateLowHandle(this.valueToOffset(this.scope.rzSliderModel)),this.range&&this.updateHighHandle(this.valueToOffset(this.scope.rzSliderHigh)),this.updateSelectionBar(),this.range&&this.updateCmbLabel(),this.updateTicksScale()},translateFn:function(a,b,c){c=void 0===c?!0:c;var d=String(c?this.customTrFn(a,this.options.id):a),e=!1;(void 0===b.rzsv||b.rzsv.length!==d.length||b.rzsv.length>0&&0===b.rzsd)&&(e=!0,b.rzsv=d),b.text(d),e&&this.getDimension(b)},setMinAndMax:function(){this.step=+this.options.step,this.precision=+this.options.precision,this.minValue=this.options.floor,this.scope.rzSliderModel=this.roundStep(this.scope.rzSliderModel),this.range&&(this.scope.rzSliderHigh=this.roundStep(this.scope.rzSliderHigh)),null!=this.options.ceil?this.maxValue=this.options.ceil:this.maxValue=this.options.ceil=this.range?this.scope.rzSliderHigh:this.scope.rzSliderModel,this.options.enforceRange&&(this.scope.rzSliderModel=this.sanitizeValue(this.scope.rzSliderModel),this.range&&(this.scope.rzSliderHigh=this.sanitizeValue(this.scope.rzSliderHigh))),this.valueRange=this.maxValue-this.minValue},addAccessibility:function(){this.minH.attr("role","slider"),this.updateAriaAttributes(),!this.options.keyboardSupport||this.options.readOnly||this.options.disabled?this.minH.attr("tabindex",""):this.minH.attr("tabindex","0"),this.options.vertical&&this.minH.attr("aria-orientation","vertical"),this.range&&(this.maxH.attr("role","slider"),!this.options.keyboardSupport||this.options.readOnly||this.options.disabled?this.maxH.attr("tabindex",""):this.maxH.attr("tabindex","0"),this.options.vertical&&this.maxH.attr("aria-orientation","vertical"))},updateAriaAttributes:function(){this.minH.attr({"aria-valuenow":this.scope.rzSliderModel,"aria-valuetext":this.customTrFn(this.scope.rzSliderModel),"aria-valuemin":this.minValue,"aria-valuemax":this.maxValue}),this.range&&this.maxH.attr({"aria-valuenow":this.scope.rzSliderHigh,"aria-valuetext":this.customTrFn(this.scope.rzSliderHigh),"aria-valuemin":this.minValue,"aria-valuemax":this.maxValue})},calcViewDimensions:function(){var a=this.getDimension(this.minH);this.handleHalfDim=a/2,this.barDimension=this.getDimension(this.fullBar),this.maxPos=this.barDimension-a,this.getDimension(this.sliderElem),this.sliderElem.rzsp=this.sliderElem[0].getBoundingClientRect()[this.positionProperty],this.initHasRun&&(this.updateFloorLab(),this.updateCeilLab(),this.initHandles())},updateTicksScale:function(){if(this.options.showTicks){var a=Math.round((this.maxValue-this.minValue)/this.step)+1;this.scope.ticks=[];for(var b=0;a>b;b++){var c=this.roundStep(this.minValue+b*this.step),d={selected:this.isTickSelected(c)};d.selected&&this.options.getSelectionBarColor&&(d.style={"background-color":this.getSelectionBarColor()}),this.options.ticksTooltip&&(d.tooltip=this.options.ticksTooltip(c),d.tooltipPlacement=this.options.vertical?"right":"top"),this.options.showTicksValues&&(d.value=this.getDisplayValue(c),this.options.ticksValuesTooltip&&(d.valueTooltip=this.options.ticksValuesTooltip(c),d.valueTooltipPlacement=this.options.vertical?"right":"top")),this.scope.ticks.push(d)}}},isTickSelected:function(a){return!this.range&&this.options.showSelectionBar&&a<=this.scope.rzSliderModel?!0:this.range&&a>=this.scope.rzSliderModel&&a<=this.scope.rzSliderHigh?!0:!1},updateCeilLab:function(){this.translateFn(this.maxValue,this.ceilLab),this.setPosition(this.ceilLab,this.barDimension-this.ceilLab.rzsd),this.getDimension(this.ceilLab)},updateFloorLab:function(){this.translateFn(this.minValue,this.flrLab),this.getDimension(this.flrLab)},callOnStart:function(){if(this.options.onStart){var a=this;this.scope.$evalAsync(function(){a.options.onStart(a.options.id,a.scope.rzSliderModel,a.scope.rzSliderHigh)})}},callOnChange:function(){if(this.options.onChange){var a=this;this.scope.$evalAsync(function(){a.options.onChange(a.options.id,a.scope.rzSliderModel,a.scope.rzSliderHigh)})}},callOnEnd:function(){if(this.options.onEnd){var a=this;this.scope.$evalAsync(function(){a.options.onEnd(a.options.id,a.scope.rzSliderModel,a.scope.rzSliderHigh)})}},updateHandles:function(a,b){"rzSliderModel"===a?this.updateLowHandle(b):this.updateHighHandle(b),this.updateSelectionBar(),this.updateTicksScale(),this.range&&this.updateCmbLabel()},updateLowHandle:function(a){this.setPosition(this.minH,a),this.translateFn(this.scope.rzSliderModel,this.minLab);var b=Math.min(Math.max(a-this.minLab.rzsd/2+this.handleHalfDim,0),this.barDimension-this.ceilLab.rzsd);this.setPosition(this.minLab,b),this.shFloorCeil()},updateHighHandle:function(a){this.setPosition(this.maxH,a),this.translateFn(this.scope.rzSliderHigh,this.maxLab);var b=Math.min(a-this.maxLab.rzsd/2+this.handleHalfDim,this.barDimension-this.ceilLab.rzsd);this.setPosition(this.maxLab,b),this.shFloorCeil()},shFloorCeil:function(){var a=!1,b=!1;this.minLab.rzsp<=this.flrLab.rzsp+this.flrLab.rzsd+5?(a=!0,this.hideEl(this.flrLab)):(a=!1,this.showEl(this.flrLab)),this.minLab.rzsp+this.minLab.rzsd>=this.ceilLab.rzsp-this.handleHalfDim-10?(b=!0,this.hideEl(this.ceilLab)):(b=!1,this.showEl(this.ceilLab)),this.range&&(this.maxLab.rzsp+this.maxLab.rzsd>=this.ceilLab.rzsp-10?this.hideEl(this.ceilLab):b||this.showEl(this.ceilLab),this.maxLab.rzsp<=this.flrLab.rzsp+this.flrLab.rzsd+this.handleHalfDim?this.hideEl(this.flrLab):a||this.showEl(this.flrLab))},updateSelectionBar:function(){var a=0,b=0;if(this.range||!this.options.showSelectionBarEnd?(b=Math.abs(this.maxH.rzsp-this.minH.rzsp)+this.handleHalfDim,a=this.range?this.minH.rzsp+this.handleHalfDim:0):(b=Math.abs(this.maxPos-this.minH.rzsp)+this.handleHalfDim,a=this.minH.rzsp+this.handleHalfDim),this.setDimension(this.selBar,b),this.setPosition(this.selBar,a),this.options.getSelectionBarColor){var c=this.getSelectionBarColor();this.scope.barStyle={backgroundColor:c}}},getSelectionBarColor:function(){return this.range?this.options.getSelectionBarColor(this.scope.rzSliderModel,this.scope.rzSliderHigh):this.options.getSelectionBarColor(this.scope.rzSliderModel)},updateCmbLabel:function(){var a,b;if(this.minLab.rzsp+this.minLab.rzsd+10>=this.maxLab.rzsp){a=this.getDisplayValue(this.scope.rzSliderModel),b=this.getDisplayValue(this.scope.rzSliderHigh),this.translateFn(a+" - "+b,this.cmbLab,!1);var c=Math.min(Math.max(this.selBar.rzsp+this.selBar.rzsd/2-this.cmbLab.rzsd/2,0),this.barDimension-this.cmbLab.rzsd);this.setPosition(this.cmbLab,c),this.hideEl(this.minLab),this.hideEl(this.maxLab),this.showEl(this.cmbLab)}else this.showEl(this.maxLab),this.showEl(this.minLab),this.hideEl(this.cmbLab)},getDisplayValue:function(a){return this.customTrFn(a,this.options.id)},roundStep:function(a){var b=parseFloat((a-this.minValue)/this.step).toPrecision(12);b=Math.round(+b)*this.step;var c=(this.minValue+ +b).toFixed(this.precision);return+c},hideEl:function(a){return a.css({opacity:0})},showEl:function(a){return a.rzAlwaysHide?a:a.css({opacity:1})},setPosition:function(a,b){a.rzsp=b;var c={};return c[this.positionProperty]=b+"px",a.css(c),b},getDimension:function(a){var b=a[0].getBoundingClientRect();return this.options.vertical?a.rzsd=(b.bottom-b.top)*this.options.scale:a.rzsd=(b.right-b.left)*this.options.scale,a.rzsd},setDimension:function(a,b){a.rzsd=b;var c={};return c[this.dimensionProperty]=b+"px",a.css(c),b},valueToOffset:function(a){return(this.sanitizeValue(a)-this.minValue)*this.maxPos/this.valueRange||0},sanitizeValue:function(a){return Math.min(Math.max(a,this.minValue),this.maxValue)},offsetToValue:function(a){return a/this.maxPos*this.valueRange+this.minValue},getEventXY:function(a){var b=this.options.vertical?"clientY":"clientX";return b in a?a[b]:void 0===a.originalEvent?a.touches[0][b]:a.originalEvent.touches[0][b]},getEventPosition:function(a){var b=this.sliderElem.rzsp,c=0;return c=this.options.vertical?-this.getEventXY(a)+b:this.getEventXY(a)-b,(c-this.handleHalfDim)*this.options.scale},getEventNames:function(a){var b={moveEvent:"",endEvent:""};return a.touches||void 0!==a.originalEvent&&a.originalEvent.touches?(b.moveEvent="touchmove",b.endEvent="touchend"):(b.moveEvent="mousemove",b.endEvent="mouseup"),b},getNearestHandle:function(a){if(!this.range)return this.minH;var b=this.getEventPosition(a),c=Math.abs(b-this.minH.rzsp),d=Math.abs(b-this.maxH.rzsp);return d>c?this.minH:c>d?this.maxH:b<this.minH.rzsp?this.minH:this.maxH},focusElement:function(a){var b=0;a[b].focus()},bindEvents:function(){var b,c,d;this.options.draggableRange?(b="rzSliderDrag",c=this.onDragStart,d=this.onDragMove):(b="rzSliderModel",c=this.onStart,d=this.onMove),this.options.onlyBindHandles||(this.selBar.on("mousedown",a.bind(this,c,null,b)),this.selBar.on("mousedown",a.bind(this,d,this.selBar))),this.options.draggableRangeOnly?(this.minH.on("mousedown",a.bind(this,c,null,b)),this.maxH.on("mousedown",a.bind(this,c,null,b))):(this.minH.on("mousedown",a.bind(this,this.onStart,this.minH,"rzSliderModel")),this.range&&this.maxH.on("mousedown",a.bind(this,this.onStart,this.maxH,"rzSliderHigh")),this.options.onlyBindHandles||(this.fullBar.on("mousedown",a.bind(this,this.onStart,null,null)),this.fullBar.on("mousedown",a.bind(this,this.onMove,this.fullBar)),this.ticks.on("mousedown",a.bind(this,this.onStart,null,null)),this.ticks.on("mousedown",a.bind(this,this.onMove,this.ticks)))),this.options.onlyBindHandles||(this.selBar.on("touchstart",a.bind(this,c,null,b)),this.selBar.on("touchstart",a.bind(this,d,this.selBar))),this.options.draggableRangeOnly?(this.minH.on("touchstart",a.bind(this,c,null,b)),this.maxH.on("touchstart",a.bind(this,c,null,b))):(this.minH.on("touchstart",a.bind(this,this.onStart,this.minH,"rzSliderModel")),this.range&&this.maxH.on("touchstart",a.bind(this,this.onStart,this.maxH,"rzSliderHigh")),this.options.onlyBindHandles||(this.fullBar.on("touchstart",a.bind(this,this.onStart,null,null)),this.fullBar.on("touchstart",a.bind(this,this.onMove,this.fullBar)),this.ticks.on("touchstart",a.bind(this,this.onStart,null,null)),this.ticks.on("touchstart",a.bind(this,this.onMove,this.ticks)))),this.options.keyboardSupport&&(this.minH.on("focus",a.bind(this,this.onPointerFocus,this.minH,"rzSliderModel")),this.range&&this.maxH.on("focus",a.bind(this,this.onPointerFocus,this.maxH,"rzSliderHigh")))},unbindEvents:function(){this.minH.off(),this.maxH.off(),this.fullBar.off(),this.selBar.off(),this.ticks.off()},onStart:function(b,d,e){var f,g,h=this.getEventNames(e);e.stopPropagation(),e.preventDefault(),this.calcViewDimensions(),b?this.tracking=d:(b=this.getNearestHandle(e),this.tracking=b===this.minH?"rzSliderModel":"rzSliderHigh"),b.addClass("rz-active"),this.options.keyboardSupport&&this.focusElement(b),f=a.bind(this,this.dragging.active?this.onDragMove:this.onMove,b),g=a.bind(this,this.onEnd,f),c.on(h.moveEvent,f),c.one(h.endEvent,g),this.callOnStart()},onMove:function(a,b){var c,d=this.getEventPosition(b);0>=d?c=this.minValue:d>=this.maxPos?c=this.maxValue:(c=this.offsetToValue(d),c=this.roundStep(c)),this.positionTrackingHandle(c)},onEnd:function(a,b){var d=this.getEventNames(b).moveEvent;this.options.keyboardSupport||(this.minH.removeClass("rz-active"),this.maxH.removeClass("rz-active"),this.tracking=""),this.dragging.active=!1,c.off(d,a),this.scope.$emit("slideEnded"),this.callOnEnd()},onPointerFocus:function(b,c){this.tracking=c,b.one("blur",a.bind(this,this.onPointerBlur,b)),b.on("keydown",a.bind(this,this.onKeyboardEvent)),b.addClass("rz-active")},onPointerBlur:function(a){a.off("keydown"),this.tracking="",a.removeClass("rz-active")},onKeyboardEvent:function(a){var b=this.scope[this.tracking],c=a.keyCode||a.which,d={38:"UP",40:"DOWN",37:"LEFT",39:"RIGHT",33:"PAGEUP",34:"PAGEDOWN",36:"HOME",35:"END"},e={UP:b+this.step,DOWN:b-this.step,LEFT:b-this.step,RIGHT:b+this.step,PAGEUP:b+this.valueRange/10,PAGEDOWN:b-this.valueRange/10,HOME:this.minValue,END:this.maxValue},f=d[c],g=e[f];if(null!=g&&""!==this.tracking){a.preventDefault();var h=this.roundStep(this.sanitizeValue(g));if(this.options.draggableRangeOnly){var i,j,k=this.scope.rzSliderHigh-this.scope.rzSliderModel;"rzSliderModel"===this.tracking?(i=h,j=h+k,j>this.maxValue&&(j=this.maxValue,i=j-k)):(j=h,i=h-k,i<this.minValue&&(i=this.minValue,j=i+k)),this.positionTrackingBar(i,j)}else this.positionTrackingHandle(h)}},onDragStart:function(a,b,c){var d=this.getEventPosition(c);this.dragging={active:!0,value:this.offsetToValue(d),difference:this.scope.rzSliderHigh-this.scope.rzSliderModel,lowLimit:d-this.minH.rzsp,highLimit:this.maxH.rzsp-d},this.onStart(a,b,c)},onDragMove:function(a,b){var c,d,e=this.getEventPosition(b);if(e<=this.dragging.lowLimit){if(0===this.minH.rzsp)return;c=this.minValue,d=this.minValue+this.dragging.difference}else if(e>=this.maxPos-this.dragging.highLimit){if(this.maxH.rzsp===this.maxPos)return;d=this.maxValue,c=this.maxValue-this.dragging.difference}else c=this.offsetToValue(e-this.dragging.lowLimit),c=this.roundStep(c),d=c+this.dragging.difference;this.positionTrackingBar(c,d)},positionTrackingBar:function(a,b){this.scope.rzSliderModel=a,this.scope.rzSliderHigh=b,this.updateHandles("rzSliderModel",this.valueToOffset(a)),this.updateHandles("rzSliderHigh",this.valueToOffset(b)),this.applyModel()},positionTrackingHandle:function(a){var b=!1;this.range&&(a=this.applyMinRange(a),"rzSliderModel"===this.tracking&&a>this.scope.rzSliderHigh?(this.options.noSwitching&&this.scope.rzSliderHigh!==this.minValue?a=this.applyMinRange(this.scope.rzSliderHigh):(this.scope[this.tracking]=this.scope.rzSliderHigh,this.updateHandles(this.tracking,this.maxH.rzsp),this.updateAriaAttributes(),this.tracking="rzSliderHigh",this.minH.removeClass("rz-active"),this.maxH.addClass("rz-active"),this.options.keyboardSupport&&this.focusElement(this.maxH)),b=!0):"rzSliderHigh"===this.tracking&&a<this.scope.rzSliderModel&&(this.options.noSwitching&&this.scope.rzSliderModel!==this.maxValue?a=this.applyMinRange(this.scope.rzSliderModel):(this.scope[this.tracking]=this.scope.rzSliderModel,this.updateHandles(this.tracking,this.minH.rzsp),this.updateAriaAttributes(),this.tracking="rzSliderModel",this.maxH.removeClass("rz-active"),this.minH.addClass("rz-active"),this.options.keyboardSupport&&this.focusElement(this.minH)),b=!0)),this.scope[this.tracking]!==a&&(this.scope[this.tracking]=a,this.updateHandles(this.tracking,this.valueToOffset(a)),this.updateAriaAttributes(),b=!0),b&&this.applyModel()},applyMinRange:function(a){if(0!==this.options.minRange){var b="rzSliderModel"===this.tracking?this.scope.rzSliderHigh:this.scope.rzSliderModel,c=Math.abs(a-b);if(c<this.options.minRange)return"rzSliderModel"===this.tracking?this.scope.rzSliderHigh-this.options.minRange:this.scope.rzSliderModel+this.options.minRange}return a},applyModel:function(){this.internalChange=!0,this.scope.$apply(),this.callOnChange(),this.internalChange=!1}},h}]).directive("rzslider",["RzSlider",function(a){return{restrict:"E",scope:{rzSliderModel:"=?",rzSliderHigh:"=?",rzSliderOptions:"=?",rzSliderTplUrl:"@"},templateUrl:function(a,b){return b.rzSliderTplUrl||"rzSliderTpl.html"},link:function(b,c){b.slider=new a(b,c)}}}]);return b.run(["$templateCache",function(a){a.put("rzSliderTpl.html",'<span class=rz-bar-wrapper><span class=rz-bar></span></span> <span class=rz-bar-wrapper><span class="rz-bar rz-selection" ng-style=barStyle></span></span> <span class=rz-pointer></span> <span class=rz-pointer></span> <span class="rz-bubble rz-limit"></span> <span class="rz-bubble rz-limit"></span> <span class=rz-bubble></span> <span class=rz-bubble></span> <span class=rz-bubble></span><ul ng-show=showTicks class=rz-ticks><li ng-repeat="t in ticks track by $index" class=tick ng-class="{selected: t.selected}" ng-style=t.style ng-attr-uib-tooltip="{{ t.tooltip }}" ng-attr-tooltip-placement={{t.tooltipPlacement}} ng-attr-tooltip-append-to-body="{{ t.tooltip ? true : undefined}}"><span ng-if="t.value != null" class=tick-value ng-attr-uib-tooltip="{{ t.valueTooltip }}" ng-attr-tooltip-placement={{t.valueTooltipPlacement}}>{{ t.value }}</span></li></ul>')}]),b}); |
{ | ||
"name": "angularjs-slider", | ||
"version": "2.5.0", | ||
"version": "2.6.0", | ||
"description": "AngularJS slider directive with no external dependencies. Mobile friendly!.", | ||
@@ -5,0 +5,0 @@ "main": "dist/rzslider.js", |
@@ -69,2 +69,8 @@ ## AngularJS slider directive with no external dependencies | ||
or | ||
### CDNJS | ||
Directly use: | ||
- `https://cdnjs.cloudflare.com/ajax/libs/angularjs-slider/2.5.0/rzslider.min.js` | ||
- `https://cdnjs.cloudflare.com/ajax/libs/angularjs-slider/2.5.0/rzslider.min.css` | ||
### Module | ||
@@ -182,2 +188,3 @@ ```javascript | ||
enforceRange: false, | ||
noSwitching: false, | ||
onlyBindHandles: false, | ||
@@ -198,3 +205,3 @@ onStart: null, | ||
**minRange** - _Number (defaults to 0)_: The minimum range authorized on the slider. | ||
**minRange** - _Number (defaults to 0)_: The minimum range authorized on the slider. *Applies to range slider only.* | ||
@@ -226,5 +233,5 @@ **translate** - _Function(value, sliderId)_: Custom translate function. Use this if you want to translate values displayed on the slider. For example if you want to display dollar amounts instead of just numbers: | ||
**draggableRange** - _Boolean (defaults to false)_: When set to true and using a range slider, the range can be dragged by the selection bar. | ||
**draggableRange** - _Boolean (defaults to false)_: When set to true and using a range slider, the range can be dragged by the selection bar. *Applies to range slider only.* | ||
**draggableRangeOnly** - _Boolean (defaults to false)_: Same as draggableRange but the slider range can't be changed. | ||
**draggableRangeOnly** - _Boolean (defaults to false)_: Same as draggableRange but the slider range can't be changed. *Applies to range slider only.* | ||
@@ -257,2 +264,4 @@ **showSelectionBar** - _Boolean (defaults to false)_: Set to true to always show the selection bar before the slider handle. | ||
**noSwitching** - _Boolean (defaults to false)_: Set to true to prevent to user from switching the min and max handles. *Applies to range slider only.* | ||
**onlyBindHandles** - _Boolean (defaults to false)_: Set to true to only bind events on slider handles. | ||
@@ -289,3 +298,3 @@ | ||
To force slider to recalculate dimensions, broadcast **reCalcViewDimensions** event from parent scope. This is useful for example when you use slider inside a widget where the content is hidden at start - see the "Sliders into modal" example [on the demo site](http://rzajac.github.io/angularjs-slider/). | ||
To force slider to recalculate dimensions, broadcast **reCalcViewDimensions** event from parent scope. This is useful for example when you use slider inside a widget where the content is hidden at start - see the "Sliders into modal" example [on the demo site](http://angular-slider.github.io/angularjs-slider). | ||
@@ -292,0 +301,0 @@ You can also force redraw with **rzSliderForceRender** event. |
@@ -59,2 +59,3 @@ /** | ||
enforceRange: false, | ||
noSwitching: false, | ||
onlyBindHandles: false, | ||
@@ -639,2 +640,4 @@ onStart: null, | ||
this.minValue = this.options.floor; | ||
this.scope.rzSliderModel = this.roundStep(this.scope.rzSliderModel); | ||
@@ -644,6 +647,4 @@ if (this.range) | ||
this.minValue = this.roundStep(+this.options.floor); | ||
if (this.options.ceil != null) | ||
this.maxValue = this.roundStep(+this.options.ceil); | ||
this.maxValue = this.options.ceil; | ||
else | ||
@@ -808,3 +809,3 @@ this.maxValue = this.options.ceil = this.range ? this.scope.rzSliderHigh : this.scope.rzSliderModel; | ||
var self = this; | ||
this.scope.$evalAsync(function () { | ||
this.scope.$evalAsync(function() { | ||
self.options.onStart(self.options.id, self.scope.rzSliderModel, self.scope.rzSliderHigh); | ||
@@ -824,3 +825,3 @@ }); | ||
var self = this; | ||
this.scope.$evalAsync(function () { | ||
this.scope.$evalAsync(function() { | ||
self.options.onChange(self.options.id, self.scope.rzSliderModel, self.scope.rzSliderHigh); | ||
@@ -840,3 +841,3 @@ }); | ||
var self = this; | ||
this.scope.$evalAsync(function () { | ||
this.scope.$evalAsync(function() { | ||
self.options.onEnd(self.options.id, self.scope.rzSliderModel, self.scope.rzSliderHigh); | ||
@@ -856,3 +857,3 @@ }); | ||
this.updateLowHandle(newOffset); | ||
else if (which === 'rzSliderHigh') | ||
else | ||
this.updateHighHandle(newOffset); | ||
@@ -897,3 +898,3 @@ | ||
/** | ||
* Show / hide floor / ceiling label | ||
* Show/hide floor/ceiling label | ||
* | ||
@@ -1008,3 +1009,3 @@ * @returns {undefined} | ||
/** | ||
* Round value to step and precision | ||
* Round value to step and precision based on minValue | ||
* | ||
@@ -1015,6 +1016,6 @@ * @param {number} value | ||
roundStep: function(value) { | ||
var steppedValue = parseFloat(value / this.step).toPrecision(12) | ||
steppedValue = Math.round(steppedValue) * this.step; | ||
steppedValue = steppedValue.toFixed(this.precision); | ||
return +steppedValue; | ||
var steppedDifference = parseFloat((value - this.minValue) / this.step).toPrecision(12); | ||
steppedDifference = Math.round(+steppedDifference) * this.step; | ||
var newValue = (this.minValue + (+steppedDifference)).toFixed(this.precision); | ||
return +newValue; | ||
}, | ||
@@ -1194,4 +1195,11 @@ | ||
} | ||
var offset = this.getEventPosition(event); | ||
return Math.abs(offset - this.minH.rzsp) < Math.abs(offset - this.maxH.rzsp) ? this.minH : this.maxH; | ||
var offset = this.getEventPosition(event), | ||
distanceMin = Math.abs(offset - this.minH.rzsp), | ||
distanceMax = Math.abs(offset - this.maxH.rzsp); | ||
if (distanceMin < distanceMax) | ||
return this.minH; | ||
else if (distanceMin > distanceMax) | ||
return this.maxH; | ||
else //if event is at the same distance from min/max then if it's at left of minH, we return minH else maxH | ||
return offset < this.minH.rzsp ? this.minH : this.maxH; | ||
}, | ||
@@ -1340,17 +1348,10 @@ | ||
if (newOffset <= 0) { | ||
if (pointer.rzsp === 0) | ||
return; | ||
newValue = this.minValue; | ||
newOffset = 0; | ||
} else if (newOffset >= this.maxPos) { | ||
if (pointer.rzsp === this.maxPos) | ||
return; | ||
newValue = this.maxValue; | ||
newOffset = this.maxPos; | ||
} else { | ||
newValue = this.offsetToValue(newOffset); | ||
newValue = this.roundStep(newValue); | ||
newOffset = this.valueToOffset(newValue); | ||
} | ||
this.positionTrackingHandle(newValue, newOffset); | ||
this.positionTrackingHandle(newValue); | ||
}, | ||
@@ -1421,13 +1422,10 @@ | ||
var newValue = this.roundStep(this.sanitizeValue(action)), | ||
newOffset = this.valueToOffset(newValue); | ||
var newValue = this.roundStep(this.sanitizeValue(action)); | ||
if (!this.options.draggableRangeOnly) { | ||
this.positionTrackingHandle(newValue, newOffset); | ||
this.positionTrackingHandle(newValue); | ||
} else { | ||
var difference = this.scope.rzSliderHigh - this.scope.rzSliderModel, | ||
newMinOffset, newMaxOffset, | ||
newMinValue, newMaxValue; | ||
if (this.tracking === 'rzSliderModel') { | ||
newMinValue = newValue; | ||
newMinOffset = newOffset; | ||
newMaxValue = newValue + difference; | ||
@@ -1437,8 +1435,5 @@ if (newMaxValue > this.maxValue) { | ||
newMinValue = newMaxValue - difference; | ||
newMinOffset = this.valueToOffset(newMinValue); | ||
} | ||
newMaxOffset = this.valueToOffset(newMaxValue); | ||
} else { | ||
newMaxValue = newValue; | ||
newMaxOffset = newOffset; | ||
newMinValue = newValue - difference; | ||
@@ -1448,7 +1443,5 @@ if (newMinValue < this.minValue) { | ||
newMaxValue = newMinValue + difference; | ||
newMaxOffset = this.valueToOffset(newMaxValue); | ||
} | ||
newMinOffset = this.valueToOffset(newMinValue); | ||
} | ||
this.positionTrackingBar(newMinValue, newMaxValue, newMinOffset, newMaxOffset); | ||
this.positionTrackingBar(newMinValue, newMaxValue); | ||
} | ||
@@ -1491,3 +1484,2 @@ }, | ||
var newOffset = this.getEventPosition(event), | ||
newMinOffset, newMaxOffset, | ||
newMinValue, newMaxValue; | ||
@@ -1499,5 +1491,3 @@ | ||
newMinValue = this.minValue; | ||
newMinOffset = 0; | ||
newMaxValue = this.minValue + this.dragging.difference; | ||
newMaxOffset = this.valueToOffset(newMaxValue); | ||
} else if (newOffset >= this.maxPos - this.dragging.highLimit) { | ||
@@ -1507,14 +1497,10 @@ if (this.maxH.rzsp === this.maxPos) | ||
newMaxValue = this.maxValue; | ||
newMaxOffset = this.maxPos; | ||
newMinValue = this.maxValue - this.dragging.difference; | ||
newMinOffset = this.valueToOffset(newMinValue); | ||
} else { | ||
newMinValue = this.offsetToValue(newOffset - this.dragging.lowLimit); | ||
newMinValue = this.roundStep(newMinValue); | ||
newMinOffset = this.valueToOffset(newMinValue); | ||
newMaxValue = newMinValue + this.dragging.difference; | ||
newMaxOffset = this.valueToOffset(newMaxValue); | ||
} | ||
this.positionTrackingBar(newMinValue, newMaxValue, newMinOffset, newMaxOffset); | ||
this.positionTrackingBar(newMinValue, newMaxValue); | ||
}, | ||
@@ -1527,10 +1513,8 @@ | ||
* @param {number} newMaxValue the new maximum value | ||
* @param {number} newMinOffset the new minimum offset | ||
* @param {number} newMaxOffset the new maximum offset | ||
*/ | ||
positionTrackingBar: function(newMinValue, newMaxValue, newMinOffset, newMaxOffset) { | ||
positionTrackingBar: function(newMinValue, newMaxValue) { | ||
this.scope.rzSliderModel = newMinValue; | ||
this.scope.rzSliderHigh = newMaxValue; | ||
this.updateHandles('rzSliderModel', newMinOffset); | ||
this.updateHandles('rzSliderHigh', newMaxOffset); | ||
this.updateHandles('rzSliderModel', this.valueToOffset(newMinValue)); | ||
this.updateHandles('rzSliderHigh', this.valueToOffset(newMaxValue)); | ||
this.applyModel(); | ||
@@ -1543,33 +1527,38 @@ }, | ||
* @param {number} newValue new model value | ||
* @param {number} newOffset new offset value | ||
*/ | ||
positionTrackingHandle: function(newValue, newOffset) { | ||
positionTrackingHandle: function(newValue) { | ||
var valueChanged = false; | ||
var switched = false; | ||
if (this.range) { | ||
newValue = this.applyMinRange(newValue); | ||
newOffset = this.valueToOffset(newValue); | ||
/* This is to check if we need to switch the min and max handles */ | ||
if (this.tracking === 'rzSliderModel' && newValue >= this.scope.rzSliderHigh) { | ||
switched = true; | ||
this.scope[this.tracking] = this.scope.rzSliderHigh; | ||
this.updateHandles(this.tracking, this.maxH.rzsp); | ||
this.updateAriaAttributes(); | ||
this.tracking = 'rzSliderHigh'; | ||
this.minH.removeClass('rz-active'); | ||
this.maxH.addClass('rz-active'); | ||
if (this.options.keyboardSupport) | ||
this.focusElement(this.maxH); | ||
if (this.tracking === 'rzSliderModel' && newValue > this.scope.rzSliderHigh) { | ||
if (this.options.noSwitching && this.scope.rzSliderHigh !== this.minValue) { | ||
newValue = this.applyMinRange(this.scope.rzSliderHigh); | ||
} | ||
else { | ||
this.scope[this.tracking] = this.scope.rzSliderHigh; | ||
this.updateHandles(this.tracking, this.maxH.rzsp); | ||
this.updateAriaAttributes(); | ||
this.tracking = 'rzSliderHigh'; | ||
this.minH.removeClass('rz-active'); | ||
this.maxH.addClass('rz-active'); | ||
if (this.options.keyboardSupport) | ||
this.focusElement(this.maxH); | ||
} | ||
valueChanged = true; | ||
} else if (this.tracking === 'rzSliderHigh' && newValue <= this.scope.rzSliderModel) { | ||
switched = true; | ||
this.scope[this.tracking] = this.scope.rzSliderModel; | ||
this.updateHandles(this.tracking, this.minH.rzsp); | ||
this.updateAriaAttributes(); | ||
this.tracking = 'rzSliderModel'; | ||
this.maxH.removeClass('rz-active'); | ||
this.minH.addClass('rz-active'); | ||
if (this.options.keyboardSupport) | ||
this.focusElement(this.minH); | ||
} else if (this.tracking === 'rzSliderHigh' && newValue < this.scope.rzSliderModel) { | ||
if (this.options.noSwitching && this.scope.rzSliderModel !== this.maxValue) { | ||
newValue = this.applyMinRange(this.scope.rzSliderModel); | ||
} | ||
else { | ||
this.scope[this.tracking] = this.scope.rzSliderModel; | ||
this.updateHandles(this.tracking, this.minH.rzsp); | ||
this.updateAriaAttributes(); | ||
this.tracking = 'rzSliderModel'; | ||
this.maxH.removeClass('rz-active'); | ||
this.minH.addClass('rz-active'); | ||
if (this.options.keyboardSupport) | ||
this.focusElement(this.minH); | ||
} | ||
valueChanged = true; | ||
@@ -1581,3 +1570,3 @@ } | ||
this.scope[this.tracking] = newValue; | ||
this.updateHandles(this.tracking, newOffset); | ||
this.updateHandles(this.tracking, this.valueToOffset(newValue)); | ||
this.updateAriaAttributes(); | ||
@@ -1587,6 +1576,4 @@ valueChanged = true; | ||
if (valueChanged) { | ||
if (valueChanged) | ||
this.applyModel(); | ||
} | ||
return switched; | ||
}, | ||
@@ -1593,0 +1580,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
715010
14170
329