@justeattakeaway/pie-spinner 1.4.19 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -33,6 +33,7 @@ Ideally, you should install the component using the **`@justeattakeaway/pie-webc
33
33
  |----------|----------------------------------------------|--------------------------------------------------------------------------------------------------|-------------|
34
34
  | `size` | `"xsmall"`, `"small"`, `"medium"`, `"large"`, `"xlarge"` | Size of the spinner. | `medium` |
35
35
  | `variant`| `"brand"`, `"secondary"`, `"secondary-dark"`, `"inverse"`, `"inverse-light"` | Variant of the spinner. | `brand` |
36
+ | `isCentered` | `true`, `false` | When true, positions the spinner absolutely and centers it within its nearest relative ancestor. | `false` |
36
37
  | `aria` | — | An object representing the ARIA attributes such as `label`. | `undefined` |
37
38
 
38
39
  ### Slots
@@ -34,7 +34,7 @@
34
34
  "type": {
35
35
  "text": "DefaultProps"
36
36
  },
37
- "default": "{ size: 'medium', variant: 'brand', }"
37
+ "default": "{ size: 'medium', variant: 'brand', isCentered: false, }"
38
38
  }
39
39
  ],
40
40
  "exports": [
@@ -94,6 +94,13 @@
94
94
  "privacy": "public",
95
95
  "attribute": "variant"
96
96
  },
97
+ {
98
+ "kind": "field",
99
+ "name": "isCentered",
100
+ "privacy": "public",
101
+ "attribute": "isCentered",
102
+ "reflects": true
103
+ },
97
104
  {
98
105
  "kind": "method",
99
106
  "name": "renderAriaLabel",
@@ -115,6 +122,10 @@
115
122
  {
116
123
  "name": "variant",
117
124
  "fieldName": "variant"
125
+ },
126
+ {
127
+ "name": "isCentered",
128
+ "fieldName": "isCentered"
118
129
  }
119
130
  ],
120
131
  "superclass": {
package/dist/index.d.ts CHANGED
@@ -18,6 +18,7 @@ export declare class PieSpinner extends PieElement implements SpinnerProps {
18
18
  aria: SpinnerProps['aria'];
19
19
  size: "xsmall" | "small" | "medium" | "large" | "xlarge";
20
20
  variant: "brand" | "secondary" | "secondary-dark" | "inverse" | "inverse-light";
21
+ isCentered: boolean;
21
22
  render(): TemplateResult<1>;
22
23
  private renderAriaLabel;
23
24
  static styles: CSSResult;
@@ -38,6 +39,10 @@ export declare interface SpinnerProps {
38
39
  * What style variant the spinner should be such as brand, secondary or inverse.
39
40
  */
40
41
  variant?: typeof variants[number];
42
+ /**
43
+ * When true, the spinner positions itself absolutely and centers itself within its nearest relative ancestor.
44
+ */
45
+ isCentered?: boolean;
41
46
  }
42
47
 
43
48
  export declare const variants: readonly ["brand", "secondary", "secondary-dark", "inverse", "inverse-light"];
package/dist/index.js CHANGED
@@ -1,33 +1,34 @@
1
1
  import { LitElement as m, unsafeCSS as u, html as b, nothing as g } from "lit";
2
- import { property as v } from "lit/decorators.js";
2
+ import { property as c } from "lit/decorators.js";
3
3
  import { classMap as y } from "lit/directives/class-map.js";
4
4
  import { validPropertyValues as h, safeCustomElement as z } from "@justeattakeaway/pie-webc-core";
5
- const a = class a extends m {
5
+ const l = class l extends m {
6
6
  willUpdate() {
7
- this.getAttribute("v") || this.setAttribute("v", a.v);
7
+ this.getAttribute("v") || this.setAttribute("v", l.v);
8
8
  }
9
9
  };
10
- a.v = "1.4.19";
11
- let d = a;
12
- const x = "*,*:after,*:before{box-sizing:inherit}:host{display:block}@keyframes rotate360{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.c-spinner{--spinner-size: 24px;--spinner-left-color: hsl(var(--spinner-base-color-h), var(--spinner-base-color-s), var(--spinner-base-color-l), 1);--spinner-right-color: hsl(var(--spinner-base-color-h), var(--spinner-base-color-s), var(--spinner-base-color-l), .35);block-size:var(--spinner-size);inline-size:var(--spinner-size);border-radius:var(--dt-radius-rounded-e);border-width:calc(var(--spinner-size) / 8);border-style:solid;border-color:var(--spinner-left-color) var(--spinner-right-color) var(--spinner-right-color) var(--spinner-left-color);will-change:transform;animation:rotate360 1.15s linear infinite;--spinner-base-color-h: var(--dt-color-content-brand-solid-h);--spinner-base-color-s: var(--dt-color-content-brand-solid-s);--spinner-base-color-l: var(--dt-color-content-brand-solid-l)}.c-spinner.c-spinner--secondary{--spinner-base-color-h: var(--dt-color-content-interactive-secondary-solid-h);--spinner-base-color-s: var(--dt-color-content-interactive-secondary-solid-s);--spinner-base-color-l: var(--dt-color-content-interactive-secondary-solid-l)}.c-spinner.c-spinner--secondary-dark{--spinner-base-color-h: var(--dt-color-content-interactive-dark-solid-h);--spinner-base-color-s: var(--dt-color-content-interactive-dark-solid-s);--spinner-base-color-l: var(--dt-color-content-interactive-dark-solid-l)}.c-spinner.c-spinner--inverse{--spinner-base-color-h: var(--dt-color-content-inverse-solid-h);--spinner-base-color-s: var(--dt-color-content-inverse-solid-s);--spinner-base-color-l: var(--dt-color-content-inverse-solid-l)}.c-spinner.c-spinner--inverse-light{--spinner-base-color-h: var(--dt-color-content-light-solid-h);--spinner-base-color-s: var(--dt-color-content-light-solid-s);--spinner-base-color-l: var(--dt-color-content-light-solid-l)}.c-spinner.c-spinner--xsmall{--spinner-size: 16px}.c-spinner.c-spinner--small{--spinner-size: 20px}.c-spinner.c-spinner--large{--spinner-size: 32px}.c-spinner.c-spinner--xlarge{--spinner-size: 48px}.c-spinner-label{position:absolute;display:block;height:1px;width:1px;border:0;padding:0;margin:-1px;overflow:hidden;white-space:nowrap;clip:rect(0,0,0,0);clip-path:inset(50%)}.c-spinner-label *{overflow:hidden}", w = ["xsmall", "small", "medium", "large", "xlarge"], S = ["brand", "secondary", "secondary-dark", "inverse", "inverse-light"], t = {
10
+ l.v = "1.5.1";
11
+ let v = l;
12
+ const x = "*,*:after,*:before{box-sizing:inherit}:host{display:block}:host([isCentered]){position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}@keyframes rotate360{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.c-spinner{--spinner-size: 24px;--spinner-left-color: hsl(var(--spinner-base-color-h), var(--spinner-base-color-s), var(--spinner-base-color-l), 1);--spinner-right-color: hsl(var(--spinner-base-color-h), var(--spinner-base-color-s), var(--spinner-base-color-l), .35);block-size:var(--spinner-size);inline-size:var(--spinner-size);border-radius:var(--dt-radius-rounded-e);border-width:calc(var(--spinner-size) / 8);border-style:solid;border-color:var(--spinner-left-color) var(--spinner-right-color) var(--spinner-right-color) var(--spinner-left-color);will-change:transform;animation:rotate360 1.15s linear infinite;--spinner-base-color-h: var(--dt-color-content-brand-solid-h);--spinner-base-color-s: var(--dt-color-content-brand-solid-s);--spinner-base-color-l: var(--dt-color-content-brand-solid-l)}.c-spinner.c-spinner--secondary{--spinner-base-color-h: var(--dt-color-content-interactive-secondary-solid-h);--spinner-base-color-s: var(--dt-color-content-interactive-secondary-solid-s);--spinner-base-color-l: var(--dt-color-content-interactive-secondary-solid-l)}.c-spinner.c-spinner--secondary-dark{--spinner-base-color-h: var(--dt-color-content-interactive-dark-solid-h);--spinner-base-color-s: var(--dt-color-content-interactive-dark-solid-s);--spinner-base-color-l: var(--dt-color-content-interactive-dark-solid-l)}.c-spinner.c-spinner--inverse{--spinner-base-color-h: var(--dt-color-content-inverse-solid-h);--spinner-base-color-s: var(--dt-color-content-inverse-solid-s);--spinner-base-color-l: var(--dt-color-content-inverse-solid-l)}.c-spinner.c-spinner--inverse-light{--spinner-base-color-h: var(--dt-color-content-light-solid-h);--spinner-base-color-s: var(--dt-color-content-light-solid-s);--spinner-base-color-l: var(--dt-color-content-light-solid-l)}.c-spinner.c-spinner--xsmall{--spinner-size: 16px}.c-spinner.c-spinner--small{--spinner-size: 20px}.c-spinner.c-spinner--large{--spinner-size: 32px}.c-spinner.c-spinner--xlarge{--spinner-size: 48px}.c-spinner-label{position:absolute;display:block;height:1px;width:1px;border:0;padding:0;margin:-1px;overflow:hidden;white-space:nowrap;clip:rect(0,0,0,0);clip-path:inset(50%)}.c-spinner-label *{overflow:hidden}", w = ["xsmall", "small", "medium", "large", "xlarge"], C = ["brand", "secondary", "secondary-dark", "inverse", "inverse-light"], t = {
13
13
  size: "medium",
14
- variant: "brand"
14
+ variant: "brand",
15
+ isCentered: !1
15
16
  };
16
- var O = Object.defineProperty, P = Object.getOwnPropertyDescriptor, l = (r, n, i, o) => {
17
- for (var e = o > 1 ? void 0 : o ? P(n, i) : n, c = r.length - 1, p; c >= 0; c--)
18
- (p = r[c]) && (e = (o ? p(n, i, e) : p(e)) || e);
19
- return o && e && O(n, i, e), e;
17
+ var S = Object.defineProperty, O = Object.getOwnPropertyDescriptor, o = (e, s, i, a) => {
18
+ for (var r = a > 1 ? void 0 : a ? O(s, i) : s, p = e.length - 1, d; p >= 0; p--)
19
+ (d = e[p]) && (r = (a ? d(s, i, r) : d(r)) || r);
20
+ return a && r && S(s, i, r), r;
20
21
  };
21
22
  const f = "pie-spinner";
22
- let s = class extends d {
23
+ let n = class extends v {
23
24
  constructor() {
24
- super(...arguments), this.size = t.size, this.variant = t.variant;
25
+ super(...arguments), this.size = t.size, this.variant = t.variant, this.isCentered = t.isCentered;
25
26
  }
26
27
  render() {
27
- const { variant: r, size: n } = this, i = {
28
+ const { variant: e, size: s } = this, i = {
28
29
  "c-spinner": !0,
29
- [`c-spinner--${n}`]: !0,
30
- [`c-spinner--${r}`]: !0
30
+ [`c-spinner--${s}`]: !0,
31
+ [`c-spinner--${e}`]: !0
31
32
  };
32
33
  return b`
