@cloud-ru/uikit-product-fields-predefined 3.0.0 → 3.0.1-preview-d01a0cca.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 (90) hide show
  1. package/README.md +290 -12
  2. package/dist/cjs/components/FieldCode/FieldCode.d.ts +35 -0
  3. package/dist/cjs/components/FieldCode/FieldCode.js +48 -0
  4. package/dist/cjs/components/FieldCode/components/Cell/Cell.d.ts +7 -0
  5. package/dist/cjs/components/FieldCode/components/Cell/Cell.js +27 -0
  6. package/dist/cjs/components/FieldCode/components/Cell/index.d.ts +1 -0
  7. package/dist/cjs/components/FieldCode/components/Cell/index.js +17 -0
  8. package/dist/cjs/components/FieldCode/components/Cell/styles.module.css +19 -0
  9. package/dist/cjs/components/FieldCode/components/ResendCode/ResendCode.d.ts +8 -0
  10. package/dist/cjs/components/FieldCode/components/ResendCode/ResendCode.js +28 -0
  11. package/dist/cjs/components/FieldCode/components/ResendCode/index.d.ts +1 -0
  12. package/dist/cjs/components/FieldCode/components/ResendCode/index.js +17 -0
  13. package/dist/cjs/components/FieldCode/components/ResendCode/utils.d.ts +1 -0
  14. package/dist/cjs/components/FieldCode/components/ResendCode/utils.js +8 -0
  15. package/dist/cjs/components/FieldCode/components/index.d.ts +2 -0
  16. package/dist/cjs/components/FieldCode/components/index.js +18 -0
  17. package/dist/cjs/components/FieldCode/constants.d.ts +14 -0
  18. package/dist/cjs/components/FieldCode/constants.js +10 -0
  19. package/dist/cjs/components/FieldCode/hooks/index.d.ts +4 -0
  20. package/dist/cjs/components/FieldCode/hooks/index.js +20 -0
  21. package/dist/cjs/components/FieldCode/hooks/useCodeInput.d.ts +22 -0
  22. package/dist/cjs/components/FieldCode/hooks/useCodeInput.js +98 -0
  23. package/dist/cjs/components/FieldCode/hooks/useFieldCodeValidate.d.ts +8 -0
  24. package/dist/cjs/components/FieldCode/hooks/useFieldCodeValidate.js +24 -0
  25. package/dist/cjs/components/FieldCode/hooks/useFieldHelpers.d.ts +13 -0
  26. package/dist/cjs/components/FieldCode/hooks/useFieldHelpers.js +34 -0
  27. package/dist/cjs/components/FieldCode/hooks/useFocusCell.d.ts +5 -0
  28. package/dist/cjs/components/FieldCode/hooks/useFocusCell.js +22 -0
  29. package/dist/cjs/components/FieldCode/index.d.ts +2 -0
  30. package/dist/cjs/components/FieldCode/index.js +20 -0
  31. package/dist/cjs/components/FieldCode/styles.module.css +37 -0
  32. package/dist/cjs/components/FieldCode/utils.d.ts +6 -0
  33. package/dist/cjs/components/FieldCode/utils.js +21 -0
  34. package/dist/cjs/components/index.d.ts +1 -0
  35. package/dist/cjs/components/index.js +1 -0
  36. package/dist/esm/components/FieldCode/FieldCode.d.ts +35 -0
  37. package/dist/esm/components/FieldCode/FieldCode.js +41 -0
  38. package/dist/esm/components/FieldCode/components/Cell/Cell.d.ts +7 -0
  39. package/dist/esm/components/FieldCode/components/Cell/Cell.js +21 -0
  40. package/dist/esm/components/FieldCode/components/Cell/index.d.ts +1 -0
  41. package/dist/esm/components/FieldCode/components/Cell/index.js +1 -0
  42. package/dist/esm/components/FieldCode/components/Cell/styles.module.css +19 -0
  43. package/dist/esm/components/FieldCode/components/ResendCode/ResendCode.d.ts +8 -0
  44. package/dist/esm/components/FieldCode/components/ResendCode/ResendCode.js +25 -0
  45. package/dist/esm/components/FieldCode/components/ResendCode/index.d.ts +1 -0
  46. package/dist/esm/components/FieldCode/components/ResendCode/index.js +1 -0
  47. package/dist/esm/components/FieldCode/components/ResendCode/utils.d.ts +1 -0
  48. package/dist/esm/components/FieldCode/components/ResendCode/utils.js +5 -0
  49. package/dist/esm/components/FieldCode/components/index.d.ts +2 -0
  50. package/dist/esm/components/FieldCode/components/index.js +2 -0
  51. package/dist/esm/components/FieldCode/constants.d.ts +14 -0
  52. package/dist/esm/components/FieldCode/constants.js +7 -0
  53. package/dist/esm/components/FieldCode/hooks/index.d.ts +4 -0
  54. package/dist/esm/components/FieldCode/hooks/index.js +4 -0
  55. package/dist/esm/components/FieldCode/hooks/useCodeInput.d.ts +22 -0
  56. package/dist/esm/components/FieldCode/hooks/useCodeInput.js +95 -0
  57. package/dist/esm/components/FieldCode/hooks/useFieldCodeValidate.d.ts +8 -0
  58. package/dist/esm/components/FieldCode/hooks/useFieldCodeValidate.js +21 -0
  59. package/dist/esm/components/FieldCode/hooks/useFieldHelpers.d.ts +13 -0
  60. package/dist/esm/components/FieldCode/hooks/useFieldHelpers.js +31 -0
  61. package/dist/esm/components/FieldCode/hooks/useFocusCell.d.ts +5 -0
  62. package/dist/esm/components/FieldCode/hooks/useFocusCell.js +19 -0
  63. package/dist/esm/components/FieldCode/index.d.ts +2 -0
  64. package/dist/esm/components/FieldCode/index.js +2 -0
  65. package/dist/esm/components/FieldCode/styles.module.css +37 -0
  66. package/dist/esm/components/FieldCode/utils.d.ts +6 -0
  67. package/dist/esm/components/FieldCode/utils.js +13 -0
  68. package/dist/esm/components/index.d.ts +1 -0
  69. package/dist/esm/components/index.js +1 -0
  70. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  71. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  72. package/package.json +6 -3
  73. package/src/components/FieldCode/FieldCode.tsx +133 -0
  74. package/src/components/FieldCode/components/Cell/Cell.tsx +35 -0
  75. package/src/components/FieldCode/components/Cell/index.ts +1 -0
  76. package/src/components/FieldCode/components/Cell/styles.module.scss +24 -0
  77. package/src/components/FieldCode/components/ResendCode/ResendCode.tsx +33 -0
  78. package/src/components/FieldCode/components/ResendCode/index.ts +1 -0
  79. package/src/components/FieldCode/components/ResendCode/utils.ts +5 -0
  80. package/src/components/FieldCode/components/index.ts +2 -0
  81. package/src/components/FieldCode/constants.ts +20 -0
  82. package/src/components/FieldCode/hooks/index.ts +4 -0
  83. package/src/components/FieldCode/hooks/useCodeInput.ts +147 -0
  84. package/src/components/FieldCode/hooks/useFieldCodeValidate.ts +35 -0
  85. package/src/components/FieldCode/hooks/useFieldHelpers.ts +52 -0
  86. package/src/components/FieldCode/hooks/useFocusCell.ts +29 -0
  87. package/src/components/FieldCode/index.ts +2 -0
  88. package/src/components/FieldCode/styles.module.scss +48 -0
  89. package/src/components/FieldCode/utils.ts +23 -0
  90. package/src/components/index.ts +1 -0
