@alfalab/core-components-select 15.3.0 → 16.0.1

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 (301) hide show
  1. package/Component.desktop.d.ts +3 -15
  2. package/Component.desktop.js +4 -2
  3. package/Component.mobile.d.ts +3 -39
  4. package/Component.mobile.js +23 -10
  5. package/Component.modal.mobile.d.ts +2 -256
  6. package/Component.modal.mobile.js +23 -35
  7. package/Component.responsive.d.ts +3 -17
  8. package/Component.responsive.js +11 -13
  9. package/components/arrow/Component.js +1 -1
  10. package/components/arrow/index.css +5 -5
  11. package/components/base-checkmark/Component.js +1 -1
  12. package/components/base-checkmark/index.css +4 -4
  13. package/components/base-option/Component.js +1 -1
  14. package/components/base-option/index.css +16 -16
  15. package/components/base-select/Component.d.ts +17 -2
  16. package/components/base-select/Component.js +188 -81
  17. package/components/base-select/index.css +12 -12
  18. package/components/base-select/index.js +1 -1
  19. package/{esm/components/base-select-mobile/index.css → components/base-select/mobile.css} +13 -22
  20. package/components/checkmark/Component.js +1 -1
  21. package/components/checkmark/index.css +11 -11
  22. package/components/checkmark-mobile/Component.js +1 -1
  23. package/components/checkmark-mobile/index.css +6 -6
  24. package/components/field/Component.js +1 -1
  25. package/components/field/index.css +15 -17
  26. package/components/footer/Component.d.ts +12 -0
  27. package/components/{base-select-mobile/footer → footer}/Component.js +6 -5
  28. package/components/{base-select-mobile/footer → footer}/index.css +6 -6
  29. package/components/footer/index.d.ts +1 -0
  30. package/components/{base-select-mobile/footer → footer}/index.js +3 -2
  31. package/components/index.js +2 -1
  32. package/components/optgroup/Component.js +1 -1
  33. package/components/optgroup/index.css +7 -7
  34. package/components/option/Component.js +1 -1
  35. package/components/option/index.css +24 -24
  36. package/components/options-list/Component.js +7 -3
  37. package/components/options-list/index.css +11 -11
  38. package/components/options-list/index.js +2 -1
  39. package/components/search/Component.d.ts +2 -4
  40. package/components/search/Component.js +1 -1
  41. package/components/search/index.css +2 -2
  42. package/components/virtual-options-list/Component.js +7 -3
  43. package/components/virtual-options-list/index.css +18 -18
  44. package/components/virtual-options-list/index.js +2 -1
  45. package/cssm/Component.desktop.d.ts +3 -15
  46. package/cssm/Component.desktop.js +5 -2
  47. package/cssm/Component.mobile.d.ts +3 -39
  48. package/cssm/Component.mobile.js +27 -13
  49. package/cssm/Component.modal.mobile.d.ts +2 -256
  50. package/cssm/Component.modal.mobile.js +28 -39
  51. package/cssm/Component.responsive.d.ts +3 -17
  52. package/cssm/Component.responsive.js +13 -15
  53. package/cssm/components/arrow/index.module.css +2 -2
  54. package/cssm/components/base-option/index.module.css +3 -3
  55. package/cssm/components/base-select/Component.d.ts +17 -2
  56. package/cssm/components/base-select/Component.js +186 -80
  57. package/cssm/components/base-select/index.js +2 -1
  58. package/cssm/components/base-select/index.module.css +2 -2
  59. package/cssm/components/{base-select-mobile/index.module.css → base-select/mobile.module.css} +0 -9
  60. package/cssm/components/checkmark/index.module.css +1 -1
  61. package/cssm/components/field/index.module.css +3 -5
  62. package/cssm/components/footer/Component.d.ts +12 -0
  63. package/cssm/components/{base-select-mobile/footer → footer}/Component.js +5 -4
  64. package/cssm/components/footer/index.d.ts +1 -0
  65. package/cssm/components/{base-select-mobile/footer → footer}/index.js +3 -2
  66. package/cssm/components/{base-select-mobile/footer → footer}/index.module.css +1 -1
  67. package/cssm/components/index.js +3 -1
  68. package/cssm/components/optgroup/index.module.css +1 -1
  69. package/cssm/components/option/index.module.css +4 -4
  70. package/cssm/components/options-list/Component.js +6 -2
  71. package/cssm/components/options-list/index.js +2 -1
  72. package/cssm/components/options-list/index.module.css +2 -2
  73. package/cssm/components/search/Component.d.ts +2 -4
  74. package/cssm/components/virtual-options-list/Component.js +6 -2
  75. package/cssm/components/virtual-options-list/index.js +2 -1
  76. package/cssm/components/virtual-options-list/index.module.css +3 -3
  77. package/cssm/desktop/index.d.ts +2 -2
  78. package/cssm/desktop/index.js +4 -1
  79. package/cssm/{hook-244c8d6e.js → hook-2f9ec939.js} +9 -5
  80. package/{esm/hook-8abfea97.d.ts → cssm/hook-ad89c253.d.ts} +3 -2
  81. package/cssm/index.d.ts +2 -2
  82. package/cssm/index.js +10 -9
  83. package/cssm/mobile/index.d.ts +1 -3
  84. package/cssm/mobile/index.js +15 -10
  85. package/cssm/presets/index.d.ts +1 -1
  86. package/cssm/presets/index.js +3 -2
  87. package/cssm/presets/useSelectWithApply/hook.js +3 -2
  88. package/cssm/presets/useSelectWithApply/options-list-with-apply/Component.js +3 -2
  89. package/cssm/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  90. package/cssm/presets/useSelectWithApply/options-list-with-apply/index.js +3 -2
  91. package/cssm/shared/index.d.ts +9 -2
  92. package/cssm/shared/index.js +50 -48
  93. package/cssm/typings.d.ts +86 -7
  94. package/desktop/index.d.ts +2 -2
  95. package/desktop/index.js +3 -1
  96. package/esm/Component.desktop.d.ts +3 -15
  97. package/esm/Component.desktop.js +4 -2
  98. package/esm/Component.mobile.d.ts +3 -39
  99. package/esm/Component.mobile.js +22 -9
  100. package/esm/Component.modal.mobile.d.ts +2 -256
  101. package/esm/Component.modal.mobile.js +24 -36
  102. package/esm/Component.responsive.d.ts +3 -17
  103. package/esm/Component.responsive.js +11 -13
  104. package/esm/components/arrow/Component.js +1 -1
  105. package/esm/components/arrow/index.css +5 -5
  106. package/esm/components/base-checkmark/Component.js +1 -1
  107. package/esm/components/base-checkmark/index.css +4 -4
  108. package/esm/components/base-option/Component.js +1 -1
  109. package/esm/components/base-option/index.css +16 -16
  110. package/esm/components/base-select/Component.d.ts +17 -2
  111. package/esm/components/base-select/Component.js +190 -83
  112. package/esm/components/base-select/index.css +12 -12
  113. package/esm/components/base-select/index.js +1 -1
  114. package/{modern/components/base-select-mobile/index.css → esm/components/base-select/mobile.css} +13 -22
  115. package/esm/components/checkmark/Component.js +1 -1
  116. package/esm/components/checkmark/index.css +11 -11
  117. package/esm/components/checkmark-mobile/Component.js +1 -1
  118. package/esm/components/checkmark-mobile/index.css +6 -6
  119. package/esm/components/field/Component.js +1 -1
  120. package/esm/components/field/index.css +15 -17
  121. package/esm/components/footer/Component.d.ts +12 -0
  122. package/esm/components/{base-select-mobile/footer → footer}/Component.js +6 -5
  123. package/esm/components/{base-select-mobile/footer → footer}/index.css +6 -6
  124. package/esm/components/footer/index.d.ts +1 -0
  125. package/esm/components/{base-select-mobile/footer → footer}/index.js +1 -0
  126. package/esm/components/index.js +2 -1
  127. package/esm/components/optgroup/Component.js +1 -1
  128. package/esm/components/optgroup/index.css +7 -7
  129. package/esm/components/option/Component.js +1 -1
  130. package/esm/components/option/index.css +24 -24
  131. package/esm/components/options-list/Component.js +7 -3
  132. package/esm/components/options-list/index.css +11 -11
  133. package/esm/components/options-list/index.js +2 -1
  134. package/esm/components/search/Component.d.ts +2 -4
  135. package/esm/components/search/Component.js +1 -1
  136. package/esm/components/search/index.css +2 -2
  137. package/esm/components/virtual-options-list/Component.js +7 -3
  138. package/esm/components/virtual-options-list/index.css +18 -18
  139. package/esm/components/virtual-options-list/index.js +2 -1
  140. package/esm/desktop/index.d.ts +2 -2
  141. package/esm/desktop/index.js +3 -1
  142. package/{hook-8abfea97.d.ts → esm/hook-ad89c253.d.ts} +3 -2
  143. package/esm/{hook-70d58270.js → hook-d82699d1.js} +10 -6
  144. package/esm/index.d.ts +2 -2
  145. package/esm/index.js +8 -7
  146. package/esm/mobile/index.d.ts +1 -3
  147. package/esm/mobile/index.js +12 -8
  148. package/esm/presets/index.d.ts +1 -1
  149. package/esm/presets/index.js +3 -2
  150. package/esm/presets/useSelectWithApply/hook.js +3 -2
  151. package/esm/presets/useSelectWithApply/options-list-with-apply/Component.js +3 -2
  152. package/esm/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +1 -1
  153. package/esm/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  154. package/esm/presets/useSelectWithApply/options-list-with-apply/header/Component.js +1 -1
  155. package/esm/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  156. package/esm/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  157. package/esm/presets/useSelectWithApply/options-list-with-apply/index.js +3 -2
  158. package/esm/presets/useSelectWithLoading/hook.js +1 -1
  159. package/esm/presets/useSelectWithLoading/index.css +2 -2
  160. package/esm/shared/index.d.ts +9 -2
  161. package/esm/shared/index.js +30 -29
  162. package/esm/typings.d.ts +86 -7
  163. package/{cssm/hook-8abfea97.d.ts → hook-ad89c253.d.ts} +3 -2
  164. package/{hook-0a5c9f56.js → hook-df30325f.js} +9 -5
  165. package/index.d.ts +2 -2
  166. package/index.js +8 -7
  167. package/mobile/index.d.ts +1 -3
  168. package/mobile/index.js +12 -8
  169. package/modern/Component.desktop.d.ts +3 -15
  170. package/modern/Component.desktop.js +5 -3
  171. package/modern/Component.mobile.d.ts +3 -39
  172. package/modern/Component.mobile.js +29 -13
  173. package/modern/Component.modal.mobile.d.ts +2 -256
  174. package/modern/Component.modal.mobile.js +23 -43
  175. package/modern/Component.responsive.d.ts +3 -17
  176. package/modern/Component.responsive.js +11 -13
  177. package/modern/components/arrow/Component.js +1 -1
  178. package/modern/components/arrow/index.css +5 -5
  179. package/modern/components/base-checkmark/Component.js +1 -1
  180. package/modern/components/base-checkmark/index.css +4 -4
  181. package/modern/components/base-option/Component.js +1 -1
  182. package/modern/components/base-option/index.css +16 -16
  183. package/modern/components/base-select/Component.d.ts +17 -2
  184. package/modern/components/base-select/Component.js +179 -72
  185. package/modern/components/base-select/index.css +12 -12
  186. package/modern/components/base-select/index.js +1 -1
  187. package/{components/base-select-mobile/index.css → modern/components/base-select/mobile.css} +13 -22
  188. package/modern/components/checkmark/Component.js +1 -1
  189. package/modern/components/checkmark/index.css +11 -11
  190. package/modern/components/checkmark-mobile/Component.js +1 -1
  191. package/modern/components/checkmark-mobile/index.css +6 -6
  192. package/modern/components/field/Component.js +1 -1
  193. package/modern/components/field/index.css +15 -17
  194. package/modern/components/footer/Component.d.ts +12 -0
  195. package/modern/components/{base-select-mobile/footer → footer}/Component.js +5 -4
  196. package/modern/components/{base-select-mobile/footer → footer}/index.css +6 -6
  197. package/modern/components/footer/index.d.ts +1 -0
  198. package/modern/components/{base-select-mobile/footer → footer}/index.js +1 -0
  199. package/modern/components/index.js +2 -1
  200. package/modern/components/optgroup/Component.js +1 -1
  201. package/modern/components/optgroup/index.css +7 -7
  202. package/modern/components/option/Component.js +1 -1
  203. package/modern/components/option/index.css +24 -24
  204. package/modern/components/options-list/Component.js +5 -3
  205. package/modern/components/options-list/index.css +11 -11
  206. package/modern/components/options-list/index.js +2 -1
  207. package/modern/components/search/Component.d.ts +2 -4
  208. package/modern/components/search/Component.js +1 -1
  209. package/modern/components/search/index.css +2 -2
  210. package/modern/components/virtual-options-list/Component.js +5 -3
  211. package/modern/components/virtual-options-list/index.css +18 -18
  212. package/modern/components/virtual-options-list/index.js +2 -1
  213. package/modern/desktop/index.d.ts +2 -2
  214. package/modern/desktop/index.js +3 -1
  215. package/modern/{hook-8abfea97.d.ts → hook-ad89c253.d.ts} +3 -2
  216. package/modern/{hook-4eceefed.js → hook-d879e08e.js} +7 -3
  217. package/modern/index.d.ts +2 -2
  218. package/modern/index.js +8 -7
  219. package/modern/mobile/index.d.ts +1 -3
  220. package/modern/mobile/index.js +12 -8
  221. package/modern/presets/index.d.ts +1 -1
  222. package/modern/presets/index.js +3 -2
  223. package/modern/presets/useSelectWithApply/hook.js +3 -2
  224. package/modern/presets/useSelectWithApply/options-list-with-apply/Component.js +3 -2
  225. package/modern/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +1 -1
  226. package/modern/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  227. package/modern/presets/useSelectWithApply/options-list-with-apply/header/Component.js +1 -1
  228. package/modern/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  229. package/modern/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  230. package/modern/presets/useSelectWithApply/options-list-with-apply/index.js +3 -2
  231. package/modern/presets/useSelectWithLoading/hook.js +1 -1
  232. package/modern/presets/useSelectWithLoading/index.css +2 -2
  233. package/modern/shared/index.d.ts +9 -2
  234. package/modern/shared/index.js +29 -28
  235. package/modern/typings.d.ts +86 -7
  236. package/package.json +13 -11
  237. package/presets/index.d.ts +1 -1
  238. package/presets/index.js +3 -2
  239. package/presets/useSelectWithApply/hook.js +3 -2
  240. package/presets/useSelectWithApply/options-list-with-apply/Component.js +3 -2
  241. package/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +1 -1
  242. package/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  243. package/presets/useSelectWithApply/options-list-with-apply/header/Component.js +1 -1
  244. package/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  245. package/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  246. package/presets/useSelectWithApply/options-list-with-apply/index.js +3 -2
  247. package/presets/useSelectWithLoading/hook.js +1 -1
  248. package/presets/useSelectWithLoading/index.css +2 -2
  249. package/shared/index.d.ts +9 -2
  250. package/shared/index.js +39 -38
  251. package/src/Component.desktop.tsx +5 -14
  252. package/src/Component.mobile.tsx +38 -57
  253. package/src/Component.modal.mobile.tsx +5 -147
  254. package/src/Component.responsive.tsx +9 -44
  255. package/src/components/base-select/Component.tsx +380 -156
  256. package/src/components/base-select/index.module.css +1 -1
  257. package/src/components/{base-select-mobile/index.module.css → base-select/mobile.module.css} +0 -15
  258. package/src/components/{base-select-mobile/footer → footer}/Component.tsx +22 -4
  259. package/src/components/{base-select-mobile/footer → footer}/index.module.css +1 -1
  260. package/src/components/footer/index.ts +1 -0
  261. package/src/components/options-list/Component.tsx +6 -2
  262. package/src/components/virtual-options-list/Component.tsx +6 -2
  263. package/src/desktop/index.ts +2 -1
  264. package/src/index.ts +2 -4
  265. package/src/mobile/index.ts +1 -2
  266. package/src/presets/useSelectWithApply/hook.tsx +9 -3
  267. package/src/shared/index.ts +10 -2
  268. package/src/typings.ts +110 -9
  269. package/src/vars.css +1 -1
  270. package/typings.d.ts +86 -7
  271. package/components/base-select-mobile/Component.d.ts +0 -71
  272. package/components/base-select-mobile/Component.js +0 -296
  273. package/components/base-select-mobile/footer/Component.d.ts +0 -9
  274. package/components/base-select-mobile/footer/index.d.ts +0 -1
  275. package/components/base-select-mobile/index.d.ts +0 -1
  276. package/components/base-select-mobile/index.js +0 -36
  277. package/cssm/components/base-select-mobile/Component.d.ts +0 -71
  278. package/cssm/components/base-select-mobile/Component.js +0 -303
  279. package/cssm/components/base-select-mobile/footer/Component.d.ts +0 -9
  280. package/cssm/components/base-select-mobile/footer/index.d.ts +0 -1
  281. package/cssm/components/base-select-mobile/index.d.ts +0 -1
  282. package/cssm/components/base-select-mobile/index.js +0 -45
  283. package/esm/components/base-select-mobile/Component.d.ts +0 -71
  284. package/esm/components/base-select-mobile/Component.js +0 -286
  285. package/esm/components/base-select-mobile/footer/Component.d.ts +0 -9
  286. package/esm/components/base-select-mobile/footer/index.d.ts +0 -1
  287. package/esm/components/base-select-mobile/index.d.ts +0 -1
  288. package/esm/components/base-select-mobile/index.js +0 -28
  289. package/modern/components/base-select-mobile/Component.d.ts +0 -71
  290. package/modern/components/base-select-mobile/Component.js +0 -285
  291. package/modern/components/base-select-mobile/footer/Component.d.ts +0 -9
  292. package/modern/components/base-select-mobile/footer/index.d.ts +0 -1
  293. package/modern/components/base-select-mobile/index.d.ts +0 -1
  294. package/modern/components/base-select-mobile/index.js +0 -27
  295. package/src/components/base-select-mobile/Component.tsx +0 -572
  296. package/src/components/base-select-mobile/footer/index.ts +0 -1
  297. package/src/components/base-select-mobile/index.ts +0 -1
  298. /package/cssm/{hook-244c8d6e.d.ts → hook-2f9ec939.d.ts} +0 -0
  299. /package/esm/{hook-70d58270.d.ts → hook-d82699d1.d.ts} +0 -0
  300. /package/{hook-0a5c9f56.d.ts → hook-df30325f.d.ts} +0 -0
  301. /package/modern/{hook-4eceefed.d.ts → hook-d879e08e.d.ts} +0 -0
