@alfalab/core-components 44.5.1-beta.0 → 44.5.1-beta.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 (277) hide show
  1. package/bottom-sheet/cssm/index.module.css +1 -0
  2. package/bottom-sheet/esm/index.css +1 -0
  3. package/bottom-sheet/index.css +1 -0
  4. package/bottom-sheet/modern/index.css +1 -0
  5. package/confirmation/component.responsive.js +1 -1
  6. package/confirmation/components/base-confirmation/component.js +1 -1
  7. package/confirmation/components/base-confirmation/index.js +1 -1
  8. package/confirmation/components/index.js +1 -1
  9. package/confirmation/components/screens/index.js +1 -1
  10. package/confirmation/components/screens/initial/component.js +1 -1
  11. package/confirmation/components/screens/initial/countdown-section.js +1 -1
  12. package/confirmation/components/screens/initial/index.js +1 -1
  13. package/confirmation/desktop/component.desktop.js +1 -1
  14. package/confirmation/desktop/index.js +1 -1
  15. package/confirmation/esm/component.responsive.js +1 -1
  16. package/confirmation/esm/components/base-confirmation/component.js +1 -1
  17. package/confirmation/esm/components/base-confirmation/index.js +1 -1
  18. package/confirmation/esm/components/index.js +1 -1
  19. package/confirmation/esm/components/screens/index.js +1 -1
  20. package/confirmation/esm/components/screens/initial/component.js +1 -1
  21. package/confirmation/esm/components/screens/initial/countdown-section.js +1 -1
  22. package/confirmation/esm/components/screens/initial/index.js +1 -1
  23. package/confirmation/esm/desktop/component.desktop.js +1 -1
  24. package/confirmation/esm/desktop/index.js +1 -1
  25. package/confirmation/esm/index.js +1 -1
  26. package/confirmation/esm/mobile/component.mobile.js +1 -1
  27. package/confirmation/esm/mobile/index.js +1 -1
  28. package/confirmation/esm/shared/index.js +1 -1
  29. package/confirmation/index.js +1 -1
  30. package/confirmation/mobile/component.mobile.js +1 -1
  31. package/confirmation/mobile/index.js +1 -1
  32. package/confirmation/modern/component.responsive.js +1 -1
  33. package/confirmation/modern/components/base-confirmation/component.js +1 -1
  34. package/confirmation/modern/components/base-confirmation/index.js +1 -1
  35. package/confirmation/modern/components/index.js +1 -1
  36. package/confirmation/modern/components/screens/index.js +1 -1
  37. package/confirmation/modern/components/screens/initial/component.js +1 -1
  38. package/confirmation/modern/components/screens/initial/countdown-section.js +1 -1
  39. package/confirmation/modern/components/screens/initial/index.js +1 -1
  40. package/confirmation/modern/desktop/component.desktop.js +1 -1
  41. package/confirmation/modern/desktop/index.js +1 -1
  42. package/confirmation/modern/index.js +1 -1
  43. package/confirmation/modern/mobile/component.mobile.js +1 -1
  44. package/confirmation/modern/mobile/index.js +1 -1
  45. package/confirmation/modern/shared/index.js +1 -1
  46. package/confirmation/shared/index.js +1 -1
  47. package/modal/Component.responsive.js +2 -2
  48. package/modal/components/content/Component.js +1 -1
  49. package/modal/components/controls/Component.js +2 -2
  50. package/modal/components/controls/index.js +2 -2
  51. package/modal/components/footer/Component.js +2 -2
  52. package/modal/components/header/Component.js +1 -1
  53. package/modal/desktop/Component.desktop.js +2 -2
  54. package/modal/desktop/index.js +2 -2
  55. package/modal/esm/Component.responsive.js +2 -2
  56. package/modal/esm/components/content/Component.js +1 -1
  57. package/modal/esm/components/controls/Component.js +2 -2
  58. package/modal/esm/components/controls/index.js +2 -2
  59. package/modal/esm/components/footer/Component.js +2 -2
  60. package/modal/esm/components/header/Component.js +1 -1
  61. package/modal/esm/desktop/Component.desktop.js +2 -2
  62. package/modal/esm/desktop/index.js +2 -2
  63. package/modal/esm/index-a5b021bd.d.ts +1 -1
  64. package/modal/esm/index.js +2 -2
  65. package/modal/esm/mobile/Component.mobile.js +2 -2
  66. package/modal/esm/mobile/index.js +2 -2
  67. package/modal/esm/shared/index.js +1 -1
  68. package/modal/esm/utils.js +1 -1
  69. package/modal/index-a5b021bd.d.ts +1 -1
  70. package/modal/index.js +2 -2
  71. package/modal/mobile/Component.mobile.js +2 -2
  72. package/modal/mobile/index.js +2 -2
  73. package/modal/modern/Component.responsive.js +2 -2
  74. package/modal/modern/components/content/Component.js +1 -1
  75. package/modal/modern/components/controls/Component.js +2 -2
  76. package/modal/modern/components/controls/index.js +2 -2
  77. package/modal/modern/components/footer/Component.js +2 -2
  78. package/modal/modern/components/header/Component.js +1 -1
  79. package/modal/modern/desktop/Component.desktop.js +2 -2
  80. package/modal/modern/desktop/index.js +2 -2
  81. package/modal/modern/index-a5b021bd.d.ts +1 -1
  82. package/modal/modern/index.js +2 -2
  83. package/modal/modern/mobile/Component.mobile.js +2 -2
  84. package/modal/modern/mobile/index.js +2 -2
  85. package/modal/modern/shared/index.js +1 -1
  86. package/modal/modern/utils.js +1 -1
  87. package/modal/shared/index.js +1 -1
  88. package/modal/utils.js +1 -1
  89. package/package.json +2 -2
  90. package/pure-cell/component.js +1 -1
  91. package/pure-cell/components/content/component.js +1 -1
  92. package/pure-cell/components/content/index.d.ts +1 -1
  93. package/pure-cell/components/content/index.js +1 -1
  94. package/pure-cell/components/main/component.js +1 -1
  95. package/pure-cell/components/main/index.d.ts +1 -1
  96. package/pure-cell/components/main/index.js +1 -1
  97. package/pure-cell/components/text/component.js +1 -1
  98. package/pure-cell/components/text/index.d.ts +1 -1
  99. package/pure-cell/components/text/index.js +1 -1
  100. package/pure-cell/esm/component.js +1 -1
  101. package/pure-cell/esm/components/content/component.js +1 -1
  102. package/pure-cell/esm/components/content/index.d.ts +1 -1
  103. package/pure-cell/esm/components/content/index.js +1 -1
  104. package/pure-cell/esm/components/main/component.js +1 -1
  105. package/pure-cell/esm/components/main/index.d.ts +1 -1
  106. package/pure-cell/esm/components/main/index.js +1 -1
  107. package/pure-cell/esm/components/text/component.js +1 -1
  108. package/pure-cell/esm/components/text/index.d.ts +1 -1
  109. package/pure-cell/esm/components/text/index.js +1 -1
  110. package/pure-cell/esm/index.js +1 -1
  111. package/pure-cell/index.js +1 -1
  112. package/pure-cell/modern/component.js +1 -1
  113. package/pure-cell/modern/components/content/component.js +1 -1
  114. package/pure-cell/modern/components/content/index.d.ts +1 -1
  115. package/pure-cell/modern/components/content/index.js +1 -1
  116. package/pure-cell/modern/components/main/component.js +1 -1
  117. package/pure-cell/modern/components/main/index.d.ts +1 -1
  118. package/pure-cell/modern/components/main/index.js +1 -1
  119. package/pure-cell/modern/components/text/component.js +1 -1
  120. package/pure-cell/modern/components/text/index.d.ts +1 -1
  121. package/pure-cell/modern/components/text/index.js +1 -1
  122. package/pure-cell/modern/index.js +1 -1
  123. package/select/Component.responsive.js +1 -1
  124. package/select/components/base-select/Component.js +41 -37
  125. package/select/cssm/components/base-select/Component.js +41 -37
  126. package/select/esm/Component.responsive.js +1 -1
  127. package/select/esm/components/base-select/Component.js +43 -39
  128. package/select/esm/index.js +1 -1
  129. package/select/esm/mobile/Component.mobile.js +1 -1
  130. package/select/esm/mobile/Component.modal.mobile.js +1 -1
  131. package/select/esm/mobile/index.js +1 -1
  132. package/select/esm/presets/index.js +1 -1
  133. package/select/esm/presets/useSelectWithApply/hook.js +1 -1
  134. package/select/esm/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
  135. package/select/esm/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  136. package/select/esm/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
  137. package/select/esm/shared/index.js +1 -1
  138. package/select/index.js +1 -1
  139. package/select/mobile/Component.mobile.js +1 -1
  140. package/select/mobile/Component.modal.mobile.js +1 -1
  141. package/select/mobile/index.js +1 -1
  142. package/select/modern/Component.responsive.js +1 -1
  143. package/select/modern/components/base-select/Component.js +41 -36
  144. package/select/modern/index.js +1 -1
  145. package/select/modern/mobile/Component.mobile.js +1 -1
  146. package/select/modern/mobile/Component.modal.mobile.js +1 -1
  147. package/select/modern/mobile/index.js +1 -1
  148. package/select/modern/presets/index.js +1 -1
  149. package/select/modern/presets/useSelectWithApply/hook.js +1 -1
  150. package/select/modern/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
  151. package/select/modern/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  152. package/select/modern/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
  153. package/select/modern/shared/index.js +1 -1
  154. package/select/presets/index.js +1 -1
  155. package/select/presets/useSelectWithApply/hook.js +1 -1
  156. package/select/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
  157. package/select/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  158. package/select/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
  159. package/select/shared/index.js +1 -1
  160. package/select-with-tags/Component.responsive.d.ts +1 -1
  161. package/select-with-tags/components/base-select-with-tags/Component.d.ts +1 -1
  162. package/side-panel/Component.responsive.js +1 -1
  163. package/side-panel/components/controls/Component.js +1 -1
  164. package/side-panel/components/controls/index.js +1 -1
  165. package/side-panel/components/footer/Component.desktop.js +1 -1
  166. package/side-panel/components/footer/Component.js +1 -1
  167. package/side-panel/components/footer/Component.mobile.js +1 -1
  168. package/side-panel/desktop/Component.desktop.js +1 -1
  169. package/side-panel/desktop/index.js +1 -1
  170. package/side-panel/esm/Component.responsive.js +1 -1
  171. package/side-panel/esm/components/controls/Component.js +1 -1
  172. package/side-panel/esm/components/controls/index.js +1 -1
  173. package/side-panel/esm/components/footer/Component.desktop.js +1 -1
  174. package/side-panel/esm/components/footer/Component.js +1 -1
  175. package/side-panel/esm/components/footer/Component.mobile.js +1 -1
  176. package/side-panel/esm/desktop/Component.desktop.js +1 -1
  177. package/side-panel/esm/desktop/index.js +1 -1
  178. package/side-panel/esm/index.js +1 -1
  179. package/side-panel/esm/mobile/Component.mobile.js +1 -1
  180. package/side-panel/esm/mobile/index.js +1 -1
  181. package/side-panel/index.js +1 -1
  182. package/side-panel/mobile/Component.mobile.js +1 -1
  183. package/side-panel/mobile/index.js +1 -1
  184. package/side-panel/modern/Component.responsive.js +1 -1
  185. package/side-panel/modern/components/controls/Component.js +1 -1
  186. package/side-panel/modern/components/controls/index.js +1 -1
  187. package/side-panel/modern/components/footer/Component.desktop.js +1 -1
  188. package/side-panel/modern/components/footer/Component.js +1 -1
  189. package/side-panel/modern/components/footer/Component.mobile.js +1 -1
  190. package/side-panel/modern/desktop/Component.desktop.js +1 -1
  191. package/side-panel/modern/desktop/index.js +1 -1
  192. package/side-panel/modern/index.js +1 -1
  193. package/side-panel/modern/mobile/Component.mobile.js +1 -1
  194. package/side-panel/modern/mobile/index.js +1 -1
  195. package/tabs/collapsible/index.js +1 -1
  196. package/tabs/components/primary-tablist/Component.collapsible.js +1 -1
  197. package/tabs/components/primary-tablist/Component.desktop.js +1 -1
  198. package/tabs/components/primary-tablist/Component.mobile.js +1 -1
  199. package/tabs/components/primary-tablist/Component.responsive.js +1 -1
  200. package/tabs/components/secondary-tablist/Component.desktop.js +1 -1
  201. package/tabs/components/secondary-tablist/Component.mobile.js +1 -1
  202. package/tabs/components/secondary-tablist/Component.responsive.js +1 -1
  203. package/tabs/components/tabs/Component.collapsible.js +1 -1
  204. package/tabs/components/tabs/Component.desktop.js +2 -2
  205. package/tabs/components/tabs/Component.mobile.js +2 -2
  206. package/tabs/components/tabs/Component.responsive.js +2 -2
  207. package/tabs/desktop/index.js +2 -2
  208. package/tabs/esm/collapsible/index.js +1 -1
  209. package/tabs/esm/components/primary-tablist/Component.collapsible.js +1 -1
  210. package/tabs/esm/components/primary-tablist/Component.desktop.js +1 -1
  211. package/tabs/esm/components/primary-tablist/Component.mobile.js +1 -1
  212. package/tabs/esm/components/primary-tablist/Component.responsive.js +1 -1
  213. package/tabs/esm/components/secondary-tablist/Component.desktop.js +1 -1
  214. package/tabs/esm/components/secondary-tablist/Component.mobile.js +1 -1
  215. package/tabs/esm/components/secondary-tablist/Component.responsive.js +1 -1
  216. package/tabs/esm/components/tabs/Component.collapsible.js +1 -1
  217. package/tabs/esm/components/tabs/Component.desktop.js +2 -2
  218. package/tabs/esm/components/tabs/Component.mobile.js +2 -2
  219. package/tabs/esm/components/tabs/Component.responsive.js +2 -2
  220. package/tabs/esm/desktop/index.js +2 -2
  221. package/tabs/esm/index.js +2 -2
  222. package/tabs/esm/mobile/index.js +2 -2
  223. package/tabs/index.js +2 -2
  224. package/tabs/mobile/index.js +2 -2
  225. package/tabs/modern/collapsible/index.js +1 -1
  226. package/tabs/modern/components/primary-tablist/Component.collapsible.js +1 -1
  227. package/tabs/modern/components/primary-tablist/Component.desktop.js +1 -1
  228. package/tabs/modern/components/primary-tablist/Component.mobile.js +1 -1
  229. package/tabs/modern/components/primary-tablist/Component.responsive.js +1 -1
  230. package/tabs/modern/components/secondary-tablist/Component.desktop.js +1 -1
  231. package/tabs/modern/components/secondary-tablist/Component.mobile.js +1 -1
  232. package/tabs/modern/components/secondary-tablist/Component.responsive.js +1 -1
  233. package/tabs/modern/components/tabs/Component.collapsible.js +1 -1
  234. package/tabs/modern/components/tabs/Component.desktop.js +2 -2
  235. package/tabs/modern/components/tabs/Component.mobile.js +2 -2
  236. package/tabs/modern/components/tabs/Component.responsive.js +2 -2
  237. package/tabs/modern/desktop/index.js +2 -2
  238. package/tabs/modern/index.js +2 -2
  239. package/tabs/modern/mobile/index.js +2 -2
  240. package/themes/compiled/mobile-dark-bluetint.css +14 -14
  241. package/themes/dist/compiled/mobile-dark-bluetint.css +439 -439
  242. /package/confirmation/{countdown-section-0b838cbc.d.ts → countdown-section-cb907e98.d.ts} +0 -0
  243. /package/confirmation/{countdown-section-0b838cbc.js → countdown-section-cb907e98.js} +0 -0
  244. /package/confirmation/esm/{countdown-section-1f94dc48.d.ts → countdown-section-0ecb611b.d.ts} +0 -0
  245. /package/confirmation/esm/{countdown-section-1f94dc48.js → countdown-section-0ecb611b.js} +0 -0
  246. /package/confirmation/modern/{countdown-section-0e0a4d6c.d.ts → countdown-section-57a88455.d.ts} +0 -0
  247. /package/confirmation/modern/{countdown-section-0e0a4d6c.js → countdown-section-57a88455.js} +0 -0
  248. /package/modal/esm/{getDataTestId-a1bfd5bc.d.ts → getDataTestId-464d4f26.d.ts} +0 -0
  249. /package/modal/esm/{getDataTestId-a1bfd5bc.js → getDataTestId-464d4f26.js} +0 -0
  250. /package/modal/esm/{layout.module-ae61fd9a.js → layout.module-c974a98d.js} +0 -0
  251. /package/modal/{getDataTestId-21513f43.d.ts → getDataTestId-9371d9b9.d.ts} +0 -0
  252. /package/modal/{getDataTestId-21513f43.js → getDataTestId-9371d9b9.js} +0 -0
  253. /package/modal/{layout.module-a368ce4e.js → layout.module-aaea4df5.js} +0 -0
  254. /package/modal/modern/{getDataTestId-98c1ef65.d.ts → getDataTestId-3dc618ac.d.ts} +0 -0
  255. /package/modal/modern/{getDataTestId-98c1ef65.js → getDataTestId-3dc618ac.js} +0 -0
  256. /package/modal/modern/{layout.module-9e42f1af.js → layout.module-a5301ec4.js} +0 -0
  257. /package/pure-cell/{component-1e7d8bed.d.ts → component-858265bf.d.ts} +0 -0
  258. /package/pure-cell/{component-1e7d8bed.js → component-858265bf.js} +0 -0
  259. /package/pure-cell/esm/{component-41f8dfa0.d.ts → component-446f8d40.d.ts} +0 -0
  260. /package/pure-cell/esm/{component-41f8dfa0.js → component-446f8d40.js} +0 -0
  261. /package/pure-cell/modern/{component-2890e342.d.ts → component-fc4a0354.d.ts} +0 -0
  262. /package/pure-cell/modern/{component-2890e342.js → component-fc4a0354.js} +0 -0
  263. /package/select/esm/{hook-432d3089.d.ts → hook-7827df3d.d.ts} +0 -0
  264. /package/select/esm/{hook-432d3089.js → hook-7827df3d.js} +0 -0
  265. /package/select/{hook-1a09de48.d.ts → hook-c2cc0737.d.ts} +0 -0
  266. /package/select/{hook-1a09de48.js → hook-c2cc0737.js} +0 -0
  267. /package/select/modern/{hook-13eac5b3.d.ts → hook-5d0d0b8f.d.ts} +0 -0
  268. /package/select/modern/{hook-13eac5b3.js → hook-5d0d0b8f.js} +0 -0
  269. /package/side-panel/esm/{layout.module-cd17a8d9.js → layout.module-9b1b1597.js} +0 -0
  270. /package/side-panel/{layout.module-2eab8ea4.js → layout.module-63bb425f.js} +0 -0
  271. /package/side-panel/modern/{layout.module-2fbef196.js → layout.module-294dd7f0.js} +0 -0
  272. /package/tabs/esm/{index.module-ef895b4d.js → index.module-77b9e786.js} +0 -0
  273. /package/tabs/esm/{index.module-35549ec1.js → index.module-89b83942.js} +0 -0
  274. /package/tabs/{index.module-2d0a535b.js → index.module-1622ea1b.js} +0 -0
  275. /package/tabs/{index.module-86eee5e4.js → index.module-85fa7c5b.js} +0 -0
  276. /package/tabs/modern/{index.module-abc097a2.js → index.module-01921a2b.js} +0 -0
  277. /package/tabs/modern/{index.module-e2852e96.js → index.module-69b838fa.js} +0 -0