package/README.md CHANGED
@@ -14,8 +14,42 @@
14
14
  ### Props
15
15
  | name | type | default value | description |
16
16
  |------|------|---------------|-------------|
17
- | ref | `any` | - | Allows getting a ref to the component instance. Once the component unmounts, React will set `ref.current` to `null` (or call the ref with `null` if you passed a callback ref). @see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs} |
18
- | key | `any` | - | |
17
+ | layoutType* | enum LayoutType: `"mobile"`, `"tablet"`, `"desktop"`, `"desktopSmall"` | - | |
18
+ | value | `string` | - | Значение input |
19
+ | onChange | `((value: string, e?: ChangeEvent<HTMLInputElement>) => void) & ((value: string) => void)` | - | Колбек смены значения |
20
+ | id | `string` | - | Значение html-атрибута id |
21
+ | name | `string` | - | Значение html-атрибута name |
22
+ | disabled | `boolean` | false | Является ли поле деактивированным |
23
+ | readonly | `boolean` | false | Является ли поле доступным только для чтения |
24
+ | onFocus | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки получения фокуса |
25
+ | onBlur | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки потери фокуса |
26
+ | autoComplete | `string \| boolean` | false | Включен ли автокомплит для поля |
27
+ | autoFocus | `boolean` | false | Включен ли авто-фокус для поля |
28
+ | onPaste | `ClipboardEventHandler<HTMLInputElement>` | - | Колбек обработки вставки значения |
29
+ | spellCheck | `boolean` | true | Значение атрибута spellcheck (проверка орфографии) |
30
+ | pattern | `string` | - | Регулярное выражение валидного инпута |
31
+ | className | `string` | - | CSS-класс |
32
+ | label | `string` | - | Лейбл |
33
+ | labelTooltip | `ReactNode` | - | Всплывающая подсказка лейбла |
34
+ | required | `boolean` | - | Является ли поле обязательным |
35
+ | caption | `string` | - | Подпись справа от лейбла |
36
+ | hint | `string` | - | Подсказка внизу |
37
+ | showHintIcon | `boolean` | - | Отображать иконку подсказки |
38
+ | size | enum Size: `"s"`, `"m"`, `"l"` | - | Размер |
39
+ | validationState | enum ValidationState: `"error"`, `"default"`, `"warning"`, `"success"` | - | Состояние валидации |
40
+ | labelTooltipPlacement | enum Placement: `"left"`, `"left-start"`, `"left-end"`, `"right"`, `"right-start"`, `"right-end"`, `"top"`, `"top-start"`, `"top-end"`, `"bottom"`, `"bottom-start"`, `"bottom-end"` | top | Расположение подсказки лейбла |
41
+ | error | `string` | - | |
42
+ | type | "text" \| "tel" \| "email" | - | |
43
+ | showCopyButton | `boolean` | - | Отображение кнопки Копировать для поля (актуально только для `readonly = true`) |
44
+ | onCopyButtonClick | `() => void` | - | Колбек клика по кнопке Копировать для поля |
45
+ | showClearButton | `boolean` | true | Отображение кнопки очистки поля |
46
+ | onClearButtonClick | `() => void` | - | Колбек клика по кнопке очистки поля |
47
+ | scrollList | `boolean` | - | Включить скролл для основной части списка стран |
48
+ | searchPlaceholder | `string` | - | |
49
+ | onChangeCountry | `(country: FieldPhoneOptionsProps) => void` | - | |
50
+ | options | `CountrySettings` | - | options — объект конфигурации для изменения стандартного списка стран |
51
+ | ref | `LegacyRef<HTMLInputElement>` | - | Allows getting a ref to the component instance. Once the component unmounts, React will set `ref.current` to `null` (or call the ref with `null` if you passed a callback ref). @see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs} |
52
+ | key | `Key` | - | |
19
53
  ## useCountries
20
54
  ### Props
21
55
  | name | type | default value | description |
@@ -27,48 +61,292 @@
27
61
  ### Props
28
62
  | name | type | default value | description |
29
63
  |------|------|---------------|-------------|
64
+ | selectProps* | `FieldSelectProps` | - | Пропсы прокидываемые в селект |
65
+ | submitHandler* | `() => Promise<string \| void>` | - | Коллбек создания новой опции, при успешном выполнении возвращает value новой опции |
66
+ | entityName* | `EntityName` | - | Тип объекта для создания новой опции (в единственном числе вин.падеже для кнопки Создать <entityName> и множественном числе) |
67
+ | createLayoutProps* | `CreateLayoutModalProps \| CreateLayoutDrawerProps` | - | Пропсы передаваемые в модалку или дровер создания новой опции |
68
+ | createLayoutType* | "modal" \| "drawer" | - | По клику на кнопку создания открывать модальное окно или дровер |
69
+ | layoutType* | enum LayoutType: `"mobile"`, `"tablet"`, `"desktop"`, `"desktopSmall"` | - | |
70
+ | onRefetch | `VoidFunction` | - | Коллбек рефетча запроса на получение списка опций в случае ошибки (при передаче dataError в selectProps). |
71
+ | className | `string` | - | CSS-класс |
72
+ | afterClose | `VoidFunction` | - | Коллбек после закрытия модального окна/дровера |
73
+ | entityIcon | `JSXElementConstructor<{ size?: number; className?: string; }>` | - | Иконка сервиса |
74
+ | permission | "none" \| "canRead" \| "canCreate" | - | Управление состоянием компонента в зависимости от прав пользователя (по дефолту permission = 'canCreate') |
30
75
  ## FieldChat