@@ -1,6 +1,11 @@
1
1
  import { AriaAttributes, FC, FocusEvent, MouseEvent, ReactElement, ReactNode, RefAttributes, SVGProps } from 'react';
2
+ import { BottomSheetProps } from "@alfalab/core-components-bottom-sheet";
3
+ import { FormControlProps } from "@alfalab/core-components-form-control";
2
4
  import { InputProps } from "@alfalab/core-components-input";
5
+ import { ModalProps } from "@alfalab/core-components-modal";
6
+ import { ModalFooterProps, ModalHeaderProps } from "@alfalab/core-components-modal/shared";
3
7
  import { PopoverProps } from "@alfalab/core-components-popover";
8
+ import { UseSelectWithApplyProps } from "./hook-ad89c253";
4
9
  type AnyObject = Record<string, any>;
5
10
  type OptionShape = {
6
11
  /**
@@ -217,13 +222,14 @@ type BaseSelectProps = {
217
222
  /**
218
223
  * Компонент поиска
219
224
  */
220
- Search?: FC<SearchProps & RefAttributes<HTMLInputElement>>;
225
+ Search?: FC<SearchProps>;
221
226
  /**
222
227
  * Настройки поиска
223
228
  */
224
229
  searchProps?: {
225
230
  componentProps?: SearchProps;
226
231
  accessor?: (option: OptionShape) => string;
232
+ filterFn?: (optionText: string, search: string) => boolean;
227
233
  value?: string;
228
234
  onChange?: (value: string) => void;
229
235
  };
@@ -528,10 +534,10 @@ type OptionProps = {
528
534
  */
529
535
  innerProps: {
530
536
  id: string;
531
- onClick: (event: MouseEvent<HTMLDivElement>) => void;
532
- onMouseDown: (event: MouseEvent<HTMLDivElement>) => void;
533
- onMouseMove: (event: MouseEvent<HTMLDivElement>) => void;
534
- role: string;
537
+ onClick?: (event: MouseEvent<HTMLDivElement>) => void;
538
+ onMouseDown?: (event: MouseEvent<HTMLDivElement>) => void;
539
+ onMouseMove?: (event: MouseEvent<HTMLDivElement>) => void;
540
+ role?: string;
535
541
  } & RefAttributes<HTMLDivElement> & AriaAttributes;
536
542
  /**
537
543
  * Идентификатор для систем автоматизированного тестирования
@@ -572,5 +578,78 @@ type CheckmarkProps = {
572
578
  */
573
579
  icon?: FC<SVGProps<SVGSVGElement>>;
574
580
  };
575
- type SearchProps = InputProps;
576
- export { AnyObject, OptionShape, GroupShape, BaseSelectChangePayload, BaseSelectProps, FieldProps, ArrowProps, OptionsListProps, OptgroupProps, OptionProps, CheckmarkProps, SearchProps };
581
+ type SearchProps = InputProps & RefAttributes<HTMLInputElement>;
582
+ type SelectFieldProps = Omit<FormControlProps, 'size'> & Record<string, unknown>;
583
+ type AdditionalMobileProps = {
584
+ /**
585
+ * Показывать кнопку 'Сбросить' в футере мобильного компонента
586
+ */
587
+ showClear?: UseSelectWithApplyProps['showClear'];
588
+ /**
589
+ * Показывать пункт "Выбрать все"
590
+ */
591
+ showSelectAll?: UseSelectWithApplyProps['showSelectAll'];
592
+ /**
593
+ * Показывать пункт "Выбрать все" в заголовке списка у мобильного компонента
594
+ */
595
+ showHeaderWithSelectAll?: UseSelectWithApplyProps['showHeaderWithSelectAll'];
596
+ /**
597
+ * Использовать ли хук useSelectWithApply в мобильном компоненте
598
+ */
599
+ useWithApplyHook?: boolean;
600
+ };
601
+ type BottomSheetSelectMobileProps = {
602
+ /**
603
+ * Футер
604
+ * @deprecated Используйте bottomSheetProps.actionButton
605
+ */
606
+ footer?: ReactNode;
607
+ /**
608
+ * Будет ли свайпаться шторка
609
+ * @deprecated Используйте bottomSheetProps.swipeable
610
+ */
611
+ swipeable?: boolean;
612
+ /**
613
+ * Дополнительные пропсы шторки
614
+ */
615
+ bottomSheetProps?: Partial<BottomSheetProps>;
616
+ };
617
+ type ModalSelectMobileProps = {
618
+ /**
619
+ * Дополнительные пропсы шапки модалки
620
+ */
621
+ modalHeaderProps?: Partial<ModalHeaderProps>;
622
+ /**
623
+ * Дополнительные пропсы модалки
624
+ */
625
+ modalProps?: Partial<ModalProps & RefAttributes<HTMLDivElement>>;
626
+ /**
627
+ * Дополнительные пропсы футера модалки
628
+ */
629
+ modalFooterProps?: Partial<ModalFooterProps>;
630
+ };
631
+ type ConditionalMobileProps = ({
632
+ isBottomSheet?: true;
633
+ } & BottomSheetSelectMobileProps) | ({
634
+ isBottomSheet: false;
635
+ } & ModalSelectMobileProps);
636
+ type SelectModalMobileProps = Omit<BaseSelectProps, 'Checkmark'> & AdditionalMobileProps & ModalSelectMobileProps;
637
+ type SelectMobileProps = Omit<BaseSelectProps, 'Checkmark'> & AdditionalMobileProps & ConditionalMobileProps;
638
+ type SelectDesktopProps = Omit<BaseSelectProps, 'fieldProps'> & {
639
+ /**
640
+ * Пропсы, которые будут прокинуты в компонент поля
641
+ */
642
+ fieldProps?: SelectFieldProps;
643
+ };
644
+ type SelectProps = BaseSelectProps & AdditionalMobileProps & ConditionalMobileProps & {
645
+ /**
646
+ * Контрольная точка, с нее начинается desktop версия
647
+ * @default 1024
648
+ */
649
+ breakpoint?: number;
650
+ /**
651
+ * Значение по-умолчанию для хука useMatchMedia
652
+ */
653
+ defaultMatchMediaValue?: boolean | (() => boolean);
654
+ };
655
+ export { AnyObject, OptionShape, GroupShape, BaseSelectChangePayload, BaseSelectProps, FieldProps, ArrowProps, OptionsListProps, OptgroupProps, OptionProps, CheckmarkProps, SearchProps, SelectFieldProps, AdditionalMobileProps, BottomSheetSelectMobileProps, ModalSelectMobileProps, SelectModalMobileProps, SelectMobileProps, SelectDesktopProps, SelectProps };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfalab/core-components-select",
3
- "version": "15.3.0",
3
+ "version": "16.0.1",
4
4
  "description": "Select component",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -15,23 +15,25 @@
15
15
  "react-dom": "^16.9.0 || ^17.0.1 || ^18.0.0"
16
16
  },
