73bcce88
luigser
COMPONENTS
|
1
2
3
4
5
6
7
8
9
10
11
12
|
<!--
@license
Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
Code distributed by Google as part of the polymer project is also
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
-->
<link rel="import" href="../polymer/polymer.html">
<link rel="import" href="../paper-styles/paper-styles.html">
|
e619a3b0
Luigi Serra
Controllet cross ...
|
13
|
<link rel="import" href="../paper-styles/paper-styles-classes.html">
|
73bcce88
luigser
COMPONENTS
|
14
|
<link rel="import" href="../iron-range-behavior/iron-range-behavior.html">
|
73bcce88
luigser
COMPONENTS
|
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
<!--
The progress bars are for situations where the percentage completed can be
determined. They give users a quick sense of how much longer an operation
will take.
Example:
<paper-progress value="10"></paper-progress>
There is also a secondary progress which is useful for displaying intermediate
progress, such as the buffer level during a streaming playback progress bar.
Example:
<paper-progress value="10" secondary-progress="30"></paper-progress>
### Styling progress bar:
To change the active progress bar color:
paper-progress {
--paper-progress-active-color: #e91e63;
}
To change the secondary progress bar color:
paper-progress {
--paper-progress-secondary-color: #f8bbd0;
}
To change the progress bar background color:
paper-progress {
--paper-progress-container-color: #64ffda;
}
Add the class `transiting` to a paper-progress to animate the progress bar when
the value changed. You can also customize the transition:
paper-progress {
--paper-progress-transition-duration: 0.08s;
--paper-progress-transition-timing-function: ease;
--paper-progress-transition-transition-delay: 0s;
}
|
e619a3b0
Luigi Serra
Controllet cross ...
|
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
The following mixins are available for styling:
Custom property | Description | Default
--------------------------------------------|---------------------------------------------|----------
--paper-progress-container-color | Mixin applied to container | --google-grey-300
--paper-progress-transition-duration | Duration of the transition | 0.008s
--paper-progress-transition-timing-function | The timing function for the transition | ease
--paper-progress-transition-delay | delay for the transition | 0s
--paper-progress-active-color | The color of the active bar | --google-green-500
--paper-progress-secondary-color | The color of the secondary bar | --google-green-100
--paper-progress-disabled-active-color | The color of the active bar if disabled | --google-grey-500
--paper-progress-disabled-secondary-color | The color of the secondary bar if disabled | --google-grey-300
--paper-progress-height | The height of the progress bar | 4px
|
73bcce88
luigser
COMPONENTS
|
75
76
77
78
79
80
81
82
83
|
@group Paper Elements
@element paper-progress
@hero hero.svg
@demo demo/index.html
-->
<dom-module id="paper-progress">
<style>
:host {
|
e619a3b0
Luigi Serra
Controllet cross ...
|
84
|
display: block;
|
73bcce88
luigser
COMPONENTS
|
85
|
width: 200px;
|
e619a3b0
Luigi Serra
Controllet cross ...
|
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
position: relative;
overflow: hidden;
}
#progressContainer {
position: relative;
}
#progressContainer,
/* the stripe for the indeterminate animation*/
.indeterminate:after {
height: var(--paper-progress-height, 4px);
}
#primaryProgress,
#secondaryProgress,
.indeterminate:after {
@apply(--layout-fit);
}
#progressContainer,
.indeterminate:after {
background-color: var(--paper-progress-container-color, --google-grey-300);
|
73bcce88
luigser
COMPONENTS
|
109
110
|
}
|
e619a3b0
Luigi Serra
Controllet cross ...
|
111
|
:host(.transiting) #primaryProgress,
|
73bcce88
luigser
COMPONENTS
|
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
:host(.transiting) #secondaryProgress {
-webkit-transition-property: -webkit-transform;
transition-property: transform;
/* Duration */
-webkit-transition-duration: var(--paper-progress-transition-duration, 0.08s);
transition-duration: var(--paper-progress-transition-duration, 0.08s);
/* Timing function */
-webkit-transition-timing-function: var(--paper-progress-transition-timing-function, ease);
transition-timing-function: var(--paper-progress-transition-timing-function, ease);
/* Delay */
-webkit-transition-delay: var(--paper-progress-transition-delay, 0s);
transition-delay: var(--paper-progress-transition-delay, 0s);
}
|
e619a3b0
Luigi Serra
Controllet cross ...
|
129
|
#primaryProgress,
|
73bcce88
luigser
COMPONENTS
|
130
|
#secondaryProgress {
|
e619a3b0
Luigi Serra
Controllet cross ...
|
131
|
@apply(--layout-fit);
|
73bcce88
luigser
COMPONENTS
|
132
133
134
135
|
-webkit-transform-origin: left center;
transform-origin: left center;
-webkit-transform: scaleX(0);
transform: scaleX(0);
|
e619a3b0
Luigi Serra
Controllet cross ...
|
136
|
will-change: transform;
|
73bcce88
luigser
COMPONENTS
|
137
138
|
}
|
e619a3b0
Luigi Serra
Controllet cross ...
|
139
|
#primaryProgress {
|
73bcce88
luigser
COMPONENTS
|
140
141
142
143
|
background-color: var(--paper-progress-active-color, --google-green-500);
}
#secondaryProgress {
|
e619a3b0
Luigi Serra
Controllet cross ...
|
144
|
position: relative;
|
73bcce88
luigser
COMPONENTS
|
145
146
147
|
background-color: var(--paper-progress-secondary-color, --google-green-100);
}
|
e619a3b0
Luigi Serra
Controllet cross ...
|
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
|
:host([disabled]) #primaryProgress {
background-color: var(--paper-progress-disabled-active-color, --google-grey-500);
}
:host([disabled]) #secondaryProgress {
background-color: var(--paper-progress-disabled-active-color, --google-grey-300);
}
:host(:not([disabled])) #primaryProgress.indeterminate {
-webkit-transform-origin: right center;
transform-origin: right center;
-webkit-animation: indeterminate-bar 2s linear infinite;
animation: indeterminate-bar 2s linear infinite;
}
:host(:not([disabled])) #primaryProgress.indeterminate:after {
content: "";
|
73bcce88
luigser
COMPONENTS
|
165
166
|
-webkit-transform-origin: center center;
transform-origin: center center;
|
e619a3b0
Luigi Serra
Controllet cross ...
|
167
168
169
|
-webkit-animation: indeterminate-splitter 2s linear infinite;
animation: indeterminate-splitter 2s linear infinite;
|
73bcce88
luigser
COMPONENTS
|
170
171
172
173
|
}
@-webkit-keyframes indeterminate-bar {
0% {
|
e619a3b0
Luigi Serra
Controllet cross ...
|
174
|
-webkit-transform: scaleX(1) translateX(-100%);
|
73bcce88
luigser
COMPONENTS
|
175
176
|
}
50% {
|
e619a3b0
Luigi Serra
Controllet cross ...
|
177
178
179
180
181
|
-webkit-transform: scaleX(1) translateX(0%);
}
75% {
-webkit-transform: scaleX(1) translateX(0%);
-webkit-animation-timing-function: cubic-bezier(.28,.62,.37,.91);
|
73bcce88
luigser
COMPONENTS
|
182
183
|
}
100% {
|
e619a3b0
Luigi Serra
Controllet cross ...
|
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
|
-webkit-transform: scaleX(0) translateX(0%);
}
}
@-webkit-keyframes indeterminate-splitter {
0% {
-webkit-transform: scaleX(.75) translateX(-125%);
}
30% {
-webkit-transform: scaleX(.75) translateX(-125%);
-webkit-animation-timing-function: cubic-bezier(.42,0,.6,.8);
}
90% {
-webkit-transform: scaleX(.75) translateX(125%);
}
100% {
-webkit-transform: scaleX(.75) translateX(125%);
|
73bcce88
luigser
COMPONENTS
|
201
202
203
204
205
|
}
}
@keyframes indeterminate-bar {
0% {
|
e619a3b0
Luigi Serra
Controllet cross ...
|
206
|
transform: scaleX(1) translateX(-100%);
|
73bcce88
luigser
COMPONENTS
|
207
208
|
}
50% {
|
e619a3b0
Luigi Serra
Controllet cross ...
|
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
|
transform: scaleX(1) translateX(0%);
}
75% {
transform: scaleX(1) translateX(0%);
animation-timing-function: cubic-bezier(.28,.62,.37,.91);
}
100% {
transform: scaleX(0) translateX(0%);
}
}
@keyframes indeterminate-splitter {
0% {
transform: scaleX(.75) translateX(-125%);
}
30% {
transform: scaleX(.75) translateX(-125%);
animation-timing-function: cubic-bezier(.42,0,.6,.8);
}
90% {
transform: scaleX(.75) translateX(125%);
|
73bcce88
luigser
COMPONENTS
|
230
231
|
}
100% {
|
e619a3b0
Luigi Serra
Controllet cross ...
|
232
|
transform: scaleX(.75) translateX(125%);
|
73bcce88
luigser
COMPONENTS
|
233
234
235
236
|
}
}
</style>
<template>
|
e619a3b0
Luigi Serra
Controllet cross ...
|
237
238
239
|
<div id="progressContainer">
<div id="secondaryProgress" hidden$="[[_hideSecondaryProgress(secondaryRatio)]]"></div>
<div id="primaryProgress"></div>
|
73bcce88
luigser
COMPONENTS
|
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
|
</div>
</template>
</dom-module>
<script>
Polymer({
is: 'paper-progress',
behaviors: [
Polymer.IronRangeBehavior
],
properties: {
/**
* The number that represents the current secondary progress.
*/
secondaryProgress: {
type: Number,
|
e619a3b0
Luigi Serra
Controllet cross ...
|
260
|
value: 0
|
73bcce88
luigser
COMPONENTS
|
261
262
263
264
265
266
267
268
|
},
/**
* The secondary ratio
*/
secondaryRatio: {
type: Number,
value: 0,
|
e619a3b0
Luigi Serra
Controllet cross ...
|
269
|
readOnly: true
|
73bcce88
luigser
COMPONENTS
|
270
271
272
273
274
275
276
277
|
},
/**
* Use an indeterminate progress indicator.
*/
indeterminate: {
type: Boolean,
value: false,
|
73bcce88
luigser
COMPONENTS
|
278
|
observer: '_toggleIndeterminate'
|
e619a3b0
Luigi Serra
Controllet cross ...
|
279
280
281
282
283
284
285
286
287
288
|
},
/**
* True if the progress is disabled.
*/
disabled: {
type: Boolean,
value: false,
reflectToAttribute: true,
observer: '_disabledChanged'
|
73bcce88
luigser
COMPONENTS
|
289
290
291
292
|
}
},
observers: [
|
e619a3b0
Luigi Serra
Controllet cross ...
|
293
|
'_progressChanged(secondaryProgress, value, min, max)'
|
73bcce88
luigser
COMPONENTS
|
294
295
|
],
|
e619a3b0
Luigi Serra
Controllet cross ...
|
296
297
298
299
300
|
hostAttributes: {
role: 'progressbar'
},
_toggleIndeterminate: function(indeterminate) {
|
73bcce88
luigser
COMPONENTS
|
301
302
|
// If we use attribute/class binding, the animation sometimes doesn't translate properly
// on Safari 7.1. So instead, we toggle the class here in the update method.
|
e619a3b0
Luigi Serra
Controllet cross ...
|
303
|
this.toggleClass('indeterminate', indeterminate, this.$.primaryProgress);
|
73bcce88
luigser
COMPONENTS
|
304
305
306
307
308
309
310
|
},
_transformProgress: function(progress, ratio) {
var transform = 'scaleX(' + (ratio / 100) + ')';
progress.style.transform = progress.style.webkitTransform = transform;
},
|
e619a3b0
Luigi Serra
Controllet cross ...
|
311
312
|
_mainRatioChanged: function(ratio) {
this._transformProgress(this.$.primaryProgress, ratio);
|
73bcce88
luigser
COMPONENTS
|
313
314
|
},
|
e619a3b0
Luigi Serra
Controllet cross ...
|
315
316
317
318
319
320
321
322
|
_progressChanged: function(secondaryProgress, value, min, max) {
secondaryProgress = this._clampValue(secondaryProgress);
value = this._clampValue(value);
var secondaryRatio = this._calcRatio(secondaryProgress) * 100;
var mainRatio = this._calcRatio(value) * 100;
this._setSecondaryRatio(secondaryRatio);
|
73bcce88
luigser
COMPONENTS
|
323
|
this._transformProgress(this.$.secondaryProgress, secondaryRatio);
|
e619a3b0
Luigi Serra
Controllet cross ...
|
324
325
326
327
328
329
330
331
332
333
334
|
this._transformProgress(this.$.primaryProgress, mainRatio);
this.secondaryProgress = secondaryProgress;
this.setAttribute('aria-valuenow', value);
this.setAttribute('aria-valuemin', min);
this.setAttribute('aria-valuemax', max);
},
_disabledChanged: function(disabled) {
this.setAttribute('aria-disabled', disabled ? 'true' : 'false');
|
73bcce88
luigser
COMPONENTS
|
335
336
|
},
|
e619a3b0
Luigi Serra
Controllet cross ...
|
337
338
|
_hideSecondaryProgress: function(secondaryRatio) {
return secondaryRatio === 0;
|
73bcce88
luigser
COMPONENTS
|
339
340
341
342
343
|
}
});
</script>
|