@gravity-ui/navigation 6.6.0 → 7.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (298) hide show
  1. package/build/cjs/components/AsideHeader/AsideHeader.css +11 -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__/DecorationExample.d.ts +7 -0
  13. package/build/cjs/components/AsideHeader/__playwright__/QuickAccessOverflowExample.d.ts +8 -0
  14. package/build/cjs/components/AsideHeader/__playwright__/currentIndicatorPaint.d.ts +21 -0
  15. package/build/cjs/components/AsideHeader/__playwright__/transitionTestUtils.d.ts +4 -0
  16. package/build/cjs/components/AsideHeader/__stories__/fullNavigationMoc.d.ts +6 -0
  17. package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js +2 -4
  18. package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js.map +1 -1
  19. package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.js +7 -2
  20. package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.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 +161 -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 +27 -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 -4
  83. package/build/cjs/components/AsideHeader/components/Header.js.map +1 -1
  84. package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.css +11 -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 -7
  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 +11 -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 +11 -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 +22 -0
  114. package/build/cjs/components/AsideHeader/density.js +67 -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 +4 -4
  147. package/build/docs/components/AsideHeader.md +243 -42
  148. package/build/esm/components/AsideHeader/AsideHeader.css +11 -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__/DecorationExample.d.ts +7 -0
  160. package/build/esm/components/AsideHeader/__playwright__/QuickAccessOverflowExample.d.ts +8 -0
  161. package/build/esm/components/AsideHeader/__playwright__/currentIndicatorPaint.d.ts +21 -0
  162. package/build/esm/components/AsideHeader/__playwright__/transitionTestUtils.d.ts +4 -0
  163. package/build/esm/components/AsideHeader/__stories__/fullNavigationMoc.d.ts +6 -0
  164. package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js +3 -5
  165. package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js.map +1 -1
  166. package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.js +7 -2
  167. package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.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 +164 -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 +27 -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 +7 -4
  230. package/build/esm/components/AsideHeader/components/Header.js.map +1 -1
  231. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.css +11 -1
  232. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.d.ts +1 -0
  233. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.js +13 -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 +11 -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 +11 -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 +22 -0
  261. package/build/esm/components/AsideHeader/density.js +63 -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 +4 -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,40 +1,159 @@
1
- import React__default, { useRef } from 'react';
2
- import { setRef } from '@gravity-ui/uikit';
1
+ import React__default, { useState, useRef, useCallback } from 'react';
2
+ import { useUniqId, setRef } from '@gravity-ui/uikit';
3
3
  import { useAsideHeaderInnerContext } from '../AsideHeaderContext.js';
4
4
  import i18n from '../i18n/index.js';
5
+ import { getQuickAccessMenuItems } from '../quickAccess.js';
5
6
  import { b } from '../utils.js';
6
7
  import './AllPagesPanel/AllPagesPanel.js';
7
8
  import '@gravity-ui/icons';
8
9
  import '../types.js';
9
10
  import './AllPagesPanel/i18n/index.js';
10
11
  import { useVisibleMenuItems } from './AllPagesPanel/useVisibleMenuItems.js';
12
+ import { AsideDivider } from './AsideDivider.js';
11
13
  import { CollapseButton } from './CollapseButton/CollapseButton.js';
14
+ import { useCollapseAnchor, CollapseAnchorContext } from './CollapseButton/useCollapseAnchor.js';
12
15
  import { CompositeBar } from './CompositeBar/CompositeBar.js';
16
+ import { ScrollableWithScrollbar } from './CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js';
17
+ import { COMPOSITE_BAR_ITEM_ID_ATTRIBUTE } from './CompositeBar/constants.js';
13
18
  import { Header } from './Header.js';
14
19
  import { Panels } from './Panels.js';
15
20
 
16
21
  const MENU_ITEMS_COMPOSITE_ID = 'gravity-ui/navigation-menu-items-composite-bar';
22
+ const QUICK_ACCESS_COMPOSITE_ID = 'gravity-ui/navigation-quick-access-composite-bar';
23
+ const FOCUSABLE_ITEM_SELECTOR = 'a[href], button:not([disabled]), [tabindex]:not([tabindex="-1"])';
24
+ function findCompositeBar(root, id) {
25
+ return Array.from(root.querySelectorAll('[id]')).find((element) => element.id === id);
26
+ }
27
+ function findCompositeBarItemFocusTarget(root, itemId) {
28
+ var _a;
29
+ if (!root) {
30
+ return undefined;
31
+ }
32
+ const itemElements = Array.from(root.querySelectorAll(`[${COMPOSITE_BAR_ITEM_ID_ATTRIBUTE}]`));
33
+ const itemElement = itemId
34
+ ? itemElements.find((element) => element.getAttribute(COMPOSITE_BAR_ITEM_ID_ATTRIBUTE) === itemId)
35
+ : itemElements[0];
36
+ if (!itemElement) {
37
+ return undefined;
38
+ }
39
+ if (itemElement.matches(FOCUSABLE_ITEM_SELECTOR)) {
40
+ return itemElement;
41
+ }
42
+ const wrappingFocusable = itemElement.closest(FOCUSABLE_ITEM_SELECTOR);
43
+ if (wrappingFocusable && root.contains(wrappingFocusable)) {
44
+ return wrappingFocusable;
45
+ }
46
+ return (_a = itemElement.querySelector(FOCUSABLE_ITEM_SELECTOR)) !== null && _a !== undefined ? _a : undefined;
47
+ }
17
48
  const FirstPanel = React__default.forwardRef((_props, ref) => {
18
- const { size, onItemClick, headerDecoration, menuMoreTitle, onMenuMoreClick, renderFooter, compact, customBackground, customBackgroundClassName, className, hideCollapseButton, menuGroups, menuOverflow, collapsedMenuGroupIds, defaultCollapsedMenuGroupIds, onToggleMenuGroupCollapsed, aboveMenuContent, qa, } = useAsideHeaderInnerContext();
49
+ const { size, onItemClick, headerDecoration, hideSectionDividers, menuMoreTitle, onMenuMoreClick, renderFooter, compact, customBackground, customBackgroundClassName, className, hideCollapseButton, menuGroups, menuGroupNestedIcons, menuOverflow, collapsedMenuGroupIds, defaultCollapsedMenuGroupIds, onToggleMenuGroupCollapsed, aboveMenuContent, enableQuickAccess = false, quickAccessHighlightInMainMenu = false, quickAccessIsAvailable, onToggleQuickAccess, qa, } = useAsideHeaderInnerContext();
50
+ const panelId = useUniqId();
51
+ const collapseAnchor = useCollapseAnchor(!hideCollapseButton, compact);
19
52
  const visibleMenuItems = useVisibleMenuItems();
53
+ const quickAccessEnabled = enableQuickAccess;
54
+ const quickAccessItems = React__default.useMemo(() => (quickAccessEnabled ? getQuickAccessMenuItems(visibleMenuItems, menuGroups) : []), [menuGroups, quickAccessEnabled, visibleMenuItems]);
55
+ const suppressedCurrentItemIds = React__default.useMemo(() => quickAccessEnabled && !quickAccessHighlightInMainMenu
56
+ ? new Set(quickAccessItems.map((item) => item.id))
57
+ : undefined, [quickAccessEnabled, quickAccessHighlightInMainMenu, quickAccessItems]);
58
+ const hasQuickAccessItems = quickAccessItems.length > 0;
59
+ const [menuScrollOverflows, setMenuScrollOverflows] = useState(false);
20
60
  const asideRef = useRef(null);
61
+ const pendingQuickAccessFocusRef = useRef();
62
+ const handleMenuScrollOverflowChange = useCallback((overflows) => {
63
+ setMenuScrollOverflows(overflows);
64
+ }, []);
65
+ const handleQuickAccessToggle = React__default.useCallback((item, event) => {
66
+ var _a, _b;
67
+ if (item.quickAccess &&
68
+ (event === null || event === undefined ? undefined : event.detail) === 0 &&
69
+ event.currentTarget.ownerDocument.activeElement === event.currentTarget) {
70
+ const itemIndex = quickAccessItems.findIndex((quickAccessItem) => quickAccessItem.id === item.id);
71
+ pendingQuickAccessFocusRef.current = {
72
+ itemId: item.id,
73
+ nextItemId: (_a = quickAccessItems[itemIndex + 1]) === null || _a === undefined ? undefined : _a.id,
74
+ previousItemId: (_b = quickAccessItems[itemIndex - 1]) === null || _b === undefined ? undefined : _b.id,
75
+ trigger: event.currentTarget,
76
+ };
77
+ }
78
+ onToggleQuickAccess(item);
79
+ }, [onToggleQuickAccess, quickAccessItems]);
80
+ React__default.useEffect(() => {
81
+ var _a, _b, _c, _d, _e;
82
+ const pendingFocus = pendingQuickAccessFocusRef.current;
83
+ if (!pendingFocus ||
84
+ quickAccessItems.some((quickAccessItem) => quickAccessItem.id === pendingFocus.itemId)) {
85
+ return;
86
+ }
87
+ const ownerDocument = pendingFocus.trigger.ownerDocument;
88
+ const asideRoot = (_a = asideRef.current) === null || _a === undefined ? undefined : _a.parentElement;
89
+ if (!asideRoot) {
90
+ pendingQuickAccessFocusRef.current = undefined;
91
+ return;
92
+ }
93
+ const quickAccessRoot = findCompositeBar(asideRoot, QUICK_ACCESS_COMPOSITE_ID);
94
+ const menuRoot = findCompositeBar(asideRoot, MENU_ITEMS_COMPOSITE_ID);
95
+ const remainingQuickAccessIds = new Set(quickAccessItems.map((item) => item.id));
96
+ const adjacentQuickAccessItemId = [
97
+ pendingFocus.nextItemId,
98
+ pendingFocus.previousItemId,
99
+ ].find((itemId) => itemId && remainingQuickAccessIds.has(itemId));
100
+ const focusTarget = (_e = (_d = (_c = (_b = findCompositeBarItemFocusTarget(quickAccessRoot, adjacentQuickAccessItemId)) !== null && _b !== undefined ? _b : findCompositeBarItemFocusTarget(menuRoot, pendingFocus.itemId)) !== null && _c !== undefined ? _c : findCompositeBarItemFocusTarget(quickAccessRoot)) !== null && _d !== undefined ? _d : findCompositeBarItemFocusTarget(menuRoot)) !== null && _e !== undefined ? _e : asideRoot.querySelector(FOCUSABLE_ITEM_SELECTOR);
101
+ const ownerWindow = ownerDocument.defaultView;
102
+ if (!focusTarget || !ownerWindow) {
103
+ pendingQuickAccessFocusRef.current = undefined;
104
+ return;
105
+ }
106
+ // Finish the keyboard activation first: focus applied during the click can otherwise
107
+ // be reset to body when the removed button completes its native activation lifecycle.
108
+ ownerWindow.requestAnimationFrame(() => {
109
+ if (pendingQuickAccessFocusRef.current !== pendingFocus) {
110
+ return;
111
+ }
112
+ pendingQuickAccessFocusRef.current = undefined;
113
+ const nextActiveElement = ownerDocument.activeElement;
114
+ // Do not steal focus if the user moved it before an asynchronous controlled update.
115
+ if (nextActiveElement === ownerDocument.body ||
116
+ nextActiveElement === ownerDocument.documentElement) {
117
+ focusTarget.focus();
118
+ }
119
+ });
120
+ }, [quickAccessItems]);
121
+ const quickAccessCompositeBar = (React__default.createElement(CompositeBar, { menuItemClassName: b('menu-item'), compositeId: QUICK_ACCESS_COMPOSITE_ID, type: "quick-access", compact: compact, items: quickAccessItems, onItemClick: onItemClick, enableQuickAccessPin: quickAccessIsAvailable, onToggleQuickAccess: handleQuickAccessToggle }));
122
+ const menuCompositeBar = (React__default.createElement(CompositeBar, { menuItemClassName: b('menu-item'), compositeId: MENU_ITEMS_COMPOSITE_ID, layoutWidth: size, type: "menu", compact: compact, items: visibleMenuItems, menuGroups: menuGroups, menuGroupNestedIcons: menuGroupNestedIcons, menuMoreTitle: menuMoreTitle !== null && menuMoreTitle !== undefined ? menuMoreTitle : i18n('label_more'), onItemClick: onItemClick, onMoreClick: onMenuMoreClick, menuOverflow: menuOverflow, collapsedMenuGroupIds: collapsedMenuGroupIds, defaultCollapsedMenuGroupIds: defaultCollapsedMenuGroupIds, onToggleMenuGroupCollapsed: onToggleMenuGroupCollapsed, enableQuickAccessPin: quickAccessIsAvailable, onToggleQuickAccess: onToggleQuickAccess, suppressCurrentItemIds: suppressedCurrentItemIds }));
123
+ const quickAccessSection = hasQuickAccessItems ? (React__default.createElement("div", { className: b('quick-access'), "data-gn-aside-current-container": true },
124
+ !compact && (React__default.createElement("div", { className: b('quick-access-title'), "data-gn-aside-part": "quick-access-title" }, i18n('quick_access_title'))),
125
+ quickAccessCompositeBar,
126
+ React__default.createElement(AsideDivider, { className: b('quick-access-divider'), transitionId: "quick-access" }))) : null;
127
+ const menuSection = visibleMenuItems.length ? (menuCompositeBar) : (React__default.createElement("div", { className: b('menu-items') }));
21
128
  React__default.useEffect(() => {
22
129
  setRef(ref, asideRef.current);
23
130
  }, [ref]);
24
131
  return (React__default.createElement(React__default.Fragment, null,
25
- React__default.createElement("div", { className: b('aside', { 'menu-overflow-scroll': menuOverflow === 'scroll' && !compact }, className), style: { width: size }, "data-qa": qa },
132
+ React__default.createElement("div", { className: b('aside', className), style: { width: size }, "data-qa": qa, "data-gn-aside-panel": true, id: panelId, ref: collapseAnchor.panelRef },
26
133
  React__default.createElement("div", { className: b('aside-popup-anchor'), ref: asideRef }),
27
134
  customBackground && (React__default.createElement("div", { className: b('aside-custom-background', customBackgroundClassName) }, customBackground)),
28
- React__default.createElement("div", { className: b('aside-content', { ['with-decoration']: headerDecoration }) },
135
+ React__default.createElement("div", { className: b('aside-content', {
136
+ 'with-decoration': headerDecoration,
137
+ 'hide-section-dividers': hideSectionDividers,
138
+ 'with-quick-access': quickAccessEnabled,
139
+ 'with-quick-access-items': quickAccessEnabled && hasQuickAccessItems,
140
+ }) },
29
141
  React__default.createElement(Header, null),
30
142
  aboveMenuContent,
31
- (visibleMenuItems === null || visibleMenuItems === undefined ? undefined : visibleMenuItems.length) ? (React__default.createElement(CompositeBar, { menuItemClassName: b('menu-item'), compositeId: MENU_ITEMS_COMPOSITE_ID, type: "menu", compact: compact, items: visibleMenuItems, menuGroups: menuGroups, menuMoreTitle: menuMoreTitle !== null && menuMoreTitle !== undefined ? menuMoreTitle : i18n('label_more'), onItemClick: onItemClick, onMoreClick: onMenuMoreClick, menuOverflow: menuOverflow, collapsedMenuGroupIds: collapsedMenuGroupIds, defaultCollapsedMenuGroupIds: defaultCollapsedMenuGroupIds, onToggleMenuGroupCollapsed: onToggleMenuGroupCollapsed })) : (React__default.createElement("div", { className: b('menu-items') })),
32
- React__default.createElement("div", { className: b('footer') }, renderFooter === null || renderFooter === undefined ? undefined : renderFooter({
33
- size,
34
- compact: Boolean(compact),
35
- asideRef,
36
- })),
37
- !hideCollapseButton && React__default.createElement(CollapseButton, null))),
143
+ React__default.createElement(ScrollableWithScrollbar, { className: b('unified-menu-scroll'), onOverflowChange: handleMenuScrollOverflowChange, showScrollDividers: hideSectionDividers },
144
+ React__default.createElement("div", { className: b('unified-menu-content'), "data-gn-aside-current-container": true },
145
+ quickAccessSection,
146
+ menuSection)),
147
+ React__default.createElement("div", { className: b('footer', { 'with-divider': menuScrollOverflows }), ref: collapseAnchor.footerRef },
148
+ React__default.createElement(CollapseAnchorContext.Provider, { value: collapseAnchor.context },
149
+ React__default.createElement(AsideDivider, { className: b('footer-divider'), transitionId: "footer" }), renderFooter === null || renderFooter === undefined ? undefined :
150
+ renderFooter({
151
+ size,
152
+ compact: Boolean(compact),
153
+ asideRef,
154
+ }),
155
+ !hideCollapseButton && !collapseAnchor.selected && (React__default.createElement("div", { "data-gn-collapse-fallback": true, "data-gn-collapse-anchor": "", className: b('collapse-fallback'), ref: collapseAnchor.fallbackRef })))))),
156
+ !hideCollapseButton && (React__default.createElement(CollapseButton, { panelId: panelId, slotRef: collapseAnchor.slotRef })),
38
157
  React__default.createElement(Panels, null)));
39
158
  });