31
76
  ### Props
32
77
  | name | type | default value | description |
33
78
  |------|------|---------------|-------------|
79
+ | layoutType* | enum LayoutType: `"mobile"`, `"tablet"`, `"desktop"`, `"desktopSmall"` | - | |
80
+ | handleSubmit* | `(value: string) => void` | - | Колбек действия при отправке |
81
+ | value | `string` | - | HTML-аттрибут value |
82
+ | onChange | `(value: string, e?: ChangeEvent<HTMLTextAreaElement>) => void` | - | Колбек смены значения |
83
+ | inputMode | enum InputMode: `"search"`, `"none"`, `"text"`, `"tel"`, `"email"`, `"decimal"`, `"numeric"`, `"url"` | - | Режим работы экранной клавиатуры |
84
+ | id | `string` | - | HTML-аттрибут id |
85
+ | name | `string` | - | HTML-аттрибут name |
86
+ | maxLength | `number` | - | Максимальное кол-во символов |
87
+ | disabled | `boolean` | - | Является ли поле деактивированным |
88
+ | readonly | `boolean` | - | Является ли поле доступным только на чтение |
89
+ | onFocus | `FocusEventHandler<HTMLTextAreaElement>` | - | Колбек получения фокуса |
90
+ | onBlur | `FocusEventHandler<HTMLTextAreaElement>` | - | Колбек потери фокуса |
91
+ | autoFocus | `boolean` | - | Включен ли авто-фокус |
92
+ | onKeyDown | `KeyboardEventHandler<HTMLTextAreaElement>` | - | Колбек нажатия клавиши клавиатуры |
93
+ | className | `string` | - | CSS-класс |
94
+ | caption | `string` | - | Подпись справа от лейбла |
95
+ | showHintIcon | `boolean` | - | Отображать иконку подсказки |
96
+ | validationState | enum ValidationState: `"error"`, `"default"`, `"warning"`, `"success"` | - | Состояние валидации |
97
+ | labelTooltipPlacement | enum Placement: `"left"`, `"left-start"`, `"left-end"`, `"right"`, `"right-start"`, `"right-end"`, `"top"`, `"top-start"`, `"top-end"`, `"bottom"`, `"bottom-start"`, `"bottom-end"` | top | Расположение подсказки лейбла |
98
+ | error | `string` | - | |
99
+ | allowMoreThanMaxLength | `boolean` | - | Можно ли вводить больше разрешённого кол-ва символов |
100
+ | showCopyButton | `boolean` | - | Отображение кнопки Копировать для поля (актуально только для `readonly = true`) |
101
+ | onCopyButtonClick | `() => void` | - | Колбек клика по кнопке Копировать для поля |
102
+ | showClearButton | `boolean` | true | Отображение кнопки очистки поля |
103
+ | minRows | `number` | 3 | Минимальное кол-во строк, до которого размер поля может быть увеличен |
104
+ | maxRows | `number` | 1000 | Максимальное кол-во строк, до которого размер поля может быть увеличен |
105
+ | resizable | `boolean` | - | Может ли ли пользователь изменять размеры поля (если св-во не включено, поле автоматически меняет свой размер) |
106
+ | attachment | `Pick<FileUploadProps, "onFilesUpload" \| "accept"> & { files?: File[]; onFileDelete: (file?: File) => void; }` | - | |
34
107
  ## AIDisclaimer
35
108
  ### Props
36
109
  | name | type | default value | description |
37
110
  |------|------|---------------|-------------|
111
+ | layoutType* | enum LayoutType: `"mobile"`, `"tablet"`, `"desktop"`, `"desktopSmall"` | - | |
38
112
  ## FieldName
39
113
  Поле имя c локальным стейтом и валидацией
40
114
  ### Props
41
115
  | name | type | default value | description |
42
116
  |------|------|---------------|-------------|
43
- | ref | `any` | - | Allows getting a ref to the component instance. Once the component unmounts, React will set `ref.current` to `null` (or call the ref with `null` if you passed a callback ref). @see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs} |
44
- | key | `any` | - | |
117
+ | layoutType* | enum LayoutType: `"mobile"`, `"tablet"`, `"desktop"`, `"desktopSmall"` | - | |
118
+ | value | `string` | - | Значение input |
119
+ | onChange | `(value: string, e?: ChangeEvent<HTMLInputElement>) => void` | - | Колбек смены значения |
120
+ | id | `string` | - | Значение html-атрибута id |
121
+ | name | `string` | - | Значение html-атрибута name |
122
+ | maxLength | `number` | - | Максимальная длина вводимого значения |
123
+ | disabled | `boolean` | false | Является ли поле деактивированным |
124
+ | readonly | `boolean` | false | Является ли поле доступным только для чтения |
125
+ | onFocus | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки получения фокуса |
126
+ | onBlur | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки потери фокуса |
127
+ | autoComplete | `string \| boolean` | false | Включен ли автокомплит для поля |
128
+ | autoFocus | `boolean` | false | Включен ли авто-фокус для поля |
129
+ | onPaste | `ClipboardEventHandler<HTMLInputElement>` | - | Колбек обработки вставки значения |
130
+ | onKeyDown | `KeyboardEventHandler<HTMLInputElement>` | - | Колбек обработки начала нажатия клавиши клавиатуры |
131
+ | spellCheck | `boolean` | true | Значение атрибута spellcheck (проверка орфографии) |
132
+ | pattern | `string` | - | Регулярное выражение валидного инпута |
133
+ | className | `string` | - | CSS-класс |
134
+ | labelTooltip | `ReactNode` | - | Всплывающая подсказка лейбла |
135
+ | required | `boolean` | - | Является ли поле обязательным |
136
+ | showHintIcon | `boolean` | - | Отображать иконку подсказки |
137
+ | size | enum Size: `"s"`, `"m"`, `"l"` | - | Размер |
138
+ | validationState | enum ValidationState: `"error"`, `"default"`, `"warning"`, `"success"` | - | Состояние валидации |
139
+ | labelTooltipPlacement | enum Placement: `"left"`, `"left-start"`, `"left-end"`, `"right"`, `"right-start"`, `"right-end"`, `"top"`, `"top-start"`, `"top-end"`, `"bottom"`, `"bottom-start"`, `"bottom-end"` | top | Расположение подсказки лейбла |
140
+ | error | `string` | - | |
141
+ | prefix | `ReactNode` | - | Произвольный префикс для поля |
142
+ | prefixIcon | `ReactElement<any, string \| JSXElementConstructor<any>>` | - | Иконка-префикс для поля |
143
+ | postfix | `ReactNode` | - | Произвольный постфикс для поля |
144
+ | allowMoreThanMaxLength | `boolean` | - | Можно ли вводить больше разрешённого кол-ва символов |
145
+ | button | `Button` | - | Кнопка действия внутри поля |
146
+ | showCopyButton | `boolean` | - | Отображение кнопки Копировать для поля (актуально только для `readonly = true`) |
147
+ | onCopyButtonClick | `() => void` | - | Колбек клика по кнопке Копировать для поля |
148
+ | showClearButton | `boolean` | true | Отображение кнопки очистки поля |
149
+ | onClearButtonClick | `() => void` | - | Колбек клика по кнопке очистки поля |
150
+ | showLabel | `boolean` | - | |
151
+ | customSchema | `StringSchema<string, AnyObject, undefined, "">` | - | |
152
+ | onValidationError | `(error: ValidationError) => void` | - | Колбэк, вызываемый при изменении ошибки валидации |
153
+ | ref | `LegacyRef<HTMLInputElement>` | - | Allows getting a ref to the component instance. Once the component unmounts, React will set `ref.current` to `null` (or call the ref with `null` if you passed a callback ref). @see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs} |
154
+ | key | `Key` | - | |
45
155
  ## FieldNameRHF
