@salutejs/plasma-new-hope 0.175.0-dev.0 → 0.175.1-canary.1497.11552145733.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (221) hide show
  1. package/cjs/components/Combobox/ComboboxNew/Combobox.css +10 -10
  2. package/cjs/components/Combobox/ComboboxNew/ui/Inner/Inner.css +10 -10
  3. package/cjs/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.css +10 -10
  4. package/cjs/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.js +1 -2
  5. package/cjs/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.js.map +1 -1
  6. package/cjs/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.styles.js +6 -20
  7. package/cjs/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.styles.js.map +1 -1
  8. package/cjs/components/Combobox/ComboboxNew/ui/Inner/ui/Item/{Item.styles_1us8jz1.css → Item.styles_y71664.css} +1 -1
  9. package/cjs/components/Combobox/ComboboxOld/Combobox.css +28 -14
  10. package/cjs/components/Combobox/ComboboxOld/ui/ComboboxDivider/ComboboxDivider.css +32 -18
  11. package/cjs/components/Combobox/ComboboxOld/ui/ComboboxFooter/ComboboxFooter.css +32 -18
  12. package/cjs/components/Combobox/ComboboxOld/ui/ComboboxGroup/ComboboxGroup.css +32 -18
  13. package/cjs/components/Combobox/ComboboxOld/ui/ComboboxHeader/ComboboxHeader.css +32 -18
  14. package/cjs/components/Dropdown/Dropdown.css +30 -16
  15. package/cjs/components/Dropdown/Dropdown.js +60 -37
  16. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  17. package/cjs/components/Dropdown/Dropdown.styles.js +14 -26
  18. package/cjs/components/Dropdown/Dropdown.styles.js.map +1 -1
  19. package/cjs/components/Dropdown/Dropdown.styles_1ix6io8.css +2 -0
  20. package/cjs/components/Dropdown/Dropdown.tokens.js +24 -1
  21. package/cjs/components/Dropdown/Dropdown.tokens.js.map +1 -1
  22. package/cjs/components/Dropdown/FloatingPopover.js +104 -0
  23. package/cjs/components/Dropdown/FloatingPopover.js.map +1 -0
  24. package/cjs/components/Dropdown/ui/DropdownInner/DropdownInner.js +17 -51
  25. package/cjs/components/Dropdown/ui/DropdownInner/DropdownInner.js.map +1 -1
  26. package/cjs/components/Dropdown/ui/DropdownItem/DropdownItem.css +46 -6
  27. package/cjs/components/Dropdown/ui/DropdownItem/DropdownItem.js +29 -18
  28. package/cjs/components/Dropdown/ui/DropdownItem/DropdownItem.js.map +1 -1
  29. package/cjs/components/Dropdown/ui/DropdownItem/DropdownItem.styles.js +25 -31
  30. package/cjs/components/Dropdown/ui/DropdownItem/DropdownItem.styles.js.map +1 -1
  31. package/cjs/components/Dropdown/ui/DropdownItem/DropdownItem.styles_17va0nk.css +5 -0
  32. package/cjs/components/Dropdown/ui/DropdownItemOld/DropdownItem.styles.js +1 -1
  33. package/{es/components/Dropdown/ui/DropdownItemOld/DropdownItem.styles_12e50g5.css → cjs/components/Dropdown/ui/DropdownItemOld/DropdownItem.styles_1lyg81y.css} +1 -1
  34. package/cjs/components/Dropdown/ui/DropdownItemOld/DropdownItemOld.css +4 -4
  35. package/cjs/components/Dropdown/utils/getItemByFocused.js +13 -0
  36. package/cjs/components/Dropdown/utils/getItemByFocused.js.map +1 -0
  37. package/cjs/components/Dropdown/utils/getItemId.js +10 -0
  38. package/cjs/components/Dropdown/utils/getItemId.js.map +1 -0
  39. package/cjs/components/Dropdown/utils/getPlacement.js +16 -0
  40. package/cjs/components/Dropdown/utils/getPlacement.js.map +1 -0
  41. package/cjs/components/Dropdown/utils/index.js.map +1 -1
  42. package/cjs/components/Select/Select.js +1 -1
  43. package/cjs/components/Select/utils/getCorrectHeight.js.map +1 -1
  44. package/cjs/hooks/useOutsideClick.js +1 -1
  45. package/cjs/hooks/useOutsideClick.js.map +1 -1
  46. package/cjs/index.css +20 -22
  47. package/emotion/cjs/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.js +1 -2
  48. package/emotion/cjs/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.styles.js +14 -20
  49. package/emotion/cjs/components/Dropdown/Dropdown.js +58 -37
  50. package/emotion/cjs/components/Dropdown/Dropdown.styles.js +9 -25
  51. package/emotion/cjs/components/Dropdown/Dropdown.tokens.js +36 -2
  52. package/emotion/cjs/components/Dropdown/FloatingPopover.js +109 -0
  53. package/emotion/cjs/components/Dropdown/ui/DropdownInner/DropdownInner.js +17 -51
  54. package/emotion/cjs/components/Dropdown/ui/DropdownItem/DropdownItem.js +29 -18
  55. package/emotion/cjs/components/Dropdown/ui/DropdownItem/DropdownItem.styles.js +21 -41
  56. package/emotion/cjs/components/Dropdown/utils/getItemByFocused.js +12 -0
  57. package/emotion/cjs/components/Dropdown/utils/getItemId.js +9 -0
  58. package/emotion/cjs/components/Dropdown/utils/getPlacement.js +15 -0
  59. package/emotion/cjs/components/Dropdown/utils/index.js +23 -1
  60. package/emotion/cjs/examples/plasma_b2c/components/Combobox/Combobox.config.js +12 -12
  61. package/emotion/cjs/examples/plasma_b2c/components/Dropdown/Dropdown.config.js +5 -5
  62. package/emotion/cjs/examples/plasma_b2c/components/Dropdown/Dropdown.stories.tsx +6 -5
  63. package/emotion/cjs/examples/plasma_web/components/Combobox/Combobox.config.js +12 -12
  64. package/emotion/cjs/examples/plasma_web/components/Dropdown/Dropdown.config.js +5 -5
  65. package/emotion/cjs/examples/plasma_web/components/Dropdown/Dropdown.stories.tsx +6 -5
  66. package/emotion/cjs/hooks/useOutsideClick.js +1 -1
  67. package/emotion/es/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.js +1 -2
  68. package/emotion/es/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.styles.js +14 -20
  69. package/emotion/es/components/Dropdown/Dropdown.js +60 -40
  70. package/emotion/es/components/Dropdown/Dropdown.styles.js +9 -25
  71. package/emotion/es/components/Dropdown/Dropdown.tokens.js +35 -1
  72. package/emotion/es/components/Dropdown/FloatingPopover.js +102 -0
  73. package/emotion/es/components/Dropdown/ui/DropdownInner/DropdownInner.js +18 -52
  74. package/emotion/es/components/Dropdown/ui/DropdownItem/DropdownItem.js +31 -20
  75. package/emotion/es/components/Dropdown/ui/DropdownItem/DropdownItem.styles.js +22 -42
  76. package/emotion/es/components/Dropdown/utils/getItemByFocused.js +6 -0
  77. package/emotion/es/components/Dropdown/utils/getItemId.js +3 -0
  78. package/emotion/es/components/Dropdown/utils/getPlacement.js +9 -0
  79. package/emotion/es/components/Dropdown/utils/index.js +4 -1
  80. package/emotion/es/examples/plasma_b2c/components/Combobox/Combobox.config.js +12 -12
  81. package/emotion/es/examples/plasma_b2c/components/Dropdown/Dropdown.config.js +6 -6
  82. package/emotion/es/examples/plasma_b2c/components/Dropdown/Dropdown.stories.tsx +6 -5
  83. package/emotion/es/examples/plasma_web/components/Combobox/Combobox.config.js +12 -12
  84. package/emotion/es/examples/plasma_web/components/Dropdown/Dropdown.config.js +6 -6
  85. package/emotion/es/examples/plasma_web/components/Dropdown/Dropdown.stories.tsx +6 -5
  86. package/emotion/es/hooks/useOutsideClick.js +1 -1
  87. package/es/components/Combobox/ComboboxNew/Combobox.css +10 -10
  88. package/es/components/Combobox/ComboboxNew/ui/Inner/Inner.css +10 -10
  89. package/es/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.css +10 -10
  90. package/es/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.js +1 -2
  91. package/es/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.js.map +1 -1
  92. package/es/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.styles.js +6 -20
  93. package/es/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.styles.js.map +1 -1
  94. package/es/components/Combobox/ComboboxNew/ui/Inner/ui/Item/{Item.styles_1us8jz1.css → Item.styles_y71664.css} +1 -1
  95. package/es/components/Combobox/ComboboxOld/Combobox.css +28 -14
  96. package/es/components/Combobox/ComboboxOld/ui/ComboboxDivider/ComboboxDivider.css +32 -18
  97. package/es/components/Combobox/ComboboxOld/ui/ComboboxFooter/ComboboxFooter.css +32 -18
  98. package/es/components/Combobox/ComboboxOld/ui/ComboboxGroup/ComboboxGroup.css +32 -18
  99. package/es/components/Combobox/ComboboxOld/ui/ComboboxHeader/ComboboxHeader.css +32 -18
  100. package/es/components/Dropdown/Dropdown.css +30 -16
  101. package/es/components/Dropdown/Dropdown.js +62 -40
  102. package/es/components/Dropdown/Dropdown.js.map +1 -1
  103. package/es/components/Dropdown/Dropdown.styles.js +15 -26
  104. package/es/components/Dropdown/Dropdown.styles.js.map +1 -1
  105. package/es/components/Dropdown/Dropdown.styles_1ix6io8.css +2 -0
  106. package/es/components/Dropdown/Dropdown.tokens.js +24 -1
  107. package/es/components/Dropdown/Dropdown.tokens.js.map +1 -1
  108. package/es/components/Dropdown/FloatingPopover.js +100 -0
  109. package/es/components/Dropdown/FloatingPopover.js.map +1 -0
  110. package/es/components/Dropdown/ui/DropdownInner/DropdownInner.js +18 -52
  111. package/es/components/Dropdown/ui/DropdownInner/DropdownInner.js.map +1 -1
  112. package/es/components/Dropdown/ui/DropdownItem/DropdownItem.css +46 -6
  113. package/es/components/Dropdown/ui/DropdownItem/DropdownItem.js +31 -20
  114. package/es/components/Dropdown/ui/DropdownItem/DropdownItem.js.map +1 -1
  115. package/es/components/Dropdown/ui/DropdownItem/DropdownItem.styles.js +24 -29
  116. package/es/components/Dropdown/ui/DropdownItem/DropdownItem.styles.js.map +1 -1
  117. package/es/components/Dropdown/ui/DropdownItem/DropdownItem.styles_17va0nk.css +5 -0
  118. package/es/components/Dropdown/ui/DropdownItemOld/DropdownItem.styles.js +1 -1
  119. package/{cjs/components/Dropdown/ui/DropdownItemOld/DropdownItem.styles_12e50g5.css → es/components/Dropdown/ui/DropdownItemOld/DropdownItem.styles_1lyg81y.css} +1 -1
  120. package/es/components/Dropdown/ui/DropdownItemOld/DropdownItemOld.css +4 -4
  121. package/es/components/Dropdown/utils/getItemByFocused.js +9 -0
  122. package/es/components/Dropdown/utils/getItemByFocused.js.map +1 -0
  123. package/es/components/Dropdown/utils/getItemId.js +6 -0
  124. package/es/components/Dropdown/utils/getItemId.js.map +1 -0
  125. package/es/components/Dropdown/utils/getPlacement.js +12 -0
  126. package/es/components/Dropdown/utils/getPlacement.js.map +1 -0
  127. package/es/components/Dropdown/utils/index.js.map +1 -1
  128. package/es/components/Select/Select.js +1 -1
  129. package/es/components/Select/utils/getCorrectHeight.js.map +1 -1
  130. package/es/hooks/useOutsideClick.js +1 -1
  131. package/es/hooks/useOutsideClick.js.map +1 -1
  132. package/es/index.css +20 -22
  133. package/package.json +2 -2
  134. package/styled-components/cjs/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.js +1 -2
  135. package/styled-components/cjs/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.styles.js +4 -10
  136. package/styled-components/cjs/components/Dropdown/Dropdown.js +58 -37
  137. package/styled-components/cjs/components/Dropdown/Dropdown.styles.js +9 -15
  138. package/styled-components/cjs/components/Dropdown/Dropdown.tokens.js +36 -2
  139. package/styled-components/cjs/components/Dropdown/FloatingPopover.js +109 -0
  140. package/styled-components/cjs/components/Dropdown/ui/DropdownInner/DropdownInner.js +17 -51
  141. package/styled-components/cjs/components/Dropdown/ui/DropdownItem/DropdownItem.js +29 -18
  142. package/styled-components/cjs/components/Dropdown/ui/DropdownItem/DropdownItem.styles.js +17 -19
  143. package/styled-components/cjs/components/Dropdown/utils/getItemByFocused.js +12 -0
  144. package/styled-components/cjs/components/Dropdown/utils/getItemId.js +9 -0
  145. package/styled-components/cjs/components/Dropdown/utils/getPlacement.js +15 -0
  146. package/styled-components/cjs/components/Dropdown/utils/index.js +23 -1
  147. package/styled-components/cjs/examples/plasma_b2c/components/Combobox/Combobox.config.js +4 -4
  148. package/styled-components/cjs/examples/plasma_b2c/components/Dropdown/Dropdown.config.js +5 -5
  149. package/styled-components/cjs/examples/plasma_b2c/components/Dropdown/Dropdown.stories.tsx +6 -5
  150. package/styled-components/cjs/examples/plasma_web/components/Combobox/Combobox.config.js +4 -4
  151. package/styled-components/cjs/examples/plasma_web/components/Dropdown/Dropdown.config.js +5 -5
  152. package/styled-components/cjs/examples/plasma_web/components/Dropdown/Dropdown.stories.tsx +6 -5
  153. package/styled-components/cjs/hooks/useOutsideClick.js +1 -1
  154. package/styled-components/es/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.js +1 -2
  155. package/styled-components/es/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.styles.js +4 -10
  156. package/styled-components/es/components/Dropdown/Dropdown.js +60 -40
  157. package/styled-components/es/components/Dropdown/Dropdown.styles.js +9 -15
  158. package/styled-components/es/components/Dropdown/Dropdown.tokens.js +35 -1
  159. package/styled-components/es/components/Dropdown/FloatingPopover.js +102 -0
  160. package/styled-components/es/components/Dropdown/ui/DropdownInner/DropdownInner.js +18 -52
  161. package/styled-components/es/components/Dropdown/ui/DropdownItem/DropdownItem.js +31 -20
  162. package/styled-components/es/components/Dropdown/ui/DropdownItem/DropdownItem.styles.js +18 -20
  163. package/styled-components/es/components/Dropdown/utils/getItemByFocused.js +6 -0
  164. package/styled-components/es/components/Dropdown/utils/getItemId.js +3 -0
  165. package/styled-components/es/components/Dropdown/utils/getPlacement.js +9 -0
  166. package/styled-components/es/components/Dropdown/utils/index.js +4 -1
  167. package/styled-components/es/examples/plasma_b2c/components/Combobox/Combobox.config.js +4 -4
  168. package/styled-components/es/examples/plasma_b2c/components/Dropdown/Dropdown.config.js +6 -6
  169. package/styled-components/es/examples/plasma_b2c/components/Dropdown/Dropdown.stories.tsx +6 -5
  170. package/styled-components/es/examples/plasma_web/components/Combobox/Combobox.config.js +4 -4
  171. package/styled-components/es/examples/plasma_web/components/Dropdown/Dropdown.config.js +6 -6
  172. package/styled-components/es/examples/plasma_web/components/Dropdown/Dropdown.stories.tsx +6 -5
  173. package/styled-components/es/hooks/useOutsideClick.js +1 -1
  174. package/types/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.d.ts.map +1 -1
  175. package/types/components/Combobox/ComboboxNew/ui/Inner/ui/Item/Item.styles.d.ts.map +1 -1
  176. package/types/components/Combobox/ComboboxOld/Combobox.types.d.ts +2 -1
  177. package/types/components/Combobox/ComboboxOld/Combobox.types.d.ts.map +1 -1
  178. package/types/components/Dropdown/Dropdown.d.ts +2 -1
  179. package/types/components/Dropdown/Dropdown.d.ts.map +1 -1
  180. package/types/components/Dropdown/Dropdown.styles.d.ts +1 -6
  181. package/types/components/Dropdown/Dropdown.styles.d.ts.map +1 -1
  182. package/types/components/Dropdown/Dropdown.tokens.d.ts +25 -0
  183. package/types/components/Dropdown/Dropdown.tokens.d.ts.map +1 -1
  184. package/types/components/Dropdown/Dropdown.types.d.ts +30 -4
  185. package/types/components/Dropdown/Dropdown.types.d.ts.map +1 -1
  186. package/types/components/Dropdown/FloatingPopover.d.ts +5 -0
  187. package/types/components/Dropdown/FloatingPopover.d.ts.map +1 -0
  188. package/types/components/Dropdown/index.d.ts +1 -1
  189. package/types/components/Dropdown/index.d.ts.map +1 -1
  190. package/types/components/Dropdown/ui/DropdownInner/DropdownInner.d.ts.map +1 -1
  191. package/types/components/Dropdown/ui/DropdownInner/DropdownInner.type.d.ts +1 -12
  192. package/types/components/Dropdown/ui/DropdownInner/DropdownInner.type.d.ts.map +1 -1
  193. package/types/components/Dropdown/ui/DropdownItem/DropdownItem.d.ts.map +1 -1
  194. package/types/components/Dropdown/ui/DropdownItem/DropdownItem.styles.d.ts +32 -3
  195. package/types/components/Dropdown/ui/DropdownItem/DropdownItem.styles.d.ts.map +1 -1
  196. package/types/components/Dropdown/ui/DropdownItem/DropdownItem.type.d.ts +1 -14
  197. package/types/components/Dropdown/ui/DropdownItem/DropdownItem.type.d.ts.map +1 -1
  198. package/types/components/Dropdown/utils/getItemByFocused.d.ts +4 -0
  199. package/types/components/Dropdown/utils/getItemByFocused.d.ts.map +1 -0
  200. package/types/components/Dropdown/utils/getItemId.d.ts +2 -0
  201. package/types/components/Dropdown/utils/getItemId.d.ts.map +1 -0
  202. package/types/components/Dropdown/utils/getPlacement.d.ts +3 -0
  203. package/types/components/Dropdown/utils/getPlacement.d.ts.map +1 -0
  204. package/types/components/Dropdown/utils/index.d.ts +3 -0
  205. package/types/components/Dropdown/utils/index.d.ts.map +1 -1
  206. package/types/components/Select/utils/getCorrectHeight.d.ts +2 -2
  207. package/types/components/Select/utils/getCorrectHeight.d.ts.map +1 -1
  208. package/types/examples/plasma_b2c/components/Dropdown/Dropdown.config.d.ts +3 -3
  209. package/types/examples/plasma_b2c/components/Dropdown/Dropdown.config.d.ts.map +1 -1
  210. package/types/examples/plasma_b2c/components/Dropdown/Dropdown.d.ts +4 -4
  211. package/types/examples/plasma_b2c/components/Dropdown/Dropdown.d.ts.map +1 -1
  212. package/types/examples/plasma_web/components/Dropdown/Dropdown.config.d.ts +3 -3
  213. package/types/examples/plasma_web/components/Dropdown/Dropdown.config.d.ts.map +1 -1
  214. package/types/examples/plasma_web/components/Dropdown/Dropdown.d.ts +4 -4
  215. package/types/examples/plasma_web/components/Dropdown/Dropdown.d.ts.map +1 -1
  216. package/types/hooks/useOutsideClick.d.ts +1 -1
  217. package/types/hooks/useOutsideClick.d.ts.map +1 -1
  218. package/cjs/components/Dropdown/Dropdown.styles_1tihqkp.css +0 -3
  219. package/cjs/components/Dropdown/ui/DropdownItem/DropdownItem.styles_blclup.css +0 -6
  220. package/es/components/Dropdown/Dropdown.styles_1tihqkp.css +0 -3
  221. package/es/components/Dropdown/ui/DropdownItem/DropdownItem.styles_blclup.css +0 -6
