@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
@@ -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
@@ -14,22 +14,25 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
14
14
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
15
15
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
16
16
 
17
- 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"};
17
+ 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"};
18
18
  require('./index.css')
19
19
 
20
20
  var AutocompleteMobileField = function (_a) {
21
21
  var _b;
22
- 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 = tslib.__rest(_a, ["size", "open", "disabled", "value", "innerProps", "dataTestId", "fieldClassName", "labelView", "placeholder", "Arrow", "valueRenderer", "toggleMenu", "setSelectedItems", "selectedMultiple", "FormControlComponent"]);
22
+ 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 = tslib.__rest(_a, ["size", "open", "disabled", "value", "innerProps", "dataTestId", "fieldClassName", "labelView", "placeholder", "Arrow", "valueRenderer", "toggleMenu", "setSelectedItems", "selectedMultiple", "FormControlComponent"]);
23
23
  var _e = React.useState(false), focused = _e[0], setFocused = _e[1];
24
24
  var wrapperRef = React.useRef(null);
25
25
  var focusVisible = hooks.useFocus(wrapperRef, 'keyboard')[0];
26
26
  var filled = Boolean(value);
27
27
  var showPlaceholder = placeholder && !filled && labelView === 'outer';
28
+ var tabIndex = innerProps.tabIndex, restInnerProps = tslib.__rest(innerProps, ["tabIndex"]);
28
29
  return (React__default.default.createElement("div", { className: styles.component, ref: wrapperRef, onFocus: function () { return setFocused(true); }, onBlur: function () { return setFocused(false); } },
29
30
  React__default.default.createElement(mobile.FormControlMobile, tslib.__assign({ fieldClassName: cn__default.default(styles.field, fieldClassName, (_b = {},
30
31
  _b[styles.disabled] = disabled,
31
32
  _b[styles.focusVisible] = focusVisible,
32
- _b)), block: true, size: size, focused: focused, disabled: disabled, filled: filled, labelView: labelView, rightAddons: Arrow, dataTestId: coreComponentsShared.getDataTestId(dataTestId, 'form-control') }, restProps, innerProps),
33
+ _b)), block: true, size: size, focused: focused, disabled: disabled, filled: filled, labelView: labelView, rightAddons: Arrow, dataTestId: coreComponentsShared.getDataTestId(dataTestId, 'form-control'),
34
+ // downshift устанавливает фокус на таргет поле после выбора опции, не даем ему это сделать пока открыт список, иначе поле поиска будет терять фокус
35
+ tabIndex: open ? undefined : tabIndex }, restProps, restInnerProps),
33
36
  React__default.default.createElement("div", { className: styles.contentWrapper },
34
37
  showPlaceholder && React__default.default.createElement("span", { className: styles.placeholder }, placeholder),
35
38
  filled && React__default.default.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
  }
@@ -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 };
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var tslib = require('tslib');
6
6
  var React = require('react');
7
+ var coreComponentsPopover = require('@alfalab/core-components-popover/cssm');
7
8
  var shared = require('@alfalab/core-components-select/cssm/shared');
8
9
  var autocompleteField_Component = require('./autocomplete-field/Component.js');
9
10
  require('react-merge-refs');
@@ -17,7 +18,7 @@ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
17
18
 