46
156
  Поле имя c оберткой для React Hook Form
47
157
  ### Props
48
158
  | name | type | default value | description |
49
159
  |------|------|---------------|-------------|
50
- | ref | `any` | - | Allows getting a ref to the component instance. Once the component unmounts, React will set `ref.current` to `null` (or call the ref with `null` if you passed a callback ref). @see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs} |
51
- | key | `any` | - | |
160
+ | layoutType* | enum LayoutType: `"mobile"`, `"tablet"`, `"desktop"`, `"desktopSmall"` | - | |
161
+ | controllerProps* | `Omit<ControllerProps<FieldValues>, "disabled" \| "render" \| "rules">` | - | Режим контроллера с использованием react-hook-form |
162
+ | value | `string` | - | Значение input |
163
+ | onChange | `(value: string, e?: ChangeEvent<HTMLInputElement>) => void` | - | Колбек смены значения |
164
+ | id | `string` | - | Значение html-атрибута id |
165
+ | name | `string` | - | Значение html-атрибута name |
166
+ | maxLength | `number` | - | Максимальная длина вводимого значения |
167
+ | disabled | `boolean` | false | Является ли поле деактивированным |
168
+ | readonly | `boolean` | false | Является ли поле доступным только для чтения |
169
+ | onFocus | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки получения фокуса |
170
+ | onBlur | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки потери фокуса |
171
+ | autoComplete | `string \| boolean` | false | Включен ли автокомплит для поля |
172
+ | autoFocus | `boolean` | false | Включен ли авто-фокус для поля |
173
+ | onPaste | `ClipboardEventHandler<HTMLInputElement>` | - | Колбек обработки вставки значения |
174
+ | onKeyDown | `KeyboardEventHandler<HTMLInputElement>` | - | Колбек обработки начала нажатия клавиши клавиатуры |
175
+ | spellCheck | `boolean` | true | Значение атрибута spellcheck (проверка орфографии) |
176
+ | pattern | `string` | - | Регулярное выражение валидного инпута |
177
+ | className | `string` | - | CSS-класс |
178
+ | labelTooltip | `ReactNode` | - | Всплывающая подсказка лейбла |
179
+ | required | `boolean` | - | Является ли поле обязательным |
180
+ | showHintIcon | `boolean` | - | Отображать иконку подсказки |
181
+ | size | enum Size: `"s"`, `"m"`, `"l"` | - | Размер |
182
+ | validationState | enum ValidationState: `"error"`, `"default"`, `"warning"`, `"success"` | - | Состояние валидации |
183
+ | labelTooltipPlacement | enum Placement: `"left"`, `"left-start"`, `"left-end"`, `"right"`, `"right-start"`, `"right-end"`, `"top"`, `"top-start"`, `"top-end"`, `"bottom"`, `"bottom-start"`, `"bottom-end"` | top | Расположение подсказки лейбла |
184
+ | error | `string` | - | |
185
+ | prefix | `ReactNode` | - | Произвольный префикс для поля |
186
+ | prefixIcon | `ReactElement<any, string \| JSXElementConstructor<any>>` | - | Иконка-префикс для поля |
187
+ | postfix | `ReactNode` | - | Произвольный постфикс для поля |
188
+ | allowMoreThanMaxLength | `boolean` | - | Можно ли вводить больше разрешённого кол-ва символов |
189
+ | button | `Button` | - | Кнопка действия внутри поля |
190
+ | showCopyButton | `boolean` | - | Отображение кнопки Копировать для поля (актуально только для `readonly = true`) |
191
+ | onCopyButtonClick | `() => void` | - | Колбек клика по кнопке Копировать для поля |
192
+ | showClearButton | `boolean` | true | Отображение кнопки очистки поля |
193
+ | onClearButtonClick | `() => void` | - | Колбек клика по кнопке очистки поля |
194
+ | showLabel | `boolean` | - | |
195
+ | customSchema | `StringSchema<string, AnyObject, undefined, "">` | - | |
196
+ | ref | `LegacyRef<HTMLInputElement>` | - | Allows getting a ref to the component instance. Once the component unmounts, React will set `ref.current` to `null` (or call the ref with `null` if you passed a callback ref). @see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs} |
197
+ | key | `Key` | - | |
52
198
  ## FieldDescription
53
199
  Поле описание c локальным стейтом и валидацией
54
200
  ### Props
55
201
  | name | type | default value | description |
56
202
  |------|------|---------------|-------------|
