@alfalab/core-components-input-autocomplete 10.2.3 → 11.0.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 (262) hide show
  1. package/Component.desktop.d.ts +3 -70
  2. package/Component.desktop.js +2 -1
  3. package/Component.mobile.d.ts +5 -95
  4. package/Component.mobile.js +42 -45
  5. package/Component.modal.mobile.d.ts +5 -88
  6. package/Component.modal.mobile.js +9 -62
  7. package/Component.responsive.d.ts +3 -46
  8. package/Component.responsive.js +9 -12
  9. package/autocomplete-field/Component.d.ts +3 -3
  10. package/autocomplete-field/Component.js +1 -1
  11. package/autocomplete-field/index.css +2 -2
  12. package/autocomplete-mobile-field/Component.d.ts +2 -2
  13. package/autocomplete-mobile-field/Component.js +6 -3
  14. package/autocomplete-mobile-field/index.css +10 -10
  15. package/cssm/Component.desktop.d.ts +3 -70
  16. package/cssm/Component.desktop.js +2 -1
  17. package/cssm/Component.mobile.d.ts +5 -95
  18. package/cssm/Component.mobile.js +39 -44
  19. package/cssm/Component.modal.mobile.d.ts +5 -88
  20. package/cssm/Component.modal.mobile.js +10 -63
  21. package/cssm/Component.responsive.d.ts +3 -46
  22. package/cssm/Component.responsive.js +9 -11
  23. package/cssm/autocomplete-field/Component.d.ts +3 -3
  24. package/cssm/autocomplete-mobile-field/Component.d.ts +2 -2
  25. package/cssm/autocomplete-mobile-field/Component.js +5 -2
  26. package/cssm/autocomplete-mobile-field/index.module.css +2 -2
  27. package/cssm/desktop/index.d.ts +2 -0
  28. package/cssm/{desktop.js → desktop/index.js} +4 -3
  29. package/cssm/index.d.ts +2 -2
  30. package/cssm/index.js +5 -4
  31. package/cssm/mobile/index.d.ts +3 -0
  32. package/cssm/{mobile.js → mobile/index.js} +7 -7
  33. package/cssm/mobile.module.css +3 -10
  34. package/cssm/types.d.ts +58 -0
  35. package/cssm/types.js +2 -0
  36. package/cssm/utils.d.ts +2 -0
  37. package/cssm/utils.js +9 -0
  38. package/desktop/index.d.ts +2 -0
  39. package/{desktop.js → desktop/index.js} +3 -2
  40. package/desktop/package.json +3 -0
  41. package/esm/Component.desktop.d.ts +3 -70
  42. package/esm/Component.desktop.js +2 -1
  43. package/esm/Component.mobile.d.ts +5 -95
  44. package/esm/Component.mobile.js +43 -46
  45. package/esm/Component.modal.mobile.d.ts +5 -88
  46. package/esm/Component.modal.mobile.js +11 -61
  47. package/esm/Component.responsive.d.ts +3 -46
  48. package/esm/Component.responsive.js +9 -12
  49. package/esm/autocomplete-field/Component.d.ts +3 -3
  50. package/esm/autocomplete-field/Component.js +1 -1
  51. package/esm/autocomplete-field/index.css +2 -2
  52. package/esm/autocomplete-mobile-field/Component.d.ts +2 -2
  53. package/esm/autocomplete-mobile-field/Component.js +6 -3
  54. package/esm/autocomplete-mobile-field/index.css +10 -10
  55. package/esm/desktop/index.d.ts +2 -0
  56. package/esm/{desktop.js → desktop/index.js} +3 -2
  57. package/esm/index.d.ts +2 -2
  58. package/esm/index.js +5 -5
  59. package/esm/mobile/index.d.ts +3 -0
  60. package/esm/mobile/index.js +14 -0
  61. package/esm/mobile.css +4 -11
  62. package/esm/types.d.ts +58 -0
  63. package/esm/types.js +1 -0
  64. package/esm/utils.d.ts +2 -0
  65. package/esm/utils.js +5 -0
  66. package/index.d.ts +2 -2
  67. package/index.js +5 -5
  68. package/mobile/index.d.ts +3 -0
  69. package/{mobile.js → mobile/index.js} +5 -6
  70. package/mobile/package.json +3 -0
  71. package/mobile.css +4 -11
  72. package/modern/Component.desktop.d.ts +3 -70
  73. package/modern/Component.desktop.js +2 -1
  74. package/modern/Component.mobile.d.ts +5 -95
  75. package/modern/Component.mobile.js +54 -56
  76. package/modern/Component.modal.mobile.d.ts +5 -88
  77. package/modern/Component.modal.mobile.js +10 -68
  78. package/modern/Component.responsive.d.ts +3 -46
  79. package/modern/Component.responsive.js +8 -11
  80. package/modern/autocomplete-field/Component.d.ts +3 -3
  81. package/modern/autocomplete-field/Component.js +1 -1
  82. package/modern/autocomplete-field/index.css +2 -2
  83. package/modern/autocomplete-mobile-field/Component.d.ts +2 -2
  84. package/modern/autocomplete-mobile-field/Component.js +5 -2
  85. package/modern/autocomplete-mobile-field/index.css +10 -10
  86. package/modern/desktop/index.d.ts +2 -0
  87. package/modern/{desktop.js → desktop/index.js} +3 -2
  88. package/modern/index.d.ts +2 -2
  89. package/modern/index.js +5 -5
  90. package/modern/mobile/index.d.ts +3 -0
  91. package/modern/mobile/index.js +13 -0
  92. package/modern/mobile.css +4 -11
  93. package/modern/types.d.ts +58 -0
  94. package/modern/types.js +1 -0
  95. package/modern/utils.d.ts +2 -0
  96. package/modern/utils.js +5 -0
  97. package/package.json +7 -6
  98. package/src/Component.desktop.tsx +6 -44
  99. package/src/Component.mobile.tsx +90 -188
  100. package/src/Component.modal.mobile.tsx +5 -223
  101. package/src/Component.responsive.tsx +10 -30
  102. package/src/autocomplete-field/Component.tsx +2 -2
  103. package/src/autocomplete-mobile-field/Component.tsx +5 -1
  104. package/src/desktop/index.ts +2 -0
  105. package/src/desktop/package.json +3 -0
  106. package/src/index.ts +2 -4
  107. package/src/mobile/index.ts +4 -0
  108. package/src/mobile/package.json +3 -0
  109. package/src/mobile.module.css +2 -11
  110. package/src/types.ts +77 -0
  111. package/src/utils.ts +3 -0
  112. package/types.d.ts +58 -0
  113. package/types.js +2 -0
  114. package/utils.d.ts +2 -0
  115. package/utils.js +9 -0
  116. package/Component-0f4b9bed.d.ts +0 -72
  117. package/Component-69921c40.d.ts +0 -184
  118. package/Component-89f0cb07.d.ts +0 -38
  119. package/Component-bdb4c6b9.d.ts +0 -12
  120. package/Component-c76d6398.d.ts +0 -5
  121. package/Component-ebda875c.d.ts +0 -12
  122. package/Component.desktop-ebda875c.d.ts +0 -6
  123. package/Component.mobile-f1f15074.d.ts +0 -34
  124. package/Component.mobile-f28cbba0.d.ts +0 -41
  125. package/Component.modal.mobile-0f4b9bed.d.ts +0 -60
  126. package/Context-bdb4c6b9.d.ts +0 -4
  127. package/ResponsiveContext-baf4875b.d.ts +0 -5
  128. package/consts-f777ba1a.d.ts +0 -2
  129. package/cssm/Component-0f4b9bed.d.ts +0 -72
  130. package/cssm/Component-69921c40.d.ts +0 -184
  131. package/cssm/Component-89f0cb07.d.ts +0 -38
  132. package/cssm/Component-bdb4c6b9.d.ts +0 -12
  133. package/cssm/Component-c76d6398.d.ts +0 -5
  134. package/cssm/Component-ebda875c.d.ts +0 -12
  135. package/cssm/Component.desktop-ebda875c.d.ts +0 -6
  136. package/cssm/Component.mobile-f1f15074.d.ts +0 -34
  137. package/cssm/Component.mobile-f28cbba0.d.ts +0 -41
  138. package/cssm/Component.modal.mobile-0f4b9bed.d.ts +0 -60
  139. package/cssm/Context-bdb4c6b9.d.ts +0 -4
  140. package/cssm/ResponsiveContext-baf4875b.d.ts +0 -5
  141. package/cssm/consts-f777ba1a.d.ts +0 -2
  142. package/cssm/desktop-69921c40.d.ts +0 -6
  143. package/cssm/desktop.d.ts +0 -2
  144. package/cssm/hook-8abfea97.d.ts +0 -90
  145. package/cssm/index-136acbb1.d.ts +0 -28
  146. package/cssm/index-72dda473.d.ts +0 -12
  147. package/cssm/index-bdb4c6b9.d.ts +0 -2
  148. package/cssm/index-c76d6398.d.ts +0 -185
  149. package/cssm/index-ebda875c.d.ts +0 -146
  150. package/cssm/index-f12ee135.d.ts +0 -52
  151. package/cssm/mobile-89f0cb07.d.ts +0 -6
  152. package/cssm/mobile-96988a65.d.ts +0 -6
  153. package/cssm/mobile-f28cbba0.d.ts +0 -5
  154. package/cssm/mobile.d.ts +0 -3
  155. package/cssm/shared-4cd3936b.d.ts +0 -65
  156. package/cssm/types-1b036d4b.d.ts +0 -13
  157. package/cssm/types-72dda473.d.ts +0 -276
  158. package/cssm/typings-0f4b9bed.d.ts +0 -576
  159. package/cssm/typings-89f0cb07.d.ts +0 -93
  160. package/cssm/typings-bdb4c6b9.d.ts +0 -52
  161. package/cssm/useSkeleton-ebda875c.d.ts +0 -12
  162. package/cssm/utils-0f4b9bed.d.ts +0 -41
  163. package/cssm/utils-1574ad8b.d.ts +0 -29
  164. package/desktop-69921c40.d.ts +0 -6
  165. package/desktop.d.ts +0 -2
  166. package/esm/Component-0f4b9bed.d.ts +0 -72
  167. package/esm/Component-69921c40.d.ts +0 -184
  168. package/esm/Component-89f0cb07.d.ts +0 -38
  169. package/esm/Component-bdb4c6b9.d.ts +0 -12
  170. package/esm/Component-c76d6398.d.ts +0 -5
  171. package/esm/Component-ebda875c.d.ts +0 -12
  172. package/esm/Component.desktop-ebda875c.d.ts +0 -6
  173. package/esm/Component.mobile-f1f15074.d.ts +0 -34
  174. package/esm/Component.mobile-f28cbba0.d.ts +0 -41
  175. package/esm/Component.modal.mobile-0f4b9bed.d.ts +0 -60
  176. package/esm/Context-bdb4c6b9.d.ts +0 -4
  177. package/esm/ResponsiveContext-baf4875b.d.ts +0 -5
  178. package/esm/consts-f777ba1a.d.ts +0 -2
  179. package/esm/desktop-69921c40.d.ts +0 -6
  180. package/esm/desktop.d.ts +0 -2
  181. package/esm/hook-8abfea97.d.ts +0 -90
  182. package/esm/index-136acbb1.d.ts +0 -28
  183. package/esm/index-72dda473.d.ts +0 -12
  184. package/esm/index-bdb4c6b9.d.ts +0 -2
  185. package/esm/index-c76d6398.d.ts +0 -185
  186. package/esm/index-ebda875c.d.ts +0 -146
  187. package/esm/index-f12ee135.d.ts +0 -52
  188. package/esm/mobile-89f0cb07.d.ts +0 -6
  189. package/esm/mobile-96988a65.d.ts +0 -6
  190. package/esm/mobile-f28cbba0.d.ts +0 -5
  191. package/esm/mobile.d.ts +0 -3
  192. package/esm/mobile.js +0 -15
  193. package/esm/mobile.module-c5b1b036.js +0 -4
  194. package/esm/shared-4cd3936b.d.ts +0 -65
  195. package/esm/types-1b036d4b.d.ts +0 -13
  196. package/esm/types-72dda473.d.ts +0 -276
  197. package/esm/typings-0f4b9bed.d.ts +0 -576
  198. package/esm/typings-89f0cb07.d.ts +0 -93
  199. package/esm/typings-bdb4c6b9.d.ts +0 -52
  200. package/esm/useSkeleton-ebda875c.d.ts +0 -12
  201. package/esm/utils-0f4b9bed.d.ts +0 -41
  202. package/esm/utils-1574ad8b.d.ts +0 -29
  203. package/hook-8abfea97.d.ts +0 -90
  204. package/index-136acbb1.d.ts +0 -28
  205. package/index-72dda473.d.ts +0 -12
  206. package/index-bdb4c6b9.d.ts +0 -2
  207. package/index-c76d6398.d.ts +0 -185
  208. package/index-ebda875c.d.ts +0 -146
  209. package/index-f12ee135.d.ts +0 -52
  210. package/mobile-89f0cb07.d.ts +0 -6
  211. package/mobile-96988a65.d.ts +0 -6
  212. package/mobile-f28cbba0.d.ts +0 -5
  213. package/mobile.d.ts +0 -3
  214. package/mobile.module-c08975ff.js +0 -6
  215. package/modern/Component-0f4b9bed.d.ts +0 -72
  216. package/modern/Component-69921c40.d.ts +0 -184
  217. package/modern/Component-89f0cb07.d.ts +0 -38
  218. package/modern/Component-bdb4c6b9.d.ts +0 -12
  219. package/modern/Component-c76d6398.d.ts +0 -5
  220. package/modern/Component-ebda875c.d.ts +0 -12
  221. package/modern/Component.desktop-ebda875c.d.ts +0 -6
  222. package/modern/Component.mobile-f1f15074.d.ts +0 -34
  223. package/modern/Component.mobile-f28cbba0.d.ts +0 -41
  224. package/modern/Component.modal.mobile-0f4b9bed.d.ts +0 -60
  225. package/modern/Context-bdb4c6b9.d.ts +0 -4
  226. package/modern/ResponsiveContext-baf4875b.d.ts +0 -5
  227. package/modern/consts-f777ba1a.d.ts +0 -2
  228. package/modern/desktop-69921c40.d.ts +0 -6
  229. package/modern/desktop.d.ts +0 -2
  230. package/modern/hook-8abfea97.d.ts +0 -90
  231. package/modern/index-136acbb1.d.ts +0 -28
  232. package/modern/index-72dda473.d.ts +0 -12
  233. package/modern/index-bdb4c6b9.d.ts +0 -2
  234. package/modern/index-c76d6398.d.ts +0 -185
  235. package/modern/index-ebda875c.d.ts +0 -146
  236. package/modern/index-f12ee135.d.ts +0 -52
  237. package/modern/mobile-89f0cb07.d.ts +0 -6
  238. package/modern/mobile-96988a65.d.ts +0 -6
  239. package/modern/mobile-f28cbba0.d.ts +0 -5
  240. package/modern/mobile.d.ts +0 -3
  241. package/modern/mobile.js +0 -14
  242. package/modern/mobile.module-1bc0502b.js +0 -4
  243. package/modern/shared-4cd3936b.d.ts +0 -65
  244. package/modern/types-1b036d4b.d.ts +0 -13
  245. package/modern/types-72dda473.d.ts +0 -276
  246. package/modern/typings-0f4b9bed.d.ts +0 -576
  247. package/modern/typings-89f0cb07.d.ts +0 -93
  248. package/modern/typings-bdb4c6b9.d.ts +0 -52
  249. package/modern/useSkeleton-ebda875c.d.ts +0 -12
  250. package/modern/utils-0f4b9bed.d.ts +0 -41
  251. package/modern/utils-1574ad8b.d.ts +0 -29
  252. package/shared-4cd3936b.d.ts +0 -65
  253. package/src/desktop.ts +0 -1
  254. package/src/mobile.ts +0 -5
  255. package/types-1b036d4b.d.ts +0 -13
  256. package/types-72dda473.d.ts +0 -276
  257. package/typings-0f4b9bed.d.ts +0 -576
  258. package/typings-89f0cb07.d.ts +0 -93
  259. package/typings-bdb4c6b9.d.ts +0 -52
  260. package/useSkeleton-ebda875c.d.ts +0 -12
  261. package/utils-0f4b9bed.d.ts +0 -41
  262. package/utils-1574ad8b.d.ts +0 -29
