| Index: third_party/polymer/v0_8/components/paper-spinner/paper-spinner.html
|
| diff --git a/third_party/polymer/v0_8/components/paper-spinner/paper-spinner.html b/third_party/polymer/v0_8/components/paper-spinner/paper-spinner.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b5503cc6ac6aa05452ddd55ff8fb15baf4beb033
|
| --- /dev/null
|
| +++ b/third_party/polymer/v0_8/components/paper-spinner/paper-spinner.html
|
| @@ -0,0 +1,222 @@
|
| +<!--
|
| +@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">
|
| +<link rel="import" href="../paper-styles/color.html">
|
| +<link rel="import" href="../iron-flex-layout/iron-flex-layout.html">
|
| +
|
| +<!--
|
| +Element providing material design circular spinner.
|
| +
|
| + <paper-spinner active></paper-spinner>
|
| +
|
| +The default spinner cycles between four layers of colors; by default they are
|
| +blue, red, yellow and green. It can be customized so that it uses one color only
|
| +by setting all the layer colors to the same value.
|
| +
|
| +### Accessibility
|
| +
|
| +Alt attribute should be set to provide adequate context for accessibility. If not provided,
|
| +it defaults to 'loading'.
|
| +Empty alt can be provided to mark the element as decorative if alternative content is provided
|
| +in another form (e.g. a text block following the spinner).
|
| +
|
| + <paper-spinner alt="Loading contacts list" active></paper-spinner>
|
| +
|
| +### Styling
|
| +
|
| +The following custom properties and mixins are available for styling:
|
| +
|
| +Custom property | Description | Default
|
| +----------------|-------------|----------
|
| +`--paper-spinner-layer-1-color` | Color of the first spinner rotation | `--google-blue-500`
|
| +`--paper-spinner-layer-2-color` | Color of the second spinner rotation | `--google-red-500`
|
| +`--paper-spinner-layer-3-color` | Color of the third spinner rotation | `--google-yellow-500`
|
| +`--paper-spinner-layer-4-color` | Color of the fourth spinner rotation | `--google-green-500`
|
| +
|
| +@group Paper Elements
|
| +@element paper-spinner
|
| +@hero hero.svg
|
| +@demo demo/index.html
|
| +-->
|
| +
|
| +<dom-module id="paper-spinner">
|
| +
|
| + <link rel="import" type="css" href="paper-spinner.css">
|
| +
|
| + <template>
|
| +
|
| + <div id="spinnerContainer" class-name="[[_spinnerContainerClassName]]">
|
| + <div class="spinner-layer layer-1">
|
| + <div class="circle-clipper left">
|
| + <div class="circle"></div>
|
| + </div><div class="gap-patch">
|
| + <div class="circle"></div>
|
| + </div><div class="circle-clipper right">
|
| + <div class="circle"></div>
|
| + </div>
|
| + </div>
|
| +
|
| + <div class="spinner-layer layer-2">
|
| + <div class="circle-clipper left">
|
| + <div class="circle"></div>
|
| + </div><div class="gap-patch">
|
| + <div class="circle"></div>
|
| + </div><div class="circle-clipper right">
|
| + <div class="circle"></div>
|
| + </div>
|
| + </div>
|
| +
|
| + <div class="spinner-layer layer-3">
|
| + <div class="circle-clipper left">
|
| + <div class="circle"></div>
|
| + </div><div class="gap-patch">
|
| + <div class="circle"></div>
|
| + </div><div class="circle-clipper right">
|
| + <div class="circle"></div>
|
| + </div>
|
| + </div>
|
| +
|
| + <div class="spinner-layer layer-4">
|
| + <div class="circle-clipper left">
|
| + <div class="circle"></div>
|
| + </div><div class="gap-patch">
|
| + <div class="circle"></div>
|
| + </div><div class="circle-clipper right">
|
| + <div class="circle"></div>
|
| + </div>
|
| + </div>
|
| + </div>
|
| +
|
| + </template>
|
| +
|
| + <script>
|
| +
|
| + (function() {
|
| +
|
| + 'use strict';
|
| +
|
| + function classNames(obj) {
|
| + var classNames = [];
|
| + for (var key in obj) {
|
| + if (obj.hasOwnProperty(key) && obj[key]) {
|
| + classNames.push(key);
|
| + }
|
| + }
|
| +
|
| + return classNames.join(' ');
|
| + }
|
| +
|
| + Polymer({
|
| +
|
| + is: 'paper-spinner',
|
| +
|
| + listeners: {
|
| + 'animationend': 'reset',
|
| + 'webkitAnimationEnd': 'reset'
|
| + },
|
| +
|
| + properties: {
|
| +
|
| + /**
|
| + * Displays the spinner.
|
| + *
|
| + * @attribute active
|
| + * @type boolean
|
| + * @default false
|
| + */
|
| + active: {
|
| + observer: '_activeChanged',
|
| + type: Boolean,
|
| + value: false
|
| + },
|
| +
|
| + /**
|
| + * 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.
|
| + *
|
| + * @attribute alt
|
| + * @type string
|
| + * @default 'loading'
|
| + */
|
| + alt: {
|
| + observer: '_altChanged',
|
| + type: String,
|
| + value: 'loading'
|
| + },
|
| +
|
| + /**
|
| + * True when the spinner is going from active to inactive. This is represented by a fade
|
| + * to 0% opacity to the user.
|
| + */
|
| + _coolingDown: {
|
| + type: Boolean,
|
| + value: false
|
| + },
|
| +
|
| + _spinnerContainerClassName: {
|
| + type: String,
|
| + computed: '_computeSpinnerContainerClassName(active, _coolingDown)'
|
| + }
|
| +
|
| + },
|
| +
|
| + _computeSpinnerContainerClassName: function(active, _coolingDown) {
|
| + return classNames({
|
| + active: active || _coolingDown,
|
| + cooldown: _coolingDown
|
| + });
|
| + },
|
| +
|
| + ready: function() {
|
| + // Allow user-provided `aria-label` take preference to any other text alternative.
|
| + if (this.hasAttribute('aria-label')) {
|
| + this.alt = this.getAttribute('aria-label');
|
| + } else {
|
| + this.setAttribute('aria-label', this.alt);
|
| + }
|
| +
|
| + if (!this.active) {
|
| + this.setAttribute('aria-hidden', 'true');
|
| + }
|
| + },
|
| +
|
| + _activeChanged: function() {
|
| + if (this.active) {
|
| + this.removeAttribute('aria-hidden');
|
| + } else {
|
| + this._coolingDown = true;
|
| + this.setAttribute('aria-hidden', 'true');
|
| + }
|
| + },
|
| +
|
| + _altChanged: function() {
|
| + if (this.alt === '') {
|
| + this.setAttribute('aria-hidden', 'true');
|
| + } else {
|
| + this.removeAttribute('aria-hidden');
|
| + }
|
| +
|
| + this.setAttribute('aria-label', this.alt);
|
| + },
|
| +
|
| + reset: function() {
|
| + this.active = false;
|
| + this._coolingDown = false;
|
| + }
|
| +
|
| + });
|
| +
|
| + }());
|
| +
|
| + </script>
|
| +
|
| +</dom-module>
|
|
|