@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,74 +1,16 @@
1
- import React, { useRef, useEffect } from 'react';
2
- import mergeRefs from 'react-merge-refs';
3
- import cn from 'classnames';
4
- import throttle from 'lodash.throttle';
5
- import { ButtonMobile } from '@alfalab/core-components-button/modern/mobile';
6
- import { Input } from '@alfalab/core-components-input/modern';
7
- import { SelectModalMobile } from '@alfalab/core-components-select/modern/mobile';
8
- import { AutocompleteMobileField } from './autocomplete-mobile-field/Component.js';
9
- import { s as styles } from './mobile.module-1bc0502b.js';
1
+ import React from 'react';
2
+ import { InputAutocompleteMobile } from './Component.mobile.js';
3
+ import 'react-merge-refs';
4
+ import 'classnames';
5
+ import 'lodash.throttle';
6
+ import '@alfalab/core-components-select/modern/mobile';
7
+ import '@alfalab/core-components-select/modern/shared';
8
+ import './autocomplete-mobile-field/Component.js';
10
9
  import '@alfalab/core-components-form-control/modern/mobile';
11
10
  import '@alfalab/core-components-shared/modern';
12
11
  import '@alfalab/hooks';
12
+ import './utils.js';
13
13
 
14
- const InputAutocompleteModalMobile = React.forwardRef(({ open: openProp, onOpen, name, size = 's', Input: Input$1 = Input, Arrow = null, onClearFilter, filter = '', onFilter, placeholder, bottomAddonProps, multiple, onChange, onCancel, value, cancelButtonProps, continueButtonProps, modalProps, modalHeaderProps, modalFooterProps, ...restProps }, ref) => {
15
- const [open, setOpen] = React.useState(false);
16
- const targetRef = useRef(null);
17
- const modalScrollableRef = useRef(null);
18
- const bottomAddonRef = useRef(null);
19
- useEffect(() => {
20
- const modalContentNode = modalScrollableRef.current;
21
- const handleListTouchMove = throttle(() => {
22
- const input = bottomAddonRef.current;
23
- if (input && document.activeElement === input) {
24
- input.blur();
25
- }
26
- }, 300);
27
- modalContentNode?.addEventListener('touchmove', handleListTouchMove);
28
- return () => modalContentNode?.removeEventListener('touchmove', handleListTouchMove);
29
- }, [open]);
30
- const setOpenModalSelect = (isOpen) => {
31
- if (openProp === undefined) {
32
- setOpen(isOpen);
33
- }
34
- onOpen?.({ open: isOpen, name });
35
- };
36
- const handleOpen = (payload) => {
37
- setOpenModalSelect(Boolean(payload.open));
38
- };
39
- const handleApply = () => {
40
- setOpenModalSelect(false);
41
- onChange(filter);
42
- };
43
- const handleCancel = () => {
44
- setOpenModalSelect(false);
45
- onCancel?.();
46
- };
47
- const handleChange = (payload) => {
48
- onChange(payload);
49
- if (multiple) {
50
- // После выбора опции возвращаем фокус в поле ввода.
51
- bottomAddonRef.current?.focus();
52
- }
53
- };
54
- const renderBottomAddon = () => (React.createElement(Input$1, { block: true, clear: !!onClearFilter, onClear: onClearFilter, value: filter, onInput: onFilter, placeholder: placeholder, ...bottomAddonProps, className: cn(styles.bottomAddonInput, bottomAddonProps?.className), ref: mergeRefs([
55
- bottomAddonRef,
56
- bottomAddonProps?.ref,
57
- ]) }));
58
- const renderFooter = () => (React.createElement(React.Fragment, null,
59
- React.createElement(ButtonMobile, { block: true, view: 'secondary', size: 'm', onClick: handleCancel, ...cancelButtonProps }, "\u041E\u0442\u043C\u0435\u043D\u0430"),
60
- React.createElement(ButtonMobile, { block: true, view: 'primary', size: 'm', onClick: handleApply, ...continueButtonProps }, "\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C")));
61
- return (React.createElement(SelectModalMobile, { Field: AutocompleteMobileField, useWithApplyHook: false, ...restProps, ref: mergeRefs([ref, targetRef]), Arrow: Arrow, onOpen: handleOpen, onChange: handleChange, multiple: multiple, open: openProp ?? open, size: size, fieldProps: { value, ...restProps.fieldProps }, placeholder: placeholder, name: name, modalProps: {
62
- ...modalProps,
63
- componentRef: modalScrollableRef,
64
- }, modalHeaderProps: {
65
- ...modalHeaderProps,
66
- bottomAddons: renderBottomAddon(),
67
- }, modalFooterProps: {
68
- sticky: true,
69
- ...modalFooterProps,
70
- children: renderFooter(),
71
- } }));
72
- });
14
+ const InputAutocompleteModalMobile = React.forwardRef((props, ref) => React.createElement(InputAutocompleteMobile, { ...props, ref: ref, isBottomSheet: false }));
73
15
 
