Fix OOP <webview> resize and autosize.
[chromium-blink-merge.git] / third_party / polymer / v1_0 / components-chromium / paper-spinner / paper-spinner-extracted.js
blob27043f805677f1ccc7696d409342546c89271b04
1 Polymer({
3       is: 'paper-spinner',
5       listeners: {
6         'animationend': 'reset',
7         'webkitAnimationEnd': 'reset'
8       },
10       properties: {
12         /**
13          * Displays the spinner.
14          *
15          * @attribute active
16          * @type boolean
17          * @default false
18          */
19         active: {
20           type: Boolean,
21           value: false,
22           reflectToAttribute: true,
23           observer: '_activeChanged'
24         },
26         /**
27          * Alternative text content for accessibility support.
28          * If alt is present, it will add an aria-label whose content matches alt when active.
29          * If alt is not present, it will default to 'loading' as the alt value.
30          *
31          * @attribute alt
32          * @type string
33          * @default 'loading'
34          */
35         alt: {
36           type: String,
37           value: 'loading',
38           observer: '_altChanged'
39         },
41         /**
42          * True when the spinner is going from active to inactive. This is represented by a fade
43          * to 0% opacity to the user.
44          */
45         _coolingDown: {
46           type: Boolean,
47           value: false
48         },
50         _spinnerContainerClassName: {
51           type: String,
52           computed: '_computeSpinnerContainerClassName(active, _coolingDown)'
53         }
55       },
57       _computeSpinnerContainerClassName: function(active, coolingDown) {
58         return [
59           active || coolingDown ? 'active' : '',
60           coolingDown ? 'cooldown' : ''
61         ].join(' ');
62       },
64       _activeChanged: function(active, old) {
65         this._setAriaHidden(!active);
66         if (!active && old) {
67           this._coolingDown = true;
68         }
69       },
71       _altChanged: function(alt) {
72         // user-provided `aria-label` takes precedence over prototype default
73         if (alt === this.getPropertyInfo('alt').value) {
74           this.alt = this.getAttribute('aria-label') || alt;
75         } else {
76           this._setAriaHidden(alt==='');
77           this.setAttribute('aria-label', alt);
78         }
79       },
81       _setAriaHidden: function(hidden) {
82         var attr = 'aria-hidden';
83         if (hidden) {
84           this.setAttribute(attr, 'true');
85         } else {
86           this.removeAttribute(attr);
87         }
88       },
90       reset: function() {
91         this.active = false;
92         this._coolingDown = false;
93       }
95     });