33
34
  <div
@@ -39,31 +40,34 @@ let s = class extends d {
39
40
  </div>`;
40
41
  }
41
42
  renderAriaLabel() {
42
- var r;
43
- return (r = this.aria) != null && r.label ? b`
43
+ var e;
44
+ return (e = this.aria) != null && e.label ? b`
44
45
  <span class="c-spinner-label">
45
46
  ${this.aria.label}
46
47
  </span>` : g;
47
48
  }
48
49
  };
49
- s.styles = u(x);
50
- l([
51
- v({ type: Object })
52
- ], s.prototype, "aria", 2);
53
- l([
54
- v({ type: String }),
50
+ n.styles = u(x);
51
+ o([
52
+ c({ type: Object })
53
+ ], n.prototype, "aria", 2);
54
+ o([
55
+ c({ type: String }),
55
56
  h(f, w, t.size)
56
- ], s.prototype, "size", 2);
57
- l([
58
- v({ type: String }),
59
- h(f, S, t.variant)
60
- ], s.prototype, "variant", 2);
61
- s = l([
57
+ ], n.prototype, "size", 2);
58
+ o([
59
+ c({ type: String }),
60
+ h(f, C, t.variant)
61
+ ], n.prototype, "variant", 2);
62
+ o([
63
+ c({ type: Boolean, reflect: !0 })
64
+ ], n.prototype, "isCentered", 2);
65
+ n = o([
62
66
  z("pie-spinner")
63
- ], s);
67
+ ], n);
64
68
  export {
65
- s as PieSpinner,
69
+ n as PieSpinner,
66
70
  t as defaultProps,
67
71
  w as sizes,
68
- S as variants
72
+ C as variants
69
73
  };