40
159
  FirstPanel.displayName = 'FirstPanel';
@@ -1 +1 @@
1
- {"version":3,"file":"FirstPanel.js","sources":["../../../../../../src/components/AsideHeader/components/FirstPanel.tsx"],"sourcesContent":["import React, {useRef} from 'react';\n\nimport {setRef} from '@gravity-ui/uikit';\n\nimport {useAsideHeaderInnerContext} from '../AsideHeaderContext';\nimport i18n from '../i18n';\nimport {b} from '../utils';\n\nimport {useVisibleMenuItems} from './AllPagesPanel';\nimport {CollapseButton} from './CollapseButton/CollapseButton';\nimport {CompositeBar} from './CompositeBar';\nimport {Header} from './Header';\nimport {Panels} from './Panels';\n\nconst MENU_ITEMS_COMPOSITE_ID = 'gravity-ui/navigation-menu-items-composite-bar';\n\nexport const FirstPanel = React.forwardRef<HTMLDivElement>((_props, ref) => {\n const {\n size,\n onItemClick,\n headerDecoration,\n menuMoreTitle,\n onMenuMoreClick,\n renderFooter,\n compact,\n customBackground,\n customBackgroundClassName,\n className,\n hideCollapseButton,\n menuGroups,\n menuOverflow,\n collapsedMenuGroupIds,\n defaultCollapsedMenuGroupIds,\n onToggleMenuGroupCollapsed,\n aboveMenuContent,\n qa,\n } = useAsideHeaderInnerContext();\n const visibleMenuItems = useVisibleMenuItems();\n\n const asideRef = useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n setRef<HTMLDivElement>(ref, asideRef.current);\n }, [ref]);\n\n return (\n <React.Fragment>\n <div\n className={b(\n 'aside',\n {'menu-overflow-scroll': menuOverflow === 'scroll' && !compact},\n className,\n )}\n style={{width: size}}\n data-qa={qa}\n >\n <div className={b('aside-popup-anchor')} ref={asideRef} />\n {customBackground && (\n <div className={b('aside-custom-background', customBackgroundClassName)}>\n {customBackground}\n </div>\n )}\n\n <div className={b('aside-content', {['with-decoration']: headerDecoration})}>\n <Header />\n {aboveMenuContent}\n {visibleMenuItems?.length ? (\n <CompositeBar\n menuItemClassName={b('menu-item')}\n compositeId={MENU_ITEMS_COMPOSITE_ID}\n type=\"menu\"\n compact={compact}\n items={visibleMenuItems}\n menuGroups={menuGroups}\n menuMoreTitle={menuMoreTitle ?? i18n('label_more')}\n onItemClick={onItemClick}\n onMoreClick={onMenuMoreClick}\n menuOverflow={menuOverflow}\n collapsedMenuGroupIds={collapsedMenuGroupIds}\n defaultCollapsedMenuGroupIds={defaultCollapsedMenuGroupIds}\n onToggleMenuGroupCollapsed={onToggleMenuGroupCollapsed}\n />\n ) : (\n <div className={b('menu-items')} />\n )}\n <div className={b('footer')}>\n {renderFooter?.({\n size,\n compact: Boolean(compact),\n asideRef,\n })}\n </div>\n {!hideCollapseButton && <CollapseButton />}\n </div>\n </div>\n <Panels />\n </React.Fragment>\n );\n});\n\nFirstPanel.displayName = 'FirstPanel';\n"],"names":["React"],"mappings":";;;;;;;;;;;;;;;AAcA,MAAM,uBAAuB,GAAG,gDAAgD;AAEzE,MAAM,UAAU,GAAGA,cAAK,CAAC,UAAU,CAAiB,CAAC,MAAM,EAAE,GAAG,KAAI;AACvE,IAAA,MAAM,EACF,IAAI,EACJ,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,OAAO,EACP,gBAAgB,EAChB,yBAAyB,EACzB,SAAS,EACT,kBAAkB,EAClB,UAAU,EACV,YAAY,EACZ,qBAAqB,EACrB,4BAA4B,EAC5B,0BAA0B,EAC1B,gBAAgB,EAChB,EAAE,GACL,GAAG,0BAA0B,EAAE;AAChC,IAAA,MAAM,gBAAgB,GAAG,mBAAmB,EAAE;AAE9C,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAiB,IAAI,CAAC;AAE7C,IAAAA,cAAK,CAAC,SAAS,CAAC,MAAK;AACjB,QAAA,MAAM,CAAiB,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC;AACjD,KAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AAET,IAAA,QACIA,cAAA,CAAA,aAAA,CAACA,cAAK,CAAC,QAAQ,EAAA,IAAA;AACX,QAAAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAE,CAAC,CACR,OAAO,EACP,EAAC,sBAAsB,EAAE,YAAY,KAAK,QAAQ,IAAI,CAAC,OAAO,EAAC,EAC/D,SAAS,CACZ,EACD,KAAK,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,EAAA,SAAA,EACX,EAAE,EAAA;YAEXA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,CAAC,CAAC,oBAAoB,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAI,CAAA;AACzD,YAAA,gBAAgB,KACbA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,CAAC,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,EAClE,EAAA,gBAAgB,CACf,CACT;AAED,YAAAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAC,CAAC,eAAe,EAAE,EAAC,CAAC,iBAAiB,GAAG,gBAAgB,EAAC,CAAC,EAAA;AACvE,gBAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAG,IAAA,CAAA;gBACT,gBAAgB;AAChB,gBAAA,CAAA,gBAAgB,KAAhB,IAAA,IAAA,gBAAgB,6BAAhB,gBAAgB,CAAE,MAAM,KACrBA,cAAA,CAAA,aAAA,CAAC,YAAY,EACT,EAAA,iBAAiB,EAAE,CAAC,CAAC,WAAW,CAAC,EACjC,WAAW,EAAE,uBAAuB,EACpC,IAAI,EAAC,MAAM,EACX,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,gBAAgB,EACvB,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,KAAA,IAAA,IAAb,aAAa,KAAb,SAAA,GAAA,aAAa,GAAI,IAAI,CAAC,YAAY,CAAC,EAClD,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,eAAe,EAC5B,YAAY,EAAE,YAAY,EAC1B,qBAAqB,EAAE,qBAAqB,EAC5C,4BAA4B,EAAE,4BAA4B,EAC1D,0BAA0B,EAAE,0BAA0B,EAAA,CACxD,KAEFA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAC,CAAC,YAAY,CAAC,GAAI,CACtC;AACD,gBAAAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,EACtB,EAAA,YAAY,KAAZ,IAAA,IAAA,YAAY,KAAZ,SAAA,GAAA,SAAA,GAAA,YAAY,CAAG;oBACZ,IAAI;AACJ,oBAAA,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;oBACzB,QAAQ;AACX,iBAAA,CAAC,CACA;AACL,gBAAA,CAAC,kBAAkB,IAAIA,cAAA,CAAA,aAAA,CAAC,cAAc,EAAA,IAAA,CAAG,CACxC,CACJ;AACN,QAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAA,IAAA,CAAG,CACG;AAEzB,CAAC;AAED,UAAU,CAAC,WAAW,GAAG,YAAY;;;;"}
1
+ {"version":3,"file":"FirstPanel.js","sources":["../../../../../../src/components/AsideHeader/components/FirstPanel.tsx"],"sourcesContent":["import React, {useCallback, useRef, useState} from 'react';\n\nimport {setRef, useUniqId} from '@gravity-ui/uikit';\n\nimport {useAsideHeaderInnerContext} from '../AsideHeaderContext';\nimport i18n from '../i18n';\nimport {getQuickAccessMenuItems} from '../quickAccess';\nimport {b} from '../utils';\n\nimport {useVisibleMenuItems} from './AllPagesPanel';\nimport {AsideDivider} from './AsideDivider';\nimport {CollapseButton} from './CollapseButton/CollapseButton';\nimport {CollapseAnchorContext, useCollapseAnchor} from './CollapseButton/useCollapseAnchor';\nimport {CompositeBar} from './CompositeBar';\nimport type {QuickAccessToggleHandler} from './CompositeBar/Item/Item.types';\nimport {ScrollableWithScrollbar} from './CompositeBar/ScrollableWithScrollbar';\nimport {COMPOSITE_BAR_ITEM_ID_ATTRIBUTE} from './CompositeBar/constants';\nimport {Header} from './Header';\nimport {Panels} from './Panels';\n\nconst MENU_ITEMS_COMPOSITE_ID = 'gravity-ui/navigation-menu-items-composite-bar';\nconst QUICK_ACCESS_COMPOSITE_ID = 'gravity-ui/navigation-quick-access-composite-bar';\nconst FOCUSABLE_ITEM_SELECTOR = 'a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\ntype PendingQuickAccessFocus = {\n itemId: string;\n nextItemId?: string;\n previousItemId?: string;\n trigger: HTMLButtonElement;\n};\n\nfunction findCompositeBar(root: HTMLElement, id: string) {\n return Array.from(root.querySelectorAll<HTMLElement>('[id]')).find(\n (element) => element.id === id,\n );\n}\n\nfunction findCompositeBarItemFocusTarget(root?: HTMLElement, itemId?: string) {\n if (!root) {\n return undefined;\n }\n\n const itemElements = Array.from(\n root.querySelectorAll<HTMLElement>(`[${COMPOSITE_BAR_ITEM_ID_ATTRIBUTE}]`),\n );\n const itemElement = itemId\n ? itemElements.find(\n (element) => element.getAttribute(COMPOSITE_BAR_ITEM_ID_ATTRIBUTE) === itemId,\n )\n : itemElements[0];\n\n if (!itemElement) {\n return undefined;\n }\n\n if (itemElement.matches(FOCUSABLE_ITEM_SELECTOR)) {\n return itemElement;\n }\n\n const wrappingFocusable = itemElement.closest<HTMLElement>(FOCUSABLE_ITEM_SELECTOR);\n\n if (wrappingFocusable && root.contains(wrappingFocusable)) {\n return wrappingFocusable;\n }\n\n return itemElement.querySelector<HTMLElement>(FOCUSABLE_ITEM_SELECTOR) ?? undefined;\n}\n\nexport const FirstPanel = React.forwardRef<HTMLDivElement>((_props, ref) => {\n const {\n size,\n onItemClick,\n headerDecoration,\n hideSectionDividers,\n menuMoreTitle,\n onMenuMoreClick,\n renderFooter,\n compact,\n customBackground,\n customBackgroundClassName,\n className,\n hideCollapseButton,\n menuGroups,\n menuGroupNestedIcons,\n menuOverflow,\n collapsedMenuGroupIds,\n defaultCollapsedMenuGroupIds,\n onToggleMenuGroupCollapsed,\n aboveMenuContent,\n enableQuickAccess = false,\n quickAccessHighlightInMainMenu = false,\n quickAccessIsAvailable,\n onToggleQuickAccess,\n qa,\n } = useAsideHeaderInnerContext();\n const panelId = useUniqId();\n const collapseAnchor = useCollapseAnchor(!hideCollapseButton, compact);\n const visibleMenuItems = useVisibleMenuItems();\n const quickAccessEnabled = enableQuickAccess;\n const quickAccessItems = React.useMemo(\n () => (quickAccessEnabled ? getQuickAccessMenuItems(visibleMenuItems, menuGroups) : []),\n [menuGroups, quickAccessEnabled, visibleMenuItems],\n );\n const suppressedCurrentItemIds = React.useMemo(\n () =>\n quickAccessEnabled && !quickAccessHighlightInMainMenu\n ? new Set(quickAccessItems.map((item) => item.id))\n : undefined,\n [quickAccessEnabled, quickAccessHighlightInMainMenu, quickAccessItems],\n );\n const hasQuickAccessItems = quickAccessItems.length > 0;\n const [menuScrollOverflows, setMenuScrollOverflows] = useState(false);\n const asideRef = useRef<HTMLDivElement>(null);\n const pendingQuickAccessFocusRef = useRef<PendingQuickAccessFocus>();\n\n const handleMenuScrollOverflowChange = useCallback((overflows: boolean) => {\n setMenuScrollOverflows(overflows);\n }, []);\n\n const handleQuickAccessToggle = React.useCallback<QuickAccessToggleHandler>(\n (item, event) => {\n if (\n item.quickAccess &&\n event?.detail === 0 &&\n event.currentTarget.ownerDocument.activeElement === event.currentTarget\n ) {\n const itemIndex = quickAccessItems.findIndex(\n (quickAccessItem) => quickAccessItem.id === item.id,\n );\n\n pendingQuickAccessFocusRef.current = {\n itemId: item.id,\n nextItemId: quickAccessItems[itemIndex + 1]?.id,\n previousItemId: quickAccessItems[itemIndex - 1]?.id,\n trigger: event.currentTarget,\n };\n }\n\n onToggleQuickAccess(item);\n },\n [onToggleQuickAccess, quickAccessItems],\n );\n\n React.useEffect(() => {\n const pendingFocus = pendingQuickAccessFocusRef.current;\n\n if (\n !pendingFocus ||\n quickAccessItems.some((quickAccessItem) => quickAccessItem.id === pendingFocus.itemId)\n ) {\n return;\n }\n\n const ownerDocument = pendingFocus.trigger.ownerDocument;\n const asideRoot = asideRef.current?.parentElement;\n\n if (!asideRoot) {\n pendingQuickAccessFocusRef.current = undefined;\n return;\n }\n\n const quickAccessRoot = findCompositeBar(asideRoot, QUICK_ACCESS_COMPOSITE_ID);\n const menuRoot = findCompositeBar(asideRoot, MENU_ITEMS_COMPOSITE_ID);\n const remainingQuickAccessIds = new Set(quickAccessItems.map((item) => item.id));\n const adjacentQuickAccessItemId = [\n pendingFocus.nextItemId,\n pendingFocus.previousItemId,\n ].find((itemId) => itemId && remainingQuickAccessIds.has(itemId));\n const focusTarget =\n findCompositeBarItemFocusTarget(quickAccessRoot, adjacentQuickAccessItemId) ??\n findCompositeBarItemFocusTarget(menuRoot, pendingFocus.itemId) ??\n findCompositeBarItemFocusTarget(quickAccessRoot) ??\n findCompositeBarItemFocusTarget(menuRoot) ??\n asideRoot.querySelector<HTMLElement>(FOCUSABLE_ITEM_SELECTOR);\n const ownerWindow = ownerDocument.defaultView;\n\n if (!focusTarget || !ownerWindow) {\n pendingQuickAccessFocusRef.current = undefined;\n return;\n }\n\n // Finish the keyboard activation first: focus applied during the click can otherwise\n // be reset to body when the removed button completes its native activation lifecycle.\n ownerWindow.requestAnimationFrame(() => {\n if (pendingQuickAccessFocusRef.current !== pendingFocus) {\n return;\n }\n\n pendingQuickAccessFocusRef.current = undefined;\n const nextActiveElement = ownerDocument.activeElement;\n\n // Do not steal focus if the user moved it before an asynchronous controlled update.\n if (\n nextActiveElement === ownerDocument.body ||\n nextActiveElement === ownerDocument.documentElement\n ) {\n focusTarget.focus();\n }\n });\n }, [quickAccessItems]);\n\n const quickAccessCompositeBar = (\n <CompositeBar\n menuItemClassName={b('menu-item')}\n compositeId={QUICK_ACCESS_COMPOSITE_ID}\n type=\"quick-access\"\n compact={compact}\n items={quickAccessItems}\n onItemClick={onItemClick}\n enableQuickAccessPin={quickAccessIsAvailable}\n onToggleQuickAccess={handleQuickAccessToggle}\n />\n );\n\n const menuCompositeBar = (\n <CompositeBar\n menuItemClassName={b('menu-item')}\n compositeId={MENU_ITEMS_COMPOSITE_ID}\n layoutWidth={size}\n type=\"menu\"\n compact={compact}\n items={visibleMenuItems}\n menuGroups={menuGroups}\n menuGroupNestedIcons={menuGroupNestedIcons}\n menuMoreTitle={menuMoreTitle ?? i18n('label_more')}\n onItemClick={onItemClick}\n onMoreClick={onMenuMoreClick}\n menuOverflow={menuOverflow}\n collapsedMenuGroupIds={collapsedMenuGroupIds}\n defaultCollapsedMenuGroupIds={defaultCollapsedMenuGroupIds}\n onToggleMenuGroupCollapsed={onToggleMenuGroupCollapsed}\n enableQuickAccessPin={quickAccessIsAvailable}\n onToggleQuickAccess={onToggleQuickAccess}\n suppressCurrentItemIds={suppressedCurrentItemIds}\n />\n );\n\n const quickAccessSection = hasQuickAccessItems ? (\n <div className={b('quick-access')} data-gn-aside-current-container>\n {!compact && (\n <div className={b('quick-access-title')} data-gn-aside-part=\"quick-access-title\">\n {i18n('quick_access_title')}\n </div>\n )}\n {quickAccessCompositeBar}\n <AsideDivider className={b('quick-access-divider')} transitionId=\"quick-access\" />\n </div>\n ) : null;\n\n const menuSection = visibleMenuItems.length ? (\n menuCompositeBar\n ) : (\n <div className={b('menu-items')} />\n );\n\n React.useEffect(() => {\n setRef<HTMLDivElement>(ref, asideRef.current);\n }, [ref]);\n\n return (\n <React.Fragment>\n <div\n className={b('aside', className)}\n style={{width: size}}\n data-qa={qa}\n data-gn-aside-panel\n id={panelId}\n ref={collapseAnchor.panelRef}\n >\n <div className={b('aside-popup-anchor')} ref={asideRef} />\n {customBackground && (\n <div className={b('aside-custom-background', customBackgroundClassName)}>\n {customBackground}\n </div>\n )}\n\n <div\n className={b('aside-content', {\n 'with-decoration': headerDecoration,\n 'hide-section-dividers': hideSectionDividers,\n 'with-quick-access': quickAccessEnabled,\n 'with-quick-access-items': quickAccessEnabled && hasQuickAccessItems,\n })}\n >\n <Header />\n {aboveMenuContent}\n <ScrollableWithScrollbar\n className={b('unified-menu-scroll')}\n onOverflowChange={handleMenuScrollOverflowChange}\n showScrollDividers={hideSectionDividers}\n >\n <div className={b('unified-menu-content')} data-gn-aside-current-container>\n {quickAccessSection}\n {menuSection}\n </div>\n </ScrollableWithScrollbar>\n <div\n className={b('footer', {'with-divider': menuScrollOverflows})}\n ref={collapseAnchor.footerRef}\n >\n <CollapseAnchorContext.Provider value={collapseAnchor.context}>\n <AsideDivider className={b('footer-divider')} transitionId=\"footer\" />\n {renderFooter?.({\n size,\n compact: Boolean(compact),\n asideRef,\n })}\n {!hideCollapseButton && !collapseAnchor.selected && (\n <div\n data-gn-collapse-fallback\n data-gn-collapse-anchor=\"\"\n className={b('collapse-fallback')}\n ref={collapseAnchor.fallbackRef}\n />\n )}\n </CollapseAnchorContext.Provider>\n </div>\n </div>\n </div>\n {!hideCollapseButton && (\n <CollapseButton panelId={panelId} slotRef={collapseAnchor.slotRef} />\n )}\n <Panels />\n </React.Fragment>\n );\n});\n\nFirstPanel.displayName = 'FirstPanel';\n"],"names":["React"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- .FooterItem-module__gn-footer-item___Hi7NH{border-radius:var(--gn-aside-header-item-expanded-radius);width:100%}
1
+ .FooterItem-module__gn-footer-item___Hi7NH{border-radius:var(--gn-aside-header-item-expanded-radius,var(--_--gn-aside-header-density-item-expanded-radius,8px));width:100%}.FooterItem-module__gn-footer-item___Hi7NH[data-gn-collapse-anchor]:not(.FooterItem-module__gn-footer-item_compact___rth8I){margin-inline:0 24px;width:calc(100% - 24px)}.FooterItem-module__gn-footer-item___Hi7NH[data-gn-collapse-anchor]:not(.FooterItem-module__gn-footer-item_compact___rth8I)[data-type=action]{margin-inline:10px 34px;width:calc(100% - 44px)}
2
2
  .FooterItem-module__gn-mobile-header-footer-item___dk-Wo{flex-grow:1;position:relative}.FooterItem-module__gn-mobile-header-footer-item__button___KSu25{align-items:center;background:none;border:none;box-sizing:border-box;color:inherit;cursor:pointer;display:flex;font-family:var(--g-text-body-font-family);font-size:inherit;font-weight:var(--g-text-body-font-weight);justify-content:center;outline:none;padding:13px 10px;width:100%}.FooterItem-module__gn-mobile-header-footer-item___dk-Wo .FooterItem-module__gn-mobile-header-footer-item__icon___Spltd{color:var(--g-color-text-misc)}.FooterItem-module__gn-mobile-header-footer-item___dk-Wo+.FooterItem-module__gn-mobile-header-footer-item___dk-Wo:before{border-left:1px solid var(--g-color-base-generic);bottom:8px;content:"";left:0;position:absolute;top:8px}.FooterItem-module__gn-mobile-header-footer-item___dk-Wo:empty{display:none}
@@ -1,8 +1,10 @@
1
1
  import './FooterItem.css';
2
2
  import { __rest } from 'tslib';
3
3
  import React__default from 'react';
4
- import { ASIDE_HEADER_ICON_SIZE } from '../../../constants.js';
5
4
  import { createBlock, block } from '../../../utils/cn.js';
5
+ import { useAsideHeaderContext } from '../../AsideHeaderContext.js';
6
+ import { getAsideHeaderDensityConfig } from '../../density.js';
7
+ import { CollapseAnchorContext } from '../CollapseButton/useCollapseAnchor.js';
6
8
  import { Item } from '../CompositeBar/Item/Item.js';
7
9
  import styles from './FooterItem.module.scss.js';
8
10
 
@@ -10,7 +12,21 @@ const b = createBlock('footer-item', styles);
10
12
  const bGlobal = block('footer-item');
11
13
  function FooterItem(_a) {
12
14
  var { regularSize } = _a, props = __rest(_a, ["regularSize"]);
13
- return (React__default.createElement(Item, Object.assign({}, props, { iconSize: ASIDE_HEADER_ICON_SIZE, className: `${b({ compact: props.compact })} ${bGlobal({ 'regular-size': regularSize })}` })));
15
+ const anchor = React__default.useContext(CollapseAnchorContext);
16
+ const register = anchor === null || anchor === undefined ? undefined : anchor.register;
17
+ const [registrationId] = React__default.useState(() => Symbol());
18
+ const cleanup = React__default.useRef();
19
+ const rowRef = React__default.useCallback((element) => {
20
+ var _a;
21
+ (_a = cleanup.current) === null || _a === undefined ? undefined : _a.call(cleanup);
22
+ cleanup.current = undefined;
23
+ if (element && register)
24
+ cleanup.current = register(element, registrationId);
25
+ }, [register, registrationId]);
26
+ const suppressTooltip = Boolean((anchor === null || anchor === undefined ? undefined : anchor.compact) && anchor.selectedId === registrationId);
27
+ const { menuDensity } = useAsideHeaderContext();
28
+ const { iconSize } = getAsideHeaderDensityConfig(menuDensity);
29
+ return (React__default.createElement(Item, Object.assign({}, props, { rowRef: rowRef, enableTooltip: suppressTooltip ? false : props.enableTooltip, iconSize: iconSize, className: `${b({ compact: props.compact })} ${bGlobal({ 'regular-size': regularSize })}` })));
14
30
  }
15
31
 
16
32
  export { FooterItem };
@@ -1 +1 @@
1
- {"version":3,"file":"FooterItem.js","sources":["../../../../../../../src/components/AsideHeader/components/FooterItem/FooterItem.tsx"],"sourcesContent":["import React from 'react';\n\nimport {ASIDE_HEADER_ICON_SIZE} from '../../../constants';\nimport {block, createBlock} from '../../../utils/cn';\nimport {AsideHeaderItem} from '../../types';\nimport {Item} from '../CompositeBar/Item/Item';\n\nimport styles from './FooterItem.module.scss';\n\nconst b = createBlock('footer-item', styles);\nconst bGlobal = block('footer-item');\n\nexport interface FooterItemProps extends AsideHeaderItem {\n /**\n * When `true`, the item is rendered with the same geometry as regular menu\n * items (40px row, 38px icon background) instead of the reduced footer size.\n */\n regularSize?: boolean;\n}\n\nexport function FooterItem({regularSize, ...props}: FooterItemProps) {\n return (\n <Item\n {...props}\n iconSize={ASIDE_HEADER_ICON_SIZE}\n className={`${b({compact: props.compact})} ${bGlobal({'regular-size': regularSize})}`}\n />\n );\n}\n"],"names":["React"],"mappings":";;;;;;;AASA,MAAM,CAAC,GAAG,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC;AAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC;AAU9B,SAAU,UAAU,CAAC,EAAwC,EAAA;AAAxC,IAAA,IAAA,EAAC,WAAW,EAA4B,GAAA,EAAA,EAAvB,KAAK,GAAA,MAAA,CAAA,EAAA,EAAtB,eAAuB,CAAD;AAC7C,IAAA,QACIA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACG,KAAK,EACT,EAAA,QAAQ,EAAE,sBAAsB,EAChC,SAAS,EAAE,CAAG,EAAA,CAAC,CAAC,EAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAC,CAAC,CAAA,CAAA,EAAI,OAAO,CAAC,EAAC,cAAc,EAAE,WAAW,EAAC,CAAC,CAAE,CAAA,EAAA,CAAA,CACvF;AAEV;;;;"}
1
+ {"version":3,"file":"FooterItem.js","sources":["../../../../../../../src/components/AsideHeader/components/FooterItem/FooterItem.tsx"],"sourcesContent":["import React from 'react';\n\nimport {block, createBlock} from '../../../utils/cn';\nimport {useAsideHeaderContext} from '../../AsideHeaderContext';\nimport {getAsideHeaderDensityConfig} from '../../density';\nimport {AsideHeaderItem} from '../../types';\nimport {CollapseAnchorContext} from '../CollapseButton/useCollapseAnchor';\nimport {Item} from '../CompositeBar/Item/Item';\n\nimport styles from './FooterItem.module.scss';\n\nconst b = createBlock('footer-item', styles);\nconst bGlobal = block('footer-item');\n\nexport interface FooterItemProps extends AsideHeaderItem {\n /**\n * When `true`, the item is rendered with the same geometry as regular menu\n * items (40px row, 38px icon background) instead of the reduced footer size.\n */\n regularSize?: boolean;\n}\n\nexport function FooterItem({regularSize, ...props}: FooterItemProps) {\n const anchor = React.useContext(CollapseAnchorContext);\n const register = anchor?.register;\n const [registrationId] = React.useState(() => Symbol());\n const cleanup = React.useRef<() => void>();\n const rowRef = React.useCallback(\n (element: HTMLElement | null) => {\n cleanup.current?.();\n cleanup.current = undefined;\n if (element && register) cleanup.current = register(element, registrationId);\n },\n [register, registrationId],\n );\n const suppressTooltip = Boolean(anchor?.compact && anchor.selectedId === registrationId);\n const {menuDensity} = useAsideHeaderContext();\n const {iconSize} = getAsideHeaderDensityConfig(menuDensity);\n\n return (\n <Item\n {...props}\n rowRef={rowRef}\n enableTooltip={suppressTooltip ? false : props.enableTooltip}\n iconSize={iconSize}\n className={`${b({compact: props.compact})} ${bGlobal({'regular-size': regularSize})}`}\n />\n );\n}\n"],"names":["React"],"mappings":";;;;;;;;;AAWA,MAAM,CAAC,GAAG,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC;AAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC;AAU9B,SAAU,UAAU,CAAC,EAAwC,EAAA;AAAxC,IAAA,IAAA,EAAC,WAAW,EAA4B,GAAA,EAAA,EAAvB,KAAK,GAAA,MAAA,CAAA,EAAA,EAAtB,eAAuB,CAAD;IAC7C,MAAM,MAAM,GAAGA,cAAK,CAAC,UAAU,CAAC,qBAAqB,CAAC;IACtD,MAAM,QAAQ,GAAG,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,SAAA,GAAA,SAAA,GAAA,MAAM,CAAE,QAAQ;AACjC,IAAA,MAAM,CAAC,cAAc,CAAC,GAAGA,cAAK,CAAC,QAAQ,CAAC,MAAM,MAAM,EAAE,CAAC;AACvD,IAAA,MAAM,OAAO,GAAGA,cAAK,CAAC,MAAM,EAAc;IAC1C,MAAM,MAAM,GAAGA,cAAK,CAAC,WAAW,CAC5B,CAAC,OAA2B,KAAI;;AAC5B,QAAA,CAAA,EAAA,GAAA,OAAO,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,SAAA,GAAA,SAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,CAAI;AACnB,QAAA,OAAO,CAAC,OAAO,GAAG,SAAS;QAC3B,IAAI,OAAO,IAAI,QAAQ;YAAE,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;AAChF,KAAC,EACD,CAAC,QAAQ,EAAE,cAAc,CAAC,CAC7B;AACD,IAAA,MAAM,eAAe,GAAG,OAAO,CAAC,CAAA,MAAM,aAAN,MAAM,KAAA,SAAA,GAAA,SAAA,GAAN,MAAM,CAAE,OAAO,KAAI,MAAM,CAAC,UAAU,KAAK,cAAc,CAAC;AACxF,IAAA,MAAM,EAAC,WAAW,EAAC,GAAG,qBAAqB,EAAE;IAC7C,MAAM,EAAC,QAAQ,EAAC,GAAG,2BAA2B,CAAC,WAAW,CAAC;IAE3D,QACIA,cAAC,CAAA,aAAA,CAAA,IAAI,EACG,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,KAAK,IACT,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,eAAe,GAAG,KAAK,GAAG,KAAK,CAAC,aAAa,EAC5D,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,CAAA,EAAG,CAAC,CAAC,EAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAC,CAAC,CAAI,CAAA,EAAA,OAAO,CAAC,EAAC,cAAc,EAAE,WAAW,EAAC,CAAC,CAAA,CAAE,EACvF,CAAA,CAAA;AAEV;;;;"}
@@ -1,4 +1,4 @@
1
- var styles = {"gn-footer-item":"FooterItem-module__gn-footer-item___Hi7NH","gnFooterItem":"FooterItem-module__gn-footer-item___Hi7NH"};
1
+ var styles = {"gn-footer-item":"FooterItem-module__gn-footer-item___Hi7NH","gnFooterItem":"FooterItem-module__gn-footer-item___Hi7NH","gn-footer-item_compact":"FooterItem-module__gn-footer-item_compact___rth8I","gnFooterItemCompact":"FooterItem-module__gn-footer-item_compact___rth8I"};
2
2
 
3
3
  export { styles as default };
4
4
  //# sourceMappingURL=FooterItem.module.scss.js.map
@@ -1,25 +1,28 @@
1
1
  import React__default, { useCallback } from 'react';
2
2
  import { Icon } from '@gravity-ui/uikit';
3
3
  import { Logo } from '../../Logo/Logo.js';
4
- import { ASIDE_HEADER_COMPACT_WIDTH, HEADER_DIVIDER_HEIGHT } from '../../constants.js';
5
4
  import { useAsideHeaderInnerContext } from '../AsideHeaderContext.js';
5
+ import { getAsideHeaderDecorationHeight, getAsideHeaderDensityConfig } from '../density.js';
6
6
  import { b } from '../utils.js';
7
+ import { AsideDivider } from './AsideDivider.js';
7
8
  import { CompositeBar } from './CompositeBar/CompositeBar.js';
8
9
  import SvgDividerCollapsed from '../../../assets/icons/divider-collapsed.svg.js';
9
10
 
10
11
  const DEFAULT_SUBHEADER_ITEMS = [];
11
12
  const HEADER_COMPOSITE_ID = 'gravity-ui/navigation-header-composite-bar';
12
13
  const Header = () => {
13
- const { logo, onItemClick, onClosePanel, headerDecoration, subheaderItems, compact } = useAsideHeaderInnerContext();
14
+ const { logo, onItemClick, onClosePanel, headerDecoration, subheaderItems, compact, menuDensity, } = useAsideHeaderInnerContext();
15
+ const { compactWidth } = getAsideHeaderDensityConfig(menuDensity);
14
16
  const onLogoClick = useCallback((event) => {
15
17
  var _a;
16
18
  onClosePanel === null || onClosePanel === undefined ? undefined : onClosePanel();
17
19
  (_a = logo === null || logo === undefined ? undefined : logo.onClick) === null || _a === undefined ? undefined : _a.call(logo, event);
18
20
  }, [onClosePanel, logo]);
19
21
  return (React__default.createElement("div", { className: b('header', { ['with-decoration']: headerDecoration }) },
20
- logo && (React__default.createElement(Logo, Object.assign({}, logo, { onClick: onLogoClick, compact: compact, buttonClassName: b('logo-button'), iconPlaceClassName: b('logo-icon-place') }))),
22
+ logo && (React__default.createElement(Logo, Object.assign({}, logo, { "data-gn-aside-transition-row": "logo", className: b('logo', logo.className), onClick: onLogoClick, compact: compact, buttonClassName: b('logo-button'), iconPlaceClassName: b('logo-icon-place') }))),
21
23
  React__default.createElement(CompositeBar, { compositeId: HEADER_COMPOSITE_ID, type: "subheader", menuItemClassName: b('menu-item'), compact: compact, items: subheaderItems || DEFAULT_SUBHEADER_ITEMS, onItemClick: onItemClick }),
22
- headerDecoration && (React__default.createElement(Icon, { data: SvgDividerCollapsed, className: b('header-divider'), width: ASIDE_HEADER_COMPACT_WIDTH, height: HEADER_DIVIDER_HEIGHT }))));
24
+ React__default.createElement(AsideDivider, { className: b('header-bottom-divider'), transitionId: "header" }),
25
+ headerDecoration && (React__default.createElement(Icon, { data: SvgDividerCollapsed, className: b('header-divider'), width: compactWidth, height: getAsideHeaderDecorationHeight(menuDensity) }))));
23
26
  };
