From 914de21c6c617c53e0a37d41a19ef30622f31d0b Mon Sep 17 00:00:00 2001 From: Robert Messerle Date: Wed, 12 Nov 2014 14:49:19 -0500 Subject: [PATCH 1/2] fix(slider): updates discrete slider thumb text This is related to issue #622. --- src/components/slider/slider.js | 6 +++++- src/components/slider/slider.spec.js | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/components/slider/slider.js b/src/components/slider/slider.js index e81b033ee3a..de34f8120b0 100644 --- a/src/components/slider/slider.js +++ b/src/components/slider/slider.js @@ -74,7 +74,7 @@ function SliderDirective($mdTheming) { '
' + '
' + '
' + - '' + + '' + '
' + '
' + '', @@ -108,6 +108,7 @@ function SliderController(scope, element, attr, $$rAF, $window, $mdEffects, $mdA 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')); @@ -381,7 +382,10 @@ function SliderController(scope, element, attr, $$rAF, $window, $mdEffects, $mdA * @param x */ function adjustThumbPosition( x ) { + var exactVal = percentToValue( positionToPercent( x )); + var closestVal = minMaxValidator( stepValidator(exactVal) ); setSliderPercent( positionToPercent(x) ); + thumbText.text( closestVal ); } /** diff --git a/src/components/slider/slider.spec.js b/src/components/slider/slider.spec.js index 28b9d165c08..a1a39bcf98f 100644 --- a/src/components/slider/slider.spec.js +++ b/src/components/slider/slider.spec.js @@ -41,6 +41,23 @@ describe('md-slider', function() { expect($rootScope.value).toBe(50); })); + it('should set model on drag', inject(function($compile, $rootScope, $timeout) { + var slider = $compile('')($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._onPan( simulateEventAt( 80, Hammer.INPUT_MOVE )); + $timeout.flush(); + expect($rootScope.value).toBe(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( '' From f7c2851aba56fe34a3860a4213b8115bef0a3ef5 Mon Sep 17 00:00:00 2001 From: Robert Messerle Date: Wed, 12 Nov 2014 17:00:39 -0500 Subject: [PATCH 2/2] fix(slider): fixed issue in the spec file from the previous commit --- src/components/slider/slider.spec.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/slider/slider.spec.js b/src/components/slider/slider.spec.js index a1a39bcf98f..b7b4f6deaaf 100644 --- a/src/components/slider/slider.spec.js +++ b/src/components/slider/slider.spec.js @@ -52,9 +52,10 @@ describe('md-slider', function() { right: 0 }); - sliderCtrl._onPan( simulateEventAt( 80, Hammer.INPUT_MOVE )); + sliderCtrl._onInput( simulateEventAt( 30, Hammer.INPUT_START )); $timeout.flush(); - expect($rootScope.value).toBe(80); + + sliderCtrl._onPan( simulateEventAt( 80 )); expect(slider[0].querySelector('.md-thumb-text').textContent).toBe('80'); }));