mimir-ui-kit 1.35.3 → 1.36.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.
Files changed (43) hide show
  1. package/dist/{Input-B-gKQ9FT.js → Input-DlGNMuUD.js} +67 -64
  2. package/dist/assets/Accordion.css +1 -1
  3. package/dist/assets/Input.css +1 -1
  4. package/dist/assets/ListPhotos.css +1 -1
  5. package/dist/assets/MultiSelectSearch.css +1 -0
  6. package/dist/assets/SelectSearch.css +1 -1
  7. package/dist/combobox-CDU06zJj.js +2855 -0
  8. package/dist/components/Accordion/Accordion.js +180 -174
  9. package/dist/components/Button/Button.d.ts +36 -0
  10. package/dist/components/Button/Button.js +44 -43
  11. package/dist/components/CheckboxMimir/CheckboxMimir.d.ts +2 -0
  12. package/dist/components/CheckboxMimir/CheckboxMimir.js +37 -30
  13. package/dist/components/Chip/Chip.d.ts +5 -1
  14. package/dist/components/Chip/Chip.js +23 -22
  15. package/dist/components/DatePicker/DatePicker.js +1 -1
  16. package/dist/components/Input/Input.js +1 -1
  17. package/dist/components/Input/index.js +1 -1
  18. package/dist/components/InputPassword/InputPassword.js +1 -1
  19. package/dist/components/InputPhoneNumber/InputPhoneNumber.js +1 -1
  20. package/dist/components/ListPhotos/ListPhotos.js +4 -4
  21. package/dist/components/MultiSelectSearch/MultiSelectSearch.d.ts +22 -0
  22. package/dist/components/MultiSelectSearch/MultiSelectSearch.js +318 -0
  23. package/dist/components/MultiSelectSearch/constants.d.ts +4 -0
  24. package/dist/components/MultiSelectSearch/constants.js +4 -0
  25. package/dist/components/MultiSelectSearch/index.d.ts +3 -0
  26. package/dist/components/MultiSelectSearch/index.js +6 -0
  27. package/dist/components/MultiSelectSearch/types.d.ts +60 -0
  28. package/dist/components/MultiSelectSearch/utils.d.ts +8 -0
  29. package/dist/components/MultiSelectSearch/utils.js +19 -0
  30. package/dist/components/OtpInput/OtpInput.js +1 -1
  31. package/dist/components/SelectSearch/SelectSearch.js +172 -3017
  32. package/dist/components/SelectSearch/utils.d.ts +5 -0
  33. package/dist/components/SelectSearch/utils.js +17 -0
  34. package/dist/components/Switcher/Switcher.js +48 -48
  35. package/dist/components/TabTrail/TabTrail.js +171 -171
  36. package/dist/components/TextArea/TextArea.js +1 -1
  37. package/dist/components/index.js +1 -1
  38. package/dist/index.js +1 -1
  39. package/dist/open-closed-CdldUPoq.js +86 -0
  40. package/dist/use-resolve-button-type-DhFdPxnv.js +12 -0
  41. package/package.json +3 -2
  42. package/dist/open-closed-Cy6VDfYc.js +0 -93
  43. package/dist/use-resolve-button-type-BAxjHhds.js +0 -19
