@justeattakeaway/pie-chip 0.7.2 → 0.8.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/dist/index.js CHANGED
@@ -1,26 +1,27 @@
1
- import { unsafeCSS as g, LitElement as m, html as p, nothing as v } from "lit";
2
- import { property as n } from "lit/decorators.js";
3
- import { ifDefined as h } from "lit/directives/if-defined.js";
4
- import { validPropertyValues as f, defineCustomElement as u, dispatchCustomEvent as y } from "@justeattakeaway/pie-webc-core";
1
+ import { unsafeCSS as m, LitElement as f, html as p, nothing as v } from "lit";
2
+ import { property as l } from "lit/decorators.js";
3
+ import { ifDefined as b } from "lit/directives/if-defined.js";
4
+ import { classMap as u } from "lit/directives/class-map.js";
5
+ import { validPropertyValues as y, defineCustomElement as k, dispatchCustomEvent as x } from "@justeattakeaway/pie-webc-core";
5
6
  import "@justeattakeaway/pie-icons-webc/dist/IconCloseCircleFilled.js";
6
7
  import "@justeattakeaway/pie-spinner";
7
- const S = `*,*:after,*:before{box-sizing:inherit}.c-chip{--chip-bg-color: var(--dt-color-interactive-secondary);--chip-color: var(--dt-color-content-interactive-secondary);--chip-border-width: 1px;--chip-border-color: transparent;--chip-padding-block: calc(6px - var(--chip-border-width));--chip-padding-inline: calc(var(--dt-spacing-c) - var(--chip-border-width));--chip-padding-dismissible: calc(var(--dt-spacing-a) - var(--chip-border-width));--chip-min-width: calc(var(--dt-spacing-g) + var(--dt-spacing-b));--chip-gap: var(--dt-spacing-b);--chip-dismissible-offset: calc(var(--chip-gap) / -2);--icon-display-override: block;position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--chip-gap);padding-block-start:var(--chip-padding-block);padding-block-end:var(--chip-padding-block);padding-inline-start:var(--chip-padding-inline);padding-inline-end:var(--chip-padding-inline);background-color:var(--chip-bg-color);color:var(--chip-color);border-radius:var(--dt-radius-rounded-e);border:1px solid;border-color:var(--chip-border-color);cursor:pointer;min-width:var(--chip-min-width);font-size:calc(var(--dt-font-interactive-xs-size) * 1px);line-height:calc(var(--dt-font-interactive-xs-line-height) * 1px);font-weight:var(--dt-font-weight-bold)}.c-chip:hover:not([disabled]){--hover-modifier: calc(-1 * var(--dt-color-hover-01));--chip-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)))}.c-chip:active:not([disabled]),.c-chip[isLoading]:not([disabled]){--active-modifier: calc(-1 * var(--dt-color-active-01));--chip-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)))}.c-chip[variant=outline]:not([disabled],[isSelected],[isLoading]){--chip-border-color: var(--dt-color-border-strong)}.c-chip[variant=outline],.c-chip[variant=ghost]{--chip-bg-color: transparent}.c-chip[variant=outline]:hover:not([disabled]),.c-chip[variant=ghost]:hover:not([disabled]){--hover-modifier: calc(-1 * var(--dt-color-hover-01));--hover-modifier: var(--dt-color-hover-01);--chip-bg-color: hsl(var(--dt-color-black-h), var(--dt-color-black-s), var(--dt-color-black-l), var(--hover-modifier))}.c-chip[variant=outline]:active:not([disabled]),.c-chip[variant=outline][isLoading]:not([disabled]),.c-chip[variant=ghost]:active:not([disabled]),.c-chip[variant=ghost][isLoading]:not([disabled]){--active-modifier: calc(-1 * var(--dt-color-active-01));--active-modifier: var(--dt-color-active-01);--chip-bg-color: hsl(var(--dt-color-black-h), var(--dt-color-black-s), var(--dt-color-black-l), var(--active-modifier))}.c-chip[isSelected]{--chip-bg-color: var(--dt-color-interactive-primary);--chip-color: var(--dt-color-content-interactive-primary)}.c-chip[isSelected]:hover:not([disabled]){--hover-modifier: var(--dt-color-hover-02);--chip-bg-color: hsl(var(--dt-color-interactive-primary-h), var(--dt-color-interactive-primary-s), calc(var(--dt-color-interactive-primary-l) + var(--hover-modifier)))}.c-chip[isSelected]:active:not([disabled]),.c-chip[isSelected][isLoading]:not([disabled]){--active-modifier: var(--dt-color-active-02);--chip-bg-color: hsl(var(--dt-color-interactive-primary-h), var(--dt-color-interactive-primary-s), calc(var(--dt-color-interactive-primary-l) + var(--active-modifier)))}.c-chip[isDismissible][isSelected]{padding-inline-end:var(--chip-padding-dismissible);padding-block-start:var(--chip-padding-dismissible);padding-block-end:var(--chip-padding-dismissible)}.c-chip[isDismissible][isSelected] .c-chip-closeBtn{display:inline-flex;-webkit-user-select:none;user-select:none;outline:none;border:none;color:inherit;background-color:inherit;border-radius:inherit;cursor:pointer;padding:0;margin-inline-start:var(--chip-dismissible-offset)}.c-chip[isLoading]>*:not(.c-chip-spinner){visibility:hidden}.c-chip[isLoading] .c-chip-spinner{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.c-chip[disabled]{--chip-bg-color: var(--dt-color-disabled-01);--chip-color: var(--dt-color-content-disabled);cursor:not-allowed}.c-chip:focus-visible{box-shadow:0 0 0 2px var(--dt-color-focus-inner),0 0 0 4px var(--dt-color-focus-outer);outline:none}::slotted(svg){display:block;height:var(--icon-size-override);width:var(--icon-size-override)}
8
- `, k = ["default", "outline", "ghost"], x = "pie-chip-close", s = {
8
+ const w = `*,*:after,*:before{box-sizing:inherit}.c-chip{--chip-bg-color: var(--dt-color-interactive-secondary);--chip-color: var(--dt-color-content-interactive-secondary);--chip-border-width: 1px;--chip-border-color: transparent;--chip-padding-block: calc(6px - var(--chip-border-width));--chip-padding-inline: calc(var(--dt-spacing-c) - var(--chip-border-width));--chip-padding-dismissible: calc(var(--dt-spacing-a) - var(--chip-border-width));--chip-min-width: calc(var(--dt-spacing-g) + var(--dt-spacing-b));--chip-gap: var(--dt-spacing-b);--chip-dismissible-offset: calc(var(--chip-gap) / -2);--icon-display-override: block;position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--chip-gap);padding-block-start:var(--chip-padding-block);padding-block-end:var(--chip-padding-block);padding-inline-start:var(--chip-padding-inline);padding-inline-end:var(--chip-padding-inline);background-color:var(--chip-bg-color);color:var(--chip-color);border-radius:var(--dt-radius-rounded-e);border:1px solid;border-color:var(--chip-border-color);cursor:pointer;min-width:var(--chip-min-width);font-size:calc(var(--dt-font-interactive-xs-size) * 1px);line-height:calc(var(--dt-font-interactive-xs-line-height) * 1px);font-weight:var(--dt-font-weight-bold)}.c-chip:hover:not([disabled]){--hover-modifier: calc(-1 * var(--dt-color-hover-01));--chip-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)))}.c-chip:active:not([disabled]),.c-chip.is-loading:not([disabled]){--active-modifier: calc(-1 * var(--dt-color-active-01));--chip-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)))}.c-chip.c-chip--outline:not([disabled],.c-chip--selected,.is-loading){--chip-border-color: var(--dt-color-border-strong)}.c-chip.c-chip--outline,.c-chip.c-chip--ghost{--chip-bg-color: transparent}.c-chip.c-chip--outline:hover:not([disabled]),.c-chip.c-chip--ghost:hover:not([disabled]){--hover-modifier: calc(-1 * var(--dt-color-hover-01));--hover-modifier: var(--dt-color-hover-01);--chip-bg-color: hsl(var(--dt-color-black-h), var(--dt-color-black-s), var(--dt-color-black-l), var(--hover-modifier))}.c-chip.c-chip--outline:active:not([disabled]),.c-chip.c-chip--outline.is-loading:not([disabled]),.c-chip.c-chip--ghost:active:not([disabled]),.c-chip.c-chip--ghost.is-loading:not([disabled]){--active-modifier: calc(-1 * var(--dt-color-active-01));--active-modifier: var(--dt-color-active-01);--chip-bg-color: hsl(var(--dt-color-black-h), var(--dt-color-black-s), var(--dt-color-black-l), var(--active-modifier))}.c-chip.c-chip--selected{--chip-bg-color: var(--dt-color-interactive-primary);--chip-color: var(--dt-color-content-interactive-primary)}.c-chip.c-chip--selected:hover:not([disabled]){--hover-modifier: var(--dt-color-hover-02);--chip-bg-color: hsl(var(--dt-color-interactive-primary-h), var(--dt-color-interactive-primary-s), calc(var(--dt-color-interactive-primary-l) + var(--hover-modifier)))}.c-chip.c-chip--selected:active:not([disabled]),.c-chip.c-chip--selected.is-loading:not([disabled]){--active-modifier: var(--dt-color-active-02);--chip-bg-color: hsl(var(--dt-color-interactive-primary-h), var(--dt-color-interactive-primary-s), calc(var(--dt-color-interactive-primary-l) + var(--active-modifier)))}.c-chip.c-chip--dismissible.c-chip--selected{padding-inline-end:var(--chip-padding-dismissible);padding-block-start:var(--chip-padding-dismissible);padding-block-end:var(--chip-padding-dismissible)}.c-chip.c-chip--dismissible.c-chip--selected .c-chip-closeBtn{display:inline-flex;-webkit-user-select:none;user-select:none;outline:none;border:none;color:inherit;background-color:inherit;border-radius:inherit;cursor:pointer;padding:0;margin-inline-start:var(--chip-dismissible-offset)}.c-chip.is-loading>*:not(.c-chip-spinner){visibility:hidden}.c-chip.is-loading .c-chip-spinner{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.c-chip[disabled]{--chip-bg-color: var(--dt-color-disabled-01);--chip-color: var(--dt-color-content-disabled);cursor:not-allowed}.c-chip:focus-visible{box-shadow:0 0 0 2px var(--dt-color-focus-inner),0 0 0 4px var(--dt-color-focus-outer);outline:none}::slotted(svg){display:block;height:var(--icon-size-override);width:var(--icon-size-override)}
9
+ `, C = ["default", "outline", "ghost"], S = "pie-chip-close", a = {
9
10
  variant: "default",
10
11
  disabled: !1,
11
12
  isSelected: !1,
12
13
  isLoading: !1,
13
14
  isDismissible: !1
14
15
  };
15
- var w = Object.defineProperty, L = Object.getOwnPropertyDescriptor, l = (d, i, t, r) => {
16
- for (var e = r > 1 ? void 0 : r ? L(i, t) : i, c = d.length - 1, a; c >= 0; c--)
17
- (a = d[c]) && (e = (r ? a(i, t, e) : a(e)) || e);
18
- return r && e && w(i, t, e), e;
16
+ var $ = Object.defineProperty, _ = Object.getOwnPropertyDescriptor, s = (n, i, o, c) => {
17
+ for (var e = c > 1 ? void 0 : c ? _(i, o) : i, t = n.length - 1, d; t >= 0; t--)
18
+ (d = n[t]) && (e = (c ? d(i, o, e) : d(e)) || e);
19
+ return c && e && $(i, o, e), e;
19
20
  };
20
- const b = "pie-chip";
21
- class o extends m {
21
+ const g = "pie-chip";
22
+ class r extends f {
22
23
  constructor() {
23
- super(...arguments), this.variant = s.variant, this.disabled = s.disabled, this.isSelected = s.isSelected, this.isLoading = s.isLoading, this.isDismissible = s.isDismissible;
24
+ super(...arguments), this.variant = a.variant, this.disabled = a.disabled, this.isSelected = a.isSelected, this.isLoading = a.isLoading, this.isDismissible = a.isDismissible;
24
25
  }
25
26
  /**
26
27
  * Template for the loading state
@@ -42,7 +43,7 @@ class o extends m {
42
43
  * @private
43
44
  */
44
45
  _handleCloseButtonClick() {
45
- y(this, x);
46
+ x(this, S);
46
47
  }
47
48
  /**
48
49
  * Template for the dismissible state
@@ -55,68 +56,70 @@ class o extends m {
55
56
  <button
56
57
  @click="${this._handleCloseButtonClick}"
57
58
  ?disabled=${this.disabled}
58
- aria-label="${h((i = this.aria) == null ? void 0 : i.close)}"
59
+ aria-label="${b((i = this.aria) == null ? void 0 : i.close)}"
59
60
  class="c-chip-closeBtn"
60
61
  data-test-id="chip-close-button">
61
62
  <icon-close-circle-filled size="m"></icon-close-circle-filled>
62
63
  </button>`;
63
64
  }
64
65
  render() {
65
- var a;
66
+ var h;
66
67
  const {
67
68
  variant: i,
68
- disabled: t,
69
- isSelected: r,
69
+ disabled: o,
70
+ isSelected: c,
70
71
  isLoading: e,
71
- isDismissible: c
72
- } = this;
72
+ isDismissible: t
73
+ } = this, d = {
74
+ "c-chip": !0,
75
+ [`c-chip--${i}`]: !0,
76
+ "c-chip--selected": c,
77
+ "c-chip--dismissible": t,
78
+ "is-loading": e
79
+ };
73
80
  return p`
74
81
  <div
75
82
  aria-atomic="true"
76
83
  aria-busy="${e}"
77
- aria-current="${r}"
78
- aria-label="${h((a = this.aria) == null ? void 0 : a.label)}"
84
+ aria-current="${c}"
85
+ aria-label="${b((h = this.aria) == null ? void 0 : h.label)}"
79
86
  aria-live="polite"
80
- class="c-chip"
87
+ class=${u(d)}
81
88
  data-test-id="pie-chip"
82
89
  tabindex="0"
83
90
  role="button"
84
- variant="${i}"
85
- ?disabled="${t}"
86
- ?isSelected="${r}"
87
- ?isLoading="${e}"
88
- ?isDismissible="${c}">
91
+ ?disabled="${o}">
89
92
  <slot name="icon"></slot>
90
93
  ${e ? this.renderSpinner() : v}
91
94
  <slot></slot>
92
- ${c && r ? this.renderCloseButton() : v}
95
+ ${t && c ? this.renderCloseButton() : v}
93
96
  </div>`;
94
97
  }
95
98
  }
96
- o.styles = g(S);
97
- l([
98
- n(),
99
- f(b, k, s.variant)
100
- ], o.prototype, "variant", 2);
101
- l([
102
- n({ type: Boolean })
103
- ], o.prototype, "disabled", 2);
104
- l([
105
- n({ type: Boolean })
106
- ], o.prototype, "isSelected", 2);
107
- l([
108
- n({ type: Boolean })
109
- ], o.prototype, "isLoading", 2);
110
- l([
111
- n({ type: Boolean })
112
- ], o.prototype, "isDismissible", 2);
113
- l([
114
- n({ type: Object })
115
- ], o.prototype, "aria", 2);
116
- u(b, o);
99
+ r.styles = m(w);
100
+ s([
101
+ l(),
102
+ y(g, C, a.variant)
103
+ ], r.prototype, "variant", 2);
104
+ s([
105
+ l({ type: Boolean })
106
+ ], r.prototype, "disabled", 2);
107
+ s([
108
+ l({ type: Boolean })
109
+ ], r.prototype, "isSelected", 2);
110
+ s([
111
+ l({ type: Boolean })
112
+ ], r.prototype, "isLoading", 2);
113
+ s([
114
+ l({ type: Boolean })
115
+ ], r.prototype, "isDismissible", 2);
116
+ s([
117
+ l({ type: Object })
118
+ ], r.prototype, "aria", 2);
119
+ k(g, r);
117
120
  export {
118
- x as ON_CHIP_CLOSE_EVENT,
119
- o as PieChip,
120
- s as defaultProps,
121
- k as variants
121
+ S as ON_CHIP_CLOSE_EVENT,
122
+ r as PieChip,
123
+ a as defaultProps,
124
+ C as variants
122
125
  };
package/dist/react.js CHANGED
@@ -1,10 +1,11 @@
1
1
  import * as i from "react";
2
2
  import { createComponent as e } from "@lit/react";
3
3
  import { PieChip as p } from "./index.js";
4
- import { ON_CHIP_CLOSE_EVENT as f, defaultProps as N, variants as E } from "./index.js";
4
+ import { ON_CHIP_CLOSE_EVENT as N, defaultProps as E, variants as _ } from "./index.js";
5
5
  import "lit";
6
6
  import "lit/decorators.js";
7
7
  import "lit/directives/if-defined.js";
8
+ import "lit/directives/class-map.js";
8
9
  import "@justeattakeaway/pie-webc-core";
9
10
  import "@justeattakeaway/pie-icons-webc/dist/IconCloseCircleFilled.js";
10
11
  import "@justeattakeaway/pie-spinner";
@@ -17,10 +18,10 @@ const o = e({
17
18
  onPieChipClose: "pie-chip-close"
18
19
  // when a user clicks close button.
19
20
  }
20
- }), n = o;
21
+ }), P = o;
21
22
  export {
22
- f as ON_CHIP_CLOSE_EVENT,
23
- n as PieChip,
24
- N as defaultProps,
25
- E as variants
23
+ N as ON_CHIP_CLOSE_EVENT,
24
+ P as PieChip,
25
+ E as defaultProps,
26
+ _ as variants
26
27
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@justeattakeaway/pie-chip",
3
3
  "description": "PIE Design System Chip built using Web Components",
4
- "version": "0.7.2",
4
+ "version": "0.8.1",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",
@@ -36,12 +36,12 @@
36
36
  "license": "Apache-2.0",
37
37
  "devDependencies": {
38
38
  "@custom-elements-manifest/analyzer": "0.9.0",
39
- "@justeattakeaway/pie-components-config": "0.17.0",
39
+ "@justeattakeaway/pie-components-config": "0.18.0",
40
40
  "@justeattakeaway/pie-css": "0.12.1",
41
41
  "cem-plugin-module-file-extensions": "0.0.5"
42
42
  },
43
43
  "dependencies": {
44
- "@justeattakeaway/pie-icons-webc": "0.25.0",
44
+ "@justeattakeaway/pie-icons-webc": "0.25.1",
45
45
  "@justeattakeaway/pie-spinner": "0.6.7",
46
46
  "@justeattakeaway/pie-webc-core": "0.24.0"
47
47
  },
package/src/chip.scss CHANGED
@@ -17,7 +17,7 @@
17
17
  }
18
18
 
19
19
  &:active:not([disabled]),
20
- &[isLoading]:not([disabled]) {
20
+ &.is-loading:not([disabled]) {
21
21
  @if $mode == 'inverse' {
22
22
  --active-modifier: var(--dt-color-active-02);
23
23
  } @else {
@@ -33,7 +33,6 @@
33
33
  }
34
34
  }
35
35
 
36
-
37
36
  .c-chip {
38
37
  --chip-bg-color: var(--dt-color-interactive-secondary);
39
38
  --chip-color: var(--dt-color-content-interactive-secondary);
@@ -72,29 +71,29 @@
72
71
 
73
72
  @include chip-interactive-states('--dt-color-interactive-secondary');
74
73
 
75
- &[variant='default'] {
74
+ &.c-chip--default {
76
75
  // same as default styles
77
76
  }
78
77
 
79
- &[variant='outline']:not([disabled], [isSelected], [isLoading]) {
78
+ &.c-chip--outline:not([disabled], .c-chip--selected, .is-loading) {
80
79
  --chip-border-color: var(--dt-color-border-strong);
81
80
  }
82
81
 
83
- &[variant='outline'],
84
- &[variant='ghost'] {
82
+ &.c-chip--outline,
83
+ &.c-chip--ghost {
85
84
  --chip-bg-color: transparent;
86
85
 
87
86
  @include chip-interactive-states('--dt-color-black', 'transparent');
88
87
  }
89
88
 
90
- &[isSelected] {
89
+ &.c-chip--selected {
91
90
  --chip-bg-color: var(--dt-color-interactive-primary);
92
91
  --chip-color: var(--dt-color-content-interactive-primary);
93
92
 
94
93
  @include chip-interactive-states('--dt-color-interactive-primary', 'inverse');
95
94
  }
96
95
 
97
- &[isDismissible][isSelected] {
96
+ &.c-chip--dismissible.c-chip--selected {
98
97
  padding-inline-end: var(--chip-padding-dismissible);
99
98
  padding-block-start: var(--chip-padding-dismissible);
100
99
  padding-block-end: var(--chip-padding-dismissible);
@@ -113,7 +112,7 @@
113
112
  }
114
113
  }
115
114
 
116
- &[isLoading] {
115
+ &.is-loading {
117
116
  & > *:not(.c-chip-spinner) {
118
117
  visibility: hidden;
119
118
  }
package/src/index.ts CHANGED
@@ -3,6 +3,7 @@ import {
3
3
  } from 'lit';
4
4
  import { property } from 'lit/decorators.js';
5
5
  import { ifDefined } from 'lit/directives/if-defined.js';
6
+ import { classMap } from 'lit/directives/class-map.js';
6
7
 
7
8
  import {
8
9
  validPropertyValues, defineCustomElement, dispatchCustomEvent,
@@ -97,6 +98,14 @@ export class PieChip extends LitElement implements ChipProps {
97
98
  isDismissible,
98
99
  } = this;
99
100
 
101
+ const classes = {
102
+ 'c-chip': true,
103
+ [`c-chip--${variant}`]: true,
104
+ 'c-chip--selected': isSelected,
105
+ 'c-chip--dismissible': isDismissible,
106
+ 'is-loading': isLoading,
107
+ };
108
+
100
109
  return html`
101
110
  <div
102
111
  aria-atomic="true"
@@ -104,15 +113,11 @@ export class PieChip extends LitElement implements ChipProps {
104
113
  aria-current="${isSelected}"
105
114
  aria-label="${ifDefined(this.aria?.label)}"
106
115
  aria-live="polite"
107
- class="c-chip"
116
+ class=${classMap(classes)}
108
117
  data-test-id="pie-chip"
109
118
  tabindex="0"
110
119
  role="button"
111
- variant="${variant}"
112
- ?disabled="${disabled}"
113
- ?isSelected="${isSelected}"
114
- ?isLoading="${isLoading}"
115
- ?isDismissible="${isDismissible}">
120
+ ?disabled="${disabled}">
116
121
  <slot name="icon"></slot>
117
122
  ${isLoading ? this.renderSpinner() : nothing}
118
123
  <slot></slot>