@@ -2,7 +2,7 @@ import 'react';
2
2
  import 'classnames';
3
3
  import '../../../../shared/modern';
4
4
  import '../../../../typography/modern';
5
- export { T as Text } from '../../component-2890e342.js';
5
+ export { T as Text } from '../../component-fc4a0354.js';
6
6
  import 'react-merge-refs';
7
7
  import '../../../../comment/modern';
8
8
  import '@alfalab/hooks';
@@ -1 +1 @@
1
- export * from "../../component-2890e342";
1
+ export * from "../../component-fc4a0354";
@@ -1,4 +1,4 @@
1
- export { T as Text } from '../../component-2890e342.js';
1
+ export { T as Text } from '../../component-fc4a0354.js';
2
2
  import 'react';
3
3
  import 'react-merge-refs';
4
4
  import 'classnames';
@@ -1,4 +1,4 @@
1
- export { P as PureCell } from './component-2890e342.js';
1
+ export { P as PureCell } from './component-fc4a0354.js';
2
2
  import 'react';
3
3
  import 'react-merge-refs';
4
4
  import 'classnames';
@@ -43,7 +43,7 @@ require('../base-modal');
43
43
  require('../button/mobile');
44
44
  require('./components/virtual-options-list/Component.js');
45
45
  require('react-virtual');