@@ -0,0 +1,318 @@
1
+ import { jsxs as h, jsx as o, Fragment as q } from "react/jsx-runtime";
2
+ import { c as r } from "../../index-DIxK0V-G.js";
3
+ import { forwardRef as ne, useRef as B, useState as C, useMemo as oe, useEffect as se } from "react";
4
+ import { EMultiSelectSearchSize as S } from "./constants.js";
5
+ import { getInitialInputValue as ie, mapSizeToInputSize as O, getDropdownArrowIcon as re, joinSelectedItems as R } from "./utils.js";
6
+ import { Icon as le } from "../../icons/Icon.js";
7
+ import { Button as ae } from "../Button/Button.js";
8
+ import { CheckboxMimir as ce } from "../CheckboxMimir/CheckboxMimir.js";
9
+ import { Chip as pe } from "../Chip/Chip.js";
10
+ import { I as E } from "../../Input-DlGNMuUD.js";
11
+ import { EInputVariant as ue } from "../Input/constants.js";
12
+ import { H as me, U as F, G as P, K as de, W as _e } from "../../combobox-CDU06zJj.js";
13
+ import '../../assets/MultiSelectSearch.css';const he = "_disabled_mkspj_5", fe = "_container_mkspj_9", ke = "_full_mkspj_27", be = "_button_mkspj_39", je = "_options_mkspj_53", ge = "_top_mkspj_64", ve = "_bottom_mkspj_69", Ie = "_m_mkspj_2", Ne = "_l_mkspj_111", we = "_focused_mkspj_129", Ce = "_option_mkspj_53", Se = "_clear_mkspj_175", e = {
14
+ "multi-select-search": "_multi-select-search_mkspj_2",
15
+ disabled: he,
16
+ container: fe,
17
+ "container-open": "_container-open_mkspj_18",
18
+ "input-container": "_input-container_mkspj_22",
19
+ full: ke,
20
+ "selected-icon": "_selected-icon_mkspj_31",
21
+ "selector-icon-open": "_selector-icon-open_mkspj_35",
22
+ button: be,
23
+ "selector-icon": "_selector-icon_mkspj_35",
24
+ options: je,
25
+ top: ge,
26
+ bottom: ve,
27
+ "no-options": "_no-options_mkspj_90",
28
+ m: Ie,
29
+ l: Ne,
30
+ "multi-select-input-disabled": "_multi-select-input-disabled_mkspj_126",
31
+ "multi-select-input": "_multi-select-input_mkspj_126",
32
+ focused: we,
33
+ option: Ce,
34
+ "option-active": "_option-active_mkspj_148",
35
+ "option-inner": "_option-inner_mkspj_151",
36
+ "chip-container": "_chip-container_mkspj_158",
37
+ "right-slot": "_right-slot_mkspj_165",
38
+ "required-mark": "_required-mark_mkspj_170",
39
+ clear: Se,
40
+ "icon-button": "_icon-button_mkspj_184"
41
+ }, Re = ne(
42
+ (G, W) => {
43
+ const {
44
+ placeholder: x,
45
+ size: i = S.L,
46
+ value: M,
47
+ onChange: s,
48
+ full: H,
49
+ showArrow: K = !0,
50
+ items: p = [],
51
+ classNameOption: U,
52
+ displayValue: f = "name",
53
+ filterOnSearch: z = !0,
54
+ onSearch: g,
55
+ variant: D = ue.DefaultGray,
56
+ menuPlacement: v = "bottom",
57
+ disabled: l = !1,
58
+ searchProps: y,
59
+ withClearButton: I = !1,
60
+ withChip: J = !1,
61
+ chipVariant: Q = "sapphire",
62
+ disableInput: u = !1
63
+ } = G, N = B(null), c = B(null), [k, m] = C(!1), [d, b] = C(
64
+ () => ie(M, f)
65
+ ), [_, j] = C(
66
+ M || []
67
+ ), A = oe(() => {
68
+ var n;
69
+ if (!z) return p;
70
+ const t = ((n = d.split(",").pop()) == null ? void 0 : n.trim().toLowerCase()) ?? "";
71
+ return p.filter(
72
+ (a) => a.name.toLowerCase().includes(t)
73
+ );
74
+ }, [z, p, d]), X = (t) => {
75
+ j(t), s == null || s(t);
76
+ const n = R(t, f);
77
+ b(n), m(!0), setTimeout(() => {
78
+ if (c.current) {
79
+ c.current.focus(), c.current.scrollLeft = c.current.scrollWidth;
80
+ const a = n.length;
81
+ c.current.setSelectionRange(a, a);
82
+ }
83
+ }, 0);
84
+ }, L = (t) => {
85
+ if (u) return;
86
+ const n = t.target.value;
87
+ b(n), g == null || g(n);
88
+ const a = n.split(",").map((w) => w.trim()).filter(Boolean), V = p.filter(
89
+ (w) => a.includes(w[f])
90
+ );
91
+ j(V), s == null || s(V), m(!0);
92
+ }, Y = (t) => {
93
+ const n = _.filter(
94
+ (a) => a.id !== t.id
95
+ );
96
+ j(n), s == null || s(n), b(R(n, f));
97
+ }, T = () => m((t) => !t), Z = (t) => {
98
+ t.preventDefault(), t.currentTarget.focus();
99
+ const n = t.currentTarget.value.length;
100
+ t.currentTarget.setSelectionRange(n, n);
101
+ }, $ = () => {
102
+ b(""), j([]), s == null || s([]);
103
+ }, ee = (t) => {
104
+ t.stopPropagation(), $();
105
+ }, te = (t) => {
106
+ u && t.target.blur();
107
+ };
108
+ return se(() => {
109
+ const t = (n) => {
110
+ N.current && !N.current.contains(n.target) && !n.defaultPrevented && m(!1);
111
+ };
112
+ return document.addEventListener("mousedown", t), () => {
113
+ document.removeEventListener("mousedown", t);
114
+ };
115
+ }, []), /* @__PURE__ */ h("div", { ref: N, children: [
116
+ /* @__PURE__ */ o(
117
+ me,
118
+ {
119
+ multiple: !0,
120
+ as: "div",
121
+ value: _,
122
+ className: r(e["multi-select-search"], {
123
+ [e.full]: H,
124
+ [e.disabled]: l
125
+ }),
126
+ onChange: X,
127
+ ref: W,
128
+ disabled: l,
129
+ virtual: { options: A },
130
+ children: /* @__PURE__ */ h(
131
+ "div",
132
+ {
133
+ className: r(e.container, e[i], {
134
+ [e["container-open"]]: k
135
+ }),
136
+ children: [
137
+ u && /* @__PURE__ */ h("div", { className: e["input-container"], children: [
138
+ /* @__PURE__ */ o(
139
+ F,
140
+ {
141
+ disabled: l,
142
+ style: { width: "100%" },
143
+ onClick: T,
144
+ children: /* @__PURE__ */ o(
145
+ P,
146
+ {
147
+ as: E,
148
+ label: x,
149
+ size: O(i),
150
+ className: r(e["multi-select-input"], {
151
+ [e["multi-select-input-disabled"]]: u && I
152
+ }),
153
+ onChange: L,
154
+ value: d,
155
+ disabled: l,
156
+ variant: D,
157
+ rightSlotClassName: e["right-slot"],
158
+ requiredMarkClassName: e["required-mark"],
159
+ "data-testid": "select-search-input",
160
+ onFocus: te,
161
+ rightAddon: {
162
+ addonType: "icon",
163
+ addonContent: re(k, i)
164
+ },
165
+ ...y
166
+ }
167
+ )
168
+ }
169
+ ),
170
+ I && d && /* @__PURE__ */ o(
171
+ ae,
172
+ {
173
+ tabIndex: -1,
174
+ className: r(e.clear, {
175
+ [e.disabled]: l
176
+ }),
177
+ iconButtonClassName: e["icon-button"],
178
+ isIconButton: !0,
179
+ iconName: "Close16px",
180
+ size: "m-s",
181
+ clear: !0,
182
+ disabled: l,
183
+ variant: "secondary-gray",
184
+ onClick: ee,
185
+ "data-testid": "clear-button"
186
+ }
187
+ )
188
+ ] }),
189
+ !u && /* @__PURE__ */ o(
190
+ P,
191
+ {
192
+ as: E,
193
+ label: x,
194
+ size: O(i),
195
+ className: e["multi-select-input"],
196
+ rightSlotClassName: e["right-slot"],
197
+ requiredMarkClassName: e["required-mark"],
198
+ value: d,
199
+ disabled: l,
200
+ variant: D,
201
+ withClearButton: I,
202
+ onFocus: () => m(!0),
203
+ onMouseDown: Z,
204
+ onChange: L,
205
+ ref: c,
206
+ rightAddon: {
207
+ addonType: "react-node",
208
+ addonContent: K && /* @__PURE__ */ o(
209
+ F,
210
+ {
211
+ className: r(e.button, {
212
+ [e.disabled]: l
213
+ }),
214
+ disabled: l,
215
+ onClick: T,
216
+ children: /* @__PURE__ */ o(
217
+ le,
218
+ {
219
+ iconName: i == S.M ? "DropdownArrowBottom16px" : "DropdownArrowDown24px",
220
+ className: r(e["selector-icon"], {
221
+ [e["selector-icon-open"]]: k
222
+ })
223
+ }
224
+ )
225
+ }
226
+ )
227
+ },
228
+ "data-testid": "select-search-input",
229
+ ...y
230
+ }
231
+ ),
232
+ k && /* @__PURE__ */ o(q, { children: p.length ? A.length ? /* @__PURE__ */ o(
233
+ de,
234
+ {
235
+ className: r(
236
+ e.options,
237
+ e[i],
238
+ e[v]
239
+ ),
240
+ modal: !1,
241
+ static: !0,
242
+ children: ({ option: t }) => /* @__PURE__ */ o(
243
+ _e,
244
+ {
245
+ value: t,
246
+ className: ({ focus: n }) => r(
247
+ e.option,
248
+ U,
249
+ i && e[i],
250
+ {
251
+ [e["option-active"]]: n
252
+ }
253
+ ),
254
+ children: /* @__PURE__ */ h(q, { children: [
255
+ /* @__PURE__ */ h("div", { className: e["option-inner"], children: [
256
+ t.name,
257
+ t.bottom && /* @__PURE__ */ o("div", { children: t.bottom })
258
+ ] }),
259
+ /* @__PURE__ */ o(
260
+ ce,
261
+ {
262
+ isInteractive: !1,
263
+ checked: _.some(
264
+ (n) => n.id === t.id
265
+ )
266
+ }
267
+ )
268
+ ] })
269
+ },
270
+ t.id
271
+ )
272
+ }
273
+ ) : /* @__PURE__ */ o(
274
+ "div",
275
+ {
276
+ className: r(
277
+ e.options,
278
+ e[i],
279
+ e["no-options"],
280
+ e[v]
281
+ ),
282
+ children: "Ничего не найдено"
283
+ }
284
+ ) : /* @__PURE__ */ o(
285
+ "div",
286
+ {
287
+ className: r(
288
+ e.options,
289
+ e[i],
290
+ e["no-options"],
291
+ e[v]
292
+ ),
293
+ children: "Нет данных"
294
+ }
295
+ ) })
296
+ ]
297
+ }
298
+ )
299
+ }
300
+ ),
301
+ J && _.length > 0 && /* @__PURE__ */ o("div", { className: e["chip-container"], children: _.map((t) => /* @__PURE__ */ o(
302
+ pe,
303
+ {
304
+ size: i === S.L ? "s" : "xs",
305
+ variant: Q,
306
+ className: e.chip,
307
+ withAction: !0,
308
+ onClose: () => Y(t),
309
+ children: t.name
310
+ },
311
+ t.id
312
+ )) })
313
+ ] });
314
+ }
315
+ );
316
+ export {
317
+ Re as MultiSelectSearch
318
+ };
@@ -0,0 +1,4 @@
1
+ export declare enum EMultiSelectSearchSize {
2
+ M = "m",
3
+ L = "l"
4
+ }
@@ -0,0 +1,4 @@
1
+ var m = /* @__PURE__ */ ((r) => (r.M = "m", r.L = "l", r))(m || {});
2
+ export {
3
+ m as EMultiSelectSearchSize
4
+ };
@@ -0,0 +1,3 @@
1
+ export { MultiSelectSearch } from './MultiSelectSearch';
2
+ export type { TMultiSelectSearchProps, TMultiSelectOption } from './types';
3
+ export { EMultiSelectSearchSize } from './constants';
@@ -0,0 +1,6 @@
1
+ import { MultiSelectSearch as t } from "./MultiSelectSearch.js";
2
+ import { EMultiSelectSearchSize as c } from "./constants.js";
3
+ export {
4
+ c as EMultiSelectSearchSize,
5
+ t as MultiSelectSearch
6
+ };
@@ -0,0 +1,60 @@
1
+ import { ReactNode } from 'react';
2
+ import { EMultiSelectSearchSize } from './constants';
3
+ import { EChipVariant } from '../Chip';
4
+ import { TInputProps } from '../Input';
5
+
6
+ export type TMultiSelectOption = {
7
+ name: string;
8
+ id: number | string;
9
+ bottom?: ReactNode;
10
+ [index: string]: unknown;
11
+ };
12
+ export type TMenuPlacement = 'top' | 'bottom';
13
+ export type TMultiSelectSearchProps = Pick<TInputProps, 'withClearButton' | 'variant'> & {
14
+ /**
15
+ * Текущее выбранное значение.
16
+ */
17
+ value?: TMultiSelectOption[] | null;
18
+ /**
19
+ * Функция обратного вызова при изменении выбранного значения.
20
+ */
21
+ onChange?: (value: TMultiSelectOption[]) => void;
22
+ /**
23
+ * Текст-подсказка для поля, предназначенного для отображения выбранных значений.
24
+ */
25
+ placeholder?: string;
26
+ /**
27
+ * Размер компонента выбора.
28
+ */
29
+ size?: EMultiSelectSearchSize;
30
+ /**
31
+ * Флаг для растягивания компонента на всю ширину контейнера.
32
+ */
33
+ full?: boolean;
34
+ /**
35
+ * Значение, отображаемое в поле выбора.
36
+ */
37
+ displayValue?: string;
38
+ /** Показывать ли иконку стрелки выпадающего списка */
39
+ showArrow?: boolean;
40
+ /** Функция обратного вызова, срабатывающая при изменении поискового запроса */
41
+ onSearch?: (value: string) => void;
42
+ /** Фильтровать ли варианты на основе поискового запроса */
43
+ filterOnSearch?: boolean;
44
+ /** Значения, передаваемые в MultiSelectSearch */
45
+ items: TMultiSelectOption[];
46
+ /** Класснейм для значения */
47
+ classNameOption?: string;
48
+ /** Варианты отображения выпадающего меню */
49
+ menuPlacement?: TMenuPlacement;
50
+ /** Отключает компонент MultiSelectSearch */
51
+ disabled?: boolean;
52
+ /** Пропсы для инпута поиска опций */
53
+ searchProps?: Pick<TInputProps, 'numbersOnly' | 'maxLength' | 'required'>;
54
+ /** Отображать ли компонент Chip под MultiSelectSearch */
55
+ withChip?: boolean;
56
+ /** Вариант Chip*/
57
+ chipVariant?: EChipVariant | `${EChipVariant}`;
58
+ /** Отключает инпут, но позволяет открывать меню*/
59
+ disableInput?: boolean;
60
+ };
@@ -0,0 +1,8 @@
1
+ import { EMultiSelectSearchSize } from './constants';
2
+ import { TMultiSelectOption } from './types';
3
+ import { EInputSize } from '../Input';
4
+
5
+ export declare const mapSizeToInputSize: (size: EMultiSelectSearchSize) => EInputSize;
6
+ export declare const getDropdownArrowIcon: (isOpen: boolean, size: EMultiSelectSearchSize) => "DropdownArrowBottom16px" | "DropdownArrowUp24px" | "DropdownArrowDown24px" | "DropdownArrowUp16px";
7
+ export declare const getInitialInputValue: (value: TMultiSelectOption[] | undefined | null, displayValue: string) => string;
8
+ export declare const joinSelectedItems: (items: TMultiSelectOption[], displayValue: string) => string;
@@ -0,0 +1,19 @@
1
+ import { EMultiSelectSearchSize as t } from "./constants.js";
2
+ import "../../Input-DlGNMuUD.js";
3
+ import { EInputSize as e } from "../Input/constants.js";
4
+ const w = (r) => {
5
+ switch (r) {
6
+ case t.M:
7
+ return e.M;
8
+ case t.L:
9
+ return e.L;
10
+ default:
11
+ return e.M;
12
+ }
13
+ }, c = (r, o) => r ? o === t.L ? "DropdownArrowUp24px" : "DropdownArrowUp16px" : o === t.L ? "DropdownArrowDown24px" : "DropdownArrowBottom16px", m = (r, o) => r && r.length > 0 ? r.map((n) => n[o]).join(", ") + ", " : "", a = (r, o) => r.map((n) => n[o]).join(", ") + (r.length ? ", " : "");
14
+ export {
15
+ c as getDropdownArrowIcon,
16
+ m as getInitialInputValue,
17
+ a as joinSelectedItems,
18
+ w as mapSizeToInputSize
19
+ };
@@ -3,7 +3,7 @@ import { c as u } from "../../index-DIxK0V-G.js";
3
3
  import { forwardRef as P, useImperativeHandle as R, Fragment as T } from "react";
4
4
  import { ITEMS_PER_SEPARATOR as q, DEFAULT_VALUE_LENGTH as v } from "./constants.js";
5
5
  import { useOTPInput as y } from "./hooks.js";
6
- import { I as A } from "../../Input-B-gKQ9FT.js";
6
+ import { I as A } from "../../Input-DlGNMuUD.js";
7
7
  import '../../assets/OtpInput.css';const C = "_otp_1shq3_3", F = "_input_1shq3_14", L = "_separator_1shq3_28", r = {
8
8
  otp: C,
9
9
  "input-wrapper": "_input-wrapper_1shq3_14",