24
27
 
25
28
  export { Header };
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sources":["../../../../../../src/components/AsideHeader/components/Header.tsx"],"sourcesContent":["import React, {useCallback} from 'react';\n\nimport {Icon} from '@gravity-ui/uikit';\n\nimport {Logo} from '../../Logo';\nimport {ASIDE_HEADER_COMPACT_WIDTH, HEADER_DIVIDER_HEIGHT} from '../../constants';\nimport {useAsideHeaderInnerContext} from '../AsideHeaderContext';\nimport {AsideHeaderItem} from '../types';\nimport {b} from '../utils';\n\nimport {CompositeBar} from './CompositeBar';\n\nimport headerDividerCollapsedIcon from '../../../../assets/icons/divider-collapsed.svg';\n\nconst DEFAULT_SUBHEADER_ITEMS: AsideHeaderItem[] = [];\nconst HEADER_COMPOSITE_ID = 'gravity-ui/navigation-header-composite-bar';\n\nexport const Header = () => {\n const {logo, onItemClick, onClosePanel, headerDecoration, subheaderItems, compact} =\n useAsideHeaderInnerContext();\n\n const onLogoClick = useCallback(\n (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n onClosePanel?.();\n logo?.onClick?.(event);\n },\n [onClosePanel, logo],\n );\n\n return (\n <div className={b('header', {['with-decoration']: headerDecoration})}>\n {logo && (\n <Logo\n {...logo}\n onClick={onLogoClick}\n compact={compact}\n buttonClassName={b('logo-button')}\n iconPlaceClassName={b('logo-icon-place')}\n />\n )}\n\n <CompositeBar\n compositeId={HEADER_COMPOSITE_ID}\n type=\"subheader\"\n menuItemClassName={b('menu-item')}\n compact={compact}\n items={subheaderItems || DEFAULT_SUBHEADER_ITEMS}\n onItemClick={onItemClick}\n />\n\n {headerDecoration && (\n <Icon\n data={headerDividerCollapsedIcon}\n className={b('header-divider')}\n width={ASIDE_HEADER_COMPACT_WIDTH}\n height={HEADER_DIVIDER_HEIGHT}\n />\n )}\n </div>\n );\n};\n"],"names":["React","headerDividerCollapsedIcon"],"mappings":";;;;;;;;;AAcA,MAAM,uBAAuB,GAAsB,EAAE;AACrD,MAAM,mBAAmB,GAAG,4CAA4C;AAEjE,MAAM,MAAM,GAAG,MAAK;AACvB,IAAA,MAAM,EAAC,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,OAAO,EAAC,GAC9E,0BAA0B,EAAE;AAEhC,IAAA,MAAM,WAAW,GAAG,WAAW,CAC3B,CAAC,KAAgD,KAAI;;AACjD,QAAA,YAAY,KAAZ,IAAA,IAAA,YAAY,KAAZ,SAAA,GAAA,SAAA,GAAA,YAAY,EAAI;QAChB,CAAA,EAAA,GAAA,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,SAAA,GAAA,SAAA,GAAA,IAAI,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,SAAA,GAAA,SAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,EAAG,KAAK,CAAC;AAC1B,KAAC,EACD,CAAC,YAAY,EAAE,IAAI,CAAC,CACvB;AAED,IAAA,QACIA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAC,CAAC,iBAAiB,GAAG,gBAAgB,EAAC,CAAC,EAAA;AAC/D,QAAA,IAAI,KACDA,cAAC,CAAA,aAAA,CAAA,IAAI,EACG,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,EACR,EAAA,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,CAAC,CAAC,aAAa,CAAC,EACjC,kBAAkB,EAAE,CAAC,CAAC,iBAAiB,CAAC,IAC1C,CACL;AAED,QAAAA,cAAA,CAAA,aAAA,CAAC,YAAY,EAAA,EACT,WAAW,EAAE,mBAAmB,EAChC,IAAI,EAAC,WAAW,EAChB,iBAAiB,EAAE,CAAC,CAAC,WAAW,CAAC,EACjC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,cAAc,IAAI,uBAAuB,EAChD,WAAW,EAAE,WAAW,EAC1B,CAAA;QAED,gBAAgB,KACbA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EACD,IAAI,EAAEC,mBAA0B,EAChC,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAC9B,KAAK,EAAE,0BAA0B,EACjC,MAAM,EAAE,qBAAqB,EAC/B,CAAA,CACL,CACC;AAEd;;;;"}
1
+ {"version":3,"file":"Header.js","sources":["../../../../../../src/components/AsideHeader/components/Header.tsx"],"sourcesContent":["import React, {useCallback} from 'react';\n\nimport {Icon} from '@gravity-ui/uikit';\n\nimport {Logo} from '../../Logo';\nimport {useAsideHeaderInnerContext} from '../AsideHeaderContext';\nimport {getAsideHeaderDecorationHeight, getAsideHeaderDensityConfig} from '../density';\nimport {AsideHeaderItem} from '../types';\nimport {b} from '../utils';\n\nimport {AsideDivider} from './AsideDivider';\nimport {CompositeBar} from './CompositeBar';\n\nimport headerDividerCollapsedIcon from '../../../../assets/icons/divider-collapsed.svg';\n\nconst DEFAULT_SUBHEADER_ITEMS: AsideHeaderItem[] = [];\nconst HEADER_COMPOSITE_ID = 'gravity-ui/navigation-header-composite-bar';\n\nexport const Header = () => {\n const {\n logo,\n onItemClick,\n onClosePanel,\n headerDecoration,\n subheaderItems,\n compact,\n menuDensity,\n } = useAsideHeaderInnerContext();\n const {compactWidth} = getAsideHeaderDensityConfig(menuDensity);\n\n const onLogoClick = useCallback(\n (event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n onClosePanel?.();\n logo?.onClick?.(event);\n },\n [onClosePanel, logo],\n );\n\n return (\n <div className={b('header', {['with-decoration']: headerDecoration})}>\n {logo && (\n <Logo\n {...logo}\n data-gn-aside-transition-row=\"logo\"\n className={b('logo', logo.className)}\n onClick={onLogoClick}\n compact={compact}\n buttonClassName={b('logo-button')}\n iconPlaceClassName={b('logo-icon-place')}\n />\n )}\n\n <CompositeBar\n compositeId={HEADER_COMPOSITE_ID}\n type=\"subheader\"\n menuItemClassName={b('menu-item')}\n compact={compact}\n items={subheaderItems || DEFAULT_SUBHEADER_ITEMS}\n onItemClick={onItemClick}\n />\n\n <AsideDivider className={b('header-bottom-divider')} transitionId=\"header\" />\n {headerDecoration && (\n <Icon\n data={headerDividerCollapsedIcon}\n className={b('header-divider')}\n width={compactWidth}\n height={getAsideHeaderDecorationHeight(menuDensity)}\n />\n )}\n </div>\n );\n};\n"],"names":["React","headerDividerCollapsedIcon"],"mappings":";;;;;;;;;;AAeA,MAAM,uBAAuB,GAAsB,EAAE;AACrD,MAAM,mBAAmB,GAAG,4CAA4C;AAEjE,MAAM,MAAM,GAAG,MAAK;AACvB,IAAA,MAAM,EACF,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,OAAO,EACP,WAAW,GACd,GAAG,0BAA0B,EAAE;IAChC,MAAM,EAAC,YAAY,EAAC,GAAG,2BAA2B,CAAC,WAAW,CAAC;AAE/D,IAAA,MAAM,WAAW,GAAG,WAAW,CAC3B,CAAC,KAAgD,KAAI;;AACjD,QAAA,YAAY,KAAZ,IAAA,IAAA,YAAY,KAAZ,SAAA,GAAA,SAAA,GAAA,YAAY,EAAI;QAChB,CAAA,EAAA,GAAA,IAAI,KAAJ,IAAA,IAAA,IAAI,KAAJ,SAAA,GAAA,SAAA,GAAA,IAAI,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,SAAA,GAAA,SAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,EAAG,KAAK,CAAC;AAC1B,KAAC,EACD,CAAC,YAAY,EAAE,IAAI,CAAC,CACvB;AAED,IAAA,QACIA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAC,CAAC,iBAAiB,GAAG,gBAAgB,EAAC,CAAC,EAAA;AAC/D,QAAA,IAAI,KACDA,cAAA,CAAA,aAAA,CAAC,IAAI,EACG,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,oCACqB,MAAM,EACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EACpC,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,CAAC,CAAC,aAAa,CAAC,EACjC,kBAAkB,EAAE,CAAC,CAAC,iBAAiB,CAAC,IAC1C,CACL;AAED,QAAAA,cAAA,CAAA,aAAA,CAAC,YAAY,EAAA,EACT,WAAW,EAAE,mBAAmB,EAChC,IAAI,EAAC,WAAW,EAChB,iBAAiB,EAAE,CAAC,CAAC,WAAW,CAAC,EACjC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,cAAc,IAAI,uBAAuB,EAChD,WAAW,EAAE,WAAW,EAC1B,CAAA;AAEF,QAAAA,cAAA,CAAA,aAAA,CAAC,YAAY,EAAA,EAAC,SAAS,EAAE,CAAC,CAAC,uBAAuB,CAAC,EAAE,YAAY,EAAC,QAAQ,EAAG,CAAA;AAC5E,QAAA,gBAAgB,KACbA,cAAC,CAAA,aAAA,CAAA,IAAI,EACD,EAAA,IAAI,EAAEC,mBAA0B,EAChC,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAC9B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,8BAA8B,CAAC,WAAW,CAAC,EAAA,CACrD,CACL,CACC;AAEd;;;;"}
@@ -1,2 +1,12 @@
1
1
  .AsideHeader-module__g-root___EuNRw{--gn-aside-top-panel-height:0px}