package/esm/types.d.ts ADDED
@@ -0,0 +1,58 @@
1
+ import { ChangeEvent, FC, RefAttributes } from 'react';
2
+ import { InputProps } from "@alfalab/core-components-input";
3
+ import { BaseSelectProps, BottomSheetSelectMobileProps } from "@alfalab/core-components-select/shared";
4
+ interface InputAutocompleteCommonProps extends Omit<BaseSelectProps, 'autocomplete' | 'Field' | 'nativeSelect' | 'searchProps' | 'showSearch' | 'Search'> {
5
+ /**
6
+ * Компонент ввода значения
7
+ */
8
+ Input?: FC<InputProps & RefAttributes<HTMLInputElement>>;
9
+ /**
10
+ * Пропсы, которые будут прокинуты в инпут
11
+ */
12
+ inputProps?: InputProps & Record<string, unknown>;
13
+ /**
14
+ * Значение поля ввода
15
+ */
16
+ value?: string;
17
+ /**
18
+ * Поле доступно только для чтения
19
+ */
20
+ readOnly?: InputProps['readOnly'];
21
+ /**
22
+ * Отображение иконки успеха
23
+ */
24
+ success?: boolean;
25
+ /**
26
+ * Обработчик ввода
27
+ */
28
+ onInput?: (event: ChangeEvent<HTMLInputElement> | null, payload: {
29
+ value: string;
30
+ }) => void;
31
+ }
32
+ type MobileProps = {
33
+ /**
34
+ * Открывать в bottom-sheet
35
+ */
36
+ isBottomSheet?: boolean;
37
+ /**
38
+ * Пропсы анимации контента (CSSTransition)
39
+ */
40
+ transitionProps?: NonNullable<BottomSheetSelectMobileProps['bottomSheetProps']>['transitionProps'];
41
+ };
42
+ type InputAutocompleteMobileProps = InputAutocompleteCommonProps & MobileProps;
43
+ interface InputAutocompleteProps extends InputAutocompleteCommonProps {
44
+ /**
45
+ * Пропсы для мобильного компонента
46
+ */
47
+ mobileProps?: MobileProps;
48
+ /**
49
+ * Контрольная точка, с нее начинается desktop версия
50
+ * @default 1024
51
+ */
52
+ breakpoint?: number;
53
+ /**
54
+ * Значение по-умолчанию для хука useMatchMedia
55
+ */
56
+ defaultMatchMediaValue?: boolean | (() => boolean);
57
+ }
58
+ export { InputAutocompleteCommonProps, InputAutocompleteMobileProps, InputAutocompleteProps };
package/esm/types.js ADDED
@@ -0,0 +1 @@
1
+
package/esm/utils.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ declare function searchFilterStub(): boolean;
2
+ export { searchFilterStub };
package/esm/utils.js ADDED
@@ -0,0 +1,5 @@
1
+ function searchFilterStub() {
2
+ return true;
3
+ }
4
+
5
+ export { searchFilterStub };
package/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { InputAutocompleteResponsive as InputAutocomplete, InputAutocompleteResponsiveProps as InputAutocompleteProps } from "./Component.responsive";
2
- export {};
1
+ export { InputAutocomplete } from "./Component.responsive";
2
+ export type { InputAutocompleteProps } from "./types";
package/index.js CHANGED
@@ -5,8 +5,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var Component_responsive = require('./Component.responsive.js');
6
6
  require('tslib');
