Blame view

bower_components/paper-progress/paper-progress.html 10.5 KB
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>