@reportportal/ui-kit 0.0.1-alpha.155 → 0.0.1-alpha.156

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.
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Splits object properties into HTML attributes and remaining props.
3
+ * Transforms camelCase data-* and aria-* attributes to kebab-case format
4
+ * as required by HTML specification.
5
+ *
6
+ * @param attrs - Object containing properties to split
7
+ * @returns Object with two properties:
8
+ * - transformed: data-* and aria-* attributes converted to kebab-case
9
+ * - remaining: all other properties unchanged
10
+ *
11
+ * @example
12
+ * const props = { dataTestId: 'test', ariaLabel: 'Label', className: 'container' };
13
+ * const { transformed, remaining } = splitHtmlAttributes(props);
14
+ * // transformed: { 'data-test-id': 'test', 'aria-label': 'Label' }
15
+ * // remaining: { className: 'container' }
16
+ */
17
+ export declare const splitHtmlAttributes: (attrs: Record<string, unknown>) => {
18
+ transformed: Record<string, unknown>;
19
+ remaining: Record<string, unknown>;
20
+ };
@@ -1,3 +1,4 @@
1
1
  export { getFileExtension } from './getFileExtension';
2
2
  export { isString } from './isString';
3
3
  export { getAlignmentAxisOffset } from './floatingUi';
4
+ export { splitHtmlAttributes } from './htmlAttributes';
@@ -1,7 +1,7 @@
1
- import { ReactNode, FC } from 'react';
1
+ import { ReactNode, FC, ComponentPropsWithRef } from 'react';
2
2
  import { DropdownVariant, RenderDropdownOption, DropdownOptionType, DropdownValue } from './types';
3
3
 
