diff options
Diffstat (limited to 'catapult/third_party/polymer/components/paper-spinner/paper-spinner-behavior.html')
-rw-r--r-- | catapult/third_party/polymer/components/paper-spinner/paper-spinner-behavior.html | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/catapult/third_party/polymer/components/paper-spinner/paper-spinner-behavior.html b/catapult/third_party/polymer/components/paper-spinner/paper-spinner-behavior.html new file mode 100644 index 00000000..ce3594b0 --- /dev/null +++ b/catapult/third_party/polymer/components/paper-spinner/paper-spinner-behavior.html @@ -0,0 +1,87 @@ +<!-- +@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> |