| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 | 
							- /*!
 
-  * All material copyright ESRI, All Rights Reserved, unless otherwise specified.
 
-  * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.
 
-  * v1.0.0-beta.82
 
-  */
 
- import { Component, Element, h, Host, Prop } from "@stencil/core";
 
- import { guid } from "../../utils/guid";
 
- export class Loader {
 
-   constructor() {
 
-     //--------------------------------------------------------------------------
 
-     //
 
-     //  Properties
 
-     //
 
-     //--------------------------------------------------------------------------
 
-     /** Show the loader */
 
-     this.active = false;
 
-     /** Inline loaders are smaller and will appear to the left of the text */
 
-     this.inline = false;
 
-     /** Speficy the scale of the loader. Defaults to "m" */
 
-     this.scale = "m";
 
-     /** Percent complete of 100, only valid for determinate indicators */
 
-     this.value = 0;
 
-     /** Text which should appear under the loading indicator (optional) */
 
-     this.text = "";
 
-     /** Turn off spacing around the loader */
 
-     this.noPadding = false;
 
-   }
 
-   //--------------------------------------------------------------------------
 
-   //
 
-   //  Lifecycle
 
-   //
 
-   //--------------------------------------------------------------------------
 
-   render() {
 
-     const { el, inline, label, scale, text, type, value } = this;
 
-     const id = el.id || guid();
 
-     const radiusRatio = 0.45;
 
-     const size = inline ? this.getInlineSize(scale) : this.getSize(scale);
 
-     const radius = size * radiusRatio;
 
-     const viewbox = `0 0 ${size} ${size}`;
 
-     const isDeterminate = type === "determinate";
 
-     const circumference = 2 * radius * Math.PI;
 
-     const progress = (value / 100) * circumference;
 
-     const remaining = circumference - progress;
 
-     const valueNow = Math.floor(value);
 
-     const hostAttributes = {
 
-       "aria-valuenow": valueNow,
 
-       "aria-valuemin": 0,
 
-       "aria-valuemax": 100,
 
-       complete: valueNow === 100
 
-     };
 
-     const svgAttributes = { r: radius, cx: size / 2, cy: size / 2 };
 
-     const determinateStyle = { "stroke-dasharray": `${progress} ${remaining}` };
 
-     return (h(Host, Object.assign({ "aria-label": label, id: id, role: "progressbar" }, (isDeterminate ? hostAttributes : {})),
 
-       h("div", { class: "loader__svgs" },
 
-         h("svg", { class: "loader__svg loader__svg--1", viewBox: viewbox },
 
-           h("circle", Object.assign({}, svgAttributes))),
 
-         h("svg", { class: "loader__svg loader__svg--2", viewBox: viewbox },
 
-           h("circle", Object.assign({}, svgAttributes))),
 
-         h("svg", Object.assign({ class: "loader__svg loader__svg--3", viewBox: viewbox }, (isDeterminate ? { style: determinateStyle } : {})),
 
-           h("circle", Object.assign({}, svgAttributes)))),
 
-       text && h("div", { class: "loader__text" }, text),
 
-       isDeterminate && h("div", { class: "loader__percentage" }, value)));
 
-   }
 
-   //--------------------------------------------------------------------------
 
-   //
 
-   //  Private Methods
 
-   //
 
-   //--------------------------------------------------------------------------
 
-   /**
 
-    * Return the proper sizes based on the scale property
 
-    */
 
-   getSize(scale) {
 
-     return {
 
-       s: 32,
 
-       m: 56,
 
-       l: 80
 
-     }[scale];
 
-   }
 
-   getInlineSize(scale) {
 
-     return {
 
-       s: 12,
 
-       m: 16,
 
-       l: 20
 
-     }[scale];
 
-   }
 
-   static get is() { return "calcite-loader"; }
 
-   static get encapsulation() { return "shadow"; }
 
-   static get originalStyleUrls() { return {
 
-     "$": ["loader.scss"]
 
-   }; }
 
-   static get styleUrls() { return {
 
-     "$": ["loader.css"]
 
-   }; }
 
-   static get properties() { return {
 
-     "active": {
 
-       "type": "boolean",
 
-       "mutable": false,
 
-       "complexType": {
 
-         "original": "boolean",
 
-         "resolved": "boolean",
 
-         "references": {}
 
-       },
 
-       "required": false,
 
-       "optional": false,
 
-       "docs": {
 
-         "tags": [],
 
-         "text": "Show the loader"
 
-       },
 
-       "attribute": "active",
 
-       "reflect": true,
 
-       "defaultValue": "false"
 
-     },
 
-     "inline": {
 
-       "type": "boolean",
 
-       "mutable": false,
 
-       "complexType": {
 
-         "original": "boolean",
 
-         "resolved": "boolean",
 
-         "references": {}
 
-       },
 
-       "required": false,
 
-       "optional": false,
 
-       "docs": {
 
-         "tags": [],
 
-         "text": "Inline loaders are smaller and will appear to the left of the text"
 
-       },
 
-       "attribute": "inline",
 
-       "reflect": true,
 
-       "defaultValue": "false"
 
-     },
 
-     "label": {
 
-       "type": "string",
 
-       "mutable": false,
 
-       "complexType": {
 
-         "original": "string",
 
-         "resolved": "string",
 
-         "references": {}
 
-       },
 
-       "required": true,
 
-       "optional": false,
 
-       "docs": {
 
-         "tags": [],
 
-         "text": "Accessible name for the component"
 
-       },
 
-       "attribute": "label",
 
-       "reflect": false
 
-     },
 
-     "scale": {
 
-       "type": "string",
 
-       "mutable": false,
 
-       "complexType": {
 
-         "original": "Scale",
 
-         "resolved": "\"l\" | \"m\" | \"s\"",
 
-         "references": {
 
-           "Scale": {
 
-             "location": "import",
 
-             "path": "../interfaces"
 
-           }
 
-         }
 
-       },
 
-       "required": false,
 
-       "optional": false,
 
-       "docs": {
 
-         "tags": [],
 
-         "text": "Speficy the scale of the loader. Defaults to \"m\""
 
-       },
 
-       "attribute": "scale",
 
-       "reflect": true,
 
-       "defaultValue": "\"m\""
 
-     },
 
-     "type": {
 
-       "type": "string",
 
-       "mutable": false,
 
-       "complexType": {
 
-         "original": "\"indeterminate\" | \"determinate\"",
 
-         "resolved": "\"determinate\" | \"indeterminate\"",
 
-         "references": {}
 
-       },
 
-       "required": false,
 
-       "optional": false,
 
-       "docs": {
 
-         "tags": [],
 
-         "text": "Use indeterminate if finding actual progress value is impossible"
 
-       },
 
-       "attribute": "type",
 
-       "reflect": true
 
-     },
 
-     "value": {
 
-       "type": "number",
 
-       "mutable": false,
 
-       "complexType": {
 
-         "original": "number",
 
-         "resolved": "number",
 
-         "references": {}
 
-       },
 
-       "required": false,
 
-       "optional": false,
 
-       "docs": {
 
-         "tags": [],
 
-         "text": "Percent complete of 100, only valid for determinate indicators"
 
-       },
 
-       "attribute": "value",
 
-       "reflect": false,
 
-       "defaultValue": "0"
 
-     },
 
-     "text": {
 
-       "type": "string",
 
-       "mutable": false,
 
-       "complexType": {
 
-         "original": "string",
 
-         "resolved": "string",
 
-         "references": {}
 
-       },
 
-       "required": false,
 
-       "optional": false,
 
-       "docs": {
 
-         "tags": [],
 
-         "text": "Text which should appear under the loading indicator (optional)"
 
-       },
 
-       "attribute": "text",
 
-       "reflect": false,
 
-       "defaultValue": "\"\""
 
-     },
 
-     "noPadding": {
 
-       "type": "boolean",
 
-       "mutable": false,
 
-       "complexType": {
 
-         "original": "boolean",
 
-         "resolved": "boolean",
 
-         "references": {}
 
-       },
 
-       "required": false,
 
-       "optional": false,
 
-       "docs": {
 
-         "tags": [],
 
-         "text": "Turn off spacing around the loader"
 
-       },
 
-       "attribute": "no-padding",
 
-       "reflect": false,
 
-       "defaultValue": "false"
 
-     }
 
-   }; }
 
-   static get elementRef() { return "el"; }
 
- }
 
 
  |