46
- require('./hook-1a09de48.js');
46
+ require('./hook-c2cc0737.js');
47
47
  require('./presets/useSelectWithApply/options-list-with-apply/footer/Component.js');
48
48
  require('../button/desktop');
49
49
  require('./presets/useSelectWithApply/options-list-with-apply/header/Component.js');
@@ -37,7 +37,6 @@ function (_a, ref) {
37
37
  var listRef = React.useRef(null);
38
38
  var initiatorRef = React.useRef(null);
39
39
  var searchRef = React.useRef(null);
40
- var alreadyClickedRef = React.useRef(false);
41
40
  var scrollableContainerRef = React.useRef(null);
42
41
  var onOpenRef = React.useRef(onOpen);
43
42
  var _3 = React__default.default.useState(''), searchState = _3[0], setSearchState = _3[1];
@@ -98,6 +97,24 @@ function (_a, ref) {
98
97
  isItemDisabled: isItemDisabled,
99
98
  defaultHighlightedIndex: selectedItems.length === 0 ? -1 : undefined,
100
99
  scrollIntoView: scrollIntoView,
100
+ onSelectedItemChange: function (changes) {
101
+ var selectedItem = changes.selectedItem || initiatorRef.current;
102
+ if (selectedItem && !selectedItem.disabled) {
103
+ var alreadySelected = selectedItems.includes(selectedItem);
104
+ var allowRemove = allowUnselect || (multiple && selectedItems.length > 1);
105
+ if (alreadySelected && allowRemove) {
106
+ removeSelectedItem(selectedItem);
107
+ }
108
+ if (!alreadySelected) {
109
+ if (multiple) {
110
+ addSelectedItem(selectedItem);
111
+ }
112
+ else {
113
+ setSelectedItems([selectedItem]);
114
+ }
115
+ }
116
+ }
117
+ },
101
118
  onIsOpenChange: function (changes) {
102
119
  if (onOpenRef.current) {
103
120
  /**
@@ -126,16 +143,9 @@ function (_a, ref) {
126
143
  }
127
144
  }
128
145
  },
129
- // eslint-disable-next-line complexity
130
146
  stateReducer: function (state, actionAndChanges) {
131
147
  var type = actionAndChanges.type, changes = actionAndChanges.changes;
132
- var selectedItem = changes.selectedItem;
133
148
  switch (type) {
134
- case downshift.useCombobox.stateChangeTypes.InputBlur:
135
- if (view === 'mobile') {
136
- return state;
137
- }
138
- return changes;
139
149
  case downshift.useCombobox.stateChangeTypes.InputKeyDownArrowDown:
140
150
  if (!circularNavigation && state.highlightedIndex === options.length - 1) {
141
151
  return tslib.__assign(tslib.__assign({}, changes), { highlightedIndex: state.highlightedIndex });
@@ -147,42 +157,36 @@ function (_a, ref) {
147
157
  }
148
158
  return changes;
149
159
  case downshift.useCombobox.stateChangeTypes.InputKeyDownEnter:
150
- case downshift.useCombobox.stateChangeTypes.ItemClick:
160
+ case downshift.useCombobox.stateChangeTypes.ItemClick: {
161
+ var selectedItem = changes.selectedItem;
151
162
  initiatorRef.current = selectedItem || null;
152
- if (selectedItem && !selectedItem.disabled && !alreadyClickedRef.current) {
153
- // TODO!!! Проблема downshift + React 18. ItemClick срабатывает дважды. См https://github.com/downshift-js/downshift/issues/1384
154
- if (view === 'mobile' && React__default.default.version.indexOf('18') === 0) {
155
- alreadyClickedRef.current = true;
156
- setTimeout(function () {
157
- alreadyClickedRef.current = false;
158
- });
159
- }
160
- var alreadySelected = selectedItems.includes(selectedItem);
161
- var allowRemove = allowUnselect || (multiple && selectedItems.length > 1);
162
- if (alreadySelected && allowRemove) {
163
- removeSelectedItem(selectedItem);
164
- }
165
- if (!alreadySelected) {
166
- if (multiple) {
167
- addSelectedItem(selectedItem);
168
- }
169
- else {
170
- setSelectedItems([selectedItem]);
171
- }
172
- }
173
- }
174
- return tslib.__assign(tslib.__assign({}, changes), { isOpen: !closeOnSelect || (view === 'mobile' && multiple),
163
+ return tslib.__assign(tslib.__assign({}, changes), { selectedItem: state.selectedItem === selectedItem ? null : selectedItem, isOpen: !closeOnSelect || (view === 'mobile' && multiple),
175
164
  // при closeOnSelect === false - сохраняем подсвеченный индекс
176
165
  highlightedIndex: state.isOpen && !closeOnSelect
177
166
  ? state.highlightedIndex
178
167
  : changes.highlightedIndex });
168
+ }
179
169
  default:
180
170
  return changes;
181
171
  }
182
172
  },
183
173
  }), open = _7.isOpen, getMenuProps = _7.getMenuProps, getInputProps = _7.getInputProps, getItemProps = _7.getItemProps, getLabelProps = _7.getLabelProps, highlightedIndex = _7.highlightedIndex, toggleMenu = _7.toggleMenu, openMenu = _7.openMenu, closeMenu = _7.closeMenu, setHighlightedIndex = _7.setHighlightedIndex;
184
- var menuProps = getMenuProps({ ref: listRef }, { suppressRefError: true });
174
+ React.useEffect(function () {
175
+ /*
176
+ * При изменении openProp, состояние внутри downshift в useEnhancedReducer не меняется, поэтому меняем его таким способом
177
+ * Скорее всего это исправят в будущих версиях downshift
178
+ */
179
+ if (openProp !== undefined) {
180
+ if (openProp) {
181
+ openMenu();
182
+ }
183
+ else {
184
+ closeMenu();
185
+ }
186
+ }
187
+ }, [openProp, openMenu, closeMenu]);
185
188
  var inputProps = getInputProps(getDropdownProps({ ref: mergeRefs__default.default([ref, fieldRef]) }));
189
+ var _8 = getMenuProps({ ref: listRef }, { suppressRefError: true }), menuRef = _8.ref, menuProps = tslib.__rest(_8, ["ref"]);
186
190
  var handleEntered = function (node, isAppearing) {
187
191
  var _a, _b, _c, _d, _e;
188
192
  if (showSearch)
@@ -333,7 +337,7 @@ function (_a, ref) {
333
337
  _a[mobileStyles.search] = view === 'mobile',
334
338
  _a)), ref: mergeRefs__default.default([searchRef, ((_c = searchProps === null || searchProps === void 0 ? void 0 : searchProps.componentProps) === null || _c === void 0 ? void 0 : _c.ref) || null]) })));