@@ -8,30 +8,33 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
8
8
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
9
9
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
10
10
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
11
- import React, { forwardRef, useReducer } from 'react';
12
- import { cx, getPlacements } from '../../utils';
11
+ import React, { createContext, forwardRef, useReducer, useRef } from 'react';
12
+ import { safeUseId } from '@salutejs/plasma-core';
13
+ import { cx } from '../../utils';
14
+ import { useOutsideClick } from '../../hooks';
13
15
  import { pathReducer } from './reducers/pathReducer';
14
16
  import { focusedPathReducer } from './reducers/focusedPathReducer';
15
17
  import { DropdownInner } from './ui';
16
18
  import { base as viewCSS } from './variations/_view/base';
17
19
  import { base as sizeCSS } from './variations/_size/base';
18
- import { Ul, StyledPopover, base } from './Dropdown.styles';
19
- import { childrenWithProps } from './utils';
20
+ import { Ul, base } from './Dropdown.styles';
21
+ import { childrenWithProps, getItemByFocused, getItemId, getPlacement } from './utils';
20
22
  import { classes } from './Dropdown.tokens';
21
23
  import { useKeyNavigation } from './hooks/useKeyboardNavigation';
22
24
  import { useHashMaps } from './hooks/useHashMaps';
25
+ import { FloatingPopover } from './FloatingPopover';
26
+ export var Context = /*#__PURE__*/createContext({});
23
27
 
