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

Commit d6d3546

Browse files
crisbetojelbourn
authored andcommitted
fix(progress-circular): path not being re-rendered when diameter changes (#9846)
* Fixes the `path` element not being updated when a progress circle's `md-diameter` changes. * Fixes a warning being logged for the progress circlar demo. * Does some minor cleanup in the progress circle directive. Fixes #9841.
1 parent 22f9faf commit d6d3546

File tree

3 files changed

+32
-8
lines changed

3 files changed

+32
-8
lines changed

src/components/progressCircular/demoBasicUsage/script.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
angular
2-
.module('progressCircularDemo1', ['ngMaterial'])
2+
.module('progressCircularDemo1', ['ngMaterial'], function($mdThemingProvider) {
3+
$mdThemingProvider.theme('docs-dark', 'default')
4+
.primaryPalette('yellow')
5+
.dark();
6+
})
37
.controller('AppCtrl', ['$interval',
48
function($interval) {
59
var self = this;

src/components/progressCircular/js/progressCircularDirective.js

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,7 @@ function MdProgressCircularDirective($window, $mdProgressCircular, $mdTheming,
8787
});
8888

8989
if (angular.isUndefined(attrs.mdMode)) {
90-
var hasValue = angular.isDefined(attrs.value);
91-
var mode = hasValue ? MODE_DETERMINATE : MODE_INDETERMINATE;
92-
var info = "Auto-adding the missing md-mode='{0}' to the ProgressCircular element";
93-
94-
// $log.debug( $mdUtil.supplant(info, [mode]) );
90+
var mode = attrs.hasOwnProperty('value') ? MODE_DETERMINATE : MODE_INDETERMINATE;
9591
attrs.$set('mdMode', mode);
9692
} else {
9793
attrs.$set('mdMode', attrs.mdMode.trim());
@@ -138,8 +134,8 @@ function MdProgressCircularDirective($window, $mdProgressCircular, $mdTheming,
138134
if (isDisabled === true || isDisabled === false){
139135
return isDisabled;
140136
}
141-
return angular.isDefined(element.attr('disabled'));
142137

138+
return angular.isDefined(element.attr('disabled'));
143139
}], function(newValues, oldValues) {
144140
var mode = newValues[1];
145141
var isDisabled = newValues[2];
@@ -176,6 +172,7 @@ function MdProgressCircularDirective($window, $mdProgressCircular, $mdTheming,
176172
scope.$watch('mdDiameter', function(newValue) {
177173
var diameter = getSize(newValue);
178174
var strokeWidth = getStroke(diameter);
175+
var value = clamp(scope.value);
179176
var transformOrigin = (diameter / 2) + 'px';
180177
var dimensions = {
181178
width: diameter + 'px',
@@ -200,6 +197,8 @@ function MdProgressCircularDirective($window, $mdProgressCircular, $mdTheming,
200197

201198
element.css(dimensions);
202199
path.css('stroke-width', strokeWidth + 'px');
200+
201+
renderCircle(value, value);
203202
});
204203

205204
function renderCircle(animateFrom, animateTo, easing, duration, rotation) {

src/components/progressCircular/progress-circular.spec.js

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ describe('mdProgressCircular', function() {
6767
expect(progress.attr('aria-valuenow')).toEqual('50');
6868
});
6969

70-
it('should\'t set aria-valuenow in indeterminate mode', function() {
70+
it('should not set aria-valuenow in indeterminate mode', function() {
7171
var progress = buildIndicator('<md-progress-circular md-mode="indeterminate" value="100"></md-progress-circular>');
7272

7373
expect(progress.attr('aria-valuenow')).toBeUndefined();
@@ -111,6 +111,27 @@ describe('mdProgressCircular', function() {
111111
expect(svg.css('transform-origin')).toBe('21px 21px 21px');
112112
});
113113

114+
it('should adjust the element size when the diameter changes', function() {
115+
$rootScope.diameter = 30;
116+
117+
var element = buildIndicator(
118+
'<md-progress-circular value="50" md-diameter="{{diameter}}"></md-progress-circular>'
119+
);
120+
121+
var path = element.find('path');
122+
var initialPathDimensions = path.attr('d');
123+
124+
expect(element.css('width')).toBe('30px');
125+
expect(element.css('height')).toBe('30px');
126+
expect(initialPathDimensions).toBeTruthy();
127+
128+
$rootScope.$apply('diameter = 60');
129+
130+
expect(element.css('width')).toBe('60px');
131+
expect(element.css('height')).toBe('60px');
132+
expect(path.attr('d')).not.toBe(initialPathDimensions);
133+
});
134+
114135
/**
115136
* Build a progressCircular
116137
*/

0 commit comments

Comments
 (0)