mimir-ui-kit 1.8.0 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. package/dist/{DatePickerModal-ByEDSY5o.js → DatePickerModal-DUUCHAWF.js} +17 -17
  2. package/dist/assets/DatePickerModal.css +1 -1
  3. package/dist/assets/SelectSearch.css +1 -1
  4. package/dist/assets/Timer.css +1 -0
  5. package/dist/components/DatePicker/DatePicker.d.ts +5 -5
  6. package/dist/components/DatePicker/DatePicker.js +1 -1
  7. package/dist/components/DatePicker/DatePickerModal.js +1 -1
  8. package/dist/components/DatePicker/index.d.ts +1 -1
  9. package/dist/components/Input/Input.d.ts +2 -2
  10. package/dist/components/RadioGroup/RadioGroup.d.ts +18 -2
  11. package/dist/components/RadioGroup/RadioGroup.js +50 -44
  12. package/dist/components/RadioGroup/index.d.ts +1 -1
  13. package/dist/components/SelectSearch/SelectSearch.d.ts +10 -16
  14. package/dist/components/SelectSearch/SelectSearch.js +100 -104
  15. package/dist/components/SelectSearch/index.d.ts +1 -2
  16. package/dist/components/Switch/Switch.d.ts +293 -3
  17. package/dist/components/Switch/Switch.js +27 -22
  18. package/dist/components/Switch/index.d.ts +1 -1
  19. package/dist/components/Timer/Timer.d.ts +24 -0
  20. package/dist/components/Timer/Timer.js +29 -0
  21. package/dist/components/Timer/index.d.ts +1 -0
  22. package/dist/components/Timer/index.js +4 -0
  23. package/dist/components/index.d.ts +4 -3
  24. package/dist/components/index.js +2 -0
  25. package/dist/hooks/index.d.ts +2 -0
  26. package/dist/hooks/index.js +5 -1
  27. package/dist/hooks/useInterval/index.d.ts +1 -0
  28. package/dist/hooks/useInterval/index.js +4 -0
  29. package/dist/hooks/useInterval/useInterval.d.ts +1 -0
  30. package/dist/hooks/useInterval/useInterval.js +17 -0
  31. package/dist/hooks/useTimer/index.d.ts +18 -0
  32. package/dist/hooks/useTimer/index.js +83 -0
  33. package/dist/hooks/useTimer/useTimer.d.ts +18 -0
  34. package/dist/hooks/useTimer/useTimer.js +83 -0
  35. package/dist/hooks/useTimer/utils.d.ts +20 -0
  36. package/dist/hooks/useTimer/utils.js +78 -0
  37. package/dist/index.js +7 -1
  38. package/package.json +1 -1
  39. package/dist/components/SelectSearch/types.d.ts +0 -17
  40. package/dist/components/SelectSearch/types.js +0 -1
  41. package/dist/components/Switch/types.d.ts +0 -4
  42. package/dist/components/Switch/types.js +0 -1
@@ -3,28 +3,28 @@ import { useRef, useState, useEffect } from "react";
3
3
  import { week } from "./components/DatePicker/constants.js";
4
4
  import { formating } from "./utils/index.js";
5
5
  import { Button } from "./components/Button/Button.js";