7
7
  require('react');
8
- require('@alfalab/hooks');
8
+ require('@alfalab/core-components-mq');
9
9
  require('./Component.desktop.js');
10
+ require('@alfalab/core-components-popover');
10
11
  require('@alfalab/core-components-select/shared');
11
12
  require('./autocomplete-field/Component.js');
12
13
  require('react-merge-refs');
@@ -14,14 +15,13 @@ require('classnames');
14
15
  require('@alfalab/core-components-input/desktop');
15
16
  require('./Component.mobile.js');
16
17
  require('lodash.throttle');
17
- require('@alfalab/core-components-button/mobile');
18
- require('@alfalab/core-components-input');
19
18
  require('@alfalab/core-components-select/mobile');
20
19
  require('./autocomplete-mobile-field/Component.js');
21
20
  require('@alfalab/core-components-form-control/mobile');
22
21
  require('@alfalab/core-components-shared');
23
- require('./mobile.module-c08975ff.js');
22
+ require('@alfalab/hooks');
23
+ require('./utils.js');
24
24
 
25
25
 
26
26
 
27
- exports.InputAutocomplete = Component_responsive.InputAutocompleteResponsive;
27
+ exports.InputAutocomplete = Component_responsive.InputAutocomplete;
@@ -0,0 +1,3 @@
1
+ export { InputAutocompleteMobile } from "../Component.mobile";
2
+ export { InputAutocompleteModalMobile } from "../Component.modal.mobile";
3
+ export { InputAutocompleteMobileProps } from "../types";
@@ -2,21 +2,20 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Component_mobile = require('./Component.mobile.js');
6
- var Component_modal_mobile = require('./Component.modal.mobile.js');
5
+ var Component_mobile = require('../Component.mobile.js');
6
+ var Component_modal_mobile = require('../Component.modal.mobile.js');
7
7
  require('tslib');
