@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 +31 -31
- package/package.json +1 -1
- package/src/index.ts +2 -2
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
|
|
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,
|
|
16
|
-
for (var
|
|
17
|
-
(v =
|
|
18
|
-
return t &&
|
|
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
|
|
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:
|
|
32
|
-
let
|
|
33
|
-
return
|
|
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="${
|
|
36
|
-
variant="${
|
|
35
|
+
size="${r}"
|
|
36
|
+
variant="${a}"
|
|
37
37
|
</pie-spinner>`;
|
|
38
38
|
}
|
|
39
39
|
render() {
|
|
40
40
|
const {
|
|
41
|
-
disabled:
|
|
41
|
+
disabled: o,
|
|
42
42
|
size: i,
|
|
43
43
|
variant: t,
|
|
44
|
-
isLoading:
|
|
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="${
|
|
52
|
-
?isLoading="${
|
|
53
|
-
${
|
|
51
|
+
?disabled="${o}"
|
|
52
|
+
?isLoading="${r}">
|
|
53
|
+
${r ? this.renderSpinner() : d`<slot></slot>`}
|
|
54
54
|
</button>`;
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
e.styles = h(g);
|
|
58
|
+
c([
|
|
59
|
+
n(),
|
|
60
60
|
b(s, p, "medium")
|
|
61
|
-
],
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
], e.prototype, "size", 2);
|
|
62
|
+
c([
|
|
63
|
+
n(),
|
|
64
64
|
b(s, u, "primary")
|
|
65
|
-
],
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
],
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
],
|
|
72
|
-
f(s,
|
|
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
|
-
|
|
74
|
+
e as PieIconButton,
|
|
75
75
|
p as sizes,
|
|
76
76
|
u as variants
|
|
77
77
|
};
|
package/package.json
CHANGED
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
|