@epam/ai-dial-ui-kit 0.16.0-dev.68 → 0.16.0-dev.69
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/CHANGELOG.md +5 -0
- package/dist/{DateCellRenderer-DMq0adkA.cjs → DateCellRenderer-VFKHZI-J.cjs} +23 -23
- package/dist/components/New/Grid/Grid.js +201 -182
- package/dist/components/New/Grid/components/GridEmptyState.js +13 -0
- package/dist/components/New/Select/Select.js +112 -109
- package/dist/components-manifest.json +50 -11
- package/dist/dial-ui-kit.cjs +3 -3
- package/dist/grid.cjs +1 -1
- package/dist/migration-guides/0.16.0/grid-empty-state-pattern.md +100 -0
- package/dist/migration-guides/README.md +1 -0
- package/dist/src/components/New/Grid/Grid.d.ts +42 -7
- package/dist/src/components/New/Grid/components/GridEmptyState.d.ts +21 -0
- package/dist/src/components/New/NoDataContent/NoDataContent.d.ts +8 -0
- package/dist/src/components/New/Select/Select.d.ts +6 -0
- package/dist/src/components/New/constants/icon.d.ts +2 -2
- package/package.json +1 -1
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import { jsx as l, jsxs as N, Fragment as
|
|
2
|
-
import { IconChevronDown as
|
|
3
|
-
import { useId as
|
|
4
|
-
import { Checkbox as
|
|
5
|
-
import { Dropdown as
|
|
6
|
-
import { EllipsisTooltip as
|
|
7
|
-
import { InteractiveTooltip as
|
|
8
|
-
import { ErrorText as
|
|
9
|
-
import { GhostIconButton as
|
|
1
|
+
import { jsx as l, jsxs as N, Fragment as Ge } from "react/jsx-runtime";
|
|
2
|
+
import { IconChevronDown as He } from "@tabler/icons-react";
|
|
3
|
+
import { useId as Qe, useState as U, useCallback as u, useMemo as h, useEffect as We, useImperativeHandle as Ze, Fragment as Je } from "react";
|
|
4
|
+
import { Checkbox as Re } from "../Checkbox/Checkbox.js";
|
|
5
|
+
import { Dropdown as Xe } from "../Dropdown/Dropdown.js";
|
|
6
|
+
import { EllipsisTooltip as Ye } from "../EllipsisTooltip/EllipsisTooltip.js";
|
|
7
|
+
import { InteractiveTooltip as Pe } from "../InteractiveTooltip/InteractiveTooltip.js";
|
|
8
|
+
import { ErrorText as el, CaptionText as ll } from "../CaptionText/CaptionText.js";
|
|
9
|
+
import { GhostIconButton as tl } from "../IconButton/IconButtonWrappers.js";
|
|
10
10
|
import { Input as se } from "../Input/Input.js";
|
|
11
|
-
import { Label as
|
|
12
|
-
import { NoDataContent as
|
|
13
|
-
import { DIAL_KIT_ICON_STROKE as
|
|
11
|
+
import { Label as nl } from "../Label/Label.js";
|
|
12
|
+
import { NoDataContent as rl } from "../NoDataContent/NoDataContent.js";
|
|
13
|
+
import { DIAL_KIT_ICON_STROKE as il } from "../constants/icon.js";
|
|
14
14
|
import { DIAL_ICON_SIZE as ce } from "../../../constants/icon.js";
|
|
15
15
|
import { MenuItem as de } from "../MenuItem/MenuItem.js";
|
|
16
16
|
import { MenuItemMark as V } from "../../../types/menu-item.js";
|
|
17
17
|
import { ElementSize as D } from "../../../types/size.js";
|
|
18
|
-
import { useIsMobileScreen as
|
|
18
|
+
import { useIsMobileScreen as al } from "../../../hooks/use-is-mobile-screen.js";
|
|
19
19
|
import { resolveAccessibleName as fe } from "../../../utils/accessible-name.js";
|
|
20
20
|
import { mergeClasses as p } from "../../../utils/merge-classes.js";
|
|
21
|
-
import { CollapsedSelectTags as
|
|
22
|
-
import { MultiSelectTags as
|
|
23
|
-
import { SelectSubMenuItem as
|
|
24
|
-
import { selectFieldIconClassName as
|
|
25
|
-
import { DIAL_KIT_CLASS as
|
|
26
|
-
const
|
|
21
|
+
import { CollapsedSelectTags as ol } from "./CollapsedSelectTags.js";
|
|
22
|
+
import { MultiSelectTags as sl } from "./MultiSelectTags.js";
|
|
23
|
+
import { SelectSubMenuItem as cl } from "./SelectSubMenuItem.js";
|
|
24
|
+
import { selectFieldIconClassName as dl, selectListWidthClassName as fl, selectOverlayBaseClassName as ml, selectSearchThreshold as ul, selectSearchIcon as hl, selectCloseIcon as pl, selectOptionBaseClassName as vl, selectOptionsScrollClassName as bl } from "./constants.js";
|
|
25
|
+
import { DIAL_KIT_CLASS as Cl } from "../../../constants/public-class-names.js";
|
|
26
|
+
const Gl = ({
|
|
27
27
|
options: i,
|
|
28
28
|
multiple: n = !1,
|
|
29
29
|
id: me,
|
|
@@ -49,96 +49,98 @@ const Vl = ({
|
|
|
49
49
|
emptyStateTitle: Ie = "No options available",
|
|
50
50
|
emptyStateDescription: Ne,
|
|
51
51
|
emptyStateIcon: Se,
|
|
52
|
+
filteredEmptyStateTitle: xe,
|
|
53
|
+
filteredEmptyStateDescription: we,
|
|
52
54
|
disabled: b = !1,
|
|
53
|
-
className:
|
|
54
|
-
fieldClassName:
|
|
55
|
-
listClassName:
|
|
55
|
+
className: ye,
|
|
56
|
+
fieldClassName: Te,
|
|
57
|
+
listClassName: Ae,
|
|
56
58
|
closable: L = !1,
|
|
57
59
|
header: x,
|
|
58
60
|
footer: w,
|
|
59
61
|
onClose: Y,
|
|
60
62
|
onChange: P,
|
|
61
|
-
dismissRef:
|
|
63
|
+
dismissRef: ke,
|
|
62
64
|
onFooterClick: ee,
|
|
63
65
|
open: le,
|
|
64
66
|
onOpenChange: te,
|
|
65
67
|
onSearchQueryChange: ne,
|
|
66
68
|
customMultiSelectTagsRenderer: $
|
|
67
69
|
}) => {
|
|
68
|
-
const
|
|
70
|
+
const Oe = Qe(), d = me || Oe, re = `list-${d}`, ie = v ? `${d}-error` : void 0, ae = !v && Q ? `${d}-caption` : void 0, oe = q === D.Small, [De, Fe] = U(!1), M = le !== void 0, m = M ? !!le : De, f = u(
|
|
69
71
|
(e) => {
|
|
70
|
-
M ||
|
|
72
|
+
M || Fe(e), te?.(e);
|
|
71
73
|
},
|
|
72
74
|
[M, te]
|
|
73
|
-
), [
|
|
75
|
+
), [s, Le] = U(""), B = u(
|
|
74
76
|
(e) => {
|
|
75
|
-
e !==
|
|
77
|
+
e !== s && (Le(e || ""), ne?.(e || ""));
|
|
76
78
|
},
|
|
77
|
-
[ne,
|
|
78
|
-
), E = F !== void 0, [
|
|
79
|
-
const e =
|
|
79
|
+
[ne, s]
|
|
80
|
+
), E = F !== void 0, [$e, Me] = U(ue), C = E ? F : $e, r = h(() => n ? Array.isArray(C) ? C : [] : typeof C == "string" ? [C] : [], [C, n]), y = h(() => {
|
|
81
|
+
const e = s.trim().toLowerCase();
|
|
80
82
|
return e ? i.filter((t) => t.label.toLowerCase().includes(e)) : i;
|
|
81
|
-
}, [i,
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}, [
|
|
85
|
-
const
|
|
83
|
+
}, [i, s]);
|
|
84
|
+
We(() => {
|
|
85
|
+
m || B("");
|
|
86
|
+
}, [m, B]);
|
|
87
|
+
const c = u(
|
|
86
88
|
(e) => {
|
|
87
|
-
E ||
|
|
89
|
+
E || Me(e), P?.(e);
|
|
88
90
|
},
|
|
89
91
|
[E, P]
|
|
90
|
-
), _ =
|
|
92
|
+
), _ = u(
|
|
91
93
|
(e) => {
|
|
92
94
|
if (n) {
|
|
93
95
|
const t = new Set(r);
|
|
94
|
-
t.has(e) ? t.delete(e) : t.add(e),
|
|
96
|
+
t.has(e) ? t.delete(e) : t.add(e), c(Array.from(t));
|
|
95
97
|
return;
|
|
96
98
|
}
|
|
97
|
-
|
|
99
|
+
c(e), f(!1);
|
|
98
100
|
},
|
|
99
|
-
[n,
|
|
100
|
-
), T =
|
|
101
|
+
[n, c, f, r]
|
|
102
|
+
), T = u(
|
|
101
103
|
(e, t) => {
|
|
102
104
|
if (e.stopPropagation(), !n) {
|
|
103
|
-
|
|
105
|
+
c("");
|
|
104
106
|
return;
|
|
105
107
|
}
|
|
106
|
-
const O = r.filter((
|
|
107
|
-
|
|
108
|
+
const O = r.filter((qe) => qe !== t);
|
|
109
|
+
c(O);
|
|
108
110
|
},
|
|
109
|
-
[n, r,
|
|
110
|
-
), o =
|
|
111
|
+
[n, r, c]
|
|
112
|
+
), o = h(
|
|
111
113
|
() => y.filter((e) => !e.disabled),
|
|
112
114
|
[y]
|
|
113
|
-
), j =
|
|
115
|
+
), j = h(
|
|
114
116
|
() => o.filter((e) => r.includes(e.value)).length,
|
|
115
117
|
[o, r]
|
|
116
|
-
), { allSelectedInFiltered: K, someSelectedInFiltered:
|
|
118
|
+
), { allSelectedInFiltered: K, someSelectedInFiltered: Be } = h(() => {
|
|
117
119
|
const e = o.length > 0 && j === o.length;
|
|
118
120
|
return {
|
|
119
121
|
allSelectedInFiltered: e,
|
|
120
122
|
someSelectedInFiltered: j > 0 && !e
|
|
121
123
|
};
|
|
122
|
-
}, [o, j]),
|
|
124
|
+
}, [o, j]), Ee = u(() => {
|
|
123
125
|
if (!(!n || o.length === 0))
|
|
124
126
|
if (K) {
|
|
125
127
|
const e = new Set(o.map((t) => t.value));
|
|
126
|
-
|
|
128
|
+
c(r.filter((t) => !e.has(t)));
|
|
127
129
|
} else {
|
|
128
130
|
const e = new Set(r);
|
|
129
|
-
o.forEach((t) => e.add(t.value)),
|
|
131
|
+
o.forEach((t) => e.add(t.value)), c(Array.from(e));
|
|
130
132
|
}
|
|
131
133
|
}, [
|
|
132
134
|
K,
|
|
133
135
|
n,
|
|
134
136
|
o,
|
|
135
137
|
r,
|
|
136
|
-
|
|
137
|
-
]), A = r.length > 0, k = !n && A ? r[0] : void 0, a =
|
|
138
|
+
c
|
|
139
|
+
]), A = r.length > 0, k = !n && A ? r[0] : void 0, a = h(
|
|
138
140
|
() => k ? i.find((e) => e.value === k) ?? i.flatMap((e) => e.children ?? []).find((e) => e.value === k) : void 0,
|
|
139
141
|
[i, k]
|
|
140
|
-
), g = a ? G ? `${G} ${a.label}` : a.label : void 0,
|
|
141
|
-
|
|
142
|
+
), g = a ? G ? `${G} ${a.label}` : a.label : void 0, _e = al(), z = n && ge && !$ && !_e, I = h(() => n ? A ? z ? /* @__PURE__ */ l(
|
|
143
|
+
ol,
|
|
142
144
|
{
|
|
143
145
|
options: i,
|
|
144
146
|
selectedValues: r,
|
|
@@ -149,7 +151,7 @@ const Vl = ({
|
|
|
149
151
|
r,
|
|
150
152
|
T
|
|
151
153
|
) ?? /* @__PURE__ */ l(
|
|
152
|
-
|
|
154
|
+
sl,
|
|
153
155
|
{
|
|
154
156
|
options: i,
|
|
155
157
|
selectedValues: r,
|
|
@@ -157,7 +159,7 @@ const Vl = ({
|
|
|
157
159
|
}
|
|
158
160
|
) }) : null : !a || !a.labelNode && !a.description ? null : /* @__PURE__ */ N("span", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
|
|
159
161
|
/* @__PURE__ */ l(
|
|
160
|
-
|
|
162
|
+
Ye,
|
|
161
163
|
{
|
|
162
164
|
text: a.labelNode ?? g
|
|
163
165
|
}
|
|
@@ -173,78 +175,79 @@ const Vl = ({
|
|
|
173
175
|
g,
|
|
174
176
|
r,
|
|
175
177
|
a
|
|
176
|
-
]),
|
|
177
|
-
fe(W,
|
|
178
|
+
]), je = n || I ? "" : g || (H && F ? H : ""), Ke = typeof S?.label == "string" ? S.label : void 0, ze = I ? [
|
|
179
|
+
fe(W, Ke),
|
|
178
180
|
n ? r.map((e) => i.find((t) => t.value === e)?.label ?? e).join(", ") : g
|
|
179
181
|
].filter(Boolean).join(", ") || void 0 : fe(W);
|
|
180
|
-
|
|
182
|
+
Ze(ke, () => ({
|
|
181
183
|
dismiss: () => {
|
|
182
|
-
|
|
184
|
+
f(!1);
|
|
183
185
|
}
|
|
184
186
|
}));
|
|
185
|
-
const
|
|
187
|
+
const Ue = u(
|
|
186
188
|
(e) => {
|
|
187
|
-
b || (e.key === "ArrowDown" || e.key === "ArrowUp") && (e.preventDefault(),
|
|
189
|
+
b || (e.key === "ArrowDown" || e.key === "ArrowUp") && (e.preventDefault(), m || f(!0));
|
|
188
190
|
},
|
|
189
|
-
[b,
|
|
190
|
-
),
|
|
191
|
+
[b, m, f]
|
|
192
|
+
), Ve = () => /* @__PURE__ */ N(
|
|
191
193
|
"div",
|
|
192
194
|
{
|
|
193
195
|
id: re,
|
|
194
196
|
role: "listbox",
|
|
195
197
|
"aria-multiselectable": n || void 0,
|
|
196
|
-
className:
|
|
198
|
+
className: ml,
|
|
197
199
|
children: [
|
|
198
|
-
x && /* @__PURE__ */ l(
|
|
199
|
-
(Z || L) && (i.length >
|
|
200
|
+
x && /* @__PURE__ */ l(Ge, { children: typeof x == "function" ? x() : x }),
|
|
201
|
+
(Z || L) && (i.length > ul || !!s) && /* @__PURE__ */ N("div", { className: "flex items-center gap-2 px-2 pt-2", children: [
|
|
200
202
|
Z && /* @__PURE__ */ l(
|
|
201
203
|
se,
|
|
202
204
|
{
|
|
203
|
-
id: `search-${
|
|
205
|
+
id: `search-${d}`,
|
|
204
206
|
size: ve,
|
|
205
207
|
placeholder: J,
|
|
206
208
|
"aria-label": J || "Search options",
|
|
207
209
|
onChange: (e) => B(e),
|
|
208
|
-
value:
|
|
209
|
-
iconBefore:
|
|
210
|
+
value: s,
|
|
211
|
+
iconBefore: hl,
|
|
210
212
|
containerClassName: "w-full"
|
|
211
213
|
}
|
|
212
214
|
),
|
|
213
215
|
L && /* @__PURE__ */ l(
|
|
214
|
-
|
|
216
|
+
tl,
|
|
215
217
|
{
|
|
216
218
|
"aria-label": "Close select",
|
|
217
219
|
className: "shrink-0",
|
|
218
220
|
size: D.Small,
|
|
219
|
-
icon:
|
|
221
|
+
icon: pl,
|
|
220
222
|
onClick: (e) => {
|
|
221
|
-
Y?.(e),
|
|
223
|
+
Y?.(e), f(!1);
|
|
222
224
|
}
|
|
223
225
|
}
|
|
224
226
|
)
|
|
225
227
|
] }),
|
|
226
|
-
n && be && o.length > 0 && /* @__PURE__ */ l("div", { className: p(
|
|
227
|
-
|
|
228
|
+
n && be && o.length > 0 && /* @__PURE__ */ l("div", { className: p(vl, "mt-2"), children: /* @__PURE__ */ l(
|
|
229
|
+
Re,
|
|
228
230
|
{
|
|
229
|
-
id: `${
|
|
231
|
+
id: `${d}-selectAll`,
|
|
230
232
|
labelProps: { label: Ce },
|
|
231
233
|
isSelected: K,
|
|
232
|
-
isIndeterminate:
|
|
233
|
-
onChange:
|
|
234
|
+
isIndeterminate: Be,
|
|
235
|
+
onChange: Ee
|
|
234
236
|
}
|
|
235
237
|
) }),
|
|
236
|
-
/* @__PURE__ */ l("div", { role: "none", className:
|
|
237
|
-
|
|
238
|
+
/* @__PURE__ */ l("div", { role: "none", className: bl, children: y.length === 0 ? /* @__PURE__ */ l("div", { className: "px-2 py-3", children: /* @__PURE__ */ l(
|
|
239
|
+
rl,
|
|
238
240
|
{
|
|
241
|
+
live: !!s,
|
|
239
242
|
icon: Se,
|
|
240
|
-
title: Ie,
|
|
241
|
-
description: Ne
|
|
243
|
+
title: s && xe || Ie,
|
|
244
|
+
description: s && we || Ne
|
|
242
245
|
}
|
|
243
246
|
) }) : y.map((e) => {
|
|
244
247
|
const t = r.includes(e.value);
|
|
245
248
|
if (e.children?.length)
|
|
246
249
|
return /* @__PURE__ */ l(
|
|
247
|
-
|
|
250
|
+
cl,
|
|
248
251
|
{
|
|
249
252
|
opt: e,
|
|
250
253
|
selectedValues: r,
|
|
@@ -264,7 +267,7 @@ const Vl = ({
|
|
|
264
267
|
/* @__PURE__ */ l(
|
|
265
268
|
de,
|
|
266
269
|
{
|
|
267
|
-
id: `${
|
|
270
|
+
id: `${d}-${e.value}`,
|
|
268
271
|
role: "option",
|
|
269
272
|
"aria-selected": t,
|
|
270
273
|
"aria-disabled": !!e.disabled,
|
|
@@ -295,8 +298,8 @@ const Vl = ({
|
|
|
295
298
|
onClick: () => !e.disabled && _(e.value)
|
|
296
299
|
}
|
|
297
300
|
);
|
|
298
|
-
return /* @__PURE__ */ l(
|
|
299
|
-
|
|
301
|
+
return /* @__PURE__ */ l(Je, { children: e.interactiveTooltip ? /* @__PURE__ */ l(
|
|
302
|
+
Pe,
|
|
300
303
|
{
|
|
301
304
|
asChild: !0,
|
|
302
305
|
placement: e.interactiveTooltip.placement,
|
|
@@ -310,7 +313,7 @@ const Vl = ({
|
|
|
310
313
|
"div",
|
|
311
314
|
{
|
|
312
315
|
onClick: (e) => {
|
|
313
|
-
ee?.(e), ee &&
|
|
316
|
+
ee?.(e), ee && f(!1);
|
|
314
317
|
},
|
|
315
318
|
children: typeof w == "function" ? w() : w
|
|
316
319
|
}
|
|
@@ -323,54 +326,54 @@ const Vl = ({
|
|
|
323
326
|
{
|
|
324
327
|
className: p(
|
|
325
328
|
"flex w-full flex-col gap-2",
|
|
326
|
-
|
|
327
|
-
|
|
329
|
+
ye,
|
|
330
|
+
Cl.select
|
|
328
331
|
),
|
|
329
332
|
children: [
|
|
330
|
-
S && /* @__PURE__ */ l(
|
|
333
|
+
S && /* @__PURE__ */ l(nl, { ...S, htmlFor: d }),
|
|
331
334
|
/* @__PURE__ */ N("div", { className: "flex flex-col gap-1", children: [
|
|
332
335
|
/* @__PURE__ */ l(
|
|
333
|
-
|
|
336
|
+
Xe,
|
|
334
337
|
{
|
|
335
|
-
open:
|
|
336
|
-
onOpenChange:
|
|
338
|
+
open: m,
|
|
339
|
+
onOpenChange: f,
|
|
337
340
|
disabled: b,
|
|
338
341
|
closable: L,
|
|
339
342
|
onClose: Y,
|
|
340
343
|
placement: "bottom-start",
|
|
341
344
|
allowedPlacements: ["bottom-start", "top-start"],
|
|
342
|
-
listClassName: p(
|
|
345
|
+
listClassName: p(fl, Ae),
|
|
343
346
|
className: "w-full",
|
|
344
|
-
renderOverlay:
|
|
347
|
+
renderOverlay: Ve,
|
|
345
348
|
children: /* @__PURE__ */ l(
|
|
346
349
|
se,
|
|
347
350
|
{
|
|
348
|
-
id:
|
|
351
|
+
id: d,
|
|
349
352
|
size: q,
|
|
350
353
|
disabled: b,
|
|
351
354
|
invalid: R,
|
|
352
|
-
value:
|
|
355
|
+
value: je,
|
|
353
356
|
placeholder: I ? void 0 : he,
|
|
354
357
|
readOnly: !0,
|
|
355
358
|
iconBefore: n ? void 0 : a?.icon,
|
|
356
359
|
iconAfter: /* @__PURE__ */ l(
|
|
357
|
-
|
|
360
|
+
He,
|
|
358
361
|
{
|
|
359
362
|
size: oe ? ce.SM : ce.MD,
|
|
360
|
-
stroke:
|
|
363
|
+
stroke: il,
|
|
361
364
|
"aria-hidden": "true",
|
|
362
365
|
className: p(
|
|
363
|
-
|
|
364
|
-
|
|
366
|
+
dl,
|
|
367
|
+
m && "rotate-180"
|
|
365
368
|
)
|
|
366
369
|
}
|
|
367
370
|
),
|
|
368
371
|
role: "combobox",
|
|
369
372
|
"aria-haspopup": "listbox",
|
|
370
|
-
"aria-expanded":
|
|
373
|
+
"aria-expanded": m,
|
|
371
374
|
"aria-controls": re,
|
|
372
375
|
"aria-autocomplete": "none",
|
|
373
|
-
"aria-label":
|
|
376
|
+
"aria-label": ze,
|
|
374
377
|
"aria-describedby": [pe, ie, ae].filter(Boolean).join(" ") || void 0,
|
|
375
378
|
"aria-invalid": v || R ? !0 : void 0,
|
|
376
379
|
containerClassName: "w-full",
|
|
@@ -380,25 +383,25 @@ const Vl = ({
|
|
|
380
383
|
"!h-auto flex-wrap py-2",
|
|
381
384
|
oe ? "min-h-[24px]" : "min-h-[40px]"
|
|
382
385
|
],
|
|
383
|
-
|
|
386
|
+
Te
|
|
384
387
|
),
|
|
385
388
|
className: p(
|
|
386
389
|
"cursor-pointer",
|
|
387
390
|
I && "w-0 min-w-0 flex-none p-0"
|
|
388
391
|
),
|
|
389
|
-
onKeyDown:
|
|
392
|
+
onKeyDown: Ue,
|
|
390
393
|
children: I
|
|
391
394
|
}
|
|
392
395
|
)
|
|
393
396
|
}
|
|
394
397
|
),
|
|
395
|
-
/* @__PURE__ */ l(
|
|
396
|
-
!v && /* @__PURE__ */ l(
|
|
398
|
+
/* @__PURE__ */ l(el, { id: ie, text: v }),
|
|
399
|
+
!v && /* @__PURE__ */ l(ll, { id: ae, text: Q })
|
|
397
400
|
] })
|
|
398
401
|
]
|
|
399
402
|
}
|
|
400
403
|
);
|
|
401
404
|
};
|
|
402
405
|
export {
|
|
403
|
-
|
|
406
|
+
Gl as Select
|
|
404
407
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.16.0-dev.
|
|
3
|
-
"generatedAt": "2026-11-03T14:
|
|
2
|
+
"version": "0.16.0-dev.69",
|
|
3
|
+
"generatedAt": "2026-11-03T14:32:39.360Z",
|
|
4
4
|
"kit": {
|
|
5
5
|
"name": "@epam/ai-dial-ui-kit",
|
|
6
6
|
"description": "A modern UI kit for building AI DIAL interfaces with React",
|
|
@@ -1383,6 +1383,18 @@
|
|
|
1383
1383
|
"required": false,
|
|
1384
1384
|
"description": "Icon to display when there are no options."
|
|
1385
1385
|
},
|
|
1386
|
+
{
|
|
1387
|
+
"name": "filteredEmptyStateTitle",
|
|
1388
|
+
"type": "string",
|
|
1389
|
+
"required": false,
|
|
1390
|
+
"description": "Title when the search leaves no options, as \"No [entities] found\". Falls back to `emptyStateTitle`; the message is announced."
|
|
1391
|
+
},
|
|
1392
|
+
{
|
|
1393
|
+
"name": "filteredEmptyStateDescription",
|
|
1394
|
+
"type": "string",
|
|
1395
|
+
"required": false,
|
|
1396
|
+
"description": "Description when the search leaves no options, as \"Try a different search term\". Falls back to `emptyStateDescription`."
|
|
1397
|
+
},
|
|
1386
1398
|
{
|
|
1387
1399
|
"name": "disabled",
|
|
1388
1400
|
"type": "boolean",
|
|
@@ -5774,7 +5786,7 @@
|
|
|
5774
5786
|
"name": "NoDataContent",
|
|
5775
5787
|
"category": "Components_2_0",
|
|
5776
5788
|
"generation": "2.0",
|
|
5777
|
-
"description": "Message shown in place of a list, table or grid that has nothing to show.\naliases: EmptyState|NoResults|ZeroState\nDesign system 2.0\n\nFills its container and centres an illustration, a headline, an optional\nsecondary line and an optional action. The icon is decorative, so it is\nhidden from assistive tech and the text carries the message on its own.",
|
|
5789
|
+
"description": "Message shown in place of a list, table or grid that has nothing to show.\naliases: EmptyState|NoResults|ZeroState\nDesign system 2.0\n\nFills its container and centres an illustration, a headline, an optional\nsecondary line and an optional action. The icon is decorative, so it is\nhidden from assistive tech and the text carries the message on its own.\n\nCopy follows the Patterns 2.0 empty-state behaviour:\n- default: \"No [entities] yet\" / \"[Entities] will appear here once [condition].\"\n- Shared with me: \"No [entities] yet\" / \"[Entities] other people share with you will show up here.\"\n- after a search or filter: \"No [entities] found\" / \"Try a different search\n term or check your filters.\" — drop the part the list does not have — with `live`.\n\nLeave `icon` unset in a list, so every empty list shows the same card.",
|
|
5778
5790
|
"props": [
|
|
5779
5791
|
{
|
|
5780
5792
|
"name": "title",
|
|
@@ -6197,7 +6209,7 @@
|
|
|
6197
6209
|
"name": "Grid",
|
|
6198
6210
|
"category": "Components_2_0",
|
|
6199
6211
|
"generation": "2.0",
|
|
6200
|
-
"description": "A data grid built on ag-Grid, wired to the 2.0 tokens and controls.\naliases: DataTable|TableGrid|DataGrid\nDesign system 2.0\n\nComes preconfigured with case-insensitive sorting, floating column filters,\ncolumns sized to the available width, a row context menu, truncation\ntooltips, and an empty state.\n\nThe selection column renders the 2.0 `Checkbox` and `Radio` instead of\nag-Grid's own inputs, so selection looks and behaves like every other control\nin the kit and the select-all reaches the `mixed` state when the selection is\npartial. The column stays faded out until the row is hovered, something is\nselected, or the keyboard reaches it.\n\nSelection works controlled or uncontrolled: pass `selectedRowIds` to own it,\nor read `onSelectionChange` and let the grid keep its own. A `sort` declared\non a column is honoured — 1.0 stripped it on startup.",
|
|
6212
|
+
"description": "A data grid built on ag-Grid, wired to the 2.0 tokens and controls.\naliases: DataTable|TableGrid|DataGrid\nDesign system 2.0\n\nComes preconfigured with case-insensitive sorting, floating column filters,\ncolumns sized to the available width, a row context menu, truncation\ntooltips, and an empty state.\n\nThe empty state follows the Patterns 2.0 empty-state behaviour and has two\nforms. A grid with no rows says \"No [entities] yet\" and can offer an action;\na grid whose column filters leave nothing says \"No [entities] found\" and is\nannounced, since the user has just changed a filter. A host that filters\n`rowData` itself passes the \"found\" copy as `emptyStateTitle` and sets\n`emptyStateLive`.\n\nThe selection column renders the 2.0 `Checkbox` and `Radio` instead of\nag-Grid's own inputs, so selection looks and behaves like every other control\nin the kit and the select-all reaches the `mixed` state when the selection is\npartial. The column stays faded out until the row is hovered, something is\nselected, or the keyboard reaches it.\n\nSelection works controlled or uncontrolled: pass `selectedRowIds` to own it,\nor read `onSelectionChange` and let the grid keep its own. A `sort` declared\non a column is honoured — 1.0 stripped it on startup.",
|
|
6201
6213
|
"props": [
|
|
6202
6214
|
{
|
|
6203
6215
|
"name": "columnDefs",
|
|
@@ -6291,21 +6303,48 @@
|
|
|
6291
6303
|
"name": "emptyStateIcon",
|
|
6292
6304
|
"type": "ReactNode",
|
|
6293
6305
|
"required": false,
|
|
6294
|
-
"description": "Illustration of
|
|
6306
|
+
"description": "Illustration of both empty states. Defaults to the shared placeholder-list card."
|
|
6295
6307
|
},
|
|
6296
6308
|
{
|
|
6297
6309
|
"name": "emptyStateTitle",
|
|
6298
6310
|
"type": "string",
|
|
6299
6311
|
"required": false,
|
|
6300
|
-
"defaultValue": "'No
|
|
6301
|
-
"description": "Headline
|
|
6312
|
+
"defaultValue": "'No items yet'",
|
|
6313
|
+
"description": "Headline when there are no rows."
|
|
6302
6314
|
},
|
|
6303
6315
|
{
|
|
6304
6316
|
"name": "emptyStateDescription",
|
|
6305
6317
|
"type": "string",
|
|
6306
6318
|
"required": false,
|
|
6307
|
-
"defaultValue": "
|
|
6308
|
-
"description": "Secondary line
|
|
6319
|
+
"defaultValue": "'Items will appear here once they are added.'",
|
|
6320
|
+
"description": "Secondary line when there are no rows."
|
|
6321
|
+
},
|
|
6322
|
+
{
|
|
6323
|
+
"name": "emptyStateAction",
|
|
6324
|
+
"type": "ReactNode",
|
|
6325
|
+
"required": false,
|
|
6326
|
+
"description": "Way forward when there are no rows."
|
|
6327
|
+
},
|
|
6328
|
+
{
|
|
6329
|
+
"name": "emptyStateLive",
|
|
6330
|
+
"type": "boolean",
|
|
6331
|
+
"required": false,
|
|
6332
|
+
"defaultValue": "false",
|
|
6333
|
+
"description": "Announce the no-rows message; for a host that filters `rowData` itself."
|
|
6334
|
+
},
|
|
6335
|
+
{
|
|
6336
|
+
"name": "filteredEmptyStateTitle",
|
|
6337
|
+
"type": "string",
|
|
6338
|
+
"required": false,
|
|
6339
|
+
"defaultValue": "'No items found'",
|
|
6340
|
+
"description": "Headline when the column filters leave no rows."
|
|
6341
|
+
},
|
|
6342
|
+
{
|
|
6343
|
+
"name": "filteredEmptyStateDescription",
|
|
6344
|
+
"type": "string",
|
|
6345
|
+
"required": false,
|
|
6346
|
+
"defaultValue": "'Try a different search term or check your filters.'",
|
|
6347
|
+
"description": "Secondary line when the column filters leave no rows."
|
|
6309
6348
|
},
|
|
6310
6349
|
{
|
|
6311
6350
|
"name": "loading",
|
|
@@ -6370,7 +6409,7 @@
|
|
|
6370
6409
|
}
|
|
6371
6410
|
],
|
|
6372
6411
|
"examples": [
|
|
6373
|
-
"interface Product { id: string; name: string; price: number }\n\nconst columns: ColDef<Product>[] = [\n { field: 'name', headerName: 'Product', flex: 1 },\n { field: 'price', headerName: 'Price', width: 120 },\n];\n\n<Grid<Product> columnDefs={columns} rowData={products} />\n\n// With selection and a context menu\n<Grid<Product>\n columnDefs={columns}\n rowData={products}\n selectionMode={GridSelectionMode.MULTIPLE}\n selectedRowIds={selectedIds}\n onSelectionChange={(ids) => setSelectedIds(ids)}\n selectRowLabel={(row) => `Select ${row.name}`}\n getContextMenuItems={(row) => [{ key: 'edit', label: 'Edit' }]}\n/>\n\n// Dark native controls, including the date-filter calendar\n<Grid<Product> columnDefs={columns} rowData={products} colorScheme={GridColorScheme.Dark} />"
|
|
6412
|
+
"interface Product { id: string; name: string; price: number }\n\nconst columns: ColDef<Product>[] = [\n { field: 'name', headerName: 'Product', flex: 1 },\n { field: 'price', headerName: 'Price', width: 120 },\n];\n\n<Grid<Product> columnDefs={columns} rowData={products} />\n\n// With selection and a context menu\n<Grid<Product>\n columnDefs={columns}\n rowData={products}\n selectionMode={GridSelectionMode.MULTIPLE}\n selectedRowIds={selectedIds}\n onSelectionChange={(ids) => setSelectedIds(ids)}\n selectRowLabel={(row) => `Select ${row.name}`}\n getContextMenuItems={(row) => [{ key: 'edit', label: 'Edit' }]}\n/>\n\n// An empty grid with a way forward\n<Grid<Product>\n columnDefs={columns}\n rowData={[]}\n emptyStateTitle=\"No products yet\"\n emptyStateDescription=\"Products will appear here once you add one.\"\n emptyStateAction={<OutlinedButton label=\"Add product\" onClick={addProduct} />}\n filteredEmptyStateTitle=\"No products found\"\n/>\n\n// Dark native controls, including the date-filter calendar\n<Grid<Product> columnDefs={columns} rowData={products} colorScheme={GridColorScheme.Dark} />"
|
|
6374
6413
|
],
|
|
6375
6414
|
"sourceFile": "components/New/Grid/Grid.tsx"
|
|
6376
6415
|
},
|
|
@@ -9973,7 +10012,7 @@
|
|
|
9973
10012
|
{
|
|
9974
10013
|
"name": "DIAL_KIT_ICON_STROKE",
|
|
9975
10014
|
"sourceFile": "components/New/constants/icon.ts",
|
|
9976
|
-
"description": "Icon stroke (1.5px) from the 2.0 stroke scale. Tabler renders every outline\nicon at `stroke={2}` unless told otherwise, so the token has to be passed\nexplicitly — a 2.0 component that omits it draws a heavier icon than the\ndesign system asks for.\n\nIt is a number rather than a Tailwind utility because an icon's weight is an\nSVG `stroke-width` attribute on the glyph, not a border on its box. The\nborder half of the same scale stays on plain Tailwind widths — `border`,\n`border-2`, `border-4`, and `border-[0.5px]` for a table divider.\n\nExported publicly so icons a consumer passes into a 2.0 component — a button\nicon, a menu item, a segmented-control segment — can match the ones the\ncomponents draw themselves.\n\nTwo deliberate departures inside the library:
|
|
10015
|
+
"description": "Icon stroke (1.5px) from the 2.0 stroke scale. Tabler renders every outline\nicon at `stroke={2}` unless told otherwise, so the token has to be passed\nexplicitly — a 2.0 component that omits it draws a heavier icon than the\ndesign system asks for.\n\nIt is a number rather than a Tailwind utility because an icon's weight is an\nSVG `stroke-width` attribute on the glyph, not a border on its box. The\nborder half of the same scale stays on plain Tailwind widths — `border`,\n`border-2`, `border-4`, and `border-[0.5px]` for a table divider.\n\nExported publicly so icons a consumer passes into a 2.0 component — a button\nicon, a menu item, a segmented-control segment — can match the ones the\ncomponents draw themselves.\n\nTwo deliberate departures inside the library: an icon passed as an\nempty-state illustration (`NoDataContent`'s `icon`) uses a much lighter stroke,\nsince a 1.5px line reads as a drawing at 16px and as a fence at 100px; and\nthe checkbox glyph uses a heavier one, because it is a control mark sized to\na 14px box rather than an icon from the set.",
|
|
9977
10016
|
"signature": "DIAL_KIT_ICON_STROKE = 1.5"
|
|
9978
10017
|
},
|
|
9979
10018
|
{
|