@justeattakeaway/pie-spinner 0.6.6 → 0.7.0

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.
@@ -77,7 +77,7 @@
77
77
  "kind": "field",
78
78
  "name": "aria",
79
79
  "type": {
80
- "text": "AriaProps | undefined"
80
+ "text": "SpinnerProps['aria']"
81
81
  },
82
82
  "privacy": "public",
83
83
  "attribute": "aria"
@@ -85,42 +85,35 @@
85
85
  {
86
86
  "kind": "field",
87
87
  "name": "size",
88
- "type": {
89
- "text": "SpinnerProps['size'] | undefined"
90
- },
91
88
  "privacy": "public",
92
89
  "attribute": "size"
93
90
  },
94
91
  {
95
92
  "kind": "field",
96
93
  "name": "variant",
97
- "type": {
98
- "text": "SpinnerProps['variant'] | undefined"
99
- },
100
94
  "privacy": "public",
101
95
  "attribute": "variant"
96
+ },
97
+ {
98
+ "kind": "method",
99
+ "name": "renderAriaLabel",
100
+ "privacy": "private"
102
101
  }
103
102
  ],
104
103
  "attributes": [
105
104
  {
106
105
  "name": "aria",
107
106
  "type": {
108
- "text": "AriaProps | undefined"
107
+ "text": "SpinnerProps['aria']"
109
108
  },
110
109
  "fieldName": "aria"
111
110
  },
112
111
  {
113
112
  "name": "size",
114
- "type": {
115
- "text": "SpinnerProps['size'] | undefined"
116
- },
117
113
  "fieldName": "size"
118
114
  },
119
115
  {
120
116
  "name": "variant",
121
- "type": {
122
- "text": "SpinnerProps['variant'] | undefined"
123
- },
124
117
  "fieldName": "variant"
125
118
  }
126
119
  ],
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ import type { CSSResult } from 'lit';
3
3
  import type { LitElement } from 'lit';
4
4
  import type { TemplateResult } from 'lit-html';
5
5
 