24
28
  /**
25
29
  * Выпадающий список.
26
30
  */
27
31
  export var dropdownRoot = function dropdownRoot(Root) {
28
32
  return /*#__PURE__*/forwardRef(function (_ref, ref) {
33
+ var _getItemByFocused;
29
34
  var items = _ref.items,
30
35
  children = _ref.children,
31
- _ref$placement = _ref.placement,
32
- placement = _ref$placement === void 0 ? 'bottom' : _ref$placement,
33
- _ref$offset = _ref.offset,
34
- offset = _ref$offset === void 0 ? [0, 0] : _ref$offset,
36
+ placement = _ref.placement,
37
+ offset = _ref.offset,
35
38
  _ref$closeOnOverlayCl = _ref.closeOnOverlayClick,
36
39
  closeOnOverlayClick = _ref$closeOnOverlayCl === void 0 ? true : _ref$closeOnOverlayCl,
37
40
  onToggle = _ref.onToggle,
@@ -68,6 +71,25 @@ export var dropdownRoot = function dropdownRoot(Root) {
68
71
  _useHashMaps2 = _slicedToArray(_useHashMaps, 2),
69
72
  pathMap = _useHashMaps2[0],
70
73
  focusedToValueMap = _useHashMaps2[1];
74
+ var activeDescendantItemValue = ((_getItemByFocused = getItemByFocused(focusedPath, focusedToValueMap)) === null || _getItemByFocused === void 0 ? void 0 : _getItemByFocused.value) || '';
75
+ var floatingPopoverRef = useRef(null);
76
+ var treeId = safeUseId();
77
+
78
+ // Логика работы при клике за пределами выпадающего списка
79
+ var targetRef = useOutsideClick(function (event) {
80
+ if (!isCurrentListOpen || !closeOnOverlayClick) {
81
+ return;
82
+ }
83
+ dispatchPath({
84
+ type: 'reset'
85
+ });
86
+ dispatchFocusedPath({
87
+ type: 'reset'
88
+ });
89
+ if (onToggle) {
90
+ onToggle(false, event);
91
+ }
92
+ }, floatingPopoverRef);
71
93
  var handleGlobalToggle = function handleGlobalToggle(opened, event) {
72
94
  if (opened) {
73
95
  dispatchPath({
@@ -99,66 +121,64 @@ export var dropdownRoot = function dropdownRoot(Root) {
99
121
  }),
100
122
  onKeyDown = _useKeyNavigation.onKeyDown;
101
123
  var isCurrentListOpen = Boolean(path[0]);
102
- var getActiveDescendant = function getActiveDescendant() {
103
- var _focusedToValueMap$ge;
104
- var focusedPathAsString = focusedPath.reduce(function (acc, n) {
105
- return "".concat(acc, "/").concat(n);
106
- }, '').replace(/^(\/)/, '');
107
- return focusedToValueMap === null || focusedToValueMap === void 0 || (_focusedToValueMap$ge = focusedToValueMap.get(focusedPathAsString)) === null || _focusedToValueMap$ge === void 0 ? void 0 : _focusedToValueMap$ge.value.toString();
108
- };
109
- return /*#__PURE__*/React.createElement(StyledPopover, {
124
+ return /*#__PURE__*/React.createElement(Context.Provider, {
125
+ value: {
126
+ focusedPath: focusedPath,
127
+ size: size,
128
+ variant: variant,
129
+ itemRole: itemRole,
130
+ handleGlobalToggle: handleGlobalToggle,
131
+ closeOnSelect: closeOnSelect,
132
+ onHover: onHover,
133
+ onItemClick: onItemClick,
134
+ onItemSelect: onItemSelect,
135
+ hasArrow: hasArrow,
136
+ treeId: treeId
137
+ }
138
+ }, /*#__PURE__*/React.createElement(FloatingPopover, {
139
+ ref: floatingPopoverRef,
110
140
  opened: isCurrentListOpen,
111
141
  onToggle: handleGlobalToggle,
142
+ placement: getPlacement(placement),
112
143
  offset: offset,
113
- placement: getPlacements(placement),
144
+ portal: portal,
114
145
  trigger: trigger,
115
- closeOnOverlayClick: closeOnOverlayClick,
116
- isFocusTrapped: false,
117
146
  target: childrenWithProps(children, {
118
147
  role: 'combobox',
119
- 'aria-controls': 'tree_level_1',
148
+ 'aria-controls': "".concat(treeId, "_tree_level_1"),
120
149
  'aria-expanded': isCurrentListOpen,
121
- 'aria-activedescendant': getActiveDescendant(),
150
+ 'aria-activedescendant': activeDescendantItemValue ? getItemId(treeId, activeDescendantItemValue.toString()) : '',
122
151
  onKeyDown: onKeyDown
123
- }),
124
- preventOverflow: false,
125
- usePortal: Boolean(portal),
126
- frame: portal
152
+ })
127
153
  }, /*#__PURE__*/React.createElement(Root, _extends({
128
154
  className: cx(className, classes.dropdownRoot),
129
155
  ref: ref,
130
156
  view: view,
131
- size: size
157
+ size: size,
158
+ style: {
159
+ display: 'inline-block'
160
+ }
132
161
  }, rest), /*#__PURE__*/React.createElement(Ul, {
162
+ ref: targetRef,
163
+ id: "".concat(treeId, "_tree_level_1"),
164
+ role: "tree",
133
165
  listHeight: listHeight,
134
166
  listOverflow: listOverflow,
135
- role: "tree",
136
- id: "tree_level_1",
137
167
  listWidth: listWidth
138
168
  }, items.map(function (item, index) {
139
169
  return /*#__PURE__*/React.createElement(DropdownInner, {
140
170
  key: "".concat(index, "/0"),
141
171
  item: item,
142
172
  currentLevel: 0,
143
- focusedPath: focusedPath,
144
173
  trigger: trigger,
145
174
  path: path,
146
175
  dispatchPath: dispatchPath,
147
176
  index: index,
148
- itemRole: itemRole,
149
177
  listHeight: listHeight,
150
178
  listOverflow: listOverflow,
151
- handleGlobalToggle: handleGlobalToggle,
152
- closeOnSelect: closeOnSelect,
153
- onHover: onHover,
154
- onItemSelect: onItemSelect,
155
- onItemClick: onItemClick,
156
- listWidth: listWidth,
157
- variant: variant,
158
- hasArrow: hasArrow,
159
- size: size
179
+ listWidth: listWidth
160
180
  });
161
- }))));
181
+ })))));
162
182
  });