18
19
  var InputAutocompleteDesktop = React.forwardRef(function (_a, ref) {
19
20
  var _b = _a.OptionsList, OptionsList = _b === void 0 ? shared.OptionsList : _b, _c = _a.Optgroup, Optgroup = _c === void 0 ? shared.Optgroup : _c, _d = _a.Option, Option = _d === void 0 ? shared.Option : _d, Input = _a.Input, _e = _a.inputProps, inputProps = _e === void 0 ? {} : _e, onInput = _a.onInput, value = _a.value, success = _a.success, readOnly = _a.readOnly, _f = _a.closeOnSelect, closeOnSelect = _f === void 0 ? false : _f, options = _a.options, restProps = tslib.__rest(_a, ["OptionsList", "Optgroup", "Option", "Input", "inputProps", "onInput", "value", "success", "readOnly", "closeOnSelect", "options"]);
20
- return (React__default.default.createElement(shared.BaseSelect, tslib.__assign({ ref: ref, autocomplete: true, options: options, closeOnSelect: closeOnSelect, Option: Option, Field: autocompleteField_Component.AutocompleteField, Optgroup: Optgroup, OptionsList: OptionsList }, restProps, { fieldProps: tslib.__assign(tslib.__assign({}, restProps.fieldProps), { Input: Input, onInput: onInput, value: value, inputProps: inputProps, readOnly: readOnly, success: success }) })));
21
+ return (React__default.default.createElement(shared.BaseSelect, tslib.__assign({ view: 'desktop', Popover: coreComponentsPopover.Popover, ref: ref, autocomplete: true, options: options, closeOnSelect: closeOnSelect, Option: Option, Field: autocompleteField_Component.AutocompleteField, Optgroup: Optgroup, OptionsList: OptionsList }, restProps, { fieldProps: tslib.__assign(tslib.__assign({}, restProps.fieldProps), { Input: Input, onInput: onInput, value: value, inputProps: inputProps, readOnly: readOnly, success: success }) })));
21
22
  });
22
23
 
23
24
  exports.InputAutocompleteDesktop = InputAutocompleteDesktop;
@@ -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 };
@@ -7,10 +7,10 @@ var React = require('react');
7
7
  var mergeRefs = require('react-merge-refs');
8
8
  var cn = require('classnames');
9
9
  var throttle = require('lodash.throttle');
10
- var mobile$1 = require('@alfalab/core-components-button/cssm/mobile');
11
- var coreComponentsInput = require('@alfalab/core-components-input/cssm');
12
10
  var mobile = require('@alfalab/core-components-select/cssm/mobile');
11
+ var shared = require('@alfalab/core-components-select/cssm/shared');
13
12
  var autocompleteMobileField_Component = require('./autocomplete-mobile-field/Component.js');
13
+ var utils = require('./utils.js');
14
14
  var styles = require('./mobile.module.css');
15
15
  require('@alfalab/core-components-form-control/cssm/mobile');
16
16
  require('@alfalab/core-components-shared/cssm');
@@ -25,68 +25,63 @@ var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
25
25
  var throttle__default = /*#__PURE__*/_interopDefaultCompat(throttle);
26
26
  var styles__default = /*#__PURE__*/_interopDefaultCompat(styles);
27
27
 