4
- export interface DropdownProps {
4
+ export interface DropdownProps extends Omit<ComponentPropsWithRef<'div'>, 'onChange' | 'onFocus' | 'onBlur' | 'title'> {
5
5
  options: DropdownOptionType[];
6
6
  value: DropdownValue | DropdownValue[];
7
7
  disabled?: boolean;
@@ -3,7 +3,7 @@ import B from "react-datepicker/dist/es/index.js";
3
3
  import { c as R } from "./bind-06a7ff84.js";
4
4
  import { useMemo as P, useRef as D } from "react";
5
5
  import { F as I } from "./fieldText-1749da7a.js";
6
- import { D as E } from "./dropdown-b63f2137.js";
6
+ import { D as E } from "./dropdown-ae695766.js";
7
7
  import { S as T } from "./calendarArrow-44c7e60e.js";
8
8
  import { registerLocale as j } from "react-datepicker";
9
9
  const ie = (n, s) => {
@@ -1,5 +1,5 @@
1
- import { D as t } from "./datePicker-3881a2d6.js";
2
- import { r as A } from "./datePicker-3881a2d6.js";
1
+ import { D as t } from "./datePicker-37854acd.js";
2
+ import { r as A } from "./datePicker-37854acd.js";
3
3
  import "react/jsx-runtime";
4
4
  import "react-datepicker/dist/es/index.js";
5
5
  import "./bind-06a7ff84.js";
@@ -11,7 +11,7 @@ import "./baseIconButton-251479f7.js";
11
11
  import "./spinLoader-c4a53718.js";
12
12
  import "./maxValueDisplay-9be01a75.js";
13
13
  import "./fieldLabel.js";
14
- import "./dropdown-b63f2137.js";
14
+ import "./dropdown-ae695766.js";
15
15
  import "react-dom";
16
16
  import "@floating-ui/react-dom";
17
17
  import "downshift";
@@ -0,0 +1,642 @@
1
+ import { jsxs as R, jsx as u, Fragment as Ve } from "react/jsx-runtime";
2
+ import { forwardRef as wr, useState as ne, useRef as K, useMemo as C, useCallback as N, useLayoutEffect as Se, useEffect as V } from "react";
3
+ import { createPortal as Er } from "react-dom";
4
+ import { c as We } from "./bind-06a7ff84.js";
5
+ import { useFloating as yr, offset as Cr, flip as Ar, size as Or, autoUpdate as vr } from "@floating-ui/react-dom";
6
+ import { useSelect as pe } from "downshift";
7
+ import { Scrollbars as Dr } from "rc-scrollbars";
8
+ import { K as p } from "./keyCodes-f63c0e11.js";
9
+ import { B as br } from "./baseIconButton-251479f7.js";
10
+ import { S as Nr } from "./clear-53660571.js";
11
+ import { S as Ir } from "./dropdown-0260bb66.js";
12
+ import { FieldLabel as Kr } from "./fieldLabel.js";
13
+ import { AdaptiveTagList as Lr } from "./adaptiveTagList.js";
14
+ import { C as Tr } from "./checkbox-ed6cc375.js";
15
+ import { i as se } from "./isEmpty-ccacb5ff.js";
16
+ const xr = (n) => {
17
+ const r = {}, c = {};
18
+ return Object.entries(n).forEach(([a, h]) => {
19
+ if (/^data[A-Z]/.test(a) || /^aria[A-Z]/.test(a)) {
20
+ const m = a.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/([A-Z])([A-Z][a-z])/g, "$1-$2").toLowerCase();
21
+ r[m] = h;
22
+ } else
23
+ c[a] = h;
24
+ }), { transformed: r, remaining: c };
25
+ }, kr = "_disabled_14s7v_12", Rr = "_hidden_14s7v_16", Pr = "_hover_14s7v_22", Yr = "_selected_14s7v_38", Vr = {
26
+ "dropdown-option": "_dropdown-option_14s7v_1",
27
+ disabled: kr,
28
+ hidden: Rr,
29
+ hover: Pr,
30
+ "depth-1": "_depth-1_14s7v_32",
31
+ selected: Yr,
32
+ "multi-select": "_multi-select_14s7v_38",
33
+ "single-option": "_single-option_14s7v_43",
34
+ "sub-option": "_sub-option_14s7v_50"
35
+ }, He = We.bind(Vr), $e = wr(
36
+ (n, r) => {
37
+ const {
38
+ option: { value: c, disabled: a, hidden: h, label: m, title: A, groupRef: O },
39
+ selected: F,
40
+ onChange: H,
41
+ render: U,
42
+ highlightHovered: B,
43
+ onMouseEnter: ae,
44
+ multiSelect: g,
45
+ isPartiallyChecked: j = !1,
46
+ depth: q = 0,
47
+ hasChildren: oe = !1
48
+ } = n, ie = (Z) => {
49
+ (Z.target instanceof HTMLDivElement || Z.target instanceof HTMLInputElement) && (H == null || H(c));
50
+ };
51
+ return /* @__PURE__ */ R(
52
+ "div",
53
+ {
54
+ className: He("dropdown-option", {
55
+ selected: F,
56
+ disabled: a,
57
+ hidden: h,
58
+ hover: B,
59
+ "multi-select": g,
60
+ "has-children": oe,
61
+ [`depth-${q}`]: q > 0
62
+ }),
63
+ title: A,
64
+ onClick: ie,
65
+ ref: r,
66
+ onMouseEnter: ae,
67
+ children: [
68
+ g && /* @__PURE__ */ u(Tr, { value: !!F, partiallyChecked: j }),
69
+ /* @__PURE__ */ u(
70
+ "div",
71
+ {
72
+ className: He("single-option", {
73
+ "sub-option": !!O
74
+ }),
75
+ children: U ? U(n) : m
76
+ }
77
+ )
78
+ ]
79
+ }
80
+ );
81
+ }
82
+ ), Sr = [
83
+ p.ENTER_KEY_CODE,
84
+ p.SPACE_KEY_CODE,
85
+ p.ARROW_DOWN_KEY_CODE
86
+ ], Hr = [p.ESCAPE_KEY_CODE, p.TAB_KEY_CODE];
87
+ var S = /* @__PURE__ */ ((n) => (n.ON_KEY_DOWN = "onKeyDown", n.ON_CLICK = "onClick", n))(S || {});
88
+ const $r = 240, Wr = "data-dropdown-portal-menu", Mr = 10, zr = (n, r) => {
89
+ const c = Array.isArray(r) ? r : [r];
90
+ return n.findIndex(({ value: a }) => c.includes(a));
91
+ }, Fr = (n, r) => (n % r + r) % r, me = (n, r = 0, c = 1) => {
92
+ var h;
93
+ if (n.length === 0)
94
+ return 0;
95
+ if (!((h = n[r]) != null && h.disabled))
96
+ return r;
97
+ const a = n.length;
98
+ return me(
99
+ n,
100
+ Fr(r + c, a),
101
+ c
102
+ );
103
+ }, Ur = (n, r) => me(n, r), Br = (n, r) => me(n, r, -1), Me = (n, r = 0, c) => !n || n.length === 0 ? [] : n.reduce((a, h) => {
104
+ var m;
105
+ return h && (a.push({ option: h, depth: r, parent: c }), (m = h.children) != null && m.length && a.push(...Me(h.children, r + 1, h))), a;
106
+ }, []), ze = (n) => !n || n.length === 0 ? [] : n.reduce((r, c) => {
107
+ var a;
108
+ return c && ((a = c.children) != null && a.length ? r.push(...ze(c.children)) : r.push(c)), r;
109
+ }, []), Fe = (n) => {
110
+ var r;
111
+ return n ? (r = n.children) != null && r.length ? n.children.reduce((c, a) => (a && c.push(...Fe(a)), c), []) : [n.value] : [];
112
+ }, jr = "_container_1lti6_1", qr = "_icon_1lti6_7", Zr = "_arrow_1lti6_15", Gr = "_dropdown_1lti6_33", Xr = "_disabled_1lti6_53", Jr = "_value_1lti6_60", Qr = "_error_1lti6_63", et = "_touched_1lti6_63", rt = "_opened_1lti6_67", tt = "_placeholder_1lti6_101", nt = "_ghost_1lti6_184", st = "_divider_1lti6_202", at = {
113
+ container: jr,
114
+ icon: qr,
115
+ arrow: Zr,
116
+ "clear-button": "_clear-button_1lti6_23",
117
+ dropdown: Gr,
118
+ "multi-select-with-tags": "_multi-select-with-tags_1lti6_47",
119
+ "transparent-background": "_transparent-background_1lti6_50",
120
+ disabled: Xr,
121
+ value: Jr,
122
+ error: Qr,
123
+ touched: et,
124
+ opened: rt,
125
+ placeholder: tt,
126
+ "mobile-disabled": "_mobile-disabled_1lti6_105",
127
+ "value-wrapper": "_value-wrapper_1lti6_110",
128
+ "tags-wrapper": "_tags-wrapper_1lti6_116",
129
+ "with-search": "_with-search_1lti6_121",
130
+ "search-input": "_search-input_1lti6_128",
131
+ "select-list": "_select-list_1lti6_146",
132
+ "limited-width": "_limited-width_1lti6_163",
133
+ "options-container": "_options-container_1lti6_167",
134
+ "empty-list-message": "_empty-list-message_1lti6_172",
135
+ ghost: nt,
136
+ divider: st
137
+ }, _ = We.bind(at), At = ({
138
+ multiSelect: n = !1,
139
+ value: r = n ? [] : "",
140
+ options: c = [],
141
+ disabled: a = !1,
142
+ error: h,
143
+ onChange: m,
144
+ onFocus: A,
145
+ onBlur: O,
146
+ mobileDisabled: F,
147
+ title: H,
148
+ touched: U = !1,
149
+ icon: B,
150
+ variant: ae,
151
+ placeholder: g = "",
152
+ label: j = "",
153
+ renderOption: q,
154
+ transparentBackground: oe = !1,
155
+ className: ie,
156
+ toggleButtonClassName: Z,
157
+ selectListClassName: Ue,
158
+ isListWidthLimited: Be = !1,
159
+ optionAll: le = { value: "all", label: "All" },
160
+ isOptionAllVisible: ge = !1,
161
+ onSelectAll: je = () => {
162
+ },
163
+ formatDisplayedValue: we,
164
+ notScrollable: $ = !1,
165
+ footer: G,
166
+ includeGroupValue: Ee = !1,
167
+ clearable: qe = !1,
168
+ onClear: ye = () => {
169
+ },
170
+ clearButtonAriaLabel: Ze = "Clear selection",
171
+ menuPortalRoot: w,
172
+ isMultiSelectWithTags: v = !1,
173
+ noMatchesMessage: Ge = "No matches found",
174
+ ...Xe
175
+ }) => {
176
+ const { transformed: Je, remaining: Qe } = xr(Xe), [l, X] = ne(!1), [I, Ce] = ne(""), Ae = K(null), Oe = K(null), W = K(null), ce = K(0), de = K(null), ue = K(null), fe = K(""), [er, ve] = ne(!1), [rr, J] = ne(null), L = K(null), M = C(() => Me(c), [c]), T = C(() => {
177
+ if (!v || !I.trim())
178
+ return M;
179
+ const e = I.toLowerCase();
180
+ return M.filter(
181
+ ({ option: t }) => t.label.toLowerCase().includes(e)
182
+ );
183
+ }, [M, I, v]), E = C(
184
+ () => T.map(({ option: e }) => e),
185
+ [T]
186
+ ), De = C(
187
+ () => M.map(({ option: e }) => e),
188
+ [M]
189
+ ), Q = C(() => T.filter(({ option: e }) => {
190
+ var t;
191
+ return (t = e.children) == null ? void 0 : t.length;
192
+ }).map(({ option: e }) => e), [T]), be = C(() => ze(c), [c]), D = C(
193
+ () => be.map(({ value: e }) => e),
194
+ [be]
195
+ ), ee = C(() => {
196
+ const e = /* @__PURE__ */ new Map();
197
+ return Q.forEach((t) => {
198
+ e.set(t.value, Fe(t));
199
+ }), e;
200
+ }, [Q]), z = N(
201
+ (e) => (Q.forEach((t) => {
202
+ const s = ee.get(t.value) ?? [], i = s.length > 0 && s.every((d) => e.has(d));
203
+ Ee && i ? e.add(t.value) : e.delete(t.value);
204
+ }), e),
205
+ [Q, Ee, ee]
206
+ ), x = C(() => !n || !Array.isArray(r) ? /* @__PURE__ */ new Set() : z(new Set(r)), [n, r, z]), Ne = n ? Array.isArray(r) && r.length > 0 : r || r === !1 || r === 0, tr = qe && Ne && !a, nr = N((e) => {
207
+ ce.current = e.scrollTop;
208
+ }, []);
209
+ Se(() => {
210
+ l && !$ && W.current && !(n && L.current !== null) && W.current.scrollTop(ce.current);
211
+ }, [l, $, r, n]);
212
+ const { refs: P, floatingStyles: Ie } = yr({
213
+ placement: "bottom-start",
214
+ middleware: [
215
+ Cr(5),
216
+ Ar({
217
+ fallbackPlacements: ["bottom-start", "top-start", "bottom", "top"],
218
+ ...w && {
219
+ boundary: document.documentElement,
220
+ rootBoundary: "viewport"
221
+ }
222
+ }),
223
+ w ? Or({
224
+ apply({ rects: e, elements: t }) {
225
+ const s = e.reference.width;
226
+ Object.assign(t.floating.style, {
227
+ width: `${s}px`,
228
+ minWidth: `${s}px`,
229
+ maxWidth: `${s}px`
230
+ });
231
+ }
232
+ }) : null
233
+ ].filter(Boolean),
234
+ whileElementsMounted: l ? (e, t, s) => vr(e, t, s, {
235
+ animationFrame: !0
236
+ }) : void 0
237
+ }), sr = () => {
238
+ if (!ge)
239
+ return;
240
+ const e = Array.isArray(r) ? r : [], t = new Set(e), s = D.some((d) => !t.has(d));
241
+ D.forEach((d) => {
242
+ s ? t.add(d) : t.delete(d);
243
+ });
244
+ const i = z(t);
245
+ m(Array.from(i)), je();
246
+ }, re = N(() => {
247
+ l || (X(!0), A == null || A());
248
+ }, [l, A]), y = N(() => {
249
+ X(!1), Ce(""), fe.current = "", O == null || O();
250
+ }, [O]), he = N(() => {
251
+ if (a)
252
+ return;
253
+ m(n ? [] : ""), ye(), y(), requestAnimationFrame(() => {
254
+ const t = P.reference.current;
255
+ t && t instanceof HTMLElement && t.focus();
256
+ });
257
+ }, [a, n, m, ye, y, P]), ar = N(
258
+ (e) => {
259
+ e.preventDefault(), e.stopPropagation(), he();
260
+ },
261
+ [he]
262
+ ), Ke = N(
263
+ (e) => {
264
+ var d, o;
265
+ if (!l)
266
+ return;
267
+ const t = e == null ? void 0 : e.target;
268
+ if (!t)
269
+ return;
270
+ const s = (d = Ae.current) == null ? void 0 : d.contains(t), i = (o = Oe.current) == null ? void 0 : o.contains(t);
271
+ !s && !i && y();
272
+ },
273
+ [l, y]
274
+ );
275
+ V(() => {
276
+ if (!l)
277
+ return;
278
+ const e = (t) => {
279
+ Ke(t);
280
+ };
281
+ return document.addEventListener("pointerdown", e), () => {
282
+ document.removeEventListener("pointerdown", e);
283
+ };
284
+ }, [l, Ke]);
285
+ const Le = (e) => {
286
+ var t;
287
+ if (!e.disabled) {
288
+ if (n) {
289
+ const s = Array.isArray(r) ? r : [], i = new Set(s);
290
+ if ((t = e.children) != null && t.length) {
291
+ const o = ee.get(e.value) ?? [], f = o.some((b) => !i.has(b));
292
+ o.forEach((b) => {
293
+ f ? i.add(b) : i.delete(b);
294
+ });
295
+ } else
296
+ i.has(e.value) ? i.delete(e.value) : i.add(e.value);
297
+ const d = z(i);
298
+ m(Array.from(d));
299
+ } else
300
+ m(e.value);
301
+ X((s) => n || !s);
302
+ }
303
+ }, or = () => E.find(({ value: e }) => e === r), Te = zr(E, r), {
304
+ getToggleButtonProps: ir,
305
+ getLabelProps: lr,
306
+ getMenuProps: xe,
307
+ getItemProps: cr,
308
+ setHighlightedIndex: k,
309
+ highlightedIndex: _e
310
+ } = pe({
311
+ items: E,
312
+ itemToString: (e) => (e != null && e.label ? String(e.label) : g) || "",
313
+ selectedItem: or(),
314
+ isOpen: l,
315
+ circularNavigation: !0,
316
+ defaultHighlightedIndex: Te,
317
+ onHighlightedIndexChange: (e) => {
318
+ switch (e.type) {
319
+ case pe.stateChangeTypes.MenuKeyDownArrowUp:
320
+ return J(S.ON_KEY_DOWN), k(Br(E, e.highlightedIndex)), e;
321
+ case pe.stateChangeTypes.MenuKeyDownArrowDown:
322
+ return J(S.ON_KEY_DOWN), k(Ur(E, e.highlightedIndex)), e;
323
+ default:
324
+ return e;
325
+ }
326
+ }
327
+ }), ke = N(
328
+ (e) => {
329
+ Oe.current = e, P.setFloating(e);
330
+ },
331
+ [P]
332
+ ), dr = N(
333
+ (e = {}) => {
334
+ const t = xe(e), s = t.ref;
335
+ return {
336
+ ...t,
337
+ ref: (i) => {
338
+ ke(i), typeof s == "function" ? s(i) : s && (s.current = i);
339
+ }
340
+ };
341
+ },
342
+ [xe, ke]
343
+ );
344
+ V(() => {
345
+ n && l && L.current !== null && L.current >= 0 && L.current < E.length && (k(L.current), L.current = null, requestAnimationFrame(() => {
346
+ W.current && !$ && W.current.scrollTop(ce.current);
347
+ }));
348
+ }, [n, l, r, E.length, k, $]), V(() => {
349
+ l && v && requestAnimationFrame(() => {
350
+ var e;
351
+ (e = ue.current) == null || e.focus();
352
+ });
353
+ }, [l, v]), V(() => {
354
+ v && l && I !== fe.current && (fe.current = I, I && k(0));
355
+ }, [I, v, l]), Se(() => {
356
+ if (!l || !w)
357
+ return;
358
+ let e = window.scrollY, t = !0;
359
+ const s = 300, i = () => {
360
+ if (!t)
361
+ return;
362
+ window.scrollY !== e && window.scrollTo(0, e);
363
+ }, d = (f) => {
364
+ t && (f.preventDefault(), f.stopImmediatePropagation(), i());
365
+ };
366
+ e = window.scrollY, window.addEventListener("scroll", d, { passive: !1, capture: !0 }), requestAnimationFrame(() => {
367
+ e = window.scrollY, i();
368
+ });
369
+ const o = setTimeout(() => {
370
+ t = !1;
371
+ }, s);
372
+ return () => {
373
+ clearTimeout(o), window.removeEventListener("scroll", d, { capture: !0 });
374
+ };
375
+ }, [l, w]), V(() => {
376
+ if (!l || !w)
377
+ return;
378
+ const e = () => {
379
+ y();
380
+ };
381
+ return window.addEventListener("resize", e), () => {
382
+ window.removeEventListener("resize", e);
383
+ };
384
+ }, [l, w, y]);
385
+ const Re = () => {
386
+ a || (X((e) => !e), l ? O == null || O() : A == null || A(), J(S.ON_CLICK));
387
+ }, te = C(() => {
388
+ if (n && Array.isArray(r) && D.length > 0 && D.every((t) => x.has(t)))
389
+ return le.label;
390
+ const e = E.reduce((t, s) => ((Array.isArray(r) && r.includes(s.value) || s.value === r) && t.push(s.label), t), []);
391
+ return e.length > 0 ? e.join(", ") : !r && r !== !1 && r !== 0 || Array.isArray(r) && !r.length ? g : typeof r == "string" && r.length > 0 && !g ? r : g || void 0;
392
+ }, [
393
+ n,
394
+ r,
395
+ D,
396
+ x,
397
+ le.label,
398
+ E,
399
+ g
400
+ ]);
401
+ V(() => {
402
+ if (de.current) {
403
+ const { offsetWidth: e, scrollWidth: t } = de.current;
404
+ ve(t > e);
405
+ } else
406
+ ve(!1);
407
+ }, [te]);
408
+ const ur = (e) => {
409
+ const { keyCode: t } = e;
410
+ Sr.includes(t) && e.target === e.currentTarget && (e.preventDefault(), e.stopPropagation(), !l && (k(Te), re(), J(S.ON_KEY_DOWN)));
411
+ }, fr = (e) => {
412
+ const { keyCode: t } = e;
413
+ if (t === p.ENTER_KEY_CODE || t === p.SPACE_KEY_CODE) {
414
+ const s = E[_e];
415
+ if (!s)
416
+ return;
417
+ n && (L.current = _e), Le(s), n || y();
418
+ return;
419
+ }
420
+ Hr.includes(t) && (e.stopPropagation(), y());
421
+ }, Pe = () => /* @__PURE__ */ R("div", { className: _("options-container"), children: [
422
+ n && ge && !se(T) && /* @__PURE__ */ R(Ve, { children: [
423
+ /* @__PURE__ */ u(
424
+ $e,
425
+ {
426
+ option: le,
427
+ selected: Array.isArray(r) && D.length > 0 && D.every((e) => x.has(e)),
428
+ onChange: sr,
429
+ multiSelect: n,
430
+ isPartiallyChecked: D.some((e) => x.has(e)) && !D.every((e) => x.has(e))
431
+ }
432
+ ),
433
+ /* @__PURE__ */ u("div", { className: _("divider") }),
434
+ " "
435
+ ] }),
436
+ se(T) ? /* @__PURE__ */ u("div", { className: _("empty-list-message"), children: Ge }) : T.map(({ option: e, depth: t }, s) => {
437
+ var f, b;
438
+ const i = ee.get(e.value) ?? [e.value], d = n && i.every((Y) => x.has(Y)), o = n && ((f = e.children) == null ? void 0 : f.length) && i.some((Y) => x.has(Y)) && !d;
439
+ return /* @__PURE__ */ u(
440
+ $e,
441
+ {
442
+ ...cr({
443
+ item: e,
444
+ index: s
445
+ }),
446
+ multiSelect: n,
447
+ selected: n ? d : e.value === r,
448
+ option: { title: e.label, ...e },
449
+ highlightHovered: _e === s && rr !== S.ON_CLICK,
450
+ render: q,
451
+ onChange: e.disabled ? null : () => Le(e),
452
+ onMouseEnter: () => k(s),
453
+ depth: t,
454
+ hasChildren: !!((b = e.children) != null && b.length),
455
+ isPartiallyChecked: o
456
+ },
457
+ e.value
458
+ );
459
+ }),
460
+ G && /* @__PURE__ */ R(Ve, { children: [
461
+ /* @__PURE__ */ u("div", { className: _("divider") }),
462
+ typeof G == "function" ? G(y) : G
463
+ ] })
464
+ ] }), hr = () => {
465
+ const e = De.reduce((o, f) => (Array.isArray(r) && r.includes(f.value) && o.push(f.label), o), []), t = (o) => {
466
+ const f = De.find(
467
+ ({ label: gr }) => gr === o
468
+ );
469
+ if (!f)
470
+ return;
471
+ const b = Array.isArray(r) ? r : [], Y = new Set(b);
472
+ Y.delete(f.value);
473
+ const mr = z(Y);
474
+ m(Array.from(mr));
475
+ }, s = (o) => {
476
+ const f = o.target;
477
+ Ce(f.value), l || (re(), requestAnimationFrame(() => {
478
+ f.focus();
479
+ }));
480
+ }, i = (o) => {
481
+ if (o.keyCode === p.ESCAPE_KEY_CODE) {
482
+ o.stopPropagation(), y();
483
+ return;
484
+ }
485
+ o.keyCode === p.ENTER_KEY_CODE || o.keyCode === p.SPACE_KEY_CODE || (o.keyCode === p.ARROW_DOWN_KEY_CODE || o.keyCode === p.ARROW_UP_KEY_CODE) && (o.preventDefault(), re());
486
+ }, d = /* @__PURE__ */ u(
487
+ "input",
488
+ {
489
+ ref: ue,
490
+ type: "text",
491
+ className: _("search-input"),
492
+ value: I,
493
+ onChange: s,
494
+ onKeyDown: i,
495
+ onClick: (o) => {
496
+ o.stopPropagation(), re();
497
+ },
498
+ placeholder: se(e) ? g : "",
499
+ autoComplete: "off"
500
+ }
501
+ );
502
+ return se(e) ? /* @__PURE__ */ u("div", { className: _("tags-wrapper", "with-search"), children: d }) : /* @__PURE__ */ R("div", { className: _("tags-wrapper", "with-search"), children: [
503
+ /* @__PURE__ */ u(
504
+ Lr,
505
+ {
506
+ tags: e,
507
+ onRemoveTag: t,
508
+ isShowAllView: !0,
509
+ defaultVisibleLines: Mr
510
+ }
511
+ ),
512
+ d
513
+ ] });
514
+ }, _r = () => {
515
+ if (v && n && Array.isArray(r))
516
+ return hr();
517
+ const e = we ? we(te) : te, t = Ne && !!e && er;
518
+ return /* @__PURE__ */ u(
519
+ "span",
520
+ {
521
+ ref: de,
522
+ className: _("value", {
523
+ placeholder: te === g
524
+ }),
525
+ title: t ? e : void 0,
526
+ children: e
527
+ }
528
+ );
529
+ }, pr = ir({
530
+ className: _("dropdown", ae, Z, {
531
+ "transparent-background": oe,
532
+ opened: l,
533
+ disabled: a,
534
+ error: h,
535
+ touched: U,
536
+ "mobile-disabled": F,
537
+ "multi-select-with-tags": v
538
+ }),
539
+ onClick: Re,
540
+ onKeyDown: ur,
541
+ ref: P.setReference
542
+ }), { type: ot, ...Ye } = pr;
543
+ return /* @__PURE__ */ R(
544
+ "div",
545
+ {
546
+ ref: Ae,
547
+ className: _("container", ie),
548
+ title: H,
549
+ ...Qe,
550
+ ...Je,
551
+ children: [
552
+ j && /* @__PURE__ */ u(
553
+ Kr,
554
+ {
555
+ ...lr(),
556
+ onClick: () => !a && Re(),
557
+ style: { cursor: a ? "default" : "pointer" },
558
+ children: j
559
+ }
560
+ ),
561
+ /* @__PURE__ */ R(
562
+ "div",
563
+ {
564
+ ...Ye,
565
+ role: "button",
566
+ "aria-disabled": a,
567
+ tabIndex: a ? -1 : Ye.tabIndex ?? 0,
568
+ children: [
569
+ B && /* @__PURE__ */ u("span", { className: _("icon"), children: B }),
570
+ /* @__PURE__ */ u("div", { className: _("value-wrapper"), children: _r() }),
571
+ tr && /* @__PURE__ */ u(
572
+ br,
573
+ {
574
+ className: _("clear-button"),
575
+ onClick: ar,
576
+ onKeyDown: (e) => {
577
+ const { keyCode: t } = e;
578
+ (t === p.ENTER_KEY_CODE || t === p.SPACE_KEY_CODE) && (e.preventDefault(), e.stopPropagation(), he());
579
+ },
580
+ "aria-label": Ze,
581
+ children: /* @__PURE__ */ u(Nr, {})
582
+ }
583
+ ),
584
+ /* @__PURE__ */ u("span", { className: _("arrow"), "aria-hidden": "true", children: /* @__PURE__ */ u(Ir, {}) })
585
+ ]
586
+ }
587
+ ),
588
+ l && (() => {
589
+ var i;
590
+ const e = (i = P.reference.current) == null ? void 0 : i.getBoundingClientRect().width, t = w && e ? {
591
+ ...Ie,
592
+ width: `${e}px`,
593
+ minWidth: `${e}px`,
594
+ maxWidth: `${e}px`
595
+ } : Ie, s = /* @__PURE__ */ u(
596
+ "div",
597
+ {
598
+ style: t,
599
+ className: _(
600
+ "select-list",
601
+ {
602
+ opened: l,
603
+ "limited-width": Be
604
+ },
605
+ Ue
606
+ ),
607
+ ...w && { [Wr]: "" },
608
+ ...dr({
609
+ onKeyDown: fr,
610
+ ...v && {
611
+ tabIndex: -1,
612
+ onFocus: (d) => {
613
+ var o;
614
+ d.preventDefault(), (o = ue.current) == null || o.focus();
615
+ }
616
+ }
617
+ }),
618
+ children: $ ? Pe() : /* @__PURE__ */ u(
619
+ Dr,
620
+ {
621
+ autoHeight: !0,
622
+ autoHeightMax: $r,
623
+ hideTracksWhenNotNeeded: !0,
624
+ ref: (d) => {
625
+ W.current = d;
626
+ },
627
+ onScrollFrame: nr,
628
+ children: Pe()
629
+ }
630
+ )
631
+ }
632
+ );
633
+ return w ? Er(s, w) : s;
634
+ })()
635
+ ]
636
+ }
637
+ );
638
+ };
639
+ export {
640
+ At as D,
641
+ Wr as a
642
+ };
package/dist/dropdown.js CHANGED
@@ -1,5 +1,5 @@
1
- import { D as r } from "./dropdown-b63f2137.js";
2
- import { a as n } from "./dropdown-b63f2137.js";
1
+ import { D as r } from "./dropdown-ae695766.js";
2
+ import { a as n } from "./dropdown-ae695766.js";
3
3
  import "react/jsx-runtime";
4
4
  import "react";
5
5
  import "react-dom";
package/dist/index.js CHANGED
@@ -6,9 +6,9 @@ import { B as M } from "./bubblesLoader-f3ffa240.js";
6
6
  import { B as w } from "./button-97d9e587.js";
7
7
  import { C as k } from "./checkbox-ed6cc375.js";
8
8
  import { Chip as O } from "./chip.js";
9
- import { D as z } from "./datePicker-3881a2d6.js";
9
+ import { D as z } from "./datePicker-37854acd.js";
10
10
  import "react-datepicker";
11
- import { D as J } from "./dropdown-b63f2137.js";
11
+ import { D as J } from "./dropdown-ae695766.js";
12
12
  import { FieldLabel as G } from "./fieldLabel.js";
13
13
  import { F as X } from "./fieldNumber-d1b5a7a1.js";
14
14
  import { F as q } from "./fieldText-1749da7a.js";
package/dist/modal.js CHANGED
@@ -5,7 +5,7 @@ import { AnimatePresence as Y, motion as X } from "framer-motion";
5
5
  import { c as b } from "./bind-06a7ff84.js";
6
6
  import "react-dnd";
7
7
  import "react-dnd-html5-backend";
8
- import { a as q } from "./dropdown-b63f2137.js";
8
+ import { a as q } from "./dropdown-ae695766.js";
9
9
  import { K as J } from "./keyCodes-f63c0e11.js";
10
10
  import { B as D } from "./button-97d9e587.js";
11
11
  import { Tooltip as Q } from "./tooltip.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reportportal/ui-kit",
3
- "version": "0.0.1-alpha.155",
3
+ "version": "0.0.1-alpha.156",
4
4
  "description": "The UI-kit library for ReportPortal Design System.",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -1,625 +0,0 @@
1
- import { jsxs as R, jsx as u, Fragment as Ve } from "react/jsx-runtime";
2
- import { forwardRef as pr, useState as ne, useRef as K, useMemo as E, useCallback as N, useLayoutEffect as Se, useEffect as V } from "react";
3
- import { createPortal as mr } from "react-dom";
4
- import { c as Me } from "./bind-06a7ff84.js";
5
- import { useFloating as gr, offset as wr, flip as yr, size as Er, autoUpdate as Cr } from "@floating-ui/react-dom";
6
- import { useSelect as pe } from "downshift";
7
- import { Scrollbars as Or } from "rc-scrollbars";
8
- import { K as _ } from "./keyCodes-f63c0e11.js";
9
- import { B as vr } from "./baseIconButton-251479f7.js";
10
- import { S as Ar } from "./clear-53660571.js";
11
- import { S as Dr } from "./dropdown-0260bb66.js";
12
- import { FieldLabel as Nr } from "./fieldLabel.js";
13
- import { AdaptiveTagList as br } from "./adaptiveTagList.js";
14
- import { C as Ir } from "./checkbox-ed6cc375.js";
15
- import { i as se } from "./isEmpty-ccacb5ff.js";
16
- const Kr = "_disabled_14s7v_12", Lr = "_hidden_14s7v_16", Tr = "_hover_14s7v_22", kr = "_selected_14s7v_38", xr = {
17
- "dropdown-option": "_dropdown-option_14s7v_1",
18
- disabled: Kr,
19
- hidden: Lr,
20
- hover: Tr,
21
- "depth-1": "_depth-1_14s7v_32",
22
- selected: kr,
23
- "multi-select": "_multi-select_14s7v_38",
24
- "single-option": "_single-option_14s7v_43",
25
- "sub-option": "_sub-option_14s7v_50"
26
- }, He = Me.bind(xr), We = pr(
27
- (n, t) => {
28
- const {
29
- option: { value: d, disabled: l, hidden: p, label: m, title: C, groupRef: O },
30
- selected: F,
31
- onChange: H,
32
- render: U,
33
- highlightHovered: B,
34
- onMouseEnter: ae,
35
- multiSelect: b,
36
- isPartiallyChecked: q = !1,
37
- depth: j = 0,
38
- hasChildren: oe = !1
39
- } = n, le = (G) => {
40
- (G.target instanceof HTMLDivElement || G.target instanceof HTMLInputElement) && (H == null || H(d));
41
- };
42
- return /* @__PURE__ */ R(
43
- "div",
44
- {
45
- className: He("dropdown-option", {
46
- selected: F,
47
- disabled: l,
48
- hidden: p,
49
- hover: B,
50
- "multi-select": b,
51
- "has-children": oe,
52
- [`depth-${j}`]: j > 0
53
- }),
54
- title: C,
55
- onClick: le,
56
- ref: t,
57
- onMouseEnter: ae,
58
- children: [
59
- b && /* @__PURE__ */ u(Ir, { value: !!F, partiallyChecked: q }),
60
- /* @__PURE__ */ u(
61
- "div",
62
- {
63
- className: He("single-option", {
64
- "sub-option": !!O
65
- }),
66
- children: U ? U(n) : m
67
- }
68
- )
69
- ]
70
- }
71
- );
72
- }
73
- ), Rr = [
74
- _.ENTER_KEY_CODE,
75
- _.SPACE_KEY_CODE,
76
- _.ARROW_DOWN_KEY_CODE
77
- ], Yr = [_.ESCAPE_KEY_CODE, _.TAB_KEY_CODE];
78
- var S = /* @__PURE__ */ ((n) => (n.ON_KEY_DOWN = "onKeyDown", n.ON_CLICK = "onClick", n))(S || {});
79
- const Pr = 240, Vr = "data-dropdown-portal-menu", Sr = 10, Hr = (n, t) => {
80
- const d = Array.isArray(t) ? t : [t];
81
- return n.findIndex(({ value: l }) => d.includes(l));
82
- }, Wr = (n, t) => (n % t + t) % t, me = (n, t = 0, d = 1) => {
83
- var p;
84
- if (n.length === 0)
85
- return 0;
86
- if (!((p = n[t]) != null && p.disabled))
87
- return t;
88
- const l = n.length;
89
- return me(
90
- n,
91
- Wr(t + d, l),
92
- d
93
- );
94
- }, Mr = (n, t) => me(n, t), $r = (n, t) => me(n, t, -1), $e = (n, t = 0, d) => !n || n.length === 0 ? [] : n.reduce((l, p) => {
95
- var m;
96
- return p && (l.push({ option: p, depth: t, parent: d }), (m = p.children) != null && m.length && l.push(...$e(p.children, t + 1, p))), l;
97
- }, []), ze = (n) => !n || n.length === 0 ? [] : n.reduce((t, d) => {
98
- var l;
99
- return d && ((l = d.children) != null && l.length ? t.push(...ze(d.children)) : t.push(d)), t;
100
- }, []), Fe = (n) => {
101
- var t;
102
- return n ? (t = n.children) != null && t.length ? n.children.reduce((d, l) => (l && d.push(...Fe(l)), d), []) : [n.value] : [];
103
- }, zr = "_container_1lti6_1", Fr = "_icon_1lti6_7", Ur = "_arrow_1lti6_15", Br = "_dropdown_1lti6_33", qr = "_disabled_1lti6_53", jr = "_value_1lti6_60", Gr = "_error_1lti6_63", Xr = "_touched_1lti6_63", Jr = "_opened_1lti6_67", Qr = "_placeholder_1lti6_101", Zr = "_ghost_1lti6_184", et = "_divider_1lti6_202", rt = {
104
- container: zr,
105
- icon: Fr,
106
- arrow: Ur,
107
- "clear-button": "_clear-button_1lti6_23",
108
- dropdown: Br,
109
- "multi-select-with-tags": "_multi-select-with-tags_1lti6_47",
110
- "transparent-background": "_transparent-background_1lti6_50",
111
- disabled: qr,
112
- value: jr,
113
- error: Gr,
114
- touched: Xr,
115
- opened: Jr,
116
- placeholder: Qr,
117
- "mobile-disabled": "_mobile-disabled_1lti6_105",
118
- "value-wrapper": "_value-wrapper_1lti6_110",
119
- "tags-wrapper": "_tags-wrapper_1lti6_116",
120
- "with-search": "_with-search_1lti6_121",
121
- "search-input": "_search-input_1lti6_128",
122
- "select-list": "_select-list_1lti6_146",
123
- "limited-width": "_limited-width_1lti6_163",
124
- "options-container": "_options-container_1lti6_167",
125
- "empty-list-message": "_empty-list-message_1lti6_172",
126
- ghost: Zr,
127
- divider: et
128
- }, h = Me.bind(rt), wt = ({
129
- multiSelect: n = !1,
130
- value: t = n ? [] : "",
131
- options: d = [],
132
- disabled: l = !1,
133
- error: p,
134
- onChange: m,
135
- onFocus: C,
136
- onBlur: O,
137
- mobileDisabled: F,
138
- title: H,
139
- touched: U = !1,
140
- icon: B,
141
- variant: ae,
142
- placeholder: b = "",
143
- label: q = "",
144
- renderOption: j,
145
- transparentBackground: oe = !1,
146
- className: le,
147
- toggleButtonClassName: G,
148
- selectListClassName: Ue,
149
- isListWidthLimited: Be = !1,
150
- optionAll: ie = { value: "all", label: "All" },
151
- isOptionAllVisible: ge = !1,
152
- onSelectAll: qe = () => {
153
- },
154
- formatDisplayedValue: we,
155
- notScrollable: W = !1,
156
- footer: X,
157
- includeGroupValue: ye = !1,
158
- clearable: je = !1,
159
- onClear: Ee = () => {
160
- },
161
- clearButtonAriaLabel: Ge = "Clear selection",
162
- menuPortalRoot: g,
163
- isMultiSelectWithTags: v = !1,
164
- noMatchesMessage: Xe = "No matches found"
165
- }) => {
166
- const [i, J] = ne(!1), [I, Ce] = ne(""), Oe = K(null), ve = K(null), M = K(null), ce = K(0), de = K(null), ue = K(null), fe = K(""), [Je, Ae] = ne(!1), [Qe, Q] = ne(null), L = K(null), $ = E(() => $e(d), [d]), T = E(() => {
167
- if (!v || !I.trim())
168
- return $;
169
- const e = I.toLowerCase();
170
- return $.filter(
171
- ({ option: r }) => r.label.toLowerCase().includes(e)
172
- );
173
- }, [$, I, v]), w = E(
174
- () => T.map(({ option: e }) => e),
175
- [T]
176
- ), De = E(
177
- () => $.map(({ option: e }) => e),
178
- [$]
179
- ), Z = E(() => T.filter(({ option: e }) => {
180
- var r;
181
- return (r = e.children) == null ? void 0 : r.length;
182
- }).map(({ option: e }) => e), [T]), Ne = E(() => ze(d), [d]), A = E(
183
- () => Ne.map(({ value: e }) => e),
184
- [Ne]
185
- ), ee = E(() => {
186
- const e = /* @__PURE__ */ new Map();
187
- return Z.forEach((r) => {
188
- e.set(r.value, Fe(r));
189
- }), e;
190
- }, [Z]), z = N(
191
- (e) => (Z.forEach((r) => {
192
- const s = ee.get(r.value) ?? [], o = s.length > 0 && s.every((c) => e.has(c));
193
- ye && o ? e.add(r.value) : e.delete(r.value);
194
- }), e),
195
- [Z, ye, ee]
196
- ), k = E(() => !n || !Array.isArray(t) ? /* @__PURE__ */ new Set() : z(new Set(t)), [n, t, z]), be = n ? Array.isArray(t) && t.length > 0 : t || t === !1 || t === 0, Ze = je && be && !l, er = N((e) => {
197
- ce.current = e.scrollTop;
198
- }, []);
199
- Se(() => {
200
- i && !W && M.current && !(n && L.current !== null) && M.current.scrollTop(ce.current);
201
- }, [i, W, t, n]);
202
- const { refs: Y, floatingStyles: Ie } = gr({
203
- placement: "bottom-start",
204
- middleware: [
205
- wr(5),
206
- yr({
207
- fallbackPlacements: ["bottom-start", "top-start", "bottom", "top"],
208
- ...g && {
209
- boundary: document.documentElement,
210
- rootBoundary: "viewport"
211
- }
212
- }),
213
- g ? Er({
214
- apply({ rects: e, elements: r }) {
215
- const s = e.reference.width;
216
- Object.assign(r.floating.style, {
217
- width: `${s}px`,
218
- minWidth: `${s}px`,
219
- maxWidth: `${s}px`
220
- });
221
- }
222
- }) : null
223
- ].filter(Boolean),
224
- whileElementsMounted: i ? (e, r, s) => Cr(e, r, s, {
225
- animationFrame: !0
226
- }) : void 0
227
- }), rr = () => {
228
- if (!ge)
229
- return;
230
- const e = Array.isArray(t) ? t : [], r = new Set(e), s = A.some((c) => !r.has(c));
231
- A.forEach((c) => {
232
- s ? r.add(c) : r.delete(c);
233
- });
234
- const o = z(r);
235
- m(Array.from(o)), qe();
236
- }, re = N(() => {
237
- i || (J(!0), C == null || C());
238
- }, [i, C]), y = N(() => {
239
- J(!1), Ce(""), fe.current = "", O == null || O();
240
- }, [O]), he = N(() => {
241
- if (l)
242
- return;
243
- m(n ? [] : ""), Ee(), y(), requestAnimationFrame(() => {
244
- const r = Y.reference.current;
245
- r && r instanceof HTMLElement && r.focus();
246
- });
247
- }, [l, n, m, Ee, y, Y]), tr = N(
248
- (e) => {
249
- e.preventDefault(), e.stopPropagation(), he();
250
- },
251
- [he]
252
- ), Ke = N(
253
- (e) => {
254
- var c, a;
255
- if (!i)
256
- return;
257
- const r = e == null ? void 0 : e.target;
258
- if (!r)
259
- return;
260
- const s = (c = Oe.current) == null ? void 0 : c.contains(r), o = (a = ve.current) == null ? void 0 : a.contains(r);
261
- !s && !o && y();
262
- },
263
- [i, y]
264
- );
265
- V(() => {
266
- if (!i)
267
- return;
268
- const e = (r) => {
269
- Ke(r);
270
- };
271
- return document.addEventListener("pointerdown", e), () => {
272
- document.removeEventListener("pointerdown", e);
273
- };
274
- }, [i, Ke]);
275
- const Le = (e) => {
276
- var r;
277
- if (!e.disabled) {
278
- if (n) {
279
- const s = Array.isArray(t) ? t : [], o = new Set(s);
280
- if ((r = e.children) != null && r.length) {
281
- const a = ee.get(e.value) ?? [], f = a.some((D) => !o.has(D));
282
- a.forEach((D) => {
283
- f ? o.add(D) : o.delete(D);
284
- });
285
- } else
286
- o.has(e.value) ? o.delete(e.value) : o.add(e.value);
287
- const c = z(o);
288
- m(Array.from(c));
289
- } else
290
- m(e.value);
291
- J((s) => n || !s);
292
- }
293
- }, nr = () => w.find(({ value: e }) => e === t), Te = Hr(w, t), {
294
- getToggleButtonProps: sr,
295
- getLabelProps: ar,
296
- getMenuProps: ke,
297
- getItemProps: or,
298
- setHighlightedIndex: x,
299
- highlightedIndex: _e
300
- } = pe({
301
- items: w,
302
- itemToString: (e) => (e != null && e.label ? String(e.label) : b) || "",
303
- selectedItem: nr(),
304
- isOpen: i,
305
- circularNavigation: !0,
306
- defaultHighlightedIndex: Te,
307
- onHighlightedIndexChange: (e) => {
308
- switch (e.type) {
309
- case pe.stateChangeTypes.MenuKeyDownArrowUp:
310
- return Q(S.ON_KEY_DOWN), x($r(w, e.highlightedIndex)), e;
311
- case pe.stateChangeTypes.MenuKeyDownArrowDown:
312
- return Q(S.ON_KEY_DOWN), x(Mr(w, e.highlightedIndex)), e;
313
- default:
314
- return e;
315
- }
316
- }
317
- }), xe = N(
318
- (e) => {
319
- ve.current = e, Y.setFloating(e);
320
- },
321
- [Y]
322
- ), lr = N(
323
- (e = {}) => {
324
- const r = ke(e), s = r.ref;
325
- return {
326
- ...r,
327
- ref: (o) => {
328
- xe(o), typeof s == "function" ? s(o) : s && (s.current = o);
329
- }
330
- };
331
- },
332
- [ke, xe]
333
- );
334
- V(() => {
335
- n && i && L.current !== null && L.current >= 0 && L.current < w.length && (x(L.current), L.current = null, requestAnimationFrame(() => {
336
- M.current && !W && M.current.scrollTop(ce.current);
337
- }));
338
- }, [n, i, t, w.length, x, W]), V(() => {
339
- i && v && requestAnimationFrame(() => {
340
- var e;
341
- (e = ue.current) == null || e.focus();
342
- });
343
- }, [i, v]), V(() => {
344
- v && i && I !== fe.current && (fe.current = I, I && x(0));
345
- }, [I, v, i]), Se(() => {
346
- if (!i || !g)
347
- return;
348
- let e = window.scrollY, r = !0;
349
- const s = 300, o = () => {
350
- if (!r)
351
- return;
352
- window.scrollY !== e && window.scrollTo(0, e);
353
- }, c = (f) => {
354
- r && (f.preventDefault(), f.stopImmediatePropagation(), o());
355
- };
356
- e = window.scrollY, window.addEventListener("scroll", c, { passive: !1, capture: !0 }), requestAnimationFrame(() => {
357
- e = window.scrollY, o();
358
- });
359
- const a = setTimeout(() => {
360
- r = !1;
361
- }, s);
362
- return () => {
363
- clearTimeout(a), window.removeEventListener("scroll", c, { capture: !0 });
364
- };
365
- }, [i, g]), V(() => {
366
- if (!i || !g)
367
- return;
368
- const e = () => {
369
- y();
370
- };
371
- return window.addEventListener("resize", e), () => {
372
- window.removeEventListener("resize", e);
373
- };
374
- }, [i, g, y]);
375
- const Re = () => {
376
- l || (J((e) => !e), i ? O == null || O() : C == null || C(), Q(S.ON_CLICK));
377
- }, te = E(() => {
378
- if (n && Array.isArray(t) && A.length > 0 && A.every((r) => k.has(r)))
379
- return ie.label;
380
- const e = w.reduce((r, s) => ((Array.isArray(t) && t.includes(s.value) || s.value === t) && r.push(s.label), r), []);
381
- if (e.length > 0)
382
- return e.join(", ");
383
- if (!t && t !== !1 && t !== 0 || Array.isArray(t) && !t.length)
384
- return b;
385
- }, [
386
- n,
387
- t,
388
- A,
389
- k,
390
- ie.label,
391
- w,
392
- b
393
- ]);
394
- V(() => {
395
- if (de.current) {
396
- const { offsetWidth: e, scrollWidth: r } = de.current;
397
- Ae(r > e);
398
- } else
399
- Ae(!1);
400
- }, [te]);
401
- const ir = (e) => {
402
- const { keyCode: r } = e;
403
- Rr.includes(r) && e.target === e.currentTarget && (e.preventDefault(), e.stopPropagation(), !i && (x(Te), re(), Q(S.ON_KEY_DOWN)));
404
- }, cr = (e) => {
405
- const { keyCode: r } = e;
406
- if (r === _.ENTER_KEY_CODE || r === _.SPACE_KEY_CODE) {
407
- const s = w[_e];
408
- if (!s)
409
- return;
410
- n && (L.current = _e), Le(s), n || y();
411
- return;
412
- }
413
- Yr.includes(r) && (e.stopPropagation(), y());
414
- }, Ye = () => /* @__PURE__ */ R("div", { className: h("options-container"), children: [
415
- n && ge && !se(T) && /* @__PURE__ */ R(Ve, { children: [
416
- /* @__PURE__ */ u(
417
- We,
418
- {
419
- option: ie,
420
- selected: Array.isArray(t) && A.length > 0 && A.every((e) => k.has(e)),
421
- onChange: rr,
422
- multiSelect: n,
423
- isPartiallyChecked: A.some((e) => k.has(e)) && !A.every((e) => k.has(e))
424
- }
425
- ),
426
- /* @__PURE__ */ u("div", { className: h("divider") }),
427
- " "
428
- ] }),
429
- se(T) ? /* @__PURE__ */ u("div", { className: h("empty-list-message"), children: Xe }) : T.map(({ option: e, depth: r }, s) => {
430
- var f, D;
431
- const o = ee.get(e.value) ?? [e.value], c = n && o.every((P) => k.has(P)), a = n && ((f = e.children) == null ? void 0 : f.length) && o.some((P) => k.has(P)) && !c;
432
- return /* @__PURE__ */ u(
433
- We,
434
- {
435
- ...or({
436
- item: e,
437
- index: s
438
- }),
439
- multiSelect: n,
440
- selected: n ? c : e.value === t,
441
- option: { title: e.label, ...e },
442
- highlightHovered: _e === s && Qe !== S.ON_CLICK,
443
- render: j,
444
- onChange: e.disabled ? null : () => Le(e),
445
- onMouseEnter: () => x(s),
446
- depth: r,
447
- hasChildren: !!((D = e.children) != null && D.length),
448
- isPartiallyChecked: a
449
- },
450
- e.value
451
- );
452
- }),
453
- X && /* @__PURE__ */ R(Ve, { children: [
454
- /* @__PURE__ */ u("div", { className: h("divider") }),
455
- typeof X == "function" ? X(y) : X
456
- ] })
457
- ] }), dr = () => {
458
- const e = De.reduce((a, f) => (Array.isArray(t) && t.includes(f.value) && a.push(f.label), a), []), r = (a) => {
459
- const f = De.find(
460
- ({ label: _r }) => _r === a
461
- );
462
- if (!f)
463
- return;
464
- const D = Array.isArray(t) ? t : [], P = new Set(D);
465
- P.delete(f.value);
466
- const hr = z(P);
467
- m(Array.from(hr));
468
- }, s = (a) => {
469
- const f = a.target;
470
- Ce(f.value), i || (re(), requestAnimationFrame(() => {
471
- f.focus();
472
- }));
473
- }, o = (a) => {
474
- if (a.keyCode === _.ESCAPE_KEY_CODE) {
475
- a.stopPropagation(), y();
476
- return;
477
- }
478
- a.keyCode === _.ENTER_KEY_CODE || a.keyCode === _.SPACE_KEY_CODE || (a.keyCode === _.ARROW_DOWN_KEY_CODE || a.keyCode === _.ARROW_UP_KEY_CODE) && (a.preventDefault(), re());
479
- }, c = /* @__PURE__ */ u(
480
- "input",
481
- {
482
- ref: ue,
483
- type: "text",
484
- className: h("search-input"),
485
- value: I,
486
- onChange: s,
487
- onKeyDown: o,
488
- onClick: (a) => {
489
- a.stopPropagation(), re();
490
- },
491
- placeholder: se(e) ? b : "",
492
- autoComplete: "off"
493
- }
494
- );
495
- return se(e) ? /* @__PURE__ */ u("div", { className: h("tags-wrapper", "with-search"), children: c }) : /* @__PURE__ */ R("div", { className: h("tags-wrapper", "with-search"), children: [
496
- /* @__PURE__ */ u(
497
- br,
498
- {
499
- tags: e,
500
- onRemoveTag: r,
501
- isShowAllView: !0,
502
- defaultVisibleLines: Sr
503
- }
504
- ),
505
- c
506
- ] });
507
- }, ur = () => {
508
- if (v && n && Array.isArray(t))
509
- return dr();
510
- const e = we ? we(te) : te, r = be && !!e && Je;
511
- return /* @__PURE__ */ u(
512
- "span",
513
- {
514
- ref: de,
515
- className: h("value", {
516
- placeholder: te === b
517
- }),
518
- title: r ? e : void 0,
519
- children: e
520
- }
521
- );
522
- }, fr = sr({
523
- className: h("dropdown", ae, G, {
524
- "transparent-background": oe,
525
- opened: i,
526
- disabled: l,
527
- error: p,
528
- touched: U,
529
- "mobile-disabled": F,
530
- "multi-select-with-tags": v
531
- }),
532
- onClick: Re,
533
- onKeyDown: ir,
534
- ref: Y.setReference
535
- }), { type: tt, ...Pe } = fr;
536
- return /* @__PURE__ */ R("div", { ref: Oe, className: h("container", le), title: H, children: [
537
- q && /* @__PURE__ */ u(
538
- Nr,
539
- {
540
- ...ar(),
541
- onClick: () => !l && Re(),
542
- style: { cursor: l ? "default" : "pointer" },
543
- children: q
544
- }
545
- ),
546
- /* @__PURE__ */ R(
547
- "div",
548
- {
549
- ...Pe,
550
- role: "button",
551
- "aria-disabled": l,
552
- tabIndex: l ? -1 : Pe.tabIndex ?? 0,
553
- children: [
554
- B && /* @__PURE__ */ u("span", { className: h("icon"), children: B }),
555
- /* @__PURE__ */ u("div", { className: h("value-wrapper"), children: ur() }),
556
- Ze && /* @__PURE__ */ u(
557
- vr,
558
- {
559
- className: h("clear-button"),
560
- onClick: tr,
561
- onKeyDown: (e) => {
562
- const { keyCode: r } = e;
563
- (r === _.ENTER_KEY_CODE || r === _.SPACE_KEY_CODE) && (e.preventDefault(), e.stopPropagation(), he());
564
- },
565
- "aria-label": Ge,
566
- children: /* @__PURE__ */ u(Ar, {})
567
- }
568
- ),
569
- /* @__PURE__ */ u("span", { className: h("arrow"), "aria-hidden": "true", children: /* @__PURE__ */ u(Dr, {}) })
570
- ]
571
- }
572
- ),
573
- i && (() => {
574
- var o;
575
- const e = (o = Y.reference.current) == null ? void 0 : o.getBoundingClientRect().width, r = g && e ? {
576
- ...Ie,
577
- width: `${e}px`,
578
- minWidth: `${e}px`,
579
- maxWidth: `${e}px`
580
- } : Ie, s = /* @__PURE__ */ u(
581
- "div",
582
- {
583
- style: r,
584
- className: h(
585
- "select-list",
586
- {
587
- opened: i,
588
- "limited-width": Be
589
- },
590
- Ue
591
- ),
592
- ...g && { [Vr]: "" },
593
- ...lr({
594
- onKeyDown: cr,
595
- ...v && {
596
- tabIndex: -1,
597
- onFocus: (c) => {
598
- var a;
599
- c.preventDefault(), (a = ue.current) == null || a.focus();
600
- }
601
- }
602
- }),
603
- children: W ? Ye() : /* @__PURE__ */ u(
604
- Or,
605
- {
606
- autoHeight: !0,
607
- autoHeightMax: Pr,
608
- hideTracksWhenNotNeeded: !0,
609
- ref: (c) => {
610
- M.current = c;
611
- },
612
- onScrollFrame: er,
613
- children: Ye()
614
- }
615
- )
616
- }
617
- );
618
- return g ? mr(s, g) : s;
619
- })()
620
- ] });
621
- };
622
- export {
623
- wt as D,
624
- Vr as a
625
- };