Skip to content

Commit

Permalink
dragslider
Browse files Browse the repository at this point in the history
  • Loading branch information
kencaron committed Dec 4, 2013
1 parent d900c10 commit d7182e1
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 14 deletions.
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "mf-angular-ui-slider",
"version": "0.0.2",
"version": "0.0.3",
"description": "This directive allows you to add a slider to your form elements.",
"author": "https://github.com/kencaron/ui-slider/graphs/contributors",
"license": "MIT",
Expand Down
29 changes: 16 additions & 13 deletions src/slider.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
jQuery UI Slider plugin wrapper
*/
angular.module('ui.slider', []).value('uiSliderConfig',{}).directive('uiSlider', ['uiSliderConfig', '$timeout', function(uiSliderConfig, $timeout) {
uiSliderConfig = uiSliderConfig || {};
uiSliderConfig = uiSliderConfig || {};
return {
require: 'ngModel',
compile: function () {
Expand All @@ -20,13 +20,14 @@ angular.module('ui.slider', []).value('uiSliderConfig',{}).directive('uiSlider',
};

var init = function() {
// When ngModel is assigned an array of values then range is expected to be true.
// Warn user and change range to true else an error occurs when trying to drag handle
if (angular.isArray(ngModel.$viewValue) && options.range !== true) {
console.warn('Change your range option of ui-slider. When assigning ngModel an array of values then the range option should be set to true.');
options.range = true;
}
elm.slider(options);

// When ngModel is assigned an array of values then range is expected to be true.
// Warn user and change range to true else an error occurs when trying to drag handle
if (angular.isArray(ngModel.$viewValue) && options.range !== true) {
console.warn('Change your range option of ui-slider. When assigning ngModel an array of values then the range option should be set to true.');
options.range = true;
}
elm.dragslider(options);
init = angular.noop;
};

Expand All @@ -39,33 +40,35 @@ angular.module('ui.slider', []).value('uiSliderConfig',{}).directive('uiSlider',
attrs.$observe(property, function(newVal){
if (!!newVal) {
init();
elm.slider('option', property, parseNumber(newVal, useDecimals));
elm.dragslider('option', property, parseNumber(newVal, useDecimals));
}
});
});
attrs.$observe('disabled', function(newVal){
init();
elm.slider('option', 'disabled', !!newVal);
elm.dragslider('option', 'disabled', !!newVal);
});

// Watch ui-slider (byVal) for changes and update
scope.$watch(attrs.uiSlider, function(newVal){
init();
elm.slider('option', newVal);
elm.dragslider('option', newVal);
}, true);

// Late-bind to prevent compiler clobbering
$timeout(init, 0, true);

// Update model value from slider
elm.bind('slide', function(event, ui){

ngModel.$setViewValue(ui.values || ui.value);
scope.$apply();
});

// Update slider from model value
ngModel.$render = function(){
init();

var method = options.range === true ? 'values' : 'value';

if (isNaN(ngModel.$viewValue))
Expand Down Expand Up @@ -97,7 +100,7 @@ angular.module('ui.slider', []).value('uiSliderConfig',{}).directive('uiSlider',
prevRangeValues.max = ngModel.$viewValue[1];

}
elm.slider(method, ngModel.$viewValue);
elm.dragslider(method, ngModel.$viewValue);
};

scope.$watch(attrs.ngModel, function(){
Expand All @@ -107,7 +110,7 @@ angular.module('ui.slider', []).value('uiSliderConfig',{}).directive('uiSlider',
}, true);

function destroy(){
elm.slider('destroy');
elm.dragslider('destroy');
}
elm.bind('$destroy', destroy);
};
Expand Down

0 comments on commit d7182e1

Please sign in to comment.