8
8
  require('react');
9
9
  require('react-merge-refs');
10
10
  require('classnames');
11
11
  require('lodash.throttle');
12
- require('@alfalab/core-components-button/mobile');
13
- require('@alfalab/core-components-input');
14
12
  require('@alfalab/core-components-select/mobile');
15
- require('./autocomplete-mobile-field/Component.js');
13
+ require('@alfalab/core-components-select/shared');
14
+ require('../autocomplete-mobile-field/Component.js');
16
15
  require('@alfalab/core-components-form-control/mobile');
17
16
  require('@alfalab/core-components-shared');
18
17
  require('@alfalab/hooks');
19
- require('./mobile.module-c08975ff.js');
18
+ require('../utils.js');
20
19
 
21
20
 
22
21
 
@@ -0,0 +1,3 @@
1
+ {
2
+ "module": "../esm/mobile/index.js"
3
+ }
package/mobile.css CHANGED
@@ -1,4 +1,4 @@
1
- /* hash: 1das8 */
1
+ /* hash: 15blr */
2
2
  :root {
3
3
  } /* deprecated */ :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
4
4
  } :root { /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */ /* deprecated */
@@ -12,15 +12,8 @@
12
12
  /* Hard up */
13
13
  } :root {
14
14
  } :root {
15
- --gap-xs: 8px;
16
- --gap-m: 16px;
17
15
  } :root {
18
16
  } :root {
19
- } .input-autocomplete__bottomAddonInput_a4rod {
20
- padding: var(--gap-xs);
21
- box-sizing: border-box;
22
- } .input-autocomplete__footer_a4rod {
23
- display: flex
24
- } .input-autocomplete__footer_a4rod > button + button {
25
- margin-left: var(--gap-m);
26
- }
17
+ } .input-autocomplete__input_q39f3 {
18
+ width: auto;
19
+ }
@@ -1,72 +1,5 @@
1
1
  /// <reference types="react" />