17
17
  "dependencies": {
18
- "@alfalab/core-components-badge": "^5.2.0",
19
- "@alfalab/core-components-base-modal": "^5.5.0",
20
- "@alfalab/core-components-bottom-sheet": "^6.11.3",
21
- "@alfalab/core-components-button": "^9.1.0",
22
- "@alfalab/core-components-checkbox": "^3.2.0",
23
- "@alfalab/core-components-form-control": "^10.2.0",
24
- "@alfalab/core-components-input": "^12.3.0",
25
- "@alfalab/core-components-modal": "^8.1.0",
18
+ "@alfalab/core-components-badge": "^5.3.0",
19
+ "@alfalab/core-components-base-modal": "^5.6.0",
20
+ "@alfalab/core-components-bottom-sheet": "^6.11.5",
21
+ "@alfalab/core-components-button": "^10.0.1",
22
+ "@alfalab/core-components-checkbox": "^3.3.0",
23
+ "@alfalab/core-components-form-control": "^11.0.0",
24
+ "@alfalab/core-components-input": "^13.0.1",
25
+ "@alfalab/core-components-modal": "^8.1.2",
26
+ "@alfalab/core-components-mq": "^4.2.0",
26
27
  "@alfalab/core-components-popover": "^6.1.0",
27
28
  "@alfalab/core-components-scrollbar": "^2.2.0",
28
29
  "@alfalab/core-components-skeleton": "^4.1.0",
29
- "@alfalab/core-components-shared": "^0.7.0",
30
+ "@alfalab/core-components-shared": "^0.8.0",
30
31
  "@alfalab/hooks": "^1.13.0",
31
32
  "@alfalab/icons-glyph": "^2.108.0",
32
33
  "@juggle/resize-observer": "^3.3.1",
34
+ "compute-scroll-into-view": "^3.1.0",
33
35
  "classnames": "^2.3.1",
34
- "downshift": "^5.4.7",
36
+ "downshift": "^8.2.2",
35
37
  "intersection-observer": "^0.12.0",
36
38
  "react-merge-refs": "^1.1.0",
37
39
  "react-virtual": "^2.3.2",
@@ -1,3 +1,3 @@
1
1
  export * from "./useSelectWithLoading/hook";
2
2
  export * from "./useLazyLoading/hook";
3
- export * from "../hook-8abfea97";
3
+ export * from "../hook-ad89c253";
package/presets/index.js CHANGED
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var presets_useSelectWithLoading_hook = require('./useSelectWithLoading/hook.js');
6
6
  var presets_useLazyLoading_hook = require('./useLazyLoading/hook.js');
7
- var presets_useSelectWithApply_optionsListWithApply_Component = require('../hook-0a5c9f56.js');
7
+ var presets_useSelectWithApply_optionsListWithApply_Component = require('../hook-df30325f.js');
8
8
  require('tslib');
9
9
  require('react');
10
10
  require('@alfalab/core-components-skeleton');
@@ -20,8 +20,9 @@ require('intersection-observer');
20
20
  require('../utils.js');
21
21
  require('../components/options-list/Component.js');
22
22
  require('react-merge-refs');
23
+ require('@alfalab/core-components-mq');
23
24
  require('@alfalab/core-components-scrollbar');
24
- require('@alfalab/hooks');
25
+ require('@alfalab/core-components-shared');
25
26
  require('../consts.js');
26
27
  require('../components/optgroup/Component.js');
27
28
  require('./useSelectWithApply/options-list-with-apply/footer/Component.js');
@@ -5,12 +5,13 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  require('tslib');
6
6
  require('react');
7
7
  require('../../utils.js');
8
- var presets_useSelectWithApply_optionsListWithApply_Component = require('../../hook-0a5c9f56.js');
8
+ var presets_useSelectWithApply_optionsListWithApply_Component = require('../../hook-df30325f.js');
9
9
  require('../../components/options-list/Component.js');
10
10
  require('react-merge-refs');
11
11
  require('classnames');
12
+ require('@alfalab/core-components-mq');
12
13
  require('@alfalab/core-components-scrollbar');
13
- require('@alfalab/hooks');
14
+ require('@alfalab/core-components-shared');
14
15
  require('../../consts.js');
15
16
  require('../../components/optgroup/Component.js');
16
17
  require('./options-list-with-apply/footer/Component.js');
@@ -6,13 +6,14 @@ require('tslib');
6
6
  require('react');
7
7
  require('../../../components/options-list/Component.js');
8
8
  require('../../../consts.js');
9
- var presets_useSelectWithApply_optionsListWithApply_Component = require('../../../hook-0a5c9f56.js');
9
+ var presets_useSelectWithApply_optionsListWithApply_Component = require('../../../hook-df30325f.js');
10
10
  require('./footer/Component.js');
11
11
  require('./header/Component.js');
12
12
  require('react-merge-refs');
13
13
  require('classnames');
14
+ require('@alfalab/core-components-mq');
14
15
  require('@alfalab/core-components-scrollbar');
15
- require('@alfalab/hooks');
16
+ require('@alfalab/core-components-shared');
16
17
  require('../../../utils.js');
17
18
  require('../../../components/optgroup/Component.js');
18
19
  require('@alfalab/core-components-button/desktop');
@@ -9,7 +9,7 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
9
9
 
10
10
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
11
11
 
12
- var styles = {"footer":"select__footer_b1owf"};
12
+ var styles = {"footer":"select__footer_1vdbq"};
13
13
  require('./index.css')
14
14
 
15
15
  var Footer = function (_a) {
@@ -1,4 +1,4 @@
1
- /* hash: 10dvs */
1
+ /* hash: 1tiyk */
2
2
  :root {
3
3
  } /* deprecated */ :root {
4
4
  --color-light-bg-primary: #fff; /* 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 */
@@ -17,10 +17,10 @@
17
17
  --gap-s: 12px;
18
18
  } :root {
19
19
  } :root {
20
- } .select__footer_b1owf {
20
+ } .select__footer_1vdbq {
21
21
  background-color: var(--color-light-bg-primary);
22
22
  padding: var(--gap-s);
23
23
  outline: none
24
- } .select__footer_b1owf > * + * {
24
+ } .select__footer_1vdbq > * + * {
25
25
  margin-left: var(--gap-xs);
26
26
  }
@@ -11,7 +11,7 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
11
11
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
12
12
  var cn__default = /*#__PURE__*/_interopDefaultCompat(cn);
13
13
 
14
- var styles = {"desktop":"select__desktop_1kxe6","mobile":"select__mobile_1kxe6"};
14
+ var styles = {"desktop":"select__desktop_1ywyh","mobile":"select__mobile_1ywyh"};
15
15
  require('./index.css')
16
16
 
17
17
  var Header = function (_a) {
@@ -1,4 +1,4 @@
1
- /* hash: 1hj4p */
1
+ /* hash: t09wr */
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 */
@@ -16,8 +16,8 @@
16
16
  --gap-s: 12px;
17
17
  } :root {
18
18
  } :root {
19
- } .select__desktop_1kxe6 {
19
+ } .select__desktop_1ywyh {
20
20
  padding: var(--gap-s);
21
- } .select__mobile_1kxe6 {
21
+ } .select__mobile_1ywyh {
22
22
  padding: var(--gap-s) var(--gap-xs);
23
23
  }
@@ -1 +1 @@
1
- export * from "../../../hook-0a5c9f56";
1
+ export * from "../../../hook-df30325f";
@@ -2,15 +2,16 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var presets_useSelectWithApply_optionsListWithApply_Component = require('../../../hook-0a5c9f56.js');
5
+ var presets_useSelectWithApply_optionsListWithApply_Component = require('../../../hook-df30325f.js');
6
6
  require('tslib');
7
7
  require('react');
8
8
  require('../../../utils.js');
9
9
  require('../../../components/options-list/Component.js');
10
10
  require('react-merge-refs');
11
11
  require('classnames');
12
+ require('@alfalab/core-components-mq');
12
13
  require('@alfalab/core-components-scrollbar');
13
- require('@alfalab/hooks');
14
+ require('@alfalab/core-components-shared');
14
15
  require('../../../consts.js');
15
16
  require('../../../components/optgroup/Component.js');
16
17
  require('./footer/Component.js');
@@ -18,7 +18,7 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
18
18
 
19
19
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
20
20
 
21
- var styles = {"skeleton":"select__skeleton_164am"};
21
+ var styles = {"skeleton":"select__skeleton_16ngw"};
22
22
  require('./index.css')
23
23
 
24
24
  function useSelectWithLoading(_a) {
@@ -1,5 +1,5 @@
1
- /* hash: 2b85k */
2
- .select__skeleton_164am {
1
+ /* hash: q34u7 */
2
+ .select__skeleton_16ngw {
3
3
  position: absolute;
4
4
  top: 50%;
5
5
  transform: translateY(-50%);
package/shared/index.d.ts CHANGED
@@ -1,5 +1,12 @@
1
- export * from "../components/index";
2
1
  export * from "../presets/index";
3
2
  export * from "../typings";
4
3
  export * from "../utils";
5
- export type { AdditionalMobileProps } from "../Component.mobile";
4
+ export * from "../components/option/index";
5
+ export * from "../components/base-option/index";
6
+ export * from "../components/options-list/index";
7
+ export * from "../components/virtual-options-list/index";
8
+ export * from "../components/field/index";
9
+ export * from "../components/arrow/index";
10
+ export * from "../components/base-select/index";
11
+ export * from "../components/optgroup/index";
12
+ export * from "../components/footer/index";
package/shared/index.js CHANGED
@@ -2,59 +2,51 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var components_arrow_Component = require('../components/arrow/Component.js');
6
- var components_baseSelect_Component = require('../components/base-select/Component.js');
7
- var components_field_Component = require('../components/field/Component.js');
8
- var components_optgroup_Component = require('../components/optgroup/Component.js');
9
- var components_option_Component = require('../components/option/Component.js');
10
- var components_optionsList_Component = require('../components/options-list/Component.js');
11
- var components_virtualOptionsList_Component = require('../components/virtual-options-list/Component.js');
12
- var components_baseOption_Component = require('../components/base-option/Component.js');
13
- var components_search_Component = require('../components/search/Component.js');
14
5
  var presets_useSelectWithLoading_hook = require('../presets/useSelectWithLoading/hook.js');
15
6
  var presets_useLazyLoading_hook = require('../presets/useLazyLoading/hook.js');
16
- var presets_useSelectWithApply_optionsListWithApply_Component = require('../hook-0a5c9f56.js');
7
+ var presets_useSelectWithApply_optionsListWithApply_Component = require('../hook-df30325f.js');
17
8
  var utils = require('../utils.js');
9
+ var components_option_Component = require('../components/option/Component.js');
10
+ var components_baseOption_Component = require('../components/base-option/Component.js');
11
+ var components_optionsList_Component = require('../components/options-list/Component.js');
12
+ var components_virtualOptionsList_Component = require('../components/virtual-options-list/Component.js');
13
+ var components_field_Component = require('../components/field/Component.js');
14
+ var components_arrow_Component = require('../components/arrow/Component.js');
15
+ var components_baseSelect_Component = require('../components/base-select/Component.js');
16
+ var components_optgroup_Component = require('../components/optgroup/Component.js');
17
+ var components_footer_Component = require('../components/footer/Component.js');
18
+ require('tslib');
18
19
  require('react');
20
+ require('@alfalab/core-components-skeleton');
21
+ require('intersection-observer');
22
+ require('../consts.js');
23
+ require('../presets/useSelectWithApply/options-list-with-apply/footer/Component.js');
24
+ require('@alfalab/core-components-button/desktop');
25
+ require('../presets/useSelectWithApply/options-list-with-apply/header/Component.js');
19
26
  require('classnames');
20
- require('@alfalab/icons-glyph/ChevronDownMIcon');
21
- require('tslib');
22
- require('react-merge-refs');
23
- require('@juggle/resize-observer');
24
- require('downshift');
25
- require('@alfalab/core-components-popover');
26
- require('@alfalab/core-components-shared');
27
- require('@alfalab/hooks');
28
- require('../components/native-select/Component.js');
27
+ require('@alfalab/core-components-checkbox');
29
28
  require('../components/checkmark/Component.js');
30
29
  require('@alfalab/core-components-badge');
31
- require('@alfalab/core-components-checkbox');
32
30
  require('@alfalab/icons-glyph/CheckmarkCircleMIcon');
33
31
  require('@alfalab/icons-glyph/CheckmarkMIcon');
34
32
  require('../components/checkmark-mobile/Component.js');
33
+ require('../components/base-checkmark/Component.js');
34
+ require('react-merge-refs');
35
+ require('@alfalab/core-components-mq');
35
36
  require('@alfalab/core-components-scrollbar');
36
- require('../consts.js');
37
+ require('@alfalab/core-components-shared');
37
38
  require('react-virtual');
38
- require('../components/base-checkmark/Component.js');
39
- require('@alfalab/core-components-input');
40
- require('@alfalab/icons-glyph/MagnifierMIcon');
41
- require('@alfalab/core-components-skeleton');
42
- require('intersection-observer');
43
- require('../presets/useSelectWithApply/options-list-with-apply/footer/Component.js');
44
- require('@alfalab/core-components-button/desktop');
45
- require('../presets/useSelectWithApply/options-list-with-apply/header/Component.js');
39
+ require('@alfalab/hooks');
40
+ require('@alfalab/icons-glyph/ChevronDownMIcon');
41
+ require('@juggle/resize-observer');
42
+ require('compute-scroll-into-view');
43
+ require('downshift');
44
+ require('../components/native-select/Component.js');
45
+ require('@alfalab/core-components-base-modal');
46
+ require('@alfalab/core-components-button/mobile');
46
47
 
47
48
 
48
49
 
49
- exports.Arrow = components_arrow_Component.Arrow;
50
- exports.BaseSelect = components_baseSelect_Component.BaseSelect;
51
- exports.Field = components_field_Component.Field;
52
- exports.Optgroup = components_optgroup_Component.Optgroup;
53
- exports.Option = components_option_Component.Option;
54
- exports.OptionsList = components_optionsList_Component.OptionsList;
55
- exports.VirtualOptionsList = components_virtualOptionsList_Component.VirtualOptionsList;
56
- exports.BaseOption = components_baseOption_Component.BaseOption;
57
- exports.Search = components_search_Component.Search;
58
50
  exports.useSelectWithLoading = presets_useSelectWithLoading_hook.useSelectWithLoading;
59
51
  exports.useLazyLoading = presets_useLazyLoading_hook.useLazyLoading;
60
52
  exports.SELECT_ALL_KEY = presets_useSelectWithApply_optionsListWithApply_Component.SELECT_ALL_KEY;
@@ -68,3 +60,12 @@ exports.lastIndexOf = utils.lastIndexOf;
68
60
  exports.processOptions = utils.processOptions;
69
61
  exports.usePrevious = utils.usePrevious;
70
62
  exports.useVisibleOptions = utils.useVisibleOptions;
63
+ exports.Option = components_option_Component.Option;
64
+ exports.BaseOption = components_baseOption_Component.BaseOption;
65
+ exports.OptionsList = components_optionsList_Component.OptionsList;
66
+ exports.VirtualOptionsList = components_virtualOptionsList_Component.VirtualOptionsList;
67
+ exports.Field = components_field_Component.Field;
68
+ exports.Arrow = components_arrow_Component.Arrow;
69
+ exports.BaseSelect = components_baseSelect_Component.BaseSelect;
70
+ exports.Optgroup = components_optgroup_Component.Optgroup;
71
+ exports.Footer = components_footer_Component.Footer;
@@ -1,9 +1,7 @@
1
1
  import React, { forwardRef } from 'react';
2
2
 
3
- import {
4
- FormControlDesktop,
5
- FormControlDesktopProps,
6
- } from '@alfalab/core-components-form-control/desktop';
3
+ import { FormControlDesktop } from '@alfalab/core-components-form-control/desktop';
4
+ import { Popover } from '@alfalab/core-components-popover';
7
5
 
8
6
  import { Arrow as DefaultArrow } from './components/arrow';
9
7
  import { BaseSelect } from './components/base-select';
@@ -12,16 +10,7 @@ import { Optgroup as DefaultOptgroup } from './components/optgroup';
12
10
  import { Option as DefaultOption } from './components/option';
13
11
  import { OptionsList as DefaultOptionsList } from './components/options-list';
14
12
  import { Search as DefaultSearch } from './components/search';
15
- import { BaseSelectProps } from './typings';
16
-
17
- export type SelectFieldProps = Omit<FormControlDesktopProps, 'size'> & Record<string, unknown>;
18
-
19
- export type SelectDesktopProps = Omit<BaseSelectProps, 'fieldProps'> & {
20
- /**
21
- * Пропсы, которые будут прокинуты в компонент поля
22
- */
23
- fieldProps?: SelectFieldProps;
24
- };
13
+ import { SelectDesktopProps } from './typings';
25
14
 
26
15
  export const SelectDesktop = forwardRef<HTMLDivElement, SelectDesktopProps>(
27
16
  (
@@ -39,6 +28,7 @@ export const SelectDesktop = forwardRef<HTMLDivElement, SelectDesktopProps>(
39
28
  ) => (
40
29
  <BaseSelect
41
30
  ref={ref}
31
+ view='desktop'
42
32
  Option={Option}
43
33
  Field={Field}
44
34
  fieldProps={{
@@ -49,6 +39,7 @@ export const SelectDesktop = forwardRef<HTMLDivElement, SelectDesktopProps>(
49
39
  Optgroup={Optgroup}
50
40
  OptionsList={OptionsList}
51
41
  Arrow={Arrow}
42
+ Popover={Popover}
52
43
  {...restProps}
53
44
  />
54
45
  ),
@@ -1,62 +1,26 @@
1
- import React, { forwardRef, ReactNode } from 'react';
1
+ import React, { forwardRef } from 'react';
2
2
 
3
- import { BottomSheetProps } from '@alfalab/core-components-bottom-sheet';
3
+ import { BottomSheet } from '@alfalab/core-components-bottom-sheet';
4
4
  import { FormControlMobile } from '@alfalab/core-components-form-control/mobile';
5
+ import { ModalMobile } from '@alfalab/core-components-modal/Component.mobile';
5
6
 
6
7
  import { Arrow as DefaultArrow } from './components/arrow';
7
- import { BaseSelectMobile } from './components/base-select-mobile';
8
- import { Footer } from './components/base-select-mobile/footer';
8
+ import { BaseSelect } from './components/base-select';
9
9
  import { Field as DefaultField } from './components/field';
10
+ import { Footer } from './components/footer';
10
11
  import { Optgroup as DefaultOptgroup } from './components/optgroup';
11
12
  import { Option as DefaultOption } from './components/option';
12
13
  import { OptionsList as DefaultOptionsList } from './components/options-list';
13
14
  import { Search as DefaultSearch } from './components/search';
14
15
  import { VirtualOptionsList as DefaultVirtualOptionsList } from './components/virtual-options-list';
15
- import { useSelectWithApply, UseSelectWithApplyProps } from './presets/useSelectWithApply/hook';
16
+ import { useSelectWithApply } from './presets/useSelectWithApply/hook';
16
17
  import { Header } from './presets/useSelectWithApply/options-list-with-apply/header/Component';
17
- import { AnyObject, BaseSelectProps } from './typings';
18
-
19
- export type AdditionalMobileProps = {
20
- /**
21
- * Футер
22
- * @deprecated Используйте bottomSheetProps.actionButton
23
- */
24
- footer?: ReactNode;
25
-
26
- /**
27
- * Будет ли свайпаться шторка
28
- * @deprecated Используйте bottomSheetProps.swipeable
29
- */
30
- swipeable?: boolean;
31
-
32
- /**
33
- * Дополнительные пропсы шторки
34
- */
35
- bottomSheetProps?: Partial<BottomSheetProps>;
36
-
37
- /**
38
- * Показывать кнопку очистки
39
- */
40
- showClear?: UseSelectWithApplyProps['showClear'];
41
-
42
- /**
43
- * Показывать пункт "Выбрать все"
44
- */
45
- showSelectAll?: UseSelectWithApplyProps['showSelectAll'];
46
-
47
- /**
48
- * Показывать пункт "Выбрать все" в заголовке списка
49
- */
50
- showHeaderWithSelectAll?: UseSelectWithApplyProps['showHeaderWithSelectAll'];
51
-
52
- /**
53
- * Использовать ли хук useSelectWithApply
54
- */
55
- useWithApplyHook?: boolean;
56
- };
57
-
58
- export type SelectMobileProps = Omit<BaseSelectProps, 'Checkmark' | 'onScroll'> &
59
- AdditionalMobileProps;
18
+ import {
19
+ AnyObject,
20
+ BottomSheetSelectMobileProps,
21
+ ModalSelectMobileProps,
22
+ SelectMobileProps,
23
+ } from './typings';
60
24
 
61
25
  const VIRTUAL_OPTIONS_LIST_THRESHOLD = 30;
62
26
 
@@ -82,12 +46,12 @@ export const SelectMobile = forwardRef(
82
46
  Option = DefaultOption,
83
47
  Search = DefaultSearch,
84
48
  selected,
49
+ isBottomSheet = true,
85
50
  options,
86
51
  OptionsList = options.length > VIRTUAL_OPTIONS_LIST_THRESHOLD
87
52
  ? DefaultVirtualOptionsList
88
53
  : DefaultOptionsList,
89
54
  onChange,
90
- bottomSheetProps,
91
55
  showClear = true,
92
56
  showSelectAll,
93
57
  showHeaderWithSelectAll,
@@ -98,6 +62,9 @@ export const SelectMobile = forwardRef(
98
62
  }: SelectMobileProps,
99
63
  ref,
100
64
  ) => {
65
+ const typedRestBottomSheetProps = restProps as BottomSheetSelectMobileProps;
66
+ const typedRestModalProps = restProps as ModalSelectMobileProps;
67
+
101
68
  const applyProps = useSelectWithApply({
102
69
  optionsListProps: {
103
70
  ...(optionsListProps as AnyObject),
@@ -113,9 +80,14 @@ export const SelectMobile = forwardRef(
113
80
  showSelectAll,
114
81
  });
115
82
 
83
+ const bottomAddons = useWithApplyHook && showHeaderWithSelectAll && (
84
+ <Header {...applyProps.optionsListProps.headerProps} mobile={true} />
85
+ );
86
+
116
87
  return (
117
- <BaseSelectMobile
88
+ <BaseSelect
118
89
  ref={ref}
90
+ view='mobile'
119
91
  autocomplete={autocomplete}
120
92
  multiple={multiple}
121
93
  allowUnselect={allowUnselect}
@@ -136,19 +108,28 @@ export const SelectMobile = forwardRef(
136
108
  Optgroup={Optgroup}
137
109
  Option={Option}
138
110
  Search={Search}
139
- isBottomSheet={true}
111
+ isBottomSheet={isBottomSheet}
140
112
  options={options}
141
113
  selected={selected}
142
114
  onChange={onChange}
143
115
  OptionsList={OptionsList}
144
116
  showSearch={showSearch}
145
117
  searchProps={searchProps}
146
- bottomSheetProps={{
147
- bottomAddons: useWithApplyHook && showHeaderWithSelectAll && (
148
- <Header {...applyProps.optionsListProps.headerProps} mobile={true} />
149
- ),
150
- ...bottomSheetProps,
151
- }}
118
+ BottomSheet={BottomSheet}
119
+ ModalMobile={ModalMobile}
120
+ {...(isBottomSheet
121
+ ? {
122
+ bottomSheetProps: {
123
+ bottomAddons,
124
+ ...typedRestBottomSheetProps.bottomSheetProps,
125
+ },
126
+ }
127
+ : {
128
+ modalHeaderProps: {
129
+ bottomAddons,
130
+ ...typedRestModalProps.modalHeaderProps,
131
+ },
132
+ })}
152
133
  optionsListProps={optionsListProps}
153
134
  {...restProps}
154
135
  {...(useWithApplyHook && applyProps)}