@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
@@ -3,77 +3,74 @@ import React, { useState, useRef, useMemo } from 'react';
3
3
  import mergeRefs from 'react-merge-refs';
4
4
  import cn from 'classnames';
5
5
  import throttle from 'lodash.throttle';
6
- import { ButtonMobile } from '@alfalab/core-components-button/esm/mobile';
7
- import { Input } from '@alfalab/core-components-input/esm';
8
- import { SelectMobile } from '@alfalab/core-components-select/esm/mobile';
6
+ import { SelectMobile, SelectModalMobile } from '@alfalab/core-components-select/esm/mobile';
7
+ import { Footer } from '@alfalab/core-components-select/esm/shared';
9
8
  import { AutocompleteMobileField } from './autocomplete-mobile-field/Component.js';
10
- import { s as styles } from './mobile.module-c5b1b036.js';
9
+ import { searchFilterStub } from './utils.js';
11
10
  import '@alfalab/core-components-form-control/esm/mobile';
12
11
  import '@alfalab/core-components-shared/esm';
13
12
  import '@alfalab/hooks';
14
13
 
15
- var SELECTED = [];
14
+ var styles = {"input":"input-autocomplete__input_q39f3"};
15
+ require('./mobile.css')
16
+
16
17
  var InputAutocompleteMobile = React.forwardRef(function (_a, ref) {
17
- var Input$1 = _a.Input, _b = _a.bottomSheetProps, bottomSheetProps = _b === void 0 ? {} : _b, _c = _a.bottomSheetHeaderAddonsProps, bottomSheetHeaderAddonsProps = _c === void 0 ? {} : _c, _d = _a.value, value = _d === void 0 ? '' : _d, _e = _a.filter, filter = _e === void 0 ? '' : _e, name = _a.name, _f = _a.Arrow, Arrow = _f === void 0 ? null : _f, label = _a.label, placeholder = _a.placeholder, _g = _a.size, size = _g === void 0 ? 's' : _g, openProp = _a.open, onFilter = _a.onFilter, onChange = _a.onChange, onOpen = _a.onOpen, onCancel = _a.onCancel, onClearFilter = _a.onClearFilter, continueButtonProps = _a.continueButtonProps, cancelButtonProps = _a.cancelButtonProps, selected = _a.selected, multiple = _a.multiple, restProps = __rest(_a, ["Input", "bottomSheetProps", "bottomSheetHeaderAddonsProps", "value", "filter", "name", "Arrow", "label", "placeholder", "size", "open", "onFilter", "onChange", "onOpen", "onCancel", "onClearFilter", "continueButtonProps", "cancelButtonProps", "selected", "multiple"]);
18
+ var _b;
19
+ var _c;
20
+ var Input = _a.Input, value = _a.value, name = _a.name, _d = _a.Arrow, Arrow = _d === void 0 ? null : _d, label = _a.label, _e = _a.placeholder, placeholder = _e === void 0 ? '' : _e, _f = _a.size, size = _f === void 0 ? 's' : _f, openProp = _a.open, onInput = _a.onInput, onOpen = _a.onOpen, multiple = _a.multiple, inputProps = _a.inputProps, _g = _a.isBottomSheet, isBottomSheet = _g === void 0 ? true : _g, dataTestId = _a.dataTestId, transitionProps = _a.transitionProps, restProps = __rest(_a, ["Input", "value", "name", "Arrow", "label", "placeholder", "size", "open", "onInput", "onOpen", "multiple", "inputProps", "isBottomSheet", "dataTestId", "transitionProps"]);
18
21
  var _h = useState(false), open = _h[0], setOpen = _h[1];
19
- var bottomSheetInputRef = useRef(null);
22
+ var frozenValue = useRef('');
23
+ var searchInputRef = useRef(null);
20
24
  var targetRef = useRef(null);
21
- var setBottomSheetVisibility = function (isOpen) {
25
+ var restorePrevValue = function () { return onInput === null || onInput === void 0 ? void 0 : onInput(null, { value: frozenValue.current }); };
26
+ var setModalVisibility = function (isOpen) {
22
27
  if (openProp === undefined) {
23
28
  setOpen(isOpen);
24
29
  }
25
- if (onOpen) {
26
- onOpen({ open: isOpen, name: name });
30
+ if (isOpen) {
31
+ frozenValue.current = value || '';
27
32
  }
33
+ onOpen === null || onOpen === void 0 ? void 0 : onOpen({ open: isOpen, name: name });
28
34
  };
29
35
  var handleOpen = function (payload) {
30
- setBottomSheetVisibility(Boolean(payload.open));
36
+ setModalVisibility(Boolean(payload.open));
31
37
  };
32
38
  var handleOptionsListTouchMove = useMemo(function () {
33
39
  return throttle(function () {
34
- var input = bottomSheetInputRef.current;
40
+ var input = searchInputRef.current;
35
41
  if (input && document.activeElement === input) {
36
42
  input.blur();
37
43
  }
38
44
  }, 300);
39
45
  }, []);
40
- var handleApply = function () {
41
- setBottomSheetVisibility(false);
42
- onChange(filter);
43
- };
44
- var handleChange = function (payload) {
45
- var _a;
46
- onChange(payload);
47
- if (multiple) {
48
- // После выбора опции возвращаем фокус в поле ввода.
49
- (_a = bottomSheetInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
50
- }
51
- };
46
+ var handleApply = function () { return setModalVisibility(false); };
52
47
  var handleCancel = function () {
53
- setBottomSheetVisibility(false);
54
- if (onCancel) {
55
- onCancel();
56
- }
57
- };
58
- var handleInputFocus = function (event) {
59
- var input = bottomSheetInputRef.current;
60
- // Перед закрытием шторки снимаем фокус с инпута, чтобы предотвратить скачок шторки.
61
- if (event.relatedTarget === targetRef.current &&
62
- input &&
63
- input === document.activeElement) {
64
- input.blur();
65
- }
48
+ setModalVisibility(false);
49
+ restorePrevValue();
66
50
  };
67
- var getBottomSheetProps = function () {
68
- var Component = Input$1 || Input;
69
- return __assign(__assign({ actionButton: (React.createElement("div", { className: styles.footer },
70
- React.createElement(ButtonMobile, __assign({ block: true, view: 'secondary', size: 'm', onClick: handleCancel }, cancelButtonProps), "\u041E\u0442\u043C\u0435\u043D\u0430"),
71
- React.createElement(ButtonMobile, __assign({ block: true, view: 'primary', size: 'm', onClick: handleApply }, continueButtonProps), "\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C"))), title: label || placeholder, bottomAddons: (React.createElement(Component, __assign({ block: true, clear: !!onClearFilter, onClear: onClearFilter, value: filter, onInput: onFilter, placeholder: placeholder, onFocus: handleInputFocus }, bottomSheetHeaderAddonsProps, { className: cn(styles.bottomAddonInput, bottomSheetHeaderAddonsProps.className), ref: mergeRefs([
72
- bottomSheetInputRef,
73
- bottomSheetHeaderAddonsProps.ref,
74
- ]) }))), initialHeight: 'full' }, bottomSheetProps), { containerProps: __assign({ onTouchMove: handleOptionsListTouchMove }, bottomSheetProps.containerProps) });
51
+ var handleExiting = function (node) {
52
+ var _a, _b;
53
+ (_a = targetRef.current) === null || _a === void 0 ? void 0 : _a.focus();
54
+ (_b = transitionProps === null || transitionProps === void 0 ? void 0 : transitionProps.onExiting) === null || _b === void 0 ? void 0 : _b.call(transitionProps, node);
75
55
  };
76
- return (React.createElement(SelectMobile, __assign({ 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: __assign({ showFooter: false }, restProps.optionsListProps), fieldProps: __assign({ value: value }, restProps.fieldProps) })));
56
+ var isOpen = Boolean(open || openProp);
57
+ var Component = isBottomSheet ? SelectMobile : SelectModalMobile;
58
+ var componentProps = (_b = {
59
+ title: label || placeholder,
60
+ onClose: restorePrevValue,
61
+ transitionProps: __assign(__assign({}, transitionProps), { onExiting: handleExiting })
62
+ },
63
+ _b[isBottomSheet ? 'containerProps' : 'componentDivProps'] = {
64
+ onTouchMove: handleOptionsListTouchMove,
65
+ },
66
+ _b);
67
+ return (React.createElement(Component, __assign({ Field: AutocompleteMobileField }, restProps, (isBottomSheet
68
+ ? { bottomSheetProps: componentProps }
69
+ : { modalProps: componentProps }), { dataTestId: dataTestId, useWithApplyHook: false, showSearch: true, searchProps: {
70
+ value: value,
71
+ filterFn: searchFilterStub,
72
+ componentProps: __assign(__assign({ leftAddons: null, placeholder: placeholder }, inputProps), { className: cn(styles.input, inputProps === null || inputProps === void 0 ? void 0 : inputProps.className), clear: (_c = inputProps === null || inputProps === void 0 ? void 0 : inputProps.clear) !== null && _c !== void 0 ? _c : false, ref: mergeRefs([searchInputRef, inputProps === null || inputProps === void 0 ? void 0 : inputProps.ref]), onChange: onInput }),
73
+ }, Search: Input, ref: mergeRefs([targetRef, ref]), open: isOpen, onOpen: handleOpen, Arrow: Arrow, placeholder: placeholder, label: label, size: size, name: name, multiple: multiple, optionsListProps: __assign({ 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 })) }, restProps.optionsListProps), fieldProps: __assign({ value: isOpen ? frozenValue.current : value }, restProps.fieldProps) })));
77
74
  });
78
75
 
79
76
  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 };
