@alfalab/core-components-select 10.6.4 → 10.6.5

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 (241) hide show
  1. package/dist/Component-9404bb50.d.ts +33 -0
  2. package/dist/Component-9404bb50.js +359 -0
  3. package/dist/Component-b963ee30.d.ts +5 -0
  4. package/dist/Component-b963ee30.js +247 -0
  5. package/dist/Component.d.ts +1 -1
  6. package/dist/Component.js +2 -2
  7. package/dist/components/arrow/Component.js +1 -1
  8. package/dist/components/arrow/index.css +3 -3
  9. package/dist/components/base-select/Component.d.ts +0 -5
  10. package/dist/components/base-select/Component.js +11 -241
  11. package/dist/components/base-select/index.css +7 -7
  12. package/dist/components/base-select/index.d.ts +1 -1
  13. package/dist/components/base-select/index.js +2 -2
  14. package/dist/components/checkmark/Component.js +1 -1
  15. package/dist/components/checkmark/index.css +7 -7
  16. package/dist/components/field/Component.js +2 -2
  17. package/dist/components/field/index.css +9 -9
  18. package/dist/components/field/index.js +1 -1
  19. package/dist/components/index.d.ts +1 -0
  20. package/dist/components/index.js +12 -2
  21. package/dist/components/native-select/Component.js +1 -1
  22. package/dist/components/native-select/index.js +1 -1
  23. package/dist/components/optgroup/Component.d.ts +1 -1
  24. package/dist/components/optgroup/Component.js +3 -3
  25. package/dist/components/optgroup/index.css +6 -6
  26. package/dist/components/option/Component.js +2 -2
  27. package/dist/components/option/index.css +20 -20
  28. package/dist/components/option/index.js +1 -1
  29. package/dist/components/options-list/Component.js +4 -4
  30. package/dist/components/options-list/index.css +6 -6
  31. package/dist/components/options-list/index.js +1 -1
  32. package/dist/components/select-mobile/Component.d.ts +0 -0
  33. package/dist/components/select-mobile/Component.js +38 -0
  34. package/dist/components/select-mobile/checkmark/Component.d.ts +4 -0
  35. package/dist/components/select-mobile/checkmark/Component.js +24 -0
  36. package/dist/components/select-mobile/checkmark/index.css +37 -0
  37. package/dist/components/select-mobile/checkmark/index.d.ts +1 -0
  38. package/dist/components/select-mobile/checkmark/index.js +11 -0
  39. package/dist/components/select-mobile/index.css +68 -0
  40. package/dist/components/select-mobile/index.d.ts +1 -0
  41. package/dist/components/select-mobile/index.js +38 -0
  42. package/dist/components/select-mobile/options-list/Component.d.ts +4 -0
  43. package/dist/components/select-mobile/options-list/Component.js +51 -0
  44. package/dist/components/select-mobile/options-list/index.css +65 -0
  45. package/dist/components/select-mobile/options-list/index.d.ts +1 -0
  46. package/dist/components/select-mobile/options-list/index.js +16 -0
  47. package/dist/components/virtual-options-list/Component.js +2 -2
  48. package/dist/components/virtual-options-list/index.css +12 -12
  49. package/dist/components/virtual-options-list/index.js +1 -1
  50. package/dist/cssm/Component-9bc41b6c.d.ts +5 -0
  51. package/dist/cssm/Component-9bc41b6c.js +246 -0
  52. package/dist/cssm/Component-d45c0e41.d.ts +33 -0
  53. package/dist/cssm/Component-d45c0e41.js +365 -0
  54. package/dist/cssm/Component.d.ts +1 -1
  55. package/dist/cssm/Component.js +1 -1
  56. package/dist/cssm/components/base-select/Component.d.ts +0 -5
  57. package/dist/cssm/components/base-select/Component.js +12 -240
  58. package/dist/cssm/components/base-select/index.d.ts +1 -1
  59. package/dist/cssm/components/base-select/index.js +1 -1
  60. package/dist/cssm/components/index.d.ts +1 -0
  61. package/dist/cssm/components/index.js +17 -1
  62. package/dist/cssm/components/optgroup/Component.d.ts +1 -1
  63. package/dist/cssm/components/optgroup/Component.js +2 -2
  64. package/dist/cssm/components/options-list/Component.js +2 -2
  65. package/dist/cssm/components/select-mobile/Component.d.ts +0 -0
  66. package/dist/cssm/components/select-mobile/Component.js +52 -0
  67. package/dist/cssm/components/select-mobile/checkmark/Component.d.ts +4 -0
  68. package/dist/cssm/components/select-mobile/checkmark/Component.js +23 -0
  69. package/dist/cssm/components/select-mobile/checkmark/index.d.ts +1 -0
  70. package/dist/cssm/components/select-mobile/checkmark/index.js +12 -0
  71. package/dist/cssm/components/select-mobile/checkmark/index.module.css +36 -0
  72. package/dist/cssm/components/select-mobile/index.d.ts +1 -0
  73. package/dist/cssm/components/select-mobile/index.js +52 -0
  74. package/dist/cssm/components/select-mobile/index.module.css +67 -0
  75. package/dist/cssm/components/select-mobile/options-list/Component.d.ts +4 -0
  76. package/dist/cssm/components/select-mobile/options-list/Component.js +51 -0
  77. package/dist/cssm/components/select-mobile/options-list/index.d.ts +1 -0
  78. package/dist/cssm/components/select-mobile/options-list/index.js +18 -0
  79. package/dist/cssm/components/select-mobile/options-list/index.module.css +64 -0
  80. package/dist/cssm/getDataTestId-3fe0d3e6.d.ts +2 -0
  81. package/dist/cssm/hook-f5b8fe4f.d.ts +3 -3
  82. package/dist/cssm/index.js +14 -6
  83. package/dist/cssm/presets/index.js +13 -6
  84. package/dist/cssm/presets/useSelectWithApply/hook.js +13 -6
  85. package/dist/cssm/presets/useSelectWithApply/options-list-with-apply/Component.js +12 -5
  86. package/dist/cssm/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  87. package/dist/cssm/presets/useSelectWithApply/options-list-with-apply/index.js +12 -5
  88. package/dist/cssm/typings.d.ts +29 -0
  89. package/dist/esm/Component-25510e34.d.ts +33 -0
  90. package/dist/esm/Component-25510e34.js +348 -0
  91. package/dist/esm/Component-385efde8.d.ts +5 -0
  92. package/dist/esm/Component-385efde8.js +238 -0
  93. package/dist/esm/Component.d.ts +1 -1
  94. package/dist/esm/Component.js +2 -2
  95. package/dist/esm/components/arrow/Component.js +1 -1
  96. package/dist/esm/components/arrow/index.css +3 -3
  97. package/dist/esm/components/base-select/Component.d.ts +0 -5
  98. package/dist/esm/components/base-select/Component.js +10 -238
  99. package/dist/esm/components/base-select/index.css +7 -7
  100. package/dist/esm/components/base-select/index.d.ts +1 -1
  101. package/dist/esm/components/base-select/index.js +2 -2
  102. package/dist/esm/components/checkmark/Component.js +1 -1
  103. package/dist/esm/components/checkmark/index.css +7 -7
  104. package/dist/esm/components/field/Component.js +2 -2
  105. package/dist/esm/components/field/index.css +9 -9
  106. package/dist/esm/components/field/index.js +1 -1
  107. package/dist/esm/components/index.d.ts +1 -0
  108. package/dist/esm/components/index.js +11 -2
  109. package/dist/esm/components/native-select/Component.js +1 -1
  110. package/dist/esm/components/native-select/index.js +1 -1
  111. package/dist/esm/components/optgroup/Component.d.ts +1 -1
  112. package/dist/esm/components/optgroup/Component.js +3 -3
  113. package/dist/esm/components/optgroup/index.css +6 -6
  114. package/dist/esm/components/option/Component.js +2 -2
  115. package/dist/esm/components/option/index.css +20 -20
  116. package/dist/esm/components/option/index.js +1 -1
  117. package/dist/esm/components/options-list/Component.js +4 -4
  118. package/dist/esm/components/options-list/index.css +6 -6
  119. package/dist/esm/components/options-list/index.js +1 -1
  120. package/dist/esm/components/select-mobile/Component.d.ts +0 -0
  121. package/dist/esm/components/select-mobile/Component.js +30 -0
  122. package/dist/esm/components/select-mobile/checkmark/Component.d.ts +4 -0
  123. package/dist/esm/components/select-mobile/checkmark/Component.js +15 -0
  124. package/dist/esm/components/select-mobile/checkmark/index.css +37 -0
  125. package/dist/esm/components/select-mobile/checkmark/index.d.ts +1 -0
  126. package/dist/esm/components/select-mobile/checkmark/index.js +3 -0
  127. package/dist/esm/components/select-mobile/index.css +68 -0
  128. package/dist/esm/components/select-mobile/index.d.ts +1 -0
  129. package/dist/esm/components/select-mobile/index.js +30 -0
  130. package/dist/esm/components/select-mobile/options-list/Component.d.ts +4 -0
  131. package/dist/esm/components/select-mobile/options-list/Component.js +42 -0
  132. package/dist/esm/components/select-mobile/options-list/index.css +65 -0
  133. package/dist/esm/components/select-mobile/options-list/index.d.ts +1 -0
  134. package/dist/esm/components/select-mobile/options-list/index.js +8 -0
  135. package/dist/esm/components/virtual-options-list/Component.js +2 -2
  136. package/dist/esm/components/virtual-options-list/index.css +12 -12
  137. package/dist/esm/components/virtual-options-list/index.js +1 -1
  138. package/dist/esm/getDataTestId-3fe0d3e6.d.ts +2 -0
  139. package/dist/esm/hook-f5b8fe4f.d.ts +3 -3
  140. package/dist/esm/index.js +9 -5
  141. package/dist/esm/{intersection-observer-812c9e4f.d.ts → intersection-observer-0bdc3704.d.ts} +0 -0
  142. package/dist/esm/{intersection-observer-812c9e4f.js → intersection-observer-0bdc3704.js} +0 -0
  143. package/dist/esm/presets/index.js +9 -5
  144. package/dist/esm/presets/useLazyLoading/hook.js +3 -3
  145. package/dist/esm/presets/useLazyLoading/index.css +2 -2
  146. package/dist/esm/presets/useSelectWithApply/hook.js +9 -5
  147. package/dist/esm/presets/useSelectWithApply/options-list-with-apply/Component.js +9 -5
  148. package/dist/esm/presets/useSelectWithApply/options-list-with-apply/index.css +4 -4
  149. package/dist/esm/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  150. package/dist/esm/presets/useSelectWithApply/options-list-with-apply/index.js +9 -5
  151. package/dist/esm/presets/useSelectWithLoading/hook.js +2 -2
  152. package/dist/esm/presets/useSelectWithLoading/index.css +2 -2
  153. package/dist/esm/{tslib.es6-de132685.d.ts → tslib.es6-a9457d88.d.ts} +0 -0
  154. package/dist/esm/{tslib.es6-de132685.js → tslib.es6-a9457d88.js} +0 -0
  155. package/dist/esm/typings.d.ts +29 -0
  156. package/dist/getDataTestId-3fe0d3e6.d.ts +2 -0
  157. package/dist/hook-f5b8fe4f.d.ts +3 -3
  158. package/dist/index.js +12 -7
  159. package/dist/{intersection-observer-25b5554f.d.ts → intersection-observer-0fef5c01.d.ts} +0 -0
  160. package/dist/{intersection-observer-25b5554f.js → intersection-observer-0fef5c01.js} +0 -0
  161. package/dist/modern/Component-17dae8dc.d.ts +33 -0
  162. package/dist/modern/Component-17dae8dc.js +363 -0
  163. package/dist/modern/Component-e21aa51b.d.ts +5 -0
  164. package/dist/modern/Component-e21aa51b.js +247 -0
  165. package/dist/modern/Component.d.ts +1 -1
  166. package/dist/modern/Component.js +1 -1
  167. package/dist/modern/components/arrow/Component.js +1 -1
  168. package/dist/modern/components/arrow/index.css +3 -3
  169. package/dist/modern/components/base-select/Component.d.ts +0 -5
  170. package/dist/modern/components/base-select/Component.js +9 -247
  171. package/dist/modern/components/base-select/index.css +7 -7
  172. package/dist/modern/components/base-select/index.d.ts +1 -1
  173. package/dist/modern/components/base-select/index.js +1 -1
  174. package/dist/modern/components/checkmark/Component.js +1 -1
  175. package/dist/modern/components/checkmark/index.css +7 -7
  176. package/dist/modern/components/field/Component.js +1 -1
  177. package/dist/modern/components/field/index.css +9 -9
  178. package/dist/modern/components/index.d.ts +1 -0
  179. package/dist/modern/components/index.js +10 -1
  180. package/dist/modern/components/optgroup/Component.d.ts +1 -1
  181. package/dist/modern/components/optgroup/Component.js +3 -3
  182. package/dist/modern/components/optgroup/index.css +6 -6
  183. package/dist/modern/components/option/Component.js +1 -1
  184. package/dist/modern/components/option/index.css +20 -20
  185. package/dist/modern/components/options-list/Component.js +3 -3
  186. package/dist/modern/components/options-list/index.css +6 -6
  187. package/dist/modern/components/select-mobile/Component.d.ts +0 -0
  188. package/dist/modern/components/select-mobile/Component.js +29 -0
  189. package/dist/modern/components/select-mobile/checkmark/Component.d.ts +4 -0
  190. package/dist/modern/components/select-mobile/checkmark/Component.js +11 -0
  191. package/dist/modern/components/select-mobile/checkmark/index.css +37 -0
  192. package/dist/modern/components/select-mobile/checkmark/index.d.ts +1 -0
  193. package/dist/modern/components/select-mobile/checkmark/index.js +3 -0
  194. package/dist/modern/components/select-mobile/index.css +68 -0
  195. package/dist/modern/components/select-mobile/index.d.ts +1 -0
  196. package/dist/modern/components/select-mobile/index.js +29 -0
  197. package/dist/modern/components/select-mobile/options-list/Component.d.ts +4 -0
  198. package/dist/modern/components/select-mobile/options-list/Component.js +37 -0
  199. package/dist/modern/components/select-mobile/options-list/index.css +65 -0
  200. package/dist/modern/components/select-mobile/options-list/index.d.ts +1 -0
  201. package/dist/modern/components/select-mobile/options-list/index.js +7 -0
  202. package/dist/modern/components/virtual-options-list/Component.js +1 -1
  203. package/dist/modern/components/virtual-options-list/index.css +12 -12
  204. package/dist/modern/getDataTestId-3fe0d3e6.d.ts +2 -0
  205. package/dist/modern/hook-f5b8fe4f.d.ts +3 -3
  206. package/dist/modern/index.js +8 -4
  207. package/dist/modern/{intersection-observer-812c9e4f.d.ts → intersection-observer-0bdc3704.d.ts} +0 -0
  208. package/dist/modern/{intersection-observer-812c9e4f.js → intersection-observer-0bdc3704.js} +0 -0
  209. package/dist/modern/presets/index.js +8 -4
  210. package/dist/modern/presets/useLazyLoading/hook.js +2 -2
  211. package/dist/modern/presets/useLazyLoading/index.css +2 -2
  212. package/dist/modern/presets/useSelectWithApply/hook.js +8 -4
  213. package/dist/modern/presets/useSelectWithApply/options-list-with-apply/Component.js +8 -4
  214. package/dist/modern/presets/useSelectWithApply/options-list-with-apply/index.css +4 -4
  215. package/dist/modern/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  216. package/dist/modern/presets/useSelectWithApply/options-list-with-apply/index.js +8 -4
  217. package/dist/modern/presets/useSelectWithLoading/hook.js +1 -1
  218. package/dist/modern/presets/useSelectWithLoading/index.css +2 -2
  219. package/dist/modern/typings.d.ts +29 -0
  220. package/dist/presets/index.js +11 -7
  221. package/dist/presets/useLazyLoading/hook.js +3 -3
  222. package/dist/presets/useLazyLoading/index.css +2 -2
  223. package/dist/presets/useSelectWithApply/hook.js +11 -7
  224. package/dist/presets/useSelectWithApply/options-list-with-apply/Component.js +10 -6
  225. package/dist/presets/useSelectWithApply/options-list-with-apply/index.css +4 -4
  226. package/dist/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  227. package/dist/presets/useSelectWithApply/options-list-with-apply/index.js +10 -6
  228. package/dist/presets/useSelectWithLoading/hook.js +2 -2
  229. package/dist/presets/useSelectWithLoading/index.css +2 -2
  230. package/dist/{tslib.es6-2027080d.d.ts → tslib.es6-b9d0d522.d.ts} +0 -0
  231. package/dist/{tslib.es6-2027080d.js → tslib.es6-b9d0d522.js} +0 -0
  232. package/dist/typings.d.ts +29 -0
  233. package/package.json +14 -12
  234. package/dist/cssm/hook-3b9bd559.d.ts +0 -12
  235. package/dist/cssm/hook-3b9bd559.js +0 -147
  236. package/dist/esm/hook-73d6fe0f.d.ts +0 -12
  237. package/dist/esm/hook-73d6fe0f.js +0 -131
  238. package/dist/hook-81a989b0.d.ts +0 -12
  239. package/dist/hook-81a989b0.js +0 -140
  240. package/dist/modern/hook-42b89ed1.d.ts +0 -12
  241. package/dist/modern/hook-42b89ed1.js +0 -132