163
183
  };
164
184
  export var dropdownConfig = {
@@ -1,37 +1,21 @@
1
1
  import _styled from "@emotion/styled/base";
2
- function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
3
2
  import { css } from '@emotion/react';
4
- import { component } from '../../engines';
5
- import { popoverConfig, popoverClasses } from '../Popover';
6
3
  import { getCorrectHeight } from './utils';
7
- import { tokens } from './Dropdown.tokens';
8
- var Popover = /*#__PURE__*/component(popoverConfig);
9
- export var StyledPopover = /*#__PURE__*/_styled(Popover, {
10
- target: "euqmbvx1",
11
- label: "plasma-new-hope__StyledPopover"
12
- })(".", /*#__PURE__*/String(popoverClasses.wrapper), ",.", /*#__PURE__*/String(popoverClasses.target), "{display:block;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvRHJvcGRvd24vRHJvcGRvd24uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVk0QyIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMtZW1vdGlvbi9jb21wb25lbnRzL0Ryb3Bkb3duL0Ryb3Bkb3duLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuaW1wb3J0IHsgY29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZW5naW5lcyc7XG5pbXBvcnQgeyBwb3BvdmVyQ29uZmlnLCBwb3BvdmVyQ2xhc3NlcyB9IGZyb20gJy4uL1BvcG92ZXInO1xuXG5pbXBvcnQgeyBnZXRDb3JyZWN0SGVpZ2h0IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBEcm9wZG93blByb3BzIH0gZnJvbSAnLi9Ecm9wZG93bi50eXBlcyc7XG5pbXBvcnQgeyB0b2tlbnMgfSBmcm9tICcuL0Ryb3Bkb3duLnRva2Vucyc7XG5cbmNvbnN0IFBvcG92ZXIgPSBjb21wb25lbnQocG9wb3ZlckNvbmZpZyk7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRQb3BvdmVyID0gc3R5bGVkKFBvcG92ZXIpYFxuICAgIC4ke1N0cmluZyhwb3BvdmVyQ2xhc3Nlcy53cmFwcGVyKX0sIC4ke1N0cmluZyhwb3BvdmVyQ2xhc3Nlcy50YXJnZXQpfSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBVbCA9IHN0eWxlZC51bDx7XG4gICAgbGlzdEhlaWdodDogRHJvcGRvd25Qcm9wc1snbGlzdEhlaWdodCddO1xuICAgIGxpc3RPdmVyZmxvdzogRHJvcGRvd25Qcm9wc1snbGlzdE92ZXJmbG93J107XG4gICAgaXNJbm5lclVsPzogYm9vbGVhbjtcbiAgICBsaXN0V2lkdGg/OiBEcm9wZG93blByb3BzWydsaXN0V2lkdGgnXTtcbn0+YFxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgICBiYWNrZ3JvdW5kOiB2YXIoJHt0b2tlbnMuYmFja2dyb3VuZH0pO1xuICAgIGJveC1zaGFkb3c6IHZhcigke3Rva2Vucy5ib3hTaGFkb3d9KTtcblxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigke3Rva2Vucy5ib3JkZXJSYWRpdXN9KTtcbiAgICB3aWR0aDogJHsoeyBsaXN0V2lkdGggfSkgPT4gbGlzdFdpZHRoIHx8IGB2YXIoJHt0b2tlbnMud2lkdGh9KWB9O1xuICAgIGhlaWdodDogJHsoeyBsaXN0SGVpZ2h0IH0pID0+IChsaXN0SGVpZ2h0ID8gZ2V0Q29ycmVjdEhlaWdodChsaXN0SGVpZ2h0KSA6ICdhdXRvJyl9O1xuICAgIG92ZXJmbG93OiAkeyh7IGxpc3RPdmVyZmxvdyB9KSA9PiBsaXN0T3ZlcmZsb3cgfHwgJ2luaXRpYWwnfTtcblxuICAgIG1hcmdpbjogJHsoeyBpc0lubmVyVWwgfSkgPT4gKGlzSW5uZXJVbCA/IGBjYWxjKHZhcigke3Rva2Vucy5wYWRkaW5nfSkgKiAtMSkgMCAwIHZhcigke3Rva2Vucy5wYWRkaW5nfSlgIDogMCl9O1xuICAgIHBhZGRpbmc6IHZhcigke3Rva2Vucy5wYWRkaW5nfSk7XG5gO1xuXG5leHBvcnQgY29uc3QgYmFzZSA9IGNzc2BcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5gO1xuIl19 */"));
4
+ import { tokens, constants } from './Dropdown.tokens';
13
5
  export var Ul = /*#__PURE__*/_styled("ul", {
14
6
  target: "euqmbvx0",
15
7
  label: "plasma-new-hope__Ul"
16
- })("box-sizing:border-box;background:var(", tokens.background, ");box-shadow:var(", tokens.boxShadow, ");border-radius:var(", tokens.borderRadius, ");width:", function (_ref) {
8
+ })("box-sizing:border-box;width:", function (_ref) {
17
9
  var listWidth = _ref.listWidth;
18
10
  return listWidth || "var(".concat(tokens.width, ")");
19
11
  }, ";height:", function (_ref2) {
20
12
  var listHeight = _ref2.listHeight;
21
13
  return listHeight ? getCorrectHeight(listHeight) : 'auto';
22
- }, ";overflow:", function (_ref3) {
23
- var listOverflow = _ref3.listOverflow;
14
+ }, ";margin:", function (_ref3) {
15
+ var isInnerUl = _ref3.isInnerUl;
16
+ return isInnerUl ? "calc(var(".concat(tokens.padding, ") * -1) 0.125rem 0") : 0;
17
+ }, ";padding:var(", tokens.padding, ") 0;overflow:", function (_ref4) {
18
+ var listOverflow = _ref4.listOverflow;
24
19
  return listOverflow || 'initial';
25
- }, ";margin:", function (_ref4) {
26
- var isInnerUl = _ref4.isInnerUl;
27
- return isInnerUl ? "calc(var(".concat(tokens.padding, ") * -1) 0 0 var(").concat(tokens.padding, ")") : 0;
28
- }, ";padding:var(", tokens.padding, ");" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvRHJvcGRvd24vRHJvcGRvd24uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVCRSIsImZpbGUiOiIuLi8uLi8uLi8uLi9zcmMtZW1vdGlvbi9jb21wb25lbnRzL0Ryb3Bkb3duL0Ryb3Bkb3duLnN0eWxlcy50cyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcblxuaW1wb3J0IHsgY29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZW5naW5lcyc7XG5pbXBvcnQgeyBwb3BvdmVyQ29uZmlnLCBwb3BvdmVyQ2xhc3NlcyB9IGZyb20gJy4uL1BvcG92ZXInO1xuXG5pbXBvcnQgeyBnZXRDb3JyZWN0SGVpZ2h0IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBEcm9wZG93blByb3BzIH0gZnJvbSAnLi9Ecm9wZG93bi50eXBlcyc7XG5pbXBvcnQgeyB0b2tlbnMgfSBmcm9tICcuL0Ryb3Bkb3duLnRva2Vucyc7XG5cbmNvbnN0IFBvcG92ZXIgPSBjb21wb25lbnQocG9wb3ZlckNvbmZpZyk7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRQb3BvdmVyID0gc3R5bGVkKFBvcG92ZXIpYFxuICAgIC4ke1N0cmluZyhwb3BvdmVyQ2xhc3Nlcy53cmFwcGVyKX0sIC4ke1N0cmluZyhwb3BvdmVyQ2xhc3Nlcy50YXJnZXQpfSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBVbCA9IHN0eWxlZC51bDx7XG4gICAgbGlzdEhlaWdodDogRHJvcGRvd25Qcm9wc1snbGlzdEhlaWdodCddO1xuICAgIGxpc3RPdmVyZmxvdzogRHJvcGRvd25Qcm9wc1snbGlzdE92ZXJmbG93J107XG4gICAgaXNJbm5lclVsPzogYm9vbGVhbjtcbiAgICBsaXN0V2lkdGg/OiBEcm9wZG93blByb3BzWydsaXN0V2lkdGgnXTtcbn0+YFxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cbiAgICBiYWNrZ3JvdW5kOiB2YXIoJHt0b2tlbnMuYmFja2dyb3VuZH0pO1xuICAgIGJveC1zaGFkb3c6IHZhcigke3Rva2Vucy5ib3hTaGFkb3d9KTtcblxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigke3Rva2Vucy5ib3JkZXJSYWRpdXN9KTtcbiAgICB3aWR0aDogJHsoeyBsaXN0V2lkdGggfSkgPT4gbGlzdFdpZHRoIHx8IGB2YXIoJHt0b2tlbnMud2lkdGh9KWB9O1xuICAgIGhlaWdodDogJHsoeyBsaXN0SGVpZ2h0IH0pID0+IChsaXN0SGVpZ2h0ID8gZ2V0Q29ycmVjdEhlaWdodChsaXN0SGVpZ2h0KSA6ICdhdXRvJyl9O1xuICAgIG92ZXJmbG93OiAkeyh7IGxpc3RPdmVyZmxvdyB9KSA9PiBsaXN0T3ZlcmZsb3cgfHwgJ2luaXRpYWwnfTtcblxuICAgIG1hcmdpbjogJHsoeyBpc0lubmVyVWwgfSkgPT4gKGlzSW5uZXJVbCA/IGBjYWxjKHZhcigke3Rva2Vucy5wYWRkaW5nfSkgKiAtMSkgMCAwIHZhcigke3Rva2Vucy5wYWRkaW5nfSlgIDogMCl9O1xuICAgIHBhZGRpbmc6IHZhcigke3Rva2Vucy5wYWRkaW5nfSk7XG5gO1xuXG5leHBvcnQgY29uc3QgYmFzZSA9IGNzc2BcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5gO1xuIl19 */"));
29
- export var base = process.env.NODE_ENV === "production" ? {
30
- name: "1mufh2u-plasma-new-hope__base",
31
- styles: "display:inline-block;label:plasma-new-hope__base;"
32
- } : {
33
- name: "1mufh2u-plasma-new-hope__base",
34
- styles: "display:inline-block;label:plasma-new-hope__base;",
35
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvRHJvcGRvd24vRHJvcGRvd24uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNDdUIiLCJmaWxlIjoiLi4vLi4vLi4vLi4vc3JjLWVtb3Rpb24vY29tcG9uZW50cy9Ecm9wZG93bi9Ecm9wZG93bi5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmltcG9ydCB7IGNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2VuZ2luZXMnO1xuaW1wb3J0IHsgcG9wb3ZlckNvbmZpZywgcG9wb3ZlckNsYXNzZXMgfSBmcm9tICcuLi9Qb3BvdmVyJztcblxuaW1wb3J0IHsgZ2V0Q29ycmVjdEhlaWdodCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgRHJvcGRvd25Qcm9wcyB9IGZyb20gJy4vRHJvcGRvd24udHlwZXMnO1xuaW1wb3J0IHsgdG9rZW5zIH0gZnJvbSAnLi9Ecm9wZG93bi50b2tlbnMnO1xuXG5jb25zdCBQb3BvdmVyID0gY29tcG9uZW50KHBvcG92ZXJDb25maWcpO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkUG9wb3ZlciA9IHN0eWxlZChQb3BvdmVyKWBcbiAgICAuJHtTdHJpbmcocG9wb3ZlckNsYXNzZXMud3JhcHBlcil9LCAuJHtTdHJpbmcocG9wb3ZlckNsYXNzZXMudGFyZ2V0KX0ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5gO1xuXG5leHBvcnQgY29uc3QgVWwgPSBzdHlsZWQudWw8e1xuICAgIGxpc3RIZWlnaHQ6IERyb3Bkb3duUHJvcHNbJ2xpc3RIZWlnaHQnXTtcbiAgICBsaXN0T3ZlcmZsb3c6IERyb3Bkb3duUHJvcHNbJ2xpc3RPdmVyZmxvdyddO1xuICAgIGlzSW5uZXJVbD86IGJvb2xlYW47XG4gICAgbGlzdFdpZHRoPzogRHJvcGRvd25Qcm9wc1snbGlzdFdpZHRoJ107XG59PmBcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuXG4gICAgYmFja2dyb3VuZDogdmFyKCR7dG9rZW5zLmJhY2tncm91bmR9KTtcbiAgICBib3gtc2hhZG93OiB2YXIoJHt0b2tlbnMuYm94U2hhZG93fSk7XG5cbiAgICBib3JkZXItcmFkaXVzOiB2YXIoJHt0b2tlbnMuYm9yZGVyUmFkaXVzfSk7XG4gICAgd2lkdGg6ICR7KHsgbGlzdFdpZHRoIH0pID0+IGxpc3RXaWR0aCB8fCBgdmFyKCR7dG9rZW5zLndpZHRofSlgfTtcbiAgICBoZWlnaHQ6ICR7KHsgbGlzdEhlaWdodCB9KSA9PiAobGlzdEhlaWdodCA/IGdldENvcnJlY3RIZWlnaHQobGlzdEhlaWdodCkgOiAnYXV0bycpfTtcbiAgICBvdmVyZmxvdzogJHsoeyBsaXN0T3ZlcmZsb3cgfSkgPT4gbGlzdE92ZXJmbG93IHx8ICdpbml0aWFsJ307XG5cbiAgICBtYXJnaW46ICR7KHsgaXNJbm5lclVsIH0pID0+IChpc0lubmVyVWwgPyBgY2FsYyh2YXIoJHt0b2tlbnMucGFkZGluZ30pICogLTEpIDAgMCB2YXIoJHt0b2tlbnMucGFkZGluZ30pYCA6IDApfTtcbiAgICBwYWRkaW5nOiB2YXIoJHt0b2tlbnMucGFkZGluZ30pO1xuYDtcblxuZXhwb3J0IGNvbnN0IGJhc2UgPSBjc3NgXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuYDtcbiJdfQ== */",
36
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__
37
- };
20
+ }, ";background:var(", constants.background, ");box-shadow:", constants.boxShadow, ";border-radius:var(", tokens.borderRadius, ");" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvRHJvcGRvd24vRHJvcGRvd24uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlFIiwiZmlsZSI6Ii4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvRHJvcGRvd24vRHJvcGRvd24uc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuXG5pbXBvcnQgeyBnZXRDb3JyZWN0SGVpZ2h0IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBEcm9wZG93blByb3BzIH0gZnJvbSAnLi9Ecm9wZG93bi50eXBlcyc7XG5pbXBvcnQgeyB0b2tlbnMsIGNvbnN0YW50cyB9IGZyb20gJy4vRHJvcGRvd24udG9rZW5zJztcblxuZXhwb3J0IGNvbnN0IFVsID0gc3R5bGVkLnVsPHtcbiAgICBsaXN0SGVpZ2h0OiBEcm9wZG93blByb3BzWydsaXN0SGVpZ2h0J107XG4gICAgbGlzdE92ZXJmbG93OiBEcm9wZG93blByb3BzWydsaXN0T3ZlcmZsb3cnXTtcbiAgICBsaXN0V2lkdGg/OiBEcm9wZG93blByb3BzWydsaXN0V2lkdGgnXTtcbiAgICBpc0lubmVyVWw/OiBib29sZWFuO1xufT5gXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICB3aWR0aDogJHsoeyBsaXN0V2lkdGggfSkgPT4gbGlzdFdpZHRoIHx8IGB2YXIoJHt0b2tlbnMud2lkdGh9KWB9O1xuICAgIGhlaWdodDogJHsoeyBsaXN0SGVpZ2h0IH0pID0+IChsaXN0SGVpZ2h0ID8gZ2V0Q29ycmVjdEhlaWdodChsaXN0SGVpZ2h0KSA6ICdhdXRvJyl9O1xuICAgIG1hcmdpbjogJHsoeyBpc0lubmVyVWwgfSkgPT4gKGlzSW5uZXJVbCA/IGBjYWxjKHZhcigke3Rva2Vucy5wYWRkaW5nfSkgKiAtMSkgMC4xMjVyZW0gMGAgOiAwKX07XG4gICAgcGFkZGluZzogdmFyKCR7dG9rZW5zLnBhZGRpbmd9KSAwO1xuICAgIG92ZXJmbG93OiAkeyh7IGxpc3RPdmVyZmxvdyB9KSA9PiBsaXN0T3ZlcmZsb3cgfHwgJ2luaXRpYWwnfTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoJHtjb25zdGFudHMuYmFja2dyb3VuZH0pO1xuICAgIGJveC1zaGFkb3c6ICR7Y29uc3RhbnRzLmJveFNoYWRvd307XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKCR7dG9rZW5zLmJvcmRlclJhZGl1c30pO1xuYDtcblxuZXhwb3J0IGNvbnN0IGJhc2UgPSBjc3NgYDtcbiJdfQ== */"));
21
+ export var base = /*#__PURE__*/css(";label:plasma-new-hope__base;" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy1lbW90aW9uL2NvbXBvbmVudHMvRHJvcGRvd24vRHJvcGRvd24uc3R5bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdCdUIiLCJmaWxlIjoiLi4vLi4vLi4vLi4vc3JjLWVtb3Rpb24vY29tcG9uZW50cy9Ecm9wZG93bi9Ecm9wZG93bi5zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5cbmltcG9ydCB7IGdldENvcnJlY3RIZWlnaHQgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IERyb3Bkb3duUHJvcHMgfSBmcm9tICcuL0Ryb3Bkb3duLnR5cGVzJztcbmltcG9ydCB7IHRva2VucywgY29uc3RhbnRzIH0gZnJvbSAnLi9Ecm9wZG93bi50b2tlbnMnO1xuXG5leHBvcnQgY29uc3QgVWwgPSBzdHlsZWQudWw8e1xuICAgIGxpc3RIZWlnaHQ6IERyb3Bkb3duUHJvcHNbJ2xpc3RIZWlnaHQnXTtcbiAgICBsaXN0T3ZlcmZsb3c6IERyb3Bkb3duUHJvcHNbJ2xpc3RPdmVyZmxvdyddO1xuICAgIGxpc3RXaWR0aD86IERyb3Bkb3duUHJvcHNbJ2xpc3RXaWR0aCddO1xuICAgIGlzSW5uZXJVbD86IGJvb2xlYW47XG59PmBcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIHdpZHRoOiAkeyh7IGxpc3RXaWR0aCB9KSA9PiBsaXN0V2lkdGggfHwgYHZhcigke3Rva2Vucy53aWR0aH0pYH07XG4gICAgaGVpZ2h0OiAkeyh7IGxpc3RIZWlnaHQgfSkgPT4gKGxpc3RIZWlnaHQgPyBnZXRDb3JyZWN0SGVpZ2h0KGxpc3RIZWlnaHQpIDogJ2F1dG8nKX07XG4gICAgbWFyZ2luOiAkeyh7IGlzSW5uZXJVbCB9KSA9PiAoaXNJbm5lclVsID8gYGNhbGModmFyKCR7dG9rZW5zLnBhZGRpbmd9KSAqIC0xKSAwLjEyNXJlbSAwYCA6IDApfTtcbiAgICBwYWRkaW5nOiB2YXIoJHt0b2tlbnMucGFkZGluZ30pIDA7XG4gICAgb3ZlcmZsb3c6ICR7KHsgbGlzdE92ZXJmbG93IH0pID0+IGxpc3RPdmVyZmxvdyB8fCAnaW5pdGlhbCd9O1xuICAgIGJhY2tncm91bmQ6IHZhcigke2NvbnN0YW50cy5iYWNrZ3JvdW5kfSk7XG4gICAgYm94LXNoYWRvdzogJHtjb25zdGFudHMuYm94U2hhZG93fTtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoJHt0b2tlbnMuYm9yZGVyUmFkaXVzfSk7XG5gO1xuXG5leHBvcnQgY29uc3QgYmFzZSA9IGNzc2BgO1xuIl19 */"));
@@ -3,7 +3,7 @@ export var classes = {
3
3
  dropdownItemIsFocused: 'dropdown-item-is-focused',
4
4
  dropdownItemIsDisabled: 'dropdown-item-is-disabled',
5
5
  dropdownItemIsActive: 'dropdown-item-is-active',
6
- dropdownItemIsSelected: 'dropdownItemIsSelected'
6
+ dropdownItemIsSelected: 'dropdown-item-is-selected'
7
7
  };
8
8
  export var tokens = {
9
9
  background: '--plasma-dropdown-background',
@@ -14,6 +14,8 @@ export var tokens = {
14
14
  disclosureIconColor: '--plasma-dropdown-disclosure-icon-color',
15
15
  disabledOpacity: '--plasma-dropdown-disabled-opacity',
16
16
  focusColor: '--plasma-dropdown-focus-color',
17
+ // Old
18
+
17
19
  dividerColor: '--plasma-dropdown-divider-color',
18
20
  dividerMarginTop: '--plasma-dropdown-divider-margin-top',
19
21
  dividerMarginTopTight: '--plasma-dropdown-divider-margin-top-tight',
@@ -28,6 +30,7 @@ export var tokens = {
28
30
  itemBackgroundSelectedHover: '--plasma-dropdown-item-background-selected-hover',
29
31
  // Old
30
32
  itemColor: '--plasma-dropdown-item-color',
33
+ // Old
31
34
  itemColorSelected: '--plasma-dropdown-item-color-selected',
32
35
  // Old
33
36
  itemColorSelectedHover: '--plasma-dropdown-item-color-selected-hover',
@@ -46,11 +49,17 @@ export var tokens = {
46
49
  itemMarginLeft: '--plasma-dropdown-item-margin-left',
47
50
  // Old
48
51
  itemPaddingTop: '--plasma-dropdown-item-padding-top',
52
+ // Old
49
53
  itemPaddingTopTight: '--plasma-dropdown-item-padding-top-tight',
54
+ // Old
50
55
  itemPaddingRight: '--plasma-dropdown-item-padding-right',
56
+ // Old
51
57
  itemPaddingBottom: '--plasma-dropdown-item-padding-bottom',
58
+ // Old
52
59
  itemPaddingBottomTight: '--plasma-dropdown-item-padding-bottom-tight',
60
+ // Old
53
61
  itemPaddingLeft: '--plasma-dropdown-item-padding-left',
62
+ // Old
54
63
  itemContentLeftWidth: '--plasma-dropdown-item-content-left-width',
55
64
  // Old
56
65
  itemContentLeftColor: '--plasma-dropdown-item-content-left-color',
@@ -65,6 +74,20 @@ export var tokens = {
65
74
  itemFontWeightBold: '--plasma-dropdown-item-letter-spacing',
66
75
  itemFontLetterSpacing: '--plasma-dropdown-item-line-height',
67
76
  itemFontLineHeight: '--plasma-dropdown-item-font-weight',
77
+ itemPadding: '--plasma-dropdown-item-padding',
78
+ itemPaddingTight: '--plasma-dropdown-item-padding-tight',
79
+ cellPadding: '--plasma-dropdown-cell-padding',
80
+ cellPaddingLeftContent: '--plasma-dropdown-cell-padding-left-content',
81
+ cellPaddingContent: '--plasma-dropdown-cell-padding-content',
82
+ cellPaddingRightContent: '--plasma-dropdown-cell-padding-right-content',
83
+ cellTextboxGap: '--plasma-dropdown-cell-textbox-gap',
84
+ cellGap: '--plasma-dropdown-cell-gap',
85
+ cellTitleFontFamily: '--plasma-dropdown-cell-title-font-family',
86
+ cellTitleFontSize: '--plasma-dropdown-cell-title-font-size',
87
+ cellTitleFontStyle: '--plasma-dropdown-cell-title-font-style',
88
+ cellTitleFontWeight: '--plasma-dropdown-cell-title-font-weight',
89
+ cellTitleLetterSpacing: '--plasma-dropdown-cell-title-letter-spacing',
90
+ cellTitleLineHeight: '--plasma-dropdown-cell-title-line-height',
68
91
  // TODO: Remove below tokens as soon as they are no longer needed
69
92
  footerBackground: '--plasma-dropdown-footer-background',
70
93
  footerWidth: '--plasma-dropdown-footer-width',
@@ -128,4 +151,15 @@ export var tokens = {
128
151
  groupLabelMarginRight: '--plasma-dropdown-group-label-margin-right',
129
152
  groupLabelMarginBottom: '--plasma-dropdown-group-label-margin-bottom',
130
153
  groupLabelMarginLeft: '--plasma-dropdown-group-label-margin-left'
154
+ };
155
+ export var constants = {
156
+ focusColor: '--surface-accent',
157
+ background: '--surface-solid-card-brightness',
158
+ boxShadow: '0px 4px 14px -4px rgba(8, 8, 8, 0.08), 0px 1px 4px -1px rgba(0, 0, 0, 0.04)',
159
+ disclosureIconColor: '--text-secondary',
160
+ itemBackground: '--plasma-colors-transparent',
161
+ itemBackgroundHover: '--surface-transparent-secondary',
162
+ opacity: '0.4',
163
+ cellTitleColor: '--text-primary',
164
+ cellBackgroundColor: '--plasma-colors-transparent'
131
165
  };
@@ -0,0 +1,102 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
7
+ import { flip, shift, useFloating, FloatingPortal, offset as offsetMiddleware, autoPlacement } from '@floating-ui/react';
8
+ import React, { forwardRef } from 'react';
9
+ import { safeUseId } from '@salutejs/plasma-core';
10
+ var FloatingPopover = /*#__PURE__*/forwardRef(function (_ref, ref) {
11
+ var target = _ref.target,
12
+ children = _ref.children,
13
+ opened = _ref.opened,
14
+ onToggle = _ref.onToggle,
15
+ placement = _ref.placement,
16
+ portal = _ref.portal,
17
+ _ref$offset = _ref.offset,
18
+ offset = _ref$offset === void 0 ? [0, 0] : _ref$offset,
19
+ isInner = _ref.isInner,
20
+ trigger = _ref.trigger;
21
+ var _useFloating = useFloating({
22
+ placement: placement === 'auto' ? undefined : placement,
23
+ open: opened,
24
+ middleware: [placement === 'auto' && autoPlacement(), offsetMiddleware({
25
+ mainAxis: offset[1],
26
+ crossAxis: offset[0]
27
+ }), flip({
28
+ fallbackAxisSideDirection: 'end'
29
+ }), shift()]
30
+ }),
31
+ refs = _useFloating.refs,
32
+ floatingStyles = _useFloating.floatingStyles;
33
+ var wrappedId = safeUseId();
34
+ var handleTargetClick = function handleTargetClick(event) {
35
+ if (trigger === 'hover') {
36
+ return;
37
+ }
38
+ if (onToggle) {
39
+ onToggle(!opened, event);
40
+ }
41
+ };
42
+ var handleTargetMouseEnter = function handleTargetMouseEnter(event) {
43
+ if (trigger === 'click' || opened) {
44
+ return;
45
+ }
46
+ onToggle(true, event);
47
+ };
48
+ var handleTargetMouseLeave = function handleTargetMouseLeave(event) {
49
+ if (event.relatedTarget instanceof HTMLElement && refs.floating.current instanceof HTMLElement) {
50
+ var _refs$floating$curren;
51
+ if (trigger === 'click' || !opened || event.relatedTarget && refs.floating && (_refs$floating$curren = refs.floating.current) !== null && _refs$floating$curren !== void 0 && _refs$floating$curren.contains(event.relatedTarget)) {
52
+ return;
53
+ }
54
+ onToggle(false, event);
55
+ }
56
+ };
57
+ var handleFloatingMouseLeave = function handleFloatingMouseLeave(event) {
58
+ if (event.relatedTarget instanceof HTMLElement && refs.reference.current instanceof HTMLElement) {
59
+ var _refs$reference$curre;
60
+ if (trigger === 'click' || !opened || event.relatedTarget && refs.reference && (_refs$reference$curre = refs.reference.current) !== null && _refs$reference$curre !== void 0 && _refs$reference$curre.contains(event.relatedTarget)) {
61
+ return;
62
+ }
63
+ onToggle(false, event);
64
+ }
65
+ };
66
+ return /*#__PURE__*/React.createElement("div", {
67
+ id: wrappedId,
68
+ style: {
69
+ display: isInner ? 'block' : 'inline-block'
70
+ },
71
+ ref: ref
72
+ }, /*#__PURE__*/React.createElement("div", {
73
+ ref: refs.setReference,
74
+ onClick: handleTargetClick,
75
+ onMouseEnter: handleTargetMouseEnter,
76
+ onMouseLeave: handleTargetMouseLeave
77
+ }, target), opened && /*#__PURE__*/React.createElement(FloatingPortal, getFloatingPortalProps(portal, wrappedId), /*#__PURE__*/React.createElement("div", {
78
+ ref: refs.setFloating,
79
+ onMouseLeave: handleFloatingMouseLeave,
80
+ style: _objectSpread(_objectSpread({}, floatingStyles), {}, {
81
+ zIndex: 1
82
+ })
83
+ }, children)));
84
+ });
85
+ // root - принимает ref контейнера портала.
86
+ // id - если есть портал - не используется, если портала нет - подставляется 'wrappedId'.
87
+ var getFloatingPortalProps = function getFloatingPortalProps(portal, wrappedId) {
88
+ if (!portal) {
89
+ return {
90
+ id: wrappedId
91
+ };
92
+ }
93
+ if (typeof portal === 'string') {
94
+ return {
95
+ id: portal
96
+ };
97
+ }
98
+ return {
99
+ root: portal
100
+ };
101
+ };
102
+ export { FloatingPopover };
@@ -1,26 +1,18 @@
1
1
  import React from 'react';
2
+ import { safeUseId } from '@salutejs/plasma-core';
2
3
  import { DropdownItem } from '..';
3
- import { Ul, StyledPopover } from '../../Dropdown.styles';
4
+ import { Ul } from '../../Dropdown.styles';
5
+ import { FloatingPopover } from '../../FloatingPopover';
4
6
  var DropdownInner = function DropdownInner(_ref) {
5
7
  var item = _ref.item,
6
8
  currentLevel = _ref.currentLevel,
7
- focusedPath = _ref.focusedPath,
8
9
  path = _ref.path,
9
10
  dispatchPath = _ref.dispatchPath,
10
11
  index = _ref.index,
11
12
  trigger = _ref.trigger,
12
- itemRole = _ref.itemRole,
13
13
  listHeight = _ref.listHeight,
14
14
  listOverflow = _ref.listOverflow,
15
- handleGlobalToggle = _ref.handleGlobalToggle,
16
- closeOnSelect = _ref.closeOnSelect,
17
- onHover = _ref.onHover,
18
- onItemSelect = _ref.onItemSelect,
19
- onItemClick = _ref.onItemClick,
20
- listWidth = _ref.listWidth,
21
- variant = _ref.variant,
22
- hasArrow = _ref.hasArrow,
23
- size = _ref.size;
15
+ listWidth = _ref.listWidth;
24
16
  var handleToggle = function handleToggle(opened) {
25
17
  if (opened) {
26
18
  dispatchPath({
@@ -36,80 +28,54 @@ var DropdownInner = function DropdownInner(_ref) {
36
28
  }
37
29
  };
38
30
  var isCurrentListOpen = path[currentLevel + 1] === item.value.toString();
39
- var listId = "tree_level_".concat(currentLevel + 2);
31
+ var treeId = safeUseId();
32
+ var listId = "".concat(treeId, "_tree_level_").concat(currentLevel + 2);
40
33
  var nextLevel = currentLevel + 1;
41
34
  if (item !== null && item !== void 0 && item.items) {
42
- return /*#__PURE__*/React.createElement(StyledPopover, {
43
- opened: isCurrentListOpen,
44
- usePortal: false,
35
+ return /*#__PURE__*/React.createElement(FloatingPopover, {
45
36
  placement: "right-start",
37
+ opened: isCurrentListOpen,
38
+ onToggle: handleToggle,
46
39
  trigger: trigger,
47
40
  target: /*#__PURE__*/React.createElement(DropdownItem, {
48
41
  item: item,
49
42
  index: index,
50
43
  path: path,
51
- focusedPath: focusedPath,
52
44
  currentLevel: currentLevel,
53
- itemRole: itemRole,
54
- onHover: onHover,
55
- onItemSelect: onItemSelect,
56
- onItemClick: onItemClick,
57
- variant: variant,
58
- hasArrow: hasArrow,
59
45
  ariaControls: listId,
60
46
  ariaExpanded: isCurrentListOpen,
61
47
  ariaLevel: nextLevel,
62
- ariaLabel: item.label,
63
- size: size
48
+ ariaLabel: item.label
64
49
  }),
65
- onToggle: handleToggle,
66
- isFocusTrapped: false,
67
- preventOverflow: false
50
+ isInner: true
68
51
  }, /*#__PURE__*/React.createElement(Ul, {
52
+ id: listId,
53
+ role: "group",
54
+ isInnerUl: true,
69
55
  listHeight: listHeight,
70
56
  listOverflow: listOverflow,
71
- role: "group",
72
- id: listId,
73
- listWidth: listWidth,
74
- isInnerUl: true
57
+ listWidth: listWidth
75
58
  }, item.items.map(function (innerItem, innerIndex) {
76
59
  return /*#__PURE__*/React.createElement(DropdownInner, {
77
60
  key: "".concat(innerIndex, "/").concat(currentLevel),
78
61
  item: innerItem,
79
62
  currentLevel: nextLevel,
80
- focusedPath: focusedPath,
81
63
  path: path,
82
64
  dispatchPath: dispatchPath,
83
65
  index: innerIndex,
84
66
  trigger: trigger,
85
- itemRole: itemRole,
86
67
  listHeight: listHeight,
87
68
  listOverflow: listOverflow,
88
- handleGlobalToggle: handleGlobalToggle,
89
- closeOnSelect: closeOnSelect,
90
- onHover: onHover,
91
- onItemSelect: onItemSelect,
92
- onItemClick: onItemClick,
93
- listWidth: listWidth,
94
- variant: variant,
95
- hasArrow: hasArrow,
96
- size: size
69
+ listWidth: listWidth
97
70
  });
98
71
  })));
99
72
  }
100
73
  return /*#__PURE__*/React.createElement(DropdownItem, {
101
74
  item: item,
75
+ path: path,
102
76
  index: index,
103
- focusedPath: focusedPath,
104
77
  currentLevel: currentLevel,
105
- itemRole: itemRole,
106
- handleGlobalToggle: handleGlobalToggle,
107
- closeOnSelect: closeOnSelect,
108
- onHover: onHover,
109
- onItemSelect: onItemSelect,
110
- onItemClick: onItemClick,
111
- variant: variant,
112
- size: size
78
+ ariaLevel: nextLevel
113
79
  });
114
80
  };
115
81
  export { DropdownInner };
@@ -1,28 +1,19 @@
1
- import React, { useEffect, useRef } from 'react';
1
+ import React, { useEffect, useRef, useContext } from 'react';
2
2
  import { classes } from '../../Dropdown.tokens';
3
3
  import { cx } from '../../../../utils';
4
4
  import { IconDisclosureRight } from '../../../_Icon';
5
- import { StyledContentLeft, StyledContentRight, StyledText, Wrapper, DisclosureIconWrapper, Divider } from './DropdownItem.styles';
5
+ import { Context } from '../../Dropdown';
6
+ import { getItemId } from '../../utils';
7
+ import { Wrapper, DisclosureIconWrapper, Divider, CellWrapper, StyledCell } from './DropdownItem.styles';
6
8
  export var DropdownItem = function DropdownItem(_ref) {
7
9
  var item = _ref.item,
8
10
  path = _ref.path,
9
- focusedPath = _ref.focusedPath,
10
11
  currentLevel = _ref.currentLevel,
11
12
  index = _ref.index,
12
- itemRole = _ref.itemRole,
13
- closeOnSelect = _ref.closeOnSelect,
14
- handleGlobalToggle = _ref.handleGlobalToggle,
15
- onHover = _ref.onHover,
16
- onItemSelect = _ref.onItemSelect,
17
- onItemClick = _ref.onItemClick,
18
13
  ariaControls = _ref.ariaControls,
19
14
  ariaExpanded = _ref.ariaExpanded,
20
- ariaHasPopup = _ref.ariaHasPopup,
21
15
  ariaLevel = _ref.ariaLevel,
22
- ariaLabel = _ref.ariaLabel,
23
- variant = _ref.variant,
24
- hasArrow = _ref.hasArrow,
25
- size = _ref.size;
16
+ ariaLabel = _ref.ariaLabel;
26
17
  var value = item.value,
27
18
  label = item.label,
28
19
  disabled = item.disabled,
@@ -32,6 +23,19 @@ export var DropdownItem = function DropdownItem(_ref) {
32
23
  dividerBefore = item.dividerBefore,
33
24
  dividerAfter = item.dividerAfter;
34
25
  var ref = useRef(null);
26
+ var _useContext = useContext(Context),
27
+ focusedPath = _useContext.focusedPath,
28
+ size = _useContext.size,
29
+ variant = _useContext.variant,
30
+ itemRole = _useContext.itemRole,
31
+ handleGlobalToggle = _useContext.handleGlobalToggle,
32
+ closeOnSelect = _useContext.closeOnSelect,
33
+ onHover = _useContext.onHover,
34
+ onItemSelect = _useContext.onItemSelect,
35
+ onItemClick = _useContext.onItemClick,
36
+ hasArrow = _useContext.hasArrow,
37
+ treeId = _useContext.treeId;
38
+ var hasDescendants = Boolean(item.items);
35
39
  var disclosureIconSize = size === 'xs' ? 'xs' : 's';
36
40
  var isDisabledClassName = disabled || isDisabled ? classes.dropdownItemIsDisabled : undefined;
37
41
  var focusedClass = currentLevel === focusedPath.length - 1 && index === (focusedPath === null || focusedPath === void 0 ? void 0 : focusedPath[currentLevel]) ? classes.dropdownItemIsFocused : undefined;
@@ -55,7 +59,9 @@ export var DropdownItem = function DropdownItem(_ref) {
55
59
  if (onItemClick) {
56
60
  onItemClick(item, event);
57
61
  }
58
- if (handleGlobalToggle && closeOnSelect) {
62
+
63
+ // Закрываем весь дропдаун целиком при клике на айтем без потомков. Только при closeOnSelect === true.
64
+ if (closeOnSelect && !hasDescendants) {
59
65
  handleGlobalToggle(false, event);
60
66
  }
61
67
  };
@@ -67,20 +73,25 @@ export var DropdownItem = function DropdownItem(_ref) {
67
73
  return /*#__PURE__*/React.createElement(React.Fragment, null, dividerBefore && /*#__PURE__*/React.createElement(Divider, {
68
74
  variant: variant
69
75
  }), /*#__PURE__*/React.createElement(Wrapper, {
76
+ ref: ref,
70
77
  className: cx(isDisabledClassName, focusedClass, activeClass),
71
- id: value.toString(),
78
+ id: getItemId(treeId, value.toString()),
72
79
  role: itemRole,
73
- ref: ref,
74
- "aria-disabled": disabled || isDisabled,
75
80
  onClick: handleClick,
76
81
  onMouseEnter: handleHover,
77
82
  variant: variant,
83
+ "aria-disabled": disabled || isDisabled,
78
84
  "aria-controls": ariaControls,
79
85
  "aria-expanded": ariaExpanded,
80
- "aria-haspopup": ariaHasPopup,
81
86
  "aria-level": ariaLevel,
82
87
  "aria-label": ariaLabel
83
- }, contentLeft && /*#__PURE__*/React.createElement(StyledContentLeft, null, contentLeft), /*#__PURE__*/React.createElement(StyledText, null, label), contentRight && /*#__PURE__*/React.createElement(StyledContentRight, null, contentRight), item.items && hasArrow && /*#__PURE__*/React.createElement(DisclosureIconWrapper, null, /*#__PURE__*/React.createElement(IconDisclosureRight, {
88
+ }, /*#__PURE__*/React.createElement(CellWrapper, null, /*#__PURE__*/React.createElement(StyledCell, {
89
+ contentLeft: contentLeft,
90
+ contentRight: contentRight,
91
+ alignContentLeft: "center",
92
+ alignContentRight: "center",
93
+ title: label
94
+ })), item.items && hasArrow && /*#__PURE__*/React.createElement(DisclosureIconWrapper, null, /*#__PURE__*/React.createElement(IconDisclosureRight, {
84
95
  size: disclosureIconSize,
85
96
  color: "inherit"
86
97
  }))), dividerAfter && /*#__PURE__*/React.createElement(Divider, {