package/dist/react.d.ts CHANGED
@@ -21,6 +21,7 @@ declare class PieSpinner_2 extends PieElement implements SpinnerProps {
21
21
  aria: SpinnerProps['aria'];
22
22
  size: "xsmall" | "small" | "medium" | "large" | "xlarge";
23
23
  variant: "brand" | "secondary" | "secondary-dark" | "inverse" | "inverse-light";
24
+ isCentered: boolean;
24
25
  render(): TemplateResult<1>;
25
26
  private renderAriaLabel;
26
27
  static styles: CSSResult;
@@ -43,6 +44,10 @@ export declare interface SpinnerProps {
43
44
  * What style variant the spinner should be such as brand, secondary or inverse.
44
45
  */
45
46
  variant?: typeof variants[number];
47
+ /**
48
+ * When true, the spinner positions itself absolutely and centers itself within its nearest relative ancestor.
49
+ */
50
+ isCentered?: boolean;
46
51
  }
47
52
 
48
53
  export declare const variants: readonly ["brand", "secondary", "secondary-dark", "inverse", "inverse-light"];
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@justeattakeaway/pie-spinner",
3
3
  "description": "PIE Design System Spinner built using Web Components",
4
- "version": "1.4.19",
4
+ "version": "1.5.1",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/justeattakeaway/pie",
@@ -44,12 +44,12 @@
44
44
  "license": "Apache-2.0",
45
45
  "devDependencies": {
46
46
  "@justeattakeaway/pie-components-config": "0.21.3",
47
- "@justeattakeaway/pie-css": "1.2.0",
47
+ "@justeattakeaway/pie-css": "1.3.0",
48
48
  "@justeattakeaway/pie-monorepo-utils": "0.9.6",
49
49
  "@justeattakeaway/pie-wrapper-react": "0.14.5"
50
50
  },
51
51
  "dependencies": {
52
- "@justeattakeaway/pie-webc-core": "15.1.0"
52
+ "@justeattakeaway/pie-webc-core": "16.0.0"
53
53
  },
54
54
  "customElements": "custom-elements.json",
55
55
  "sideEffects": [
package/src/defs.ts CHANGED
@@ -20,6 +20,10 @@ export interface SpinnerProps {
20
20
  * What style variant the spinner should be such as brand, secondary or inverse.
21
21
  */
22
22
  variant?: typeof variants[number];
23
+ /**
24
+ * When true, the spinner positions itself absolutely and centers itself within its nearest relative ancestor.
25
+ */
26
+ isCentered?: boolean;
23
27
  }
24
28
 
25
29
  export type DefaultProps = ComponentDefaultProps<SpinnerProps, keyof Omit<SpinnerProps, 'aria'>>;
@@ -27,4 +31,5 @@ export type DefaultProps = ComponentDefaultProps<SpinnerProps, keyof Omit<Spinne
27
31
  export const defaultProps: DefaultProps = {
28
32
  size: 'medium',
29
33
  variant: 'brand',
34
+ isCentered: false,
30
35
  };
package/src/index.ts CHANGED
@@ -34,6 +34,9 @@ export class PieSpinner extends PieElement implements SpinnerProps {
34
34
  @validPropertyValues(componentSelector, variants, defaultProps.variant)
35
35
  public variant = defaultProps.variant;
36
36
 
37
+ @property({ type: Boolean, reflect: true })
38
+ public isCentered = defaultProps.isCentered;
39
+
37
40
  render () {
38
41
  const { variant, size } = this;
39
42
 
package/src/spinner.scss CHANGED
@@ -4,6 +4,14 @@
4
4
  display: block;
5
5
  }
6
6
 
7
+ :host([isCentered]) {
8
+ position: absolute;
9
+ inset: 0;
10
+ display: flex;
11
+ align-items: center;
12
+ justify-content: center;
13
+ }
14
+
7
15
  /**
8
16
  * Shorthand mixin for updating the HSL custom properties for the loading spinner.
9
17
  * Takes in the name of the color to be split into its HSL components.