@@ -1,67 +1,17 @@
1
- import { __rest, __assign } from 'tslib';
2
- import React, { useRef, useEffect } from 'react';
3
- import mergeRefs from 'react-merge-refs';
4
- import cn from 'classnames';
5
- import throttle from 'lodash.throttle';
6
- import { ButtonMobile } from '@alfalab/core-components-button/esm/mobile';
7
- import { Input } from '@alfalab/core-components-input/esm';
8
- import { SelectModalMobile } from '@alfalab/core-components-select/esm/mobile';
9
- import { AutocompleteMobileField } from './autocomplete-mobile-field/Component.js';
10
- import { s as styles } from './mobile.module-c5b1b036.js';
1
+ import { __assign } from 'tslib';
2
+ import React from 'react';
3
+ import { InputAutocompleteMobile } from './Component.mobile.js';
4
+ import 'react-merge-refs';
5
+ import 'classnames';
6
+ import 'lodash.throttle';
7
+ import '@alfalab/core-components-select/esm/mobile';
8
+ import '@alfalab/core-components-select/esm/shared';
9
+ import './autocomplete-mobile-field/Component.js';
11
10
  import '@alfalab/core-components-form-control/esm/mobile';
12
11
  import '@alfalab/core-components-shared/esm';
13
12
  import '@alfalab/hooks';