28
- var SELECTED = [];
29
28
  var InputAutocompleteMobile = React__default.default.forwardRef(function (_a, ref) {
30
- var Input = _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 = tslib.__rest(_a, ["Input", "bottomSheetProps", "bottomSheetHeaderAddonsProps", "value", "filter", "name", "Arrow", "label", "placeholder", "size", "open", "onFilter", "onChange", "onOpen", "onCancel", "onClearFilter", "continueButtonProps", "cancelButtonProps", "selected", "multiple"]);
29
+ var _b;
30
+ var _c;
31
+ 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 = tslib.__rest(_a, ["Input", "value", "name", "Arrow", "label", "placeholder", "size", "open", "onInput", "onOpen", "multiple", "inputProps", "isBottomSheet", "dataTestId", "transitionProps"]);
31
32
  var _h = React.useState(false), open = _h[0], setOpen = _h[1];
32
- var bottomSheetInputRef = React.useRef(null);
33
+ var frozenValue = React.useRef('');
34
+ var searchInputRef = React.useRef(null);
33
35
  var targetRef = React.useRef(null);
34
- var setBottomSheetVisibility = function (isOpen) {
36
+ var restorePrevValue = function () { return onInput === null || onInput === void 0 ? void 0 : onInput(null, { value: frozenValue.current }); };
37
+ var setModalVisibility = function (isOpen) {
35
38
  if (openProp === undefined) {
36
39
  setOpen(isOpen);
37
40
  }
38
- if (onOpen) {
39
- onOpen({ open: isOpen, name: name });
41
+ if (isOpen) {
42
+ frozenValue.current = value || '';
40
43
  }
44
+ onOpen === null || onOpen === void 0 ? void 0 : onOpen({ open: isOpen, name: name });
41
45
  };
42
46
  var handleOpen = function (payload) {
43
- setBottomSheetVisibility(Boolean(payload.open));
47
+ setModalVisibility(Boolean(payload.open));
44
48
  };
45
49
  var handleOptionsListTouchMove = React.useMemo(function () {
46
50
  return throttle__default.default(function () {
47
- var input = bottomSheetInputRef.current;
51
+ var input = searchInputRef.current;
48
52
  if (input && document.activeElement === input) {
49
53
  input.blur();
50
54
  }
51
55
  }, 300);
52
56
  }, []);
53
- var handleApply = function () {
54
- setBottomSheetVisibility(false);
55
- onChange(filter);
56
- };
57
- var handleChange = function (payload) {
58
- var _a;
59
- onChange(payload);
60
- if (multiple) {
61
- // После выбора опции возвращаем фокус в поле ввода.
62
- (_a = bottomSheetInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
63
- }
64
- };
57
+ var handleApply = function () { return setModalVisibility(false); };
65
58
  var handleCancel = function () {
66
- setBottomSheetVisibility(false);
67
- if (onCancel) {
68
- onCancel();
69
- }
70
- };
71
- var handleInputFocus = function (event) {
72
- var input = bottomSheetInputRef.current;
73
- // Перед закрытием шторки снимаем фокус с инпута, чтобы предотвратить скачок шторки.
74
- if (event.relatedTarget === targetRef.current &&
75
- input &&
76
- input === document.activeElement) {
77
- input.blur();
78
- }
59
+ setModalVisibility(false);
60
+ restorePrevValue();
79
61
  };
80
- var getBottomSheetProps = function () {
81
- var Component = Input || coreComponentsInput.Input;
82
- return tslib.__assign(tslib.__assign({ actionButton: (React__default.default.createElement("div", { className: styles__default.default.footer },
83
- React__default.default.createElement(mobile$1.ButtonMobile, tslib.__assign({ block: true, view: 'secondary', size: 'm', onClick: handleCancel }, cancelButtonProps), "\u041E\u0442\u043C\u0435\u043D\u0430"),
84
- React__default.default.createElement(mobile$1.ButtonMobile, tslib.__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__default.default.createElement(Component, tslib.__assign({ block: true, clear: !!onClearFilter, onClear: onClearFilter, value: filter, onInput: onFilter, placeholder: placeholder, onFocus: handleInputFocus }, bottomSheetHeaderAddonsProps, { className: cn__default.default(styles__default.default.bottomAddonInput, bottomSheetHeaderAddonsProps.className), ref: mergeRefs__default.default([
85
- bottomSheetInputRef,
86
- bottomSheetHeaderAddonsProps.ref,
87
- ]) }))), initialHeight: 'full' }, bottomSheetProps), { containerProps: tslib.__assign({ onTouchMove: handleOptionsListTouchMove }, bottomSheetProps.containerProps) });
62
+ var handleExiting = function (node) {
63
+ var _a, _b;
64
+ (_a = targetRef.current) === null || _a === void 0 ? void 0 : _a.focus();
65
+ (_b = transitionProps === null || transitionProps === void 0 ? void 0 : transitionProps.onExiting) === null || _b === void 0 ? void 0 : _b.call(transitionProps, node);
88
66
  };
89
- return (React__default.default.createElement(mobile.SelectMobile, tslib.__assign({ useWithApplyHook: false, Field: autocompleteMobileField_Component.AutocompleteMobileField }, restProps, { ref: mergeRefs__default.default([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: tslib.__assign({ showFooter: false }, restProps.optionsListProps), fieldProps: tslib.__assign({ value: value }, restProps.fieldProps) })));
67
+ var isOpen = Boolean(open || openProp);
68
+ var Component = isBottomSheet ? mobile.SelectMobile : mobile.SelectModalMobile;
69
+ var componentProps = (_b = {
70
+ title: label || placeholder,
71
+ onClose: restorePrevValue,
72
+ transitionProps: tslib.__assign(tslib.__assign({}, transitionProps), { onExiting: handleExiting })
73
+ },
74
+ _b[isBottomSheet ? 'containerProps' : 'componentDivProps'] = {
75
+ onTouchMove: handleOptionsListTouchMove,
76
+ },
77
+ _b);
78
+ return (React__default.default.createElement(Component, tslib.__assign({ Field: autocompleteMobileField_Component.AutocompleteMobileField }, restProps, (isBottomSheet
79
+ ? { bottomSheetProps: componentProps }
80
+ : { modalProps: componentProps }), { dataTestId: dataTestId, useWithApplyHook: false, showSearch: true, searchProps: {
81
+ value: value,
82
+ filterFn: utils.searchFilterStub,
83
+ componentProps: tslib.__assign(tslib.__assign({ leftAddons: null, placeholder: placeholder }, inputProps), { className: cn__default.default(styles__default.default.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__default.default([searchInputRef, inputProps === null || inputProps === void 0 ? void 0 : inputProps.ref]), onChange: onInput }),
84
+ }, Search: Input, ref: mergeRefs__default.default([targetRef, ref]), open: isOpen, onOpen: handleOpen, Arrow: Arrow, placeholder: placeholder, label: label, size: size, name: name, multiple: multiple, optionsListProps: tslib.__assign({ footer: (React__default.default.createElement(shared.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: tslib.__assign({ value: isOpen ? frozenValue.current : value }, restProps.fieldProps) })));
90
85
  });
91
86
 
92
87
  exports.InputAutocompleteMobile = 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 };
@@ -4,77 +4,24 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var tslib = require('tslib');
6
6
  var React = require('react');
7
- var mergeRefs = require('react-merge-refs');
8
- var cn = require('classnames');
9
- var throttle = require('lodash.throttle');
10
- var mobile$1 = require('@alfalab/core-components-button/cssm/mobile');
11
- var coreComponentsInput = require('@alfalab/core-components-input/cssm');
12
- var mobile = require('@alfalab/core-components-select/cssm/mobile');
13
- var autocompleteMobileField_Component = require('./autocomplete-mobile-field/Component.js');
14
- var styles = require('./mobile.module.css');
7
+ var Component_mobile = require('./Component.mobile.js');
8
+ require('react-merge-refs');
9
+ require('classnames');
10
+ require('lodash.throttle');
11
+ require('@alfalab/core-components-select/cssm/mobile');
12
+ require('@alfalab/core-components-select/cssm/shared');
13
+ require('./autocomplete-mobile-field/Component.js');
15
14
  require('@alfalab/core-components-form-control/cssm/mobile');
16
15
  require('@alfalab/core-components-shared/cssm');
17
16
  require('@alfalab/hooks');
18
17
  require('./autocomplete-mobile-field/index.module.css');
18
+ require('./utils.js');
19
+ require('./mobile.module.css');
19
20
 
20
21
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
21
22
 
22
23
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
23
- var mergeRefs__default = /*#__PURE__*/_interopDefaultCompat(mergeRefs);
24
- var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
25
- var throttle__default = /*#__PURE__*/_interopDefaultCompat(throttle);
26
- var styles__default = /*#__PURE__*/_interopDefaultCompat(styles);
27
24
 
28
- var InputAutocompleteModalMobile = React__default.default.forwardRef(function (_a, ref) {
29
- var openProp = _a.open, onOpen = _a.onOpen, name = _a.name, _b = _a.size, size = _b === void 0 ? 's' : _b, _c = _a.Input, Input = _c === void 0 ? coreComponentsInput.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 = tslib.__rest(_a, ["open", "onOpen", "name", "size", "Input", "Arrow", "onClearFilter", "filter", "onFilter", "placeholder", "bottomAddonProps", "multiple", "onChange", "onCancel", "value", "cancelButtonProps", "continueButtonProps", "modalProps", "modalHeaderProps", "modalFooterProps"]);
30
- var _f = React__default.default.useState(false), open = _f[0], setOpen = _f[1];
31
- var targetRef = React.useRef(null);
32
- var modalScrollableRef = React.useRef(null);
33
- var bottomAddonRef = React.useRef(null);
34
- React.useEffect(function () {
35
- var modalContentNode = modalScrollableRef.current;
36
- var handleListTouchMove = throttle__default.default(function () {
37
- var input = bottomAddonRef.current;
38
- if (input && document.activeElement === input) {
39
- input.blur();
40
- }
41
- }, 300);
42
- modalContentNode === null || modalContentNode === void 0 ? void 0 : modalContentNode.addEventListener('touchmove', handleListTouchMove);
43
- return function () { return modalContentNode === null || modalContentNode === void 0 ? void 0 : modalContentNode.removeEventListener('touchmove', handleListTouchMove); };
44
- }, [open]);
45
- var setOpenModalSelect = function (isOpen) {
46
- if (openProp === undefined) {
47
- setOpen(isOpen);
48
- }
49
- onOpen === null || onOpen === void 0 ? void 0 : onOpen({ open: isOpen, name: name });
50
- };
51
- var handleOpen = function (payload) {
52
- setOpenModalSelect(Boolean(payload.open));
53
- };
54
- var handleApply = function () {
55
- setOpenModalSelect(false);
56
- onChange(filter);
57
- };
58
- var handleCancel = function () {
59
- setOpenModalSelect(false);
60
- onCancel === null || onCancel === void 0 ? void 0 : onCancel();
61
- };
62
- var handleChange = function (payload) {
63
- var _a;
64
- onChange(payload);
65
- if (multiple) {
66
- // После выбора опции возвращаем фокус в поле ввода.
67
- (_a = bottomAddonRef.current) === null || _a === void 0 ? void 0 : _a.focus();
68
- }
69
- };
70
- var renderBottomAddon = function () { return (React__default.default.createElement(Input, tslib.__assign({ block: true, clear: !!onClearFilter, onClear: onClearFilter, value: filter, onInput: onFilter, placeholder: placeholder }, bottomAddonProps, { className: cn__default.default(styles__default.default.bottomAddonInput, bottomAddonProps === null || bottomAddonProps === void 0 ? void 0 : bottomAddonProps.className), ref: mergeRefs__default.default([
71
- bottomAddonRef,
72
- bottomAddonProps === null || bottomAddonProps === void 0 ? void 0 : bottomAddonProps.ref,
73
- ]) }))); };
74
- var renderFooter = function () { return (React__default.default.createElement(React__default.default.Fragment, null,
75
- React__default.default.createElement(mobile$1.ButtonMobile, tslib.__assign({ block: true, view: 'secondary', size: 'm', onClick: handleCancel }, cancelButtonProps), "\u041E\u0442\u043C\u0435\u043D\u0430"),
76
- React__default.default.createElement(mobile$1.ButtonMobile, tslib.__assign({ block: true, view: 'primary', size: 'm', onClick: handleApply }, continueButtonProps), "\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C"))); };
77
- return (React__default.default.createElement(mobile.SelectModalMobile, tslib.__assign({ Field: autocompleteMobileField_Component.AutocompleteMobileField, useWithApplyHook: false }, restProps, { ref: mergeRefs__default.default([ref, targetRef]), Arrow: Arrow, onOpen: handleOpen, onChange: handleChange, multiple: multiple, open: openProp !== null && openProp !== void 0 ? openProp : open, size: size, fieldProps: tslib.__assign({ value: value }, restProps.fieldProps), placeholder: placeholder, name: name, modalProps: tslib.__assign(tslib.__assign({}, modalProps), { componentRef: modalScrollableRef }), modalHeaderProps: tslib.__assign(tslib.__assign({}, modalHeaderProps), { bottomAddons: renderBottomAddon() }), modalFooterProps: tslib.__assign(tslib.__assign({ sticky: true }, modalFooterProps), { children: renderFooter() }) })));
78
- });
25
+ var InputAutocompleteModalMobile = React__default.default.forwardRef(function (props, ref) { return React__default.default.createElement(Component_mobile.InputAutocompleteMobile, tslib.__assign({}, props, { ref: ref, isBottomSheet: false })); });
79
26
 
80
27
  exports.InputAutocompleteModalMobile = InputAutocompleteModalMobile;