74
16
  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,27 +1,24 @@
1
1
  import React, { forwardRef } from 'react';
2
- import { useMedia } from '@alfalab/hooks';
2
+ import { useMatchMedia } from '@alfalab/core-components-mq/modern';
3
3
  import { InputAutocompleteDesktop } from './Component.desktop.js';
4
4
  import { InputAutocompleteMobile } from './Component.mobile.js';
5
+ import '@alfalab/core-components-popover/modern';
5
6
  import '@alfalab/core-components-select/modern/shared';
6
7
  import './autocomplete-field/Component.js';
7
8
  import 'react-merge-refs';
8
9
  import 'classnames';
9
10
  import '@alfalab/core-components-input/modern/desktop';
10
11
  import 'lodash.throttle';
11
- import '@alfalab/core-components-button/modern/mobile';
12
- import '@alfalab/core-components-input/modern';
13
12
  import '@alfalab/core-components-select/modern/mobile';
14
13
  import './autocomplete-mobile-field/Component.js';
15
14
  import '@alfalab/core-components-form-control/modern/mobile';
16
15
  import '@alfalab/core-components-shared/modern';
17
- import './mobile.module-1bc0502b.js';
16
+ import '@alfalab/hooks';
17
+ import './utils.js';
18
18
 
19
- const InputAutocompleteResponsive = forwardRef(({ breakpoint = 1024, ...restProps }, ref) => {
20
- const [view] = useMedia([
21
- ['mobile', `(max-width: ${breakpoint - 1}px)`],
22
- ['desktop', `(min-width: ${breakpoint}px)`],
23
- ], 'desktop');
24
- return view === 'desktop' ? (React.createElement(InputAutocompleteDesktop, { ...restProps, ref: ref })) : (React.createElement(InputAutocompleteMobile, { ...restProps, ref: ref }));
19
+ const InputAutocomplete = forwardRef(({ breakpoint = 1024, defaultMatchMediaValue = true, mobileProps, ...restProps }, ref) => {
20
+ const [isDesktop] = useMatchMedia(`(min-width: ${breakpoint}px)`, defaultMatchMediaValue);
21
+ return isDesktop ? (React.createElement(InputAutocompleteDesktop, { ...restProps, ref: ref })) : (React.createElement(InputAutocompleteMobile, { ...restProps, ...mobileProps, ref: ref }));
25
22
  });
26
23
 
27
- export { InputAutocompleteResponsive };
24
+ 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 };
@@ -3,7 +3,7 @@ import mergeRefs from 'react-merge-refs';
3
3
  import cn from 'classnames';
4
4
  import { InputDesktop } from '@alfalab/core-components-input/modern/desktop';
5
5
 
6
- const styles = {"arrow":"input-autocomplete__arrow_1cmrr","error":"input-autocomplete__error_1cmrr"};
6
+ const styles = {"arrow":"input-autocomplete__arrow_1sl9i","error":"input-autocomplete__error_1sl9i"};
7
7
  require('./index.css')
8
8
 
9
9
  const AutocompleteField = ({ label, labelView = 'inner', placeholder, size, Arrow, Input = InputDesktop, value, error, success, hint, disabled, readOnly, onInput, inputProps = {}, innerProps, }) => {
@@ -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
@@ -4,7 +4,7 @@ import { FormControlMobile } from '@alfalab/core-components-form-control/modern/
4
4
  import { getDataTestId } from '@alfalab/core-components-shared/modern';
5
5
  import { useFocus } from '@alfalab/hooks';
6
6
 
7
- const 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"};
7
+ const 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"};
8
8
  require('./index.css')
9
9
 
10
10
  const AutocompleteMobileField = ({ size = 'm', open, disabled, value, innerProps, dataTestId, fieldClassName, labelView = 'inner', placeholder, Arrow, valueRenderer, toggleMenu, setSelectedItems, selectedMultiple, FormControlComponent, ...restProps }) => {
@@ -13,11 +13,14 @@ const AutocompleteMobileField = ({ size = 'm', open, disabled, value, innerProps
13
13
  const [focusVisible] = useFocus(wrapperRef, 'keyboard');
14
14
  const filled = Boolean(value);
15
15
  const showPlaceholder = placeholder && !filled && labelView === 'outer';
16
+ const { tabIndex, ...restInnerProps } = innerProps;
16
17
  return (React.createElement("div", { className: styles.component, ref: wrapperRef, onFocus: () => setFocused(true), onBlur: () => setFocused(false) },
17
18
  React.createElement(FormControlMobile, { fieldClassName: cn(styles.field, fieldClassName, {
18
19
  [styles.disabled]: disabled,
19
20
  [styles.focusVisible]: focusVisible,
20
- }), block: true, size: size, focused: focused, disabled: disabled, filled: filled, labelView: labelView, rightAddons: Arrow, dataTestId: getDataTestId(dataTestId, 'form-control'), ...restProps, ...innerProps },
21
+ }), block: true, size: size, focused: focused, disabled: disabled, filled: filled, labelView: labelView, rightAddons: Arrow, dataTestId: getDataTestId(dataTestId, 'form-control'),
22
+ // downshift устанавливает фокус на таргет поле после выбора опции, не даем ему это сделать пока открыт список, иначе поле поиска будет терять фокус
23
+ tabIndex: open ? undefined : tabIndex, ...restProps, ...restInnerProps },
21
24
  React.createElement("div", { className: styles.contentWrapper },
22
25
  showPlaceholder && React.createElement("span", { className: styles.placeholder }, placeholder),
23
26
  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,7 +1,8 @@
1
- export { InputAutocompleteDesktop } from './Component.desktop.js';
1
+ export { InputAutocompleteDesktop } from '../Component.desktop.js';
2
2
  import 'react';
3
+ import '@alfalab/core-components-popover/modern';
3
4
  import '@alfalab/core-components-select/modern/shared';
4
- import './autocomplete-field/Component.js';
5
+ import '../autocomplete-field/Component.js';
5
6
  import 'react-merge-refs';
6
7
  import 'classnames';
7
8
  import '@alfalab/core-components-input/modern/desktop';
package/modern/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/modern/index.js CHANGED
@@ -1,7 +1,8 @@
1
- export { InputAutocompleteResponsive as InputAutocomplete } from './Component.responsive.js';
1
+ export { InputAutocomplete } from './Component.responsive.js';
2
2
  import 'react';
3
- import '@alfalab/hooks';
3
+ import '@alfalab/core-components-mq/modern';
4
4
  import './Component.desktop.js';
5
+ import '@alfalab/core-components-popover/modern';
5
6
  import '@alfalab/core-components-select/modern/shared';
6
7
  import './autocomplete-field/Component.js';
7
8
  import 'react-merge-refs';
@@ -9,10 +10,9 @@ import 'classnames';
9
10
  import '@alfalab/core-components-input/modern/desktop';
10
11
  import './Component.mobile.js';
11
12
  import 'lodash.throttle';
12
- import '@alfalab/core-components-button/modern/mobile';
13
- import '@alfalab/core-components-input/modern';
14
13
  import '@alfalab/core-components-select/modern/mobile';
15
14
  import './autocomplete-mobile-field/Component.js';
16
15
  import '@alfalab/core-components-form-control/modern/mobile';
17
16
  import '@alfalab/core-components-shared/modern';
18
- import './mobile.module-1bc0502b.js';
17
+ import '@alfalab/hooks';
18
+ 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,13 @@
1
+ export { InputAutocompleteMobile } from '../Component.mobile.js';
2
+ export { InputAutocompleteModalMobile } from '../Component.modal.mobile.js';
3
+ import 'react';
4
+ import 'react-merge-refs';
5
+ import 'classnames';
6
+ import 'lodash.throttle';
7
+ import '@alfalab/core-components-select/modern/mobile';
8
+ import '@alfalab/core-components-select/modern/shared';
9
+ import '../autocomplete-mobile-field/Component.js';
10
+ import '@alfalab/core-components-form-control/modern/mobile';
11
+ import '@alfalab/core-components-shared/modern';
12
+ import '@alfalab/hooks';
13
+ import '../utils.js';
package/modern/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
+ }
@@ -0,0 +1,58 @@
1
+ import { ChangeEvent, FC, RefAttributes } from 'react';
2
+ import { InputProps } from "@alfalab/core-components-input";
3
+ import { BaseSelectProps, BottomSheetSelectMobileProps } from "@alfalab/core-components-select/shared";
4
+ interface InputAutocompleteCommonProps extends Omit<BaseSelectProps, 'autocomplete' | 'Field' | 'nativeSelect' | 'searchProps' | 'showSearch' | 'Search'> {
5
+ /**
6
+ * Компонент ввода значения
7
+ */
8
+ Input?: FC<InputProps & RefAttributes<HTMLInputElement>>;
9
+ /**
10
+ * Пропсы, которые будут прокинуты в инпут
11
+ */
12
+ inputProps?: InputProps & Record<string, unknown>;
13
+ /**
14
+ * Значение поля ввода
15
+ */
16
+ value?: string;
17
+ /**
18
+ * Поле доступно только для чтения
19
+ */
20
+ readOnly?: InputProps['readOnly'];
21
+ /**
22
+ * Отображение иконки успеха
23
+ */
24
+ success?: boolean;
25
+ /**
26
+ * Обработчик ввода
27
+ */
28
+ onInput?: (event: ChangeEvent<HTMLInputElement> | null, payload: {
29
+ value: string;
30
+ }) => void;
31
+ }
32
+ type MobileProps = {
33
+ /**
34
+ * Открывать в bottom-sheet
35
+ */
36
+ isBottomSheet?: boolean;
37
+ /**
38
+ * Пропсы анимации контента (CSSTransition)
39
+ */
40
+ transitionProps?: NonNullable<BottomSheetSelectMobileProps['bottomSheetProps']>['transitionProps'];
41
+ };
42
+ type InputAutocompleteMobileProps = InputAutocompleteCommonProps & MobileProps;
43
+ interface InputAutocompleteProps extends InputAutocompleteCommonProps {
44
+ /**
45
+ * Пропсы для мобильного компонента
46
+ */
47
+ mobileProps?: MobileProps;
48
+ /**
49
+ * Контрольная точка, с нее начинается desktop версия
50
+ * @default 1024
51
+ */
52
+ breakpoint?: number;
53
+ /**
54
+ * Значение по-умолчанию для хука useMatchMedia
55
+ */
56
+ defaultMatchMediaValue?: boolean | (() => boolean);
57
+ }
58
+ export { InputAutocompleteCommonProps, InputAutocompleteMobileProps, InputAutocompleteProps };
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,2 @@
1
+ declare function searchFilterStub(): boolean;
2
+ export { searchFilterStub };
@@ -0,0 +1,5 @@
1
+ function searchFilterStub() {
2
+ return true;
3
+ }
4
+
5
+ export { searchFilterStub };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfalab/core-components-input-autocomplete",
3
- "version": "10.2.3",
3
+ "version": "11.0.0",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -14,11 +14,12 @@
14
14
  "react": "^16.9.0 || ^17.0.1 || ^18.0.0"
15
15
  },
16
16
  "dependencies": {
17
- "@alfalab/core-components-button": "^9.0.6",
18
- "@alfalab/core-components-form-control": "^10.1.1",
19
- "@alfalab/core-components-input": "^12.2.1",
20
- "@alfalab/core-components-select": "^15.2.3",
21
- "@alfalab/core-components-shared": "^0.6.0",
17
+ "@alfalab/core-components-form-control": "^11.0.0",
18
+ "@alfalab/core-components-input": "^13.0.0",
19
+ "@alfalab/core-components-popover": "^6.1.0",
20
+ "@alfalab/core-components-select": "^16.0.0",
21
+ "@alfalab/core-components-shared": "^0.8.0",
22
+ "@alfalab/core-components-mq": "^4.2.0",
22
23
  "@alfalab/hooks": "^1.13.0",
23
24
  "classnames": "^2.3.1",
24
25
  "lodash.throttle": "^4.1.1",
@@ -1,58 +1,18 @@
1
- import React, { ChangeEvent, FC, forwardRef, RefAttributes } from 'react';
1
+ import React, { forwardRef } from 'react';
2
2
 
3
- import { InputProps } from '@alfalab/core-components-input';
3
+ import { Popover } from '@alfalab/core-components-popover';
4
4
  import {
5
5
  AnyObject,
6
6
  BaseSelect,
7
- BaseSelectProps,
8
7
  Optgroup as DefaultOptgroup,
9
8
  Option as DefaultOption,
10
9
  OptionsList as DefaultOptionsList,
11
10
  } from '@alfalab/core-components-select/shared';
12
11
 
13
12
  import { AutocompleteField } from './autocomplete-field';
13
+ import { InputAutocompleteCommonProps } from './types';
14
14
 
15
- export type InputAutocompleteDesktopProps = Omit<
16
- BaseSelectProps,
17
- 'Field' | 'nativeSelect' | 'searchProps' | 'showSearch' | 'Search'
18
- > & {
19
- /**
20
- * Компонент ввода значения
21
- */
22
- Input?: FC<InputProps & RefAttributes<HTMLInputElement>>;
23
-
24
- /**
25
- * Пропсы, которые будут прокинуты в инпут
26
- */
27
- inputProps?: InputProps & Record<string, unknown>;
28
-
29
- /**
30
- * Значение поля ввода
31
- */
32
- value?: string;
33
-
34
- /**
35
- * Поле доступно только для чтения
36
- */
37
- readOnly?: InputProps['readOnly'];
38
-
39
- /**
40
- * Отображение иконки успеха
41
- */
42
- success?: boolean;
43
-
44
- /**
45
- * Обработчик ввода
46
- */
47
- onInput?: (event: ChangeEvent<HTMLInputElement>) => void;
48
-
49
- /**
50
- * Хранит функцию, с помощью которой можно обновить положение поповера
51
- */
52
- updatePopover?: BaseSelectProps['updatePopover'];
53
- };
54
-
55
- export const InputAutocompleteDesktop = forwardRef<HTMLInputElement, InputAutocompleteDesktopProps>(
15
+ export const InputAutocompleteDesktop = forwardRef<HTMLInputElement, InputAutocompleteCommonProps>(
56
16
  (
57
17
  {
58
18
  OptionsList = DefaultOptionsList,
@@ -71,6 +31,8 @@ export const InputAutocompleteDesktop = forwardRef<HTMLInputElement, InputAutoco
71
31
  ref,
72
32
  ) => (
73
33
  <BaseSelect
34
+ view='desktop'
35
+ Popover={Popover}
74
36
  ref={ref}
75
37
  autocomplete={true}
76
38
  options={options}