13
+ import './utils.js';
14
14
 
15
- var InputAutocompleteModalMobile = React.forwardRef(function (_a, ref) {
16
- var openProp = _a.open, onOpen = _a.onOpen, name = _a.name, _b = _a.size, size = _b === void 0 ? 's' : _b, _c = _a.Input, Input$1 = _c === void 0 ? Input : _c, _d = _a.Arrow, Arrow = _d === void 0 ? null : _d, onClearFilter = _a.onClearFilter, _e = _a.filter, filter = _e === void 0 ? '' : _e, onFilter = _a.onFilter, placeholder = _a.placeholder, bottomAddonProps = _a.bottomAddonProps, multiple = _a.multiple, onChange = _a.onChange, onCancel = _a.onCancel, value = _a.value, cancelButtonProps = _a.cancelButtonProps, continueButtonProps = _a.continueButtonProps, modalProps = _a.modalProps, modalHeaderProps = _a.modalHeaderProps, modalFooterProps = _a.modalFooterProps, restProps = __rest(_a, ["open", "onOpen", "name", "size", "Input", "Arrow", "onClearFilter", "filter", "onFilter", "placeholder", "bottomAddonProps", "multiple", "onChange", "onCancel", "value", "cancelButtonProps", "continueButtonProps", "modalProps", "modalHeaderProps", "modalFooterProps"]);
17
- var _f = React.useState(false), open = _f[0], setOpen = _f[1];
18
- var targetRef = useRef(null);
19
- var modalScrollableRef = useRef(null);
20
- var bottomAddonRef = useRef(null);
21
- useEffect(function () {
22
- var modalContentNode = modalScrollableRef.current;
23
- var handleListTouchMove = throttle(function () {
24
- var input = bottomAddonRef.current;
25
- if (input && document.activeElement === input) {
26
- input.blur();
27
- }
28
- }, 300);
29
- modalContentNode === null || modalContentNode === void 0 ? void 0 : modalContentNode.addEventListener('touchmove', handleListTouchMove);
30
- return function () { return modalContentNode === null || modalContentNode === void 0 ? void 0 : modalContentNode.removeEventListener('touchmove', handleListTouchMove); };
31
- }, [open]);
32
- var setOpenModalSelect = function (isOpen) {
33
- if (openProp === undefined) {
34
- setOpen(isOpen);
35
- }
36
- onOpen === null || onOpen === void 0 ? void 0 : onOpen({ open: isOpen, name: name });
37
- };
38
- var handleOpen = function (payload) {
39
- setOpenModalSelect(Boolean(payload.open));
40
- };
41
- var handleApply = function () {
42
- setOpenModalSelect(false);
43
- onChange(filter);
44
- };
45
- var handleCancel = function () {
46
- setOpenModalSelect(false);
47
- onCancel === null || onCancel === void 0 ? void 0 : onCancel();
48
- };
49
- var handleChange = function (payload) {
50
- var _a;
51
- onChange(payload);
52
- if (multiple) {
53
- // После выбора опции возвращаем фокус в поле ввода.
54
- (_a = bottomAddonRef.current) === null || _a === void 0 ? void 0 : _a.focus();
55
- }
56
- };
57
- var renderBottomAddon = function () { return (React.createElement(Input$1, __assign({ block: true, clear: !!onClearFilter, onClear: onClearFilter, value: filter, onInput: onFilter, placeholder: placeholder }, bottomAddonProps, { className: cn(styles.bottomAddonInput, bottomAddonProps === null || bottomAddonProps === void 0 ? void 0 : bottomAddonProps.className), ref: mergeRefs([
58
- bottomAddonRef,
59
- bottomAddonProps === null || bottomAddonProps === void 0 ? void 0 : bottomAddonProps.ref,
60
- ]) }))); };
61
- var renderFooter = function () { return (React.createElement(React.Fragment, null,
62
- React.createElement(ButtonMobile, __assign({ block: true, view: 'secondary', size: 'm', onClick: handleCancel }, cancelButtonProps), "\u041E\u0442\u043C\u0435\u043D\u0430"),
63
- React.createElement(ButtonMobile, __assign({ block: true, view: 'primary', size: 'm', onClick: handleApply }, continueButtonProps), "\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C"))); };
64
- return (React.createElement(SelectModalMobile, __assign({ Field: AutocompleteMobileField, useWithApplyHook: false }, restProps, { ref: mergeRefs([ref, targetRef]), Arrow: Arrow, onOpen: handleOpen, onChange: handleChange, multiple: multiple, open: openProp !== null && openProp !== void 0 ? openProp : open, size: size, fieldProps: __assign({ value: value }, restProps.fieldProps), placeholder: placeholder, name: name, modalProps: __assign(__assign({}, modalProps), { componentRef: modalScrollableRef }), modalHeaderProps: __assign(__assign({}, modalHeaderProps), { bottomAddons: renderBottomAddon() }), modalFooterProps: __assign(__assign({ sticky: true }, modalFooterProps), { children: renderFooter() }) })));
65
- });
15
+ var InputAutocompleteModalMobile = React.forwardRef(function (props, ref) { return React.createElement(InputAutocompleteMobile, __assign({}, props, { ref: ref, isBottomSheet: false })); });
66
16
 