2
- .AsideHeader-module__gn-aside-header___Z0Sa7{--gn-aside-header-min-width:56px;--_--item-margin-inline:8px;--gn-aside-header-item-expanded-radius:8px;--_--item-icon-background-size:38px;--_--background-color:var(--g-color-base-background);--_--decoration-collapsed-background-color:var(--g-color-base-warning-light);--_--decoration-expanded-background-color:var(--g-color-base-warning-light);--_--vertical-divider-line-color:var(--g-color-line-generic);--_--horizontal-divider-line-color:var(--g-color-line-generic);background-color:var(--g-color-base-background);height:100%;position:relative;width:100%}.AsideHeader-module__gn-aside-header__aside___AyP0y{background-color:var(--gn-aside-header-expanded-background-color,var(--gn-aside-header-background-color,var(--_--background-color)));box-sizing:border-box;display:flex;flex-direction:column;height:100vh;left:0;margin-top:var(--gn-top-alert-height,0);max-height:calc(100vh - var(--gn-top-alert-height, 0));position:sticky;top:var(--gn-top-alert-height,0);width:inherit;z-index:var(--gn-aside-header-z-index,100)}.AsideHeader-module__gn-aside-header__aside___AyP0y:after{background-color:var(--gn-aside-header-divider-vertical-color,var(--_--vertical-divider-line-color));content:"";height:100%;position:absolute;right:0;top:0;width:1px;z-index:2}.AsideHeader-module__gn-aside-header__aside-popup-anchor___N3tgM{inset:0;position:absolute;z-index:1}.AsideHeader-module__gn-aside-header__aside-content___w5GOS{--gradient-height:334px;display:flex;flex-direction:column;height:inherit;overflow-x:hidden;padding-top:var(--gn-aside-header-padding-top);position:relative;user-select:none;width:inherit;z-index:2}.AsideHeader-module__gn-aside-header__aside-content___w5GOS>.AsideHeader-module__gn-aside-header-logo___6MdXx{margin:8px 0}.AsideHeader-module__gn-aside-header__aside_menu-overflow-scroll___l-td6 .AsideHeader-module__gn-aside-header__aside-content___w5GOS{min-height:0;overflow:hidden}.AsideHeader-module__gn-aside-header__aside-content_with-decoration___UsCye{background:linear-gradient(180deg,var(--gn-aside-header-decoration-expanded-background-color,var(--_--decoration-expanded-background-color)) calc(var(--gradient-height)*.33),transparent calc(var(--gradient-height)*.88))}.AsideHeader-module__gn-aside-header__aside-custom-background___-bqdE{bottom:0;display:flex;position:absolute;top:0;width:var(--gn-aside-header-size);z-index:-1}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__aside___AyP0y{background-color:var(--gn-aside-header-collapsed-background-color,var(--gn-aside-header-background-color,var(--_--background-color)))}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__aside-content___w5GOS{background:transparent}.AsideHeader-module__gn-aside-header__header___m5aIU{--gn-aside-header-header-divider-height:29px;box-sizing:border-box;flex:none;padding-bottom:22px;padding-top:8px;position:relative;width:100%;z-index:1}.AsideHeader-module__gn-aside-header__header___m5aIU .AsideHeader-module__gn-aside-header__header-divider___lIG-e{bottom:0;color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));display:none;left:0;position:absolute;z-index:-2}.AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO:before{background-color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));content:"";display:none;height:calc(100% - var(--gn-aside-header-header-divider-height));left:0;position:absolute;top:0;width:100%;z-index:-2}.AsideHeader-module__gn-aside-header__header___m5aIU:after{background-color:var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));bottom:12px;content:"";height:1px;left:0;position:absolute;width:100%;z-index:-2}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header___m5aIU:before, .AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO .AsideHeader-module__gn-aside-header__header-divider___lIG-e{display:block}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO:after{display:none}.AsideHeader-module__gn-aside-header__logo-button___5u2iH .AsideHeader-module__gn-aside-header__logo-icon-place___3Oo9i{height:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));width:var(--gn-aside-header-min-width)}.AsideHeader-module__gn-aside-header__menu-items___SOI2-{flex-grow:1}.AsideHeader-module__gn-aside-header__menu-item___q2y31:not(:has([data-type=action])){margin-inline:var(--_--item-margin-inline)}.AsideHeader-module__gn-aside-header__menu-item___q2y31:has([data-type=regular]), .AsideHeader-module__gn-aside-header__menu-item_type_regular___XYYbc, .AsideHeader-module__gn-aside-header__root-menu-item___eNfkk[class]:hover{border-radius:var(--gn-aside-header-item-expanded-radius,8px)}.AsideHeader-module__gn-aside-header__footer___vmoTl{display:flex;flex-direction:column;flex-shrink:0;margin:var(--g-spacing-2) var(--_--item-margin-inline)}.AsideHeader-module__gn-aside-header__panels___-fdu4{z-index:var(--gn-aside-header-panel-z-index,98)}.AsideHeader-module__gn-aside-header__panel___HywH6, .AsideHeader-module__gn-aside-header__panel___HywH6.g-drawer__item{bottom:0;height:auto;top:0}.AsideHeader-module__gn-aside-header__pane-container___y-v2e{display:flex;flex-direction:row;outline:none;overflow:visible;user-select:text}.AsideHeader-module__gn-aside-header__top-alert___hY12r{background:var(--g-color-base-background);position:fixed;top:0;width:100%;z-index:var(--gn-aside-header-pane-top-z-index,98)}.AsideHeader-module__gn-aside-header__content___4-mBl{margin-top:var(--gn-top-alert-height,0);width:calc(100% - var(--gn-aside-header-size));z-index:var(--gn-aside-header-content-z-index,95)}.AsideHeader-module__gn-aside-header__all-pages-panel___O94IU{width:fit-content!important}
2
+ .AsideHeader-module__gn-aside-header___Z0Sa7{--gn-aside-header-min-width:var(--_--gn-aside-header-density-compact-width,56px);--_--item-margin-inline:var(
3
+ --_--gn-aside-header-density-item-margin-inline,8px
4
+ );--_--item-expanded-radius:var(
5
+ --_--gn-aside-header-density-item-expanded-radius,8px
6
+ );--_--item-icon-background-size:var(
7
+ --gn-aside-header-item-icon-background-size,var(--_--gn-aside-header-density-icon-background-size,38px)
8
+ );--_--background-color:var(--g-color-base-background);--_--decoration-collapsed-background-color:var(--g-color-base-warning-light);--_--decoration-expanded-background-color:var(--g-color-base-warning-light);--_--vertical-divider-line-color:var(--g-color-line-generic);--_--horizontal-divider-line-color:var(--g-color-line-generic);--_--section-divider-gap:var(--g-spacing-1);background-color:var(--g-color-base-background);height:100%;position:relative;width:100%}.AsideHeader-module__gn-aside-header__compact-transition___bBGfN{--_--gn-aside-width-transition:width 0.2s ease-in-out;--_--gn-aside-collapse-geometry-transition:inset-inline-end 0.2s ease-in-out,width 0.2s ease-in-out,border-radius 0.2s ease-in-out;--_--gn-aside-drawer-transition:left 0.2s ease-in-out,background-color var(--_--animation-duration,300ms)}.AsideHeader-module__gn-aside-header__compact-transition_disabled___ztpdX{--_--gn-aside-width-transition:none;--_--gn-aside-collapse-geometry-transition:none;--_--gn-aside-drawer-transition:background-color var(--_--animation-duration,300ms)}.AsideHeader-module__gn-aside-header__aside___AyP0y{background-color:var(--gn-aside-header-expanded-background-color,var(--gn-aside-header-background-color,var(--_--background-color)));box-sizing:border-box;display:flex;flex-direction:column;height:100vh;left:0;margin-top:var(--gn-top-alert-height,0);max-height:calc(100vh - var(--gn-top-alert-height, 0));overflow:hidden;position:sticky;top:var(--gn-top-alert-height,0);transition:var(--_--gn-aside-width-transition);width:inherit;z-index:var(--gn-aside-header-z-index,100)}.AsideHeader-module__gn-aside-header__aside___AyP0y:after{background-color:var(--gn-aside-header-divider-vertical-color,var(--_--vertical-divider-line-color));content:"";height:100%;inset-inline-end:0;position:absolute;top:0;width:1px;z-index:2}.AsideHeader-module__gn-aside-header__aside-popup-anchor___N3tgM{inset:0;position:absolute;z-index:1}.AsideHeader-module__gn-aside-header__aside-content___w5GOS{--gradient-height:334px;display:flex;flex-direction:column;height:inherit;min-height:0;overflow:hidden;padding-top:var(--gn-aside-header-padding-top);position:relative;user-select:none;width:var(--gn-aside-header-size);z-index:2}.AsideHeader-module__gn-aside-header__aside-content___w5GOS>.AsideHeader-module__gn-aside-header-logo___6MdXx{margin:8px 0}.AsideHeader-module__gn-aside-header__aside-content_with-decoration___UsCye{background:linear-gradient(180deg,var(--gn-aside-header-decoration-expanded-background-color,var(--_--decoration-expanded-background-color)) calc(var(--gradient-height)*.33),transparent calc(var(--gradient-height)*.88))}.AsideHeader-module__gn-aside-header__aside-custom-background___-bqdE{bottom:0;display:flex;position:absolute;top:0;transition:var(--_--gn-aside-width-transition);width:var(--gn-aside-header-size);z-index:-1}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__aside___AyP0y{background-color:var(--gn-aside-header-collapsed-background-color,var(--gn-aside-header-background-color,var(--_--background-color)))}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__aside-content___w5GOS{background:transparent}.AsideHeader-module__gn-aside-header__aside___AyP0y[data-gn-aside-animating] [data-gn-aside-divider]{flex-shrink:0}.AsideHeader-module__gn-aside-header__aside___AyP0y[data-gn-aside-animating] .AsideHeader-module__gn-aside-header__aside-content___w5GOS{overflow:visible}.AsideHeader-module__gn-aside-header__aside___AyP0y[data-gn-aside-animating] .g-list__item, .AsideHeader-module__gn-aside-header__aside___AyP0y[data-gn-aside-animating] .g-list__item-content{min-width:0;overflow:visible}.AsideHeader-module__gn-aside-header__aside___AyP0y[data-gn-aside-animating] [data-gn-aside-scrollport]{width:var(--_--gn-aside-header-expanded-width)}.AsideHeader-module__gn-aside-header__aside___AyP0y[data-gn-aside-animating] .AsideHeader-module__gn-aside-header__unified-menu-content___cpugB{width:var(--gn-aside-header-size)}.AsideHeader-module__gn-aside-header__header___m5aIU{--gn-aside-header-header-divider-height:var(
9
+ --_--gn-aside-header-density-header-divider-height,29px
10
+ );box-sizing:border-box;flex:none;padding-bottom:var(--_--header-padding-bottom,22px);padding-top:8px;position:relative;width:100%;z-index:1}.AsideHeader-module__gn-aside-header__header___m5aIU .AsideHeader-module__gn-aside-header__header-divider___lIG-e{color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));display:none;left:0;position:absolute;top:calc(100% - var(--gn-aside-header-header-divider-height));z-index:-2}.AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO:before{background-color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));content:"";display:none;height:calc(100% - var(--gn-aside-header-header-divider-height));left:0;position:absolute;top:0;width:100%;z-index:-2}.AsideHeader-module__gn-aside-header__header___m5aIU .AsideHeader-module__gn-aside-header__header-bottom-divider___x9Bzo{background-color:var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));bottom:12px;content:"";height:1px;left:0;position:absolute;width:100%;z-index:-2}.AsideHeader-module__gn-aside-header__aside-content_with-quick-access___Yucty:not(.AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB) .AsideHeader-module__gn-aside-header__header___m5aIU{padding-bottom:var(--_--header-padding-bottom,var(--_--section-divider-gap))}.AsideHeader-module__gn-aside-header__aside-content_with-quick-access___Yucty:not(.AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB) .AsideHeader-module__gn-aside-header__header___m5aIU .AsideHeader-module__gn-aside-header__header-bottom-divider___x9Bzo{bottom:0}.AsideHeader-module__gn-aside-header__aside-content_with-quick-access___Yucty:not(.AsideHeader-module__gn-aside-header__aside-content_with-quick-access-items___oU0Yz):not(.AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB) .AsideHeader-module__gn-aside-header__header___m5aIU{margin-bottom:var(--_--section-divider-gap)}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header___m5aIU:before{display:block}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO{--_--header-padding-bottom:calc(var(--gn-aside-header-header-divider-height)*22/29)}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO .AsideHeader-module__gn-aside-header__header-divider___lIG-e{display:block}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO .AsideHeader-module__gn-aside-header__header-bottom-divider___x9Bzo{display:none}.AsideHeader-module__gn-aside-header__logo-button___5u2iH .AsideHeader-module__gn-aside-header__logo-icon-place___3Oo9i{height:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));width:var(--gn-aside-header-min-width)}.AsideHeader-module__gn-aside-header__logo___QvKKT{--_--gn-logo-height:var(
11
+ --_--gn-aside-header-density-item-height,40px
12
+ )}.AsideHeader-module__gn-aside-header__quick-access___ykXmy{box-sizing:border-box;flex:none;margin-bottom:var(--_--section-divider-gap);padding-block:var(--_--section-divider-gap);position:relative;width:100%}.AsideHeader-module__gn-aside-header__quick-access-divider___AzkVl{background-color:var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));bottom:0;content:"";height:1px;left:var(--_--item-margin-inline);position:absolute;right:var(--_--item-margin-inline);width:auto;z-index:1}.AsideHeader-module__gn-aside-header__quick-access-title___im4TL{color:var(--g-color-text-secondary);font-family:var(--g-text-caption-font-family);font-size:var(--g-text-caption-2-font-size);font-weight:var(--g-text-caption-font-weight);line-height:var(--g-text-caption-2-line-height);margin-inline:var(--_--item-margin-inline);padding-inline:calc(var(--_--gn-aside-header-density-item-height, 40px) + var(--_--gn-aside-header-density-item-title-gap, var(--g-spacing-2))) var(--_--gn-aside-header-density-item-title-gap-end,var(--g-spacing-4));padding-bottom:var(--g-spacing-1);user-select:none}.AsideHeader-module__gn-aside-header__unified-menu-scroll___EHnK-{flex:1 1 auto;min-height:0}.AsideHeader-module__gn-aside-header__unified-menu-content___cpugB{display:flex;flex-direction:column;min-height:100%;position:relative;z-index:0}.AsideHeader-module__gn-aside-header___Z0Sa7 [data-gn-aside-current-container]>:not([data-gn-aside-current-indicator-layer]):not([data-gn-aside-divider]){position:relative;z-index:1}.AsideHeader-module__gn-aside-header__menu-items___SOI2-{flex-grow:1}.AsideHeader-module__gn-aside-header__menu-item___q2y31:not(:has([data-type=action])){margin-inline:var(--_--item-margin-inline)}.AsideHeader-module__gn-aside-header__menu-item___q2y31:has([data-type=regular]), .AsideHeader-module__gn-aside-header__menu-item_type_regular___XYYbc, .AsideHeader-module__gn-aside-header__root-menu-item___eNfkk[class]:hover{border-radius:var(--gn-aside-header-item-expanded-radius,var(--_--item-expanded-radius))}.AsideHeader-module__gn-aside-header__collapse-fallback___R6O7X{flex-shrink:0;height:var(--_--gn-aside-header-density-footer-item-height,32px)}.AsideHeader-module__gn-aside-header__footer___vmoTl{display:flex;flex-direction:column;flex-shrink:0;margin:var(--g-spacing-2) var(--_--item-margin-inline);position:relative}.AsideHeader-module__gn-aside-header__footer___vmoTl .AsideHeader-module__gn-aside-header__footer-divider___9Jewp{background-color:var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));content:"";height:1px;left:calc(var(--_--item-margin-inline)*-1);opacity:0;pointer-events:none;position:absolute;right:calc(var(--_--item-margin-inline)*-1);top:calc(var(--g-spacing-2)*-1);transition:opacity .3s ease-in-out}.AsideHeader-module__gn-aside-header__footer_with-divider___66E1w .AsideHeader-module__gn-aside-header__footer-divider___9Jewp{opacity:1}.AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB .AsideHeader-module__gn-aside-header__header___m5aIU{margin-bottom:0;padding-bottom:0}.AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB .AsideHeader-module__gn-aside-header__header___m5aIU:before{height:100%}.AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB .AsideHeader-module__gn-aside-header__footer-divider___9Jewp, .AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB .AsideHeader-module__gn-aside-header__header___m5aIU .AsideHeader-module__gn-aside-header__header-bottom-divider___x9Bzo, .AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB .AsideHeader-module__gn-aside-header__header___m5aIU .AsideHeader-module__gn-aside-header__header-divider___lIG-e{display:none}.AsideHeader-module__gn-aside-header__aside-content_hide-section-dividers___9BZdB .AsideHeader-module__gn-aside-header__footer___vmoTl{margin-top:0}.AsideHeader-module__gn-aside-header__panels___-fdu4{z-index:var(--gn-aside-header-panel-z-index,98)}.AsideHeader-module__gn-aside-header__panels___-fdu4.g-drawer[data-floating-ui-status]{transition:var(--_--gn-aside-drawer-transition)}.AsideHeader-module__gn-aside-header__panel___HywH6, .AsideHeader-module__gn-aside-header__panel___HywH6.g-drawer__item{bottom:0;height:auto;top:0}.AsideHeader-module__gn-aside-header__pane-container___y-v2e{display:flex;flex-direction:row;outline:none;overflow:visible;user-select:text}.AsideHeader-module__gn-aside-header__top-alert___hY12r{background:var(--g-color-base-background);position:fixed;top:0;width:100%;z-index:var(--gn-aside-header-pane-top-z-index,98)}.AsideHeader-module__gn-aside-header__content___4-mBl{margin-top:var(--gn-top-alert-height,0);transition:var(--_--gn-aside-width-transition);width:calc(100% - var(--gn-aside-header-size));z-index:var(--gn-aside-header-content-z-index,95)}@media (prefers-reduced-motion:reduce){.AsideHeader-module__gn-aside-header__aside-custom-background___-bqdE, .AsideHeader-module__gn-aside-header__aside___AyP0y, .AsideHeader-module__gn-aside-header__content___4-mBl, .AsideHeader-module__gn-aside-header__panels___-fdu4.g-drawer[data-floating-ui-status]{transition:none}}.AsideHeader-module__gn-aside-header__all-pages-panel___O94IU{width:fit-content!important}
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import { QAProps } from '@gravity-ui/uikit';
3
3
  interface Props extends QAProps {
4
4
  headerDecoration?: boolean;
5
+ hideSectionDividers?: boolean;
5
6
  subheaderItemsCount?: number;
6
7
  }