6
- import './assets/DatePickerModal.css';const input = "_input_1a7j7_2";
7
- const wrapper = "_wrapper_1a7j7_20";
8
- const active = "_active_1a7j7_26";
9
- const button = "_button_1a7j7_34";
10
- const h = "_h_1a7j7_80";
11
- const b = "_b_1a7j7_34";
12
- const d = "_d_1a7j7_6";
13
- const m = "_m_1a7j7_99";
14
- const a = "_a_1a7j7_26";
15
- const prev = "_prev_1a7j7_101";
16
- const orange = "_orange_1a7j7_117";
17
- const current = "_current_1a7j7_142";
6
+ import './assets/DatePickerModal.css';const input = "_input_187xq_2";
7
+ const wrapper = "_wrapper_187xq_20";
8
+ const active = "_active_187xq_26";
9
+ const button = "_button_187xq_34";
10
+ const h = "_h_187xq_80";
11
+ const b = "_b_187xq_34";
12
+ const d = "_d_187xq_6";
13
+ const m = "_m_187xq_99";
14
+ const a = "_a_187xq_26";
15
+ const prev = "_prev_187xq_101";
16
+ const orange = "_orange_187xq_117";
17
+ const current = "_current_187xq_142";
18
18
  const cls = {
19
19
  input,
20
- "date-wrapper": "_date-wrapper_1a7j7_6",
20
+ "date-wrapper": "_date-wrapper_187xq_6",
21
21
  wrapper,
22
22
  active,
23
- "input-wrapper": "_input-wrapper_1a7j7_30",
24
- "button-wrapper": "_button-wrapper_1a7j7_34",
23
+ "input-wrapper": "_input-wrapper_187xq_30",
24
+ "button-wrapper": "_button-wrapper_187xq_34",
25
25
  button,
26
- "field-overlow": "_field-overlow_1a7j7_51",
27
- "calendar-block": "_calendar-block_1a7j7_57",
26
+ "field-overlow": "_field-overlow_187xq_51",
27
+ "calendar-block": "_calendar-block_187xq_57",
28
28
  h,
29
29
  b,
30
30
  d,
@@ -1 +1 @@
1
- ._input_1a7j7_2{padding-right:var(--space-3xl)}._date-wrapper_1a7j7_6{position:relative}._date-wrapper_1a7j7_6:hover input{background:var(--input-bg-color-hover)}._date-wrapper_1a7j7_6:before{position:absolute;top:0;right:60px;bottom:0;left:0;z-index:3;cursor:pointer;content:""}._wrapper_1a7j7_20{position:relative;display:flex;align-items:center;border-radius:var(--control-radius-s)}._wrapper_1a7j7_20._active_1a7j7_26{border-bottom:1px solid var(--citrine-100)}._input-wrapper_1a7j7_30{flex:1}._button-wrapper_1a7j7_34{position:absolute;top:0;right:0;z-index:2;display:flex;width:44px;height:100%;max-height:var(--button-height-xxl)}._button_1a7j7_34{align-self:center;background-color:transparent;border-radius:var(--control-radius-s)}._field-overlow_1a7j7_51{position:fixed;top:0;right:0;bottom:0;left:0;z-index:3}._calendar-block_1a7j7_57{position:absolute;z-index:3;display:flex;flex-direction:column;width:368px;max-height:none;padding:16px;font-weight:var(--font-weight-text-regular);font-size:var(--size-text-l);font-family:var(--font-inter);font-style:normal;line-height:var(--line-height-text-2xs);text-align:center;text-overflow:ellipsis;background:#fff;border-radius:var(--control-radius-s);box-shadow:0 0 #16172705,0 2px 4px #16172705,0 6px 6px #16172705,0 15px 9px #16172703;opacity:0;transition:height .5s ease-in;font-feature-settings:"zero";font-variant-numeric:slashed-zero}._calendar-block_1a7j7_57 ._h_1a7j7_80{display:flex;width:100%;color:var(--black-100)}._calendar-block_1a7j7_57 ._b_1a7j7_34{display:grid;grid-template-columns:repeat(7,1fr)}._calendar-block_1a7j7_57 ._d_1a7j7_6{display:flex;flex:1;align-items:center;justify-content:center;color:var(--black-100)}._calendar-block_1a7j7_57 ._m_1a7j7_99,._calendar-block_1a7j7_57 ._a_1a7j7_26,._calendar-block_1a7j7_57 ._prev_1a7j7_101{width:48px;height:48px;overflow:hidden}._calendar-block_1a7j7_57 ._m_1a7j7_99{display:flex;align-items:center;justify-content:center;color:var(--disabled)}._calendar-block_1a7j7_57 ._m_1a7j7_99 b{font-weight:var(--font-weight-text-regular)}._calendar-block_1a7j7_57 ._orange_1a7j7_117{color:var(--citrine-100)}._calendar-block_1a7j7_57 ._a_1a7j7_26{color:var(--black-100);border-radius:var(--control-radius-xs)}._calendar-block_1a7j7_57 ._a_1a7j7_26 b{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-weight:var(--font-weight-text-regular);cursor:pointer}._calendar-block_1a7j7_57 ._a_1a7j7_26 b:hover{background:var(--black-10)}._calendar-block_1a7j7_57 ._a_1a7j7_26 b:active{color:var(--white);background:var(--sapphire-100)}._calendar-block_1a7j7_57 ._current_1a7j7_142{background:var(--sapphire-10);border-radius:var(--control-radius-xs)}
1
+ ._input_187xq_2{padding-right:var(--space-3xl)}._date-wrapper_187xq_6{position:relative}._date-wrapper_187xq_6:hover input{background:var(--input-bg-color-hover)}._date-wrapper_187xq_6:before{position:absolute;top:0;right:60px;bottom:0;left:0;z-index:3;cursor:pointer;content:""}._wrapper_187xq_20{position:relative;display:flex;align-items:center;border-radius:var(--control-radius-s)}._wrapper_187xq_20._active_187xq_26{border-bottom:1px solid var(--citrine-100)}._input-wrapper_187xq_30{flex:1}._button-wrapper_187xq_34{position:absolute;top:0;right:0;z-index:2;display:flex;width:44px;height:100%;max-height:var(--button-height-xxl)}._button_187xq_34{align-self:center;background-color:transparent;border-radius:var(--control-radius-s)}._field-overlow_187xq_51{position:fixed;top:0;right:0;bottom:0;left:0;z-index:3}._calendar-block_187xq_57{position:absolute;z-index:3;display:flex;flex-direction:column;width:368px;max-height:none;padding:16px;font-weight:var(--font-weight-text-regular);font-size:var(--size-text-l);font-family:var(--font-inter);font-style:normal;line-height:var(--line-height-text-2xs);text-align:center;text-overflow:ellipsis;background:#fff;border-radius:var(--control-radius-s);box-shadow:0 0 #16172705,0 2px 4px #16172705,0 6px 6px #16172705,0 15px 9px #16172703;opacity:0;transition:height .5s ease-in;font-feature-settings:"zero";font-variant-numeric:slashed-zero}._calendar-block_187xq_57 ._h_187xq_80{display:flex;width:100%;color:var(--black-100)}._calendar-block_187xq_57 ._b_187xq_34{display:grid;grid-template-columns:repeat(7,1fr)}._calendar-block_187xq_57 ._d_187xq_6{display:flex;flex:1;align-items:center;justify-content:center;color:var(--black-100)}._calendar-block_187xq_57 ._m_187xq_99,._calendar-block_187xq_57 ._a_187xq_26,._calendar-block_187xq_57 ._prev_187xq_101{width:48px;height:48px;overflow:hidden}._calendar-block_187xq_57 ._m_187xq_99{display:flex;align-items:center;justify-content:center;color:var(--disabled)}._calendar-block_187xq_57 ._m_187xq_99 b{font-weight:var(--font-weight-text-regular)}._calendar-block_187xq_57 ._orange_187xq_117{color:var(--citrine-100)}._calendar-block_187xq_57 ._a_187xq_26{color:var(--black-100);border-radius:var(--control-radius-s)}._calendar-block_187xq_57 ._a_187xq_26 b{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-weight:var(--font-weight-text-regular);cursor:pointer}._calendar-block_187xq_57 ._a_187xq_26 b:hover{background:var(--black-10)}._calendar-block_187xq_57 ._a_187xq_26 b:active{color:var(--white);background:var(--sapphire-100)}._calendar-block_187xq_57 ._current_187xq_142{background:var(--sapphire-10);border-radius:var(--control-radius-s)}
@@ -1 +1 @@
1
- ._select-search_1oxs1_2{position:relative}._container_1oxs1_6{display:flex;gap:var(--select-search-gap);align-items:center;justify-content:space-between;height:var(--select-search-height);padding:var(--select-search-space);background-color:var(--black-5);border-radius:var(--select-search-radius)}._container-open_1oxs1_16{border-bottom:1px solid var(--citrine-100)}._full_1oxs1_20{width:100%}._selectorIcon-open_1oxs1_24{transform:rotate(180deg)}._placeholder_1oxs1_28{position:absolute;top:var(--select-search-input-top);left:0;color:var(--black-60);font-size:var(--select-search-input-font-size);transition:all .3s ease;pointer-events:none}._placeholder-top_1oxs1_37{font-size:var(--size-text-s);transform:translateY(-10px);transition-duration:.2s,.1s}._input_1oxs1_43{width:100%;height:100%;color:var(--black-100);font-size:var(--select-search-input-font-size);background-color:var(--black-5)}._input_1oxs1_43:focus~._placeholder_1oxs1_28{font-size:var(--size-text-s);transform:translateY(-10px);transition-duration:.2s,.1s}._input-container_1oxs1_55{position:relative;align-self:flex-end;width:100%}._button_1oxs1_61{display:flex;align-items:center;background:none;border:none;cursor:pointer}._options_1oxs1_69{position:absolute;top:100%;z-index:10;width:100%;height:-webkit-max-content;height:-moz-max-content;height:max-content;max-height:var(--select-search-options-height-desktop);overflow-y:auto;font-size:var(--size-text-l);background:var(--white);border-radius:0 0 var(--select-search-radius) var(--select-search-radius);box-shadow:var(--box-shadow-select-search)}._options_1oxs1_69::-webkit-scrollbar{width:2px}._options_1oxs1_69::-webkit-scrollbar-thumb{background-color:var(--black-80);border-radius:2px}._options_1oxs1_69::-webkit-scrollbar-track{background-color:var(--white)}@media (max-width: 600px){._options_1oxs1_69{max-height:var(--select-search-options-height-mobile)}}._option_1oxs1_69{padding:var(--select-search-option-space);cursor:pointer;transition:background-color .2s ease-in-out}._option-active_1oxs1_103{background-color:var(--black-5)}._option-inner_1oxs1_106{display:flex;gap:var(--space-m);align-items:center;justify-content:space-between}._no-options_1oxs1_113{padding:var(--select-search-option-space);color:var(--black-80)}._l_1oxs1_118{--select-search-height: var(--select-search-height-l);--select-search-space: var(--space-xss) var(--space-m);--select-search-radius: var(--control-radius);--select-search-input-font-size: var(--size-text-l);--select-search-gap: var(--space-2xs);--select-search-option-space: var(--space-2s) var(--space-m);--select-search-input-top: var(--select-search-input-top-l)}._xxl_1oxs1_128{--select-search-height: var(--select-search-height-xxl);--select-search-space: var(--space-xss) var(--space-m);--select-search-radius: var(--control-radius-xs);--select-search-input-font-size: var(--size-text-xl);--select-search-gap: var(--space-xs);--select-search-option-space: var(--space-2l) var(--space-m);--select-search-input-top: var(--select-search-input-top-xxl)}._selected-icon_1oxs1_138 path{fill:var(--sapphire-100)}
1
+ ._select-search_xswn2_2{position:relative}._container_xswn2_6{display:flex;gap:var(--select-search-gap);align-items:center;justify-content:space-between;height:var(--select-search-height);padding:var(--select-search-space);background-color:var(--black-5);border-radius:var(--select-search-radius)}._container-open_xswn2_16{border-bottom:1px solid var(--citrine-100)}._full_xswn2_20{width:100%}._selectorIcon-open_xswn2_24{transform:rotate(180deg)}._placeholder_xswn2_28{position:absolute;top:var(--select-search-input-top);left:0;color:var(--black-60);font-size:var(--select-search-input-font-size);transition:all .3s ease;pointer-events:none}._placeholder-top_xswn2_37{font-size:var(--size-text-s);transform:translateY(-10px);transition-duration:.2s,.1s}._input_xswn2_43{width:100%;height:100%;color:var(--black-100);font-size:var(--select-search-input-font-size);background-color:var(--black-5)}._input_xswn2_43:focus~._placeholder_xswn2_28{font-size:var(--size-text-s);transform:translateY(-10px);transition-duration:.2s,.1s}._input-container_xswn2_55{position:relative;align-self:flex-end;width:100%}._button_xswn2_61{display:flex;align-items:center;background:none;border:none;cursor:pointer}._options_xswn2_69{position:absolute;top:100%;z-index:10;width:100%;height:-webkit-max-content;height:-moz-max-content;height:max-content;max-height:var(--select-search-options-height-desktop);overflow-y:auto;font-size:var(--size-text-l);background:var(--white);border-radius:0 0 var(--select-search-radius) var(--select-search-radius);box-shadow:var(--box-shadow-select-search)}._options_xswn2_69::-webkit-scrollbar{width:2px}._options_xswn2_69::-webkit-scrollbar-thumb{background-color:var(--black-80);border-radius:2px}._options_xswn2_69::-webkit-scrollbar-track{background-color:var(--white)}@media (max-width: 600px){._options_xswn2_69{max-height:var(--select-search-options-height-mobile)}}._option_xswn2_69{padding:var(--select-search-option-space);cursor:pointer;transition:background-color .2s ease-in-out}._option-active_xswn2_103{background-color:var(--black-5)}._option-inner_xswn2_106{display:flex;gap:var(--space-m);align-items:center;justify-content:space-between}._no-options_xswn2_113{padding:var(--select-search-option-space);color:var(--black-80)}._l_xswn2_118{--select-search-height: var(--select-search-height-l);--select-search-space: var(--space-xss) var(--space-m);--select-search-radius: var(--control-radius);--select-search-input-font-size: var(--size-text-l);--select-search-gap: var(--space-2xs);--select-search-option-space: var(--space-2s) var(--space-m);--select-search-input-top: var(--select-search-input-top-l)}._xxl_xswn2_128{--select-search-height: var(--select-search-height-xxl);--select-search-space: var(--space-xss) var(--space-m);--select-search-radius: var(--control-radius-s);--select-search-input-font-size: var(--size-text-xl);--select-search-gap: var(--space-xs);--select-search-option-space: var(--space-2l) var(--space-m);--select-search-input-top: var(--select-search-input-top-xxl)}._selected-icon_xswn2_138 path{fill:var(--sapphire-100)}
@@ -0,0 +1 @@
1
+ ._timer_llwad_3{color:var(--black-60);font-size:var(--size-text-l)}@media (max-width: 600px){._timer_llwad_3{font-size:var(--size-text-m)}}
@@ -4,7 +4,7 @@ export type DatePicker = {
4
4
  /**
5
5
  * функция=callback, которая вызывается при изменении значения и передает имя и новое значение для обновления стейта (data),
6
6
  */
7
- onChangeValue: (e: TDatePickerValue) => void;
7
+ onChangeValue?: (e: TDatePickerValue) => void;
8
8
  /**
9
9
  * функция ограничения выбора даты
10
10
  (до какой даты выбор не доступен)
@@ -13,17 +13,17 @@ export type DatePicker = {
13
13
  /**
14
14
  * значение из стейта (data)
15
15
  */
16
- value: string;
16
+ value?: string;
17
17
  } & TInputProps;
18
18
  export type TDatePickerValue = {
19
- value: Date;
19
+ value?: Date;
20
20
  name?: string;
21
21
  };
22
22
  export declare const DatePicker: import('react').MemoExoticComponent<import('react').ForwardRefExoticComponent<{
23
23
  /**
24
24
  * функция=callback, которая вызывается при изменении значения и передает имя и новое значение для обновления стейта (data),
25
25
  */
26
- onChangeValue: (e: TDatePickerValue) => void;
26
+ onChangeValue?: (e: TDatePickerValue) => void;
27
27
  /**
28
28
  * функция ограничения выбора даты
29
29
  (до какой даты выбор не доступен)
@@ -32,7 +32,7 @@ export declare const DatePicker: import('react').MemoExoticComponent<import('rea
32
32
  /**
33
33
  * значение из стейта (data)
34
34
  */
35
- value: string;
35
+ value?: string;
36
36
  } & import('../Input/types').TInputProps & {
37
37
  size?: import('../Input').TSize;
38
38
  variant?: import('../Input').TVariant;
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import { c as classNames } from "../../index-CweZ_OcN.js";
3
3
  import { memo, forwardRef, useState } from "react";
4
- import { c as cls, D as DatePickerModal } from "../../DatePickerModal-ByEDSY5o.js";
4
+ import { c as cls, D as DatePickerModal } from "../../DatePickerModal-DUUCHAWF.js";
5
5
  import { useClickOutside } from "../../hooks/useClickOutside/useClickOutside.js";
6
6
  import { formating } from "../../utils/index.js";
7
7
  import { Button } from "../Button/Button.js";
@@ -1,7 +1,7 @@
1
1
  import "react/jsx-runtime";
2
2
  import "react";
3
3
  import "./constants.js";
4
- import { D } from "../../DatePickerModal-ByEDSY5o.js";
4
+ import { D } from "../../DatePickerModal-DUUCHAWF.js";
5
5
  import "../../utils/index.js";
6
6
  import "../Button/Button.js";
7
7
  export {
@@ -1,2 +1,2 @@
1
1
  export { DatePicker } from './DatePicker';
2
- export type { DatePicker as TDatePickerProps } from './DatePicker';
2
+ export type { DatePicker as TDatePickerProps, TDatePickerValue } from './DatePicker';
@@ -7,7 +7,7 @@ export type TProps = TInputProps & {
7
7
  */
8
8
  size?: TSize;
9
9
  /**
10
- * `Варинты отображения ввода. Может быть 'alert', 'success', 'default', 'default-gray', 'default-white'.`
10
+ * `Варианты отображения ввода. Может быть 'alert', 'success', 'default', 'default-gray', 'default-white'.`
11
11
  */
12
12
  variant?: TVariant;
13
13
  /**
@@ -37,7 +37,7 @@ export declare const Input: import('react').MemoExoticComponent<import('react').
37
37
  */
38
38
  size?: TSize;
39
39
  /**
40
- * `Варинты отображения ввода. Может быть 'alert', 'success', 'default', 'default-gray', 'default-white'.`
40
+ * `Варианты отображения ввода. Может быть 'alert', 'success', 'default', 'default-gray', 'default-white'.`
41
41
  */
42
42
  variant?: TVariant;
43
43
  /**
@@ -7,7 +7,7 @@ export interface TRadioOption {
7
7
  /**
8
8
  * Свойства компонента RadioGroup.
9
9
  */
10
- export type TProps = Omit<RadioGroupProps, 'value'> & {
10
+ export type TRadioGroupProps = Omit<RadioGroupProps, 'value'> & {
11
11
  /**
12
12
  * Массив опций для радиогруппы.
13
13
  * Каждая опция должна содержать значение и метку.
@@ -27,4 +27,20 @@ export type TProps = Omit<RadioGroupProps, 'value'> & {
27
27
  /**
28
28
  * Компонент RadioGroup для выбора одной опции из нескольких.
29
29
  */
30
- export declare function RadioGroup({ options, value, onChange, label, ...props }: TProps): import("react/jsx-runtime").JSX.Element;
30
+ export declare const RadioGroup: import('react').ForwardRefExoticComponent<Omit<RadioGroupProps, "value"> & {
31
+ /**
32
+ * Массив опций для радиогруппы.
33
+ * Каждая опция должна содержать значение и метку.
34
+ */
35
+ options: TRadioOption[];
36
+ /**
37
+ * Выбранное значение опции.
38
+ * Может быть необязательным, если нет выбранного значения.
39
+ */
40
+ value?: TRadioOption["value"];
41
+ /**
42
+ * Текст метки, отображаемой над радиогруппой.
43
+ * Может быть необязательным.
44
+ */
45
+ label?: string;
46
+ } & import('react').RefAttributes<HTMLElement>>;
@@ -1,6 +1,6 @@
1
1
  import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
2
  import { W, K, w, b as a, z as z$1, U, y, l, T, o, j as j$1, H, s, n, $ as $f7dceffc5ad7768b$export$4e328f61c538687f, c as $6179b936705e76d3$export$ae780daf29e6d456, D, d as u$1, I, G, a as u$2, u as u$3, e as o$1, f as p, r } from "../../label-BXAcSLy0.js";
3
- import React__default, { createContext, useId, useReducer, useRef, useMemo, useCallback, useContext } from "react";
3
+ import React__default, { createContext, useId, useReducer, useRef, useMemo, useCallback, useContext, forwardRef } from "react";
4
4
  import { u, P, F, T as T$1, _ } from "../../focus-management-CFDo6ZSc.js";
5
5
  import { c as classNames } from "../../index-CweZ_OcN.js";
6
6
  import '../../assets/RadioGroup.css';var Le = ((e) => (e[e.RegisterOption = 0] = "RegisterOption", e[e.UnregisterOption = 1] = "UnregisterOption", e))(Le || {});
@@ -116,51 +116,57 @@ const cls = {
116
116
  frame,
117
117
  checked
118
118
  };
119
- function RadioGroup({
120
- options,
121
- value,
122
- onChange,
123
- label: label2,
124
- ...props
125
- }) {
126
- const radioClasses = classNames(cls["radio-wrapper"], {
127
- [cls.disabled]: props.disabled
128
- });
129
- return /* @__PURE__ */ jsxs(Tt, { value, className: cls.group, onChange, ...props, children: [
130
- label2 && /* @__PURE__ */ jsx(K, { as: "p", className: cls.label, children: label2 }),
131
- /* @__PURE__ */ jsx("div", { className: cls["content-wrapper"], children: options.map(({ label: label22, value: value2 }) => /* @__PURE__ */ jsx(
132
- Be,
119
+ const RadioGroup = forwardRef(
120
+ ({ options, value, onChange, label: label2, ...props }, ref) => {
121
+ const radioClasses = classNames(cls["radio-wrapper"], {
122
+ [cls.disabled]: props.disabled
123
+ });
124
+ return /* @__PURE__ */ jsxs(
125
+ Tt,
133
126
  {
134
- as: "span",
135
- value: value2,
136
- disabled: props.disabled,
137
- className: radioClasses,
138
- children: ({ checked: checked2, disabled: disabled2 }) => /* @__PURE__ */ jsxs(Fragment, { children: [
139
- /* @__PURE__ */ jsx(
140
- K,
127
+ ref,
128
+ value,
129
+ className: cls.group,
130
+ onChange,
131
+ ...props,
132
+ children: [
133
+ label2 && /* @__PURE__ */ jsx(K, { as: "p", className: cls.label, children: label2 }),
134
+ /* @__PURE__ */ jsx("div", { className: cls["content-wrapper"], children: options.map(({ label: label22, value: value2 }) => /* @__PURE__ */ jsx(
135
+ Be,
141
136
  {
142
- as: "button",
143
- className: classNames(cls.radio, {
144
- [cls.disabled]: props.disabled
145
- }),
146
- children: /* @__PURE__ */ jsx(
147
- "span",
148
- {
149
- className: classNames(cls.frame, {
150
- [cls.checked]: checked2,
151
- [cls.disabled]: disabled2
152
- })
153
- }
154
- )
155
- }
156
- ),
157
- label22
158
- ] })
159
- },
160
- label22
161
- )) })
162
- ] });
163
- }
137
+ as: "span",
138
+ value: value2,
139
+ disabled: props.disabled,
140
+ className: radioClasses,
141
+ children: ({ checked: checked2, disabled: disabled2 }) => /* @__PURE__ */ jsxs(Fragment, { children: [
142
+ /* @__PURE__ */ jsx(
143
+ K,
144
+ {
145
+ as: "button",
146
+ className: classNames(cls.radio, {
147
+ [cls.disabled]: props.disabled
148
+ }),
149
+ children: /* @__PURE__ */ jsx(
150
+ "span",
151
+ {
152
+ className: classNames(cls.frame, {
153
+ [cls.checked]: checked2,
154
+ [cls.disabled]: disabled2
155
+ })
156
+ }
157
+ )
158
+ }
159
+ ),
160
+ label22
161
+ ] })
162
+ },
163
+ label22
164
+ )) })
165
+ ]
166
+ }
167
+ );
168
+ }
169
+ );
164
170
  export {
165
171
  RadioGroup
166
172
  };
@@ -1,2 +1,2 @@
1
1
  export { RadioGroup } from './RadioGroup';
2
- export type { TRadioOption } from './RadioGroup';
2
+ export type { TRadioOption, TRadioGroupProps } from './RadioGroup';
@@ -1,21 +1,15 @@
1
- import { TSelectSearchItem, TSelectSearchProps } from './types';
1
+ import { ESelectSearchSize } from './constants';
2
2
 
3
- export type TProps = TSelectSearchProps & {
4
- /**
5
- * Список элементов для выбора в SelectSearch.
6
- */
3
+ export type TSelectSearchItem = {
4
+ id: number;
5
+ name: string;
6
+ };
7
+ export type TSelectSearchProps = {
7
8
  items: TSelectSearchItem[];
8
- /**
9
- * Текст-заполнитель для поля ввода.
10
- */
9
+ value?: TSelectSearchItem | null;
10
+ onChange?: (value: TSelectSearchItem | null) => void;
11
11
  placeholder?: string;
12
- /**
13
- * Размер SelectSearch. Допустимые значения: `l`, `xxl`.
14
- */
15
- size?: 'l' | 'xxl';
16
- /**
17
- * Флаг, указывающий, что элемент занимает все доступное пространство.
18
- */
12
+ size?: ESelectSearchSize;
19
13
  full?: boolean;
20
14
  };
21
- export declare const SelectSearch: ({ items, placeholder, size, onChange, value, full }: TProps) => import("react/jsx-runtime").JSX.Element;
15
+ export declare const SelectSearch: import('react').ForwardRefExoticComponent<TSelectSearchProps & import('react').RefAttributes<HTMLElement>>;
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs, Fragment as Fragment$1 } from "react/jsx-runtime";
2
2
  import { c as classNames } from "../../index-CweZ_OcN.js";
3
3
  import * as React from "react";
4
- import React__default, { useReducer, useMemo, useSyncExternalStore, useId as useId$1, useEffect, useCallback, useRef, useState, useLayoutEffect, createContext, useContext, Fragment, createRef } from "react";
4
+ import React__default, { useReducer, useMemo, useSyncExternalStore, useId as useId$1, useEffect, useCallback, useRef, useState, useLayoutEffect, createContext, useContext, Fragment, createRef, forwardRef } from "react";
5
5
  import { ESelectSearchSize } from "./constants.js";
6
6
  import { useMediaQuery } from "../../hooks/useMediaQuery/useMediaQuery.js";
7
7
  import { EMediaQuery } from "../../hooks/useMediaQuery/constants.js";
@@ -3841,125 +3841,121 @@ function No(o2, r2) {
3841
3841
  return H({ ourProps: { id: d2, ref: M2, role: "option", tabIndex: s2 === true ? void 0 : -1, "aria-disabled": s2 === true ? true : void 0, "aria-selected": C, disabled: void 0, onMouseDown: y2, onFocus: A2, onPointerEnter: h2, onMouseEnter: h2, onPointerMove: O, onMouseMove: O, onPointerLeave: G2, onMouseLeave: G2 }, theirProps: a3, slot: J2, defaultTag: ko, name: "Combobox.Option" });
3842
3842
  }
3843
3843
  let Uo = W$1(ho), Ho = W$1(Vo), Go = W$1(Mo), jo = K, zo = W$1(Bo), Ko = W$1(No), Nt = Object.assign(Uo, { Input: Go, Button: Ho, Label: jo, Options: zo, Option: Ko });
3844
- const container = "_container_1oxs1_6";
3845
- const full = "_full_1oxs1_20";
3846
- const placeholder = "_placeholder_1oxs1_28";
3847
- const input = "_input_1oxs1_43";
3848
- const button = "_button_1oxs1_61";
3849
- const options = "_options_1oxs1_69";
3850
- const option = "_option_1oxs1_69";
3851
- const l = "_l_1oxs1_118";
3852
- const xxl = "_xxl_1oxs1_128";
3844
+ const container = "_container_xswn2_6";
3845
+ const full = "_full_xswn2_20";
3846
+ const placeholder = "_placeholder_xswn2_28";
3847
+ const input = "_input_xswn2_43";
3848
+ const button = "_button_xswn2_61";
3849
+ const options = "_options_xswn2_69";
3850
+ const option = "_option_xswn2_69";
3851
+ const l = "_l_xswn2_118";
3852
+ const xxl = "_xxl_xswn2_128";
3853
3853
  const cls = {
3854
- "select-search": "_select-search_1oxs1_2",
3854
+ "select-search": "_select-search_xswn2_2",
3855
3855
  container,
3856
- "container-open": "_container-open_1oxs1_16",
3856
+ "container-open": "_container-open_xswn2_16",
3857
3857
  full,
3858
- "selectorIcon-open": "_selectorIcon-open_1oxs1_24",
3858
+ "selectorIcon-open": "_selectorIcon-open_xswn2_24",
3859
3859
  placeholder,
3860
- "placeholder-top": "_placeholder-top_1oxs1_37",
3860
+ "placeholder-top": "_placeholder-top_xswn2_37",
3861
3861
  input,
3862
- "input-container": "_input-container_1oxs1_55",
3862
+ "input-container": "_input-container_xswn2_55",
3863
3863
  button,
3864
3864
  options,
3865
3865
  option,
3866
- "option-active": "_option-active_1oxs1_103",
3867
- "option-inner": "_option-inner_1oxs1_106",
3868
- "no-options": "_no-options_1oxs1_113",
3866
+ "option-active": "_option-active_xswn2_103",
3867
+ "option-inner": "_option-inner_xswn2_106",
3868
+ "no-options": "_no-options_xswn2_113",
3869
3869
  l,
3870
3870
  xxl,
3871
- "selected-icon": "_selected-icon_1oxs1_138"
3871
+ "selected-icon": "_selected-icon_xswn2_138"
3872
3872
  };
3873
- const SelectSearch = ({
3874
- items,
3875
- placeholder: placeholder2,
3876
- size: size2 = ESelectSearchSize.L,
3877
- onChange,
3878
- value,
3879
- full: full2
3880
- }) => {
3881
- const [searchValue, setSearchValue] = useState("");
3882
- const [isItemSelected, setIsItemSelected] = useState(false);
3883
- const isMobile = useMediaQuery(EMediaQuery.XSS);
3884
- const filteredItems = useMemo(() => {
3885
- return searchValue.trim().toLowerCase() ? items.filter(
3886
- (item) => item.name.toLowerCase().includes(searchValue.toLowerCase())
3887
- ) : items;
3888
- }, [searchValue, items]);
3889
- const handleOneChange = (newValue) => {
3890
- onChange == null ? void 0 : onChange(newValue);
3891
- setIsItemSelected(!!newValue);
3892
- };
3893
- return /* @__PURE__ */ jsx(
3894
- Nt,
3895
- {
3896
- as: "div",
3897
- onChange: handleOneChange,
3898
- value,
3899
- className: classNames(cls["select-search"], { [cls.full]: full2 }),
3900
- children: ({ open }) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
3901
- /* @__PURE__ */ jsxs(
3902
- "div",
3903
- {
3904
- className: classNames(cls.container, cls[size2], {
3905
- [cls["container-open"]]: open
3906
- }),
3907
- children: [
3908
- /* @__PURE__ */ jsxs("div", { className: cls["input-container"], children: [
3909
- /* @__PURE__ */ jsx(
3910
- Go,
3873
+ const SelectSearch = forwardRef(
3874
+ ({ items, placeholder: placeholder2, size: size2 = ESelectSearchSize.L, onChange, value, full: full2 }, ref) => {
3875
+ const [searchValue, setSearchValue] = useState("");
3876
+ const [isItemSelected, setIsItemSelected] = useState(false);
3877
+ const isMobile = useMediaQuery(EMediaQuery.XSS);
3878
+ const filteredItems = useMemo(() => {
3879
+ return searchValue.trim().toLowerCase() ? items.filter(
3880
+ (item) => item.name.toLowerCase().includes(searchValue.toLowerCase())
3881
+ ) : items;
3882
+ }, [searchValue, items]);
3883
+ const handleOneChange = (newValue) => {
3884
+ onChange == null ? void 0 : onChange(newValue);
3885
+ setIsItemSelected(!!newValue);
3886
+ };
3887
+ return /* @__PURE__ */ jsx(
3888
+ Nt,
3889
+ {
3890
+ as: "div",
3891
+ onChange: handleOneChange,
3892
+ value,
3893
+ className: classNames(cls["select-search"], { [cls.full]: full2 }),
3894
+ ref,
3895
+ children: ({ open }) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
3896
+ /* @__PURE__ */ jsxs(
3897
+ "div",
3898
+ {
3899
+ className: classNames(cls.container, cls[size2], {
3900
+ [cls["container-open"]]: open
3901
+ }),
3902
+ children: [
3903
+ /* @__PURE__ */ jsxs("div", { className: cls["input-container"], children: [
3904
+ /* @__PURE__ */ jsx(
3905
+ Go,
3906
+ {
3907
+ className: cls.input,
3908
+ onChange: (event) => setSearchValue(event.target.value),
3909
+ displayValue: (item) => item == null ? void 0 : item.name
3910
+ }
3911
+ ),
3912
+ /* @__PURE__ */ jsx(
3913
+ "span",
3914
+ {
3915
+ className: classNames(cls.placeholder, {
3916
+ [cls["placeholder-top"]]: isItemSelected || open || searchValue
3917
+ }),
3918
+ children: placeholder2
3919
+ }
3920
+ )
3921
+ ] }),
3922
+ /* @__PURE__ */ jsx(Ho, { className: cls.button, children: /* @__PURE__ */ jsx(
3923
+ Icon,
3911
3924
  {
3912
- className: cls.input,
3913
- onChange: (event) => setSearchValue(event.target.value),
3914
- displayValue: (item) => item == null ? void 0 : item.name
3925
+ iconName: isMobile ? "DropdownArrowBottom16px" : "DropdownArrowDown24px",
3926
+ className: classNames(cls["selector-icon"], {
3927
+ [cls["selector-icon-open"]]: open
3928
+ })
3915
3929
  }
3916
- ),
3917
- /* @__PURE__ */ jsx(
3918
- "span",
3930
+ ) })
3931
+ ]
3932
+ }
3933
+ ),
3934
+ /* @__PURE__ */ jsx(zo, { className: classNames(cls.options, cls[size2]), children: !items.length ? /* @__PURE__ */ jsx("div", { className: cls["no-options"], children: "Нет данных" }) : !filteredItems.length && searchValue.trim() ? /* @__PURE__ */ jsx("div", { className: cls["no-options"], children: "Ничего не найдено" }) : filteredItems.map((item) => /* @__PURE__ */ jsx(
3935
+ Ko,
3936
+ {
3937
+ value: item,
3938
+ className: ({ focus }) => classNames(cls.option, {
3939
+ [cls["option-active"]]: focus
3940
+ }),
3941
+ children: ({ selected }) => /* @__PURE__ */ jsxs("div", { className: cls["option-inner"], children: [
3942
+ /* @__PURE__ */ jsx("span", { className: cls["option-text"], children: item.name }),
3943
+ selected && /* @__PURE__ */ jsx(
3944
+ Icon,
3919
3945
  {
3920
- className: classNames(cls.placeholder, {
3921
- [cls["placeholder-top"]]: isItemSelected || open || searchValue
3922
- }),
3923
- children: placeholder2
3946
+ iconName: "Done16px",
3947
+ className: cls["selected-icon"]
3924
3948
  }
3925
3949
  )
3926
- ] }),
3927
- /* @__PURE__ */ jsx(Ho, { className: cls.button, children: /* @__PURE__ */ jsx(
3928
- Icon,
3929
- {
3930
- iconName: isMobile ? "DropdownArrowBottom16px" : "DropdownArrowDown24px",
3931
- className: classNames(cls["selector-icon"], {
3932
- [cls["selector-icon-open"]]: open
3933
- })
3934
- }
3935
- ) })
3936
- ]
3937
- }
3938
- ),
3939
- /* @__PURE__ */ jsx(zo, { className: classNames(cls.options, cls[size2]), children: !items.length ? /* @__PURE__ */ jsx("div", { className: cls["no-options"], children: "Нет данных" }) : !filteredItems.length && searchValue.trim() ? /* @__PURE__ */ jsx("div", { className: cls["no-options"], children: "Ничего не найдено" }) : filteredItems.map((item) => /* @__PURE__ */ jsx(
3940
- Ko,
3941
- {
3942
- value: item,
3943
- className: ({ focus }) => classNames(cls.option, {
3944
- [cls["option-active"]]: focus
3945
- }),
3946
- children: ({ selected }) => /* @__PURE__ */ jsxs("div", { className: cls["option-inner"], children: [
3947
- /* @__PURE__ */ jsx("span", { className: cls["option-text"], children: item.name }),
3948
- selected && /* @__PURE__ */ jsx(
3949
- Icon,
3950
- {
3951
- iconName: "Done16px",
3952
- className: cls["selected-icon"]
3953
- }
3954
- )
3955
- ] })
3956
- },
3957
- item.id
3958
- )) })
3959
- ] })
3960
- }
3961
- );
3962
- };
3950
+ ] })
3951
+ },
3952
+ item.id
3953
+ )) })
3954
+ ] })
3955
+ }
3956
+ );
3957
+ }
3958
+ );
3963
3959
  export {
3964
3960
  SelectSearch
3965
3961
  };
@@ -1,3 +1,2 @@
1
- export { SelectSearch, type TProps as TSelectSearchProps } from './SelectSearch';
1
+ export { SelectSearch, type TSelectSearchProps, type TSelectSearchItem } from './SelectSearch';
2
2
  export { ESelectSearchSize } from './constants';
3
- export type { TSelectSearchItem, TSelectSearchSize } from './types';