| <!-- |
| @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"> |
| |
| <script> |
| |
| /** @polymerBehavior */ |
| Polymer.PaperSpinnerBehavior = { |
| |
| listeners: { |
| 'animationend': '__reset', |
| 'webkitAnimationEnd': '__reset' |
| }, |
| |
| properties: { |
| /** |
| * Displays the spinner. |
| */ |
| active: { |
| type: Boolean, |
| value: false, |
| reflectToAttribute: true, |
| observer: '__activeChanged' |
| }, |
| |
| /** |
| * Alternative text content for accessibility support. |
| * If alt is present, it will add an aria-label whose content matches alt when active. |
| * If alt is not present, it will default to 'loading' as the alt value. |
| */ |
| alt: { |
| type: String, |
| value: 'loading', |
| observer: '__altChanged' |
| }, |
| |
| __coolingDown: { |
| type: Boolean, |
| value: false |
| } |
| }, |
| |
| __computeContainerClasses: function(active, coolingDown) { |
| return [ |
| active || coolingDown ? 'active' : '', |
| coolingDown ? 'cooldown' : '' |
| ].join(' '); |
| }, |
| |
| __activeChanged: function(active, old) { |
| this.__setAriaHidden(!active); |
| this.__coolingDown = !active && old; |
| }, |
| |
| __altChanged: function(alt) { |
| // user-provided `aria-label` takes precedence over prototype default |
| if (alt === this.getPropertyInfo('alt').value) { |
| this.alt = this.getAttribute('aria-label') || alt; |
| } else { |
| this.__setAriaHidden(alt===''); |
| this.setAttribute('aria-label', alt); |
| } |
| }, |
| |
| __setAriaHidden: function(hidden) { |
| var attr = 'aria-hidden'; |
| if (hidden) { |
| this.setAttribute(attr, 'true'); |
| } else { |
| this.removeAttribute(attr); |
| } |
| }, |
| |
| __reset: function() { |
| this.active = false; |
| this.__coolingDown = false; |
| } |
| }; |
| </script> |