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

Commit ff2e92b

Browse files
Robert MesserleThomasBurleson
authored andcommitted
fix(progressCircular): fixes scaling issues
Fixes #4839. Closes #5891.
1 parent a899c5b commit ff2e92b

File tree

4 files changed

+41
-28
lines changed

4 files changed

+41
-28
lines changed

src/components/progressCircular/progress-circular.js

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,16 @@ function MdProgressCircularDirective($mdTheming, $mdUtil, $log) {
6464
template:
6565
// The progress 'circle' is composed of two half-circles: the left side and the right
6666
// side. Each side has CSS applied to 'fill-in' the half-circle to the appropriate progress.
67-
'<div class="md-spinner-wrapper">' +
68-
'<div class="md-inner">' +
69-
'<div class="md-gap"></div>' +
70-
'<div class="md-left">' +
71-
'<div class="md-half-circle"></div>' +
72-
'</div>' +
73-
'<div class="md-right">' +
74-
'<div class="md-half-circle"></div>' +
67+
'<div class="md-scale-wrapper">' +
68+
'<div class="md-spinner-wrapper">' +
69+
'<div class="md-inner">' +
70+
'<div class="md-gap"></div>' +
71+
'<div class="md-left">' +
72+
'<div class="md-half-circle"></div>' +
73+
'</div>' +
74+
'<div class="md-right">' +
75+
'<div class="md-half-circle"></div>' +
76+
'</div>' +
7577
'</div>' +
7678
'</div>' +
7779
'</div>',
@@ -135,8 +137,14 @@ function MdProgressCircularDirective($mdTheming, $mdUtil, $log) {
135137
* Watch the "value" and "md-mode" attributes
136138
*/
137139
function updateScale() {
138-
circle.css(toVendorCSS({
139-
transform : $mdUtil.supplant('scale( {0} )',[getDiameterRatio()])
140+
// set the outer container to the size the user specified
141+
circle.css({
142+
width: (100 * getDiameterRatio()) + 'px',
143+
height: (100 * getDiameterRatio()) + 'px'
144+
});
145+
// the internal element is still 100px, so we have to scale it down to match the size
146+
circle.children().eq(0).css(toVendorCSS({
147+
transform : $mdUtil.supplant('translate(-50%, -50%) scale( {0} )',[getDiameterRatio()])
140148
}));
141149
}
142150

src/components/progressCircular/progress-circular.scss

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,14 @@ md-progress-circular {
1616
padding-top: 0 !important;
1717
margin-bottom: 0 !important;
1818

19-
transform: scale(0.5);
2019
z-index: $z-index-progress-circular; // Used to fix a Chrome bug with spinner animation
2120

2221
.md-spinner-wrapper {
2322
display:block;
24-
position: relative;
23+
position: absolute;
2524
overflow: hidden;
25+
top: 50%;
26+
left: 50%;
2627

2728
.md-inner {
2829
width: $progress-circular-size;
@@ -74,7 +75,7 @@ md-progress-circular {
7475
}
7576

7677

77-
.md-spinner-wrapper.md-mode-indeterminate {
78+
.md-mode-indeterminate .md-spinner-wrapper {
7879
animation: outer-rotate $progress-circular-outer-duration linear infinite;
7980
.md-inner {
8081
animation: sporadic-rotate $progress-circular-sporadic-duration $progress-circular-ease-in-out infinite;
@@ -141,24 +142,25 @@ md-progress-circular {
141142
// Keyframe animation for the Indeterminate Progress
142143
//
143144
@keyframes outer-rotate {
144-
100% { transform: rotate(360deg); }
145+
0% { transform: rotate(0deg) scale(0.5); }
146+
100% { transform: rotate(360deg) scale(0.5); }
145147
}
146148
@keyframes left-wobble {
147-
0%, 100% { transform: rotate(130deg); }
148-
50% { transform: rotate( -5deg); }
149+
0%, 100% { transform: rotate(130deg); }
150+
50% { transform: rotate( -5deg); }
149151
}
150152
@keyframes right-wobble {
151-
0%, 100% { transform: rotate(-130deg); }
152-
50% { transform: rotate( 5deg); }
153+
0%, 100% { transform: rotate(-130deg); }
154+
50% { transform: rotate( 5deg); }
153155
}
154156
@keyframes sporadic-rotate {
155-
12.5% { transform: rotate( 135deg); }
156-
25% { transform: rotate( 270deg); }
157-
37.5% { transform: rotate( 405deg); }
158-
50% { transform: rotate( 540deg); }
159-
62.5% { transform: rotate( 675deg); }
160-
75% { transform: rotate( 810deg); }
161-
87.5% { transform: rotate( 945deg); }
162-
100% { transform: rotate(1080deg); }
157+
12.5% { transform: rotate( 135deg); }
158+
25% { transform: rotate( 270deg); }
159+
37.5% { transform: rotate( 405deg); }
160+
50% { transform: rotate( 540deg); }
161+
62.5% { transform: rotate( 675deg); }
162+
75% { transform: rotate( 810deg); }
163+
87.5% { transform: rotate( 945deg); }
164+
100% { transform: rotate(1080deg); }
163165
}
164166

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,9 @@ describe('mdProgressCircular', function() {
7070

7171
it('should set scaling using percentage values',function() {
7272
var progress = buildIndicator('<md-progress-circular md-diameter="25%"></md-progress-circular>');
73-
expect( getScale(progress) ).toBe(0.25);
73+
expect( getScale(progress[0].children[0]) ).toBe(0.25);
74+
expect(progress.css('width')).toBe('25px');
75+
expect(progress.css('height')).toBe('25px');
7476
});
7577

7678
it('should set scaling using pixel values', function() {
@@ -79,7 +81,7 @@ describe('mdProgressCircular', function() {
7981
var progress = buildIndicator('<md-progress-circular md-diameter="37px"></md-progress-circular>');
8082
var value = Math.round( (37 / DEFAULT_SIZE) * 100 )/100;
8183

82-
expect( getScale(progress) ).toBe(value);
84+
expect( getScale(progress[0].children[0]) ).toBe(value);
8385
});
8486

8587
/**

src/components/tabs/js/tabDirective.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ function MdTab () {
6565
label = angular.element('<md-tab-label></md-tab-label>');
6666
if (attr.label) label.text(attr.label);
6767
else label.append(element.contents());
68+
6869
if (body.length == 0) {
6970
var contents = element.contents().detach();
7071
body = angular.element('<md-tab-body></md-tab-body>');

0 commit comments

Comments
 (0)