335
339
  };
336
- var _8 = optionsListProps, header = _8.header, emptyPlaceholder = _8.emptyPlaceholder;
340
+ var _9 = optionsListProps, header = _9.header, emptyPlaceholder = _9.emptyPlaceholder;
337
341
  var renderOptionsListHeader = function () {
338
342
  if (header || (view === 'desktop' && showSearch)) {
339
343
  return (React__default.default.createElement(React__default.default.Fragment, null,
@@ -356,7 +360,7 @@ function (_a, ref) {
356
360
  if (flatOptions.length === 0 && !showEmptyOptionsList && !showSearch)
357
361
  return null;
358
362
  var listProps = optionsListProps;
359
- return (React__default.default.createElement("div", tslib.__assign({}, menuProps, { className: cn__default.default(optionsListClassName, view === 'mobile' && mobileStyles.optionsListWrapper, view === 'desktop' && styles.optionsListWrapper) }),
363
+ return (React__default.default.createElement("div", tslib.__assign({}, menuProps, { ref: view === 'desktop' ? menuRef : undefined, className: cn__default.default(optionsListClassName, view === 'mobile' && mobileStyles.optionsListWrapper, view === 'desktop' && styles.optionsListWrapper) }),
360
364
  React__default.default.createElement(OptionsList, tslib.__assign({}, listProps, { ref: view === 'desktop' ? listProps.ref : scrollableContainerRef, setHighlightedIndex: view === 'desktop' ? setHighlightedIndex : undefined, className: cn__default.default((_a = {}, _a[mobileStyles.optionsList] = view === 'mobile', _a)), scrollbarClassName: cn__default.default((_b = {}, _b[mobileStyles.scrollbar] = view === 'mobile', _b)), optionsListWidth: optionsListWidth, flatOptions: flatOptions, highlightedIndex: highlightedIndex, open: open, size: size, options: filteredOptions, Optgroup: Optgroup, Option: Option, selectedItems: selectedItems, setSelectedItems: setSelectedItems, toggleMenu: toggleMenu, getOptionProps: getOptionProps, visibleOptions: view === 'desktop' ? visibleOptions : 0, dataTestId: coreComponentsShared.getDataTestId(dataTestId, 'options-list'), header: renderOptionsListHeader(), optionGroupClassName: cn__default.default(optionGroupClassName, (_c = {},
361
365
  _c[mobileStyles.optionGroup] = view === 'mobile',
362
366
  _c)), emptyPlaceholder: renderEmptyPlaceholder(), onScroll: onScroll })),
@@ -370,7 +374,7 @@ function (_a, ref) {
370
374
  };
371
375
  var renderInBottomSheet = function () {
372
376
  if (!nativeSelect && BottomSheet) {
373
- return (React__default.default.createElement(BottomSheet, tslib.__assign({ dataTestId: coreComponentsShared.getDataTestId(dataTestId, 'bottom-sheet'), open: open, className: mobileStyles.sheet, contentClassName: mobileStyles.sheetContent, containerClassName: mobileStyles.sheetContainer, title: label || placeholder, actionButton: footer, stickyHeader: true, hasCloser: true, swipeable: swipeable, initialHeight: showSearch ? 'full' : 'default' }, bottomSheetProps, { scrollableContainerRef: scrollableContainerRef, onClose: function () {
377
+ return (React__default.default.createElement(BottomSheet, tslib.__assign({ dataTestId: coreComponentsShared.getDataTestId(dataTestId, 'bottom-sheet'), open: open, className: mobileStyles.sheet, contentClassName: mobileStyles.sheetContent, containerClassName: mobileStyles.sheetContainer, title: label || placeholder, actionButton: footer, stickyHeader: true, hasCloser: true, swipeable: swipeable, initialHeight: showSearch ? 'full' : 'default' }, bottomSheetProps, { sheetContainerRef: menuRef, scrollableContainerRef: scrollableContainerRef, onClose: function () {
374
378
  var _a;
375
379
  closeMenu();
376
380
  (_a = bottomSheetProps === null || bottomSheetProps === void 0 ? void 0 : bottomSheetProps.onClose) === null || _a === void 0 ? void 0 : _a.call(bottomSheetProps);
@@ -382,7 +386,7 @@ function (_a, ref) {
382
386
  };
383
387
  var renderInModalMobile = function () {
384
388
  if (!nativeSelect && ModalMobile) {
385
- return (React__default.default.createElement(ModalMobile, tslib.__assign({ open: open, hasCloser: true }, modalProps, { onClose: function () {
389
+ return (React__default.default.createElement(ModalMobile, tslib.__assign({ open: open, hasCloser: true }, modalProps, { componentRef: menuRef, onClose: function () {
386
390
  var _a;
387
391
  var args = [];
388
392
  for (var _i = 0; _i < arguments.length; _i++) {
@@ -35,7 +35,6 @@ function (_a, ref) {
35
35
  var listRef = React.useRef(null);
36
36
  var initiatorRef = React.useRef(null);
37
37
  var searchRef = React.useRef(null);
38
- var alreadyClickedRef = React.useRef(false);
39
38
  var scrollableContainerRef = React.useRef(null);
40
39
  var onOpenRef = React.useRef(onOpen);
41
40
  var _3 = React__default.default.useState(''), searchState = _3[0], setSearchState = _3[1];
@@ -96,6 +95,24 @@ function (_a, ref) {
96
95
  isItemDisabled: isItemDisabled,
97
96
  defaultHighlightedIndex: selectedItems.length === 0 ? -1 : undefined,
98
97
  scrollIntoView: scrollIntoView,
98
+ onSelectedItemChange: function (changes) {
99
+ var selectedItem = changes.selectedItem || initiatorRef.current;
100
+ if (selectedItem && !selectedItem.disabled) {
101
+ var alreadySelected = selectedItems.includes(selectedItem);
102
+ var allowRemove = allowUnselect || (multiple && selectedItems.length > 1);
103
+ if (alreadySelected && allowRemove) {
104
+ removeSelectedItem(selectedItem);
105
+ }
106
+ if (!alreadySelected) {
107
+ if (multiple) {
108
+ addSelectedItem(selectedItem);
109
+ }
110
+ else {
111
+ setSelectedItems([selectedItem]);
112
+ }
113
+ }
114
+ }
115
+ },
99
116
  onIsOpenChange: function (changes) {
100
117
  if (onOpenRef.current) {
101
118
  /**
@@ -124,16 +141,9 @@ function (_a, ref) {
124
141
  }
125
142
  }
126
143
  },
127
- // eslint-disable-next-line complexity
128
144
  stateReducer: function (state, actionAndChanges) {
129
145
  var type = actionAndChanges.type, changes = actionAndChanges.changes;
130
- var selectedItem = changes.selectedItem;
131
146
  switch (type) {
132
- case downshift.useCombobox.stateChangeTypes.InputBlur:
133
- if (view === 'mobile') {
134
- return state;
135
- }
136
- return changes;
137
147
  case downshift.useCombobox.stateChangeTypes.InputKeyDownArrowDown:
138
148
  if (!circularNavigation && state.highlightedIndex === options.length - 1) {
139
149
  return tslib.__assign(tslib.__assign({}, changes), { highlightedIndex: state.highlightedIndex });
@@ -145,42 +155,36 @@ function (_a, ref) {
145
155
  }
146
156
  return changes;
147
157
  case downshift.useCombobox.stateChangeTypes.InputKeyDownEnter:
148
- case downshift.useCombobox.stateChangeTypes.ItemClick:
158
+ case downshift.useCombobox.stateChangeTypes.ItemClick: {
159
+ var selectedItem = changes.selectedItem;
149
160
  initiatorRef.current = selectedItem || null;
150
- if (selectedItem && !selectedItem.disabled && !alreadyClickedRef.current) {
151
- // TODO!!! Проблема downshift + React 18. ItemClick срабатывает дважды. См https://github.com/downshift-js/downshift/issues/1384
152
- if (view === 'mobile' && React__default.default.version.indexOf('18') === 0) {
153
- alreadyClickedRef.current = true;
154
- setTimeout(function () {
155
- alreadyClickedRef.current = false;
156
- });
157
- }
158
- var alreadySelected = selectedItems.includes(selectedItem);
159
- var allowRemove = allowUnselect || (multiple && selectedItems.length > 1);
160
- if (alreadySelected && allowRemove) {
161
- removeSelectedItem(selectedItem);
162
- }
163
- if (!alreadySelected) {
164
- if (multiple) {
165
- addSelectedItem(selectedItem);
166
- }
167
- else {
168
- setSelectedItems([selectedItem]);
169
- }
170
- }
171
- }
172
- return tslib.__assign(tslib.__assign({}, changes), { isOpen: !closeOnSelect || (view === 'mobile' && multiple),
161
+ return tslib.__assign(tslib.__assign({}, changes), { selectedItem: state.selectedItem === selectedItem ? null : selectedItem, isOpen: !closeOnSelect || (view === 'mobile' && multiple),
173
162
  // при closeOnSelect === false - сохраняем подсвеченный индекс
174
163
  highlightedIndex: state.isOpen && !closeOnSelect
175
164
  ? state.highlightedIndex
176
165
  : changes.highlightedIndex });
166
+ }
177
167
  default:
178
168
  return changes;
179
169
  }
180
170
  },
181
171
  }), open = _7.isOpen, getMenuProps = _7.getMenuProps, getInputProps = _7.getInputProps, getItemProps = _7.getItemProps, getLabelProps = _7.getLabelProps, highlightedIndex = _7.highlightedIndex, toggleMenu = _7.toggleMenu, openMenu = _7.openMenu, closeMenu = _7.closeMenu, setHighlightedIndex = _7.setHighlightedIndex;
182
- var menuProps = getMenuProps({ ref: listRef }, { suppressRefError: true });
172
+ React.useEffect(function () {
173
+ /*
174
+ * При изменении openProp, состояние внутри downshift в useEnhancedReducer не меняется, поэтому меняем его таким способом
175
+ * Скорее всего это исправят в будущих версиях downshift
176
+ */
177
+ if (openProp !== undefined) {
178
+ if (openProp) {
179
+ openMenu();
180
+ }
181
+ else {
182
+ closeMenu();
183
+ }
184
+ }
185
+ }, [openProp, openMenu, closeMenu]);
183
186
  var inputProps = getInputProps(getDropdownProps({ ref: mergeRefs__default.default([ref, fieldRef]) }));
187
+ var _8 = getMenuProps({ ref: listRef }, { suppressRefError: true }), menuRef = _8.ref, menuProps = tslib.__rest(_8, ["ref"]);
184
188
  var handleEntered = function (node, isAppearing) {
185
189
  var _a, _b, _c, _d, _e;
186
190
  if (showSearch)
@@ -331,7 +335,7 @@ function (_a, ref) {
331
335
  _a[mobileStyles__default.default.search] = view === 'mobile',
332
336
  _a)), ref: mergeRefs__default.default([searchRef, ((_c = searchProps === null || searchProps === void 0 ? void 0 : searchProps.componentProps) === null || _c === void 0 ? void 0 : _c.ref) || null]) })));
333
337
  };
334
- var _8 = optionsListProps, header = _8.header, emptyPlaceholder = _8.emptyPlaceholder;
338
+ var _9 = optionsListProps, header = _9.header, emptyPlaceholder = _9.emptyPlaceholder;
335
339
  var renderOptionsListHeader = function () {
336
340
  if (header || (view === 'desktop' && showSearch)) {
337
341
  return (React__default.default.createElement(React__default.default.Fragment, null,
@@ -354,7 +358,7 @@ function (_a, ref) {
354
358
  if (flatOptions.length === 0 && !showEmptyOptionsList && !showSearch)
355
359
  return null;
356
360
  var listProps = optionsListProps;
357
- return (React__default.default.createElement("div", tslib.__assign({}, menuProps, { className: cn__default.default(optionsListClassName, view === 'mobile' && mobileStyles__default.default.optionsListWrapper, view === 'desktop' && styles__default.default.optionsListWrapper) }),
361
+ return (React__default.default.createElement("div", tslib.__assign({}, menuProps, { ref: view === 'desktop' ? menuRef : undefined, className: cn__default.default(optionsListClassName, view === 'mobile' && mobileStyles__default.default.optionsListWrapper, view === 'desktop' && styles__default.default.optionsListWrapper) }),
358
362
  React__default.default.createElement(OptionsList, tslib.__assign({}, listProps, { ref: view === 'desktop' ? listProps.ref : scrollableContainerRef, setHighlightedIndex: view === 'desktop' ? setHighlightedIndex : undefined, className: cn__default.default((_a = {}, _a[mobileStyles__default.default.optionsList] = view === 'mobile', _a)), scrollbarClassName: cn__default.default((_b = {}, _b[mobileStyles__default.default.scrollbar] = view === 'mobile', _b)), optionsListWidth: optionsListWidth, flatOptions: flatOptions, highlightedIndex: highlightedIndex, open: open, size: size, options: filteredOptions, Optgroup: Optgroup, Option: Option, selectedItems: selectedItems, setSelectedItems: setSelectedItems, toggleMenu: toggleMenu, getOptionProps: getOptionProps, visibleOptions: view === 'desktop' ? visibleOptions : 0, dataTestId: coreComponentsShared.getDataTestId(dataTestId, 'options-list'), header: renderOptionsListHeader(), optionGroupClassName: cn__default.default(optionGroupClassName, (_c = {},
359
363
  _c[mobileStyles__default.default.optionGroup] = view === 'mobile',
360
364
  _c)), emptyPlaceholder: renderEmptyPlaceholder(), onScroll: onScroll })),
@@ -368,7 +372,7 @@ function (_a, ref) {
368
372
  };
369
373
  var renderInBottomSheet = function () {
370
374
  if (!nativeSelect && BottomSheet) {
371
- return (React__default.default.createElement(BottomSheet, tslib.__assign({ dataTestId: coreComponentsShared.getDataTestId(dataTestId, 'bottom-sheet'), open: open, className: mobileStyles__default.default.sheet, contentClassName: mobileStyles__default.default.sheetContent, containerClassName: mobileStyles__default.default.sheetContainer, title: label || placeholder, actionButton: footer, stickyHeader: true, hasCloser: true, swipeable: swipeable, initialHeight: showSearch ? 'full' : 'default' }, bottomSheetProps, { scrollableContainerRef: scrollableContainerRef, onClose: function () {
375
+ return (React__default.default.createElement(BottomSheet, tslib.__assign({ dataTestId: coreComponentsShared.getDataTestId(dataTestId, 'bottom-sheet'), open: open, className: mobileStyles__default.default.sheet, contentClassName: mobileStyles__default.default.sheetContent, containerClassName: mobileStyles__default.default.sheetContainer, title: label || placeholder, actionButton: footer, stickyHeader: true, hasCloser: true, swipeable: swipeable, initialHeight: showSearch ? 'full' : 'default' }, bottomSheetProps, { sheetContainerRef: menuRef, scrollableContainerRef: scrollableContainerRef, onClose: function () {
372
376
  var _a;
373
377
  closeMenu();
374
378
  (_a = bottomSheetProps === null || bottomSheetProps === void 0 ? void 0 : bottomSheetProps.onClose) === null || _a === void 0 ? void 0 : _a.call(bottomSheetProps);
@@ -380,7 +384,7 @@ function (_a, ref) {
380
384
  };
381
385
  var renderInModalMobile = function () {
382
386
  if (!nativeSelect && ModalMobile) {
383
- return (React__default.default.createElement(ModalMobile, tslib.__assign({ open: open, hasCloser: true }, modalProps, { onClose: function () {
387
+ return (React__default.default.createElement(ModalMobile, tslib.__assign({ open: open, hasCloser: true }, modalProps, { componentRef: menuRef, onClose: function () {
384
388
  var _a;
385
389
  var args = [];
386
390
  for (var _i = 0; _i < arguments.length; _i++) {
@@ -39,7 +39,7 @@ import '../../base-modal/esm';
39
39
  import '../../button/esm/mobile';
40
40
  import './components/virtual-options-list/Component.js';
41
41
  import 'react-virtual';
42
- import './hook-432d3089.js';
42
+ import './hook-7827df3d.js';
43
43
  import './presets/useSelectWithApply/options-list-with-apply/footer/Component.js';
44
44
  import '../../button/esm/desktop';
45
45
  import './presets/useSelectWithApply/options-list-with-apply/header/Component.js';
@@ -1,5 +1,5 @@
1
- import { __assign, __spreadArray } from 'tslib';
2
- import React, { forwardRef, useRef, useMemo, useCallback, useEffect } from 'react';
1
+ import { __assign, __rest, __spreadArray } from 'tslib';
2
+ import React, { forwardRef, useRef, useMemo, useEffect, useCallback } from 'react';
3
3
  import mergeRefs from 'react-merge-refs';
4
4
  import { ResizeObserver } from '@juggle/resize-observer';
5
5
  import cn from 'classnames';
@@ -29,7 +29,6 @@ function (_a, ref) {
29
29
  var listRef = useRef(null);
30
30
  var initiatorRef = useRef(null);
31
31
  var searchRef = useRef(null);
32
- var alreadyClickedRef = useRef(false);
33
32
  var scrollableContainerRef = useRef(null);
34
33
  var onOpenRef = useRef(onOpen);
35
34
  var _3 = React.useState(''), searchState = _3[0], setSearchState = _3[1];
@@ -90,6 +89,24 @@ function (_a, ref) {
90
89
  isItemDisabled: isItemDisabled,
91
90
  defaultHighlightedIndex: selectedItems.length === 0 ? -1 : undefined,
92
91
  scrollIntoView: scrollIntoView,
92
+ onSelectedItemChange: function (changes) {
93
+ var selectedItem = changes.selectedItem || initiatorRef.current;
94
+ if (selectedItem && !selectedItem.disabled) {
95
+ var alreadySelected = selectedItems.includes(selectedItem);
96
+ var allowRemove = allowUnselect || (multiple && selectedItems.length > 1);
97
+ if (alreadySelected && allowRemove) {
98
+ removeSelectedItem(selectedItem);
99
+ }
100
+ if (!alreadySelected) {
101
+ if (multiple) {
102
+ addSelectedItem(selectedItem);
103
+ }
104
+ else {
105
+ setSelectedItems([selectedItem]);
106
+ }
107
+ }
108
+ }
109
+ },
93
110
  onIsOpenChange: function (changes) {
94
111
  if (onOpenRef.current) {
95
112
  /**
@@ -118,16 +135,9 @@ function (_a, ref) {
118
135
  }
119
136
  }
120
137
  },
121
- // eslint-disable-next-line complexity
122
138
  stateReducer: function (state, actionAndChanges) {
123
139
  var type = actionAndChanges.type, changes = actionAndChanges.changes;
124
- var selectedItem = changes.selectedItem;
125
140
  switch (type) {
126
- case useCombobox.stateChangeTypes.InputBlur:
127
- if (view === 'mobile') {
128
- return state;
129
- }
130
- return changes;
131
141
  case useCombobox.stateChangeTypes.InputKeyDownArrowDown:
132
142
  if (!circularNavigation && state.highlightedIndex === options.length - 1) {
133
143
  return __assign(__assign({}, changes), { highlightedIndex: state.highlightedIndex });
@@ -139,42 +149,36 @@ function (_a, ref) {
139
149
  }
140
150
  return changes;
141
151
  case useCombobox.stateChangeTypes.InputKeyDownEnter:
142
- case useCombobox.stateChangeTypes.ItemClick:
152
+ case useCombobox.stateChangeTypes.ItemClick: {
153
+ var selectedItem = changes.selectedItem;
143
154
  initiatorRef.current = selectedItem || null;
144
- if (selectedItem && !selectedItem.disabled && !alreadyClickedRef.current) {
145
- // TODO!!! Проблема downshift + React 18. ItemClick срабатывает дважды. См https://github.com/downshift-js/downshift/issues/1384
146
- if (view === 'mobile' && React.version.indexOf('18') === 0) {
147
- alreadyClickedRef.current = true;
148
- setTimeout(function () {
149
- alreadyClickedRef.current = false;
150
- });
151
- }
152
- var alreadySelected = selectedItems.includes(selectedItem);
153
- var allowRemove = allowUnselect || (multiple && selectedItems.length > 1);
154
- if (alreadySelected && allowRemove) {
155
- removeSelectedItem(selectedItem);
156
- }
157
- if (!alreadySelected) {
158
- if (multiple) {
159
- addSelectedItem(selectedItem);
160
- }
161
- else {
162
- setSelectedItems([selectedItem]);
163
- }
164
- }
165
- }
166
- return __assign(__assign({}, changes), { isOpen: !closeOnSelect || (view === 'mobile' && multiple),
155
+ return __assign(__assign({}, changes), { selectedItem: state.selectedItem === selectedItem ? null : selectedItem, isOpen: !closeOnSelect || (view === 'mobile' && multiple),
167
156
  // при closeOnSelect === false - сохраняем подсвеченный индекс
168
157
  highlightedIndex: state.isOpen && !closeOnSelect
169
158
  ? state.highlightedIndex
170
159
  : changes.highlightedIndex });
160
+ }
171
161
  default:
172
162
  return changes;
173
163
  }
174
164
  },
175
165
  }), open = _7.isOpen, getMenuProps = _7.getMenuProps, getInputProps = _7.getInputProps, getItemProps = _7.getItemProps, getLabelProps = _7.getLabelProps, highlightedIndex = _7.highlightedIndex, toggleMenu = _7.toggleMenu, openMenu = _7.openMenu, closeMenu = _7.closeMenu, setHighlightedIndex = _7.setHighlightedIndex;
176
- var menuProps = getMenuProps({ ref: listRef }, { suppressRefError: true });
166
+ useEffect(function () {
167
+ /*
168
+ * При изменении openProp, состояние внутри downshift в useEnhancedReducer не меняется, поэтому меняем его таким способом
169
+ * Скорее всего это исправят в будущих версиях downshift
170
+ */
171
+ if (openProp !== undefined) {
172
+ if (openProp) {
173
+ openMenu();
174
+ }
175
+ else {
176
+ closeMenu();
177
+ }
178
+ }
179
+ }, [openProp, openMenu, closeMenu]);
177
180
  var inputProps = getInputProps(getDropdownProps({ ref: mergeRefs([ref, fieldRef]) }));
181
+ var _8 = getMenuProps({ ref: listRef }, { suppressRefError: true }), menuRef = _8.ref, menuProps = __rest(_8, ["ref"]);
178
182
  var handleEntered = function (node, isAppearing) {
179
183
  var _a, _b, _c, _d, _e;
180
184
  if (showSearch)
@@ -325,7 +329,7 @@ function (_a, ref) {
325
329
  _a[mobileStyles.search] = view === 'mobile',
326
330
  _a)), ref: mergeRefs([searchRef, ((_c = searchProps === null || searchProps === void 0 ? void 0 : searchProps.componentProps) === null || _c === void 0 ? void 0 : _c.ref) || null]) })));
327
331
  };
328
- var _8 = optionsListProps, header = _8.header, emptyPlaceholder = _8.emptyPlaceholder;
332
+ var _9 = optionsListProps, header = _9.header, emptyPlaceholder = _9.emptyPlaceholder;
329
333
  var renderOptionsListHeader = function () {
330
334
  if (header || (view === 'desktop' && showSearch)) {
331
335
  return (React.createElement(React.Fragment, null,
@@ -348,7 +352,7 @@ function (_a, ref) {
348
352
  if (flatOptions.length === 0 && !showEmptyOptionsList && !showSearch)
349
353
  return null;
350
354
  var listProps = optionsListProps;
351
- return (React.createElement("div", __assign({}, menuProps, { className: cn(optionsListClassName, view === 'mobile' && mobileStyles.optionsListWrapper, view === 'desktop' && styles.optionsListWrapper) }),
355
+ return (React.createElement("div", __assign({}, menuProps, { ref: view === 'desktop' ? menuRef : undefined, className: cn(optionsListClassName, view === 'mobile' && mobileStyles.optionsListWrapper, view === 'desktop' && styles.optionsListWrapper) }),
352
356
  React.createElement(OptionsList, __assign({}, listProps, { ref: view === 'desktop' ? listProps.ref : scrollableContainerRef, setHighlightedIndex: view === 'desktop' ? setHighlightedIndex : undefined, className: cn((_a = {}, _a[mobileStyles.optionsList] = view === 'mobile', _a)), scrollbarClassName: cn((_b = {}, _b[mobileStyles.scrollbar] = view === 'mobile', _b)), optionsListWidth: optionsListWidth, flatOptions: flatOptions, highlightedIndex: highlightedIndex, open: open, size: size, options: filteredOptions, Optgroup: Optgroup, Option: Option, selectedItems: selectedItems, setSelectedItems: setSelectedItems, toggleMenu: toggleMenu, getOptionProps: getOptionProps, visibleOptions: view === 'desktop' ? visibleOptions : 0, dataTestId: getDataTestId(dataTestId, 'options-list'), header: renderOptionsListHeader(), optionGroupClassName: cn(optionGroupClassName, (_c = {},
353
357
  _c[mobileStyles.optionGroup] = view === 'mobile',
354
358
  _c)), emptyPlaceholder: renderEmptyPlaceholder(), onScroll: onScroll })),
@@ -362,7 +366,7 @@ function (_a, ref) {
362
366
  };
363
367
  var renderInBottomSheet = function () {
364
368
  if (!nativeSelect && BottomSheet) {
365
- return (React.createElement(BottomSheet, __assign({ dataTestId: getDataTestId(dataTestId, 'bottom-sheet'), open: open, className: mobileStyles.sheet, contentClassName: mobileStyles.sheetContent, containerClassName: mobileStyles.sheetContainer, title: label || placeholder, actionButton: footer, stickyHeader: true, hasCloser: true, swipeable: swipeable, initialHeight: showSearch ? 'full' : 'default' }, bottomSheetProps, { scrollableContainerRef: scrollableContainerRef, onClose: function () {
369
+ return (React.createElement(BottomSheet, __assign({ dataTestId: getDataTestId(dataTestId, 'bottom-sheet'), open: open, className: mobileStyles.sheet, contentClassName: mobileStyles.sheetContent, containerClassName: mobileStyles.sheetContainer, title: label || placeholder, actionButton: footer, stickyHeader: true, hasCloser: true, swipeable: swipeable, initialHeight: showSearch ? 'full' : 'default' }, bottomSheetProps, { sheetContainerRef: menuRef, scrollableContainerRef: scrollableContainerRef, onClose: function () {
366
370
  var _a;
367
371
  closeMenu();
368
372
  (_a = bottomSheetProps === null || bottomSheetProps === void 0 ? void 0 : bottomSheetProps.onClose) === null || _a === void 0 ? void 0 : _a.call(bottomSheetProps);
@@ -374,7 +378,7 @@ function (_a, ref) {
374
378
  };
375
379
  var renderInModalMobile = function () {
376
380
  if (!nativeSelect && ModalMobile) {
377
- return (React.createElement(ModalMobile, __assign({ open: open, hasCloser: true }, modalProps, { onClose: function () {
381
+ return (React.createElement(ModalMobile, __assign({ open: open, hasCloser: true }, modalProps, { componentRef: menuRef, onClose: function () {
378
382
  var _a;
379
383
  var args = [];
380
384
  for (var _i = 0; _i < arguments.length; _i++) {
@@ -39,7 +39,7 @@ import '../../base-modal/esm';
39
39
  import '../../button/esm/mobile';
40
40
  import './components/virtual-options-list/Component.js';
41
41
  import 'react-virtual';
42
- import './hook-432d3089.js';
42
+ import './hook-7827df3d.js';
43
43
  import './presets/useSelectWithApply/options-list-with-apply/footer/Component.js';
44
44
  import '../../button/esm/desktop';
45
45
  import './presets/useSelectWithApply/options-list-with-apply/header/Component.js';
@@ -12,7 +12,7 @@ import { Option } from '../components/option/Component.js';
12
12
  import { OptionsList } from '../components/options-list/Component.js';
13
13
  import { Search } from '../components/search/Component.js';
14
14
  import { VirtualOptionsList } from '../components/virtual-options-list/Component.js';
15
- import { u as useSelectWithApply } from '../hook-432d3089.js';
15
+ import { u as useSelectWithApply } from '../hook-7827df3d.js';
16
16
  import { Header } from '../presets/useSelectWithApply/options-list-with-apply/header/Component.js';
17
17
  import 'classnames';
18
18
  import '@alfalab/icons-glyph/ChevronDownMIcon';
@@ -35,7 +35,7 @@ import '../../../input/esm';
35
35
  import '@alfalab/icons-glyph/MagnifierMIcon';
36
36
  import '../components/virtual-options-list/Component.js';
37
37
  import 'react-virtual';
38
- import '../hook-432d3089.js';
38
+ import '../hook-7827df3d.js';
39
39
  import '../presets/useSelectWithApply/options-list-with-apply/footer/Component.js';
40
40
  import '../../../button/esm/desktop';
41
41
  import '../presets/useSelectWithApply/options-list-with-apply/header/Component.js';
@@ -36,7 +36,7 @@ import '../../../input/esm';
36
36
  import '@alfalab/icons-glyph/MagnifierMIcon';
37
37
  import '../components/virtual-options-list/Component.js';
38
38
  import 'react-virtual';
39
- import '../hook-432d3089.js';
39
+ import '../hook-7827df3d.js';
40
40
  import '../presets/useSelectWithApply/options-list-with-apply/footer/Component.js';
41
41
  import '../../../button/esm/desktop';
42
42
  import '../presets/useSelectWithApply/options-list-with-apply/header/Component.js';
@@ -1,6 +1,6 @@
1
1
  export { useSelectWithLoading } from './useSelectWithLoading/hook.js';
2
2
  export { useLazyLoading } from './useLazyLoading/hook.js';
3
- export { S as SELECT_ALL_KEY, u as useSelectWithApply } from '../hook-432d3089.js';
3
+ export { S as SELECT_ALL_KEY, u as useSelectWithApply } from '../hook-7827df3d.js';
4
4
  import 'tslib';
5
5
  import 'react';
6
6
  import '../../../skeleton/esm';
@@ -1,6 +1,6 @@
1
1
  import 'tslib';
2
2
  import 'react';
3
- export { S as SELECT_ALL_KEY, u as useSelectWithApply } from '../../hook-432d3089.js';
3
+ export { S as SELECT_ALL_KEY, u as useSelectWithApply } from '../../hook-7827df3d.js';
4
4
  import '../../components/options-list/Component.js';
5
5
  import 'react-merge-refs';
6
6
  import 'classnames';
@@ -1,7 +1,7 @@
1
1
  import 'tslib';
2
2
  import 'react';
3
3
  import '../../../components/options-list/Component.js';
4
- export { O as OptionsListWithApply } from '../../../hook-432d3089.js';
4
+ export { O as OptionsListWithApply } from '../../../hook-7827df3d.js';
5
5
  import './footer/Component.js';
6
6
  import './header/Component.js';
7
7
  import 'react-merge-refs';
@@ -1 +1 @@
1
- export * from "../../../hook-432d3089";
1
+ export * from "../../../hook-7827df3d";
@@ -1,4 +1,4 @@
1
- export { O as OptionsListWithApply } from '../../../hook-432d3089.js';
1
+ export { O as OptionsListWithApply } from '../../../hook-7827df3d.js';
2
2
  import 'tslib';
3
3
  import 'react';
4
4
  import '../../../components/options-list/Component.js';
@@ -1,6 +1,6 @@
1
1
  export { useSelectWithLoading } from '../presets/useSelectWithLoading/hook.js';
2
2
  export { useLazyLoading } from '../presets/useLazyLoading/hook.js';
3
- export { S as SELECT_ALL_KEY, u as useSelectWithApply } from '../hook-432d3089.js';
3
+ export { S as SELECT_ALL_KEY, u as useSelectWithApply } from '../hook-7827df3d.js';
4
4
  export { defaultAccessor, defaultFilterFn, isGroup, isOptionShape, joinOptions, lastIndexOf, processOptions, usePrevious, useVisibleOptions } from '../utils.js';
5
5
  export { Option } from '../components/option/Component.js';
6
6
  export { BaseOption } from '../components/base-option/Component.js';
package/select/index.js CHANGED
@@ -43,7 +43,7 @@ require('../base-modal');
43
43
  require('../button/mobile');
44
44
  require('./components/virtual-options-list/Component.js');
45
45
  require('react-virtual');
46
- require('./hook-1a09de48.js');
46
+ require('./hook-c2cc0737.js');
47
47
  require('./presets/useSelectWithApply/options-list-with-apply/footer/Component.js');
48
48
  require('../button/desktop');
49
49
  require('./presets/useSelectWithApply/options-list-with-apply/header/Component.js');
@@ -14,7 +14,7 @@ var components_option_Component = require('../components/option/Component.js');
14
14
  var components_optionsList_Component = require('../components/options-list/Component.js');
15
15
  var components_search_Component = require('../components/search/Component.js');
16
16
  var components_virtualOptionsList_Component = require('../components/virtual-options-list/Component.js');
17
- var presets_useSelectWithApply_optionsListWithApply_Component = require('../hook-1a09de48.js');
17
+ var presets_useSelectWithApply_optionsListWithApply_Component = require('../hook-c2cc0737.js');
18
18
  var presets_useSelectWithApply_optionsListWithApply_header_Component = require('../presets/useSelectWithApply/options-list-with-apply/header/Component.js');
19
19
  require('classnames');
20
20
  require('@alfalab/icons-glyph/ChevronDownMIcon');
@@ -39,7 +39,7 @@ require('../../input');
39
39
  require('@alfalab/icons-glyph/MagnifierMIcon');
40
40
  require('../components/virtual-options-list/Component.js');
41
41
  require('react-virtual');
42
- require('../hook-1a09de48.js');
42
+ require('../hook-c2cc0737.js');
43
43
  require('../presets/useSelectWithApply/options-list-with-apply/footer/Component.js');
44
44
  require('../../button/desktop');
45
45
  require('../presets/useSelectWithApply/options-list-with-apply/header/Component.js');