@justeattakeaway/pie-radio 0.8.1 → 0.9.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,30 +1,30 @@
1
- import { LitElement as f, html as k, unsafeCSS as m } from "lit";
2
- import { state as g, property as i, query as y } from "lit/decorators.js";
3
- import { ifDefined as C } from "lit/directives/if-defined.js";
4
- import { live as _ } from "lit/directives/live.js";
5
- import { classMap as x } from "lit/directives/class-map.js";
6
- import { FormControlMixin as z, RtlMixin as w, wrapNativeEvent as E, requiredProperty as $, validPropertyValues as q, defineCustomElement as B } from "@justeattakeaway/pie-webc-core";
7
- const A = ["default", "error"], d = {
1
+ import { LitElement as g, html as k, unsafeCSS as f } from "lit";
2
+ import { state as m, property as i, query as y } from "lit/decorators.js";
3
+ import { ifDefined as x } from "lit/directives/if-defined.js";
4
+ import { live as w } from "lit/directives/live.js";
5
+ import { classMap as C } from "lit/directives/class-map.js";
6
+ import { FormControlMixin as _, RtlMixin as z, wrapNativeEvent as E, requiredProperty as $, validPropertyValues as q, defineCustomElement as B } from "@justeattakeaway/pie-webc-core";
7
+ const A = ["default", "error"], c = {
8
8
  checked: !1,
9
9
  defaultChecked: !1,
10
10
  disabled: !1,
11
11
  required: !1,
12
12
  status: "default"
13
- }, P = '*,*:after,*:before{box-sizing:inherit}.c-radio{--radio-dot-bg-color: var(--dt-color-content-interactive-primary);--radio-bg-color: transparent;--radio-bg-color--checked: var(--dt-color-interactive-brand);--radio-border-color: var(--dt-color-border-form);--radio-font-size: p.font-size(--dt-font-body-l-size);--radio-font-weight: var(--dt-font-weight-regular);--radio-text-color: var(--dt-color-content-default);--radio-size: 24px;--radio-dot-size: 8px;--radio-cursor: pointer;--radio-motion-easing: var(--dt-motion-easing-persistent-functional);--radio-border-width: 1px;display:flex;align-items:center;gap:var(--dt-spacing-b);cursor:var(--radio-cursor);font-size:var(--radio-font-size);font-weight:var(--radio-font-weight);color:var(--radio-text-color)}.c-radio .c-radio-input:hover:not(:checked,:disabled){--radio-bg-color: hsl(var(--dt-color-black-h), var(--dt-color-black-s), var(--dt-color-black-l), var(--dt-color-hover-01))}.c-radio .c-radio-input:active:not(:checked,:disabled){--radio-bg-color: hsl(var(--dt-color-black-h), var(--dt-color-black-s), var(--dt-color-black-l), var(--dt-color-active-01))}.c-radio .c-radio-input:hover:checked:not(:disabled):before{--radio-bg-color--checked: hsl(var(--dt-color-interactive-brand-h), var(--dt-color-interactive-brand-s), calc(var(--dt-color-interactive-brand-l) - var(--dt-color-hover-01)));--radio-border-color: hsl(var(--dt-color-interactive-brand-h), var(--dt-color-interactive-brand-s), calc(var(--dt-color-interactive-brand-l) - var(--dt-color-hover-01)))}.c-radio .c-radio-input:active:checked:not(:disabled):before{--radio-bg-color--checked: hsl(var(--dt-color-interactive-brand-h), var(--dt-color-interactive-brand-s), calc(var(--dt-color-interactive-brand-l) - var(--dt-color-active-01)));--radio-border-color: hsl(var(--dt-color-interactive-brand-h), var(--dt-color-interactive-brand-s), calc(var(--dt-color-interactive-brand-l) - var(--dt-color-active-01)))}.c-radio.c-radio--disabled{--radio-cursor: not-allowed}.c-radio.c-radio--status-error{--radio-bg-color--checked: var(--dt-color-support-error);--radio-border-color: var(--dt-color-support-error)}.c-radio.c-radio--status-error .c-radio-input:hover:not(:checked,:disabled){--radio-bg-color: hsl(var(--dt-color-black-h), var(--dt-color-black-s), var(--dt-color-black-l), var(--dt-color-hover-01))}.c-radio.c-radio--status-error .c-radio-input:active:not(:checked,:disabled){--radio-bg-color: hsl(var(--dt-color-black-h), var(--dt-color-black-s), var(--dt-color-black-l), var(--dt-color-active-01))}.c-radio.c-radio--status-error .c-radio-input:hover:checked:not(:disabled):before{--radio-bg-color--checked: hsl(var(--dt-color-support-error-h), var(--dt-color-support-error-s), calc(var(--dt-color-support-error-l) - var(--dt-color-hover-01)));--radio-border-color: hsl(var(--dt-color-support-error-h), var(--dt-color-support-error-s), calc(var(--dt-color-support-error-l) - var(--dt-color-hover-01)))}.c-radio.c-radio--status-error .c-radio-input:active:checked:not(:disabled):before{--radio-bg-color--checked: hsl(var(--dt-color-support-error-h), var(--dt-color-support-error-s), calc(var(--dt-color-support-error-l) - var(--dt-color-active-01)));--radio-border-color: hsl(var(--dt-color-support-error-h), var(--dt-color-support-error-s), calc(var(--dt-color-support-error-l) - var(--dt-color-active-01)))}.c-radio .c-radio-input{align-self:flex-start;-webkit-appearance:none;-moz-appearance:none;appearance:none;display:block;position:relative;inline-size:var(--radio-size);block-size:var(--radio-size);border:var(--radio-border-width) solid var(--radio-border-color);border-radius:50%;margin:0;cursor:var(--radio-cursor);background-color:var(--radio-bg-color);transition:background-color var(--dt-motion-timing-100) var(--radio-motion-easing);flex-shrink:0}.c-radio .c-radio-input:before{--circle-size: calc(var(--radio-border-width) * -1);content:"";display:block;inset:var(--circle-size);border-radius:inherit;background-color:var(--radio-bg-color--checked);position:absolute;transform:scale(0)}@media (prefers-reduced-motion: no-preference){.c-radio .c-radio-input:not(:disabled):before{transition:all var(--dt-motion-timing-100) var(--radio-motion-easing)}}.c-radio .c-radio-input:after{content:"";position:absolute;top:50%;left:50%;width:var(--radio-dot-size);height:var(--radio-dot-size);background-color:var(--radio-dot-bg-color);border-radius:50%;transform:translate(-50%,-50%) scale(0)}.c-radio .c-radio-input:checked:after{transform:translate(-50%,-50%) scale(1)}.c-radio .c-radio-input:checked:before{transform:scale(1)}@media (prefers-reduced-motion: no-preference){.c-radio .c-radio-input:not(:disabled):after{transition:all var(--dt-motion-timing-100) var(--radio-motion-easing)}}@media (prefers-reduced-motion: no-preference){.c-radio .c-radio-input:not(:disabled):checked:after{transition:all var(--dt-motion-timing-150) var(--radio-motion-easing)}}.c-radio .c-radio-input:disabled{--radio-bg-color: var(--dt-color-disabled-01);--radio-border-color: var(--dt-color-border-default)}.c-radio .c-radio-input:checked:disabled{--radio-dot-bg-color: var(--dt-color-content-disabled);--radio-bg-color--checked: var(--dt-color-disabled-01)}:host(:focus-visible){outline:none}:host(:focus-visible) .c-radio .c-radio-input{box-shadow:0 0 0 2px var(--dt-color-focus-inner),0 0 0 4px var(--dt-color-focus-outer);outline:none}';
14
- var S = Object.defineProperty, e = (h, r, t, l) => {
15
- for (var a = void 0, c = h.length - 1, s; c >= 0; c--)
16
- (s = h[c]) && (a = s(r, t, a) || a);
17
- return a && S(r, t, a), a;
13
+ }, P = '*,*:after,*:before{box-sizing:inherit}.c-radio{--radio-dot-bg-color: var(--dt-color-content-interactive-primary);--radio-bg-color: transparent;--radio-bg-color--checked: var(--dt-color-interactive-brand);--radio-border-color: var(--dt-color-border-form);--radio-font-size: p.font-size(--dt-font-body-l-size);--radio-font-weight: var(--dt-font-weight-regular);--radio-text-color: var(--dt-color-content-default);--radio-size: 24px;--radio-dot-size: 8px;--radio-cursor: pointer;--radio-motion-easing: var(--dt-motion-easing-persistent-functional);--radio-border-width: 1px;display:flex;align-items:center;gap:var(--dt-spacing-b);cursor:var(--radio-cursor);font-size:var(--radio-font-size);font-weight:var(--radio-font-weight);color:var(--radio-text-color)}.c-radio .c-radio-input:hover:not(:checked,:disabled){--radio-bg-color: hsl(var(--dt-color-black-h), var(--dt-color-black-s), var(--dt-color-black-l), var(--dt-color-hover-01))}@supports (background-color: color-mix(in srgb,black,white)){.c-radio .c-radio-input:hover:not(:checked,:disabled){--radio-bg-color: color-mix(in srgb, var(--dt-color-hover-01-bg) var(--dt-color-hover-01), transparent)}}.c-radio .c-radio-input:active:not(:checked,:disabled){--radio-bg-color: hsl(var(--dt-color-black-h), var(--dt-color-black-s), var(--dt-color-black-l), var(--dt-color-active-01))}@supports (background-color: color-mix(in srgb,black,white)){.c-radio .c-radio-input:active:not(:checked,:disabled){--radio-bg-color: color-mix(in srgb, var(--dt-color-active-01-bg) var(--dt-color-active-01), transparent)}}.c-radio .c-radio-input:hover:checked:not(:disabled):before{--radio-bg-color--checked: hsl(var(--dt-color-interactive-brand-h), var(--dt-color-interactive-brand-s), calc(var(--dt-color-interactive-brand-l) - var(--dt-color-hover-01)));--radio-border-color: hsl(var(--dt-color-interactive-brand-h), var(--dt-color-interactive-brand-s), calc(var(--dt-color-interactive-brand-l) - var(--dt-color-hover-01)))}@supports (background-color: color-mix(in srgb,black,white)){.c-radio .c-radio-input:hover:checked:not(:disabled):before{--radio-bg-color--checked: color-mix(in srgb, var(--dt-color-hover-01-bg) var(--dt-color-hover-01), var(dt-color-interactive-brand))}}.c-radio .c-radio-input:active:checked:not(:disabled):before{--radio-bg-color--checked: hsl(var(--dt-color-interactive-brand-h), var(--dt-color-interactive-brand-s), calc(var(--dt-color-interactive-brand-l) - var(--dt-color-active-01)));--radio-border-color: hsl(var(--dt-color-interactive-brand-h), var(--dt-color-interactive-brand-s), calc(var(--dt-color-interactive-brand-l) - var(--dt-color-active-01)))}@supports (background-color: color-mix(in srgb,black,white)){.c-radio .c-radio-input:active:checked:not(:disabled):before{--radio-bg-color--checked: color-mix(in srgb, var(--dt-color-active-01-bg) var(--dt-color-active-01), var(dt-color-interactive-brand))}}.c-radio.is-disabled{--radio-cursor: not-allowed}.c-radio.c-radio--status-error{--radio-bg-color--checked: var(--dt-color-support-error);--radio-border-color: var(--dt-color-support-error)}.c-radio.c-radio--status-error .c-radio-input:hover:not(:checked,:disabled){--radio-bg-color: hsl(var(--dt-color-black-h), var(--dt-color-black-s), var(--dt-color-black-l), var(--dt-color-hover-01))}@supports (background-color: color-mix(in srgb,black,white)){.c-radio.c-radio--status-error .c-radio-input:hover:not(:checked,:disabled){--radio-bg-color: color-mix(in srgb, var(--dt-color-hover-01-bg) var(--dt-color-hover-01), transparent)}}.c-radio.c-radio--status-error .c-radio-input:active:not(:checked,:disabled){--radio-bg-color: hsl(var(--dt-color-black-h), var(--dt-color-black-s), var(--dt-color-black-l), var(--dt-color-active-01))}@supports (background-color: color-mix(in srgb,black,white)){.c-radio.c-radio--status-error .c-radio-input:active:not(:checked,:disabled){--radio-bg-color: color-mix(in srgb, var(--dt-color-active-01-bg) var(--dt-color-active-01), transparent)}}.c-radio.c-radio--status-error .c-radio-input:hover:checked:not(:disabled):before{--radio-bg-color--checked: hsl(var(--dt-color-support-error-h), var(--dt-color-support-error-s), calc(var(--dt-color-support-error-l) - var(--dt-color-hover-01)));--radio-border-color: hsl(var(--dt-color-support-error-h), var(--dt-color-support-error-s), calc(var(--dt-color-support-error-l) - var(--dt-color-hover-01)))}@supports (background-color: color-mix(in srgb,black,white)){.c-radio.c-radio--status-error .c-radio-input:hover:checked:not(:disabled):before{--radio-bg-color--checked: color-mix(in srgb, var(--dt-color-hover-01-bg) var(--dt-color-hover-01), var(dt-color-support-error))}}.c-radio.c-radio--status-error .c-radio-input:active:checked:not(:disabled):before{--radio-bg-color--checked: hsl(var(--dt-color-support-error-h), var(--dt-color-support-error-s), calc(var(--dt-color-support-error-l) - var(--dt-color-active-01)));--radio-border-color: hsl(var(--dt-color-support-error-h), var(--dt-color-support-error-s), calc(var(--dt-color-support-error-l) - var(--dt-color-active-01)))}@supports (background-color: color-mix(in srgb,black,white)){.c-radio.c-radio--status-error .c-radio-input:active:checked:not(:disabled):before{--radio-bg-color--checked: color-mix(in srgb, var(--dt-color-active-01-bg) var(--dt-color-active-01), var(dt-color-support-error))}}.c-radio .c-radio-input{align-self:flex-start;-webkit-appearance:none;-moz-appearance:none;appearance:none;display:block;position:relative;inline-size:var(--radio-size);block-size:var(--radio-size);border:var(--radio-border-width) solid var(--radio-border-color);border-radius:50%;margin:0;cursor:var(--radio-cursor);background-color:var(--radio-bg-color);transition:background-color var(--dt-motion-timing-100) var(--radio-motion-easing);flex-shrink:0}.c-radio .c-radio-input:before{--circle-size: calc(var(--radio-border-width) * -1);content:"";display:block;inset:var(--circle-size);border-radius:inherit;background-color:var(--radio-bg-color--checked);position:absolute;transform:scale(0)}@media (prefers-reduced-motion: no-preference){.c-radio .c-radio-input:not(:disabled):before{transition:all var(--dt-motion-timing-100) var(--radio-motion-easing)}}.c-radio .c-radio-input:after{content:"";position:absolute;top:50%;left:50%;width:var(--radio-dot-size);height:var(--radio-dot-size);background-color:var(--radio-dot-bg-color);border-radius:50%;transform:translate(-50%,-50%) scale(0)}.c-radio .c-radio-input:checked:after{transform:translate(-50%,-50%) scale(1)}.c-radio .c-radio-input:checked:before{transform:scale(1)}@media (prefers-reduced-motion: no-preference){.c-radio .c-radio-input:not(:disabled):after{transition:all var(--dt-motion-timing-100) var(--radio-motion-easing)}}@media (prefers-reduced-motion: no-preference){.c-radio .c-radio-input:not(:disabled):checked:after{transition:all var(--dt-motion-timing-150) var(--radio-motion-easing)}}.c-radio .c-radio-input:disabled{--radio-bg-color: var(--dt-color-disabled-01);--radio-border-color: var(--dt-color-border-default)}.c-radio .c-radio-input:checked:disabled{--radio-dot-bg-color: var(--dt-color-content-disabled);--radio-bg-color--checked: var(--dt-color-disabled-01)}:host(:focus-visible){outline:none}:host(:focus-visible) .c-radio .c-radio-input{box-shadow:0 0 0 2px var(--dt-color-focus-inner),0 0 0 4px var(--dt-color-focus-outer);outline:none}';
14
+ var S = Object.defineProperty, e = (p, r, a, l) => {
15
+ for (var t = void 0, d = p.length - 1, s; d >= 0; d--)
16
+ (s = p[d]) && (t = s(r, a, t) || t);
17
+ return t && S(r, a, t), t;
18
18
  };
19
- const v = "pie-radio", p = class p extends z(w(f)) {
19
+ const b = "pie-radio", v = class v extends _(z(g)) {
20
20
  constructor() {
21
- super(...arguments), this._disabledByParent = !1, this.checked = d.checked, this.defaultChecked = d.defaultChecked, this.disabled = d.disabled, this.required = d.required, this.status = d.status;
21
+ super(...arguments), this._disabledByParent = !1, this.checked = c.checked, this.defaultChecked = c.defaultChecked, this.disabled = c.disabled, this.required = c.required, this.status = c.status;
22
22
  }
23
23
  connectedCallback() {
24
24
  super.connectedCallback(), this._abortController = new AbortController();
25
25
  const { signal: r } = this._abortController;
26
- this.setAttribute("role", "radio"), this.addEventListener("pie-radio-group-disabled", (t) => {
27
- this._disabledByParent = t.detail.disabled;
26
+ this.setAttribute("role", "radio"), this.addEventListener("pie-radio-group-disabled", (a) => {
27
+ this._disabledByParent = a.detail.disabled;
28
28
  }, { signal: r });
29
29
  }
30
30
  disconnectedCallback() {
@@ -41,8 +41,8 @@ const v = "pie-radio", p = class p extends z(w(f)) {
41
41
  * @param {Event} event - This should be the change event that was listened for on an input element with `type="radio"`.
42
42
  */
43
43
  _handleChange(r) {
44
- const { checked: t } = r == null ? void 0 : r.currentTarget;
45
- this.checked = t;
44
+ const { checked: a } = r == null ? void 0 : r.currentTarget;
45
+ this.checked = a;
46
46
  const l = E(r);
47
47
  this.dispatchEvent(l), this._handleFormAssociation();
48
48
  }
@@ -71,40 +71,40 @@ const v = "pie-radio", p = class p extends z(w(f)) {
71
71
  render() {
72
72
  const {
73
73
  checked: r,
74
- disabled: t,
74
+ disabled: a,
75
75
  _disabledByParent: l,
76
- name: a,
77
- required: c,
76
+ name: t,
77
+ required: d,
78
78
  value: s,
79
- status: b
80
- } = this, n = t || l, u = {
79
+ status: h
80
+ } = this, n = a || l, u = {
81
81
  "c-radio": !0,
82
- "c-radio--disabled": n,
83
- [`c-radio--status-${b}`]: !n
82
+ "is-disabled": n,
83
+ [`c-radio--status-${h}`]: !n
84
84
  };
85
85
  return k`
86
- <label class=${x(u)} for="radioId">
86
+ <label class=${C(u)} for="radioId">
87
87
  <input
88
88
  tabindex="-1"
89
89
  class="c-radio-input"
90
90
  type="radio"
91
91
  id="radioId"
92
92
  data-test-id="pie-radio-input"
93
- .checked="${_(r)}"
93
+ .checked="${w(r)}"
94
94
  .value="${s}"
95
- name="${C(a)}"
95
+ name="${x(t)}"
96
96
  ?disabled="${n}"
97
- ?required="${c}"
98
- aria-invalid=${b === "error" ? "true" : "false"}
97
+ ?required="${d}"
98
+ aria-invalid=${h === "error" ? "true" : "false"}
99
99
  @change="${this._handleChange}">
100
100
  <slot></slot>
101
101
  </label>`;
102
102
  }
103
103
  };
104
- p.styles = m(P);
105
- let o = p;
104
+ v.styles = f(P);
105
+ let o = v;
106
106
  e([
107
- g()
107
+ m()
108
108
  ], o.prototype, "_disabledByParent");
109
109
  e([
110
110
  i({ type: Boolean, reflect: !0 })
@@ -123,18 +123,18 @@ e([
123
123
  ], o.prototype, "required");
124
124
  e([
125
125
  i({ type: String }),
126
- $(v)
126
+ $(b)
127
127
  ], o.prototype, "value");
128
128
  e([
129
129
  i({ type: String }),
130
- q(v, A, d.status)
130
+ q(b, A, c.status)
131
131
  ], o.prototype, "status");
132
132
  e([
133
133
  y('input[type="radio"]')
134
134
  ], o.prototype, "_radio");
135
- B(v, o);
135
+ B(b, o);
136
136
  export {
137
137
  o as PieRadio,
138
- d as defaultProps,
138
+ c as defaultProps,
139
139
  A as statusTypes
140
140
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@justeattakeaway/pie-radio",
3
3
  "description": "PIE Design System Radio built using Web Components",
4
- "version": "0.8.1",
4
+ "version": "0.9.0",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",
@@ -34,7 +34,7 @@
34
34
  "devDependencies": {
35
35
  "@custom-elements-manifest/analyzer": "0.9.0",
36
36
  "@justeattakeaway/pie-components-config": "0.18.0",
37
- "@justeattakeaway/pie-css": "0.14.1",
37
+ "@justeattakeaway/pie-css": "0.15.0",
38
38
  "cem-plugin-module-file-extensions": "0.0.5"
39
39
  },
40
40
  "dependencies": {
package/src/index.ts CHANGED
@@ -143,7 +143,7 @@ export class PieRadio extends FormControlMixin(RtlMixin(LitElement)) implements
143
143
 
144
144
  const classes = {
145
145
  'c-radio': true,
146
- 'c-radio--disabled': componentDisabled,
146
+ 'is-disabled': componentDisabled,
147
147
  [`c-radio--status-${status}`]: !componentDisabled,
148
148
  };
149
149
 
package/src/radio.scss CHANGED
@@ -4,16 +4,28 @@
4
4
  .c-radio-input {
5
5
  &:hover:not(:checked, :disabled) {
6
6
  --radio-bg-color: hsl(var(--dt-color-black-h), var(--dt-color-black-s), var(--dt-color-black-l), var(--dt-color-hover-01));
7
+
8
+ @supports (background-color: color-mix(in srgb, black, white)) {
9
+ --radio-bg-color: color-mix(in srgb, var(--dt-color-hover-01-bg) var(--dt-color-hover-01), transparent);
10
+ }
7
11
  }
8
12
 
9
13
  &:active:not(:checked, :disabled) {
10
14
  --radio-bg-color: hsl(var(--dt-color-black-h), var(--dt-color-black-s), var(--dt-color-black-l), var(--dt-color-active-01));
15
+
16
+ @supports (background-color: color-mix(in srgb, black, white)) {
17
+ --radio-bg-color: color-mix(in srgb, var(--dt-color-active-01-bg) var(--dt-color-active-01), transparent);
18
+ }
11
19
  }
12
20
 
13
21
  &:hover:checked:not(:disabled) {
14
22
  &:before {
15
23
  --radio-bg-color--checked: hsl(var(--#{$bg-color}-h), var(--#{$bg-color}-s), calc(var(--#{$bg-color}-l) - var(--dt-color-hover-01)));
16
24
  --radio-border-color: hsl(var(--#{$bg-color}-h), var(--#{$bg-color}-s), calc(var(--#{$bg-color}-l) - var(--dt-color-hover-01)));
25
+
26
+ @supports (background-color: color-mix(in srgb, black, white)) {
27
+ --radio-bg-color--checked: color-mix(in srgb, var(--dt-color-hover-01-bg) var(--dt-color-hover-01), var(#{$bg-color}));
28
+ }
17
29
  }
18
30
  }
19
31
 
@@ -21,6 +33,10 @@
21
33
  &:before {
22
34
  --radio-bg-color--checked: hsl(var(--#{$bg-color}-h), var(--#{$bg-color}-s), calc(var(--#{$bg-color}-l) - var(--dt-color-active-01)));
23
35
  --radio-border-color: hsl(var(--#{$bg-color}-h), var(--#{$bg-color}-s), calc(var(--#{$bg-color}-l) - var(--dt-color-active-01)));
36
+
37
+ @supports (background-color: color-mix(in srgb, black, white)) {
38
+ --radio-bg-color--checked: color-mix(in srgb, var(--dt-color-active-01-bg) var(--dt-color-active-01), var(#{$bg-color}));
39
+ }
24
40
  }
25
41
  }
26
42
  }
@@ -52,7 +68,7 @@
52
68
 
53
69
 
54
70
 
55
- &.c-radio--disabled {
71
+ &.is-disabled {
56
72
  --radio-cursor: not-allowed;
57
73
  }
58
74