@payfit/unity-components 2.19.2 → 2.20.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/esm/components/action-bar/ActionBar.d.ts +61 -120
- package/dist/esm/components/action-bar/ActionBar.js +48 -151
- package/dist/esm/components/action-bar/ActionBar.types.d.ts +116 -0
- package/dist/esm/components/action-bar/ActionBar.variants.d.ts +31 -0
- package/dist/esm/components/action-bar/ActionBar.variants.js +26 -0
- package/dist/esm/components/action-bar/hooks/use-action-bar-state.d.ts +19 -0
- package/dist/esm/components/action-bar/hooks/use-action-bar-state.js +22 -0
- package/dist/esm/components/action-bar/parts/ActionBarButton.d.ts +58 -0
- package/dist/esm/components/action-bar/parts/ActionBarButton.js +35 -0
- package/dist/esm/components/action-bar/parts/ActionBarIconButton.d.ts +61 -0
- package/dist/esm/components/action-bar/parts/ActionBarIconButton.js +41 -0
- package/dist/esm/components/action-bar/parts/ActionBarOverflowMenu.d.ts +10 -0
- package/dist/esm/components/action-bar/parts/ActionBarOverflowMenu.js +45 -0
- package/dist/esm/components/action-bar/parts/ActionBarPrefixArea.d.ts +11 -0
- package/dist/esm/components/action-bar/parts/ActionBarPrefixArea.js +35 -0
- package/dist/esm/components/action-bar/parts/ActionBarRoot.d.ts +23 -0
- package/dist/esm/components/action-bar/parts/ActionBarRoot.js +23 -13
- package/dist/esm/components/action-bar/utils/action-bar-helpers.d.ts +14 -0
- package/dist/esm/components/action-bar/utils/action-bar-helpers.js +29 -0
- package/dist/esm/components/data-table/parts/DataTableBulkActions.d.ts +16 -6
- package/dist/esm/components/data-table/parts/DataTableBulkActions.js +122 -37
- package/dist/esm/components/icon-button/IconButton.d.ts +4 -0
- package/dist/esm/components/icon-button/IconButton.js +40 -31
- package/dist/esm/components/menu/parts/RawMenuItem.d.ts +2 -1
- package/dist/esm/components/menu/parts/RawMenuItem.js +14 -12
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +545 -543
- package/i18n/en-GB.json +2 -0
- package/i18n/es-ES.json +2 -0
- package/i18n/fr-FR.json +2 -0
- package/package.json +8 -8
- package/dist/esm/components/action-bar/parts/ActionBarAction.d.ts +0 -44
- package/dist/esm/components/action-bar/parts/ActionBarAction.js +0 -45
|
@@ -1,65 +1,150 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { useRef as
|
|
3
|
-
import { useHotkeys as
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { jsx as o, jsxs as m, Fragment as A } from "react/jsx-runtime";
|
|
2
|
+
import { useRef as d, useState as S, useCallback as k } from "react";
|
|
3
|
+
import { useHotkeys as f } from "react-hotkeys-hook";
|
|
4
|
+
import { useIntl as v, FormattedMessage as c } from "react-intl";
|
|
5
|
+
import { ActionBar as I } from "../../action-bar/ActionBar.js";
|
|
6
|
+
import { ActionBarButton as P } from "../../action-bar/parts/ActionBarButton.js";
|
|
7
|
+
import { ActionBarIconButton as R } from "../../action-bar/parts/ActionBarIconButton.js";
|
|
8
|
+
import { ActionBarRoot as w } from "../../action-bar/parts/ActionBarRoot.js";
|
|
9
|
+
import { Button as x } from "../../button/Button.js";
|
|
10
|
+
function F({
|
|
11
|
+
selectionCount: t,
|
|
12
|
+
onClearSelection: a,
|
|
13
|
+
renderSelectionText: r,
|
|
14
|
+
hasKeyshortcuts: s,
|
|
15
|
+
keyShortcuts: n
|
|
10
16
|
}) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
17
|
+
return /* @__PURE__ */ m(A, { children: [
|
|
18
|
+
/* @__PURE__ */ m(
|
|
19
|
+
"div",
|
|
20
|
+
{
|
|
21
|
+
className: "uy:typography-body uy:whitespace-nowrap! uy:sr-only uy:md:not-sr-only",
|
|
22
|
+
role: "status",
|
|
23
|
+
"aria-live": "polite",
|
|
24
|
+
"aria-atomic": "true",
|
|
25
|
+
children: [
|
|
26
|
+
r ? r(t) : /* @__PURE__ */ o(
|
|
27
|
+
c,
|
|
28
|
+
{
|
|
29
|
+
id: "unity:component:action-bar:selection-count-text",
|
|
30
|
+
defaultMessage: "{selectionCount, plural, =0 {no items} one {item} other {items}} selected",
|
|
31
|
+
values: { selectionCount: t }
|
|
32
|
+
}
|
|
33
|
+
),
|
|
34
|
+
s && /* @__PURE__ */ o("span", { className: "uy:sr-only", children: /* @__PURE__ */ o(
|
|
35
|
+
c,
|
|
36
|
+
{
|
|
37
|
+
id: "unity:component:action-bar:key-shortcuts-text",
|
|
38
|
+
defaultMessage: "Use {keyShortcuts} to focus the action bar",
|
|
39
|
+
values: {
|
|
40
|
+
keyShortcuts: n
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
) })
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
),
|
|
47
|
+
/* @__PURE__ */ o(x, { color: "inverted", variant: "ghost", onPress: a, children: /* @__PURE__ */ o(
|
|
48
|
+
c,
|
|
49
|
+
{
|
|
50
|
+
id: "unity:component:action-bar:clear-selection-button",
|
|
51
|
+
defaultMessage: "Clear selection"
|
|
52
|
+
}
|
|
53
|
+
) })
|
|
54
|
+
] });
|
|
55
|
+
}
|
|
56
|
+
const C = (t) => t.type === "icon-button";
|
|
57
|
+
function M({
|
|
58
|
+
table: t,
|
|
59
|
+
actions: a,
|
|
60
|
+
renderSelectionText: r
|
|
61
|
+
}) {
|
|
62
|
+
const s = d(null), n = d(null), [g, i] = S(!1), p = v(), l = "f6";
|
|
63
|
+
f(
|
|
64
|
+
l,
|
|
14
65
|
() => {
|
|
15
|
-
if ((
|
|
16
|
-
const
|
|
66
|
+
if ((t.getIsAllPageRowsSelected() || t.getIsSomePageRowsSelected()) && s.current) {
|
|
67
|
+
const u = s.current.querySelectorAll(
|
|
17
68
|
'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
|
|
18
69
|
);
|
|
19
|
-
|
|
70
|
+
n.current = document.activeElement, u.length > 0 && (u[0].focus(), i(!0));
|
|
20
71
|
}
|
|
21
72
|
},
|
|
22
73
|
{
|
|
23
74
|
enableOnFormTags: !0
|
|
24
75
|
}
|
|
25
|
-
),
|
|
76
|
+
), f(
|
|
26
77
|
"esc",
|
|
27
78
|
() => {
|
|
28
|
-
|
|
79
|
+
g && n.current && (n.current.focus(), i(!1));
|
|
29
80
|
},
|
|
30
81
|
{
|
|
31
82
|
enableOnFormTags: !0
|
|
32
83
|
}
|
|
33
84
|
);
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
}, [
|
|
37
|
-
return
|
|
38
|
-
|
|
85
|
+
const b = t.getIsAllPageRowsSelected() || t.getIsSomePageRowsSelected(), y = t.getSelectedRowModel().rows.length, h = t.getPageCount() > 0, B = k(() => {
|
|
86
|
+
t.resetRowSelection();
|
|
87
|
+
}, [t]);
|
|
88
|
+
return /* @__PURE__ */ o(
|
|
89
|
+
w,
|
|
39
90
|
{
|
|
40
|
-
isVisible:
|
|
41
|
-
offsetBottom:
|
|
42
|
-
children: /* @__PURE__ */
|
|
43
|
-
|
|
91
|
+
isVisible: b,
|
|
92
|
+
offsetBottom: h ? "$600" : 0,
|
|
93
|
+
children: /* @__PURE__ */ o(
|
|
94
|
+
I,
|
|
44
95
|
{
|
|
45
|
-
ref:
|
|
46
|
-
actions:
|
|
47
|
-
|
|
48
|
-
|
|
96
|
+
ref: s,
|
|
97
|
+
actions: a,
|
|
98
|
+
prefixContent: /* @__PURE__ */ o(
|
|
99
|
+
F,
|
|
100
|
+
{
|
|
101
|
+
selectionCount: y,
|
|
102
|
+
onClearSelection: B,
|
|
103
|
+
renderSelectionText: r,
|
|
104
|
+
hasKeyshortcuts: !0,
|
|
105
|
+
keyShortcuts: l
|
|
106
|
+
}
|
|
107
|
+
),
|
|
49
108
|
onFocus: () => {
|
|
50
|
-
|
|
109
|
+
i(!0);
|
|
51
110
|
},
|
|
52
111
|
onBlur: () => {
|
|
53
|
-
|
|
112
|
+
i(!1);
|
|
54
113
|
},
|
|
55
|
-
"aria-keyshortcuts":
|
|
56
|
-
|
|
114
|
+
"aria-keyshortcuts": l,
|
|
115
|
+
"aria-label": p.formatMessage({
|
|
116
|
+
id: "unity:component:action-bar:toolbar-label",
|
|
117
|
+
defaultMessage: "Bulk actions toolbar"
|
|
118
|
+
}),
|
|
119
|
+
children: (e) => C(e) ? /* @__PURE__ */ o(
|
|
120
|
+
R,
|
|
121
|
+
{
|
|
122
|
+
icon: e.meta.icon,
|
|
123
|
+
label: e.label,
|
|
124
|
+
variant: e.variant,
|
|
125
|
+
onPress: e.meta.onPress,
|
|
126
|
+
isDisabled: e.meta.isDisabled,
|
|
127
|
+
isLoading: e.meta.isLoading
|
|
128
|
+
},
|
|
129
|
+
e.id
|
|
130
|
+
) : /* @__PURE__ */ o(
|
|
131
|
+
P,
|
|
132
|
+
{
|
|
133
|
+
variant: e.variant,
|
|
134
|
+
onPress: e.meta?.onPress,
|
|
135
|
+
prefixIcon: e.meta?.prefixIcon,
|
|
136
|
+
isDisabled: e.meta?.isDisabled,
|
|
137
|
+
isLoading: e.meta?.isLoading,
|
|
138
|
+
children: e.label
|
|
139
|
+
},
|
|
140
|
+
e.id
|
|
141
|
+
)
|
|
57
142
|
}
|
|
58
143
|
)
|
|
59
144
|
}
|
|
60
|
-
)
|
|
145
|
+
);
|
|
61
146
|
}
|
|
62
|
-
|
|
147
|
+
M.displayName = "DataTableBulkActions";
|
|
63
148
|
export {
|
|
64
|
-
|
|
149
|
+
M as DataTableBulkActions
|
|
65
150
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { UnityIcon } from '@payfit/unity-icons';
|
|
2
2
|
import { AriaRole, ButtonHTMLAttributes } from 'react';
|
|
3
|
+
import { ButtonProps as AriaButtonProps } from 'react-aria-components';
|
|
3
4
|
import { IconButtonGhost, IconButtonPrimary, IconButtonSecondary } from './IconButton.variants.js';
|
|
4
5
|
interface IconButtonBaseProps {
|
|
5
6
|
/** Label used to describe the action of the button */
|
|
@@ -8,6 +9,8 @@ interface IconButtonBaseProps {
|
|
|
8
9
|
icon: UnityIcon;
|
|
9
10
|
/** The function to trigger when the button is clicked */
|
|
10
11
|
onClick?: () => void;
|
|
12
|
+
/** The function to trigger when the button is clicked or pressed in touch devices */
|
|
13
|
+
onPress?: AriaButtonProps['onPress'];
|
|
11
14
|
/** Override the icon role */
|
|
12
15
|
iconRole?: AriaRole;
|
|
13
16
|
/** className to add to the button */
|
|
@@ -22,5 +25,6 @@ interface IconButtonVariantsSecondaryProps extends IconButtonBaseProps, Omit<Ico
|
|
|
22
25
|
}
|
|
23
26
|
interface IconButtonVariantsGhostProps extends IconButtonBaseProps, Omit<IconButtonGhost, 'variant' | 'color'>, Required<Pick<IconButtonGhost, 'variant' | 'color'>> {
|
|
24
27
|
}
|
|
28
|
+
export type IconButtonProps = IconButtonVariantsPrimaryProps | IconButtonVariantsSecondaryProps | IconButtonVariantsGhostProps;
|
|
25
29
|
export declare const IconButton: import('react').ForwardRefExoticComponent<(IconButtonVariantsPrimaryProps | IconButtonVariantsSecondaryProps | IconButtonVariantsGhostProps) & import('react').RefAttributes<HTMLButtonElement>>;
|
|
26
30
|
export {};
|
|
@@ -1,50 +1,59 @@
|
|
|
1
|
-
import { jsx as e, jsxs as
|
|
2
|
-
import { forwardRef as
|
|
3
|
-
import { Button as
|
|
4
|
-
import
|
|
5
|
-
import { Icon as
|
|
6
|
-
import { Spinner as
|
|
7
|
-
import { Tooltip as
|
|
8
|
-
import { iconButtonPrimary as
|
|
1
|
+
import { jsx as e, jsxs as y } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as b } from "react";
|
|
3
|
+
import { Button as B } from "react-aria-components";
|
|
4
|
+
import h from "../../hooks/use-id.js";
|
|
5
|
+
import { Icon as I } from "../icon/Icon.js";
|
|
6
|
+
import { Spinner as N } from "../spinner/Spinner.js";
|
|
7
|
+
import { Tooltip as x } from "../tooltip/Tooltip.js";
|
|
8
|
+
import { iconButtonPrimary as P, iconButtonSecondary as j, iconButtonGhost as w } from "./IconButton.variants.js";
|
|
9
9
|
const C = ({
|
|
10
10
|
variant: o,
|
|
11
11
|
color: r,
|
|
12
|
-
isLoading:
|
|
13
|
-
isDisabled:
|
|
14
|
-
}) => o === "primary" ?
|
|
12
|
+
isLoading: n,
|
|
13
|
+
isDisabled: t
|
|
14
|
+
}) => o === "primary" ? P({
|
|
15
15
|
variant: o,
|
|
16
16
|
color: r,
|
|
17
|
-
isDisabled:
|
|
18
|
-
isLoading:
|
|
17
|
+
isDisabled: t,
|
|
18
|
+
isLoading: n
|
|
19
19
|
}) : o === "secondary" ? j({
|
|
20
20
|
variant: o,
|
|
21
21
|
color: r,
|
|
22
|
-
isDisabled:
|
|
23
|
-
isLoading:
|
|
22
|
+
isDisabled: t,
|
|
23
|
+
isLoading: n
|
|
24
24
|
}) : w({
|
|
25
25
|
variant: o,
|
|
26
26
|
color: r,
|
|
27
|
-
isDisabled:
|
|
28
|
-
isLoading:
|
|
29
|
-
}),
|
|
27
|
+
isDisabled: t,
|
|
28
|
+
isLoading: n
|
|
29
|
+
}), R = b(
|
|
30
30
|
(o, r) => {
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
const n = h(), { button: t, icon: s } = C(o), {
|
|
32
|
+
onClick: a,
|
|
33
|
+
onPress: m,
|
|
34
|
+
icon: d,
|
|
35
|
+
isLoading: l,
|
|
36
|
+
label: i,
|
|
37
|
+
isDisabled: u,
|
|
38
|
+
iconRole: f,
|
|
39
|
+
...p
|
|
40
|
+
} = o, c = `icon-button-label-${n}`;
|
|
41
|
+
return /* @__PURE__ */ e(x, { title: i, children: /* @__PURE__ */ y(
|
|
42
|
+
B,
|
|
34
43
|
{
|
|
35
44
|
ref: r,
|
|
36
45
|
"data-dd-privacy": "allow",
|
|
37
|
-
...
|
|
38
|
-
className:
|
|
39
|
-
onPress: a,
|
|
40
|
-
isDisabled:
|
|
46
|
+
...p,
|
|
47
|
+
className: t({ class: o.className }),
|
|
48
|
+
onPress: m ?? a,
|
|
49
|
+
isDisabled: u || l,
|
|
41
50
|
"aria-label": i,
|
|
42
51
|
children: [
|
|
43
|
-
l ? /* @__PURE__ */ e(
|
|
44
|
-
|
|
52
|
+
l ? /* @__PURE__ */ e(N, { size: "small", label: "Loading", color: "inherit" }) : /* @__PURE__ */ e(
|
|
53
|
+
I,
|
|
45
54
|
{
|
|
46
|
-
role:
|
|
47
|
-
src:
|
|
55
|
+
role: f,
|
|
56
|
+
src: d,
|
|
48
57
|
className: s(),
|
|
49
58
|
"aria-labelledby": c,
|
|
50
59
|
color: "inherit"
|
|
@@ -56,7 +65,7 @@ const C = ({
|
|
|
56
65
|
) });
|
|
57
66
|
}
|
|
58
67
|
);
|
|
59
|
-
|
|
68
|
+
R.displayName = "IconButton";
|
|
60
69
|
export {
|
|
61
|
-
|
|
70
|
+
R as IconButton
|
|
62
71
|
};
|
|
@@ -5,10 +5,11 @@ export interface MenuItemProps extends DataAttributes {
|
|
|
5
5
|
children?: MenuItemAriaComponentProps['children'];
|
|
6
6
|
href?: MenuItemAriaComponentProps['href'];
|
|
7
7
|
onAction?: MenuItemAriaComponentProps['onAction'];
|
|
8
|
+
isDisabled?: MenuItemAriaComponentProps['isDisabled'];
|
|
8
9
|
prefix?: ReactNode;
|
|
9
10
|
className?: string;
|
|
10
11
|
}
|
|
11
|
-
export declare function RawMenuItem({ prefix, children, href, onAction, className, ...dataAttributes }: PropsWithChildren<MenuItemProps>): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export declare function RawMenuItem({ prefix, children, href, onAction, className, isDisabled, ...dataAttributes }: PropsWithChildren<MenuItemProps>): import("react/jsx-runtime").JSX.Element;
|
|
12
13
|
export declare namespace RawMenuItem {
|
|
13
14
|
var displayName: string;
|
|
14
15
|
}
|
|
@@ -1,32 +1,34 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { uyMerge as
|
|
3
|
-
import { MenuItem as
|
|
4
|
-
function
|
|
1
|
+
import { jsxs as s, jsx as y } from "react/jsx-runtime";
|
|
2
|
+
import { uyMerge as i } from "@payfit/unity-themes";
|
|
3
|
+
import { MenuItem as l } from "react-aria-components";
|
|
4
|
+
function c({
|
|
5
5
|
prefix: e,
|
|
6
6
|
children: u,
|
|
7
7
|
href: t,
|
|
8
8
|
onAction: r,
|
|
9
9
|
className: a,
|
|
10
|
-
|
|
10
|
+
isDisabled: n,
|
|
11
|
+
...o
|
|
11
12
|
}) {
|
|
12
|
-
return /* @__PURE__ */
|
|
13
|
-
|
|
13
|
+
return /* @__PURE__ */ s(
|
|
14
|
+
l,
|
|
14
15
|
{
|
|
15
16
|
href: t,
|
|
17
|
+
isDisabled: n,
|
|
16
18
|
onAction: r,
|
|
17
|
-
className:
|
|
19
|
+
className: i(
|
|
18
20
|
"uy:cursor-pointer uy:flex uy:p-100 uy:items-start uy:gap-100 uy:rounded-25 uy:typography-body uy:text-content-neutral uy:hover:bg-surface-neutral-hover uy:data-[pressed]:bg-surface-neutral-pressed uy:focus-visible:outline-utility-focus-ring uy:active:bg-surface-neutral-active",
|
|
19
21
|
a
|
|
20
22
|
),
|
|
21
|
-
...
|
|
23
|
+
...o,
|
|
22
24
|
children: [
|
|
23
|
-
/* @__PURE__ */
|
|
25
|
+
/* @__PURE__ */ y("div", { className: "uy:text-content-neutral-low", children: e || null }),
|
|
24
26
|
u
|
|
25
27
|
]
|
|
26
28
|
}
|
|
27
29
|
);
|
|
28
30
|
}
|
|
29
|
-
|
|
31
|
+
c.displayName = "RawMenuItem";
|
|
30
32
|
export {
|
|
31
|
-
|
|
33
|
+
c as RawMenuItem
|
|
32
34
|
};
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './components/actionable/Actionable.js';
|
|
2
2
|
export * from './components/action-bar/ActionBar.js';
|
|
3
|
-
export * from './components/action-bar/parts/
|
|
3
|
+
export * from './components/action-bar/parts/ActionBarButton.js';
|
|
4
|
+
export * from './components/action-bar/parts/ActionBarIconButton.js';
|
|
4
5
|
export * from './components/action-bar/parts/ActionBarRoot.js';
|
|
5
6
|
export * from './components/alert/Alert.js';
|
|
6
7
|
export * from './components/alert/parts/AlertActions.js';
|