2
2
  import React from 'react';
3
- import { ChangeEvent, FC, RefAttributes } from "react";
4
- import { InputProps } from "@alfalab/core-components-input";
5
- import { BaseSelectProps } from "./shared-4cd3936b";
6
- type InputAutocompleteDesktopProps = Omit<BaseSelectProps, 'Field' | 'nativeSelect' | 'searchProps' | 'showSearch' | 'Search'> & {
7
- /**
8
- * Компонент ввода значения
9
- */
10
- Input?: FC<InputProps & RefAttributes<HTMLInputElement>>;
11
- /**
12
- * Пропсы, которые будут прокинуты в инпут
13
- */
14
- inputProps?: InputProps & Record<string, unknown>;
15
- /**
16
- * Значение поля ввода
17
- */
18
- value?: string;
19
- /**
20
- * Поле доступно только для чтения
21
- */
22
- readOnly?: InputProps['readOnly'];
23
- /**
24
- * Отображение иконки успеха
25
- */
26
- success?: boolean;
27
- /**
28
- * Обработчик ввода
29
- */
30
- onInput?: (event: ChangeEvent<HTMLInputElement>) => void;
31
- /**
32
- * Хранит функцию, с помощью которой можно обновить положение поповера
33
- */
34
- updatePopover?: BaseSelectProps['updatePopover'];
35
- };
36
- declare const InputAutocompleteDesktop: React.ForwardRefExoticComponent<Omit<BaseSelectProps, "nativeSelect" | "searchProps" | "showSearch" | "Field" | "Search"> & {
37
- /**
38
- * Компонент ввода значения
39
- */
40
- Input?: React.FC<Omit<import("./autocomplete-field/Component").BaseInputProps, "colorStyles" | "FormControlComponent"> & {
41
- breakpoint?: number | undefined;
42
- defaultMatchMediaValue?: boolean | (() => boolean) | undefined;
43
- } & React.RefAttributes<HTMLInputElement>> | undefined;
44
- /**
45
- * Пропсы, которые будут прокинуты в инпут
46
- */
47
- inputProps?: (Omit<import("./autocomplete-field/Component").BaseInputProps, "colorStyles" | "FormControlComponent"> & {
48
- breakpoint?: number | undefined;
49
- defaultMatchMediaValue?: boolean | (() => boolean) | undefined;
50
- } & Record<string, unknown>) | undefined;
51
- /**
52
- * Значение поля ввода
53
- */
54
- value?: string | undefined;
55
- /**
56
- * Поле доступно только для чтения
57
- */
58
- readOnly?: InputProps['readOnly'];
59
- /**
60
- * Отображение иконки успеха
61
- */
62
- success?: boolean | undefined;
63
- /**
64
- * Обработчик ввода
65
- */
66
- onInput?: ((event: ChangeEvent<HTMLInputElement>) => void) | undefined;
67
- /**
68
- * Хранит функцию, с помощью которой можно обновить положение поповера
69
- */
70
- updatePopover?: BaseSelectProps['updatePopover'];
71
- } & React.RefAttributes<HTMLInputElement>>;
72
- export { InputAutocompleteDesktopProps, InputAutocompleteDesktop };
3
+ import { InputAutocompleteCommonProps } from "./types";
4
+ declare const InputAutocompleteDesktop: React.ForwardRefExoticComponent<InputAutocompleteCommonProps & React.RefAttributes<HTMLInputElement>>;
5
+ export { InputAutocompleteDesktop };
@@ -1,11 +1,12 @@
1
1
  import React, { forwardRef } from 'react';
2
+ import { Popover } from '@alfalab/core-components-popover/modern';
2
3
  import { BaseSelect, OptionsList, Optgroup, Option } from '@alfalab/core-components-select/modern/shared';
3
4
  import { AutocompleteField } from './autocomplete-field/Component.js';
4
5
  import 'react-merge-refs';
5
6
  import 'classnames';
6
7
  import '@alfalab/core-components-input/modern/desktop';
7
8
 
