Skip to content
This repository was archived by the owner on Sep 5, 2024. It is now read-only.

Commit 273fff4

Browse files
fabiocarneiroThomasBurleson
authored andcommitted
fix(slider): check for invalid discrete step value
Closes #3590.
1 parent 5e3a651 commit 273fff4

File tree

1 file changed

+24
-17
lines changed

1 file changed

+24
-17
lines changed

src/components/slider/slider.js

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
* @param {number=} min The minimum value the user is allowed to pick. Default 0.
4646
* @param {number=} max The maximum value the user is allowed to pick. Default 100.
4747
*/
48-
function SliderDirective($$rAF, $window, $mdAria, $mdUtil, $mdConstant, $mdTheming, $mdGesture, $parse) {
48+
function SliderDirective($$rAF, $window, $mdAria, $mdUtil, $mdConstant, $mdTheming, $mdGesture, $parse, $log) {
4949
return {
5050
scope: {},
5151
require: '?ngModel',
@@ -185,22 +185,29 @@ function SliderDirective($$rAF, $window, $mdAria, $mdUtil, $mdConstant, $mdThemi
185185
function redrawTicks() {
186186
if (!angular.isDefined(attr.mdDiscrete)) return;
187187

188-
var numSteps = Math.floor( (max - min) / step );
189-
if (!tickCanvas) {
190-
var trackTicksStyle = $window.getComputedStyle(tickContainer[0]);
191-
tickCanvas = angular.element('<canvas style="position:absolute;">');
192-
tickCtx = tickCanvas[0].getContext('2d');
193-
tickCtx.fillStyle = trackTicksStyle.backgroundColor || 'black';
194-
tickContainer.append(tickCanvas);
195-
}
196-
var dimensions = getSliderDimensions();
197-
tickCanvas[0].width = dimensions.width;
198-
tickCanvas[0].height = dimensions.height;
199-
200-
var distance;
201-
for (var i = 0; i <= numSteps; i++) {
202-
distance = Math.floor(dimensions.width * (i / numSteps));
203-
tickCtx.fillRect(distance - 1, 0, 2, dimensions.height);
188+
if (step > 0) {
189+
190+
var numSteps = Math.floor( (max - min) / step );
191+
if (!tickCanvas) {
192+
tickCanvas = angular.element('<canvas style="position:absolute;">');
193+
tickContainer.append(tickCanvas);
194+
195+
var trackTicksStyle = $window.getComputedStyle(tickContainer[0]);
196+
tickCtx = tickCanvas[0].getContext('2d');
197+
tickCtx.fillStyle = trackTicksStyle.backgroundColor || 'black';
198+
}
199+
var dimensions = getSliderDimensions();
200+
tickCanvas[0].width = dimensions.width;
201+
tickCanvas[0].height = dimensions.height;
202+
203+
var distance;
204+
for (var i = 0; i <= numSteps; i++) {
205+
distance = Math.floor(dimensions.width * (i / numSteps));
206+
tickCtx.fillRect(distance - 1, 0, 2, dimensions.height);
207+
}
208+
209+
} else {
210+
$log.error('Slider step value must be greater than zero when in discrete mode');
204211
}
205212
}
206213

0 commit comments

Comments
 (0)