57
- | ref | `any` | - | Allows getting a ref to the component instance. Once the component unmounts, React will set `ref.current` to `null` (or call the ref with `null` if you passed a callback ref). @see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs} |
58
- | key | `any` | - | |
203
+ | layoutType* | enum LayoutType: `"mobile"`, `"tablet"`, `"desktop"`, `"desktopSmall"` | - | |
204
+ | value | `string` | - | HTML-аттрибут value |
205
+ | onChange | `(value: string, e?: ChangeEvent<HTMLTextAreaElement>) => void` | - | Колбек смены значения |
206
+ | id | `string` | - | HTML-аттрибут id |
207
+ | maxLength | `number` | 255 | Максимальное кол-во символов |
208
+ | disabled | `boolean` | - | Является ли поле деактивированным |
209
+ | readonly | `boolean` | - | Является ли поле доступным только на чтение |
210
+ | onFocus | `FocusEventHandler<HTMLTextAreaElement>` | - | Колбек получения фокуса |
211
+ | onBlur | `FocusEventHandler<HTMLTextAreaElement>` | - | Колбек потери фокуса |
212
+ | autoFocus | `boolean` | - | Включен ли авто-фокус |
213
+ | onKeyDown | `KeyboardEventHandler<HTMLTextAreaElement>` | - | Колбек нажатия клавиши клавиатуры |
214
+ | spellCheck | `boolean` | true | Включение проверки орфографии |
215
+ | className | `string` | - | CSS-класс |
216
+ | labelTooltip | `ReactNode` | - | Всплывающая подсказка лейбла |
217
+ | required | `boolean` | - | Является ли поле обязательным |
218
+ | showHintIcon | `boolean` | - | Отображать иконку подсказки |
219
+ | size | enum Size: `"s"`, `"m"`, `"l"` | m | Размер |
220
+ | validationState | enum ValidationState: `"error"`, `"default"`, `"warning"`, `"success"` | - | Состояние валидации |
221
+ | labelTooltipPlacement | enum Placement: `"left"`, `"left-start"`, `"left-end"`, `"right"`, `"right-start"`, `"right-end"`, `"top"`, `"top-start"`, `"top-end"`, `"bottom"`, `"bottom-start"`, `"bottom-end"` | top | Расположение подсказки лейбла |
222
+ | error | `string` | - | |
223
+ | allowMoreThanMaxLength | `boolean` | - | Можно ли вводить больше разрешённого кол-ва символов |
224
+ | showCopyButton | `boolean` | - | Отображение кнопки Копировать для поля (актуально только для `readonly = true`) |
225
+ | onCopyButtonClick | `() => void` | - | Колбек клика по кнопке Копировать для поля |
226
+ | showClearButton | `boolean` | true | Отображение кнопки очистки поля |
227
+ | minRows | `number` | 3 | Минимальное кол-во строк, до которого размер поля может быть увеличен |
228
+ | maxRows | `number` | 1000 | Максимальное кол-во строк, до которого размер поля может быть увеличен |
229
+ | resizable | `boolean` | true | Может ли ли пользователь изменять размеры поля (если св-во не включено, поле автоматически меняет свой размер) |
230
+ | customSchema | `StringSchema<string, AnyObject, undefined, "">` | - | |
231
+ | addButton | `boolean` | - | Поле появляется по кнопке "Добавить описание" (только для опционального поля) |
232
+ | onValidationError | `(error: ValidationError) => void` | - | Колбэк, вызываемый при изменении ошибки валидации (только в standalone режиме) |
233
+ | ref | `LegacyRef<HTMLInputElement>` | - | Allows getting a ref to the component instance. Once the component unmounts, React will set `ref.current` to `null` (or call the ref with `null` if you passed a callback ref). @see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs} |
234
+ | key | `Key` | - | |
59
235
  ## FieldDescriptionRHF
60
236
  Поле описание c оберткой для React Hook Form
61
237
  ### Props
62
238
  | name | type | default value | description |
63
239
  |------|------|---------------|-------------|
64
- | ref | `any` | - | Allows getting a ref to the component instance. Once the component unmounts, React will set `ref.current` to `null` (or call the ref with `null` if you passed a callback ref). @see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs} |
65
- | key | `any` | - | |
240
+ | layoutType* | enum LayoutType: `"mobile"`, `"tablet"`, `"desktop"`, `"desktopSmall"` | - | |
241
+ | controllerProps* | `Omit<ControllerProps<FieldValues>, "disabled" \| "render" \| "rules">` | - | Режим контроллера с использованием react-hook-form |
242
+ | value | `string` | - | HTML-аттрибут value |
243
+ | onChange | `(value: string, e?: ChangeEvent<HTMLTextAreaElement>) => void` | - | Колбек смены значения |
244
+ | id | `string` | - | HTML-аттрибут id |
245
+ | maxLength | `number` | 255 | Максимальное кол-во символов |
246
+ | disabled | `boolean` | - | Является ли поле деактивированным |
247
+ | readonly | `boolean` | - | Является ли поле доступным только на чтение |
248
+ | onFocus | `FocusEventHandler<HTMLTextAreaElement>` | - | Колбек получения фокуса |
249
+ | onBlur | `FocusEventHandler<HTMLTextAreaElement>` | - | Колбек потери фокуса |
250
+ | autoFocus | `boolean` | - | Включен ли авто-фокус |
251
+ | onKeyDown | `KeyboardEventHandler<HTMLTextAreaElement>` | - | Колбек нажатия клавиши клавиатуры |
252
+ | spellCheck | `boolean` | true | Включение проверки орфографии |
253
+ | className | `string` | - | CSS-класс |
254
+ | labelTooltip | `ReactNode` | - | Всплывающая подсказка лейбла |
255
+ | required | `boolean` | - | Является ли поле обязательным |
256
+ | showHintIcon | `boolean` | - | Отображать иконку подсказки |
257
+ | size | enum Size: `"s"`, `"m"`, `"l"` | m | Размер |
258
+ | validationState | enum ValidationState: `"error"`, `"default"`, `"warning"`, `"success"` | - | Состояние валидации |
259
+ | labelTooltipPlacement | enum Placement: `"left"`, `"left-start"`, `"left-end"`, `"right"`, `"right-start"`, `"right-end"`, `"top"`, `"top-start"`, `"top-end"`, `"bottom"`, `"bottom-start"`, `"bottom-end"` | top | Расположение подсказки лейбла |
260
+ | error | `string` | - | |
261
+ | allowMoreThanMaxLength | `boolean` | - | Можно ли вводить больше разрешённого кол-ва символов |
262
+ | showCopyButton | `boolean` | - | Отображение кнопки Копировать для поля (актуально только для `readonly = true`) |
263
+ | onCopyButtonClick | `() => void` | - | Колбек клика по кнопке Копировать для поля |
264
+ | showClearButton | `boolean` | true | Отображение кнопки очистки поля |
265
+ | minRows | `number` | 3 | Минимальное кол-во строк, до которого размер поля может быть увеличен |
266
+ | maxRows | `number` | 1000 | Максимальное кол-во строк, до которого размер поля может быть увеличен |
267
+ | resizable | `boolean` | true | Может ли ли пользователь изменять размеры поля (если св-во не включено, поле автоматически меняет свой размер) |
268
+ | customSchema | `StringSchema<string, AnyObject, undefined, "">` | - | |
269
+ | addButton | `boolean` | - | Поле появляется по кнопке "Добавить описание" (только для опционального поля) |
270
+ | ref | `LegacyRef<HTMLInputElement>` | - | Allows getting a ref to the component instance. Once the component unmounts, React will set `ref.current` to `null` (or call the ref with `null` if you passed a callback ref). @see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs} |
271
+ | key | `Key` | - | |
66
272
  ## FieldMask