7
8
  export declare const AsideFallback: React.FC<Props>;
@@ -1,20 +1,26 @@
1
1
  import './AsideFallback.css';
2
2
  import React__default from 'react';
3
3
  import { Icon } from '@gravity-ui/uikit';
4
- import { ASIDE_HEADER_COMPACT_WIDTH, HEADER_DIVIDER_HEIGHT, ITEM_HEIGHT } from '../../../constants.js';
5
4
  import { useAsideHeaderContext } from '../../AsideHeaderContext.js';
5
+ import { getAsideHeaderDecorationHeight, getAsideHeaderDensityConfig } from '../../density.js';
6
6
  import { b } from '../../utils.js';
7
+ import { AsideDivider } from '../AsideDivider.js';
7
8
  import SvgDividerCollapsed from '../../../../assets/icons/divider-collapsed.svg.js';
8
9
 
9
- const AsideFallback = ({ headerDecoration, subheaderItemsCount = 0, qa }) => {
10
- const { compact } = useAsideHeaderContext();
10
+ const AsideFallback = ({ headerDecoration, hideSectionDividers, subheaderItemsCount = 0, qa, }) => {
11
+ const { compact, menuDensity } = useAsideHeaderContext();
12
+ const { compactWidth, itemHeight } = getAsideHeaderDensityConfig(menuDensity);
11
13
  const widthVar = compact ? '--gn-aside-header-min-width' : '--gn-aside-header-size';
12
- const subheaderHeight = (1 + subheaderItemsCount) * ITEM_HEIGHT;
13
- return (React__default.createElement("div", { className: b('aside'), style: { width: `var(${widthVar})` }, "data-qa": qa },
14
- React__default.createElement("div", { className: b('aside-content', { 'with-decoration': headerDecoration }) },
14
+ const subheaderHeight = (1 + subheaderItemsCount) * itemHeight;
15
+ return (React__default.createElement("div", { className: b('aside'), style: { width: `var(${widthVar})` }, "data-qa": qa, "data-gn-aside-panel": true },
16
+ React__default.createElement("div", { className: b('aside-content', {
17
+ 'with-decoration': headerDecoration,
18
+ 'hide-section-dividers': hideSectionDividers,
19
+ }) },
15
20
  React__default.createElement("div", { className: b('header', { 'with-decoration': headerDecoration }) },
16
21
  React__default.createElement("div", { style: { height: subheaderHeight } }),
17
- compact && headerDecoration ? (React__default.createElement(Icon, { data: SvgDividerCollapsed, className: b('header-divider'), width: ASIDE_HEADER_COMPACT_WIDTH, height: HEADER_DIVIDER_HEIGHT })) : null),
22
+ React__default.createElement(AsideDivider, { className: b('header-bottom-divider'), transitionId: "header" }),
23
+ compact && headerDecoration ? (React__default.createElement(Icon, { data: SvgDividerCollapsed, className: b('header-divider'), width: compactWidth, height: getAsideHeaderDecorationHeight(menuDensity) })) : null),
18
24
  React__default.createElement("div", { style: { flex: 1 } }))));
19
25
  };
20
26
 
@@ -1 +1 @@
1
- {"version":3,"file":"AsideFallback.js","sources":["../../../../../../../src/components/AsideHeader/components/PageLayout/AsideFallback.tsx"],"sourcesContent":["import React from 'react';\n\nimport {Icon, QAProps} from '@gravity-ui/uikit';\n\nimport {ASIDE_HEADER_COMPACT_WIDTH, HEADER_DIVIDER_HEIGHT, ITEM_HEIGHT} from '../../../constants';\nimport {useAsideHeaderContext} from '../../AsideHeaderContext';\nimport {b} from '../../utils';\n\nimport headerDividerCollapsedIcon from '../../../../../assets/icons/divider-collapsed.svg';\n\ninterface Props extends QAProps {\n headerDecoration?: boolean;\n subheaderItemsCount?: number;\n}\n\nexport const AsideFallback: React.FC<Props> = ({headerDecoration, subheaderItemsCount = 0, qa}) => {\n const {compact} = useAsideHeaderContext();\n\n const widthVar = compact ? '--gn-aside-header-min-width' : '--gn-aside-header-size';\n\n const subheaderHeight = (1 + subheaderItemsCount) * ITEM_HEIGHT;\n\n return (\n <div className={b('aside')} style={{width: `var(${widthVar})`}} data-qa={qa}>\n <div className={b('aside-content', {'with-decoration': headerDecoration})}>\n <div className={b('header', {'with-decoration': headerDecoration})}>\n <div style={{height: subheaderHeight}} />\n {compact && headerDecoration ? (\n <Icon\n data={headerDividerCollapsedIcon}\n className={b('header-divider')}\n width={ASIDE_HEADER_COMPACT_WIDTH}\n height={HEADER_DIVIDER_HEIGHT}\n />\n ) : null}\n </div>\n <div style={{flex: 1}} />\n </div>\n </div>\n );\n};\n"],"names":["React","headerDividerCollapsedIcon"],"mappings":";;;;;;;AAeO,MAAM,aAAa,GAAoB,CAAC,EAAC,gBAAgB,EAAE,mBAAmB,GAAG,CAAC,EAAE,EAAE,EAAC,KAAI;AAC9F,IAAA,MAAM,EAAC,OAAO,EAAC,GAAG,qBAAqB,EAAE;IAEzC,MAAM,QAAQ,GAAG,OAAO,GAAG,6BAA6B,GAAG,wBAAwB;IAEnF,MAAM,eAAe,GAAG,CAAC,CAAC,GAAG,mBAAmB,IAAI,WAAW;AAE/D,IAAA,QACIA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAC,KAAK,EAAE,CAAA,IAAA,EAAO,QAAQ,CAAG,CAAA,CAAA,EAAC,aAAW,EAAE,EAAA;QACvEA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,CAAC,CAAC,eAAe,EAAE,EAAC,iBAAiB,EAAE,gBAAgB,EAAC,CAAC,EAAA;YACrEA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAC,iBAAiB,EAAE,gBAAgB,EAAC,CAAC,EAAA;AAC9D,gBAAAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAC,MAAM,EAAE,eAAe,EAAC,EAAI,CAAA;AACxC,gBAAA,OAAO,IAAI,gBAAgB,IACxBA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAA,EACD,IAAI,EAAEC,mBAA0B,EAChC,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAC9B,KAAK,EAAE,0BAA0B,EACjC,MAAM,EAAE,qBAAqB,GAC/B,IACF,IAAI,CACN;YACND,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,EAAC,IAAI,EAAE,CAAC,EAAC,EAAI,CAAA,CACvB,CACJ;AAEd;;;;"}
1
+ {"version":3,"file":"AsideFallback.js","sources":["../../../../../../../src/components/AsideHeader/components/PageLayout/AsideFallback.tsx"],"sourcesContent":["import React from 'react';\n\nimport {Icon, QAProps} from '@gravity-ui/uikit';\n\nimport {useAsideHeaderContext} from '../../AsideHeaderContext';\nimport {getAsideHeaderDecorationHeight, getAsideHeaderDensityConfig} from '../../density';\nimport {b} from '../../utils';\nimport {AsideDivider} from '../AsideDivider';\n\nimport headerDividerCollapsedIcon from '../../../../../assets/icons/divider-collapsed.svg';\n\ninterface Props extends QAProps {\n headerDecoration?: boolean;\n hideSectionDividers?: boolean;\n subheaderItemsCount?: number;\n}\n\nexport const AsideFallback: React.FC<Props> = ({\n headerDecoration,\n hideSectionDividers,\n subheaderItemsCount = 0,\n qa,\n}) => {\n const {compact, menuDensity} = useAsideHeaderContext();\n const {compactWidth, itemHeight} = getAsideHeaderDensityConfig(menuDensity);\n\n const widthVar = compact ? '--gn-aside-header-min-width' : '--gn-aside-header-size';\n\n const subheaderHeight = (1 + subheaderItemsCount) * itemHeight;\n\n return (\n <div\n className={b('aside')}\n style={{width: `var(${widthVar})`}}\n data-qa={qa}\n data-gn-aside-panel\n >\n <div\n className={b('aside-content', {\n 'with-decoration': headerDecoration,\n 'hide-section-dividers': hideSectionDividers,\n })}\n >\n <div className={b('header', {'with-decoration': headerDecoration})}>\n <div style={{height: subheaderHeight}} />\n <AsideDivider className={b('header-bottom-divider')} transitionId=\"header\" />\n {compact && headerDecoration ? (\n <Icon\n data={headerDividerCollapsedIcon}\n className={b('header-divider')}\n width={compactWidth}\n height={getAsideHeaderDecorationHeight(menuDensity)}\n />\n ) : null}\n </div>\n <div style={{flex: 1}} />\n </div>\n </div>\n );\n};\n"],"names":["React","headerDividerCollapsedIcon"],"mappings":";;;;;;;;AAiBa,MAAA,aAAa,GAAoB,CAAC,EAC3C,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,GAAG,CAAC,EACvB,EAAE,GACL,KAAI;IACD,MAAM,EAAC,OAAO,EAAE,WAAW,EAAC,GAAG,qBAAqB,EAAE;IACtD,MAAM,EAAC,YAAY,EAAE,UAAU,EAAC,GAAG,2BAA2B,CAAC,WAAW,CAAC;IAE3E,MAAM,QAAQ,GAAG,OAAO,GAAG,6BAA6B,GAAG,wBAAwB;IAEnF,MAAM,eAAe,GAAG,CAAC,CAAC,GAAG,mBAAmB,IAAI,UAAU;AAE9D,IAAA,QACIA,cACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EACrB,KAAK,EAAE,EAAC,KAAK,EAAE,CAAA,IAAA,EAAO,QAAQ,CAAG,CAAA,CAAA,EAAC,aACzB,EAAE,EAAA,qBAAA,EAAA,IAAA,EAAA;AAGX,QAAAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAE,CAAC,CAAC,eAAe,EAAE;AAC1B,gBAAA,iBAAiB,EAAE,gBAAgB;AACnC,gBAAA,uBAAuB,EAAE,mBAAmB;aAC/C,CAAC,EAAA;YAEFA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAC,iBAAiB,EAAE,gBAAgB,EAAC,CAAC,EAAA;AAC9D,gBAAAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAC,MAAM,EAAE,eAAe,EAAC,EAAI,CAAA;AACzC,gBAAAA,cAAA,CAAA,aAAA,CAAC,YAAY,EAAA,EAAC,SAAS,EAAE,CAAC,CAAC,uBAAuB,CAAC,EAAE,YAAY,EAAC,QAAQ,EAAG,CAAA;AAC5E,gBAAA,OAAO,IAAI,gBAAgB,IACxBA,cAAC,CAAA,aAAA,CAAA,IAAI,EACD,EAAA,IAAI,EAAEC,mBAA0B,EAChC,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAC9B,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,8BAA8B,CAAC,WAAW,CAAC,GACrD,IACF,IAAI,CACN;YACND,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,EAAC,IAAI,EAAE,CAAC,EAAC,EAAI,CAAA,CACvB,CACJ;AAEd;;;;"}
@@ -0,0 +1,80 @@
1
+ import React from 'react';
2
+ import { type CurrentSnapshot } from './currentIndicatorModel';
3
+ type Part = {
4
+ element: HTMLElement;
5
+ rect: DOMRect;
6
+ anchor: DOMRect;
7
+ opacity: number;
8
+ transform: string;
9
+ backgroundColor: string;
10
+ borderRadius: string;
11
+ clipPath: string;
12
+ clipRect?: DOMRect;
13
+ };
14
+ type Row = Part & {
15
+ icon?: Part;
16
+ title?: Part;
17
+ surface?: Part;
18
+ group?: string;
19
+ };
20
+ type Group = {
21
+ part: Part;
22
+ headerKey: string;
23
+ };
24
+ type Divider = Part & {
25
+ id: string;
26
+ group?: string;
27
+ };
28
+ type Snapshot = {
29
+ rows: Map<string, Row>;
30
+ groups: Map<string, Group>;
31
+ dividers: Map<string, Divider>;
32
+ width: number;
33
+ layoutWidth: number;
34
+ current?: CurrentSnapshot;
35
+ collapse?: {
36
+ element: HTMLElement;
37
+ y: number;
38
+ anchor: Element | null;
39
+ };
40
+ };
41
+ type Props = React.HTMLAttributes<HTMLDivElement> & {
42
+ compact: boolean;
43
+ compactTransition?: boolean;
44
+ };
45
+ type BeforeSnapshot = Snapshot & {
46
+ appearances: Map<Part, HTMLElement>;
47
+ };
48
+ /**
49
+ * FLIP boundary for the aside: snapshot before React mutates the DOM, then
50
+ * translate the target rows from their old positions before the browser paints.
51
+ * Text is never scaled and the actual target layout is present from the start.
52
+ * Departing rows/titles are decorative, inert copies, removed on animation finish.
53
+ */
54
+ export declare class AsideLayoutTransition extends React.Component<Props, Record<string, never>, BeforeSnapshot | null> {
55
+ private root;
56
+ private currentIndicator;
57
+ private currentIdentities;
58
+ private presentationObserver;
59
+ private animations;
60
+ private surfacePaint;
61
+ private overlay?;
62
+ private scrollOverlay?;
63
+ private animatedPanel?;
64
+ private departingRows;
65
+ private departingTitles;
66
+ private generation;
67
+ private pendingStart?;
68
+ private departingGroups;
69
+ private departingDividers;
70
+ getSnapshotBeforeUpdate(previous: Props): BeforeSnapshot | null;
71
+ componentDidUpdate(_previous: Props, _state: Record<string, never>, before: BeforeSnapshot | null): void;
72
+ componentWillUnmount(): void;
73
+ render(): React.JSX.Element;
74
+ private start;
75
+ private addGhost;
76
+ private cancel;
77
+ private cancelSurfacePaint;
78
+ private reconcileObservation;
79
+ }
80
+ export {};