67
17
  export { InputAutocompleteModalMobile };
@@ -1,48 +1,5 @@
1
1
  /// <reference types="react" />
2
2
  import React from 'react';
3
- import { ButtonMobileProps } from "./mobile-89f0cb07";
4
- import { BaseSelectProps } from "./shared-4cd3936b";
5
- import { InputAutocompleteDesktopProps } from "./Component.desktop";
6
- import { InputAutocompleteMobileProps } from "./Component.mobile";
7
- type InputAutocompleteResponsiveProps = InputAutocompleteDesktopProps & InputAutocompleteMobileProps & {
8
- /**
9
- * Контрольная точка, с нее начинается desktop версия
10
- * @default 1024
11
- */
12
- breakpoint?: number;
13
- };
14
- type InputAutocompleteMedia = 'desktop' | 'mobile';
15
- declare const InputAutocompleteResponsive: React.ForwardRefExoticComponent<Omit<BaseSelectProps, "nativeSelect" | "searchProps" | "showSearch" | "Field" | "Search"> & {
16
- Input?: React.FC<Omit<import("./autocomplete-field/Component").BaseInputProps, "colorStyles" | "FormControlComponent"> & {
17
- breakpoint?: number | undefined;
18
- defaultMatchMediaValue?: boolean | (() => boolean) | undefined;
19
- } & React.RefAttributes<HTMLInputElement>> | undefined;
20
- inputProps?: (Omit<import("./autocomplete-field/Component").BaseInputProps, "colorStyles" | "FormControlComponent"> & {
21
- breakpoint?: number | undefined;
22
- defaultMatchMediaValue?: boolean | (() => boolean) | undefined;
23
- } & Record<string, unknown>) | undefined;
24
- value?: string | undefined;
25
- readOnly?: boolean | undefined;
26
- success?: boolean | undefined;
27
- onInput?: ((event: React.ChangeEvent<HTMLInputElement>) => void) | undefined;
28
- updatePopover?: React.MutableRefObject<() => void> | undefined;
29
- } & Omit<BaseSelectProps, "onScroll" | "valueRenderer" | "autocomplete" | "nativeSelect" | "searchProps" | "showSearch" | "OptionsList" | "Search" | "Checkmark"> & {
30
- onChange: (payload: string | import("./shared-4cd3936b").BaseSelectChangePayload) => void;
31
- onFilter: (event: React.ChangeEvent<HTMLInputElement>) => void;
32
- value?: string | undefined;
33
- filter?: string | undefined;
34
- onCancel?: (() => void) | undefined;
35
- onClearFilter?: (() => void) | undefined;
36
- bottomSheetProps?: Partial<import("./index-f12ee135").BottomSheetProps> | undefined;
37
- bottomSheetHeaderAddonsProps?: Record<string, unknown> | undefined;
38
- continueButtonProps?: ButtonMobileProps | undefined;
39
- cancelButtonProps?: ButtonMobileProps | undefined;
40
- Input?: React.ElementType<any> | undefined;
41
- } & {
42
- /**
43
- * Контрольная точка, с нее начинается desktop версия
44
- * @default 1024
45
- */
46
- breakpoint?: number | undefined;
47
- } & React.RefAttributes<HTMLDivElement | HTMLInputElement>>;
48
- export { InputAutocompleteResponsiveProps, InputAutocompleteMedia, InputAutocompleteResponsive };
3
+ import { InputAutocompleteProps } from "./types";
4
+ declare const InputAutocomplete: React.ForwardRefExoticComponent<InputAutocompleteProps & React.RefAttributes<HTMLDivElement | HTMLInputElement>>;
5
+ export { InputAutocomplete };
@@ -1,29 +1,26 @@
1
1
  import { __rest, __assign } from 'tslib';
