@justeattakeaway/pie-icon-button 0.23.0 → 0.24.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.
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { unsafeCSS as h, LitElement as m, html as d } from "lit";
2
- import { property as e } from "lit/decorators.js";
2
+ import { property as n } from "lit/decorators.js";
3
3
  import { validPropertyValues as b, defineCustomElement as f } from "@justeattakeaway/pie-webc-core";
4
4
  import "@justeattakeaway/pie-spinner";
5
5
  const g = `:host{--btn-dimension: 48px;--btn-icon-size: 24px}.o-iconBtn{--btn-border-radius: var(--dt-radius-rounded-e);--btn-bg-color: var(--dt-color-interactive-brand);--btn-icon-fill: var(--dt-color-content-interactive-primary);block-size:var(--btn-dimension);inline-size:var(--btn-dimension);border-color:var(--btn-border-color);border-radius:var(--btn-border-radius);background-color:var(--btn-bg-color);color:var(--btn-icon-fill);cursor:pointer;user-select:none;outline:none;border:none;display:flex;align-items:center;justify-content:center}.o-iconBtn:focus-visible{box-shadow:0 0 0 2px var(--dt-color-focus-inner),0 0 0 4px var(--dt-color-focus-outer);outline:none}.o-iconBtn svg{height:var(--btn-icon-size);width:var(--btn-icon-size)}.o-iconBtn[variant=primary]:hover:not(:disabled){--hover-modifier: calc(-1 * var(--dt-color-hover-01));--btn-bg-color: hsl(var(--dt-color-interactive-brand-h), var(--dt-color-interactive-brand-s), calc(var(--dt-color-interactive-brand-l) + var(--hover-modifier)))}.o-iconBtn[variant=primary]:active:not(:disabled),.o-iconBtn[variant=primary][isLoading]:not(:disabled){--active-modifier: calc(-1 * var(--dt-color-active-01));--btn-bg-color: hsl(var(--dt-color-interactive-brand-h), var(--dt-color-interactive-brand-s), calc(var(--dt-color-interactive-brand-l) + var(--active-modifier)))}.o-iconBtn[variant=secondary]{--btn-bg-color: var(--dt-color-interactive-secondary);--btn-icon-fill: var(--dt-color-content-interactive-secondary)}.o-iconBtn[variant=secondary]:hover:not(:disabled){--hover-modifier: calc(-1 * var(--dt-color-hover-01));--btn-bg-color: hsl(var(--dt-color-interactive-secondary-h), var(--dt-color-interactive-secondary-s), calc(var(--dt-color-interactive-secondary-l) + var(--hover-modifier)))}.o-iconBtn[variant=secondary]:active:not(:disabled),.o-iconBtn[variant=secondary][isLoading]:not(:disabled){--active-modifier: calc(-1 * var(--dt-color-active-01));--btn-bg-color: hsl(var(--dt-color-interactive-secondary-h), var(--dt-color-interactive-secondary-s), calc(var(--dt-color-interactive-secondary-l) + var(--active-modifier)))}.o-iconBtn[variant=outline]{--btn-bg-color: transparent;--btn-icon-fill: var(--dt-color-content-interactive-brand);border:1px solid var(--dt-color-border-strong)}.o-iconBtn[variant=outline]:hover:not(:disabled){--hover-modifier: calc(-1 * var(--dt-color-hover-01));--hover-modifier: var(--dt-color-hover-01);--btn-bg-color: hsl(var(--dt-color-black-h), var(--dt-color-black-s), var(--dt-color-black-l), var(--hover-modifier))}.o-iconBtn[variant=outline]:active:not(:disabled),.o-iconBtn[variant=outline][isLoading]:not(:disabled){--active-modifier: calc(-1 * var(--dt-color-active-01));--active-modifier: var(--dt-color-active-01);--btn-bg-color: hsl(var(--dt-color-black-h), var(--dt-color-black-s), var(--dt-color-black-l), var(--active-modifier))}.o-iconBtn[variant=ghost]{--btn-bg-color: transparent;--btn-icon-fill: var(--dt-color-content-interactive-brand)}.o-iconBtn[variant=ghost]:hover:not(:disabled){--hover-modifier: calc(-1 * var(--dt-color-hover-01));--hover-modifier: var(--dt-color-hover-01);--btn-bg-color: hsl(var(--dt-color-black-h), var(--dt-color-black-s), var(--dt-color-black-l), var(--hover-modifier))}.o-iconBtn[variant=ghost]:active:not(:disabled),.o-iconBtn[variant=ghost][isLoading]:not(:disabled){--active-modifier: calc(-1 * var(--dt-color-active-01));--active-modifier: var(--dt-color-active-01);--btn-bg-color: hsl(var(--dt-color-black-h), var(--dt-color-black-s), var(--dt-color-black-l), var(--active-modifier))}.o-iconBtn[variant=ghost-secondary]{--btn-bg-color: transparent;--btn-icon-fill: var(--dt-color-content-interactive-secondary)}.o-iconBtn[variant=ghost-secondary]:hover:not(:disabled){--hover-modifier: calc(-1 * var(--dt-color-hover-01));--hover-modifier: var(--dt-color-hover-01);--btn-bg-color: hsl(var(--dt-color-black-h), var(--dt-color-black-s), var(--dt-color-black-l), var(--hover-modifier))}.o-iconBtn[variant=ghost-secondary]:active:not(:disabled),.o-iconBtn[variant=ghost-secondary][isLoading]:not(:disabled){--active-modifier: calc(-1 * var(--dt-color-active-01));--active-modifier: var(--dt-color-active-01);--btn-bg-color: hsl(var(--dt-color-black-h), var(--dt-color-black-s), var(--dt-color-black-l), var(--active-modifier))}.o-iconBtn[variant=inverse]{--btn-bg-color: var(--dt-color-interactive-inverse);--btn-icon-fill: var(--dt-color-content-interactive-brand)}.o-iconBtn[variant=inverse]:hover:not(:disabled){--hover-modifier: calc(-1 * var(--dt-color-hover-01));--btn-bg-color: hsl(var(--dt-color-interactive-inverse-h), var(--dt-color-interactive-inverse-s), calc(var(--dt-color-interactive-inverse-l) + var(--hover-modifier)))}.o-iconBtn[variant=inverse]:active:not(:disabled),.o-iconBtn[variant=inverse][isLoading]:not(:disabled){--active-modifier: calc(-1 * var(--dt-color-active-01));--btn-bg-color: hsl(var(--dt-color-interactive-inverse-h), var(--dt-color-interactive-inverse-s), calc(var(--dt-color-interactive-inverse-l) + var(--active-modifier)))}.o-iconBtn[variant=ghost-inverse]{--btn-bg-color: transparent;--btn-icon-fill: var(--dt-color-content-inverse)}.o-iconBtn[variant=ghost-inverse]:hover:not(:disabled){--hover-modifier: calc(-1 * var(--dt-color-hover-01));--hover-modifier: var(--dt-color-hover-01);--btn-bg-color: hsl(var(--dt-color-container-default-h), var(--dt-color-container-default-s), var(--dt-color-container-default-l), var(--hover-modifier))}.o-iconBtn[variant=ghost-inverse]:active:not(:disabled),.o-iconBtn[variant=ghost-inverse][isLoading]:not(:disabled){--active-modifier: calc(-1 * var(--dt-color-active-01));--active-modifier: var(--dt-color-active-01);--btn-bg-color: hsl(var(--dt-color-container-default-h), var(--dt-color-container-default-s), var(--dt-color-container-default-l), var(--active-modifier))}.o-iconBtn[disabled]{--btn-icon-fill: var(--dt-color-content-disabled);cursor:not-allowed}.o-iconBtn[disabled]:not([variant=ghost],[variant=ghost-secondary],[variant=ghost-inverse]){--btn-bg-color: var(--dt-color-disabled-01)}.o-iconBtn[disabled][variant=outline]{border-color:var(--dt-color-disabled-01)}.o-iconBtn[size=xsmall]{--btn-dimension: 32px;--btn-icon-size: 20px}.o-iconBtn[size=small]{--btn-dimension: 40px}.o-iconBtn[size=large]{--btn-dimension: 56px;--btn-icon-size: 28px}
@@ -12,13 +12,13 @@ const g = `:host{--btn-dimension: 48px;--btn-icon-size: 24px}.o-iconBtn{--btn-bo
12
12
  "inverse",
13
13
  "ghost-inverse"
14
14
  ];
