@gravity-ui/navigation 6.5.1 → 7.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (298) hide show
  1. package/build/cjs/components/AsideHeader/AsideHeader.css +9 -1
  2. package/build/cjs/components/AsideHeader/AsideHeader.js +2 -2
  3. package/build/cjs/components/AsideHeader/AsideHeader.js.map +1 -1
  4. package/build/cjs/components/AsideHeader/AsideHeader.module.scss.js +1 -1
  5. package/build/cjs/components/AsideHeader/AsideHeaderContext.d.ts +5 -0
  6. package/build/cjs/components/AsideHeader/AsideHeaderContext.js +2 -0
  7. package/build/cjs/components/AsideHeader/AsideHeaderContext.js.map +1 -1
  8. package/build/cjs/components/AsideHeader/__playwright__/AsideTransitionExample.d.ts +8 -0
  9. package/build/cjs/components/AsideHeader/__playwright__/CollapseButtonExample.d.ts +14 -0
  10. package/build/cjs/components/AsideHeader/__playwright__/CompactTransitionExample.d.ts +12 -0
  11. package/build/cjs/components/AsideHeader/__playwright__/CurrentIndicatorExample.d.ts +20 -0
  12. package/build/cjs/components/AsideHeader/__playwright__/QuickAccessOverflowExample.d.ts +8 -0
  13. package/build/cjs/components/AsideHeader/__playwright__/currentIndicatorPaint.d.ts +21 -0
  14. package/build/cjs/components/AsideHeader/__playwright__/transitionTestUtils.d.ts +4 -0
  15. package/build/cjs/components/AsideHeader/__stories__/fullNavigationMoc.d.ts +6 -0
  16. package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js +2 -4
  17. package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js.map +1 -1
  18. package/build/cjs/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.d.ts +2 -1
  19. package/build/cjs/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.js +5 -1
  20. package/build/cjs/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.js.map +1 -1
  21. package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/en.json.js +1 -3
  22. package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/en.json.js.map +1 -1
  23. package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/index.d.ts +4 -4
  24. package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/ru.json.js +2 -4
  25. package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/ru.json.js.map +1 -1
  26. package/build/cjs/components/AsideHeader/components/AsideDivider.d.ts +7 -0
  27. package/build/cjs/components/AsideHeader/components/AsideDivider.js +13 -0
  28. package/build/cjs/components/AsideHeader/components/AsideDivider.js.map +1 -0
  29. package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.css +1 -1
  30. package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.d.ts +3 -1
  31. package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.js +12 -8
  32. package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.js.map +1 -1
  33. package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.module.scss.js +1 -1
  34. package/build/cjs/components/AsideHeader/components/CollapseButton/useCollapseAnchor.d.ts +20 -0
  35. package/build/cjs/components/AsideHeader/components/CollapseButton/useCollapseAnchor.js +170 -0
  36. package/build/cjs/components/AsideHeader/components/CollapseButton/useCollapseAnchor.js.map +1 -0
  37. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.css +3 -1
  38. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.d.ts +13 -2
  39. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.js +53 -39
  40. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.js.map +1 -1
  41. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.module.scss.js +1 -1
  42. package/build/cjs/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.css +1 -1
  43. package/build/cjs/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.js +4 -2
  44. package/build/cjs/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.js.map +1 -1
  45. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.css +33 -1
  46. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.js +158 -43
  47. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.js.map +1 -1
  48. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.module.scss.js +1 -1
  49. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.types.d.ts +22 -4
  50. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemPopup.d.ts +19 -0
  51. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemPopup.js +137 -20
  52. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemPopup.js.map +1 -1
  53. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.d.ts +7 -0
  54. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.js +25 -0
  55. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.js.map +1 -0
  56. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.d.ts +1 -1
  57. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.js +5 -1
  58. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.js.map +1 -1
  59. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.css +1 -1
  60. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.d.ts +4 -6
  61. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js +14 -5
  62. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js.map +1 -1
  63. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.module.scss.js +1 -1
  64. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.d.ts +8 -8
  65. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.js +68 -33
  66. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.js.map +1 -1
  67. package/build/cjs/components/AsideHeader/components/CompositeBar/constants.d.ts +1 -0
  68. package/build/cjs/components/AsideHeader/components/CompositeBar/constants.js +2 -0
  69. package/build/cjs/components/AsideHeader/components/CompositeBar/constants.js.map +1 -1
  70. package/build/cjs/components/AsideHeader/components/CompositeBar/presentationCurrent.d.ts +24 -0
  71. package/build/cjs/components/AsideHeader/components/CompositeBar/presentationCurrent.js +39 -0
  72. package/build/cjs/components/AsideHeader/components/CompositeBar/presentationCurrent.js.map +1 -0
  73. package/build/cjs/components/AsideHeader/components/CompositeBar/utils.d.ts +12 -7
  74. package/build/cjs/components/AsideHeader/components/CompositeBar/utils.js +42 -35
  75. package/build/cjs/components/AsideHeader/components/CompositeBar/utils.js.map +1 -1
  76. package/build/cjs/components/AsideHeader/components/FirstPanel.js +129 -10
  77. package/build/cjs/components/AsideHeader/components/FirstPanel.js.map +1 -1
  78. package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.css +1 -1
  79. package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.js +18 -2
  80. package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.js.map +1 -1
  81. package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.module.scss.js +1 -1
  82. package/build/cjs/components/AsideHeader/components/Header.js +7 -3
  83. package/build/cjs/components/AsideHeader/components/Header.js.map +1 -1
  84. package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.css +9 -1
  85. package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.d.ts +1 -0
  86. package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.js +13 -6
  87. package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.js.map +1 -1
  88. package/build/cjs/components/AsideHeader/components/PageLayout/AsideLayoutTransition.d.ts +80 -0
  89. package/build/cjs/components/AsideHeader/components/PageLayout/AsideLayoutTransition.js +600 -0
  90. package/build/cjs/components/AsideHeader/components/PageLayout/AsideLayoutTransition.js.map +1 -0
  91. package/build/cjs/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.d.ts +14 -0
  92. package/build/cjs/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.js +164 -0
  93. package/build/cjs/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.js.map +1 -0
  94. package/build/cjs/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.d.ts +14 -0
  95. package/build/cjs/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.js +94 -0
  96. package/build/cjs/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.js.map +1 -0
  97. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.css +9 -1
  98. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.d.ts +1 -1
  99. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.js +14 -5
  100. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.js.map +1 -1
  101. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.css +9 -1
  102. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.d.ts +1 -1
  103. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.js +5 -2
  104. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.js.map +1 -1
  105. package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorDom.d.ts +7 -0
  106. package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorDom.js +25 -0
  107. package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorDom.js.map +1 -0
  108. package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorModel.d.ts +25 -0
  109. package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorModel.js +89 -0
  110. package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorModel.js.map +1 -0
  111. package/build/cjs/components/AsideHeader/components/Panels.js +2 -2
  112. package/build/cjs/components/AsideHeader/components/Panels.js.map +1 -1
  113. package/build/cjs/components/AsideHeader/density.d.ts +21 -0
  114. package/build/cjs/components/AsideHeader/density.js +61 -0
  115. package/build/cjs/components/AsideHeader/density.js.map +1 -0
  116. package/build/cjs/components/AsideHeader/i18n/__mocks__/index.d.ts +1 -0
  117. package/build/cjs/components/AsideHeader/i18n/en.json.js +10 -1
  118. package/build/cjs/components/AsideHeader/i18n/en.json.js.map +1 -1
  119. package/build/cjs/components/AsideHeader/i18n/index.d.ts +4 -4
  120. package/build/cjs/components/AsideHeader/i18n/ru.json.js +10 -1
  121. package/build/cjs/components/AsideHeader/i18n/ru.json.js.map +1 -1
  122. package/build/cjs/components/AsideHeader/index.d.ts +1 -0
  123. package/build/cjs/components/AsideHeader/quickAccess.d.ts +9 -0
  124. package/build/cjs/components/AsideHeader/quickAccess.js +31 -0
  125. package/build/cjs/components/AsideHeader/quickAccess.js.map +1 -0
  126. package/build/cjs/components/AsideHeader/types.d.ts +50 -5
  127. package/build/cjs/components/AsideHeader/types.js.map +1 -1
  128. package/build/cjs/components/AsideHeader/useAsideHeaderInnerContextValue.js +18 -3
  129. package/build/cjs/components/AsideHeader/useAsideHeaderInnerContextValue.js.map +1 -1
  130. package/build/cjs/components/AsideHeader/utils.d.ts +1 -0
  131. package/build/cjs/components/AsideHeader/utils.js +2 -0
  132. package/build/cjs/components/AsideHeader/utils.js.map +1 -1
  133. package/build/cjs/components/Footer/desktop/Footer.css +1 -1
  134. package/build/cjs/components/Footer/mobile/Footer.css +1 -1
  135. package/build/cjs/components/HotkeysPanel/HotkeysPanel.css +1 -1
  136. package/build/cjs/components/HotkeysPanel/HotkeysPanel.js +1 -1
  137. package/build/cjs/components/HotkeysPanel/HotkeysPanel.js.map +1 -1
  138. package/build/cjs/components/HotkeysPanel/HotkeysPanel.module.scss.js +1 -1
  139. package/build/cjs/components/Logo/Logo.css +1 -1
  140. package/build/cjs/components/Logo/Logo.d.ts +1 -0
  141. package/build/cjs/components/Logo/Logo.js +4 -4
  142. package/build/cjs/components/Logo/Logo.js.map +1 -1
  143. package/build/cjs/components/constants.d.ts +5 -0
  144. package/build/cjs/components/constants.js +6 -0
  145. package/build/cjs/components/constants.js.map +1 -1
  146. package/build/cjs/components/types.d.ts +11 -4
  147. package/build/docs/components/AsideHeader.md +244 -51
  148. package/build/esm/components/AsideHeader/AsideHeader.css +9 -1
  149. package/build/esm/components/AsideHeader/AsideHeader.js +2 -2
  150. package/build/esm/components/AsideHeader/AsideHeader.js.map +1 -1
  151. package/build/esm/components/AsideHeader/AsideHeader.module.scss.js +1 -1
  152. package/build/esm/components/AsideHeader/AsideHeaderContext.d.ts +5 -0
  153. package/build/esm/components/AsideHeader/AsideHeaderContext.js +2 -0
  154. package/build/esm/components/AsideHeader/AsideHeaderContext.js.map +1 -1
  155. package/build/esm/components/AsideHeader/__playwright__/AsideTransitionExample.d.ts +8 -0
  156. package/build/esm/components/AsideHeader/__playwright__/CollapseButtonExample.d.ts +14 -0
  157. package/build/esm/components/AsideHeader/__playwright__/CompactTransitionExample.d.ts +12 -0
  158. package/build/esm/components/AsideHeader/__playwright__/CurrentIndicatorExample.d.ts +20 -0
  159. package/build/esm/components/AsideHeader/__playwright__/QuickAccessOverflowExample.d.ts +8 -0
  160. package/build/esm/components/AsideHeader/__playwright__/currentIndicatorPaint.d.ts +21 -0
  161. package/build/esm/components/AsideHeader/__playwright__/transitionTestUtils.d.ts +4 -0
  162. package/build/esm/components/AsideHeader/__stories__/fullNavigationMoc.d.ts +6 -0
  163. package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js +3 -5
  164. package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js.map +1 -1
  165. package/build/esm/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.d.ts +2 -1
  166. package/build/esm/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.js +5 -1
  167. package/build/esm/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.js.map +1 -1
  168. package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/en.json.js +1 -3
  169. package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/en.json.js.map +1 -1
  170. package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/index.d.ts +4 -4
  171. package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/ru.json.js +2 -4
  172. package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/ru.json.js.map +1 -1
  173. package/build/esm/components/AsideHeader/components/AsideDivider.d.ts +7 -0
  174. package/build/esm/components/AsideHeader/components/AsideDivider.js +11 -0
  175. package/build/esm/components/AsideHeader/components/AsideDivider.js.map +1 -0
  176. package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.css +1 -1
  177. package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.d.ts +3 -1
  178. package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.js +12 -8
  179. package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.js.map +1 -1
  180. package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.module.scss.js +1 -1
  181. package/build/esm/components/AsideHeader/components/CollapseButton/useCollapseAnchor.d.ts +20 -0
  182. package/build/esm/components/AsideHeader/components/CollapseButton/useCollapseAnchor.js +167 -0
  183. package/build/esm/components/AsideHeader/components/CollapseButton/useCollapseAnchor.js.map +1 -0
  184. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.css +3 -1
  185. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.d.ts +13 -2
  186. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.js +54 -40
  187. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.js.map +1 -1
  188. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.module.scss.js +1 -1
  189. package/build/esm/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.css +1 -1
  190. package/build/esm/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.js +4 -2
  191. package/build/esm/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.js.map +1 -1
  192. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.css +33 -1
  193. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.js +161 -46
  194. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.js.map +1 -1
  195. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.module.scss.js +1 -1
  196. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.types.d.ts +22 -4
  197. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemPopup.d.ts +19 -0
  198. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemPopup.js +139 -23
  199. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemPopup.js.map +1 -1
  200. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.d.ts +7 -0
  201. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.js +23 -0
  202. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.js.map +1 -0
  203. package/build/esm/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.d.ts +1 -1
  204. package/build/esm/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.js +5 -1
  205. package/build/esm/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.js.map +1 -1
  206. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.css +1 -1
  207. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.d.ts +4 -6
  208. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js +15 -6
  209. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js.map +1 -1
  210. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.module.scss.js +1 -1
  211. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.d.ts +8 -8
  212. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.js +68 -33
  213. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.js.map +1 -1
  214. package/build/esm/components/AsideHeader/components/CompositeBar/constants.d.ts +1 -0
  215. package/build/esm/components/AsideHeader/components/CompositeBar/constants.js +2 -1
  216. package/build/esm/components/AsideHeader/components/CompositeBar/constants.js.map +1 -1
  217. package/build/esm/components/AsideHeader/components/CompositeBar/presentationCurrent.d.ts +24 -0
  218. package/build/esm/components/AsideHeader/components/CompositeBar/presentationCurrent.js +36 -0
  219. package/build/esm/components/AsideHeader/components/CompositeBar/presentationCurrent.js.map +1 -0
  220. package/build/esm/components/AsideHeader/components/CompositeBar/utils.d.ts +12 -7
  221. package/build/esm/components/AsideHeader/components/CompositeBar/utils.js +44 -35
  222. package/build/esm/components/AsideHeader/components/CompositeBar/utils.js.map +1 -1
  223. package/build/esm/components/AsideHeader/components/FirstPanel.js +131 -12
  224. package/build/esm/components/AsideHeader/components/FirstPanel.js.map +1 -1
  225. package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.css +1 -1
  226. package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.js +18 -2
  227. package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.js.map +1 -1
  228. package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.module.scss.js +1 -1
  229. package/build/esm/components/AsideHeader/components/Header.js +8 -4
  230. package/build/esm/components/AsideHeader/components/Header.js.map +1 -1
  231. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.css +9 -1
  232. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.d.ts +1 -0
  233. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.js +14 -7
  234. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.js.map +1 -1
  235. package/build/esm/components/AsideHeader/components/PageLayout/AsideLayoutTransition.d.ts +80 -0
  236. package/build/esm/components/AsideHeader/components/PageLayout/AsideLayoutTransition.js +598 -0
  237. package/build/esm/components/AsideHeader/components/PageLayout/AsideLayoutTransition.js.map +1 -0
  238. package/build/esm/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.d.ts +14 -0
  239. package/build/esm/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.js +162 -0
  240. package/build/esm/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.js.map +1 -0
  241. package/build/esm/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.d.ts +14 -0
  242. package/build/esm/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.js +92 -0
  243. package/build/esm/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.js.map +1 -0
  244. package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.css +9 -1
  245. package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.d.ts +1 -1
  246. package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.js +15 -6
  247. package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.js.map +1 -1
  248. package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.css +9 -1
  249. package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.d.ts +1 -1
  250. package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.js +5 -2
  251. package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.js.map +1 -1
  252. package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorDom.d.ts +7 -0
  253. package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorDom.js +17 -0
  254. package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorDom.js.map +1 -0
  255. package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorModel.d.ts +25 -0
  256. package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorModel.js +84 -0
  257. package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorModel.js.map +1 -0
  258. package/build/esm/components/AsideHeader/components/Panels.js +3 -3
  259. package/build/esm/components/AsideHeader/components/Panels.js.map +1 -1
  260. package/build/esm/components/AsideHeader/density.d.ts +21 -0
  261. package/build/esm/components/AsideHeader/density.js +58 -0
  262. package/build/esm/components/AsideHeader/density.js.map +1 -0
  263. package/build/esm/components/AsideHeader/i18n/__mocks__/index.d.ts +1 -0
  264. package/build/esm/components/AsideHeader/i18n/en.json.js +8 -2
  265. package/build/esm/components/AsideHeader/i18n/en.json.js.map +1 -1
  266. package/build/esm/components/AsideHeader/i18n/index.d.ts +4 -4
  267. package/build/esm/components/AsideHeader/i18n/ru.json.js +8 -2
  268. package/build/esm/components/AsideHeader/i18n/ru.json.js.map +1 -1
  269. package/build/esm/components/AsideHeader/index.d.ts +1 -0
  270. package/build/esm/components/AsideHeader/quickAccess.d.ts +9 -0
  271. package/build/esm/components/AsideHeader/quickAccess.js +27 -0
  272. package/build/esm/components/AsideHeader/quickAccess.js.map +1 -0
  273. package/build/esm/components/AsideHeader/types.d.ts +50 -5
  274. package/build/esm/components/AsideHeader/types.js.map +1 -1
  275. package/build/esm/components/AsideHeader/useAsideHeaderInnerContextValue.js +18 -3
  276. package/build/esm/components/AsideHeader/useAsideHeaderInnerContextValue.js.map +1 -1
  277. package/build/esm/components/AsideHeader/utils.d.ts +1 -0
  278. package/build/esm/components/AsideHeader/utils.js +2 -1
  279. package/build/esm/components/AsideHeader/utils.js.map +1 -1
  280. package/build/esm/components/Footer/desktop/Footer.css +1 -1
  281. package/build/esm/components/Footer/mobile/Footer.css +1 -1
  282. package/build/esm/components/HotkeysPanel/HotkeysPanel.css +1 -1
  283. package/build/esm/components/HotkeysPanel/HotkeysPanel.js +1 -1
  284. package/build/esm/components/HotkeysPanel/HotkeysPanel.js.map +1 -1
  285. package/build/esm/components/HotkeysPanel/HotkeysPanel.module.scss.js +1 -1
  286. package/build/esm/components/Logo/Logo.css +1 -1
  287. package/build/esm/components/Logo/Logo.d.ts +1 -0
  288. package/build/esm/components/Logo/Logo.js +4 -4
  289. package/build/esm/components/Logo/Logo.js.map +1 -1
  290. package/build/esm/components/constants.d.ts +5 -0
  291. package/build/esm/components/constants.js +6 -1
  292. package/build/esm/components/constants.js.map +1 -1
  293. package/build/esm/components/types.d.ts +11 -4
  294. package/package.json +1 -1
  295. package/build/cjs/assets/icons/control-menu-button.svg.js +0 -41
  296. package/build/cjs/assets/icons/control-menu-button.svg.js.map +0 -1
  297. package/build/esm/assets/icons/control-menu-button.svg.js +0 -18
  298. package/build/esm/assets/icons/control-menu-button.svg.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Item.js","sources":["../../../../../../../../src/components/AsideHeader/components/CompositeBar/Item/Item.tsx"],"sourcesContent":["import React from 'react';\n\nimport {ChevronDown, ChevronRight, ChevronUp} from '@gravity-ui/icons';\nimport {Icon, Popup, PopupPlacement, PopupProps} from '@gravity-ui/uikit';\n\nimport {ASIDE_HEADER_ICON_SIZE} from '../../../../constants';\nimport {MakeItemParams} from '../../../../types';\nimport {createBlock} from '../../../../utils/cn';\nimport i18n from '../../../i18n';\nimport {HighlightedItem} from '../HighlightedItem/HighlightedItem';\nimport {COLLAPSE_ITEM_ID, ITEM_TYPE_REGULAR} from '../constants';\n\nimport {ItemInnerProps, ItemProps} from './Item.types';\nimport {ItemPopup} from './ItemPopup';\nimport {ItemPopupNestContext} from './ItemPopupNestContext';\nimport {renderItemTitle} from './renderItemTitle';\n\nimport styles from './Item.module.scss';\n\nconst b = createBlock('composite-bar-item', styles);\n\nconst defaultPopupPlacement: PopupPlacement = ['right-end'];\nconst defaultPopupOffset: NonNullable<PopupProps['offset']> = {mainAxis: 14};\nconst CHEVRON_SIZE = 16;\nconst CHEVRON_SIZE_COMPACT = 10;\n\nfunction getChevronFallbackLabel(expanded: boolean | undefined): string {\n return expanded ? i18n('button_collapse') : i18n('button_expand');\n}\n\nfunction resolveItemAriaLabel(\n ariaProps: ItemInnerProps['menuItemAriaProps'],\n titleLabel: string | undefined,\n): string | undefined {\n return ariaProps?.['aria-label'] ?? titleLabel;\n}\n\nfunction resolveAnchorRef(\n anchorRef: React.RefObject<HTMLElement> | undefined,\n fallback: React.RefObject<HTMLElement>,\n): React.RefObject<HTMLElement> {\n return anchorRef?.current ? anchorRef : fallback;\n}\n\nfunction shouldShowFlyoutChevron(\n hasPopupItems: boolean,\n compact?: boolean,\n hideCompactChevron?: boolean,\n): boolean {\n return hasPopupItems && !(compact && hideCompactChevron);\n}\n\nexport const Item: React.FC<ItemInnerProps> = (props) => {\n const {\n className,\n popupItemClassName,\n menuPopupItems,\n menuPopupTitle,\n groupHeaderExpanded,\n compact,\n onMouseLeave,\n onMouseEnter,\n enableTooltip = true,\n popupVisible = false,\n popupRef: anchoreRefProp,\n popupPlacement = defaultPopupPlacement,\n popupOffset = defaultPopupOffset,\n popupKeepMounted,\n renderPopupContent,\n onOpenChangePopup,\n onItemClick,\n onPopupItemClick,\n onItemClickCapture,\n itemWrapper,\n bringForward,\n rightAdornment,\n title,\n href,\n qa,\n hideIcon = false,\n stopClickPropagation = false,\n menuGroupNestedTreeConnector,\n menuItemAriaProps,\n onGroupHeaderChevronClick,\n hideCompactChevron,\n } = props;\n\n const [compactNavPopoverOpen, setCompactNavPopoverOpen] = React.useState(false);\n\n const ref = React.useRef<HTMLElement>(null);\n const anchorRef = resolveAnchorRef(anchoreRefProp, ref);\n const highlightedRef = React.useRef<HTMLDivElement>(null);\n\n const type = props.type || ITEM_TYPE_REGULAR;\n const icon = props.icon;\n const iconSize = props.iconSize || ASIDE_HEADER_ICON_SIZE;\n const iconQa = props.iconQa;\n const collapsedItem = props.id === COLLAPSE_ITEM_ID;\n const inlineGroupHeader = groupHeaderExpanded !== undefined;\n const resolvedMenuPopupItems = menuPopupItems ?? props.compositeBarMenuPopupItems;\n const resolvedMenuPopupTitle = menuPopupTitle ?? props.compositeBarMenuPopupTitle;\n\n const current = props.current || resolvedMenuPopupItems?.some((item) => item.current) || false;\n\n const handleOpenChangePopup = React.useCallback<NonNullable<ItemProps['onOpenChangePopup']>>(\n (newOpen, event, reason) => {\n if (\n event instanceof MouseEvent &&\n event.target &&\n ref.current?.contains(event.target as Node)\n ) {\n return;\n }\n\n if (newOpen) {\n setCompactNavPopoverOpen(false);\n }\n\n onOpenChangePopup?.(newOpen, event, reason);\n },\n [onOpenChangePopup],\n );\n\n const isDivider = type === 'divider';\n const showMenuPopup =\n !isDivider &&\n Boolean(resolvedMenuPopupItems?.length) &&\n (collapsedItem || !inlineGroupHeader);\n\n const submenuNest = React.useContext(ItemPopupNestContext);\n\n React.useEffect(() => {\n if (!submenuNest || !showMenuPopup || !compactNavPopoverOpen) {\n return undefined;\n }\n\n submenuNest.registerNestedOpen(1);\n\n return () => {\n submenuNest.registerNestedOpen(-1);\n };\n }, [submenuNest, showMenuPopup, compactNavPopoverOpen]);\n\n if (isDivider) {\n return <div className={b('menu-divider')} />;\n }\n\n const compactPopoverDisabled = !enableTooltip || popupVisible || type === 'action';\n\n const showFlyoutChevron = shouldShowFlyoutChevron(\n Boolean(resolvedMenuPopupItems?.length),\n compact,\n hideCompactChevron,\n );\n\n const makeIconNode = (iconEl: React.ReactNode, withCompactPopover = true): React.ReactNode => {\n if (!compact) {\n return iconEl;\n }\n\n const iconButton = (\n <div\n onMouseEnter={() => onMouseEnter?.()}\n onMouseLeave={() => onMouseLeave?.()}\n className={b('btn-icon')}\n >\n {iconEl}\n </div>\n );\n\n if (!withCompactPopover || resolvedMenuPopupItems?.length) {\n return iconButton;\n }\n\n return (\n <ItemPopup\n items={[props]}\n open={compactNavPopoverOpen}\n onOpenChange={(nextOpen) => {\n if (nextOpen && compactPopoverDisabled) return;\n setCompactNavPopoverOpen(nextOpen);\n }}\n hideIcon\n itemClassName={popupItemClassName}\n disabled={compactPopoverDisabled}\n type={type}\n collapsed={compact}\n /**\n * No `onPopupItemClick` here on purpose: this popup renders the item itself\n * (`items={[props]}`), whose `onItemClick` is already the row-level wrapper.\n * Going through the wrapper keeps the original `item.onItemClick` intact for\n * the AsideHeader handler; the direct path would pass the wrapper as\n * `item.onItemClick` and trigger the handler twice (toggling All pages back).\n */\n onItemClick={onItemClick}\n >\n {iconButton}\n </ItemPopup>\n );\n };\n\n const ariaLabel = typeof title === 'string' ? title : undefined;\n const resolvedAriaLabel = resolveItemAriaLabel(menuItemAriaProps, ariaLabel);\n\n const makeNode = ({icon: iconEl, title: titleEl}: MakeItemParams) => {\n const wrappedByItemWrapper = typeof itemWrapper === 'function';\n const chevronClick = inlineGroupHeader ? onGroupHeaderChevronClick : undefined;\n /* With a sibling chevron control, the wrapper becomes the outer box of the row,\n so the external className (outer layout) is applied to it instead of the row. */\n const rowClassName = b(\n {\n type,\n current,\n compact,\n 'hide-icon': hideIcon,\n 'with-chevron-control': Boolean(chevronClick),\n },\n chevronClick ? undefined : className,\n );\n\n const handleRowClick = (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (compact && !collapsedItem && !showMenuPopup && !current) {\n setCompactNavPopoverOpen(false);\n }\n\n onItemClick?.(props, collapsedItem, event);\n\n if (stopClickPropagation) {\n event.stopPropagation();\n }\n };\n\n const chevronSize = compact ? CHEVRON_SIZE_COMPACT : CHEVRON_SIZE;\n\n let chevronNode: React.ReactNode = null;\n let chevronControl: React.ReactNode = null;\n\n if (chevronClick) {\n chevronControl = (\n <button\n type=\"button\"\n className={b('chevron', {interactive: true})}\n aria-label={resolvedAriaLabel ?? getChevronFallbackLabel(groupHeaderExpanded)}\n aria-expanded={groupHeaderExpanded}\n onClick={(event) => {\n event.stopPropagation();\n chevronClick(event);\n }}\n >\n <Icon data={groupHeaderExpanded ? ChevronUp : ChevronDown} size={chevronSize} />\n </button>\n );\n } else if (inlineGroupHeader) {\n chevronNode = (\n <div className={b('chevron')}>\n <Icon data={groupHeaderExpanded ? ChevronUp : ChevronDown} size={chevronSize} />\n </div>\n );\n } else if (showFlyoutChevron) {\n chevronNode = (\n <div className={b('chevron')}>\n <Icon data={ChevronRight} size={chevronSize} />\n </div>\n );\n }\n\n const rowChildren = (\n <>\n {menuGroupNestedTreeConnector}\n <div className={b('icon-place')} ref={highlightedRef}>\n {makeIconNode(iconEl)}\n </div>\n\n <div className={b('title')} title={ariaLabel}>\n {titleEl}\n </div>\n\n {chevronNode}\n </>\n );\n\n const rowEventProps = {\n ...(menuItemAriaProps ?? {}),\n className: rowClassName,\n 'data-type': type,\n 'data-qa': qa,\n 'aria-label': resolvedAriaLabel,\n onClick: handleRowClick,\n onClickCapture: onItemClickCapture,\n onMouseEnter: () => {\n if (!compact) {\n onMouseEnter?.();\n }\n },\n onMouseLeave: () => {\n if (!compact) {\n onMouseLeave?.();\n }\n },\n };\n\n let tagNode: React.ReactNode;\n\n if (href) {\n tagNode = (\n <a {...rowEventProps} href={href} ref={ref as React.RefObject<HTMLAnchorElement>}>\n {rowChildren}\n </a>\n );\n } else if (wrappedByItemWrapper) {\n tagNode = (\n <div\n {...rowEventProps}\n role={menuItemAriaProps?.role ?? 'button'}\n ref={ref as React.RefObject<HTMLDivElement>}\n >\n {rowChildren}\n </div>\n );\n } else {\n tagNode = (\n <button {...rowEventProps} ref={ref as React.RefObject<HTMLButtonElement>}>\n {rowChildren}\n </button>\n );\n }\n\n if (chevronControl) {\n tagNode = (\n <div className={b('group-header-row', className)}>\n {tagNode}\n {chevronControl}\n </div>\n );\n }\n\n const expandedMenuRows = resolvedMenuPopupItems;\n\n const wrappedTagNode =\n showMenuPopup && expandedMenuRows ? (\n <ItemPopup\n items={expandedMenuRows}\n title={resolvedMenuPopupTitle}\n open={compactNavPopoverOpen}\n itemClassName={popupItemClassName}\n onOpenChange={setCompactNavPopoverOpen}\n collapsed={collapsedItem ? true : compact}\n onPopupItemClick={onPopupItemClick}\n onItemClick={onItemClick}\n >\n {tagNode}\n </ItemPopup>\n ) : (\n tagNode\n );\n\n const createdNode = (\n <React.Fragment>\n {wrappedTagNode}\n {renderPopupContent && Boolean(anchorRef?.current) && (\n <Popup\n strategy=\"fixed\"\n open={popupVisible}\n keepMounted={popupKeepMounted}\n placement={popupPlacement}\n offset={popupOffset}\n anchorElement={anchorRef.current}\n onOpenChange={handleOpenChangePopup}\n >\n {renderPopupContent()}\n </Popup>\n )}\n </React.Fragment>\n );\n\n return createdNode;\n };\n\n const iconNode =\n hideIcon || !icon ? null : (\n <Icon qa={iconQa} data={icon} size={iconSize} className={b('icon')} />\n );\n const titleNode = renderItemTitle({title, rightAdornment});\n const params = {icon: iconNode, title: titleNode};\n let highlightedNode = null;\n let node;\n\n const opts = {compact: Boolean(compact), collapsed: false, item: props, ref};\n\n if (typeof itemWrapper === 'function') {\n node = itemWrapper(params, makeNode, opts) as React.ReactElement;\n highlightedNode =\n bringForward &&\n (itemWrapper(\n params,\n ({icon: iconEl}) => makeIconNode(iconEl, false),\n opts,\n ) as React.ReactElement);\n } else {\n node = makeNode(params);\n highlightedNode = bringForward && makeIconNode(iconNode, false);\n }\n\n return (\n <React.Fragment>\n {bringForward && (\n <HighlightedItem\n iconNode={highlightedNode}\n iconRef={highlightedRef}\n onClick={(event: React.MouseEvent<HTMLElement, MouseEvent>) =>\n onItemClick?.(props, false, event)\n }\n onClickCapture={onItemClickCapture}\n />\n )}\n {node}\n </React.Fragment>\n );\n};\n\nItem.displayName = 'Item';\n"],"names":["React"],"mappings":";;;;;;;;;;;;;AAmBA,MAAM,CAAC,GAAG,WAAW,CAAC,oBAAoB,EAAE,MAAM,CAAC;AAEnD,MAAM,qBAAqB,GAAmB,CAAC,WAAW,CAAC;AAC3D,MAAM,kBAAkB,GAAsC,EAAC,QAAQ,EAAE,EAAE,EAAC;AAC5E,MAAM,YAAY,GAAG,EAAE;AACvB,MAAM,oBAAoB,GAAG,EAAE;AAE/B,SAAS,uBAAuB,CAAC,QAA6B,EAAA;AAC1D,IAAA,OAAO,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;AACrE;AAEA,SAAS,oBAAoB,CACzB,SAA8C,EAC9C,UAA8B,EAAA;;IAE9B,OAAO,CAAA,EAAA,GAAA,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,SAAA,GAAA,SAAA,GAAT,SAAS,CAAG,YAAY,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,SAAA,GAAA,EAAA,GAAA,UAAU;AAClD;AAEA,SAAS,gBAAgB,CACrB,SAAmD,EACnD,QAAsC,EAAA;AAEtC,IAAA,OAAO,CAAA,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,SAAA,GAAA,SAAA,GAAT,SAAS,CAAE,OAAO,IAAG,SAAS,GAAG,QAAQ;AACpD;AAEA,SAAS,uBAAuB,CAC5B,aAAsB,EACtB,OAAiB,EACjB,kBAA4B,EAAA;IAE5B,OAAO,aAAa,IAAI,EAAE,OAAO,IAAI,kBAAkB,CAAC;AAC5D;AAEa,MAAA,IAAI,GAA6B,CAAC,KAAK,KAAI;AACpD,IAAA,MAAM,EACF,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,aAAa,GAAG,IAAI,EACpB,YAAY,GAAG,KAAK,EACpB,QAAQ,EAAE,cAAc,EACxB,cAAc,GAAG,qBAAqB,EACtC,WAAW,GAAG,kBAAkB,EAChC,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,KAAK,EACL,IAAI,EACJ,EAAE,EACF,QAAQ,GAAG,KAAK,EAChB,oBAAoB,GAAG,KAAK,EAC5B,4BAA4B,EAC5B,iBAAiB,EACjB,yBAAyB,EACzB,kBAAkB,GACrB,GAAG,KAAK;AAET,IAAA,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAGA,cAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IAE/E,MAAM,GAAG,GAAGA,cAAK,CAAC,MAAM,CAAc,IAAI,CAAC;IAC3C,MAAM,SAAS,GAAG,gBAAgB,CAAC,cAAc,EAAE,GAAG,CAAC;IACvD,MAAM,cAAc,GAAGA,cAAK,CAAC,MAAM,CAAiB,IAAI,CAAC;AAEzD,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,iBAAiB;AAC5C,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;AACvB,IAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,sBAAsB;AACzD,IAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;AAC3B,IAAA,MAAM,aAAa,GAAG,KAAK,CAAC,EAAE,KAAK,gBAAgB;AACnD,IAAA,MAAM,iBAAiB,GAAG,mBAAmB,KAAK,SAAS;IAC3D,MAAM,sBAAsB,GAAG,cAAc,KAAd,IAAA,IAAA,cAAc,KAAd,SAAA,GAAA,cAAc,GAAI,KAAK,CAAC,0BAA0B;IACjF,MAAM,sBAAsB,GAAG,cAAc,KAAd,IAAA,IAAA,cAAc,KAAd,SAAA,GAAA,cAAc,GAAI,KAAK,CAAC,0BAA0B;IAEjF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,KAAI,sBAAsB,KAAtB,IAAA,IAAA,sBAAsB,KAAtB,SAAA,GAAA,SAAA,GAAA,sBAAsB,CAAE,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,CAAA,IAAI,KAAK;AAE9F,IAAA,MAAM,qBAAqB,GAAGA,cAAK,CAAC,WAAW,CAC3C,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,KAAI;;QACvB,IACI,KAAK,YAAY,UAAU;AAC3B,YAAA,KAAK,CAAC,MAAM;AACZ,aAAA,CAAA,EAAA,GAAA,GAAG,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,SAAA,GAAA,SAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,CAAA,EAC7C;YACE;;QAGJ,IAAI,OAAO,EAAE;YACT,wBAAwB,CAAC,KAAK,CAAC;;QAGnC,iBAAiB,KAAA,IAAA,IAAjB,iBAAiB,KAAA,SAAA,GAAA,SAAA,GAAjB,iBAAiB,CAAG,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC;AAC/C,KAAC,EACD,CAAC,iBAAiB,CAAC,CACtB;AAED,IAAA,MAAM,SAAS,GAAG,IAAI,KAAK,SAAS;IACpC,MAAM,aAAa,GACf,CAAC,SAAS;QACV,OAAO,CAAC,sBAAsB,KAAtB,IAAA,IAAA,sBAAsB,6BAAtB,sBAAsB,CAAE,MAAM,CAAC;AACvC,SAAC,aAAa,IAAI,CAAC,iBAAiB,CAAC;IAEzC,MAAM,WAAW,GAAGA,cAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC;AAE1D,IAAAA,cAAK,CAAC,SAAS,CAAC,MAAK;QACjB,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa,IAAI,CAAC,qBAAqB,EAAE;AAC1D,YAAA,OAAO,SAAS;;AAGpB,QAAA,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAEjC,QAAA,OAAO,MAAK;AACR,YAAA,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAAC;AACtC,SAAC;KACJ,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,qBAAqB,CAAC,CAAC;IAEvD,IAAI,SAAS,EAAE;QACX,OAAOA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAC,CAAC,cAAc,CAAC,GAAI;;IAGhD,MAAM,sBAAsB,GAAG,CAAC,aAAa,IAAI,YAAY,IAAI,IAAI,KAAK,QAAQ;AAElF,IAAA,MAAM,iBAAiB,GAAG,uBAAuB,CAC7C,OAAO,CAAC,sBAAsB,KAAtB,IAAA,IAAA,sBAAsB,6BAAtB,sBAAsB,CAAE,MAAM,CAAC,EACvC,OAAO,EACP,kBAAkB,CACrB;IAED,MAAM,YAAY,GAAG,CAAC,MAAuB,EAAE,kBAAkB,GAAG,IAAI,KAAqB;QACzF,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,OAAO,MAAM;;AAGjB,QAAA,MAAM,UAAU,IACZA,cACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,YAAY,EAAE,MAAM,YAAY,aAAZ,YAAY,KAAA,SAAA,GAAA,SAAA,GAAZ,YAAY,EAAI,EACpC,YAAY,EAAE,MAAM,YAAY,KAAZ,IAAA,IAAA,YAAY,KAAZ,SAAA,GAAA,SAAA,GAAA,YAAY,EAAI,EACpC,SAAS,EAAE,CAAC,CAAC,UAAU,CAAC,IAEvB,MAAM,CACL,CACT;AAED,QAAA,IAAI,CAAC,kBAAkB,KAAI,sBAAsB,KAAtB,IAAA,IAAA,sBAAsB,KAAtB,SAAA,GAAA,SAAA,GAAA,sBAAsB,CAAE,MAAM,CAAA,EAAE;AACvD,YAAA,OAAO,UAAU;;AAGrB,QAAA,QACIA,cAAC,CAAA,aAAA,CAAA,SAAS,IACN,KAAK,EAAE,CAAC,KAAK,CAAC,EACd,IAAI,EAAE,qBAAqB,EAC3B,YAAY,EAAE,CAAC,QAAQ,KAAI;gBACvB,IAAI,QAAQ,IAAI,sBAAsB;oBAAE;gBACxC,wBAAwB,CAAC,QAAQ,CAAC;AACtC,aAAC,EACD,QAAQ,EAAA,IAAA,EACR,aAAa,EAAE,kBAAkB,EACjC,QAAQ,EAAE,sBAAsB,EAChC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,OAAO;AAClB;;;;;;AAMG;AACH,YAAA,WAAW,EAAE,WAAW,EAAA,EAEvB,UAAU,CACH;AAEpB,KAAC;AAED,IAAA,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,KAAK,GAAG,SAAS;IAC/D,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,iBAAiB,EAAE,SAAS,CAAC;AAE5E,IAAA,MAAM,QAAQ,GAAG,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAiB,KAAI;;AAChE,QAAA,MAAM,oBAAoB,GAAG,OAAO,WAAW,KAAK,UAAU;QAC9D,MAAM,YAAY,GAAG,iBAAiB,GAAG,yBAAyB,GAAG,SAAS;AAC9E;AACmF;QACnF,MAAM,YAAY,GAAG,CAAC,CAClB;YACI,IAAI;YACJ,OAAO;YACP,OAAO;AACP,YAAA,WAAW,EAAE,QAAQ;AACrB,YAAA,sBAAsB,EAAE,OAAO,CAAC,YAAY,CAAC;SAChD,EACD,YAAY,GAAG,SAAS,GAAG,SAAS,CACvC;AAED,QAAA,MAAM,cAAc,GAAG,CAAC,KAAgD,KAAI;YACxE,IAAI,OAAO,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,IAAI,CAAC,OAAO,EAAE;gBACzD,wBAAwB,CAAC,KAAK,CAAC;;YAGnC,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,SAAA,GAAA,SAAA,GAAX,WAAW,CAAG,KAAK,EAAE,aAAa,EAAE,KAAK,CAAC;YAE1C,IAAI,oBAAoB,EAAE;gBACtB,KAAK,CAAC,eAAe,EAAE;;AAE/B,SAAC;QAED,MAAM,WAAW,GAAG,OAAO,GAAG,oBAAoB,GAAG,YAAY;QAEjE,IAAI,WAAW,GAAoB,IAAI;QACvC,IAAI,cAAc,GAAoB,IAAI;QAE1C,IAAI,YAAY,EAAE;AACd,YAAA,cAAc,IACVA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EACI,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,CAAC,EAChC,YAAA,EAAA,iBAAiB,aAAjB,iBAAiB,KAAA,SAAA,GAAjB,iBAAiB,GAAI,uBAAuB,CAAC,mBAAmB,CAAC,EAAA,eAAA,EAC9D,mBAAmB,EAClC,OAAO,EAAE,CAAC,KAAK,KAAI;oBACf,KAAK,CAAC,eAAe,EAAE;oBACvB,YAAY,CAAC,KAAK,CAAC;iBACtB,EAAA;gBAEDA,cAAC,CAAA,aAAA,CAAA,IAAI,IAAC,IAAI,EAAE,mBAAmB,GAAG,SAAS,GAAG,WAAW,EAAE,IAAI,EAAE,WAAW,EAAI,CAAA,CAC3E,CACZ;;aACE,IAAI,iBAAiB,EAAE;YAC1B,WAAW,IACPA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,EAAA;gBACxBA,cAAC,CAAA,aAAA,CAAA,IAAI,IAAC,IAAI,EAAE,mBAAmB,GAAG,SAAS,GAAG,WAAW,EAAE,IAAI,EAAE,WAAW,EAAI,CAAA,CAC9E,CACT;;aACE,IAAI,iBAAiB,EAAE;YAC1B,WAAW,IACPA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,EAAA;AACxB,gBAAAA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAA,CAAI,CAC7C,CACT;;QAGL,MAAM,WAAW,IACbA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA;YACK,4BAA4B;AAC7B,YAAAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,cAAc,EAC/C,EAAA,YAAY,CAAC,MAAM,CAAC,CACnB;AAEN,YAAAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EACvC,EAAA,OAAO,CACN;YAEL,WAAW,CACb,CACN;AAED,QAAA,MAAM,aAAa,GACZ,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GAAC,iBAAiB,KAAA,IAAA,IAAjB,iBAAiB,KAAjB,SAAA,GAAA,iBAAiB,GAAI,EAAE,EAC3B,EAAA,EAAA,SAAS,EAAE,YAAY,EACvB,WAAW,EAAE,IAAI,EACjB,SAAS,EAAE,EAAE,EACb,YAAY,EAAE,iBAAiB,EAC/B,OAAO,EAAE,cAAc,EACvB,cAAc,EAAE,kBAAkB,EAClC,YAAY,EAAE,MAAK;gBACf,IAAI,CAAC,OAAO,EAAE;AACV,oBAAA,YAAY,KAAZ,IAAA,IAAA,YAAY,KAAZ,SAAA,GAAA,SAAA,GAAA,YAAY,EAAI;;AAExB,aAAC,EACD,YAAY,EAAE,MAAK;gBACf,IAAI,CAAC,OAAO,EAAE;AACV,oBAAA,YAAY,KAAZ,IAAA,IAAA,YAAY,KAAZ,SAAA,GAAA,SAAA,GAAA,YAAY,EAAI;;AAExB,aAAC,GACJ;AAED,QAAA,IAAI,OAAwB;QAE5B,IAAI,IAAI,EAAE;AACN,YAAA,OAAO,IACHA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAO,aAAa,EAAA,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAyC,EAAA,CAAA,EAC3E,WAAW,CACZ,CACP;;aACE,IAAI,oBAAoB,EAAE;YAC7B,OAAO,IACHA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACQ,aAAa,EAAA,EACjB,IAAI,EAAE,CAAA,EAAA,GAAA,iBAAiB,KAAA,IAAA,IAAjB,iBAAiB,KAAA,SAAA,GAAA,SAAA,GAAjB,iBAAiB,CAAE,IAAI,MAAI,IAAA,IAAA,EAAA,KAAA,SAAA,GAAA,EAAA,GAAA,QAAQ,EACzC,GAAG,EAAE,GAAsC,EAE1C,CAAA,EAAA,WAAW,CACV,CACT;;aACE;AACH,YAAA,OAAO,IACHA,cAAY,CAAA,aAAA,CAAA,QAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,aAAa,EAAE,EAAA,GAAG,EAAE,GAAyC,EACpE,CAAA,EAAA,WAAW,CACP,CACZ;;QAGL,IAAI,cAAc,EAAE;YAChB,OAAO,IACHA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAC,CAAC,kBAAkB,EAAE,SAAS,CAAC,EAAA;gBAC3C,OAAO;gBACP,cAAc,CACb,CACT;;QAGL,MAAM,gBAAgB,GAAG,sBAAsB;AAE/C,QAAA,MAAM,cAAc,GAChB,aAAa,IAAI,gBAAgB,IAC7BA,cAAA,CAAA,aAAA,CAAC,SAAS,EAAA,EACN,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAE,sBAAsB,EAC7B,IAAI,EAAE,qBAAqB,EAC3B,aAAa,EAAE,kBAAkB,EACjC,YAAY,EAAE,wBAAwB,EACtC,SAAS,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,EACzC,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,EAAA,EAEvB,OAAO,CACA,KAEZ,OAAO,CACV;AAEL,QAAA,MAAM,WAAW,IACbA,cAAC,CAAA,aAAA,CAAAA,cAAK,CAAC,QAAQ,EAAA,IAAA;YACV,cAAc;YACd,kBAAkB,IAAI,OAAO,CAAC,SAAS,KAAA,IAAA,IAAT,SAAS,KAAT,SAAA,GAAA,SAAA,GAAA,SAAS,CAAE,OAAO,CAAC,KAC9CA,cAAC,CAAA,aAAA,CAAA,KAAK,EACF,EAAA,QAAQ,EAAC,OAAO,EAChB,IAAI,EAAE,YAAY,EAClB,WAAW,EAAE,gBAAgB,EAC7B,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,SAAS,CAAC,OAAO,EAChC,YAAY,EAAE,qBAAqB,EAElC,EAAA,kBAAkB,EAAE,CACjB,CACX,CACY,CACpB;AAED,QAAA,OAAO,WAAW;AACtB,KAAC;AAED,IAAA,MAAM,QAAQ,GACV,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,IACpBA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAC,EAAA,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,EAAA,CAAI,CACzE;IACL,MAAM,SAAS,GAAG,eAAe,CAAC,EAAC,KAAK,EAAE,cAAc,EAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,EAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAC;IACjD,IAAI,eAAe,GAAG,IAAI;AAC1B,IAAA,IAAI,IAAI;IAER,MAAM,IAAI,GAAG,EAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAC;AAE5E,IAAA,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE;QACnC,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAuB;QAChE,eAAe;YACX,YAAY;gBACX,WAAW,CACR,MAAM,EACN,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,KAAK,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,EAC/C,IAAI,CACgB;;SACzB;AACH,QAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;QACvB,eAAe,GAAG,YAAY,IAAI,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC;;AAGnE,IAAA,QACIA,cAAA,CAAA,aAAA,CAACA,cAAK,CAAC,QAAQ,EAAA,IAAA;AACV,QAAA,YAAY,KACTA,cAAA,CAAA,aAAA,CAAC,eAAe,EAAA,EACZ,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,CAAC,KAAgD,KACtD,WAAW,KAAX,IAAA,IAAA,WAAW,KAAX,SAAA,GAAA,SAAA,GAAA,WAAW,CAAG,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAEtC,cAAc,EAAE,kBAAkB,GACpC,CACL;QACA,IAAI,CACQ;AAEzB;AAEA,IAAI,CAAC,WAAW,GAAG,MAAM;;;;"}
1
+ {"version":3,"file":"Item.js","sources":["../../../../../../../../src/components/AsideHeader/components/CompositeBar/Item/Item.tsx"],"sourcesContent":["import React from 'react';\n\nimport {ChevronDown, ChevronRight} from '@gravity-ui/icons';\nimport {Icon, Popup, PopupPlacement, PopupProps, setRef} from '@gravity-ui/uikit';\n\nimport {MakeItemParams} from '../../../../types';\nimport {createBlock} from '../../../../utils/cn';\nimport {useSafeAsideHeaderContext} from '../../../AsideHeaderContext';\nimport {getAsideHeaderDensityConfig} from '../../../density';\nimport i18n from '../../../i18n';\nimport {isQuickAccessPinEligible} from '../../../quickAccess';\nimport {AsideHeaderItem} from '../../../types';\nimport {AsideDivider} from '../../AsideDivider';\nimport {CURRENT_IDS_ATTRIBUTE} from '../../PageLayout/currentIndicatorDom';\nimport {HighlightedItem} from '../HighlightedItem/HighlightedItem';\nimport {COLLAPSE_ITEM_ID, COMPOSITE_BAR_ITEM_ID_ATTRIBUTE, ITEM_TYPE_REGULAR} from '../constants';\nimport {getItemPresentationCurrentIds} from '../presentationCurrent';\n\nimport {ItemInnerProps, ItemProps, QuickAccessToggleHandler} from './Item.types';\nimport {ItemPopup} from './ItemPopup';\nimport {ItemPopupNestContext} from './ItemPopupNestContext';\nimport {ItemQuickAccessPin} from './ItemQuickAccessPin';\nimport {renderItemTitle} from './renderItemTitle';\n\nimport styles from './Item.module.scss';\n\nconst b = createBlock('composite-bar-item', styles);\n\nconst defaultPopupPlacement: PopupPlacement = ['right-end'];\nconst defaultPopupOffset: NonNullable<PopupProps['offset']> = {mainAxis: 14};\nconst CHEVRON_SIZE = 16;\n\nfunction shouldShowMenuPopup({\n type,\n popupItems,\n collapsedItem,\n inlineGroupHeader,\n groupHeaderExpanded,\n}: {\n type: string;\n popupItems?: ItemInnerProps['menuPopupItems'];\n collapsedItem: boolean;\n inlineGroupHeader: boolean;\n groupHeaderExpanded?: boolean;\n}) {\n return (\n type !== 'divider' &&\n Boolean(popupItems?.length) &&\n (collapsedItem || !inlineGroupHeader || !groupHeaderExpanded)\n );\n}\n\nfunction shouldShowLabelPopup({\n isDivider,\n compact,\n hasPopupItems,\n disabled,\n}: {\n isDivider: boolean;\n compact?: boolean;\n hasPopupItems: boolean;\n disabled: boolean;\n}) {\n return !isDivider && Boolean(compact) && !hasPopupItems && !disabled;\n}\n\nfunction shouldShowChevron({\n compact,\n inlineGroupHeader,\n hasPopupItems,\n}: {\n compact?: boolean;\n inlineGroupHeader: boolean;\n hasPopupItems: boolean;\n}) {\n if (inlineGroupHeader) {\n return !compact;\n }\n\n return !compact && hasPopupItems;\n}\n\nfunction getExpandedTitleLines({\n type,\n compact,\n menuPopupRow,\n titleLines,\n}: {\n type: string;\n compact?: boolean;\n menuPopupRow?: boolean;\n titleLines?: ItemInnerProps['titleLines'];\n}) {\n if (type !== ITEM_TYPE_REGULAR || compact || menuPopupRow) {\n return 1;\n }\n\n return titleLines;\n}\n\nfunction shouldShowQuickAccessPin({\n enabled,\n compact,\n popupItems,\n item,\n onToggle,\n}: {\n enabled?: boolean;\n compact?: boolean;\n popupItems?: AsideHeaderItem[];\n item: AsideHeaderItem;\n onToggle?: QuickAccessToggleHandler;\n}) {\n return (\n Boolean(enabled) &&\n !compact &&\n !popupItems?.length &&\n isQuickAccessPinEligible(item) &&\n typeof onToggle === 'function'\n );\n}\n\nfunction getChevronFallbackLabel(expanded: boolean | undefined): string {\n return expanded ? i18n('button_collapse') : i18n('button_expand');\n}\n\nfunction resolveItemAriaLabel(\n ariaProps: ItemInnerProps['menuItemAriaProps'],\n titleLabel: string | undefined,\n): string | undefined {\n return ariaProps?.['aria-label'] ?? titleLabel;\n}\n\nfunction resolveAnchorRef(\n anchorRef: React.RefObject<HTMLElement> | undefined,\n fallback: React.RefObject<HTMLElement>,\n): React.RefObject<HTMLElement> {\n return anchorRef?.current ? anchorRef : fallback;\n}\n\nexport const Item: React.FC<ItemInnerProps> = (props) => {\n const {\n className,\n popupItemClassName,\n menuPopupItems,\n menuPopupTitle,\n groupHeaderExpanded,\n compact,\n onMouseLeave,\n onMouseEnter,\n enableTooltip = true,\n popupVisible = false,\n popupRef: anchoreRefProp,\n popupPlacement = defaultPopupPlacement,\n popupOffset = defaultPopupOffset,\n popupKeepMounted,\n renderPopupContent,\n onOpenChangePopup,\n onItemClick,\n onPopupItemClick,\n onItemClickCapture,\n itemWrapper,\n bringForward,\n rightAdornment,\n title,\n href,\n qa,\n hideIcon = false,\n menuPopupHideIcon,\n menuPopupNestedHideIcon,\n stopClickPropagation = false,\n menuGroupNestedTreeConnector,\n menuGroupNested,\n menuItemAriaProps,\n menuPopupRow,\n suppressCurrentHighlight = false,\n suppressCurrentItemIds,\n enableQuickAccessPin,\n quickAccessPinItem: quickAccessPinItemProp,\n onToggleQuickAccess,\n onGroupHeaderChevronClick,\n } = props;\n\n const [labelPopupOpen, setLabelPopupOpen] = React.useState(false);\n const [menuPopupOpen, setMenuPopupOpen] = React.useState(false);\n\n const ref = React.useRef<HTMLElement>(null);\n const mergedRowRef = React.useCallback(\n (element: HTMLElement | null) => {\n setRef(ref, element);\n setRef(props.rowRef, element);\n },\n [props.rowRef],\n );\n const anchorRef = resolveAnchorRef(anchoreRefProp, ref);\n const highlightedRef = React.useRef<HTMLDivElement>(null);\n const interactiveRowRef = React.useRef<HTMLDivElement>(null);\n\n const type = props.type || ITEM_TYPE_REGULAR;\n const icon = props.icon;\n const asideHeaderContext = useSafeAsideHeaderContext();\n const defaultIconSize = getAsideHeaderDensityConfig(asideHeaderContext?.menuDensity).iconSize;\n const iconSize = props.iconSize || defaultIconSize;\n const iconQa = props.iconQa;\n const collapsedItem = props.id === COLLAPSE_ITEM_ID;\n const inlineGroupHeader = groupHeaderExpanded !== undefined;\n const resolvedMenuPopupItems = menuPopupItems ?? props.compositeBarMenuPopupItems;\n const resolvedMenuPopupTitle = menuPopupTitle ?? props.compositeBarMenuPopupTitle;\n\n const currentIds = suppressCurrentHighlight\n ? []\n : getItemPresentationCurrentIds(props, {\n suppressCurrentItemIds,\n popupItems: resolvedMenuPopupItems,\n });\n const current = currentIds.length > 0;\n const currentIdsMetadata =\n !menuPopupRow && currentIds.length ? JSON.stringify(currentIds) : undefined;\n const quickAccessPinItem = quickAccessPinItemProp ?? props;\n const showQuickAccessPin = shouldShowQuickAccessPin({\n enabled: enableQuickAccessPin,\n compact,\n popupItems: resolvedMenuPopupItems,\n item: quickAccessPinItem,\n onToggle: onToggleQuickAccess,\n });\n const [quickAccessPinSuppressed, setQuickAccessPinSuppressed] = React.useState(false);\n\n const handleToggleQuickAccess = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n onToggleQuickAccess?.(quickAccessPinItem, event);\n\n // Pointer clicks should not leave the control under the cursor after the row moves.\n // Keep keyboard-triggered controls visible and focused.\n if (event.detail > 0) {\n setQuickAccessPinSuppressed(true);\n event.currentTarget.blur();\n }\n },\n [onToggleQuickAccess, quickAccessPinItem],\n );\n\n const handleOpenChangePopup = React.useCallback<NonNullable<ItemProps['onOpenChangePopup']>>(\n (newOpen, event, reason) => {\n if (\n event instanceof MouseEvent &&\n event.target &&\n ref.current?.contains(event.target as Node)\n ) {\n return;\n }\n\n if (newOpen) {\n setLabelPopupOpen(false);\n setMenuPopupOpen(false);\n }\n\n onOpenChangePopup?.(newOpen, event, reason);\n },\n [onOpenChangePopup],\n );\n\n const isDivider = type === 'divider';\n const showMenuPopup = shouldShowMenuPopup({\n type,\n popupItems: resolvedMenuPopupItems,\n collapsedItem,\n inlineGroupHeader,\n groupHeaderExpanded,\n });\n\n const compactPopoverDisabled = !enableTooltip || popupVisible || type === 'action';\n const labelPopupAvailable = shouldShowLabelPopup({\n isDivider,\n compact,\n hasPopupItems: Boolean(resolvedMenuPopupItems?.length),\n disabled: compactPopoverDisabled,\n });\n\n React.useEffect(() => {\n if (!showMenuPopup) setMenuPopupOpen(false);\n if (!labelPopupAvailable) setLabelPopupOpen(false);\n }, [showMenuPopup, labelPopupAvailable]);\n\n const submenuNest = React.useContext(ItemPopupNestContext);\n\n React.useEffect(() => {\n if (!submenuNest || !showMenuPopup || !menuPopupOpen) {\n return undefined;\n }\n\n submenuNest.registerNestedOpen(1);\n\n return () => {\n submenuNest.registerNestedOpen(-1);\n };\n }, [submenuNest, showMenuPopup, menuPopupOpen]);\n\n if (isDivider) {\n return (\n <AsideDivider\n as=\"div\"\n className={b('menu-divider')}\n transitionId={`item/${props.id}`}\n />\n );\n }\n\n const expandedTitleLines = getExpandedTitleLines({\n type,\n compact,\n menuPopupRow,\n titleLines: props.titleLines,\n });\n\n const makeIconNode = (iconEl: React.ReactNode, withCompactPopover = true): React.ReactNode => {\n if (!compact) {\n return iconEl;\n }\n\n const iconButton = (\n <div\n onMouseEnter={() => onMouseEnter?.()}\n onMouseLeave={() => onMouseLeave?.()}\n className={b('btn-icon')}\n >\n {iconEl}\n </div>\n );\n\n if (!withCompactPopover || resolvedMenuPopupItems?.length) {\n return iconButton;\n }\n\n return (\n <ItemPopup\n items={[quickAccessPinItem]}\n variant=\"label\"\n highlightCurrentItem={false}\n open={labelPopupOpen}\n onOpenChange={(nextOpen) => {\n if (nextOpen && compactPopoverDisabled) return;\n setLabelPopupOpen(nextOpen);\n }}\n hideIcon\n itemClassName={popupItemClassName}\n disabled={compactPopoverDisabled}\n type={type}\n collapsed={compact}\n /**\n * No `onPopupItemClick` here on purpose: this popup renders the item itself\n * (`items={[props]}`), whose `onItemClick` is already the row-level wrapper.\n * Going through the wrapper keeps the original `item.onItemClick` intact for\n * the AsideHeader handler; the direct path would pass the wrapper as\n * `item.onItemClick` and trigger the handler twice (toggling All pages back).\n */\n onItemClick={onItemClick}\n suppressCurrentItemIds={suppressCurrentItemIds}\n >\n {iconButton}\n </ItemPopup>\n );\n };\n\n const ariaLabel = typeof title === 'string' ? title : undefined;\n const resolvedAriaLabel = resolveItemAriaLabel(menuItemAriaProps, ariaLabel);\n const showSurface = !menuPopupRow && [ITEM_TYPE_REGULAR, 'action'].includes(type);\n\n const makeNode = ({icon: iconEl, title: titleEl}: MakeItemParams) => {\n const wrappedByItemWrapper = typeof itemWrapper === 'function';\n const showChevron = shouldShowChevron({\n compact,\n inlineGroupHeader,\n hasPopupItems: Boolean(resolvedMenuPopupItems?.length),\n });\n const chevronClick =\n showChevron && inlineGroupHeader ? onGroupHeaderChevronClick : undefined;\n /* With a sibling chevron control, the wrapper becomes the outer box of the row,\n so the external className (outer layout) is applied to it instead of the row. */\n const rowClassName = b(\n {\n type,\n current,\n compact,\n 'hide-icon': hideIcon,\n 'menu-group-nested': menuGroupNested,\n 'menu-popup-row': menuPopupRow,\n 'with-quick-access-pin': showQuickAccessPin,\n 'title-lines': expandedTitleLines?.toString(),\n 'with-chevron-control': Boolean(chevronClick),\n },\n chevronClick ? undefined : className,\n );\n\n const handleRowClick = (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (compact && !collapsedItem && !showMenuPopup && !current) {\n setLabelPopupOpen(false);\n }\n\n if (event.detail > 0) {\n const activeElement = event.currentTarget.ownerDocument.activeElement;\n\n if (\n activeElement instanceof HTMLElement &&\n interactiveRowRef.current?.contains(activeElement)\n ) {\n activeElement.blur();\n }\n }\n\n onItemClick?.(props, collapsedItem, event);\n\n if (stopClickPropagation) {\n event.stopPropagation();\n }\n };\n\n let chevronNode: React.ReactNode = null;\n let chevronControl: React.ReactNode = null;\n\n if (chevronClick) {\n chevronControl = (\n <button\n type=\"button\"\n className={b('chevron', {interactive: true})}\n aria-label={[getChevronFallbackLabel(groupHeaderExpanded), resolvedAriaLabel]\n .filter(Boolean)\n .join(' ')}\n aria-expanded={groupHeaderExpanded}\n onClick={(event) => {\n event.stopPropagation();\n chevronClick(event);\n }}\n >\n <Icon\n data={groupHeaderExpanded ? ChevronDown : ChevronRight}\n size={CHEVRON_SIZE}\n />\n </button>\n );\n } else if (showChevron) {\n chevronNode = (\n <div className={b('chevron')}>\n <Icon\n data={groupHeaderExpanded ? ChevronDown : ChevronRight}\n size={CHEVRON_SIZE}\n />\n </div>\n );\n }\n\n const rowChildren = (\n <>\n {showSurface && (\n <span className={b('surface')} data-gn-aside-part=\"surface\" aria-hidden />\n )}\n {menuGroupNestedTreeConnector}\n <div className={b('icon-place')} ref={highlightedRef} data-gn-aside-part=\"icon\">\n {makeIconNode(iconEl)}\n </div>\n\n <div className={b('title')} data-gn-aside-part=\"title\" title={ariaLabel}>\n {titleEl}\n </div>\n\n {chevronNode}\n </>\n );\n\n const rowEventProps = {\n ...(menuItemAriaProps ?? {}),\n className: rowClassName,\n 'data-type': type,\n 'data-qa': qa,\n [COMPOSITE_BAR_ITEM_ID_ATTRIBUTE]: props.id,\n [CURRENT_IDS_ATTRIBUTE]: currentIdsMetadata,\n 'data-gn-aside-nested': menuGroupNested ? '' : undefined,\n 'aria-label': resolvedAriaLabel,\n onClick: handleRowClick,\n onClickCapture: onItemClickCapture,\n onMouseEnter: () => {\n if (!compact) {\n onMouseEnter?.();\n }\n },\n onMouseLeave: () => {\n if (!compact) {\n onMouseLeave?.();\n }\n },\n };\n\n let tagNode: React.ReactNode;\n\n if (href) {\n tagNode = (\n <a {...rowEventProps} href={href} ref={mergedRowRef}>\n {rowChildren}\n </a>\n );\n } else if (wrappedByItemWrapper) {\n tagNode = (\n <div\n {...rowEventProps}\n role={menuItemAriaProps?.role ?? 'button'}\n ref={mergedRowRef}\n >\n {rowChildren}\n </div>\n );\n } else {\n tagNode = (\n <button {...rowEventProps} ref={mergedRowRef}>\n {rowChildren}\n </button>\n );\n }\n\n if (chevronControl) {\n tagNode = (\n <div className={b('group-header-row', {current}, className)}>\n {tagNode}\n {chevronControl}\n </div>\n );\n }\n\n const expandedMenuRows = resolvedMenuPopupItems;\n\n const wrappedTagNode =\n showMenuPopup && expandedMenuRows ? (\n <ItemPopup\n items={expandedMenuRows}\n title={resolvedMenuPopupTitle}\n open={menuPopupOpen}\n itemClassName={popupItemClassName}\n hideIcon={menuPopupHideIcon}\n nestedPopupHideIcon={menuPopupNestedHideIcon}\n onOpenChange={setMenuPopupOpen}\n collapsed={collapsedItem ? true : compact}\n onPopupItemClick={onPopupItemClick}\n onItemClick={onItemClick}\n enableQuickAccessPin={enableQuickAccessPin}\n onToggleQuickAccess={onToggleQuickAccess}\n suppressCurrentItemIds={suppressCurrentItemIds}\n >\n {tagNode}\n </ItemPopup>\n ) : (\n tagNode\n );\n\n const createdNode = (\n <React.Fragment>\n {wrappedTagNode}\n {renderPopupContent && Boolean(anchorRef?.current) && (\n <Popup\n strategy=\"fixed\"\n open={popupVisible}\n keepMounted={popupKeepMounted}\n placement={popupPlacement}\n offset={popupOffset}\n anchorElement={anchorRef.current}\n onOpenChange={handleOpenChangePopup}\n >\n {renderPopupContent()}\n </Popup>\n )}\n </React.Fragment>\n );\n\n return createdNode;\n };\n\n const wrapWithQuickAccessPin = (rowNode: React.ReactNode) => {\n if (!showQuickAccessPin) {\n return rowNode;\n }\n\n return (\n <div\n ref={interactiveRowRef}\n className={b('interactive-row', {'menu-popup': menuPopupRow})}\n onMouseLeave={() => setQuickAccessPinSuppressed(false)}\n >\n {rowNode}\n <span\n className={b('quick-access-pin-slot', {\n suppressed: quickAccessPinSuppressed,\n })}\n >\n <ItemQuickAccessPin\n quickAccess={quickAccessPinItem.quickAccess}\n onToggle={handleToggleQuickAccess}\n />\n </span>\n </div>\n );\n };\n\n const iconNode =\n hideIcon || !icon ? null : (\n <Icon qa={iconQa} data={icon} size={iconSize} className={b('icon')} />\n );\n const titleNode = renderItemTitle({\n title,\n rightAdornment,\n titleLines: expandedTitleLines,\n });\n const params = {icon: iconNode, title: titleNode};\n let highlightedNode = null;\n let node;\n\n const opts = {compact: Boolean(compact), collapsed: false, item: props, ref};\n\n if (typeof itemWrapper === 'function') {\n node = wrapWithQuickAccessPin(itemWrapper(params, makeNode, opts) as React.ReactElement);\n highlightedNode =\n bringForward &&\n (itemWrapper(\n params,\n ({icon: iconEl}) => makeIconNode(iconEl, false),\n opts,\n ) as React.ReactElement);\n } else {\n node = wrapWithQuickAccessPin(makeNode(params));\n highlightedNode = bringForward && makeIconNode(iconNode, false);\n }\n\n return (\n <React.Fragment>\n {bringForward && (\n <HighlightedItem\n iconNode={highlightedNode}\n iconRef={highlightedRef}\n onClick={(event: React.MouseEvent<HTMLElement, MouseEvent>) =>\n onItemClick?.(props, false, event)\n }\n onClickCapture={onItemClickCapture}\n />\n )}\n {node}\n </React.Fragment>\n );\n};\n\nItem.displayName = 'Item';\n"],"names":["React"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- var styles = {"gn-composite-bar-item":"Item-module__gn-composite-bar-item___-pkx5","gnCompositeBarItem":"Item-module__gn-composite-bar-item___-pkx5","gn-composite-bar-item_type_regular":"Item-module__gn-composite-bar-item_type_regular___wkhsT","gnCompositeBarItemTypeRegular":"Item-module__gn-composite-bar-item_type_regular___wkhsT","gn-composite-bar-item__icon":"Item-module__gn-composite-bar-item__icon___ORFNf","gnCompositeBarItemIcon":"Item-module__gn-composite-bar-item__icon___ORFNf","gn-composite-bar-item_current":"Item-module__gn-composite-bar-item_current___NT2hB","gnCompositeBarItemCurrent":"Item-module__gn-composite-bar-item_current___NT2hB","gn-composite-bar-item__icon-tooltip":"Item-module__gn-composite-bar-item__icon-tooltip___PxU2i","gnCompositeBarItemIconTooltip":"Item-module__gn-composite-bar-item__icon-tooltip___PxU2i","g-action-tooltip__description":"Item-module__g-action-tooltip__description___UsHcG","gActionTooltipDescription":"Item-module__g-action-tooltip__description___UsHcG","gn-composite-bar-item__icon-place":"Item-module__gn-composite-bar-item__icon-place___jPKRh","gnCompositeBarItemIconPlace":"Item-module__gn-composite-bar-item__icon-place___jPKRh","gn-composite-bar-item__title":"Item-module__gn-composite-bar-item__title___wj5L5","gnCompositeBarItemTitle":"Item-module__gn-composite-bar-item__title___wj5L5","gn-composite-bar-item__title-text":"Item-module__gn-composite-bar-item__title-text___cILJo","gnCompositeBarItemTitleText":"Item-module__gn-composite-bar-item__title-text___cILJo","gn-composite-bar-item__title-adornment":"Item-module__gn-composite-bar-item__title-adornment___Xcopn","gnCompositeBarItemTitleAdornment":"Item-module__gn-composite-bar-item__title-adornment___Xcopn","gn-composite-bar-item__collapse-item":"Item-module__gn-composite-bar-item__collapse-item___Up6IX","gnCompositeBarItemCollapseItem":"Item-module__gn-composite-bar-item__collapse-item___Up6IX","gn-composite-bar-item__collapse-item-icon":"Item-module__gn-composite-bar-item__collapse-item-icon___CD-ao","gnCompositeBarItemCollapseItemIcon":"Item-module__gn-composite-bar-item__collapse-item-icon___CD-ao","gn-composite-bar-item__menu-divider":"Item-module__gn-composite-bar-item__menu-divider___hkm-Z","gnCompositeBarItemMenuDivider":"Item-module__gn-composite-bar-item__menu-divider___hkm-Z","gn-composite-bar-item__collapse-items-popup-content":"Item-module__gn-composite-bar-item__collapse-items-popup-content___a82to","gnCompositeBarItemCollapseItemsPopupContent":"Item-module__gn-composite-bar-item__collapse-items-popup-content___a82to","gn-composite-bar-item__link":"Item-module__gn-composite-bar-item__link___McAVN","gnCompositeBarItemLink":"Item-module__gn-composite-bar-item__link___McAVN","gn-composite-bar-item__btn-icon":"Item-module__gn-composite-bar-item__btn-icon___SwT65","gnCompositeBarItemBtnIcon":"Item-module__gn-composite-bar-item__btn-icon___SwT65","gn-composite-bar-item_type_action":"Item-module__gn-composite-bar-item_type_action___2jxO8","gnCompositeBarItemTypeAction":"Item-module__gn-composite-bar-item_type_action___2jxO8","gn-composite-bar-item__icon-tooltip_item-type_action":"Item-module__gn-composite-bar-item__icon-tooltip_item-type_action___HUhUR","gnCompositeBarItemIconTooltipItemTypeAction":"Item-module__gn-composite-bar-item__icon-tooltip_item-type_action___HUhUR","gn-composite-bar-item__icon-popover":"Item-module__gn-composite-bar-item__icon-popover___euq-P","gnCompositeBarItemIconPopover":"Item-module__gn-composite-bar-item__icon-popover___euq-P","gn-composite-bar-item__icon-popover_item-type_action":"Item-module__gn-composite-bar-item__icon-popover_item-type_action___ep-D3","gnCompositeBarItemIconPopoverItemTypeAction":"Item-module__gn-composite-bar-item__icon-popover_item-type_action___ep-D3","gn-composite-bar-item__popup-content":"Item-module__gn-composite-bar-item__popup-content___oys3t","gnCompositeBarItemPopupContent":"Item-module__gn-composite-bar-item__popup-content___oys3t","gn-composite-bar-item__root-menu-item":"Item-module__gn-composite-bar-item__root-menu-item___nlpvH","gnCompositeBarItemRootMenuItem":"Item-module__gn-composite-bar-item__root-menu-item___nlpvH","gn-composite-bar-item__popup-title":"Item-module__gn-composite-bar-item__popup-title___2-tGd","gnCompositeBarItemPopupTitle":"Item-module__gn-composite-bar-item__popup-title___2-tGd","gn-composite-bar-item__popup-item":"Item-module__gn-composite-bar-item__popup-item___MPgm3","gnCompositeBarItemPopupItem":"Item-module__gn-composite-bar-item__popup-item___MPgm3","gn-composite-bar-item_hide-icon":"Item-module__gn-composite-bar-item_hide-icon___bf5h3","gnCompositeBarItemHideIcon":"Item-module__gn-composite-bar-item_hide-icon___bf5h3","gn-composite-bar-item_compact":"Item-module__gn-composite-bar-item_compact___PVTeM","gnCompositeBarItemCompact":"Item-module__gn-composite-bar-item_compact___PVTeM","gn-composite-bar-item__group-header-row":"Item-module__gn-composite-bar-item__group-header-row___m-4WB","gnCompositeBarItemGroupHeaderRow":"Item-module__gn-composite-bar-item__group-header-row___m-4WB","gn-composite-bar-item_with-chevron-control":"Item-module__gn-composite-bar-item_with-chevron-control___5F9O3","gnCompositeBarItemWithChevronControl":"Item-module__gn-composite-bar-item_with-chevron-control___5F9O3","gn-composite-bar-item__chevron":"Item-module__gn-composite-bar-item__chevron___ZZ-vf","gnCompositeBarItemChevron":"Item-module__gn-composite-bar-item__chevron___ZZ-vf","gn-composite-bar-item__chevron_interactive":"Item-module__gn-composite-bar-item__chevron_interactive___jmUhC","gnCompositeBarItemChevronInteractive":"Item-module__gn-composite-bar-item__chevron_interactive___jmUhC"};
1
+ var styles = {"gn-composite-bar-item":"Item-module__gn-composite-bar-item___-pkx5","gnCompositeBarItem":"Item-module__gn-composite-bar-item___-pkx5","gn-composite-bar-item_type_regular":"Item-module__gn-composite-bar-item_type_regular___wkhsT","gnCompositeBarItemTypeRegular":"Item-module__gn-composite-bar-item_type_regular___wkhsT","gn-composite-bar-item__surface":"Item-module__gn-composite-bar-item__surface___iqsAp","gnCompositeBarItemSurface":"Item-module__gn-composite-bar-item__surface___iqsAp","gn-composite-bar-item_menu-popup-row":"Item-module__gn-composite-bar-item_menu-popup-row___pX55k","gnCompositeBarItemMenuPopupRow":"Item-module__gn-composite-bar-item_menu-popup-row___pX55k","gn-composite-bar-item_compact":"Item-module__gn-composite-bar-item_compact___PVTeM","gnCompositeBarItemCompact":"Item-module__gn-composite-bar-item_compact___PVTeM","gn-composite-bar-item__icon":"Item-module__gn-composite-bar-item__icon___ORFNf","gnCompositeBarItemIcon":"Item-module__gn-composite-bar-item__icon___ORFNf","gn-composite-bar-item_current":"Item-module__gn-composite-bar-item_current___NT2hB","gnCompositeBarItemCurrent":"Item-module__gn-composite-bar-item_current___NT2hB","gn-composite-bar-item__icon-tooltip":"Item-module__gn-composite-bar-item__icon-tooltip___PxU2i","gnCompositeBarItemIconTooltip":"Item-module__gn-composite-bar-item__icon-tooltip___PxU2i","g-action-tooltip__description":"Item-module__g-action-tooltip__description___UsHcG","gActionTooltipDescription":"Item-module__g-action-tooltip__description___UsHcG","gn-composite-bar-item__icon-place":"Item-module__gn-composite-bar-item__icon-place___jPKRh","gnCompositeBarItemIconPlace":"Item-module__gn-composite-bar-item__icon-place___jPKRh","gn-composite-bar-item__title":"Item-module__gn-composite-bar-item__title___wj5L5","gnCompositeBarItemTitle":"Item-module__gn-composite-bar-item__title___wj5L5","gn-composite-bar-item__title-text":"Item-module__gn-composite-bar-item__title-text___cILJo","gnCompositeBarItemTitleText":"Item-module__gn-composite-bar-item__title-text___cILJo","gn-composite-bar-item__title-text_lines_2":"Item-module__gn-composite-bar-item__title-text_lines_2___iBySH","gnCompositeBarItemTitleTextLines2":"Item-module__gn-composite-bar-item__title-text_lines_2___iBySH","gn-composite-bar-item__title-adornment":"Item-module__gn-composite-bar-item__title-adornment___Xcopn","gnCompositeBarItemTitleAdornment":"Item-module__gn-composite-bar-item__title-adornment___Xcopn","gn-composite-bar-item__interactive-row":"Item-module__gn-composite-bar-item__interactive-row___JXbmT","gnCompositeBarItemInteractiveRow":"Item-module__gn-composite-bar-item__interactive-row___JXbmT","gn-composite-bar-item__quick-access-pin-slot":"Item-module__gn-composite-bar-item__quick-access-pin-slot___j9wtv","gnCompositeBarItemQuickAccessPinSlot":"Item-module__gn-composite-bar-item__quick-access-pin-slot___j9wtv","gn-composite-bar-item__quick-access-pin-slot_suppressed":"Item-module__gn-composite-bar-item__quick-access-pin-slot_suppressed___3yKbX","gnCompositeBarItemQuickAccessPinSlotSuppressed":"Item-module__gn-composite-bar-item__quick-access-pin-slot_suppressed___3yKbX","gn-composite-bar-item_with-quick-access-pin":"Item-module__gn-composite-bar-item_with-quick-access-pin___yPnvd","gnCompositeBarItemWithQuickAccessPin":"Item-module__gn-composite-bar-item_with-quick-access-pin___yPnvd","gn-composite-bar-item__quick-access-pin":"Item-module__gn-composite-bar-item__quick-access-pin___WLaB0","gnCompositeBarItemQuickAccessPin":"Item-module__gn-composite-bar-item__quick-access-pin___WLaB0","gn-composite-bar-item__quick-access-pin_pinned":"Item-module__gn-composite-bar-item__quick-access-pin_pinned___Q9mQK","gnCompositeBarItemQuickAccessPinPinned":"Item-module__gn-composite-bar-item__quick-access-pin_pinned___Q9mQK","gn-composite-bar-item__collapse-item":"Item-module__gn-composite-bar-item__collapse-item___Up6IX","gnCompositeBarItemCollapseItem":"Item-module__gn-composite-bar-item__collapse-item___Up6IX","gn-composite-bar-item__collapse-item-icon":"Item-module__gn-composite-bar-item__collapse-item-icon___CD-ao","gnCompositeBarItemCollapseItemIcon":"Item-module__gn-composite-bar-item__collapse-item-icon___CD-ao","gn-composite-bar-item__menu-divider":"Item-module__gn-composite-bar-item__menu-divider___hkm-Z","gnCompositeBarItemMenuDivider":"Item-module__gn-composite-bar-item__menu-divider___hkm-Z","gn-composite-bar-item__collapse-items-popup-content":"Item-module__gn-composite-bar-item__collapse-items-popup-content___a82to","gnCompositeBarItemCollapseItemsPopupContent":"Item-module__gn-composite-bar-item__collapse-items-popup-content___a82to","gn-composite-bar-item__link":"Item-module__gn-composite-bar-item__link___McAVN","gnCompositeBarItemLink":"Item-module__gn-composite-bar-item__link___McAVN","gn-composite-bar-item_title-lines_2":"Item-module__gn-composite-bar-item_title-lines_2___u8Dcn","gnCompositeBarItemTitleLines2":"Item-module__gn-composite-bar-item_title-lines_2___u8Dcn","gn-composite-bar-item__chevron":"Item-module__gn-composite-bar-item__chevron___ZZ-vf","gnCompositeBarItemChevron":"Item-module__gn-composite-bar-item__chevron___ZZ-vf","gn-composite-bar-item__btn-icon":"Item-module__gn-composite-bar-item__btn-icon___SwT65","gnCompositeBarItemBtnIcon":"Item-module__gn-composite-bar-item__btn-icon___SwT65","gn-composite-bar-item_type_action":"Item-module__gn-composite-bar-item_type_action___2jxO8","gnCompositeBarItemTypeAction":"Item-module__gn-composite-bar-item_type_action___2jxO8","gn-composite-bar-item__icon-tooltip_item-type_action":"Item-module__gn-composite-bar-item__icon-tooltip_item-type_action___HUhUR","gnCompositeBarItemIconTooltipItemTypeAction":"Item-module__gn-composite-bar-item__icon-tooltip_item-type_action___HUhUR","gn-composite-bar-item__icon-popover":"Item-module__gn-composite-bar-item__icon-popover___euq-P","gnCompositeBarItemIconPopover":"Item-module__gn-composite-bar-item__icon-popover___euq-P","gn-composite-bar-item__icon-popover_single-label":"Item-module__gn-composite-bar-item__icon-popover_single-label___mc-tU","gnCompositeBarItemIconPopoverSingleLabel":"Item-module__gn-composite-bar-item__icon-popover_single-label___mc-tU","gn-composite-bar-item__icon-popover_item-type_action":"Item-module__gn-composite-bar-item__icon-popover_item-type_action___ep-D3","gnCompositeBarItemIconPopoverItemTypeAction":"Item-module__gn-composite-bar-item__icon-popover_item-type_action___ep-D3","gn-composite-bar-item__popup-content":"Item-module__gn-composite-bar-item__popup-content___oys3t","gnCompositeBarItemPopupContent":"Item-module__gn-composite-bar-item__popup-content___oys3t","gn-composite-bar-item__popup-content_single-label":"Item-module__gn-composite-bar-item__popup-content_single-label___done-","gnCompositeBarItemPopupContentSingleLabel":"Item-module__gn-composite-bar-item__popup-content_single-label___done-","gn-composite-bar-item__root-menu-item":"Item-module__gn-composite-bar-item__root-menu-item___nlpvH","gnCompositeBarItemRootMenuItem":"Item-module__gn-composite-bar-item__root-menu-item___nlpvH","gn-composite-bar-item__popup-title":"Item-module__gn-composite-bar-item__popup-title___2-tGd","gnCompositeBarItemPopupTitle":"Item-module__gn-composite-bar-item__popup-title___2-tGd","gn-composite-bar-item__popup-item":"Item-module__gn-composite-bar-item__popup-item___MPgm3","gnCompositeBarItemPopupItem":"Item-module__gn-composite-bar-item__popup-item___MPgm3","gn-composite-bar-item_hide-icon":"Item-module__gn-composite-bar-item_hide-icon___bf5h3","gnCompositeBarItemHideIcon":"Item-module__gn-composite-bar-item_hide-icon___bf5h3","gn-composite-bar-item_menu-group-nested":"Item-module__gn-composite-bar-item_menu-group-nested___CVzJD","gnCompositeBarItemMenuGroupNested":"Item-module__gn-composite-bar-item_menu-group-nested___CVzJD","gn-composite-bar-item__group-header-row":"Item-module__gn-composite-bar-item__group-header-row___m-4WB","gnCompositeBarItemGroupHeaderRow":"Item-module__gn-composite-bar-item__group-header-row___m-4WB","gn-composite-bar-item__group-header-row_current":"Item-module__gn-composite-bar-item__group-header-row_current___YYm8y","gnCompositeBarItemGroupHeaderRowCurrent":"Item-module__gn-composite-bar-item__group-header-row_current___YYm8y","gn-composite-bar-item_with-chevron-control":"Item-module__gn-composite-bar-item_with-chevron-control___5F9O3","gnCompositeBarItemWithChevronControl":"Item-module__gn-composite-bar-item_with-chevron-control___5F9O3","gn-composite-bar-item__chevron_interactive":"Item-module__gn-composite-bar-item__chevron_interactive___jmUhC","gnCompositeBarItemChevronInteractive":"Item-module__gn-composite-bar-item__chevron_interactive___jmUhC"};
2
2
 
3
3
  export { styles as default };
4
4
  //# sourceMappingURL=Item.module.scss.js.map
@@ -1,8 +1,11 @@
1
1
  import * as React from 'react';
2
2
  import type { AsideHeaderItem } from 'src/components/AsideHeader/types';
3
+ export type QuickAccessToggleHandler = (item: AsideHeaderItem, event?: React.MouseEvent<HTMLButtonElement>) => void;
3
4
  export interface ItemProps extends AsideHeaderItem {
4
5
  }
5
6
  export interface ItemInnerProps extends ItemProps {
7
+ /** Internal registration of the original DOM row (never a popup or highlighted copy). */
8
+ rowRef?: React.Ref<HTMLElement>;
6
9
  className?: string;
7
10
  popupItemClassName?: string;
8
11
  /** Items shown in the compact (or expanded overflow) popover: group children or overflow list. */
@@ -10,14 +13,24 @@ export interface ItemInnerProps extends ItemProps {
10
13
  /** Optional title rendered at the top of the popup listing `menuPopupItems`. */
11
14
  menuPopupTitle?: string;
12
15
  /**
13
- * When set, the row is an inline (expanded sidebar) group header: chevron up/down
14
- * instead of a flyout chevron, and children render in a nested list.
16
+ * When set, the row is an inline (expanded sidebar) group header: chevron right/down
17
+ * instead of a flyout chevron. A collapsed header may still open its children in a popup.
15
18
  */
16
19
  groupHeaderExpanded?: boolean;
17
20
  onMouseEnter?: () => void;
18
21
  onMouseLeave?: () => void;
19
22
  /** When true, the icon slot is not rendered (e.g. compact popover: icon stays in the bar). */
20
23
  hideIcon?: boolean;
24
+ /** Controls icon visibility for the rows rendered in this item's popup. */
25
+ menuPopupHideIcon?: boolean;
26
+ /** Controls icon visibility one popup level deeper (a group nested inside `More`). */
27
+ menuPopupNestedHideIcon?: boolean;
28
+ /** Row rendered inside ItemPopup; always uses a single-line title. */
29
+ menuPopupRow?: boolean;
30
+ /** Suppresses selected styling without changing the source item's `current` value. */
31
+ suppressCurrentHighlight?: boolean;
32
+ /** Item ids whose current state is visually suppressed in this item's popup. */
33
+ suppressCurrentItemIds?: ReadonlySet<string>;
21
34
  /**
22
35
  * Stops click bubbling so portaled popup rows do not trigger the parent Item's onClick.
23
36
  * Off when `itemWrapper` is set so the wrapper (e.g. react-router Link) receives the click.
@@ -31,8 +44,13 @@ export interface ItemInnerProps extends ItemProps {
31
44
  * itself can carry the group's own main action.
32
45
  */
33
46
  onGroupHeaderChevronClick?: (event: React.SyntheticEvent) => void;
34
- /** When `true`, the chevron is not rendered in the compact (collapsed) sidebar. */
35
- hideCompactChevron?: boolean;
36
47
  /** Inline menu-group tree (L-connector) rendered inside the row, before the icon slot. */
37
48
  menuGroupNestedTreeConnector?: React.ReactNode;
49
+ /** Inline expanded menu-group child row. */
50
+ menuGroupNested?: boolean;
51
+ /** Enables pin/unpin controls for eligible leaf items. */
52
+ enableQuickAccessPin?: boolean;
53
+ /** Original public item used by the quick access callback. */
54
+ quickAccessPinItem?: AsideHeaderItem;
55
+ onToggleQuickAccess?: QuickAccessToggleHandler;
38
56
  }
@@ -1,7 +1,19 @@
1
1
  import React from 'react';
2
+ import { PopupProps } from '@gravity-ui/uikit';
2
3
  import { AsideHeaderItem } from '../../../types';
4
+ import type { QuickAccessToggleHandler } from './Item.types';
5
+ export declare function getItemPopoverOffset({ isSingleLabel, itemHeight, popupRowHeight, titleHeight, nested, }: {
6
+ isSingleLabel: boolean;
7
+ itemHeight: number;
8
+ popupRowHeight: number;
9
+ titleHeight?: number;
10
+ /** The popup opens from a row inside another popup. */
11
+ nested?: boolean;
12
+ }): NonNullable<PopupProps['offset']>;
3
13
  interface Props {
4
14
  items: AsideHeaderItem[];
15
+ /** `label` is the minimal popup used by one compact leaf item. */
16
+ variant?: 'menu' | 'label';
5
17
  /** Optional title rendered at the top of the popup. */
6
18
  title?: string;
7
19
  open?: boolean;
@@ -9,11 +21,18 @@ interface Props {
9
21
  type?: string;
10
22
  collapsed?: boolean;
11
23
  hideIcon?: boolean;
24
+ /** Icon visibility for a child popup opened from a row in this popup. */
25
+ nestedPopupHideIcon?: boolean;
12
26
  itemClassName?: string;
13
27
  children: React.ReactElement;
14
28
  onOpenChange?: (open: boolean) => void;
15
29
  onPopupItemClick?: AsideHeaderItem['onItemClick'];
16
30
  onItemClick?: AsideHeaderItem['onItemClick'];
31
+ /** Controls selected styling without altering the source items passed to callbacks. */
32
+ highlightCurrentItem?: boolean;
33
+ enableQuickAccessPin?: boolean;
34
+ onToggleQuickAccess?: QuickAccessToggleHandler;
35
+ suppressCurrentItemIds?: ReadonlySet<string>;
17
36
  }
18
37
  export declare const ItemPopup: React.FC<Props>;
19
38
  export {};
@@ -1,61 +1,177 @@
1
1
  import React__default from 'react';
2
- import { List, Popover } from '@gravity-ui/uikit';
2
+ import { useThemeValue, List, Popover } from '@gravity-ui/uikit';
3
+ import { POPUP_REGULAR_ITEM_HEIGHT } from '../../../../constants.js';
3
4
  import { createBlock } from '../../../../utils/cn.js';
4
- import { getSelectedItemIndex, getPopupItemHeight, getPopupItemsHeight } from '../utils.js';
5
+ import { useSafeAsideHeaderContext } from '../../../AsideHeaderContext.js';
6
+ import { getAsideHeaderDensityConfig, getAsideHeaderDensityCssProperties } from '../../../density.js';
7
+ import { isItemPresentationCurrent } from '../presentationCurrent.js';
8
+ import { getPopupItemHeight } from '../utils.js';
5
9
  import { Item } from './Item.js';
6
10
  import { ItemPopupNestContext } from './ItemPopupNestContext.js';
7
11
  import styles from './Item.module.scss.js';
8
12
 
9
13
  const b = createBlock('composite-bar-item', styles);
14
+ const POPUP_PADDING = 4;
10
15
  const POPUP_MAIN_AXIS_OFFSET = 14;
11
- const POPUP_CROSS_AXIS_OFFSET_WITH_TITLE = -30;
12
- const POPUP_CROSS_AXIS_OFFSET_WITHOUT_TITLE = 0;
13
- const DEFAULT_POPUP_DELAY = 100;
14
- const ItemPopup = ({ items, itemClassName, title, open, disabled, type, collapsed = false, hideIcon = false, children, onPopupItemClick, onItemClick, onOpenChange, }) => {
16
+ /** Whitespace between the painted borders of two chained popups. */
17
+ const NESTED_POPUP_GAP = 4;
18
+ /** `.g-popup` paints its border as a 1px shadow spread outside the border box. */
19
+ const POPUP_SHADOW_RING = 1;
20
+ const SOLO_LABEL_POPUP_ITEM_HEIGHT = 28;
21
+ const SOLO_LABEL_POPUP_BORDER_RADIUS = 4;
22
+ const POPUP_TITLE_BLOCK_HEIGHT = 30;
23
+ const DEFAULT_POPUP_DELAY = 0;
24
+ function getItemPopoverOffset({ isSingleLabel, itemHeight, popupRowHeight, titleHeight = 0, nested = false, }) {
25
+ if (isSingleLabel) {
26
+ return { mainAxis: POPUP_MAIN_AXIS_OFFSET, crossAxis: 0 };
27
+ }
28
+ // A nested popup anchors to a row that sits `POPUP_PADDING` inside the parent popup
29
+ // border box, and both popups paint a shadow ring outside that box. Compensate for
30
+ // both so chained popups keep `NESTED_POPUP_GAP` of whitespace at any density.
31
+ const mainAxis = nested
32
+ ? NESTED_POPUP_GAP + 2 * POPUP_SHADOW_RING + POPUP_PADDING
33
+ : POPUP_MAIN_AXIS_OFFSET;
34
+ const firstRowOffsetInAnchor = (itemHeight - popupRowHeight) / 2;
35
+ return {
36
+ mainAxis,
37
+ crossAxis: firstRowOffsetInAnchor - POPUP_PADDING - titleHeight,
38
+ };
39
+ }
40
+ const ItemPopup = ({ items, variant = 'menu', itemClassName, title, open, disabled, type, collapsed = false, hideIcon = false, nestedPopupHideIcon, children, onPopupItemClick, onItemClick, onOpenChange, highlightCurrentItem = true, enableQuickAccessPin, onToggleQuickAccess, suppressCurrentItemIds, }) => {
41
+ const asideHeaderContext = useSafeAsideHeaderContext();
42
+ const parentPopupNest = React__default.useContext(ItemPopupNestContext);
43
+ const theme = useThemeValue();
44
+ const densityConfig = getAsideHeaderDensityConfig(asideHeaderContext === null || asideHeaderContext === undefined ? undefined : asideHeaderContext.menuDensity);
15
45
  const nestedOpenCountRef = React__default.useRef(0);
16
- const popoverOffset = React__default.useMemo(() => ({
17
- mainAxis: POPUP_MAIN_AXIS_OFFSET,
18
- crossAxis: title
19
- ? POPUP_CROSS_AXIS_OFFSET_WITH_TITLE
20
- : POPUP_CROSS_AXIS_OFFSET_WITHOUT_TITLE,
21
- }), [title]);
22
- const isSingleLabel = !title && items.length === 1;
46
+ // A nested portaled popup temporarily blocks the parent's hover-close. Remember that close
47
+ // request and replay it after the child closes, unless the pointer/focus returned to the parent.
48
+ const deferredCloseRef = React__default.useRef(false);
49
+ const interactionInsideRef = React__default.useRef(false);
50
+ const popupContentRef = React__default.useRef(null);
51
+ const triggerElementRef = React__default.useRef(null);
52
+ const onOpenChangeRef = React__default.useRef(onOpenChange);
53
+ const densityCssProperties = getAsideHeaderDensityCssProperties(asideHeaderContext === null || asideHeaderContext === undefined ? undefined : asideHeaderContext.menuDensity);
54
+ const isSingleLabel = variant === 'label';
55
+ const soloPopupTheme = theme.endsWith('-hc') ? 'dark-hc' : 'dark';
56
+ React__default.useEffect(() => {
57
+ onOpenChangeRef.current = onOpenChange;
58
+ }, [onOpenChange]);
59
+ const popoverStyle = React__default.useMemo(() => {
60
+ const popupPadding = isSingleLabel ? 0 : POPUP_PADDING;
61
+ const popupBorderRadius = isSingleLabel
62
+ ? SOLO_LABEL_POPUP_BORDER_RADIUS
63
+ : densityConfig.itemExpandedRadius + popupPadding;
64
+ return Object.assign(Object.assign({}, densityCssProperties), { '--_--popup-padding': `${popupPadding}px`, '--_--popup-border-radius': `${popupBorderRadius}px`, '--_--popup-title-height': `${POPUP_TITLE_BLOCK_HEIGHT}px`, '--g-popup-border-radius': `${popupBorderRadius}px`,
65
+ // Popovers must appear instantly. `PopoverProps` does not expose Popup's
66
+ // `disableTransition`, so the enter/exit animation is disabled here; the
67
+ // style lands on the same `.g-popup` element that owns the transition.
68
+ transition: 'none' });
69
+ }, [densityConfig.itemExpandedRadius, densityCssProperties, isSingleLabel]);
70
+ const popupItemHeight = React__default.useCallback((item) => isSingleLabel ? SOLO_LABEL_POPUP_ITEM_HEIGHT : getPopupItemHeight(item), [isSingleLabel]);
71
+ const popupItemsHeight = React__default.useCallback((listItems) => listItems.reduce((sum, item) => sum + popupItemHeight(item), 0), [popupItemHeight]);
72
+ const popoverOffset = React__default.useMemo(() => getItemPopoverOffset({
73
+ isSingleLabel,
74
+ itemHeight: densityConfig.itemHeight,
75
+ popupRowHeight: POPUP_REGULAR_ITEM_HEIGHT,
76
+ titleHeight: title ? POPUP_TITLE_BLOCK_HEIGHT : 0,
77
+ nested: Boolean(parentPopupNest),
78
+ }), [densityConfig.itemHeight, isSingleLabel, parentPopupNest, title]);
23
79
  const registerNestedOpen = React__default.useCallback((delta) => {
80
+ var _a;
24
81
  nestedOpenCountRef.current = Math.max(0, nestedOpenCountRef.current + delta);
82
+ if (nestedOpenCountRef.current === 0 &&
83
+ deferredCloseRef.current &&
84
+ !interactionInsideRef.current) {
85
+ deferredCloseRef.current = false;
86
+ (_a = onOpenChangeRef.current) === null || _a === undefined ? undefined : _a.call(onOpenChangeRef, false);
87
+ }
25
88
  }, []);
26
89
  const nestContextValue = React__default.useMemo(() => ({ registerNestedOpen }), [registerNestedOpen]);
27
90
  const wrappedOnOpenChange = React__default.useCallback((next) => {
28
91
  if (!next && nestedOpenCountRef.current > 0) {
92
+ deferredCloseRef.current = true;
29
93
  return;
30
94
  }
95
+ deferredCloseRef.current = false;
31
96
  onOpenChange === null || onOpenChange === undefined ? undefined : onOpenChange(next);
32
97
  }, [onOpenChange]);
98
+ const markInteractionRegionEntered = React__default.useCallback(() => {
99
+ interactionInsideRef.current = true;
100
+ deferredCloseRef.current = false;
101
+ }, []);
102
+ const markInteractionRegionLeft = React__default.useCallback((relatedTarget) => {
103
+ var _a, _b;
104
+ const nextTarget = relatedTarget instanceof Node ? relatedTarget : null;
105
+ const remainsInside = Boolean(nextTarget &&
106
+ (((_a = triggerElementRef.current) === null || _a === undefined ? undefined : _a.contains(nextTarget)) ||
107
+ ((_b = popupContentRef.current) === null || _b === undefined ? undefined : _b.contains(nextTarget))));
108
+ if (!remainsInside) {
109
+ interactionInsideRef.current = false;
110
+ }
111
+ }, []);
33
112
  const handlePopupContentClick = React__default.useCallback((event) => {
34
113
  event.stopPropagation();
35
114
  }, []);
36
115
  // Inside a popup list, action items must look like regular menu rows, not floating
37
116
  // action buttons (e.g. when an `action` item overflows into the "More" popup).
38
117
  const popupItems = React__default.useMemo(() => items.map((item) => item.type === 'action' ? Object.assign(Object.assign({}, item), { type: 'regular' }) : item), [items]);
118
+ const sourceItemsById = React__default.useMemo(() => new Map(items.map((item) => [item.id, item])), [items]);
119
+ const selectedPopupItemIndex = React__default.useMemo(() => {
120
+ if (!highlightCurrentItem) {
121
+ return undefined;
122
+ }
123
+ const index = popupItems.findIndex((item) => isItemPresentationCurrent(item, { suppressCurrentItemIds }));
124
+ return index === -1 ? undefined : index;
125
+ }, [highlightCurrentItem, popupItems, suppressCurrentItemIds]);
39
126
  if (!popupItems.length) {
40
127
  return children;
41
128
  }
42
129
  const content = (React__default.createElement(ItemPopupNestContext.Provider, { value: nestContextValue },
43
- React__default.createElement("div", { className: b('popup-content', { collapsed }), onClick: handlePopupContentClick },
130
+ React__default.createElement("div", { ref: popupContentRef, className: b('popup-content', { collapsed, 'single-label': isSingleLabel }), onClick: handlePopupContentClick, onMouseEnter: markInteractionRegionEntered, onMouseLeave: (event) => markInteractionRegionLeft(event.relatedTarget), onFocusCapture: markInteractionRegionEntered, onBlurCapture: (event) => markInteractionRegionLeft(event.relatedTarget) },
44
131
  title && React__default.createElement("div", { className: b('popup-title') }, title),
45
- React__default.createElement(List, { items: popupItems, selectedItemIndex: getSelectedItemIndex(popupItems), itemHeight: getPopupItemHeight, itemsHeight: getPopupItemsHeight, itemClassName: b('root-menu-item', itemClassName), virtualized: false, filterable: false, sortable: false, renderItem: (item) => (React__default.createElement(Item, Object.assign({}, item, { qa: undefined, compact: false, className: b('popup-item'), hideIcon: hideIcon, stopClickPropagation: !item.itemWrapper, enableTooltip: false, bringForward: false, popupVisible: false, renderPopupContent: undefined, onOpenChangePopup: undefined, popupRef: undefined, onItemClick: (_innerItem, _innerCollapsed, event) => {
46
- var _a;
47
- if (!item.current) {
48
- onOpenChange === null || onOpenChange === undefined ? undefined : onOpenChange(false);
49
- }
50
- (_a = (onPopupItemClick !== null && onPopupItemClick !== undefined ? onPopupItemClick : onItemClick)) === null || _a === undefined ? undefined : _a(item, collapsed, event);
51
- } }))) }))));
132
+ React__default.createElement(List, { items: popupItems, selectedItemIndex: selectedPopupItemIndex, itemHeight: popupItemHeight, itemsHeight: popupItemsHeight, itemClassName: b('root-menu-item', itemClassName), virtualized: false, filterable: false, sortable: false, renderItem: (item) => {
133
+ var _a;
134
+ const sourceItem = (_a = sourceItemsById.get(item.id)) !== null && _a !== undefined ? _a : item;
135
+ return (React__default.createElement(Item, Object.assign({}, item, { rowRef: undefined, qa: undefined, compact: false, menuPopupRow: true, suppressCurrentHighlight: !highlightCurrentItem, suppressCurrentItemIds: suppressCurrentItemIds, className: b('popup-item'), hideIcon: hideIcon, menuPopupHideIcon: nestedPopupHideIcon, stopClickPropagation: !sourceItem.itemWrapper, enableTooltip: false, bringForward: false, popupVisible: false, renderPopupContent: undefined, onOpenChangePopup: undefined, popupRef: undefined, enableQuickAccessPin: !isSingleLabel && enableQuickAccessPin, quickAccessPinItem: sourceItem, onToggleQuickAccess: isSingleLabel ? undefined : onToggleQuickAccess, onItemClick: (_innerItem, _innerCollapsed, event) => {
136
+ var _a;
137
+ if (!sourceItem.current) {
138
+ onOpenChange === null || onOpenChange === undefined ? undefined : onOpenChange(false);
139
+ }
140
+ (_a = (onPopupItemClick !== null && onPopupItemClick !== undefined ? onPopupItemClick : onItemClick)) === null || _a === undefined ? undefined : _a(sourceItem, collapsed, event);
141
+ } })));
142
+ } }))));
143
+ const triggerProps = children.props;
144
+ const trigger = React__default.cloneElement(children, {
145
+ onMouseEnter: (event) => {
146
+ var _a;
147
+ triggerElementRef.current = event.currentTarget;
148
+ markInteractionRegionEntered();
149
+ (_a = triggerProps.onMouseEnter) === null || _a === undefined ? undefined : _a.call(triggerProps, event);
150
+ },
151
+ onMouseLeave: (event) => {
152
+ var _a;
153
+ markInteractionRegionLeft(event.relatedTarget);
154
+ (_a = triggerProps.onMouseLeave) === null || _a === undefined ? undefined : _a.call(triggerProps, event);
155
+ },
156
+ onFocus: (event) => {
157
+ var _a;
158
+ triggerElementRef.current = event.currentTarget;
159
+ markInteractionRegionEntered();
160
+ (_a = triggerProps.onFocus) === null || _a === undefined ? undefined : _a.call(triggerProps, event);
161
+ },
162
+ onBlur: (event) => {
163
+ var _a;
164
+ markInteractionRegionLeft(event.relatedTarget);
165
+ (_a = triggerProps.onBlur) === null || _a === undefined ? undefined : _a.call(triggerProps, event);
166
+ },
167
+ });
52
168
  return (React__default.createElement(Popover, { disabled: disabled, open: open, onOpenChange: (nextOpen) => {
53
169
  if (nextOpen && disabled)
54
170
  return;
55
171
  wrappedOnOpenChange(nextOpen);
56
- }, placement: isSingleLabel ? 'right' : 'right-start', strategy: "fixed", openDelay: DEFAULT_POPUP_DELAY, closeDelay: DEFAULT_POPUP_DELAY, offset: popoverOffset, enableSafePolygon: true, className: b('icon-popover', { 'item-type': type }), content: content }, children));
172
+ }, placement: isSingleLabel ? 'right' : 'right-start', strategy: "fixed", openDelay: DEFAULT_POPUP_DELAY, closeDelay: DEFAULT_POPUP_DELAY, offset: popoverOffset, enableSafePolygon: true, className: b('icon-popover', { 'item-type': type, 'single-label': isSingleLabel }, isSingleLabel ? `g-root g-root_theme_${soloPopupTheme}` : undefined), style: popoverStyle, content: content }, trigger));
57
173
  };
58
174
  ItemPopup.displayName = 'ItemPopup';
59
175
 
60
- export { ItemPopup };
176
+ export { ItemPopup, getItemPopoverOffset };
61
177
  //# sourceMappingURL=ItemPopup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ItemPopup.js","sources":["../../../../../../../../src/components/AsideHeader/components/CompositeBar/Item/ItemPopup.tsx"],"sourcesContent":["import React from 'react';\n\nimport {List, Popover, PopupProps} from '@gravity-ui/uikit';\n\nimport {createBlock} from '../../../../utils/cn';\nimport {AsideHeaderItem} from '../../../types';\nimport {getPopupItemHeight, getPopupItemsHeight, getSelectedItemIndex} from '../utils';\n\nimport {Item} from './Item';\nimport {ItemPopupNestContext} from './ItemPopupNestContext';\n\nimport styles from './Item.module.scss';\n\nconst b = createBlock('composite-bar-item', styles);\n\nconst POPUP_MAIN_AXIS_OFFSET = 14;\nconst POPUP_CROSS_AXIS_OFFSET_WITH_TITLE = -30;\nconst POPUP_CROSS_AXIS_OFFSET_WITHOUT_TITLE = 0;\n\nconst DEFAULT_POPUP_DELAY = 100;\n\ninterface Props {\n items: AsideHeaderItem[];\n /** Optional title rendered at the top of the popup. */\n title?: string;\n open?: boolean;\n disabled?: boolean;\n type?: string;\n collapsed?: boolean;\n hideIcon?: boolean;\n itemClassName?: string;\n children: React.ReactElement;\n onOpenChange?: (open: boolean) => void;\n onPopupItemClick?: AsideHeaderItem['onItemClick'];\n onItemClick?: AsideHeaderItem['onItemClick'];\n}\n\nexport const ItemPopup: React.FC<Props> = ({\n items,\n itemClassName,\n title,\n open,\n disabled,\n type,\n collapsed = false,\n hideIcon = false,\n children,\n onPopupItemClick,\n onItemClick,\n onOpenChange,\n}) => {\n const nestedOpenCountRef = React.useRef(0);\n\n const popoverOffset = React.useMemo<NonNullable<PopupProps['offset']>>(\n () => ({\n mainAxis: POPUP_MAIN_AXIS_OFFSET,\n crossAxis: title\n ? POPUP_CROSS_AXIS_OFFSET_WITH_TITLE\n : POPUP_CROSS_AXIS_OFFSET_WITHOUT_TITLE,\n }),\n [title],\n );\n\n const isSingleLabel = !title && items.length === 1;\n\n const registerNestedOpen = React.useCallback((delta: number) => {\n nestedOpenCountRef.current = Math.max(0, nestedOpenCountRef.current + delta);\n }, []);\n\n const nestContextValue = React.useMemo(() => ({registerNestedOpen}), [registerNestedOpen]);\n\n const wrappedOnOpenChange = React.useCallback(\n (next: boolean) => {\n if (!next && nestedOpenCountRef.current > 0) {\n return;\n }\n\n onOpenChange?.(next);\n },\n [onOpenChange],\n );\n\n const handlePopupContentClick = React.useCallback((event: React.MouseEvent<HTMLDivElement>) => {\n event.stopPropagation();\n }, []);\n\n // Inside a popup list, action items must look like regular menu rows, not floating\n // action buttons (e.g. when an `action` item overflows into the \"More\" popup).\n const popupItems = React.useMemo(\n () =>\n items.map((item) =>\n item.type === 'action' ? {...item, type: 'regular' as const} : item,\n ),\n [items],\n );\n\n if (!popupItems.length) {\n return children;\n }\n\n const content = (\n <ItemPopupNestContext.Provider value={nestContextValue}>\n <div className={b('popup-content', {collapsed})} onClick={handlePopupContentClick}>\n {title && <div className={b('popup-title')}>{title}</div>}\n <List\n items={popupItems}\n selectedItemIndex={getSelectedItemIndex(popupItems)}\n itemHeight={getPopupItemHeight}\n itemsHeight={getPopupItemsHeight}\n itemClassName={b('root-menu-item', itemClassName)}\n virtualized={false}\n filterable={false}\n sortable={false}\n renderItem={(item) => (\n <Item\n {...item}\n qa={undefined}\n compact={false}\n className={b('popup-item')}\n hideIcon={hideIcon}\n stopClickPropagation={!item.itemWrapper}\n enableTooltip={false}\n bringForward={false}\n popupVisible={false}\n renderPopupContent={undefined}\n onOpenChangePopup={undefined}\n popupRef={undefined}\n onItemClick={(_innerItem, _innerCollapsed, event) => {\n if (!item.current) {\n onOpenChange?.(false);\n }\n\n (onPopupItemClick ?? onItemClick)?.(item, collapsed, event);\n }}\n />\n )}\n />\n </div>\n </ItemPopupNestContext.Provider>\n );\n\n return (\n <Popover\n disabled={disabled}\n open={open}\n onOpenChange={(nextOpen) => {\n if (nextOpen && disabled) return;\n wrappedOnOpenChange(nextOpen);\n }}\n placement={isSingleLabel ? 'right' : 'right-start'}\n strategy=\"fixed\"\n openDelay={DEFAULT_POPUP_DELAY}\n closeDelay={DEFAULT_POPUP_DELAY}\n offset={popoverOffset}\n enableSafePolygon\n className={b('icon-popover', {'item-type': type})}\n content={content}\n >\n {children}\n </Popover>\n );\n};\n\nItemPopup.displayName = 'ItemPopup';\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"ItemPopup.js","sources":["../../../../../../../../src/components/AsideHeader/components/CompositeBar/Item/ItemPopup.tsx"],"sourcesContent":["import React from 'react';\n\nimport {List, Popover, PopupProps, useThemeValue} from '@gravity-ui/uikit';\n\nimport {POPUP_REGULAR_ITEM_HEIGHT} from '../../../../constants';\nimport {createBlock} from '../../../../utils/cn';\nimport {useSafeAsideHeaderContext} from '../../../AsideHeaderContext';\nimport {getAsideHeaderDensityConfig, getAsideHeaderDensityCssProperties} from '../../../density';\nimport {AsideHeaderItem} from '../../../types';\nimport {isItemPresentationCurrent} from '../presentationCurrent';\nimport {getPopupItemHeight} from '../utils';\n\nimport {Item} from './Item';\nimport type {QuickAccessToggleHandler} from './Item.types';\nimport {ItemPopupNestContext} from './ItemPopupNestContext';\n\nimport styles from './Item.module.scss';\n\nconst b = createBlock('composite-bar-item', styles);\n\nconst POPUP_PADDING = 4;\nconst POPUP_MAIN_AXIS_OFFSET = 14;\n/** Whitespace between the painted borders of two chained popups. */\nconst NESTED_POPUP_GAP = 4;\n/** `.g-popup` paints its border as a 1px shadow spread outside the border box. */\nconst POPUP_SHADOW_RING = 1;\nconst SOLO_LABEL_POPUP_ITEM_HEIGHT = 28;\nconst SOLO_LABEL_POPUP_BORDER_RADIUS = 4;\nconst POPUP_TITLE_BLOCK_HEIGHT = 30;\nconst DEFAULT_POPUP_DELAY = 0;\n\nexport function getItemPopoverOffset({\n isSingleLabel,\n itemHeight,\n popupRowHeight,\n titleHeight = 0,\n nested = false,\n}: {\n isSingleLabel: boolean;\n itemHeight: number;\n popupRowHeight: number;\n titleHeight?: number;\n /** The popup opens from a row inside another popup. */\n nested?: boolean;\n}): NonNullable<PopupProps['offset']> {\n if (isSingleLabel) {\n return {mainAxis: POPUP_MAIN_AXIS_OFFSET, crossAxis: 0};\n }\n\n // A nested popup anchors to a row that sits `POPUP_PADDING` inside the parent popup\n // border box, and both popups paint a shadow ring outside that box. Compensate for\n // both so chained popups keep `NESTED_POPUP_GAP` of whitespace at any density.\n const mainAxis = nested\n ? NESTED_POPUP_GAP + 2 * POPUP_SHADOW_RING + POPUP_PADDING\n : POPUP_MAIN_AXIS_OFFSET;\n const firstRowOffsetInAnchor = (itemHeight - popupRowHeight) / 2;\n\n return {\n mainAxis,\n crossAxis: firstRowOffsetInAnchor - POPUP_PADDING - titleHeight,\n };\n}\n\ninterface Props {\n items: AsideHeaderItem[];\n /** `label` is the minimal popup used by one compact leaf item. */\n variant?: 'menu' | 'label';\n /** Optional title rendered at the top of the popup. */\n title?: string;\n open?: boolean;\n disabled?: boolean;\n type?: string;\n collapsed?: boolean;\n hideIcon?: boolean;\n /** Icon visibility for a child popup opened from a row in this popup. */\n nestedPopupHideIcon?: boolean;\n itemClassName?: string;\n children: React.ReactElement;\n onOpenChange?: (open: boolean) => void;\n onPopupItemClick?: AsideHeaderItem['onItemClick'];\n onItemClick?: AsideHeaderItem['onItemClick'];\n /** Controls selected styling without altering the source items passed to callbacks. */\n highlightCurrentItem?: boolean;\n enableQuickAccessPin?: boolean;\n onToggleQuickAccess?: QuickAccessToggleHandler;\n suppressCurrentItemIds?: ReadonlySet<string>;\n}\n\ntype PopupTriggerInteractionProps = {\n onMouseEnter?: React.MouseEventHandler<HTMLElement>;\n onMouseLeave?: React.MouseEventHandler<HTMLElement>;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n};\n\nexport const ItemPopup: React.FC<Props> = ({\n items,\n variant = 'menu',\n itemClassName,\n title,\n open,\n disabled,\n type,\n collapsed = false,\n hideIcon = false,\n nestedPopupHideIcon,\n children,\n onPopupItemClick,\n onItemClick,\n onOpenChange,\n highlightCurrentItem = true,\n enableQuickAccessPin,\n onToggleQuickAccess,\n suppressCurrentItemIds,\n}) => {\n const asideHeaderContext = useSafeAsideHeaderContext();\n const parentPopupNest = React.useContext(ItemPopupNestContext);\n const theme = useThemeValue();\n const densityConfig = getAsideHeaderDensityConfig(asideHeaderContext?.menuDensity);\n const nestedOpenCountRef = React.useRef(0);\n // A nested portaled popup temporarily blocks the parent's hover-close. Remember that close\n // request and replay it after the child closes, unless the pointer/focus returned to the parent.\n const deferredCloseRef = React.useRef(false);\n const interactionInsideRef = React.useRef(false);\n const popupContentRef = React.useRef<HTMLDivElement>(null);\n const triggerElementRef = React.useRef<HTMLElement | null>(null);\n const onOpenChangeRef = React.useRef(onOpenChange);\n const densityCssProperties = getAsideHeaderDensityCssProperties(\n asideHeaderContext?.menuDensity,\n );\n\n const isSingleLabel = variant === 'label';\n const soloPopupTheme = theme.endsWith('-hc') ? 'dark-hc' : 'dark';\n\n React.useEffect(() => {\n onOpenChangeRef.current = onOpenChange;\n }, [onOpenChange]);\n\n const popoverStyle = React.useMemo(() => {\n const popupPadding = isSingleLabel ? 0 : POPUP_PADDING;\n const popupBorderRadius = isSingleLabel\n ? SOLO_LABEL_POPUP_BORDER_RADIUS\n : densityConfig.itemExpandedRadius + popupPadding;\n\n return {\n ...densityCssProperties,\n '--_--popup-padding': `${popupPadding}px`,\n '--_--popup-border-radius': `${popupBorderRadius}px`,\n '--_--popup-title-height': `${POPUP_TITLE_BLOCK_HEIGHT}px`,\n '--g-popup-border-radius': `${popupBorderRadius}px`,\n // Popovers must appear instantly. `PopoverProps` does not expose Popup's\n // `disableTransition`, so the enter/exit animation is disabled here; the\n // style lands on the same `.g-popup` element that owns the transition.\n transition: 'none',\n } as React.CSSProperties;\n }, [densityConfig.itemExpandedRadius, densityCssProperties, isSingleLabel]);\n\n const popupItemHeight = React.useCallback(\n (item: AsideHeaderItem) =>\n isSingleLabel ? SOLO_LABEL_POPUP_ITEM_HEIGHT : getPopupItemHeight(item),\n [isSingleLabel],\n );\n\n const popupItemsHeight = React.useCallback(\n (listItems: AsideHeaderItem[]) =>\n listItems.reduce((sum, item) => sum + popupItemHeight(item), 0),\n [popupItemHeight],\n );\n\n const popoverOffset = React.useMemo<NonNullable<PopupProps['offset']>>(\n () =>\n getItemPopoverOffset({\n isSingleLabel,\n itemHeight: densityConfig.itemHeight,\n popupRowHeight: POPUP_REGULAR_ITEM_HEIGHT,\n titleHeight: title ? POPUP_TITLE_BLOCK_HEIGHT : 0,\n nested: Boolean(parentPopupNest),\n }),\n [densityConfig.itemHeight, isSingleLabel, parentPopupNest, title],\n );\n\n const registerNestedOpen = React.useCallback((delta: number) => {\n nestedOpenCountRef.current = Math.max(0, nestedOpenCountRef.current + delta);\n\n if (\n nestedOpenCountRef.current === 0 &&\n deferredCloseRef.current &&\n !interactionInsideRef.current\n ) {\n deferredCloseRef.current = false;\n onOpenChangeRef.current?.(false);\n }\n }, []);\n\n const nestContextValue = React.useMemo(() => ({registerNestedOpen}), [registerNestedOpen]);\n\n const wrappedOnOpenChange = React.useCallback(\n (next: boolean) => {\n if (!next && nestedOpenCountRef.current > 0) {\n deferredCloseRef.current = true;\n return;\n }\n\n deferredCloseRef.current = false;\n onOpenChange?.(next);\n },\n [onOpenChange],\n );\n\n const markInteractionRegionEntered = React.useCallback(() => {\n interactionInsideRef.current = true;\n deferredCloseRef.current = false;\n }, []);\n\n const markInteractionRegionLeft = React.useCallback((relatedTarget: EventTarget | null) => {\n const nextTarget = relatedTarget instanceof Node ? relatedTarget : null;\n const remainsInside = Boolean(\n nextTarget &&\n (triggerElementRef.current?.contains(nextTarget) ||\n popupContentRef.current?.contains(nextTarget)),\n );\n\n if (!remainsInside) {\n interactionInsideRef.current = false;\n }\n }, []);\n\n const handlePopupContentClick = React.useCallback((event: React.MouseEvent<HTMLDivElement>) => {\n event.stopPropagation();\n }, []);\n\n // Inside a popup list, action items must look like regular menu rows, not floating\n // action buttons (e.g. when an `action` item overflows into the \"More\" popup).\n const popupItems = React.useMemo(\n () =>\n items.map((item) =>\n item.type === 'action' ? {...item, type: 'regular' as const} : item,\n ),\n [items],\n );\n const sourceItemsById = React.useMemo(\n () => new Map(items.map((item) => [item.id, item])),\n [items],\n );\n const selectedPopupItemIndex = React.useMemo(() => {\n if (!highlightCurrentItem) {\n return undefined;\n }\n\n const index = popupItems.findIndex((item) =>\n isItemPresentationCurrent(item, {suppressCurrentItemIds}),\n );\n\n return index === -1 ? undefined : index;\n }, [highlightCurrentItem, popupItems, suppressCurrentItemIds]);\n\n if (!popupItems.length) {\n return children;\n }\n\n const content = (\n <ItemPopupNestContext.Provider value={nestContextValue}>\n <div\n ref={popupContentRef}\n className={b('popup-content', {collapsed, 'single-label': isSingleLabel})}\n onClick={handlePopupContentClick}\n onMouseEnter={markInteractionRegionEntered}\n onMouseLeave={(event) => markInteractionRegionLeft(event.relatedTarget)}\n onFocusCapture={markInteractionRegionEntered}\n onBlurCapture={(event) => markInteractionRegionLeft(event.relatedTarget)}\n >\n {title && <div className={b('popup-title')}>{title}</div>}\n <List\n items={popupItems}\n selectedItemIndex={selectedPopupItemIndex}\n itemHeight={popupItemHeight}\n itemsHeight={popupItemsHeight}\n itemClassName={b('root-menu-item', itemClassName)}\n virtualized={false}\n filterable={false}\n sortable={false}\n renderItem={(item) => {\n const sourceItem = sourceItemsById.get(item.id) ?? item;\n\n return (\n <Item\n {...item}\n rowRef={undefined}\n qa={undefined}\n compact={false}\n menuPopupRow\n suppressCurrentHighlight={!highlightCurrentItem}\n suppressCurrentItemIds={suppressCurrentItemIds}\n className={b('popup-item')}\n hideIcon={hideIcon}\n menuPopupHideIcon={nestedPopupHideIcon}\n stopClickPropagation={!sourceItem.itemWrapper}\n enableTooltip={false}\n bringForward={false}\n popupVisible={false}\n renderPopupContent={undefined}\n onOpenChangePopup={undefined}\n popupRef={undefined}\n enableQuickAccessPin={!isSingleLabel && enableQuickAccessPin}\n quickAccessPinItem={sourceItem}\n onToggleQuickAccess={\n isSingleLabel ? undefined : onToggleQuickAccess\n }\n onItemClick={(_innerItem, _innerCollapsed, event) => {\n if (!sourceItem.current) {\n onOpenChange?.(false);\n }\n\n (onPopupItemClick ?? onItemClick)?.(\n sourceItem,\n collapsed,\n event,\n );\n }}\n />\n );\n }}\n />\n </div>\n </ItemPopupNestContext.Provider>\n );\n\n const triggerProps = children.props as PopupTriggerInteractionProps;\n const trigger = React.cloneElement(\n children as React.ReactElement<PopupTriggerInteractionProps>,\n {\n onMouseEnter: (event) => {\n triggerElementRef.current = event.currentTarget;\n markInteractionRegionEntered();\n triggerProps.onMouseEnter?.(event);\n },\n onMouseLeave: (event) => {\n markInteractionRegionLeft(event.relatedTarget);\n triggerProps.onMouseLeave?.(event);\n },\n onFocus: (event) => {\n triggerElementRef.current = event.currentTarget;\n markInteractionRegionEntered();\n triggerProps.onFocus?.(event);\n },\n onBlur: (event) => {\n markInteractionRegionLeft(event.relatedTarget);\n triggerProps.onBlur?.(event);\n },\n },\n );\n\n return (\n <Popover\n disabled={disabled}\n open={open}\n onOpenChange={(nextOpen) => {\n if (nextOpen && disabled) return;\n wrappedOnOpenChange(nextOpen);\n }}\n placement={isSingleLabel ? 'right' : 'right-start'}\n strategy=\"fixed\"\n openDelay={DEFAULT_POPUP_DELAY}\n closeDelay={DEFAULT_POPUP_DELAY}\n offset={popoverOffset}\n enableSafePolygon\n className={b(\n 'icon-popover',\n {'item-type': type, 'single-label': isSingleLabel},\n isSingleLabel ? `g-root g-root_theme_${soloPopupTheme}` : undefined,\n )}\n style={popoverStyle}\n content={content}\n >\n {trigger}\n </Popover>\n );\n};\n\nItemPopup.displayName = 'ItemPopup';\n"],"names":["React"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ type ItemQuickAccessPinProps = {
3
+ quickAccess?: boolean;
4
+ onToggle: (event: React.MouseEvent<HTMLButtonElement>) => void;
5
+ };
6
+ export declare const ItemQuickAccessPin: React.FC<ItemQuickAccessPinProps>;
7
+ export {};
@@ -0,0 +1,23 @@
1
+ import React__default from 'react';
2
+ import { PinFill, Pin } from '@gravity-ui/icons';
3
+ import { Button, Icon } from '@gravity-ui/uikit';
4
+ import { createBlock } from '../../../../utils/cn.js';
5
+ import i18n from '../../../i18n/index.js';
6
+ import styles from './Item.module.scss.js';
7
+
8
+ const b = createBlock('composite-bar-item', styles);
9
+ const ItemQuickAccessPin = ({ quickAccess, onToggle }) => {
10
+ const label = quickAccess ? i18n('quick_access_unpin') : i18n('quick_access_pin');
11
+ const handleClick = React__default.useCallback((event) => {
12
+ event.preventDefault();
13
+ event.stopPropagation();
14
+ onToggle(event);
15
+ }, [onToggle]);
16
+ return (React__default.createElement(Button, { className: b('quick-access-pin', { pinned: quickAccess }), view: "flat-secondary", size: "s", onClick: handleClick, "aria-label": label, title: label },
17
+ React__default.createElement(Button.Icon, null,
18
+ React__default.createElement(Icon, { data: quickAccess ? PinFill : Pin }))));
19
+ };
20
+ ItemQuickAccessPin.displayName = 'ItemQuickAccessPin';
21
+
22
+ export { ItemQuickAccessPin };
23
+ //# sourceMappingURL=ItemQuickAccessPin.js.map