8
- const InputAutocompleteDesktop = forwardRef(({ OptionsList: OptionsList$1 = OptionsList, Optgroup: Optgroup$1 = Optgroup, Option: Option$1 = Option, Input, inputProps = {}, onInput, value, success, readOnly, closeOnSelect = false, options, ...restProps }, ref) => (React.createElement(BaseSelect, { ref: ref, autocomplete: true, options: options, closeOnSelect: closeOnSelect, Option: Option$1, Field: AutocompleteField, Optgroup: Optgroup$1, OptionsList: OptionsList$1, ...restProps, fieldProps: {
9
+ const InputAutocompleteDesktop = forwardRef(({ OptionsList: OptionsList$1 = OptionsList, Optgroup: Optgroup$1 = Optgroup, Option: Option$1 = Option, Input, inputProps = {}, onInput, value, success, readOnly, closeOnSelect = false, options, ...restProps }, ref) => (React.createElement(BaseSelect, { view: 'desktop', Popover: Popover, ref: ref, autocomplete: true, options: options, closeOnSelect: closeOnSelect, Option: Option$1, Field: AutocompleteField, Optgroup: Optgroup$1, OptionsList: OptionsList$1, ...restProps, fieldProps: {
9
10
  ...restProps.fieldProps,
10
11
  Input,
11
12
  onInput,
@@ -1,98 +1,8 @@
1
1
  /// <reference types="react" />
2
+ /// <reference types="react-transition-group" />
2
3
  import React from 'react';
3
- import { ChangeEvent, ElementType } from "react";
4
- import { ButtonMobileProps } from "./mobile-89f0cb07";
5
- import { AdditionalMobileProps, BaseSelectChangePayload, BaseSelectProps } from "./shared-4cd3936b";
6
- type InputAutocompleteMobileProps = Omit<BaseSelectProps, 'OptionsList' | 'Checkmark' | 'onScroll' | 'nativeSelect' | 'autocomplete' | 'valueRenderer' | 'searchProps' | 'showSearch' | 'Search'> & {
7
- /**
8
- * Обработчик выбора
9
- */
10
- onChange: (payload: string | BaseSelectChangePayload) => void;
11
- /**
12
- * Обработчик ввода фильтра.
13
- */
14
- onFilter: (event: ChangeEvent<HTMLInputElement>) => void;
15
- /**
16
- * Значение поля ввода
17
- */
18
- value?: string;
19
- /**
20
- * Значение фильтра.
21
- */
22
- filter?: string;
23
- /**
24
- * Обработчик нажатия на кнопку "Отмена".
25
- */
26
- onCancel?: () => void;
27
- /**
28
- * Обработчик нажатия на крестик в инпуте фильтра.
29
- */
30
- onClearFilter?: () => void;
31
- /**
32
- * Дополнительные пропсы компонента BottomSheet
33
- */
34
- bottomSheetProps?: AdditionalMobileProps['bottomSheetProps'];
35
- /**
36
- * Дополнительные пропсы на слот под заголовком компонента BottomSheet
37
- */
38
- bottomSheetHeaderAddonsProps?: Record<string, unknown>;
39
- /**
40
- * Дополнительные пропсы на кнопку "продолжить"
41
- */
42
- continueButtonProps?: ButtonMobileProps;
43
- /**
44
- * Дополнительные пропсы на кнопку "отмена"
45
- */
46
- cancelButtonProps?: ButtonMobileProps;
47
- /**
48
- * Кастомный инпут
49
- */
50
- Input?: ElementType;
51
- };
52
- declare const InputAutocompleteMobile: React.ForwardRefExoticComponent<Omit<BaseSelectProps, "onScroll" | "valueRenderer" | "autocomplete" | "nativeSelect" | "searchProps" | "showSearch" | "OptionsList" | "Search" | "Checkmark"> & {
53
- /**
54
- * Обработчик выбора
55
- */
56
- onChange: (payload: string | BaseSelectChangePayload) => void;
57
- /**
58
- * Обработчик ввода фильтра.
59
- */
60
- onFilter: (event: ChangeEvent<HTMLInputElement>) => void;
61
- /**
62
- * Значение поля ввода
63
- */
64
- value?: string | undefined;
65
- /**
66
- * Значение фильтра.
67
- */
68
- filter?: string | undefined;
69
- /**
70
- * Обработчик нажатия на кнопку "Отмена".
71
- */
72
- onCancel?: (() => void) | undefined;
73
- /**
74
- * Обработчик нажатия на крестик в инпуте фильтра.
75
- */
76
- onClearFilter?: (() => void) | undefined;
77
- /**
78
- * Дополнительные пропсы компонента BottomSheet
79
- */
80
- bottomSheetProps?: AdditionalMobileProps['bottomSheetProps'];
81
- /**
82
- * Дополнительные пропсы на слот под заголовком компонента BottomSheet
83
- */
84
- bottomSheetHeaderAddonsProps?: Record<string, unknown> | undefined;
85
- /**
86
- * Дополнительные пропсы на кнопку "продолжить"
87
- */
88
- continueButtonProps?: ButtonMobileProps | undefined;
89
- /**
90
- * Дополнительные пропсы на кнопку "отмена"
91
- */
92
- cancelButtonProps?: ButtonMobileProps | undefined;
93
- /**
94
- * Кастомный инпут
95
- */
96
- Input?: React.ElementType<any> | undefined;
4
+ declare const InputAutocompleteMobile: React.ForwardRefExoticComponent<import("./types").InputAutocompleteCommonProps & {
5
+ isBottomSheet?: boolean | undefined;
6
+ transitionProps?: Partial<import("react-transition-group/Transition").TransitionProps<undefined>> | undefined;
97
7
  } & React.RefAttributes<unknown>>;
98
- export { InputAutocompleteMobileProps, InputAutocompleteMobile };
8
+ export { InputAutocompleteMobile };
@@ -2,86 +2,84 @@ import React, { useState, useRef, useMemo } from 'react';
2
2
  import mergeRefs from 'react-merge-refs';
3
3
  import cn from 'classnames';
4
4
  import throttle from 'lodash.throttle';
5
- import { ButtonMobile } from '@alfalab/core-components-button/modern/mobile';
6
- import { Input } from '@alfalab/core-components-input/modern';
7
- import { SelectMobile } from '@alfalab/core-components-select/modern/mobile';
5
+ import { SelectMobile, SelectModalMobile } from '@alfalab/core-components-select/modern/mobile';
6
+ import { Footer } from '@alfalab/core-components-select/modern/shared';
8
7
  import { AutocompleteMobileField } from './autocomplete-mobile-field/Component.js';
9
- import { s as styles } from './mobile.module-1bc0502b.js';
8
+ import { searchFilterStub } from './utils.js';
10
9
  import '@alfalab/core-components-form-control/modern/mobile';
11
10
  import '@alfalab/core-components-shared/modern';
12
11
  import '@alfalab/hooks';
13
12
 
14
- const SELECTED = [];
15
- const InputAutocompleteMobile = React.forwardRef(({ Input: Input$1, bottomSheetProps = {}, bottomSheetHeaderAddonsProps = {}, value = '', filter = '', name, Arrow = null, label, placeholder, size = 's', open: openProp, onFilter, onChange, onOpen, onCancel, onClearFilter, continueButtonProps, cancelButtonProps, selected, multiple, ...restProps }, ref) => {
13
+ const styles = {"input":"input-autocomplete__input_q39f3"};
14
+ require('./mobile.css')
15
+
16
+ const InputAutocompleteMobile = React.forwardRef(({ Input, value, name, Arrow = null, label, placeholder = '', size = 's', open: openProp, onInput, onOpen, multiple, inputProps, isBottomSheet = true, dataTestId, transitionProps, ...restProps }, ref) => {
16
17
  const [open, setOpen] = useState(false);
17
- const bottomSheetInputRef = useRef(null);
18
+ const frozenValue = useRef('');
19
+ const searchInputRef = useRef(null);
18
20
  const targetRef = useRef(null);
19
- const setBottomSheetVisibility = (isOpen) => {
21
+ const restorePrevValue = () => onInput?.(null, { value: frozenValue.current });
22
+ const setModalVisibility = (isOpen) => {
20
23
  if (openProp === undefined) {
21
24
  setOpen(isOpen);
22
25
  }
23
- if (onOpen) {
24
- onOpen({ open: isOpen, name });
26
+ if (isOpen) {
27
+ frozenValue.current = value || '';
25
28
  }
29
+ onOpen?.({ open: isOpen, name });
26
30
  };
27
31
  const handleOpen = (payload) => {
28
- setBottomSheetVisibility(Boolean(payload.open));
32
+ setModalVisibility(Boolean(payload.open));
29
33
  };
30
34
  const handleOptionsListTouchMove = useMemo(() => throttle(() => {
31
- const input = bottomSheetInputRef.current;
35
+ const input = searchInputRef.current;
32
36
  if (input && document.activeElement === input) {
33
37
  input.blur();
34
38
  }
35
39
  }, 300), []);
36
- const handleApply = () => {
37
- setBottomSheetVisibility(false);
38
- onChange(filter);
39
- };
40
- const handleChange = (payload) => {
41
- onChange(payload);
42
- if (multiple) {
43
- // После выбора опции возвращаем фокус в поле ввода.
44
- bottomSheetInputRef.current?.focus();
45
- }
46
- };
40
+ const handleApply = () => setModalVisibility(false);
47
41
  const handleCancel = () => {
48
- setBottomSheetVisibility(false);
49
- if (onCancel) {
50
- onCancel();
51
- }
42
+ setModalVisibility(false);
43
+ restorePrevValue();
52
44
  };
53
- const handleInputFocus = (event) => {
54
- const input = bottomSheetInputRef.current;
55
- // Перед закрытием шторки снимаем фокус с инпута, чтобы предотвратить скачок шторки.
56
- if (event.relatedTarget === targetRef.current &&
57
- input &&
58
- input === document.activeElement) {
59
- input.blur();
60
- }
45
+ const handleExiting = (node) => {
46
+ targetRef.current?.focus();
47
+ transitionProps?.onExiting?.(node);
61
48
  };
62
- const getBottomSheetProps = () => {
63
- const Component = Input$1 || Input;
64
- return {
65
- actionButton: (React.createElement("div", { className: styles.footer },
66
- React.createElement(ButtonMobile, { block: true, view: 'secondary', size: 'm', onClick: handleCancel, ...cancelButtonProps }, "\u041E\u0442\u043C\u0435\u043D\u0430"),
67
- React.createElement(ButtonMobile, { block: true, view: 'primary', size: 'm', onClick: handleApply, ...continueButtonProps }, "\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C"))),
68
- title: label || placeholder,
69
- bottomAddons: (React.createElement(Component, { block: true, clear: !!onClearFilter, onClear: onClearFilter, value: filter, onInput: onFilter, placeholder: placeholder, onFocus: handleInputFocus, ...bottomSheetHeaderAddonsProps, className: cn(styles.bottomAddonInput, bottomSheetHeaderAddonsProps.className), ref: mergeRefs([
70
- bottomSheetInputRef,
71
- bottomSheetHeaderAddonsProps.ref,
72
- ]) })),
73
- initialHeight: 'full',
74
- ...bottomSheetProps,
75
- containerProps: {
76
- onTouchMove: handleOptionsListTouchMove,
77
- ...bottomSheetProps.containerProps,
78
- },
79
- };
49
+ const isOpen = Boolean(open || openProp);
50
+ const Component = isBottomSheet ? SelectMobile : SelectModalMobile;
51
+ const componentProps = {
52
+ title: label || placeholder,
53
+ onClose: restorePrevValue,
54
+ transitionProps: {
55
+ ...transitionProps,
56
+ onExiting: handleExiting,
57
+ },
58
+ [isBottomSheet ? 'containerProps' : 'componentDivProps']: {
59
+ onTouchMove: handleOptionsListTouchMove,
60
+ },
80
61
  };
81
- return (React.createElement(SelectMobile, { useWithApplyHook: false, Field: AutocompleteMobileField, ...restProps, ref: mergeRefs([targetRef, ref]), selected: selected || SELECTED, open: Boolean(open || openProp), onOpen: handleOpen, Arrow: Arrow, onChange: handleChange, placeholder: placeholder, label: label, size: size, name: name, multiple: multiple, bottomSheetProps: getBottomSheetProps(), optionsListProps: {
82
- showFooter: false,
62
+ return (React.createElement(Component, { Field: AutocompleteMobileField, ...restProps, ...(isBottomSheet
63
+ ? { bottomSheetProps: componentProps }
64
+ : { modalProps: componentProps }), dataTestId: dataTestId, useWithApplyHook: false, showSearch: true, searchProps: {
65
+ value,
66
+ filterFn: searchFilterStub,
67
+ componentProps: {
68
+ leftAddons: null,
69
+ placeholder,
70
+ ...inputProps,
71
+ className: cn(styles.input, inputProps?.className),
72
+ clear: inputProps?.clear ?? false,
73
+ ref: mergeRefs([searchInputRef, inputProps?.ref]),
74
+ onChange: onInput,
75
+ },
76
+ }, Search: Input, ref: mergeRefs([targetRef, ref]), open: isOpen, onOpen: handleOpen, Arrow: Arrow, placeholder: placeholder, label: label, size: size, name: name, multiple: multiple, optionsListProps: {
77
+ footer: (React.createElement(Footer, { showClear: true, handleClear: handleCancel, handleApply: handleApply, clearText: '\u041E\u0442\u043C\u0435\u043D\u0430', applyText: '\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C', dataTestId: dataTestId })),
83
78
  ...restProps.optionsListProps,
84
- }, fieldProps: { value, ...restProps.fieldProps } }));
79
+ }, fieldProps: {
80
+ value: isOpen ? frozenValue.current : value,
81
+ ...restProps.fieldProps,
82
+ } }));
85
83
  });
86
84
 
87
85
  export { InputAutocompleteMobile };
@@ -1,91 +1,8 @@
1
1
  /// <reference types="react" />
2
+ /// <reference types="react-transition-group" />
2
3
  import React from 'react';
3
- import { ChangeEvent, ElementType } from "react";
4
- import { ButtonMobileProps } from "./mobile-89f0cb07";
5
- import { SelectModalMobileProps } from "./mobile-f28cbba0";
6
- import { BaseSelectChangePayload } from "./shared-4cd3936b";
7
- type InputAutocompleteModalMobileProps = Omit<SelectModalMobileProps, 'OptionsList' | 'Checkmark' | 'onScroll' | 'nativeSelect' | 'autocomplete' | 'valueRenderer'> & {
8
- /**
9
- * Обработчик выбора
10
- */
11
- onChange: (payload: string | BaseSelectChangePayload) => void;
12
- /**
13
- * Обработчик ввода фильтра.
14
- */
15
- onFilter: (event: ChangeEvent<HTMLInputElement>) => void;
16
- /**
17
- * Значение поля ввода
18
- */
19
- value?: string;
20
- /**
21
- * Значение фильтра.
22
- */
23
- filter?: string;
24
- /**
25
- * Обработчик нажатия на кнопку "Отмена".
26
- */
27
- onCancel?: () => void;
28
- /**
29
- * Обработчик нажатия на крестик в инпуте фильтра.
30
- */
31
- onClearFilter?: () => void;
32
- /**
33
- * Дополнительные пропсы на слот под заголовком
34
- */
35
- bottomAddonProps?: Record<string, unknown>;
36
- /**
37
- * Дополнительные пропсы на кнопку "продолжить"
38
- */
39
- continueButtonProps?: ButtonMobileProps;
40
- /**
41
- * Дополнительные пропсы на кнопку "отмена"
42
- */
43
- cancelButtonProps?: ButtonMobileProps;
44
- /**
45
- * Кастомный инпут
46
- */
47
- Input?: ElementType;
48
- };
49
- declare const InputAutocompleteModalMobile: React.ForwardRefExoticComponent<Omit<SelectModalMobileProps, "onScroll" | "valueRenderer" | "autocomplete" | "nativeSelect" | "OptionsList" | "Checkmark"> & {
50
- /**
51
- * Обработчик выбора
52
- */
53
- onChange: (payload: string | BaseSelectChangePayload) => void;
54
- /**
55
- * Обработчик ввода фильтра.
56
- */
57
- onFilter: (event: ChangeEvent<HTMLInputElement>) => void;
58
- /**
59
- * Значение поля ввода
60
- */
61
- value?: string | undefined;
62
- /**
63
- * Значение фильтра.
64
- */
65
- filter?: string | undefined;
66
- /**
67
- * Обработчик нажатия на кнопку "Отмена".
68
- */
69
- onCancel?: (() => void) | undefined;
70
- /**
71
- * Обработчик нажатия на крестик в инпуте фильтра.
72
- */
73
- onClearFilter?: (() => void) | undefined;
74
- /**
75
- * Дополнительные пропсы на слот под заголовком
76
- */
77
- bottomAddonProps?: Record<string, unknown> | undefined;
78
- /**
79
- * Дополнительные пропсы на кнопку "продолжить"
80
- */
81
- continueButtonProps?: ButtonMobileProps | undefined;
82
- /**
83
- * Дополнительные пропсы на кнопку "отмена"
84
- */
85
- cancelButtonProps?: ButtonMobileProps | undefined;
86
- /**
87
- * Кастомный инпут
88
- */
89
- Input?: React.ElementType<any> | undefined;
4
+ declare const InputAutocompleteModalMobile: React.ForwardRefExoticComponent<import("./types").InputAutocompleteCommonProps & {
5
+ isBottomSheet?: boolean | undefined;
6
+ transitionProps?: Partial<import("react-transition-group/Transition").TransitionProps<undefined>> | undefined;
90
7
  } & React.RefAttributes<HTMLDivElement>>;
91
- export { InputAutocompleteModalMobileProps, InputAutocompleteModalMobile };
8
+ export { InputAutocompleteModalMobile };