73bcce88
luigser
COMPONENTS
|
1
2
3
4
5
6
7
8
9
10
11
|
<!--
@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">
|
a1a3bc73
Luigi Serra
graphs updates
|
12
|
<link rel="import" href="../iron-flex-layout/iron-flex-layout.html">
|
73bcce88
luigser
COMPONENTS
|
13
|
<link rel="import" href="../iron-range-behavior/iron-range-behavior.html">
|
dbc787cf
Luigi Serra
Controllet cross ...
|
14
|
<link rel="import" href="../paper-styles/color.html">
|
73bcce88
luigser
COMPONENTS
|
15
16
|
<!--
|
a1a3bc73
Luigi Serra
graphs updates
|
17
18
|
Material design: [Progress & activity](https://www.google.com/design/spec/components/progress-activity.html)
|
73bcce88
luigser
COMPONENTS
|
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
60
61
|
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 ...
|
62
63
64
|
The following mixins are available for styling:
|
a1a3bc73
Luigi Serra
graphs updates
|
65
66
67
68
69
70
71
72
73
74
75
|
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`
|
e619a3b0
Luigi Serra
Controllet cross ...
|
76
|
|
73bcce88
luigser
COMPONENTS
|
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">
|
a1a3bc73
Luigi Serra
graphs updates
|
84
85
86
87
88
89
90
91
|
<template>
<style>
:host {
display: block;
width: 200px;
position: relative;
overflow: hidden;
}
|
e619a3b0
Luigi Serra
Controllet cross ...
|
92
|
|
a1a3bc73
Luigi Serra
graphs updates
|
93
94
95
|
#progressContainer {
position: relative;
}
|
e619a3b0
Luigi Serra
Controllet cross ...
|
96
|
|
a1a3bc73
Luigi Serra
graphs updates
|
97
98
99
100
101
|
#progressContainer,
/* the stripe for the indeterminate animation*/
.indeterminate::after {
height: var(--paper-progress-height, 4px);
}
|
e619a3b0
Luigi Serra
Controllet cross ...
|
102
|
|
a1a3bc73
Luigi Serra
graphs updates
|
103
104
105
106
107
|
#primaryProgress,
#secondaryProgress,
.indeterminate::after {
@apply(--layout-fit);
}
|
73bcce88
luigser
COMPONENTS
|
108
|
|
a1a3bc73
Luigi Serra
graphs updates
|
109
110
111
112
|
#progressContainer,
.indeterminate::after {
background-color: var(--paper-progress-container-color, --google-grey-300);
}
|
73bcce88
luigser
COMPONENTS
|
113
|
|
a1a3bc73
Luigi Serra
graphs updates
|
114
115
116
117
|
:host(.transiting) #primaryProgress,
:host(.transiting) #secondaryProgress {
-webkit-transition-property: -webkit-transform;
transition-property: transform;
|
73bcce88
luigser
COMPONENTS
|
118
|
|
a1a3bc73
Luigi Serra
graphs updates
|
119
120
121
|
/* Duration */
-webkit-transition-duration: var(--paper-progress-transition-duration, 0.08s);
transition-duration: var(--paper-progress-transition-duration, 0.08s);
|
73bcce88
luigser
COMPONENTS
|
122
|
|
a1a3bc73
Luigi Serra
graphs updates
|
123
124
125
|
/* Timing function */
-webkit-transition-timing-function: var(--paper-progress-transition-timing-function, ease);
transition-timing-function: var(--paper-progress-transition-timing-function, ease);
|
73bcce88
luigser
COMPONENTS
|
126
|
|
a1a3bc73
Luigi Serra
graphs updates
|
127
128
129
130
|
/* Delay */
-webkit-transition-delay: var(--paper-progress-transition-delay, 0s);
transition-delay: var(--paper-progress-transition-delay, 0s);
}
|
73bcce88
luigser
COMPONENTS
|
131
|
|
a1a3bc73
Luigi Serra
graphs updates
|
132
133
134
135
136
137
138
139
140
|
#primaryProgress,
#secondaryProgress {
@apply(--layout-fit);
-webkit-transform-origin: left center;
transform-origin: left center;
-webkit-transform: scaleX(0);
transform: scaleX(0);
will-change: transform;
}
|
73bcce88
luigser
COMPONENTS
|
141
|
|
a1a3bc73
Luigi Serra
graphs updates
|
142
143
144
|
#primaryProgress {
background-color: var(--paper-progress-active-color, --google-green-500);
}
|
73bcce88
luigser
COMPONENTS
|
145
|
|
a1a3bc73
Luigi Serra
graphs updates
|
146
147
148
149
|
#secondaryProgress {
position: relative;
background-color: var(--paper-progress-secondary-color, --google-green-100);
}
|
e619a3b0
Luigi Serra
Controllet cross ...
|
150
|
|
a1a3bc73
Luigi Serra
graphs updates
|
151
152
153
|
:host([disabled]) #primaryProgress {
background-color: var(--paper-progress-disabled-active-color, --google-grey-500);
}
|
e619a3b0
Luigi Serra
Controllet cross ...
|
154
|
|
a1a3bc73
Luigi Serra
graphs updates
|
155
156
157
|
:host([disabled]) #secondaryProgress {
background-color: var(--paper-progress-disabled-secondary-color, --google-grey-300);
}
|
e619a3b0
Luigi Serra
Controllet cross ...
|
158
|
|
a1a3bc73
Luigi Serra
graphs updates
|
159
160
161
162
163
164
|
: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;
}
|
e619a3b0
Luigi Serra
Controllet cross ...
|
165
|
|
a1a3bc73
Luigi Serra
graphs updates
|
166
167
168
169
|
:host(:not([disabled])) #primaryProgress.indeterminate::after {
content: "";
-webkit-transform-origin: center center;
transform-origin: center center;
|
73bcce88
luigser
COMPONENTS
|
170
|
|
a1a3bc73
Luigi Serra
graphs updates
|
171
172
|
-webkit-animation: indeterminate-splitter 2s linear infinite;
animation: indeterminate-splitter 2s linear infinite;
|
e619a3b0
Luigi Serra
Controllet cross ...
|
173
|
}
|
e619a3b0
Luigi Serra
Controllet cross ...
|
174
|
|
a1a3bc73
Luigi Serra
graphs updates
|
175
176
177
178
179
180
181
182
183
184
185
186
187
188
|
@-webkit-keyframes indeterminate-bar {
0% {
-webkit-transform: scaleX(1) translateX(-100%);
}
50% {
-webkit-transform: scaleX(1) translateX(0%);
}
75% {
-webkit-transform: scaleX(1) translateX(0%);
-webkit-animation-timing-function: cubic-bezier(.28,.62,.37,.91);
}
100% {
-webkit-transform: scaleX(0) translateX(0%);
}
|
e619a3b0
Luigi Serra
Controllet cross ...
|
189
|
}
|
73bcce88
luigser
COMPONENTS
|
190
|
|
a1a3bc73
Luigi Serra
graphs updates
|
191
192
193
194
195
196
197
198
199
200
201
202
203
204
|
@-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%);
}
|
e619a3b0
Luigi Serra
Controllet cross ...
|
205
|
}
|
e619a3b0
Luigi Serra
Controllet cross ...
|
206
|
|
a1a3bc73
Luigi Serra
graphs updates
|
207
208
209
210
211
212
213
214
215
216
217
218
219
220
|
@keyframes indeterminate-bar {
0% {
transform: scaleX(1) translateX(-100%);
}
50% {
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%);
}
|
e619a3b0
Luigi Serra
Controllet cross ...
|
221
|
}
|
a1a3bc73
Luigi Serra
graphs updates
|
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
|
@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%);
}
100% {
transform: scaleX(.75) translateX(125%);
}
|
73bcce88
luigser
COMPONENTS
|
237
|
}
|
a1a3bc73
Luigi Serra
graphs updates
|
238
239
|
</style>
|
e619a3b0
Luigi Serra
Controllet cross ...
|
240
241
242
|
<div id="progressContainer">
<div id="secondaryProgress" hidden$="[[_hideSecondaryProgress(secondaryRatio)]]"></div>
<div id="primaryProgress"></div>
|
73bcce88
luigser
COMPONENTS
|
243
244
245
246
247
248
|
</div>
</template>
</dom-module>
<script>
Polymer({
|
73bcce88
luigser
COMPONENTS
|
249
250
251
252
253
254
255
|
is: 'paper-progress',
behaviors: [
Polymer.IronRangeBehavior
],
properties: {
|
73bcce88
luigser
COMPONENTS
|
256
257
258
259
260
|
/**
* The number that represents the current secondary progress.
*/
secondaryProgress: {
type: Number,
|
e619a3b0
Luigi Serra
Controllet cross ...
|
261
|
value: 0
|
73bcce88
luigser
COMPONENTS
|
262
263
264
265
266
267
268
269
|
},
/**
* The secondary ratio
*/
secondaryRatio: {
type: Number,
value: 0,
|
e619a3b0
Luigi Serra
Controllet cross ...
|
270
|
readOnly: true
|
73bcce88
luigser
COMPONENTS
|
271
272
273
274
275
276
277
278
|
},
/**
* Use an indeterminate progress indicator.
*/
indeterminate: {
type: Boolean,
value: false,
|
73bcce88
luigser
COMPONENTS
|
279
|
observer: '_toggleIndeterminate'
|
e619a3b0
Luigi Serra
Controllet cross ...
|
280
281
282
283
284
285
286
287
288
289
|
},
/**
* True if the progress is disabled.
*/
disabled: {
type: Boolean,
value: false,
reflectToAttribute: true,
observer: '_disabledChanged'
|
73bcce88
luigser
COMPONENTS
|
290
291
292
293
|
}
},
observers: [
|
e619a3b0
Luigi Serra
Controllet cross ...
|
294
|
'_progressChanged(secondaryProgress, value, min, max)'
|
73bcce88
luigser
COMPONENTS
|
295
296
|
],
|
e619a3b0
Luigi Serra
Controllet cross ...
|
297
298
299
300
301
|
hostAttributes: {
role: 'progressbar'
},
_toggleIndeterminate: function(indeterminate) {
|
73bcce88
luigser
COMPONENTS
|
302
303
|
// 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 ...
|
304
|
this.toggleClass('indeterminate', indeterminate, this.$.primaryProgress);
|
73bcce88
luigser
COMPONENTS
|
305
306
307
308
309
310
311
|
},
_transformProgress: function(progress, ratio) {
var transform = 'scaleX(' + (ratio / 100) + ')';
progress.style.transform = progress.style.webkitTransform = transform;
},
|
e619a3b0
Luigi Serra
Controllet cross ...
|
312
313
|
_mainRatioChanged: function(ratio) {
this._transformProgress(this.$.primaryProgress, ratio);
|
73bcce88
luigser
COMPONENTS
|
314
315
|
},
|
e619a3b0
Luigi Serra
Controllet cross ...
|
316
317
318
319
320
321
322
323
|
_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
|
324
|
this._transformProgress(this.$.secondaryProgress, secondaryRatio);
|
e619a3b0
Luigi Serra
Controllet cross ...
|
325
326
327
328
329
330
331
332
333
334
335
|
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
|
336
337
|
},
|
e619a3b0
Luigi Serra
Controllet cross ...
|
338
339
|
_hideSecondaryProgress: function(secondaryRatio) {
return secondaryRatio === 0;
|
73bcce88
luigser
COMPONENTS
|
340
|
}
|
73bcce88
luigser
COMPONENTS
|
341
|
});
|
73bcce88
luigser
COMPONENTS
|
342
|
</script>
|