6
- export declare type AriaProps = {
6
+ declare type AriaProps = {
7
7
  label?: string;
8
8
  };
9
9
 
@@ -15,10 +15,11 @@ export declare const defaultProps: DefaultProps;
15
15
  * @tagname pie-spinner
16
16
  */
17
17
  export declare class PieSpinner extends LitElement implements SpinnerProps {
18
- aria?: AriaProps;
19
- size?: SpinnerProps['size'];
20
- variant?: SpinnerProps['variant'];
18
+ aria: SpinnerProps['aria'];
19
+ size: "xsmall" | "small" | "medium" | "large" | "xlarge";
20
+ variant: "brand" | "secondary" | "inverse";
21
21
  render(): TemplateResult<1>;
22
+ private renderAriaLabel;
22
23
  static styles: CSSResult;
23
24
  }
24
25
 
package/dist/index.js CHANGED
@@ -1,15 +1,16 @@
1
- import { unsafeCSS as h, LitElement as m, html as d, nothing as z } from "lit";
1
+ import { unsafeCSS as h, LitElement as m, html as d, nothing as f } from "lit";
2
2
  import { property as p } from "lit/decorators.js";
3
- import { validPropertyValues as b, defineCustomElement as f } from "@justeattakeaway/pie-webc-core";
4
- const u = `*,*:after,*:before{box-sizing:inherit}@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-h);--spinner-base-color-s: var(--dt-color-content-brand-s);--spinner-base-color-l: var(--dt-color-content-brand-l)}.c-spinner[variant=secondary]{--spinner-base-color-h: var(--dt-color-content-interactive-secondary-h);--spinner-base-color-s: var(--dt-color-content-interactive-secondary-s);--spinner-base-color-l: var(--dt-color-content-interactive-secondary-l)}.c-spinner[variant=inverse]{--spinner-base-color-h: var(--dt-color-content-inverse-h);--spinner-base-color-s: var(--dt-color-content-inverse-s);--spinner-base-color-l: var(--dt-color-content-inverse-l)}.c-spinner[size=xsmall]{--spinner-size: 16px}.c-spinner[size=small]{--spinner-size: 20px}.c-spinner[size=large]{--spinner-size: 32px}.c-spinner[size=xlarge]{--spinner-size: 48px}.c-spinner-label{position:absolute;display:block;height:1px;width:1px;overflow:hidden;padding:1px;white-space:nowrap}
5
- `, y = ["xsmall", "small", "medium", "large", "xlarge"], x = ["brand", "secondary", "inverse"], o = {
3
+ import { classMap as u } from "lit/directives/class-map.js";
4
+ import { validPropertyValues as b, defineCustomElement as z } from "@justeattakeaway/pie-webc-core";
5
+ const y = `*,*:after,*:before{box-sizing:inherit}@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-h);--spinner-base-color-s: var(--dt-color-content-brand-s);--spinner-base-color-l: var(--dt-color-content-brand-l)}.c-spinner.c-spinner--secondary{--spinner-base-color-h: var(--dt-color-content-interactive-secondary-h);--spinner-base-color-s: var(--dt-color-content-interactive-secondary-s);--spinner-base-color-l: var(--dt-color-content-interactive-secondary-l)}.c-spinner.c-spinner--inverse{--spinner-base-color-h: var(--dt-color-content-inverse-h);--spinner-base-color-s: var(--dt-color-content-inverse-s);--spinner-base-color-l: var(--dt-color-content-inverse-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;overflow:hidden;padding:1px;white-space:nowrap}
6
+ `, x = ["xsmall", "small", "medium", "large", "xlarge"], g = ["brand", "secondary", "inverse"], o = {
6
7
  size: "medium",
7
8
  variant: "brand"
8
9
  };
9
- var g = Object.defineProperty, w = Object.getOwnPropertyDescriptor, c = (a, n, s, e) => {
10
- for (var r = e > 1 ? void 0 : e ? w(n, s) : n, t = a.length - 1, l; t >= 0; t--)
11
- (l = a[t]) && (r = (e ? l(n, s, r) : l(r)) || r);
12
- return e && r && g(n, s, r), r;
10
+ var w = Object.defineProperty, P = Object.getOwnPropertyDescriptor, c = (a, r, s, n) => {
11
+ for (var e = n > 1 ? void 0 : n ? P(r, s) : r, t = a.length - 1, l; t >= 0; t--)
12
+ (l = a[t]) && (e = (n ? l(r, s, e) : l(e)) || e);
13
+ return n && e && w(r, s, e), e;
13
14
  };
14
15
  const v = "pie-spinner";
15
16
  class i extends m {
@@ -17,35 +18,44 @@ class i extends m {
17
18
  super(...arguments), this.size = o.size, this.variant = o.variant;
18
19
  }
19
20
  render() {
20
- const { variant: n, size: s, aria: e } = this;
21
+ const { variant: r, size: s } = this, n = {
22
+ "c-spinner": !0,
23
+ [`c-spinner--${s}`]: !0,
24
+ [`c-spinner--${r}`]: !0
25
+ };
21
26
  return d`
22
27
  <div
23
28
  data-test-id="pie-spinner"
24
- class="c-spinner"
29
+ class="${u(n)}"
25
30
  role="status"
26
- aria-live="polite"
27
- size="${s}"
28
- variant="${n}">
29
- ${e != null && e.label ? d`<span class="c-spinner-label">${e.label}</span>` : z}
30
- </div>`;
31
+ aria-live="polite">
32
+ ${this.renderAriaLabel()}
33
+ </div>`;
34
+ }
35
+ renderAriaLabel() {
36
+ var r;
37
+ return (r = this.aria) != null && r.label ? d`
38
+ <span class="c-spinner-label">
39
+ ${this.aria.label}
40
+ </span>` : f;
31
41
  }
32
42
  }
33
- i.styles = h(u);
43
+ i.styles = h(y);
34
44
  c([
35
45
  p({ type: Object })
36
46
  ], i.prototype, "aria", 2);
37
47
  c([
38
48
  p(),
39
- b(v, y, o.size)
49
+ b(v, x, o.size)
40
50
  ], i.prototype, "size", 2);
41
51
  c([
42
52
  p(),
43
- b(v, x, o.variant)
53
+ b(v, g, o.variant)
44
54
  ], i.prototype, "variant", 2);
45
- f(v, i);
55
+ z(v, i);
46
56
  export {
47
57
  i as PieSpinner,
48
58
  o as defaultProps,
49
- y as sizes,
50
- x as variants
59
+ x as sizes,
60
+ g as variants
51
61
  };
package/dist/react.d.ts CHANGED
@@ -4,7 +4,7 @@ import type { LitElement } from 'lit';
4
4
  import * as React_2 from 'react';
5
5
  import type { TemplateResult } from 'lit-html';
6
6
 
7
- export declare type AriaProps = {
7
+ declare type AriaProps = {
8
8
  label?: string;
9
9
  };
10
10
 
@@ -18,10 +18,11 @@ export declare const PieSpinner: React_2.ForwardRefExoticComponent<SpinnerProps
18
18
  * @tagname pie-spinner
19
19
  */
20
20
  declare class PieSpinner_2 extends LitElement implements SpinnerProps {
21
- aria?: AriaProps;
22
- size?: SpinnerProps['size'];
23
- variant?: SpinnerProps['variant'];
21
+ aria: SpinnerProps['aria'];
22
+ size: "xsmall" | "small" | "medium" | "large" | "xlarge";
23
+ variant: "brand" | "secondary" | "inverse";
24
24
  render(): TemplateResult<1>;
25
+ private renderAriaLabel;
25
26
  static styles: CSSResult;
26
27
  }
27
28
 
package/dist/react.js CHANGED
@@ -1,9 +1,10 @@
1
1
  import * as e from "react";
2
2
  import { createComponent as r } from "@lit/react";
3
3
  import { PieSpinner as i } from "./index.js";
4
- import { defaultProps as f, sizes as S, variants as l } from "./index.js";
4
+ import { defaultProps as S, sizes as l, variants as d } from "./index.js";
5
5
  import "lit";
6
6
  import "lit/decorators.js";
7
+ import "lit/directives/class-map.js";
7
8
  import "@justeattakeaway/pie-webc-core";
8
9
  const t = r({
9
10
  displayName: "PieSpinner",
@@ -11,10 +12,10 @@ const t = r({
11
12
  react: e,
12
13
  tagName: "pie-spinner",
13
14
  events: {}
14
- }), s = t;
15
+ }), c = t;
15
16
  export {
16
- s as PieSpinner,
17
- f as defaultProps,
18
- S as sizes,
19
- l as variants
17
+ c as PieSpinner,
18
+ S as defaultProps,
19
+ l as sizes,
20
+ d as variants
20
21
  };
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": "0.6.6",
4
+ "version": "0.7.0",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",
@@ -36,7 +36,8 @@
36
36
  "license": "Apache-2.0",
37
37
  "devDependencies": {
38
38
  "@custom-elements-manifest/analyzer": "0.9.0",
39
- "@justeattakeaway/pie-components-config": "0.16.0",
39
+ "@justeattakeaway/pie-components-config": "0.18.0",
40
+ "@justeattakeaway/pie-css": "0.12.1",
40
41
  "@justeattakeaway/pie-wrapper-react": "0.14.1",
41
42
  "cem-plugin-module-file-extensions": "0.0.5"
42
43
  },
package/src/defs-react.ts CHANGED
@@ -1,3 +1,3 @@
1
- import React from 'react';
1
+ import type React from 'react';
2
2
 
3
3
  export type ReactBaseType = React.HTMLAttributes<HTMLDivElement>
package/src/defs.ts CHANGED
@@ -3,7 +3,7 @@ import { type ComponentDefaultProps } from '@justeattakeaway/pie-webc-core';
3
3
  export const sizes = ['xsmall', 'small', 'medium', 'large', 'xlarge'] as const;
4
4
  export const variants = ['brand', 'secondary', 'inverse'] as const;
5
5
 
6
- export type AriaProps = {
6
+ type AriaProps = {
7
7
  label?: string;
8
8
  };
9
9
 
package/src/index.ts CHANGED
@@ -2,13 +2,13 @@ import {
2
2
  LitElement, html, nothing, unsafeCSS,
3
3
  } from 'lit';
4
4
  import { property } from 'lit/decorators.js';
5
+ import { classMap } from 'lit/directives/class-map.js';
5
6
  import { validPropertyValues, defineCustomElement } from '@justeattakeaway/pie-webc-core';
6
7
  import styles from './spinner.scss?inline';
7
8
  import {
8
- SpinnerProps,
9
+ type SpinnerProps,
9
10
  sizes,
10
11
  variants,
11
- type AriaProps,
12
12
  defaultProps,
13
13
  } from './defs';
14
14
 
@@ -22,29 +22,42 @@ const componentSelector = 'pie-spinner';
22
22
  */
23
23
  export class PieSpinner extends LitElement implements SpinnerProps {
24
24
  @property({ type: Object })
25
- public aria?: AriaProps;
25
+ public aria: SpinnerProps['aria'];
26
26
 
27
27
  @property()
28
28
  @validPropertyValues(componentSelector, sizes, defaultProps.size)
29
- public size?: SpinnerProps['size'] = defaultProps.size;
29
+ public size = defaultProps.size;
30
30
 
31
31
  @property()
32
32
  @validPropertyValues(componentSelector, variants, defaultProps.variant)
33
- public variant?: SpinnerProps['variant'] = defaultProps.variant;
33
+ public variant = defaultProps.variant;
34
34
 
35
35
  render () {
36
- const { variant, size, aria } = this;
36
+ const { variant, size } = this;
37
+
38
+ const classes = {
39
+ 'c-spinner': true,
40
+ [`c-spinner--${size}`]: true,
41
+ [`c-spinner--${variant}`]: true,
42
+ };
37
43
 
38
44
  return html`
39
45
  <div
40
46
  data-test-id="pie-spinner"
41
- class="c-spinner"
47
+ class="${classMap(classes)}"
42
48
  role="status"
43
- aria-live="polite"
44
- size="${size}"
45
- variant="${variant}">
46
- ${aria?.label ? html`<span class="c-spinner-label">${aria.label}</span>` : nothing}
47
- </div>`;
49
+ aria-live="polite">
50
+ ${this.renderAriaLabel()}
51
+ </div>`;
52
+ }
53
+
54
+ private renderAriaLabel () {
55
+ if (!this.aria?.label) return nothing;
56
+
57
+ return html`
58
+ <span class="c-spinner-label">
59
+ ${this.aria.label}
60
+ </span>`;
48
61
  }
49
62
 
50
63
  // Renders a `CSSResult` generated from SCSS by Vite
package/src/spinner.scss CHANGED
@@ -37,35 +37,32 @@
37
37
 
38
38
  @include spinner-base-colors('--dt-color-content-brand');
39
39
 
40
- &[variant='brand'] {
40
+ &.c-spinner--medium,
41
+ &.c-spinner--brand {
41
42
  /* Same as default styles */
42
43
  }
43
44
 
44
- &[variant='secondary'] {
45
+ &.c-spinner--secondary {
45
46
  @include spinner-base-colors('--dt-color-content-interactive-secondary');
46
47
  }
47
48
 
48
- &[variant='inverse'] {
49
+ &.c-spinner--inverse {
49
50
  @include spinner-base-colors('--dt-color-content-inverse');
50
51
  }
51
52
 
52
- &[size='xsmall'] {
53
+ &.c-spinner--xsmall {
53
54
  --spinner-size: 16px;
54
55
  }
55
56
 
56
- &[size='small'] {
57
+ &.c-spinner--small {
57
58
  --spinner-size: 20px;
58
59
  }
59
60
 
60
- &[size='medium'] {
61
- /* Same as default styles */
62
- }
63
-
64
- &[size='large'] {
61
+ &.c-spinner--large {
65
62
  --spinner-size: 32px;
66
63
  }
67
64
 
68
- &[size='xlarge'] {
65
+ &.c-spinner--xlarge {
69
66
  --spinner-size: 48px;
70
67
  }
71
68
  }