15
- var y = Object.defineProperty, B = Object.getOwnPropertyDescriptor, n = (c, r, i, t) => {
16
- for (var o = t > 1 ? void 0 : t ? B(r, i) : r, l = c.length - 1, v; l >= 0; l--)
17
- (v = c[l]) && (o = (t ? v(r, i, o) : v(o)) || o);
18
- return t && o && y(r, i, o), o;
15
+ var y = Object.defineProperty, B = Object.getOwnPropertyDescriptor, c = (l, o, i, t) => {
16
+ for (var r = t > 1 ? void 0 : t ? B(o, i) : o, a = l.length - 1, v; a >= 0; a--)
17
+ (v = l[a]) && (r = (t ? v(o, i, r) : v(r)) || r);
18
+ return t && r && y(o, i, r), r;
19
19
  };
20
20
  const s = "pie-icon-button";
21
- class a extends m {
21
+ class e extends m {
22
22
  constructor() {
23
23
  super(...arguments), this.size = "medium", this.variant = "primary", this.disabled = !1, this.isLoading = !1;
24
24
  }
@@ -28,50 +28,50 @@ class a extends m {
28
28
  * @private
29
29
  */
30
30
  renderSpinner() {
31
- const { variant: r, size: i } = this, t = i === "xsmall" ? "small" : "medium";
32
- let o = "brand";
33
- return r != null && r.includes("secondary") && (o = "secondary"), (r === "primary" || r === "ghost-inverse") && (o = "inverse"), d`
31
+ const { variant: o, size: i, disabled: t } = this, r = i === "xsmall" ? "small" : "medium";
32
+ let a = "brand";
33
+ return o != null && o.includes("secondary") && (a = "secondary"), (o === "primary" && !t || o === "ghost-inverse") && (a = "inverse"), d`
34
34
  <pie-spinner
35
- size="${t}"
36
- variant="${o}"
35
+ size="${r}"
36
+ variant="${a}"
37
37
  </pie-spinner>`;
38
38
  }
39
39
  render() {
40
40
  const {
41
- disabled: r,
41
+ disabled: o,
42
42
  size: i,
43
43
  variant: t,
44
- isLoading: o
44
+ isLoading: r
45
45
  } = this;
46
46
  return d`
47
47
  <button
48
48
  class="o-iconBtn"
49
49
  size="${i}"
50
50
  variant="${t}"
51
- ?disabled="${r}"
52
- ?isLoading="${o}">
53
- ${o ? this.renderSpinner() : d`<slot></slot>`}
51
+ ?disabled="${o}"
52
+ ?isLoading="${r}">
53
+ ${r ? this.renderSpinner() : d`<slot></slot>`}
54
54
  </button>`;
55
55
  }
56
56
  }
57
- a.styles = h(g);
58
- n([
59
- e(),
57
+ e.styles = h(g);
58
+ c([
59
+ n(),
60
60
  b(s, p, "medium")
61
- ], a.prototype, "size", 2);
62
- n([
63
- e(),
61
+ ], e.prototype, "size", 2);
62
+ c([
63
+ n(),
64
64
  b(s, u, "primary")
65
- ], a.prototype, "variant", 2);
66
- n([
67
- e({ type: Boolean })
68
- ], a.prototype, "disabled", 2);
69
- n([
70
- e({ type: Boolean })
71
- ], a.prototype, "isLoading", 2);
72
- f(s, a);
65
+ ], e.prototype, "variant", 2);
66
+ c([
67
+ n({ type: Boolean })
68
+ ], e.prototype, "disabled", 2);
69
+ c([
70
+ n({ type: Boolean })
71
+ ], e.prototype, "isLoading", 2);
72
+ f(s, e);
73
73
  export {
74
- a as PieIconButton,
74
+ e as PieIconButton,
75
75
  p as sizes,
76
76
  u as variants
77
77
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@justeattakeaway/pie-icon-button",
3
- "version": "0.23.0",
3
+ "version": "0.24.0",
4
4
  "description": "PIE Design System Icon Button built using Web Components",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/index.ts CHANGED
@@ -38,11 +38,11 @@ export class PieIconButton extends LitElement implements IconButtonProps {
38
38
  * @private
39
39
  */
40
40
  private renderSpinner (): TemplateResult {
41
- const { variant, size } = this;
41
+ const { variant, size, disabled } = this;
42
42
  const spinnerSize = size === 'xsmall' ? 'small' : 'medium';
43
43
  let spinnerVariant = 'brand';
44
44
  if (variant?.includes('secondary')) spinnerVariant = 'secondary';
45
- if (variant === 'primary' || variant === 'ghost-inverse') spinnerVariant = 'inverse';
45
+ if ((variant === 'primary' && !disabled) || variant === 'ghost-inverse') spinnerVariant = 'inverse';
46
46
 
47
47
  return html`
48
48
  <pie-spinner