67
273
  ### Props
68
274
  | name | type | default value | description |
69
275
  |------|------|---------------|-------------|
70
- | ref | `any` | - | Allows getting a ref to the component instance. Once the component unmounts, React will set `ref.current` to `null` (or call the ref with `null` if you passed a callback ref). @see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs} |
71
- | key | `any` | - | |
276
+ | layoutType* | enum LayoutType: `"mobile"`, `"tablet"`, `"desktop"`, `"desktopSmall"` | - | |
277
+ | mask* | enum Mask: `"code"`, `"uuid"`, `"passport"`, `"snils"`, `"ip-v4-address"`, `"ip-v4-address-with-mask"` | - | |
278
+ | id | `string` | - | Значение html-атрибута id |
279
+ | name | `string` | - | Значение html-атрибута name |
280
+ | placeholder | `string` | - | Значение плейсхолдера |
281
+ | maxLength | `number` | - | Максимальная длина вводимого значения |
282
+ | disabled | `boolean` | false | Является ли поле деактивированным |
283
+ | readonly | `boolean` | false | Является ли поле доступным только для чтения |
284
+ | onFocus | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки получения фокуса |
285
+ | onBlur | `FocusEventHandler<HTMLInputElement>` | - | Колбек обработки потери фокуса |
286
+ | autoComplete | `string \| boolean` | false | Включен ли автокомплит для поля |
287
+ | autoFocus | `boolean` | false | Включен ли авто-фокус для поля |
288
+ | onPaste | `ClipboardEventHandler<HTMLInputElement>` | - | Колбек обработки вставки значения |
289
+ | onKeyDown | `KeyboardEventHandler<HTMLInputElement>` | - | Колбек обработки начала нажатия клавиши клавиатуры |
290
+ | spellCheck | `boolean` | true | Значение атрибута spellcheck (проверка орфографии) |
291
+ | pattern | `string` | - | Регулярное выражение валидного инпута |
292
+ | className | `string` | - | CSS-класс |
293
+ | label | `string` | - | Лейбл |
294
+ | labelTooltip | `ReactNode` | - | Всплывающая подсказка лейбла |
295
+ | required | `boolean` | - | Является ли поле обязательным |
296
+ | caption | `string` | - | Подпись справа от лейбла |
297
+ | hint | `string` | - | Подсказка внизу |
298
+ | showHintIcon | `boolean` | - | Отображать иконку подсказки |
299
+ | size | enum Size: `"s"`, `"m"`, `"l"` | - | Размер |
300
+ | validationState | enum ValidationState: `"error"`, `"default"`, `"warning"`, `"success"` | - | Состояние валидации |
301
+ | labelTooltipPlacement | enum Placement: `"left"`, `"left-start"`, `"left-end"`, `"right"`, `"right-start"`, `"right-end"`, `"top"`, `"top-start"`, `"top-end"`, `"bottom"`, `"bottom-start"`, `"bottom-end"` | top | Расположение подсказки лейбла |
302
+ | error | `string` | - | |
303
+ | prefix | `ReactNode` | - | Произвольный префикс для поля |
304
+ | prefixIcon | `ReactElement<any, string \| JSXElementConstructor<any>>` | - | Иконка-префикс для поля |
305
+ | postfix | `ReactNode` | - | Произвольный постфикс для поля |
306
+ | allowMoreThanMaxLength | `boolean` | - | Можно ли вводить больше разрешённого кол-ва символов |
307
+ | button | `Button` | - | Кнопка действия внутри поля |
308
+ | type | "text" \| "tel" \| "email" | - | |
309
+ | showCopyButton | `boolean` | - | Отображение кнопки Копировать для поля (актуально только для `readonly = true`) |
310
+ | onCopyButtonClick | `() => void` | - | Колбек клика по кнопке Копировать для поля |
311
+ | showClearButton | `boolean` | true | Отображение кнопки очистки поля |
312
+ | onClearButtonClick | `() => void` | - | Колбек клика по кнопке очистки поля |
313
+ | value | `string` | - | |
314
+ | onChange | `(value: string, mask: InputMask<Record<string, unknown>>) => void` | - | |
315
+ | ref | `LegacyRef<HTMLInputElement>` | - | Allows getting a ref to the component instance. Once the component unmounts, React will set `ref.current` to `null` (or call the ref with `null` if you passed a callback ref). @see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs} |
316
+ | key | `Key` | - | |
317
+ ## useFieldCodeValidate
318
+ Возвращает функцию валидации значения кода (пусто / неполный код).
319
+ ### Props
320
+ | name | type | default value | description |
321
+ |------|------|---------------|-------------|
322
+ | codeLength* | `number` | - | Ожидаемая длина кода (цифр) |
323
+ ## FieldCode
324
+ ### Props
325
+ | name | type | default value | description |
326
+ |------|------|---------------|-------------|
327
+ | codeLength* | `number` | - | Количество цифр в коде (ожидается целое ≥ 1) |
328
+ | className | `string` | - | CSS-класс компонента |
329
+ | cellClassName | `string` | - | CSS-класс ячейки кода |
330
+ | spacing | `number[]` | - | Позиции, после которых нужно вставить пробел (индексы символов, после которых будет пробел) |
331
+ | showEmptyChars | `boolean` | - | Подсветить пустые символы кода |
332
+ | resendCode | `ResendCodeProps` | - | Компонент отправки нового кода |
333
+ | focusEffects | `readonly FieldCodeFocusEffect[]` | - | Сценарии автофокуса; по умолчанию — первая ячейка при монтировании и после сброса (см. `FieldCodeFocusEffect`) |
334
+ | invalidCode | `string` | - | Сообщение при неверном коде, если не передан свой `error` |
335
+ | stretchCells | `boolean` | - | Растягивать ячейки на всю доступную ширину; иначе фиксированная ширина по `size` |
336
+ | value | `string` | - | Значение кода |
337
+ | onChange | `(code: string) => void` | - | Колбек изменения значения |
338
+ | onComplete | `(code: string) => void` | - | Колбек достижения ввода всех символов кода |
339
+ | disabled | `boolean` | - | Деактивирован ли элемент Является ли поле деактивированным |
340
+ | label | `string` | - | Лейбл |
341
+ | size | enum Size: `"s"`, `"m"`, `"l"` | - | Размер |
342
+ | error | `string` | - | |
343
+ | ref | `LegacyRef<HTMLInputElement>` | - | Allows getting a ref to the component instance. Once the component unmounts, React will set `ref.current` to `null` (or call the ref with `null` if you passed a callback ref). @see {@link https://react.dev/learn/referencing-values-with-refs#refs-and-the-dom React Docs} |
344
+ | key | `Key` | - | |
345
+ ## FieldCodeFocusEffect
346
+ Когда дергать `moveFocus` у `FieldCode` (массив `focusEffects`, порядок не важен).
347
+ ### Props
348
+ | name | type | default value | description |
349
+ |------|------|---------------|-------------|
72
350
 
73
351
 
74
352
  [//]: DOCUMENTATION_SECTION_END
@@ -0,0 +1,35 @@
1
+ import { FieldDecoratorProps } from '@snack-uikit/fields';
2
+ import { type ResendCodeProps } from './components';
3
+ import { type FieldCodeFocusEffect } from './constants';
4
+ import { UseCodeInputParams } from './hooks';
5
+ export type FieldCodeRef = {
6
+ /** Перенести фокус на ячейку с индексом `index` */
7
+ moveFocus: (index: number) => void;
8
+ /** Убрать фокус со всех ячеек кода */
9
+ blurFields: () => void;
10
+ /** Сбросить значение кода */
11
+ resetCode: () => void;
12
+ };
13
+ /** Собственные пропсы `FieldCode` */
14
+ export type FieldCodeOwnProps = {
15
+ /** CSS-класс компонента */
16
+ className?: string;
17
+ /** CSS-класс ячейки кода */
18
+ cellClassName?: string;
19
+ /** Позиции, после которых нужно вставить пробел (индексы символов, после которых будет пробел) */
20
+ spacing?: number[];
21
+ /** Подсветить пустые символы кода */
22
+ showEmptyChars?: boolean;
23
+ /** Компонент отправки нового кода */
24
+ resendCode?: ResendCodeProps;
25
+ /** Сценарии автофокуса; по умолчанию — первая ячейка при монтировании и после сброса (см. `FieldCodeFocusEffect`) */
26
+ focusEffects?: readonly FieldCodeFocusEffect[];
27
+ /** Сообщение при неверном коде, если не передан свой `error` */
28
+ invalidCode?: string;
29
+ /** Растягивать ячейки на всю доступную ширину; иначе фиксированная ширина по `size` */
30
+ stretchCells?: boolean;
31
+ };
32
+ export type FieldCodeProps = FieldCodeOwnProps & Omit<UseCodeInputParams, 'moveFocus'> & Pick<FieldDecoratorProps, 'size' | 'disabled' | 'label' | 'error' | 'data-test-id'>;
33
+ export declare const FieldCode: import("react").ForwardRefExoticComponent<FieldCodeOwnProps & Omit<UseCodeInputParams, "moveFocus"> & Pick<FieldDecoratorProps, "size" | "label" | "error" | "disabled" | "data-test-id"> & import("react").RefAttributes<FieldCodeRef>>;
34
+ export type { FieldCodeFocusEffect } from './constants';
35
+ export { FIELD_CODE_DEFAULT_FOCUS_EFFECTS } from './constants';
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FIELD_CODE_DEFAULT_FOCUS_EFFECTS = exports.FieldCode = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const classnames_1 = __importDefault(require("classnames"));
9
+ const react_1 = require("react");
10
+ const fields_1 = require("@snack-uikit/fields");
11
+ const components_1 = require("./components");
12
+ const constants_1 = require("./constants");
13
+ const hooks_1 = require("./hooks");
14
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
15
+ const utils_1 = require("./utils");
16
+ exports.FieldCode = (0, react_1.forwardRef)(function FieldCode(props, ref) {
17
+ var _a;
18
+ const { codeLength, className, cellClassName, value, onChange, spacing, onComplete, size, disabled, label, error, invalidCode, showEmptyChars, resendCode, focusEffects = constants_1.FIELD_CODE_DEFAULT_FOCUS_EFFECTS, stretchCells = false, 'data-test-id': dataTestId, } = props;
19
+ const { inputsRef, moveFocus, blurFields } = (0, hooks_1.useFocusCell)(codeLength);
20
+ const { code, cellHandlers, onChangeCode } = (0, hooks_1.useCodeInput)({ value, onChange, codeLength, moveFocus, onComplete });
21
+ const { resetCode } = (0, hooks_1.useFieldHelpers)({
22
+ onChangeCode,
23
+ focusEffects,
24
+ moveFocus,
25
+ showEmptyChars,
26
+ code,
27
+ codeLength,
28
+ });
29
+ (0, react_1.useImperativeHandle)(ref, () => ({
30
+ moveFocus,
31
+ blurFields,
32
+ resetCode,
33
+ }), [moveFocus, blurFields, resetCode]);
34
+ const resolvedError = error !== null && error !== void 0 ? error : invalidCode;
35
+ const resolvedDecoratorProps = {
36
+ label,
37
+ disabled,
38
+ size,
39
+ error: resolvedError,
40
+ };
41
+ return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ className: (0, classnames_1.default)(styles_module_scss_1.default.fieldCode, className), "data-stretch-cells": stretchCells || undefined }, (dataTestId ? { 'data-test-id': dataTestId } : undefined), { children: [(0, jsx_runtime_1.jsx)(fields_1.FieldDecorator, Object.assign({ className: styles_module_scss_1.default.fieldDecorator }, resolvedDecoratorProps, { children: (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.codeContainer, "data-size": size, "data-stretch-cells": stretchCells || undefined, children: code.map((char, index) => ((0, jsx_runtime_1.jsx)(components_1.Cell, { ref: inputRef => {
42
+ if (inputRef) {
43
+ inputsRef.current[index] = inputRef;
44
+ }
45
+ }, className: (0, classnames_1.default)((spacing === null || spacing === void 0 ? void 0 : spacing.includes(index)) && styles_module_scss_1.default.cellSpacing, cellClassName), stretchCells: stretchCells, size: size, value: char, disabled: disabled, autoComplete: index === 0 ? 'one-time-code' : undefined, onKeyDown: e => cellHandlers.onKeyDown(e, index), onPaste: cellHandlers.onPaste, onChange: e => cellHandlers.onChange(e, index), validationState: (0, utils_1.getCellValidationState)(char, showEmptyChars, Boolean(resolvedError)) }, index))) }) })), resendCode ? (0, jsx_runtime_1.jsx)(components_1.ResendCode, Object.assign({}, resendCode, { size: (_a = resendCode.size) !== null && _a !== void 0 ? _a : size })) : null] })));
46
+ });
47
+ var constants_2 = require("./constants");
48
+ Object.defineProperty(exports, "FIELD_CODE_DEFAULT_FOCUS_EFFECTS", { enumerable: true, get: function () { return constants_2.FIELD_CODE_DEFAULT_FOCUS_EFFECTS; } });
@@ -0,0 +1,7 @@
1
+ import { FieldTextProps } from '@snack-uikit/fields';
2
+ export declare const Cell: import("react").ForwardRefExoticComponent<{
3
+ /** CSS-класс ячейки кода */
4
+ className?: string;
5
+ /** Растягивать ячейку на всю доступную ширину */
6
+ stretchCells?: boolean;
7
+ } & Pick<FieldTextProps, "size" | "onPaste" | "onChange" | "onKeyDown" | "value" | "disabled" | "autoComplete" | "validationState"> & import("react").RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.Cell = void 0;
18
+ const jsx_runtime_1 = require("react/jsx-runtime");
19
+ const classnames_1 = __importDefault(require("classnames"));
20
+ const react_1 = require("react");
21
+ const fields_1 = require("@snack-uikit/fields");
22
+ const constants_1 = require("../../constants");
23
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
24
+ exports.Cell = (0, react_1.forwardRef)((props, ref) => {
25
+ const { className, size, stretchCells, value } = props, fieldCellProps = __rest(props, ["className", "size", "stretchCells", "value"]);
26
+ return ((0, jsx_runtime_1.jsx)(fields_1.FieldText, Object.assign({ inputMode: 'numeric', ref: ref, className: (0, classnames_1.default)(styles_module_scss_1.default.cell, className), "data-size": size, "data-stretch-cells": stretchCells || undefined, showClearButton: false, value: value === constants_1.ZERO_WIDTH_SPACE ? '' : value, size: size }, fieldCellProps)));
27
+ });
@@ -0,0 +1 @@
1
+ export * from './Cell';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Cell"), exports);
@@ -0,0 +1,19 @@
1
+ .cell{
2
+ flex-shrink:0;
3
+ }
4
+ .cell input{
5
+ text-align:center;
6
+ }
7
+ .cell[data-size=s]:not([data-stretch-cells]){
8
+ width:32px;
9
+ }
10
+ .cell[data-size=m]:not([data-stretch-cells]){
11
+ width:40px;
12
+ }
13
+ .cell[data-size=l]:not([data-stretch-cells]){
14
+ width:48px;
15
+ }
16
+ .cell[data-stretch-cells]{
17
+ flex:1 1 0;
18
+ min-width:0;
19
+ }
@@ -0,0 +1,8 @@
1
+ import { ButtonFunctionProps } from '@snack-uikit/button';
2
+ export type ResendCodeProps = {
3
+ /** Колбек отправки нового кода */
4
+ onResend: () => void;
5
+ /** Количество секунд до следующего отправления кода */
6
+ secondsToNextResend: number;
7
+ } & Pick<ButtonFunctionProps, 'size' | 'disabled'>;
8
+ export declare function ResendCode(props: ResendCodeProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.ResendCode = ResendCode;
15
+ const jsx_runtime_1 = require("react/jsx-runtime");
16
+ const uikit_product_icons_1 = require("@cloud-ru/uikit-product-icons");
17
+ const uikit_product_locale_1 = require("@cloud-ru/uikit-product-locale");
18
+ const button_1 = require("@snack-uikit/button");
19
+ const utils_1 = require("./utils");
20
+ function ResendCode(props) {
21
+ const { onResend, secondsToNextResend } = props, buttonProps = __rest(props, ["onResend", "secondsToNextResend"]);
22
+ const { t } = (0, uikit_product_locale_1.useLocale)('FieldsPredefined');
23
+ return ((0, jsx_runtime_1.jsx)(button_1.ButtonFunction, Object.assign({ label: secondsToNextResend > 0
24
+ ? t('FieldCode.resendCodeButtons.resendCodeWithVia', {
25
+ timer: (0, utils_1.formatSecondsAsMmSs)(secondsToNextResend),
26
+ })
27
+ : t('FieldCode.resendCodeButtons.resendCode'), onClick: onResend, icon: (0, jsx_runtime_1.jsx)(uikit_product_icons_1.UpdateSVG, {}), iconPosition: 'before' }, buttonProps)));
28
+ }
@@ -0,0 +1 @@
1
+ export * from './ResendCode';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ResendCode"), exports);
@@ -0,0 +1 @@
1
+ export declare function formatSecondsAsMmSs(totalSeconds: number): string;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatSecondsAsMmSs = formatSecondsAsMmSs;
4
+ function formatSecondsAsMmSs(totalSeconds) {
5
+ const minutes = Math.floor(totalSeconds / 60);
6
+ const seconds = totalSeconds % 60;
7
+ return `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;
8
+ }
@@ -0,0 +1,2 @@
1
+ export * from './Cell';
2
+ export * from './ResendCode';