Skip to content
This repository has been archived by the owner on Aug 29, 2023. It is now read-only.

Commit

Permalink
fix(slider): update discrete slider thumb text while dragging
Browse files Browse the repository at this point in the history
Closes #622. Closes #628.
  • Loading branch information
robertmesserle authored and ajoslin committed Nov 15, 2014
1 parent 92b7643 commit 2877585
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 1 deletion.
6 changes: 5 additions & 1 deletion src/components/slider/slider.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ function SliderDirective($mdTheming) {
'<div class="md-focus-thumb"></div>' +
'<div class="md-focus-ring"></div>' +
'<div class="md-sign">' +
'<span class="md-thumb-text" ng-bind="modelValue"></span>' +
'<span class="md-thumb-text"></span>' +
'</div>' +
'<div class="md-disabled-thumb"></div>' +
'</div>',
Expand Down Expand Up @@ -94,6 +94,7 @@ function SliderController($scope, $element, $attrs, $$rAF, $window, $mdAria, $md

this.init = function init(ngModelCtrl) {
var thumb = angular.element($element[0].querySelector('.md-thumb'));
var thumbText = angular.element($element[0].querySelector('.md-thumb-text'));
var thumbContainer = thumb.parent();
var trackContainer = angular.element($element[0].querySelector('.md-track-container'));
var activeTrack = angular.element($element[0].querySelector('.md-track-fill'));
Expand Down Expand Up @@ -367,7 +368,10 @@ function SliderController($scope, $element, $attrs, $$rAF, $window, $mdAria, $md
* @param x
*/
function adjustThumbPosition( x ) {
var exactVal = percentToValue( positionToPercent( x ));
var closestVal = minMaxValidator( stepValidator(exactVal) );
setSliderPercent( positionToPercent(x) );
thumbText.text( closestVal );
}

/**
Expand Down
18 changes: 18 additions & 0 deletions src/components/slider/slider.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,24 @@ describe('md-slider', function() {
expect($rootScope.value).toBe(50);
}));

it('should set model on drag', inject(function($compile, $rootScope, $timeout) {
var slider = $compile('<md-slider ng-model="value" min="0" max="100" md-discrete>')($rootScope);
$rootScope.$apply('value = 50');
var sliderCtrl = slider.controller('mdSlider');

spyOn(slider[0].querySelector('.md-track-container'), 'getBoundingClientRect').andReturn({
width: 100,
left: 0,
right: 0
});

sliderCtrl._onInput( simulateEventAt( 30, Hammer.INPUT_START ));
$timeout.flush();

sliderCtrl._onPan( simulateEventAt( 80 ));
expect(slider[0].querySelector('.md-thumb-text').textContent).toBe('80');
}));

it('should increment model on right arrow', inject(function($compile, $rootScope, $timeout, $mdConstant) {
var slider = $compile(
'<md-slider min="100" max="104" step="2" ng-model="model">'
Expand Down

0 comments on commit 2877585

Please sign in to comment.