2
2
  import React, { forwardRef } from 'react';
3
- import { useMedia } from '@alfalab/hooks';
3
+ import { useMatchMedia } from '@alfalab/core-components-mq/esm';
4
4
  import { InputAutocompleteDesktop } from './Component.desktop.js';
5
5
  import { InputAutocompleteMobile } from './Component.mobile.js';
6
+ import '@alfalab/core-components-popover/esm';
6
7
  import '@alfalab/core-components-select/esm/shared';
7
8
  import './autocomplete-field/Component.js';
8
9
  import 'react-merge-refs';
9
10
  import 'classnames';
10
11
  import '@alfalab/core-components-input/esm/desktop';
11
12
  import 'lodash.throttle';
12
- import '@alfalab/core-components-button/esm/mobile';
13
- import '@alfalab/core-components-input/esm';
14
13
  import '@alfalab/core-components-select/esm/mobile';
15
14
  import './autocomplete-mobile-field/Component.js';
16
15
  import '@alfalab/core-components-form-control/esm/mobile';
17
16
  import '@alfalab/core-components-shared/esm';
18
- import './mobile.module-c5b1b036.js';
17
+ import '@alfalab/hooks';
18
+ import './utils.js';
19
19
 
20
- var InputAutocompleteResponsive = forwardRef(function (_a, ref) {
21
- var _b = _a.breakpoint, breakpoint = _b === void 0 ? 1024 : _b, restProps = __rest(_a, ["breakpoint"]);
22
- var view = useMedia([
23
- ['mobile', "(max-width: ".concat(breakpoint - 1, "px)")],
24
- ['desktop', "(min-width: ".concat(breakpoint, "px)")],
25
- ], 'desktop')[0];
26
- return view === 'desktop' ? (React.createElement(InputAutocompleteDesktop, __assign({}, restProps, { ref: ref }))) : (React.createElement(InputAutocompleteMobile, __assign({}, restProps, { ref: ref })));
20
+ var InputAutocomplete = forwardRef(function (_a, ref) {
21
+ var _b = _a.breakpoint, breakpoint = _b === void 0 ? 1024 : _b, _c = _a.defaultMatchMediaValue, defaultMatchMediaValue = _c === void 0 ? true : _c, mobileProps = _a.mobileProps, restProps = __rest(_a, ["breakpoint", "defaultMatchMediaValue", "mobileProps"]);
22
+ var isDesktop = useMatchMedia("(min-width: ".concat(breakpoint, "px)"), defaultMatchMediaValue)[0];
23
+ return isDesktop ? (React.createElement(InputAutocompleteDesktop, __assign({}, restProps, { ref: ref }))) : (React.createElement(InputAutocompleteMobile, __assign({}, restProps, mobileProps, { ref: ref })));
27
24
  });
28
25
 
29
- export { InputAutocompleteResponsive };
26
+ export { InputAutocomplete };
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import React from 'react';
3
- import { FieldProps } from "../shared-4cd3936b";
4
- import { InputAutocompleteDesktopProps } from "../Component.desktop";
5
- type AutocompleteFieldProps = FieldProps & Pick<InputAutocompleteDesktopProps, 'Input' | 'inputProps' | 'value' | 'onInput' | 'readOnly'>;
3
+ import { FieldProps } from "@alfalab/core-components-select/shared";
4
+ import { InputAutocompleteCommonProps } from "../types";
5
+ type AutocompleteFieldProps = FieldProps & Pick<InputAutocompleteCommonProps, 'Input' | 'inputProps' | 'value' | 'onInput' | 'readOnly'>;
6
6
  declare const AutocompleteField: ({ label, labelView, placeholder, size, Arrow, Input, value, error, success, hint, disabled, readOnly, onInput, inputProps, innerProps, }: AutocompleteFieldProps) => React.JSX.Element;
7
7
  export { AutocompleteFieldProps, AutocompleteField };
@@ -4,7 +4,7 @@ import mergeRefs from 'react-merge-refs';
4
4
  import cn from 'classnames';
5
5
  import { InputDesktop } from '@alfalab/core-components-input/esm/desktop';
6
6
 
7
- var styles = {"arrow":"input-autocomplete__arrow_1cmrr","error":"input-autocomplete__error_1cmrr"};
7
+ var styles = {"arrow":"input-autocomplete__arrow_1sl9i","error":"input-autocomplete__error_1sl9i"};
8
8
  require('./index.css')
9
9
 
10
10
  var AutocompleteField = function (_a) {
@@ -1,4 +1,4 @@
1
- /* hash: 1au42 */
2
- .input-autocomplete__arrow_1cmrr.input-autocomplete__error_1cmrr ~ * {
1
+ /* hash: 12uxl */
2
+ .input-autocomplete__arrow_1sl9i.input-autocomplete__error_1sl9i ~ * {
3
3
  display: none;
4
4
  }
@@ -1,8 +1,8 @@
1
1
  /// <reference types="react" />
2
2
  import React from 'react';
3
3
  import { ElementType } from "react";
4
- import { FormControlMobileProps } from "../mobile-96988a65";
5
- import { FieldProps as BaseFieldProps } from "../shared-4cd3936b";
4
+ import { FormControlMobileProps } from "@alfalab/core-components-form-control/mobile";
5
+ import { FieldProps as BaseFieldProps } from "@alfalab/core-components-select/shared";
6
6
  type FieldProps = {
7
7
  /**
8
8
  * Компонент FormControl
@@ -5,22 +5,25 @@ import { FormControlMobile } from '@alfalab/core-components-form-control/esm/mob
5
5
  import { getDataTestId } from '@alfalab/core-components-shared/esm';
6
6
  import { useFocus } from '@alfalab/hooks';
7
7
 
8
- var styles = {"component":"input-autocomplete__component_1r0uf","field":"input-autocomplete__field_1r0uf","disabled":"input-autocomplete__disabled_1r0uf","placeholder":"input-autocomplete__placeholder_1r0uf","contentWrapper":"input-autocomplete__contentWrapper_1r0uf","value":"input-autocomplete__value_1r0uf","focusVisible":"input-autocomplete__focusVisible_1r0uf"};
8
+ var styles = {"component":"input-autocomplete__component_1o5l0","field":"input-autocomplete__field_1o5l0","disabled":"input-autocomplete__disabled_1o5l0","placeholder":"input-autocomplete__placeholder_1o5l0","contentWrapper":"input-autocomplete__contentWrapper_1o5l0","value":"input-autocomplete__value_1o5l0","focusVisible":"input-autocomplete__focusVisible_1o5l0"};
9
9
  require('./index.css')
10
10
 
11
11
  var AutocompleteMobileField = function (_a) {
12
12
  var _b;
13
- var _c = _a.size, size = _c === void 0 ? 'm' : _c; _a.open; var disabled = _a.disabled, value = _a.value, innerProps = _a.innerProps, dataTestId = _a.dataTestId, fieldClassName = _a.fieldClassName, _d = _a.labelView, labelView = _d === void 0 ? 'inner' : _d, placeholder = _a.placeholder, Arrow = _a.Arrow; _a.valueRenderer; _a.toggleMenu; _a.setSelectedItems; _a.selectedMultiple; _a.FormControlComponent; var restProps = __rest(_a, ["size", "open", "disabled", "value", "innerProps", "dataTestId", "fieldClassName", "labelView", "placeholder", "Arrow", "valueRenderer", "toggleMenu", "setSelectedItems", "selectedMultiple", "FormControlComponent"]);
13
+ var _c = _a.size, size = _c === void 0 ? 'm' : _c, open = _a.open, disabled = _a.disabled, value = _a.value, innerProps = _a.innerProps, dataTestId = _a.dataTestId, fieldClassName = _a.fieldClassName, _d = _a.labelView, labelView = _d === void 0 ? 'inner' : _d, placeholder = _a.placeholder, Arrow = _a.Arrow; _a.valueRenderer; _a.toggleMenu; _a.setSelectedItems; _a.selectedMultiple; _a.FormControlComponent; var restProps = __rest(_a, ["size", "open", "disabled", "value", "innerProps", "dataTestId", "fieldClassName", "labelView", "placeholder", "Arrow", "valueRenderer", "toggleMenu", "setSelectedItems", "selectedMultiple", "FormControlComponent"]);
14
14
  var _e = useState(false), focused = _e[0], setFocused = _e[1];
15
15
  var wrapperRef = useRef(null);
16
16
  var focusVisible = useFocus(wrapperRef, 'keyboard')[0];
17
17
  var filled = Boolean(value);
18
18
  var showPlaceholder = placeholder && !filled && labelView === 'outer';
19
+ var tabIndex = innerProps.tabIndex, restInnerProps = __rest(innerProps, ["tabIndex"]);
19
20
  return (React.createElement("div", { className: styles.component, ref: wrapperRef, onFocus: function () { return setFocused(true); }, onBlur: function () { return setFocused(false); } },
20
21
  React.createElement(FormControlMobile, __assign({ fieldClassName: cn(styles.field, fieldClassName, (_b = {},
21
22
  _b[styles.disabled] = disabled,
22
23
  _b[styles.focusVisible] = focusVisible,
23
- _b)), block: true, size: size, focused: focused, disabled: disabled, filled: filled, labelView: labelView, rightAddons: Arrow, dataTestId: getDataTestId(dataTestId, 'form-control') }, restProps, innerProps),
24
+ _b)), block: true, size: size, focused: focused, disabled: disabled, filled: filled, labelView: labelView, rightAddons: Arrow, dataTestId: getDataTestId(dataTestId, 'form-control'),
25
+ // downshift устанавливает фокус на таргет поле после выбора опции, не даем ему это сделать пока открыт список, иначе поле поиска будет терять фокус
26
+ tabIndex: open ? undefined : tabIndex }, restProps, restInnerProps),
24
27
  React.createElement("div", { className: styles.contentWrapper },
25
28
  showPlaceholder && React.createElement("span", { className: styles.placeholder }, placeholder),
26
29
  filled && React.createElement("div", { className: styles.value }, value)))));
@@ -1,8 +1,8 @@
1
- /* hash: 1l8rj */
1
+ /* hash: 11p4o */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
- --color-light-border-link: #0072ef;
5
- --color-light-text-secondary: rgba(60, 60, 67, 0.66); /* 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
+ --color-light-border-link: #2288fa;
5
+ --color-light-text-secondary: rgba(4, 4, 19, 0.55); /* 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 */
6
6
  } :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 */
7
7
  } :root {
8
8
  } :root {
@@ -18,16 +18,16 @@
18
18
  } :root {
19
19
  --focus-color: var(--color-light-border-link);
20
20
  --disabled-cursor: not-allowed;
21
- } .input-autocomplete__component_1r0uf {
21
+ } .input-autocomplete__component_1o5l0 {
22
22
  width: 100%;
23
23
  outline: none;
24
- } .input-autocomplete__field_1r0uf:not(.input-autocomplete__disabled_1r0uf) {
24
+ } .input-autocomplete__field_1o5l0:not(.input-autocomplete__disabled_1o5l0) {
25
25
  cursor: pointer;
26
- } .input-autocomplete__disabled_1r0uf {
26
+ } .input-autocomplete__disabled_1o5l0 {
27
27
  cursor: var(--disabled-cursor);
28
- } .input-autocomplete__placeholder_1r0uf {
28
+ } .input-autocomplete__placeholder_1o5l0 {
29
29
  color: var(--color-light-text-secondary);
30
- } .input-autocomplete__contentWrapper_1r0uf {
30
+ } .input-autocomplete__contentWrapper_1o5l0 {
31
31
  font-size: 16px;
32
32
  line-height: 20px;
33
33
  font-weight: 400;
@@ -36,11 +36,11 @@
36
36
  text-overflow: ellipsis;
37
37
  overflow: hidden;
38
38
  width: 100%;
39
- } .input-autocomplete__value_1r0uf {
39
+ } .input-autocomplete__value_1o5l0 {
40
40
  overflow: hidden;
41
41
  text-overflow: ellipsis;
42
42
  text-align: left;
43
- } .input-autocomplete__focusVisible_1r0uf {
43
+ } .input-autocomplete__focusVisible_1o5l0 {
44
44
  outline: 2px solid var(--focus-color);
45
45
  outline-offset: 2px;
46
46
  }
@@ -0,0 +1,2 @@
1
+ export { InputAutocompleteDesktop } from "../Component.desktop";
2
+ export type { InputAutocompleteCommonProps as InputAutocompleteDesktopProps } from "../types";
@@ -1,8 +1,9 @@
1
- export { InputAutocompleteDesktop } from './Component.desktop.js';
1
+ export { InputAutocompleteDesktop } from '../Component.desktop.js';
2
2
  import 'tslib';
3
3
  import 'react';
4
+ import '@alfalab/core-components-popover/esm';
4
5
  import '@alfalab/core-components-select/esm/shared';
5
- import './autocomplete-field/Component.js';
6
+ import '../autocomplete-field/Component.js';
6
7
  import 'react-merge-refs';
7
8
  import 'classnames';
8
9
  import '@alfalab/core-components-input/esm/desktop';
package/esm/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/esm/index.js CHANGED
@@ -1,8 +1,9 @@
1
- export { InputAutocompleteResponsive as InputAutocomplete } from './Component.responsive.js';
1
+ export { InputAutocomplete } from './Component.responsive.js';
2
2
  import 'tslib';
3
3
  import 'react';
4
- import '@alfalab/hooks';
4
+ import '@alfalab/core-components-mq/esm';
5
5
  import './Component.desktop.js';
6
+ import '@alfalab/core-components-popover/esm';
6
7
  import '@alfalab/core-components-select/esm/shared';
7
8
  import './autocomplete-field/Component.js';
8
9
  import 'react-merge-refs';
@@ -10,10 +11,9 @@ import 'classnames';
10
11
  import '@alfalab/core-components-input/esm/desktop';
11
12
  import './Component.mobile.js';
12
13
  import 'lodash.throttle';
13
- import '@alfalab/core-components-button/esm/mobile';
14
- import '@alfalab/core-components-input/esm';
15
14
  import '@alfalab/core-components-select/esm/mobile';
16
15
  import './autocomplete-mobile-field/Component.js';
17
16
  import '@alfalab/core-components-form-control/esm/mobile';
18
17
  import '@alfalab/core-components-shared/esm';
19
- import './mobile.module-c5b1b036.js';
18
+ import '@alfalab/hooks';
19
+ import './utils.js';
@@ -0,0 +1,3 @@
1
+ export { InputAutocompleteMobile } from "../Component.mobile";
2
+ export { InputAutocompleteModalMobile } from "../Component.modal.mobile";
3
+ export { InputAutocompleteMobileProps } from "../types";
@@ -0,0 +1,14 @@
1
+ export { InputAutocompleteMobile } from '../Component.mobile.js';
2
+ export { InputAutocompleteModalMobile } from '../Component.modal.mobile.js';
3
+ import 'tslib';
4
+ import 'react';
5
+ import 'react-merge-refs';
6
+ import 'classnames';
7
+ import 'lodash.throttle';
8
+ import '@alfalab/core-components-select/esm/mobile';
9
+ import '@alfalab/core-components-select/esm/shared';
10
+ import '../autocomplete-mobile-field/Component.js';
11
+ import '@alfalab/core-components-form-control/esm/mobile';
12
+ import '@alfalab/core-components-shared/esm';
13
+ import '@alfalab/hooks';
14
+ import '../utils.js';
package/esm/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
+ }