@@ -1,4 +1,4 @@
1
- /* hash: 14p5n */
1
+ /* hash: 10nve */
2
2
  :root {
3
3
  --color-light-border-primary: #dbdee1;
4
4
  --color-light-text-secondary: #546272;
@@ -32,27 +32,27 @@
32
32
 
33
33
  /* optgroup */
34
34
  }
35
- .select__virtualOptionsList_12i5x {
35
+ .select__virtualOptionsList_pjid4 {
36
36
  width: 100%;
37
37
  outline: none;
38
38
  box-sizing: border-box;
39
39
  position: relative;
40
40
  }
41
- .select__scrollable_12i5x {
41
+ .select__scrollable_pjid4 {
42
42
  overflow: auto;
43
43
  width: 100%;
44
44
  }
45
- .select__inner_12i5x {
45
+ .select__inner_pjid4 {
46
46
  position: relative;
47
47
  width: 100%;
48
48
  }
49
- .select__virtualRow_12i5x {
49
+ .select__virtualRow_pjid4 {
50
50
  position: absolute;
51
51
  top: 0;
52
52
  left: 0;
53
53
  width: 100%
54
54
  }
55
- .select__virtualRow_12i5x:before {
55
+ .select__virtualRow_pjid4:before {
56
56
  content: '';
57
57
  position: absolute;
58
58
  z-index: 1;
@@ -63,18 +63,18 @@
63
63
  background: var(--select-option-divider-background);
64
64
  display: var(--select-option-divider-display);
65
65
  }
66
- .select__virtualRow_12i5x:first-child:before {
66
+ .select__virtualRow_pjid4:first-child:before {
67
67
  display: none;
68
68
  }
69
- .select__highlighted_12i5x:before,
70
- .select__highlighted_12i5x + .select__virtualRow_12i5x:before {
69
+ .select__highlighted_pjid4:before,
70
+ .select__highlighted_pjid4 + .select__virtualRow_pjid4:before {
71
71
  display: none;
72
72
  }
73
- .select__emptyPlaceholder_12i5x {
73
+ .select__emptyPlaceholder_pjid4 {
74
74
  padding: var(--gap-m) var(--gap-s);
75
75
  color: var(--select-options-list-empty-placeholder-color);
76
76
  }
77
- .select__l_12i5x .select__emptyPlaceholder_12i5x,
78
- .select__xl_12i5x .select__emptyPlaceholder_12i5x {
77
+ .select__l_pjid4 .select__emptyPlaceholder_pjid4,
78
+ .select__xl_pjid4 .select__emptyPlaceholder_pjid4 {
79
79
  padding: var(--gap-xl) var(--gap-m);
80
80
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- require('../../tslib.es6-2027080d.js');
5
+ require('../../tslib.es6-b9d0d522.js');
6
6
  require('react');
7
7
  require('classnames');
8
8
  require('../../utils.js');
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ import React from 'react';
3
+ import { BaseSelectProps } from "./typings";
4
+ declare const BaseSelect: React.ForwardRefExoticComponent<BaseSelectProps & React.RefAttributes<unknown>>;
5
+ export { BaseSelect };
@@ -0,0 +1,246 @@
1
+ 'use strict';
2
+
3
+ var tslib_es6 = require('./tslib.es6-f8106a15.js');
4
+ var React = require('react');
5
+ var cn = require('classnames');
6
+ var utils = require('./utils.js');
7
+ var mergeRefs = require('react-merge-refs');
8
+ var resizeObserver = require('resize-observer');
9
+ var coreComponentsPopover = require('@alfalab/core-components-popover/dist/cssm');
10
+ var downshift = require('downshift');
11
+ var components_nativeSelect_Component = require('./components/native-select/Component.js');
12
+ var styles = require('./components/base-select/index.module.css');
13
+
14
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
+
16
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
17
+ var cn__default = /*#__PURE__*/_interopDefaultLegacy(cn);
18
+ var mergeRefs__default = /*#__PURE__*/_interopDefaultLegacy(mergeRefs);
19
+ var styles__default = /*#__PURE__*/_interopDefaultLegacy(styles);
20
+
21
+ var getDataTestId = function (dataTestId, element) {
22
+ var elementPart = element ? "-" + element.toLowerCase() : '';
23
+ return dataTestId ? "" + dataTestId + elementPart : undefined;
24
+ };
25
+
26
+ var BaseSelect = React.forwardRef(function (_a, ref) {
27
+ var _b;
28
+ var dataTestId = _a.dataTestId, className = _a.className, fieldClassName = _a.fieldClassName, optionsListClassName = _a.optionsListClassName, optionClassName = _a.optionClassName, popperClassName = _a.popperClassName, options = _a.options, _c = _a.autocomplete, autocomplete = _c === void 0 ? false : _c, _d = _a.multiple, multiple = _d === void 0 ? false : _d, _e = _a.allowUnselect, allowUnselect = _e === void 0 ? false : _e, _f = _a.disabled, disabled = _f === void 0 ? false : _f, _g = _a.closeOnSelect, closeOnSelect = _g === void 0 ? !multiple : _g, _h = _a.circularNavigation, circularNavigation = _h === void 0 ? false : _h, _j = _a.nativeSelect, nativeSelect = _j === void 0 ? false : _j, _k = _a.defaultOpen, defaultOpen = _k === void 0 ? false : _k, openProp = _a.open, _l = _a.popoverPosition, popoverPosition = _l === void 0 ? 'bottom-start' : _l, _m = _a.preventFlip, preventFlip = _m === void 0 ? true : _m, _o = _a.optionsListWidth, optionsListWidth = _o === void 0 ? 'content' : _o, name = _a.name, id = _a.id, selected = _a.selected, _p = _a.size, size = _p === void 0 ? 's' : _p, _q = _a.optionsSize, optionsSize = _q === void 0 ? size : _q, error = _a.error, hint = _a.hint, block = _a.block, label = _a.label, placeholder = _a.placeholder, _r = _a.fieldProps, fieldProps = _r === void 0 ? {} : _r, _s = _a.optionsListProps, optionsListProps = _s === void 0 ? {} : _s, _t = _a.optionProps, optionProps = _t === void 0 ? {} : _t, valueRenderer = _a.valueRenderer, onChange = _a.onChange, onOpen = _a.onOpen, onFocus = _a.onFocus, onBlur = _a.onBlur, onScroll = _a.onScroll, Arrow = _a.Arrow, _u = _a.Field, Field = _u === void 0 ? function () { return null; } : _u, _v = _a.OptionsList, OptionsList = _v === void 0 ? function () { return null; } : _v, _w = _a.Optgroup, Optgroup = _w === void 0 ? function () { return null; } : _w, _x = _a.Option, Option = _x === void 0 ? function () { return null; } : _x, updatePopover = _a.updatePopover, zIndexPopover = _a.zIndexPopover, _y = _a.showEmptyOptionsList, showEmptyOptionsList = _y === void 0 ? false : _y, visibleOptions = _a.visibleOptions;
29
+ var rootRef = React.useRef(null);
30
+ var fieldRef = React.useRef(null);
31
+ var listRef = React.useRef(null);
32
+ var initiatorRef = React.useRef(null);
33
+ var itemToString = function (option) { return (option ? option.key : ''); };
34
+ var _z = React.useMemo(function () { return utils.processOptions(options, selected); }, [
35
+ options,
36
+ selected,
37
+ ]), flatOptions = _z.flatOptions, selectedOptions = _z.selectedOptions;
38
+ var useMultipleSelectionProps = {
39
+ itemToString: itemToString,
40
+ onSelectedItemsChange: function (changes) {
41
+ if (onChange) {
42
+ var _a = changes.selectedItems, selectedItems_1 = _a === void 0 ? [] : _a;
43
+ onChange({
44
+ selectedMultiple: selectedItems_1,
45
+ selected: selectedItems_1.length ? selectedItems_1[0] : null,
46
+ initiator: initiatorRef.current,
47
+ name: name,
48
+ });
49
+ initiatorRef.current = null;
50
+ }
51
+ },
52
+ stateReducer: function (state, actionAndChanges) {
53
+ var type = actionAndChanges.type, changes = actionAndChanges.changes;
54
+ if (!allowUnselect &&
55
+ type === downshift.useMultipleSelection.stateChangeTypes.DropdownKeyDownBackspace) {
56
+ return state;
57
+ }
58
+ return changes;
59
+ },
60
+ };
61
+ if (selected !== undefined) {
62
+ useMultipleSelectionProps.selectedItems = selectedOptions;
63
+ }
64
+ var _0 = downshift.useMultipleSelection(useMultipleSelectionProps), selectedItems = _0.selectedItems, addSelectedItem = _0.addSelectedItem, setSelectedItems = _0.setSelectedItems, removeSelectedItem = _0.removeSelectedItem, getDropdownProps = _0.getDropdownProps;
65
+ var _1 = downshift.useCombobox({
66
+ id: id,
67
+ isOpen: openProp,
68
+ circularNavigation: circularNavigation,
69
+ items: flatOptions,
70
+ itemToString: itemToString,
71
+ defaultHighlightedIndex: selectedItems.length === 0 ? -1 : undefined,
72
+ onIsOpenChange: function (changes) {
73
+ if (onOpen) {
74
+ /**
75
+ * Вызываем обработчик асинхронно.
76
+ *
77
+ * Иначе при клике вне открытого селекта сначала сработает onOpen, который закроет селект,
78
+ * А затем сработает onClick кнопки открытия\закрытия с open=false и в итоге селект откроется снова.
79
+ */
80
+ setTimeout(function () {
81
+ onOpen({
82
+ open: changes.isOpen,
83
+ name: name,
84
+ });
85
+ }, 0);
86
+ }
87
+ },
88
+ stateReducer: function (state, actionAndChanges) {
89
+ var type = actionAndChanges.type, changes = actionAndChanges.changes;
90
+ var selectedItem = changes.selectedItem;
91
+ switch (type) {
92
+ case downshift.useCombobox.stateChangeTypes.InputKeyDownEnter:
93
+ case downshift.useCombobox.stateChangeTypes.ItemClick:
94
+ initiatorRef.current = selectedItem;
95
+ if (selectedItem && !selectedItem.disabled) {
96
+ var alreadySelected = selectedItems.includes(selectedItem);
97
+ var allowRemove = allowUnselect || (multiple && selectedItems.length > 1);
98
+ if (alreadySelected && allowRemove) {
99
+ removeSelectedItem(selectedItem);
100
+ }
101
+ if (!alreadySelected) {
102
+ if (multiple) {
103
+ addSelectedItem(selectedItem);
104
+ }
105
+ else {
106
+ setSelectedItems([selectedItem]);
107
+ }
108
+ }
109
+ }
110
+ return tslib_es6.__assign(tslib_es6.__assign({}, changes), { isOpen: !closeOnSelect,
111
+ // при closeOnSelect === false - сохраняем подсвеченный индекс
112
+ highlightedIndex: state.isOpen && !closeOnSelect
113
+ ? state.highlightedIndex
114
+ : changes.highlightedIndex });
115
+ default:
116
+ return changes;
117
+ }
118
+ },
119
+ }), open = _1.isOpen, getMenuProps = _1.getMenuProps, getInputProps = _1.getInputProps, getItemProps = _1.getItemProps, getComboboxProps = _1.getComboboxProps, getLabelProps = _1.getLabelProps, highlightedIndex = _1.highlightedIndex, toggleMenu = _1.toggleMenu, openMenu = _1.openMenu;
120
+ var menuProps = getMenuProps({ ref: listRef }, { suppressRefError: true });
121
+ var inputProps = getInputProps(getDropdownProps({ ref: mergeRefs__default['default']([ref, fieldRef]) }));
122
+ var handleFieldFocus = function (event) {
123
+ if (onFocus)
124
+ onFocus(event);
125
+ if (autocomplete && !open) {
126
+ openMenu();
127
+ }
128
+ };
129
+ var handleFieldBlur = function (event) {
130
+ var _a;
131
+ var isNextFocusInsideList = (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.contains((event.relatedTarget || document.activeElement));
132
+ if (!isNextFocusInsideList) {
133
+ if (onBlur)
134
+ onBlur(event);
135
+ inputProps.onBlur(event);
136
+ }
137
+ };
138
+ var handleFieldKeyDown = function (event) {
139
+ inputProps.onKeyDown(event);
140
+ if (autocomplete && !open && (event.key.length === 1 || event.key === 'Backspace')) {
141
+ // Для автокомплита - открываем меню при начале ввода
142
+ openMenu();
143
+ }
144
+ if ([' ', 'Enter'].includes(event.key) &&
145
+ !autocomplete &&
146
+ !nativeSelect &&
147
+ event.target.tagName !== 'INPUT' &&
148
+ event.target.tagName !== 'BUTTON') {
149
+ // Открываем\закрываем меню по нажатию enter или пробела
150
+ event.preventDefault();
151
+ if (!open || highlightedIndex === -1)
152
+ toggleMenu();
153
+ }
154
+ };
155
+ var handleFieldClick = function (event) {
156
+ if (!autocomplete || event.target.tagName !== 'INPUT') {
157
+ toggleMenu();
158
+ }
159
+ else {
160
+ openMenu();
161
+ }
162
+ };
163
+ var handleNativeSelectChange = React.useCallback(function (event) {
164
+ setSelectedItems(tslib_es6.__spreadArrays(event.target.options).reduce(function (acc, option, index) {
165
+ return option.selected ? acc.concat(flatOptions[index]) : acc;
166
+ }, []));
167
+ }, [flatOptions, setSelectedItems]);
168
+ var getOptionProps = React.useCallback(function (option, index) { return (tslib_es6.__assign(tslib_es6.__assign({}, optionProps), { className: optionClassName, innerProps: getItemProps({
169
+ index: index,
170
+ item: option,
171
+ disabled: option.disabled,
172
+ onMouseDown: function (event) { return event.preventDefault(); },
173
+ }), multiple: multiple,
174
+ index: index,
175
+ option: option, size: optionsSize, disabled: option.disabled, highlighted: index === highlightedIndex, selected: selectedItems.includes(option), dataTestId: getDataTestId(dataTestId, 'option') })); }, [
176
+ dataTestId,
177
+ getItemProps,
178
+ highlightedIndex,
179
+ multiple,
180
+ optionClassName,
181
+ optionProps,
182
+ optionsSize,
183
+ selectedItems,
184
+ ]);
185
+ React.useEffect(function () {
186
+ if (defaultOpen)
187
+ openMenu();
188
+ }, [defaultOpen, openMenu]);
189
+ React.useEffect(function () {
190
+ if (openProp) {
191
+ openMenu();
192
+ }
193
+ // eslint-disable-next-line react-hooks/exhaustive-deps
194
+ }, []);
195
+ var calcOptionsListWidth = React.useCallback(function () {
196
+ if (listRef.current) {
197
+ var widthAttr = optionsListWidth === 'field' ? 'width' : 'minWidth';
198
+ var optionsListMinWidth = rootRef.current
199
+ ? rootRef.current.getBoundingClientRect().width
200
+ : 0;
201
+ listRef.current.setAttribute('style', '');
202
+ listRef.current.style[widthAttr] = optionsListMinWidth + "px";
203
+ }
204
+ }, [optionsListWidth]);
205
+ React.useEffect(function () {
206
+ var observer = new resizeObserver.ResizeObserver(calcOptionsListWidth);
207
+ if (rootRef.current) {
208
+ observer.observe(rootRef.current);
209
+ }
210
+ return function () {
211
+ observer.disconnect();
212
+ };
213
+ }, [calcOptionsListWidth, open, optionsListWidth]);
214
+ React.useLayoutEffect(calcOptionsListWidth, [open, optionsListWidth, options, selectedItems]);
215
+ var renderValue = React.useCallback(function () {
216
+ return selectedItems.map(function (option) { return (React__default['default'].createElement("input", { type: 'hidden', name: name, value: option.key, key: option.key })); });
217
+ }, [selectedItems, name]);
218
+ var renderNativeSelect = React.useCallback(function () {
219
+ var value = multiple
220
+ ? selectedItems.map(function (option) { return option.key; })
221
+ : (selectedItems[0] || {}).key;
222
+ return (React__default['default'].createElement(components_nativeSelect_Component.NativeSelect, tslib_es6.__assign({}, menuProps, { className: styles__default['default'].nativeSelect, disabled: disabled, multiple: multiple, name: name, value: value, onChange: handleNativeSelectChange, options: options })));
223
+ }, [multiple, selectedItems, disabled, name, handleNativeSelectChange, options, menuProps]);
224
+ var needRenderOptionsList = flatOptions.length > 0 || showEmptyOptionsList;
225
+ return (React__default['default'].createElement("div", tslib_es6.__assign({}, getComboboxProps(tslib_es6.__assign(tslib_es6.__assign({ ref: rootRef }, (disabled && { 'aria-disabled': true })), { className: cn__default['default'](styles__default['default'].component, (_b = {}, _b[styles__default['default'].block] = block, _b), className) })), { onKeyDown: disabled ? undefined : handleFieldKeyDown, tabIndex: -1, "data-test-id": getDataTestId(dataTestId) }),
226
+ nativeSelect && renderNativeSelect(),
227
+ React__default['default'].createElement(Field, tslib_es6.__assign({ selectedMultiple: selectedItems, selected: selectedItems[0], setSelectedItems: setSelectedItems, toggleMenu: toggleMenu, multiple: multiple, open: open, disabled: disabled, size: size, placeholder: placeholder, label: label && React__default['default'].createElement("span", tslib_es6.__assign({}, getLabelProps()), label), Arrow: Arrow && React__default['default'].createElement(Arrow, { open: open }), error: error, hint: hint, valueRenderer: valueRenderer, className: fieldClassName, innerProps: {
228
+ onBlur: handleFieldBlur,
229
+ onFocus: disabled ? undefined : handleFieldFocus,
230
+ onClick: disabled ? undefined : handleFieldClick,
231
+ tabIndex: nativeSelect || disabled ? -1 : 0,
232
+ ref: mergeRefs__default['default']([inputProps.ref]),
233
+ id: inputProps.id,
234
+ 'aria-labelledby': inputProps['aria-labelledby'],
235
+ 'aria-controls': inputProps['aria-controls'],
236
+ 'aria-autocomplete': autocomplete
237
+ ? inputProps['aria-autocomplete']
238
+ : undefined,
239
+ }, dataTestId: getDataTestId(dataTestId, 'field') }, fieldProps)),
240
+ name && !nativeSelect && renderValue(),
241
+ !nativeSelect && (React__default['default'].createElement(coreComponentsPopover.Popover, { open: open, withTransition: false, anchorElement: fieldRef.current, position: popoverPosition, preventFlip: preventFlip, popperClassName: cn__default['default'](styles__default['default'].popoverInner, popperClassName), update: updatePopover, zIndex: zIndexPopover }, needRenderOptionsList && (React__default['default'].createElement("div", tslib_es6.__assign({}, menuProps, { className: cn__default['default'](optionsListClassName, styles__default['default'].optionsList) }),
242
+ React__default['default'].createElement(OptionsList, tslib_es6.__assign({}, optionsListProps, { flatOptions: flatOptions, highlightedIndex: highlightedIndex, open: open, size: size, options: options, Optgroup: Optgroup, Option: Option, selectedItems: selectedItems, setSelectedItems: setSelectedItems, toggleMenu: toggleMenu, getOptionProps: getOptionProps, visibleOptions: visibleOptions, onScroll: onScroll, dataTestId: getDataTestId(dataTestId, 'options-list') }))))))));
243
+ });
244
+
245
+ exports.BaseSelect = BaseSelect;
246
+ exports.getDataTestId = getDataTestId;
@@ -0,0 +1,33 @@
1
+ /// <reference types="react" />
2
+ import React from "react";
3
+ import { ReactNode } from "react";
4
+ import { OptionShape, OptionsListProps, BaseSelectProps } from "./typings";
5
+ declare const OptionsListWithApply: React.ForwardRefExoticComponent<OptionsListProps & {
6
+ showClear?: boolean | undefined;
7
+ onClose?: (() => void) | undefined;
8
+ selectedDraft?: OptionShape[] | undefined;
9
+ OptionsList?: React.FC<OptionsListProps & React.RefAttributes<unknown>> | undefined;
10
+ } & React.RefAttributes<unknown>>;
11
+ type SelectMobileProps = Omit<BaseSelectProps, 'OptionsList' | 'Checkmark' | 'onScroll'> & {
12
+ /**
13
+ * Футер
14
+ */
15
+ footer?: ReactNode;
16
+ /**
17
+ * Будет ли свайпаться шторка
18
+ *
19
+ */
20
+ swipeable?: boolean;
21
+ };
22
+ declare const SelectMobile: React.ForwardRefExoticComponent<Pick<BaseSelectProps, "block" | "size" | "className" | "fieldClassName" | "disabled" | "error" | "hint" | "label" | "dataTestId" | "id" | "placeholder" | "onFocus" | "onBlur" | "onChange" | "preventFlip" | "popperClassName" | "open" | "name" | "options" | "multiple" | "selected" | "valueRenderer" | "Optgroup" | "visibleOptions" | "Arrow" | "optionGroupClassName" | "Option" | "optionsListClassName" | "optionClassName" | "autocomplete" | "allowUnselect" | "closeOnSelect" | "circularNavigation" | "nativeSelect" | "defaultOpen" | "popoverPosition" | "optionsListWidth" | "optionsSize" | "fieldProps" | "optionsListProps" | "optionProps" | "onOpen" | "Field" | "updatePopover" | "zIndexPopover" | "showEmptyOptionsList"> & {
23
+ /**
24
+ * Футер
25
+ */
26
+ footer?: React.ReactNode;
27
+ /**
28
+ * Будет ли свайпаться шторка
29
+ *
30
+ */
31
+ swipeable?: boolean | undefined;
32
+ } & React.RefAttributes<unknown>>;
33
+ export { OptionsListWithApply, SelectMobileProps, SelectMobile };