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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/build/cjs/components/AsideHeader/AsideHeader.css +9 -1
  2. package/build/cjs/components/AsideHeader/AsideHeader.js +2 -2
  3. package/build/cjs/components/AsideHeader/AsideHeader.js.map +1 -1
  4. package/build/cjs/components/AsideHeader/AsideHeader.module.scss.js +1 -1
  5. package/build/cjs/components/AsideHeader/AsideHeaderContext.d.ts +5 -0
  6. package/build/cjs/components/AsideHeader/AsideHeaderContext.js +2 -0
  7. package/build/cjs/components/AsideHeader/AsideHeaderContext.js.map +1 -1
  8. package/build/cjs/components/AsideHeader/__playwright__/AsideTransitionExample.d.ts +8 -0
  9. package/build/cjs/components/AsideHeader/__playwright__/CollapseButtonExample.d.ts +14 -0
  10. package/build/cjs/components/AsideHeader/__playwright__/CompactTransitionExample.d.ts +12 -0
  11. package/build/cjs/components/AsideHeader/__playwright__/CurrentIndicatorExample.d.ts +20 -0
  12. package/build/cjs/components/AsideHeader/__playwright__/QuickAccessOverflowExample.d.ts +8 -0
  13. package/build/cjs/components/AsideHeader/__playwright__/currentIndicatorPaint.d.ts +21 -0
  14. package/build/cjs/components/AsideHeader/__playwright__/transitionTestUtils.d.ts +4 -0
  15. package/build/cjs/components/AsideHeader/__stories__/fullNavigationMoc.d.ts +6 -0
  16. package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js +2 -4
  17. package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js.map +1 -1
  18. package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/en.json.js +1 -3
  19. package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/en.json.js.map +1 -1
  20. package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/index.d.ts +4 -4
  21. package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/ru.json.js +2 -4
  22. package/build/cjs/components/AsideHeader/components/AllPagesPanel/i18n/ru.json.js.map +1 -1
  23. package/build/cjs/components/AsideHeader/components/AsideDivider.d.ts +7 -0
  24. package/build/cjs/components/AsideHeader/components/AsideDivider.js +13 -0
  25. package/build/cjs/components/AsideHeader/components/AsideDivider.js.map +1 -0
  26. package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.css +1 -1
  27. package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.d.ts +3 -1
  28. package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.js +12 -8
  29. package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.js.map +1 -1
  30. package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.module.scss.js +1 -1
  31. package/build/cjs/components/AsideHeader/components/CollapseButton/useCollapseAnchor.d.ts +20 -0
  32. package/build/cjs/components/AsideHeader/components/CollapseButton/useCollapseAnchor.js +170 -0
  33. package/build/cjs/components/AsideHeader/components/CollapseButton/useCollapseAnchor.js.map +1 -0
  34. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.css +3 -1
  35. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.d.ts +13 -2
  36. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.js +53 -39
  37. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.js.map +1 -1
  38. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.module.scss.js +1 -1
  39. package/build/cjs/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.css +1 -1
  40. package/build/cjs/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.js +4 -2
  41. package/build/cjs/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.js.map +1 -1
  42. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.css +33 -1
  43. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.js +158 -43
  44. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.js.map +1 -1
  45. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.module.scss.js +1 -1
  46. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.types.d.ts +22 -4
  47. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemPopup.d.ts +19 -0
  48. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemPopup.js +137 -20
  49. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemPopup.js.map +1 -1
  50. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.d.ts +7 -0
  51. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.js +25 -0
  52. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.js.map +1 -0
  53. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.d.ts +1 -1
  54. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.js +5 -1
  55. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.js.map +1 -1
  56. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.css +1 -1
  57. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.d.ts +4 -6
  58. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js +14 -5
  59. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js.map +1 -1
  60. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.module.scss.js +1 -1
  61. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.d.ts +8 -8
  62. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.js +68 -33
  63. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.js.map +1 -1
  64. package/build/cjs/components/AsideHeader/components/CompositeBar/constants.d.ts +1 -0
  65. package/build/cjs/components/AsideHeader/components/CompositeBar/constants.js +2 -0
  66. package/build/cjs/components/AsideHeader/components/CompositeBar/constants.js.map +1 -1
  67. package/build/cjs/components/AsideHeader/components/CompositeBar/presentationCurrent.d.ts +24 -0
  68. package/build/cjs/components/AsideHeader/components/CompositeBar/presentationCurrent.js +39 -0
  69. package/build/cjs/components/AsideHeader/components/CompositeBar/presentationCurrent.js.map +1 -0
  70. package/build/cjs/components/AsideHeader/components/CompositeBar/utils.d.ts +12 -7
  71. package/build/cjs/components/AsideHeader/components/CompositeBar/utils.js +42 -35
  72. package/build/cjs/components/AsideHeader/components/CompositeBar/utils.js.map +1 -1
  73. package/build/cjs/components/AsideHeader/components/FirstPanel.js +129 -10
  74. package/build/cjs/components/AsideHeader/components/FirstPanel.js.map +1 -1
  75. package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.css +1 -1
  76. package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.js +18 -2
  77. package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.js.map +1 -1
  78. package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.module.scss.js +1 -1
  79. package/build/cjs/components/AsideHeader/components/Header.js +7 -3
  80. package/build/cjs/components/AsideHeader/components/Header.js.map +1 -1
  81. package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.css +9 -1
  82. package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.d.ts +1 -0
  83. package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.js +13 -6
  84. package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.js.map +1 -1
  85. package/build/cjs/components/AsideHeader/components/PageLayout/AsideLayoutTransition.d.ts +80 -0
  86. package/build/cjs/components/AsideHeader/components/PageLayout/AsideLayoutTransition.js +600 -0
  87. package/build/cjs/components/AsideHeader/components/PageLayout/AsideLayoutTransition.js.map +1 -0
  88. package/build/cjs/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.d.ts +14 -0
  89. package/build/cjs/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.js +164 -0
  90. package/build/cjs/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.js.map +1 -0
  91. package/build/cjs/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.d.ts +14 -0
  92. package/build/cjs/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.js +94 -0
  93. package/build/cjs/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.js.map +1 -0
  94. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.css +9 -1
  95. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.d.ts +1 -1
  96. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.js +14 -5
  97. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.js.map +1 -1
  98. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.css +9 -1
  99. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.d.ts +1 -1
  100. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.js +5 -2
  101. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.js.map +1 -1
  102. package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorDom.d.ts +7 -0
  103. package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorDom.js +25 -0
  104. package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorDom.js.map +1 -0
  105. package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorModel.d.ts +25 -0
  106. package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorModel.js +89 -0
  107. package/build/cjs/components/AsideHeader/components/PageLayout/currentIndicatorModel.js.map +1 -0
  108. package/build/cjs/components/AsideHeader/components/Panels.js +2 -2
  109. package/build/cjs/components/AsideHeader/components/Panels.js.map +1 -1
  110. package/build/cjs/components/AsideHeader/density.d.ts +21 -0
  111. package/build/cjs/components/AsideHeader/density.js +61 -0
  112. package/build/cjs/components/AsideHeader/density.js.map +1 -0
  113. package/build/cjs/components/AsideHeader/i18n/__mocks__/index.d.ts +1 -0
  114. package/build/cjs/components/AsideHeader/i18n/en.json.js +10 -1
  115. package/build/cjs/components/AsideHeader/i18n/en.json.js.map +1 -1
  116. package/build/cjs/components/AsideHeader/i18n/index.d.ts +4 -4
  117. package/build/cjs/components/AsideHeader/i18n/ru.json.js +10 -1
  118. package/build/cjs/components/AsideHeader/i18n/ru.json.js.map +1 -1
  119. package/build/cjs/components/AsideHeader/index.d.ts +1 -0
  120. package/build/cjs/components/AsideHeader/quickAccess.d.ts +9 -0
  121. package/build/cjs/components/AsideHeader/quickAccess.js +31 -0
  122. package/build/cjs/components/AsideHeader/quickAccess.js.map +1 -0
  123. package/build/cjs/components/AsideHeader/types.d.ts +50 -5
  124. package/build/cjs/components/AsideHeader/types.js.map +1 -1
  125. package/build/cjs/components/AsideHeader/useAsideHeaderInnerContextValue.js +18 -3
  126. package/build/cjs/components/AsideHeader/useAsideHeaderInnerContextValue.js.map +1 -1
  127. package/build/cjs/components/AsideHeader/utils.d.ts +1 -0
  128. package/build/cjs/components/AsideHeader/utils.js +2 -0
  129. package/build/cjs/components/AsideHeader/utils.js.map +1 -1
  130. package/build/cjs/components/Footer/desktop/Footer.css +1 -1
  131. package/build/cjs/components/Footer/mobile/Footer.css +1 -1
  132. package/build/cjs/components/HotkeysPanel/HotkeysPanel.css +1 -1
  133. package/build/cjs/components/HotkeysPanel/HotkeysPanel.js +1 -1
  134. package/build/cjs/components/HotkeysPanel/HotkeysPanel.js.map +1 -1
  135. package/build/cjs/components/HotkeysPanel/HotkeysPanel.module.scss.js +1 -1
  136. package/build/cjs/components/Logo/Logo.css +1 -1
  137. package/build/cjs/components/Logo/Logo.d.ts +1 -0
  138. package/build/cjs/components/Logo/Logo.js +4 -4
  139. package/build/cjs/components/Logo/Logo.js.map +1 -1
  140. package/build/cjs/components/constants.d.ts +5 -0
  141. package/build/cjs/components/constants.js +6 -0
  142. package/build/cjs/components/constants.js.map +1 -1
  143. package/build/cjs/components/types.d.ts +4 -4
  144. package/build/docs/components/AsideHeader.md +234 -42
  145. package/build/esm/components/AsideHeader/AsideHeader.css +9 -1
  146. package/build/esm/components/AsideHeader/AsideHeader.js +2 -2
  147. package/build/esm/components/AsideHeader/AsideHeader.js.map +1 -1
  148. package/build/esm/components/AsideHeader/AsideHeader.module.scss.js +1 -1
  149. package/build/esm/components/AsideHeader/AsideHeaderContext.d.ts +5 -0
  150. package/build/esm/components/AsideHeader/AsideHeaderContext.js +2 -0
  151. package/build/esm/components/AsideHeader/AsideHeaderContext.js.map +1 -1
  152. package/build/esm/components/AsideHeader/__playwright__/AsideTransitionExample.d.ts +8 -0
  153. package/build/esm/components/AsideHeader/__playwright__/CollapseButtonExample.d.ts +14 -0
  154. package/build/esm/components/AsideHeader/__playwright__/CompactTransitionExample.d.ts +12 -0
  155. package/build/esm/components/AsideHeader/__playwright__/CurrentIndicatorExample.d.ts +20 -0
  156. package/build/esm/components/AsideHeader/__playwright__/QuickAccessOverflowExample.d.ts +8 -0
  157. package/build/esm/components/AsideHeader/__playwright__/currentIndicatorPaint.d.ts +21 -0
  158. package/build/esm/components/AsideHeader/__playwright__/transitionTestUtils.d.ts +4 -0
  159. package/build/esm/components/AsideHeader/__stories__/fullNavigationMoc.d.ts +6 -0
  160. package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js +3 -5
  161. package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesListItem/AllPagesListItem.js.map +1 -1
  162. package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/en.json.js +1 -3
  163. package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/en.json.js.map +1 -1
  164. package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/index.d.ts +4 -4
  165. package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/ru.json.js +2 -4
  166. package/build/esm/components/AsideHeader/components/AllPagesPanel/i18n/ru.json.js.map +1 -1
  167. package/build/esm/components/AsideHeader/components/AsideDivider.d.ts +7 -0
  168. package/build/esm/components/AsideHeader/components/AsideDivider.js +11 -0
  169. package/build/esm/components/AsideHeader/components/AsideDivider.js.map +1 -0
  170. package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.css +1 -1
  171. package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.d.ts +3 -1
  172. package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.js +12 -8
  173. package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.js.map +1 -1
  174. package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.module.scss.js +1 -1
  175. package/build/esm/components/AsideHeader/components/CollapseButton/useCollapseAnchor.d.ts +20 -0
  176. package/build/esm/components/AsideHeader/components/CollapseButton/useCollapseAnchor.js +167 -0
  177. package/build/esm/components/AsideHeader/components/CollapseButton/useCollapseAnchor.js.map +1 -0
  178. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.css +3 -1
  179. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.d.ts +13 -2
  180. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.js +54 -40
  181. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.js.map +1 -1
  182. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.module.scss.js +1 -1
  183. package/build/esm/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.css +1 -1
  184. package/build/esm/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.js +4 -2
  185. package/build/esm/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.js.map +1 -1
  186. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.css +33 -1
  187. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.js +161 -46
  188. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.js.map +1 -1
  189. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.module.scss.js +1 -1
  190. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.types.d.ts +22 -4
  191. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemPopup.d.ts +19 -0
  192. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemPopup.js +139 -23
  193. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemPopup.js.map +1 -1
  194. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.d.ts +7 -0
  195. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.js +23 -0
  196. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemQuickAccessPin.js.map +1 -0
  197. package/build/esm/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.d.ts +1 -1
  198. package/build/esm/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.js +5 -1
  199. package/build/esm/components/AsideHeader/components/CompositeBar/Item/renderItemTitle.js.map +1 -1
  200. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.css +1 -1
  201. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.d.ts +4 -6
  202. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js +15 -6
  203. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js.map +1 -1
  204. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.module.scss.js +1 -1
  205. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.d.ts +8 -8
  206. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.js +68 -33
  207. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.js.map +1 -1
  208. package/build/esm/components/AsideHeader/components/CompositeBar/constants.d.ts +1 -0
  209. package/build/esm/components/AsideHeader/components/CompositeBar/constants.js +2 -1
  210. package/build/esm/components/AsideHeader/components/CompositeBar/constants.js.map +1 -1
  211. package/build/esm/components/AsideHeader/components/CompositeBar/presentationCurrent.d.ts +24 -0
  212. package/build/esm/components/AsideHeader/components/CompositeBar/presentationCurrent.js +36 -0
  213. package/build/esm/components/AsideHeader/components/CompositeBar/presentationCurrent.js.map +1 -0
  214. package/build/esm/components/AsideHeader/components/CompositeBar/utils.d.ts +12 -7
  215. package/build/esm/components/AsideHeader/components/CompositeBar/utils.js +44 -35
  216. package/build/esm/components/AsideHeader/components/CompositeBar/utils.js.map +1 -1
  217. package/build/esm/components/AsideHeader/components/FirstPanel.js +131 -12
  218. package/build/esm/components/AsideHeader/components/FirstPanel.js.map +1 -1
  219. package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.css +1 -1
  220. package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.js +18 -2
  221. package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.js.map +1 -1
  222. package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.module.scss.js +1 -1
  223. package/build/esm/components/AsideHeader/components/Header.js +8 -4
  224. package/build/esm/components/AsideHeader/components/Header.js.map +1 -1
  225. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.css +9 -1
  226. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.d.ts +1 -0
  227. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.js +14 -7
  228. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.js.map +1 -1
  229. package/build/esm/components/AsideHeader/components/PageLayout/AsideLayoutTransition.d.ts +80 -0
  230. package/build/esm/components/AsideHeader/components/PageLayout/AsideLayoutTransition.js +598 -0
  231. package/build/esm/components/AsideHeader/components/PageLayout/AsideLayoutTransition.js.map +1 -0
  232. package/build/esm/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.d.ts +14 -0
  233. package/build/esm/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.js +162 -0
  234. package/build/esm/components/AsideHeader/components/PageLayout/CurrentIndicatorTransition.js.map +1 -0
  235. package/build/esm/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.d.ts +14 -0
  236. package/build/esm/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.js +92 -0
  237. package/build/esm/components/AsideHeader/components/PageLayout/CurrentPresentationObserver.js.map +1 -0
  238. package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.css +9 -1
  239. package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.d.ts +1 -1
  240. package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.js +15 -6
  241. package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.js.map +1 -1
  242. package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.css +9 -1
  243. package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.d.ts +1 -1
  244. package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.js +5 -2
  245. package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.js.map +1 -1
  246. package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorDom.d.ts +7 -0
  247. package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorDom.js +17 -0
  248. package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorDom.js.map +1 -0
  249. package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorModel.d.ts +25 -0
  250. package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorModel.js +84 -0
  251. package/build/esm/components/AsideHeader/components/PageLayout/currentIndicatorModel.js.map +1 -0
  252. package/build/esm/components/AsideHeader/components/Panels.js +3 -3
  253. package/build/esm/components/AsideHeader/components/Panels.js.map +1 -1
  254. package/build/esm/components/AsideHeader/density.d.ts +21 -0
  255. package/build/esm/components/AsideHeader/density.js +58 -0
  256. package/build/esm/components/AsideHeader/density.js.map +1 -0
  257. package/build/esm/components/AsideHeader/i18n/__mocks__/index.d.ts +1 -0
  258. package/build/esm/components/AsideHeader/i18n/en.json.js +8 -2
  259. package/build/esm/components/AsideHeader/i18n/en.json.js.map +1 -1
  260. package/build/esm/components/AsideHeader/i18n/index.d.ts +4 -4
  261. package/build/esm/components/AsideHeader/i18n/ru.json.js +8 -2
  262. package/build/esm/components/AsideHeader/i18n/ru.json.js.map +1 -1
  263. package/build/esm/components/AsideHeader/index.d.ts +1 -0
  264. package/build/esm/components/AsideHeader/quickAccess.d.ts +9 -0
  265. package/build/esm/components/AsideHeader/quickAccess.js +27 -0
  266. package/build/esm/components/AsideHeader/quickAccess.js.map +1 -0
  267. package/build/esm/components/AsideHeader/types.d.ts +50 -5
  268. package/build/esm/components/AsideHeader/types.js.map +1 -1
  269. package/build/esm/components/AsideHeader/useAsideHeaderInnerContextValue.js +18 -3
  270. package/build/esm/components/AsideHeader/useAsideHeaderInnerContextValue.js.map +1 -1
  271. package/build/esm/components/AsideHeader/utils.d.ts +1 -0
  272. package/build/esm/components/AsideHeader/utils.js +2 -1
  273. package/build/esm/components/AsideHeader/utils.js.map +1 -1
  274. package/build/esm/components/Footer/desktop/Footer.css +1 -1
  275. package/build/esm/components/Footer/mobile/Footer.css +1 -1
  276. package/build/esm/components/HotkeysPanel/HotkeysPanel.css +1 -1
  277. package/build/esm/components/HotkeysPanel/HotkeysPanel.js +1 -1
  278. package/build/esm/components/HotkeysPanel/HotkeysPanel.js.map +1 -1
  279. package/build/esm/components/HotkeysPanel/HotkeysPanel.module.scss.js +1 -1
  280. package/build/esm/components/Logo/Logo.css +1 -1
  281. package/build/esm/components/Logo/Logo.d.ts +1 -0
  282. package/build/esm/components/Logo/Logo.js +4 -4
  283. package/build/esm/components/Logo/Logo.js.map +1 -1
  284. package/build/esm/components/constants.d.ts +5 -0
  285. package/build/esm/components/constants.js +6 -1
  286. package/build/esm/components/constants.js.map +1 -1
  287. package/build/esm/components/types.d.ts +4 -4
  288. package/package.json +1 -1
  289. package/build/cjs/assets/icons/control-menu-button.svg.js +0 -41
  290. package/build/cjs/assets/icons/control-menu-button.svg.js.map +0 -1
  291. package/build/esm/assets/icons/control-menu-button.svg.js +0 -18
  292. package/build/esm/assets/icons/control-menu-button.svg.js.map +0 -1
@@ -0,0 +1,170 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+
5
+ const CollapseAnchorContext = React.createContext(undefined);
6
+ // offset geometry deliberately excludes the coordinator's in-flight transforms.
7
+ function layoutTop(element, panel) {
8
+ let top = 0;
9
+ let current = element;
10
+ while (current && current !== panel) {
11
+ top += current.offsetTop;
12
+ current = current.offsetParent;
13
+ }
14
+ // Fixed-position descendants can leave this offset chain. Never treat their
15
+ // partial viewport-relative offset as a position inside the aside.
16
+ return current === panel ? top : null;
17
+ }
18
+ function visible(element, footer) {
19
+ for (let current = element; current; current = current.parentElement) {
20
+ const style = getComputedStyle(current);
21
+ if (current.hidden ||
22
+ style.display === 'none' ||
23
+ style.visibility === 'hidden' ||
24
+ style.visibility === 'collapse')
25
+ return false;
26
+ if (current === footer)
27
+ return true;
28
+ }
29
+ return false;
30
+ }
31
+ function useCollapseAnchor(enabled, compact) {
32
+ var _a;
33
+ const panelRef = React.useRef(null);
34
+ const footerRef = React.useRef(null);
35
+ const slotRef = React.useRef(null);
36
+ const fallbackRef = React.useRef(null);
37
+ const rows = React.useRef(new Map());
38
+ const reconcileRef = React.useRef();
39
+ const [selection, setSelection] = React.useState(null);
40
+ const selectionRef = React.useRef(null);
41
+ const register = React.useCallback((element, id) => {
42
+ var _a;
43
+ rows.current.set(element, id);
44
+ (_a = reconcileRef.current) === null || _a === undefined ? undefined : _a.call(reconcileRef);
45
+ return () => {
46
+ var _a;
47
+ rows.current.delete(element);
48
+ (_a = reconcileRef.current) === null || _a === undefined ? undefined : _a.call(reconcileRef);
49
+ };
50
+ }, []);
51
+ React.useLayoutEffect(() => {
52
+ if (!enabled || !panelRef.current || !footerRef.current) {
53
+ setSelection(null);
54
+ return undefined;
55
+ }
56
+ const panel = panelRef.current;
57
+ const footer = footerRef.current;
58
+ const heights = new WeakMap();
59
+ const resize = typeof ResizeObserver === 'undefined' ? undefined : new ResizeObserver(handleResize);
60
+ const measure = () => {
61
+ var _a, _b;
62
+ const row = (_b = (_a = selectionRef.current) === null || _a === undefined ? undefined : _a.element) !== null && _b !== undefined ? _b : fallbackRef.current;
63
+ const slot = slotRef.current;
64
+ if (!row || !slot)
65
+ return;
66
+ const rowTop = layoutTop(row, panel);
67
+ if (rowTop === null) {
68
+ slot.style.removeProperty('top');
69
+ slot.style.removeProperty('bottom');
70
+ return;
71
+ }
72
+ const top = rowTop + (row.offsetHeight - slot.offsetHeight) / 2;
73
+ slot.style.top = `${top}px`;
74
+ slot.style.bottom = 'auto';
75
+ };
76
+ function reconcile() {
77
+ var _a, _b, _c, _d, _e;
78
+ let last = null;
79
+ rows.current.forEach((_id, row) => {
80
+ if (!footer.contains(row) || !visible(row, footer))
81
+ return;
82
+ // DOM order can change without registration order changing.
83
+ // eslint-disable-next-line no-bitwise
84
+ if (!last || last.compareDocumentPosition(row) & Node.DOCUMENT_POSITION_FOLLOWING)
85
+ last = row;
86
+ });
87
+ const id = last ? rows.current.get(last) : undefined;
88
+ if (last !== ((_b = (_a = selectionRef.current) === null || _a === undefined ? undefined : _a.element) !== null && _b !== undefined ? _b : null) ||
89
+ id !== ((_c = selectionRef.current) === null || _c === undefined ? undefined : _c.id)) {
90
+ if (selectionRef.current) {
91
+ resize === null || resize === undefined ? undefined : resize.unobserve(selectionRef.current.element);
92
+ selectionRef.current.element.removeAttribute('data-gn-collapse-anchor');
93
+ }
94
+ // Changing the anchor invalidates only the slot's Y effect.
95
+ (_e = (_d = slotRef.current) === null || _d === undefined ? undefined : _d.getAnimations) === null || _e === undefined ? undefined : _e.call(_d).forEach((animation) => {
96
+ if (!('transitionProperty' in animation))
97
+ animation.cancel();
98
+ });
99
+ const next = last && id ? { element: last, id } : null;
100
+ selectionRef.current = next;
101
+ if (next) {
102
+ next.element.setAttribute('data-gn-collapse-anchor', '');
103
+ resize === null || resize === undefined ? undefined : resize.observe(next.element);
104
+ }
105
+ setSelection(next);
106
+ }
107
+ measure();
108
+ }
109
+ function handleResize(entries) {
110
+ let heightChanged = false;
111
+ entries.forEach(({ target, contentRect }) => {
112
+ if (heights.get(target) !== contentRect.height)
113
+ heightChanged = true;
114
+ heights.set(target, contentRect.height);
115
+ });
116
+ // The flex layout tracks horizontal movement. Only a height change
117
+ // requires vertical measurement during the compact width transition.
118
+ if (entries.length && !heightChanged && panel.hasAttribute('data-gn-aside-animating'))
119
+ return;
120
+ // Idle resizes may change CSS visibility without a DOM mutation.
121
+ reconcile();
122
+ }
123
+ resize === null || resize === undefined ? undefined : resize.observe(panel);
124
+ resize === null || resize === undefined ? undefined : resize.observe(footer);
125
+ reconcileRef.current = reconcile;
126
+ reconcile();
127
+ const finishWidthTransition = (event) => {
128
+ if (event.target === panel && event.propertyName === 'width')
129
+ reconcile();
130
+ };
131
+ // Recheck CSS-only visibility after the width-only notifications skipped
132
+ // above, even when the last resize precedes the coordinator's cleanup.
133
+ panel.addEventListener('transitionend', finishWidthTransition);
134
+ panel.addEventListener('transitioncancel', finishWidthTransition);
135
+ const mutations = new MutationObserver(reconcile);
136
+ mutations.observe(footer, {
137
+ subtree: true,
138
+ childList: true,
139
+ attributes: true,
140
+ attributeFilter: ['hidden', 'style', 'class'],
141
+ });
142
+ return () => {
143
+ var _a;
144
+ reconcileRef.current = undefined;
145
+ resize === null || resize === undefined ? undefined : resize.disconnect();
146
+ mutations.disconnect();
147
+ panel.removeEventListener('transitionend', finishWidthTransition);
148
+ panel.removeEventListener('transitioncancel', finishWidthTransition);
149
+ (_a = selectionRef.current) === null || _a === undefined ? undefined : _a.element.removeAttribute('data-gn-collapse-anchor');
150
+ selectionRef.current = null;
151
+ };
152
+ }, [enabled]);
153
+ React.useLayoutEffect(() => {
154
+ var _a;
155
+ (_a = reconcileRef.current) === null || _a === undefined ? undefined : _a.call(reconcileRef);
156
+ });
157
+ const context = React.useMemo(() => (enabled ? { register, selectedId: selection === null || selection === undefined ? undefined : selection.id, compact } : undefined), [enabled, register, selection, compact]);
158
+ return {
159
+ panelRef,
160
+ footerRef,
161
+ slotRef,
162
+ fallbackRef,
163
+ selected: (_a = selection === null || selection === undefined ? undefined : selection.element) !== null && _a !== undefined ? _a : null,
164
+ context,
165
+ };
166
+ }
167
+
168
+ exports.CollapseAnchorContext = CollapseAnchorContext;
169
+ exports.useCollapseAnchor = useCollapseAnchor;
170
+ //# sourceMappingURL=useCollapseAnchor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCollapseAnchor.js","sources":["../../../../../../../src/components/AsideHeader/components/CollapseButton/useCollapseAnchor.tsx"],"sourcesContent":["import React from 'react';\n\ninterface Registration {\n register: (element: HTMLElement, id: symbol) => () => void;\n selectedId: symbol | undefined;\n compact: boolean;\n}\n\ninterface Selection {\n element: HTMLElement;\n id: symbol;\n}\n\nexport const CollapseAnchorContext = React.createContext<Registration | undefined>(undefined);\n\n// offset geometry deliberately excludes the coordinator's in-flight transforms.\nfunction layoutTop(element: HTMLElement, panel: HTMLElement) {\n let top = 0;\n let current: HTMLElement | null = element;\n while (current && current !== panel) {\n top += current.offsetTop;\n current = current.offsetParent as HTMLElement | null;\n }\n // Fixed-position descendants can leave this offset chain. Never treat their\n // partial viewport-relative offset as a position inside the aside.\n return current === panel ? top : null;\n}\n\nfunction visible(element: HTMLElement, footer: HTMLElement) {\n for (let current: HTMLElement | null = element; current; current = current.parentElement) {\n const style = getComputedStyle(current);\n if (\n current.hidden ||\n style.display === 'none' ||\n style.visibility === 'hidden' ||\n style.visibility === 'collapse'\n )\n return false;\n if (current === footer) return true;\n }\n return false;\n}\n\nexport function useCollapseAnchor(enabled: boolean, compact: boolean) {\n const panelRef = React.useRef<HTMLDivElement>(null);\n const footerRef = React.useRef<HTMLDivElement>(null);\n const slotRef = React.useRef<HTMLDivElement>(null);\n const fallbackRef = React.useRef<HTMLDivElement>(null);\n const rows = React.useRef(new Map<HTMLElement, symbol>());\n const reconcileRef = React.useRef<() => void>();\n const [selection, setSelection] = React.useState<Selection | null>(null);\n const selectionRef = React.useRef<Selection | null>(null);\n const register = React.useCallback((element: HTMLElement, id: symbol) => {\n rows.current.set(element, id);\n reconcileRef.current?.();\n return () => {\n rows.current.delete(element);\n reconcileRef.current?.();\n };\n }, []);\n\n React.useLayoutEffect(() => {\n if (!enabled || !panelRef.current || !footerRef.current) {\n setSelection(null);\n return undefined;\n }\n const panel = panelRef.current;\n const footer = footerRef.current;\n const heights = new WeakMap<Element, number>();\n const resize =\n typeof ResizeObserver === 'undefined' ? undefined : new ResizeObserver(handleResize);\n const measure = () => {\n const row = selectionRef.current?.element ?? fallbackRef.current;\n const slot = slotRef.current;\n if (!row || !slot) return;\n const rowTop = layoutTop(row, panel);\n if (rowTop === null) {\n slot.style.removeProperty('top');\n slot.style.removeProperty('bottom');\n return;\n }\n const top = rowTop + (row.offsetHeight - slot.offsetHeight) / 2;\n slot.style.top = `${top}px`;\n slot.style.bottom = 'auto';\n };\n function reconcile() {\n let last: HTMLElement | null = null;\n rows.current.forEach((_id, row) => {\n if (!footer.contains(row) || !visible(row, footer)) return;\n // DOM order can change without registration order changing.\n // eslint-disable-next-line no-bitwise\n if (!last || last.compareDocumentPosition(row) & Node.DOCUMENT_POSITION_FOLLOWING)\n last = row;\n });\n const id = last ? rows.current.get(last) : undefined;\n if (\n last !== (selectionRef.current?.element ?? null) ||\n id !== selectionRef.current?.id\n ) {\n if (selectionRef.current) {\n resize?.unobserve(selectionRef.current.element);\n selectionRef.current.element.removeAttribute('data-gn-collapse-anchor');\n }\n // Changing the anchor invalidates only the slot's Y effect.\n slotRef.current?.getAnimations?.().forEach((animation) => {\n if (!('transitionProperty' in animation)) animation.cancel();\n });\n const next: Selection | null = last && id ? {element: last, id} : null;\n selectionRef.current = next;\n if (next) {\n next.element.setAttribute('data-gn-collapse-anchor', '');\n resize?.observe(next.element);\n }\n setSelection(next);\n }\n measure();\n }\n function handleResize(entries: ResizeObserverEntry[]) {\n let heightChanged = false;\n entries.forEach(({target, contentRect}) => {\n if (heights.get(target) !== contentRect.height) heightChanged = true;\n heights.set(target, contentRect.height);\n });\n // The flex layout tracks horizontal movement. Only a height change\n // requires vertical measurement during the compact width transition.\n if (entries.length && !heightChanged && panel.hasAttribute('data-gn-aside-animating'))\n return;\n // Idle resizes may change CSS visibility without a DOM mutation.\n reconcile();\n }\n resize?.observe(panel);\n resize?.observe(footer);\n reconcileRef.current = reconcile;\n reconcile();\n const finishWidthTransition = (event: TransitionEvent) => {\n if (event.target === panel && event.propertyName === 'width') reconcile();\n };\n // Recheck CSS-only visibility after the width-only notifications skipped\n // above, even when the last resize precedes the coordinator's cleanup.\n panel.addEventListener('transitionend', finishWidthTransition);\n panel.addEventListener('transitioncancel', finishWidthTransition);\n const mutations = new MutationObserver(reconcile);\n mutations.observe(footer, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: ['hidden', 'style', 'class'],\n });\n return () => {\n reconcileRef.current = undefined;\n resize?.disconnect();\n mutations.disconnect();\n panel.removeEventListener('transitionend', finishWidthTransition);\n panel.removeEventListener('transitioncancel', finishWidthTransition);\n selectionRef.current?.element.removeAttribute('data-gn-collapse-anchor');\n selectionRef.current = null;\n };\n }, [enabled]);\n React.useLayoutEffect(() => {\n reconcileRef.current?.();\n });\n const context = React.useMemo(\n () => (enabled ? {register, selectedId: selection?.id, compact} : undefined),\n [enabled, register, selection, compact],\n );\n return {\n panelRef,\n footerRef,\n slotRef,\n fallbackRef,\n selected: selection?.element ?? null,\n context,\n };\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1,3 @@
1
- .CompositeBar-module__gn-composite-bar___WoCDY{flex:1 0 auto;min-height:40px;width:100%}.CompositeBar-module__gn-composite-bar___WoCDY .CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF[class]{background-color:transparent}.CompositeBar-module__gn-composite-bar__menu-group___3hCzS{display:flex;flex-direction:column;width:100%}.CompositeBar-module__gn-composite-bar__menu-group-header___Yvr21[class]{box-sizing:border-box;flex:0 0 auto;min-height:40px;width:100%}.CompositeBar-module__gn-composite-bar__menu-group-nested-item___9gea-[class]{padding-inline-start:var(--g-spacing-3);position:relative}.CompositeBar-module__gn-composite-bar__menu-group-nested-list-item___-IygH[class]{background-color:transparent;overflow:visible;position:relative}.CompositeBar-module__gn-composite-bar__menu-group-nested-connector___uiegb{box-sizing:content-box;display:flex;pointer-events:none;position:relative;width:16px}.CompositeBar-module__gn-composite-bar__menu-group-nested-connector___uiegb:before{background:var(--gn-aside-header-menu-group-tree-line-color,#c1c3c7);bottom:0;content:"";height:100%;inset-inline-start:calc(50% - .5px);pointer-events:none;position:absolute;top:0;width:1px}.CompositeBar-module__gn-composite-bar__menu-group-nested-connector_spine-active___qVoAX:before{background:var(--gn-aside-header-menu-group-tree-line-active-color,var(--g-color-base-brand));z-index:1}.CompositeBar-module__gn-composite-bar__menu-group-nested-list-item___-IygH:last-child .CompositeBar-module__gn-composite-bar__menu-group-nested-connector___uiegb:before{display:none}.CompositeBar-module__gn-composite-bar__menu-group-nested-tree-svg___FJny7{fill:none;stroke:var(--gn-aside-header-menu-group-tree-line-color,#c1c3c7);display:block;flex-shrink:0;height:40px;max-width:16px;min-width:16px;position:relative}.CompositeBar-module__gn-composite-bar__menu-group-nested-tree-svg_active___Gmthf{stroke:var(--gn-aside-header-menu-group-tree-line-active-color,var(--g-color-base-brand))}.CompositeBar-module__gn-composite-bar__menu-group-nested-row-inner___jJLTe{height:100%;min-width:0;width:100%}
1
+ .CompositeBar-module__gn-composite-bar___WoCDY{--_--menu-group-tree-connector-width:16px;--_--menu-item-gap:0px;flex:1 0 auto;min-height:var(--_--gn-aside-header-density-item-height,40px);width:100%}.CompositeBar-module__gn-composite-bar___WoCDY .CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF[class]{background-color:transparent}.CompositeBar-module__gn-composite-bar_inline-groups___BsraQ .CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF[class], .CompositeBar-module__gn-composite-bar_quick-access___zNlSe .CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF[class]{background:none;box-sizing:border-box;overflow:visible;padding-block-end:var(--_--menu-item-gap);position:relative}.CompositeBar-module__gn-composite-bar_inline-groups___BsraQ .CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF[class].g-list__item_active, .CompositeBar-module__gn-composite-bar_inline-groups___BsraQ .CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF[class].g-list__item_active.g-list__item_selected, .CompositeBar-module__gn-composite-bar_inline-groups___BsraQ .CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF[class].g-list__item_selected, .CompositeBar-module__gn-composite-bar_quick-access___zNlSe .CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF[class].g-list__item_active, .CompositeBar-module__gn-composite-bar_quick-access___zNlSe .CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF[class].g-list__item_active.g-list__item_selected, .CompositeBar-module__gn-composite-bar_quick-access___zNlSe .CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF[class].g-list__item_selected{background:none}.CompositeBar-module__gn-composite-bar_inline-groups___BsraQ{--_--menu-item-gap:1px}.CompositeBar-module__gn-composite-bar_quick-access___zNlSe{--_--menu-item-gap:1px;--gn-aside-header-item-icon-color:var(
2
+ --gn-aside-header-general-item-icon-color,var(--g-color-text-primary)
3
+ );flex:none}.CompositeBar-module__gn-composite-bar__menu-group___3hCzS{display:flex;flex-direction:column;width:100%}.CompositeBar-module__gn-composite-bar__menu-group-header___Yvr21[class]{box-sizing:border-box;flex:0 0 auto;min-height:var(--_--gn-aside-header-density-item-height,40px);width:100%}.CompositeBar-module__gn-composite-bar__menu-group-nested-item___9gea-[class]{position:relative}.CompositeBar-module__gn-composite-bar__menu-group-nested-item___9gea-[class] .CompositeBar-module__gn-composite-bar__menu-group-nested-connector___uiegb{inset-block:0;inset-inline-start:calc(var(--_--gn-aside-header-density-item-height, 40px)/2 - 8px);position:absolute}.CompositeBar-module__gn-composite-bar__menu-group-nested-list-item___-IygH[class]>.g-list__item-content{overflow:visible}.CompositeBar-module__gn-composite-bar__menu-group-nested-list-item___-IygH[class]{background-color:transparent;box-sizing:border-box;overflow:visible;padding-block-end:var(--_--menu-item-gap);position:relative}.CompositeBar-module__gn-composite-bar__menu-group-nested-list-item___-IygH[class].g-list__item_active, .CompositeBar-module__gn-composite-bar__menu-group-nested-list-item___-IygH[class].g-list__item_active.g-list__item_selected, .CompositeBar-module__gn-composite-bar__menu-group-nested-list-item___-IygH[class].g-list__item_selected{background-color:transparent}.CompositeBar-module__gn-composite-bar__menu-group-nested-list-item___-IygH:not(:last-child) .CompositeBar-module__gn-composite-bar__menu-group-nested-connector___uiegb:after{background:var(--gn-aside-header-menu-group-tree-line-color,#c1c3c7);bottom:calc(var(--_--menu-item-gap)*-1);content:"";inset-inline-start:calc(50% - .5px);pointer-events:none;position:absolute;top:0;width:1px;z-index:-1}.CompositeBar-module__gn-composite-bar__menu-group-nested-connector___uiegb{box-sizing:content-box;display:flex;isolation:isolate;overflow:visible;pointer-events:none;position:relative;width:16px}.CompositeBar-module__gn-composite-bar__menu-group-nested-connector_spine-active___qVoAX:before{background:var(--gn-aside-header-menu-group-tree-line-active-color,var(--g-color-base-brand));bottom:calc(var(--_--menu-item-gap)*-1);content:"";inset-inline-start:calc(50% - .5px);pointer-events:none;position:absolute;top:0;width:1px;z-index:1}.CompositeBar-module__gn-composite-bar__menu-group-nested-tree-svg___FJny7{fill:none;stroke:var(--gn-aside-header-menu-group-tree-line-color,#c1c3c7);display:block;flex-shrink:0;height:var(--_--gn-aside-header-density-item-height,40px);inset-block-start:calc(var(--_--menu-group-tree-connector-hook-inset-block, 50%) - var(--_--gn-aside-header-density-item-height, 40px)/2);inset-inline-start:0;max-width:16px;min-width:16px;position:absolute}.CompositeBar-module__gn-composite-bar__menu-group-nested-tree-svg_active___Gmthf{stroke:var(--gn-aside-header-menu-group-tree-line-active-color,var(--g-color-base-brand))}[dir=rtl] .CompositeBar-module__gn-composite-bar__menu-group-nested-tree-svg___FJny7{transform:scaleX(-1)}.CompositeBar-module__gn-composite-bar__menu-group-nested-row-inner___jJLTe{height:100%;min-width:0;width:100%}
@@ -1,10 +1,10 @@
1
1
  import React, { FC } from 'react';
2
2
  import { MenuGroup } from '../../../types';
3
3
  import { AsideHeaderItem, AsideHeaderMenuOverflow } from '../../types';
4
+ import { QuickAccessToggleHandler } from './Item/Item.types';
4
5
  type CompositeBarProps = {
5
- type: 'menu' | 'subheader';
6
+ type: 'menu' | 'subheader' | 'quick-access';
6
7
  items: AsideHeaderItem[];
7
- className?: string;
8
8
  menuGroups?: MenuGroup[];
9
9
  onItemClick?: (item: AsideHeaderItem, collapsed: boolean, event: React.MouseEvent<HTMLElement, MouseEvent>) => void;
10
10
  menuMoreTitle?: string;
@@ -12,6 +12,13 @@ type CompositeBarProps = {
12
12
  compact: boolean;
13
13
  compositeId?: string;
14
14
  menuItemClassName?: string;
15
+ /**
16
+ * Target width of the autosized menu content, used before AutoSizer catches
17
+ * up with a layout transition. FirstPanel passes the aside width because
18
+ * the menu container spans it fully and horizontal spacing belongs to rows.
19
+ * If the container gains horizontal insets, pass its available content width.
20
+ */
21
+ layoutWidth?: number;
15
22
  /**
16
23
  * @see AsideHeaderMenuOverflow
17
24
  */
@@ -19,6 +26,10 @@ type CompositeBarProps = {
19
26
  collapsedMenuGroupIds?: Record<string, boolean>;
20
27
  defaultCollapsedMenuGroupIds?: Record<string, boolean>;
21
28
  onToggleMenuGroupCollapsed?: (groupId: string) => void;
29
+ enableQuickAccessPin?: boolean;
30
+ onToggleQuickAccess?: QuickAccessToggleHandler;
31
+ suppressCurrentItemIds?: ReadonlySet<string>;
32
+ menuGroupNestedIcons?: boolean;
22
33
  };
23
34
  export declare const CompositeBar: FC<CompositeBarProps>;
24
35
  export {};
@@ -5,24 +5,32 @@ var React = require('react');
5
5
  var uikit = require('@gravity-ui/uikit');
6
6
  var AutoSizer = require('react-virtualized-auto-sizer');
7
7
  var cn = require('../../../utils/cn.js');
8
+ var AsideHeaderContext = require('../../AsideHeaderContext.js');
8
9
  var Item = require('./Item/Item.js');
9
- var ScrollableWithScrollbar = require('./ScrollableWithScrollbar/ScrollableWithScrollbar.js');
10
10
  var constants = require('./constants.js');
11
11
  var grouping = require('./grouping.js');
12
+ var presentationCurrent = require('./presentationCurrent.js');
12
13
  var utils = require('./utils.js');
13
14
  var CompositeBar_module = require('./CompositeBar.module.scss.js');
14
15
 
15
16
  const b = cn.createBlock('composite-bar', CompositeBar_module.default);
16
17
  /** Row L-connector: vertical segment + rounded hook. viewBox matches `variables.$item-height`. */
17
18
  const MENU_GROUP_NESTED_TREE_CONNECTOR_PATH = 'M8.03125 0V10.07935C8.03125 15.558375 11.5846 20 15.9678 20';
18
- const CompositeBarView = ({ type, rows, onItemClick, onMoreClick, collapseItems, compact, compositeId, menuItemClassName, inlineGroupChildren, isGroupCollapsed, onToggleGroupCollapsed, }) => {
19
+ const CompositeBarView = ({ type, rows, onItemClick, onMoreClick, collapseItems, compact, compositeId, menuItemClassName, inlineGroupChildren, isGroupCollapsed, onToggleGroupCollapsed, enableQuickAccessPin, onToggleQuickAccess, suppressCurrentItemIds, menuGroupNestedIcons = true, }) => {
19
20
  const ref = React.useRef(null);
21
+ const { menuDensity } = AsideHeaderContext.useAsideHeaderContext();
22
+ const hideNestedIcons = !menuGroupNestedIcons;
23
+ const itemLayout = React.useMemo(() => (compact ? { sidebarCompact: true } : undefined), [compact]);
20
24
  const onMouseLeave = React.useCallback(() => {
21
25
  var _a;
22
26
  if (compact && document.hasFocus()) {
23
- (_a = ref.current) === null || _a === undefined ? undefined : _a.activateItem(undefined);
27
+ (_a = ref.current) === null || _a === undefined ? undefined : _a.activateItem();
24
28
  }
25
29
  }, [compact]);
30
+ const deactivateParentListItem = React.useCallback(() => {
31
+ var _a;
32
+ (_a = ref.current) === null || _a === undefined ? undefined : _a.activateItem();
33
+ }, []);
26
34
  const onPopupItemClick = React.useCallback((item, collapsed, event) => {
27
35
  onItemClick === null || onItemClick === undefined ? undefined : onItemClick(item, collapsed, event);
28
36
  }, [onItemClick]);
@@ -36,16 +44,24 @@ const CompositeBarView = ({ type, rows, onItemClick, onMoreClick, collapseItems,
36
44
  }, [onItemClick, onMoreClick]);
37
45
  const itemHeight = React.useCallback((row) => {
38
46
  if (row.kind === 'item') {
39
- return utils.getItemHeight(row.item);
47
+ return utils.getItemHeight(row.item, menuDensity, itemLayout);
40
48
  }
41
- const headerH = utils.getItemHeight(utils.makeGroupHeaderAsideItem(row.group));
49
+ const headerH = utils.getItemHeight(utils.makeGroupHeaderAsideItem(row.group), menuDensity, itemLayout);
42
50
  if (!inlineGroupChildren || isGroupCollapsed(row.group.id)) {
43
51
  return headerH;
44
52
  }
45
- return headerH + utils.getItemsHeight(row.items);
46
- }, [inlineGroupChildren, isGroupCollapsed]);
53
+ return headerH + utils.getItemsHeight(row.items, menuDensity, itemLayout);
54
+ }, [inlineGroupChildren, isGroupCollapsed, itemLayout, menuDensity]);
55
+ const nestedItemHeight = React.useCallback((item) => utils.getItemHeight(item, menuDensity, itemLayout), [itemLayout, menuDensity]);
56
+ const nestedItemsHeight = React.useCallback((listItems) => utils.getItemsHeight(listItems, menuDensity, itemLayout), [itemLayout, menuDensity]);
47
57
  const itemsHeight = React.useCallback((listRows) => listRows.reduce((sum, row) => sum + itemHeight(row), 0), [itemHeight]);
48
- return (React.createElement(uikit.List, { id: compositeId, ref: ref, items: rows, selectedItemIndex: type === 'menu' ? utils.getSelectedCompositeBarRowIndex(rows) : undefined, itemHeight: itemHeight, itemsHeight: itemsHeight, itemClassName: b('root-menu-item', menuItemClassName), virtualized: false, filterable: false, sortable: false, renderItem: (row) => {
58
+ const selectedRootItemIndex = React.useMemo(() => {
59
+ if (type !== 'menu') {
60
+ return undefined;
61
+ }
62
+ return utils.getSelectedCompositeBarRowIndex(rows, suppressCurrentItemIds);
63
+ }, [rows, suppressCurrentItemIds, type]);
64
+ return (React.createElement(uikit.List, { id: compositeId, ref: ref, className: inlineGroupChildren ? b({ 'inline-groups': true }) : undefined, items: rows, selectedItemIndex: selectedRootItemIndex, itemHeight: itemHeight, itemsHeight: itemsHeight, itemClassName: b('root-menu-item', menuItemClassName), virtualized: false, filterable: false, sortable: false, renderItem: (row) => {
49
65
  if (row.kind === 'item') {
50
66
  const item = row.item;
51
67
  let menuPopupItems;
@@ -57,48 +73,50 @@ const CompositeBarView = ({ type, rows, onItemClick, onMoreClick, collapseItems,
57
73
  menuPopupItems = item.compositeBarMenuPopupItems;
58
74
  menuPopupTitle = item.compositeBarMenuPopupTitle;
59
75
  }
60
- return (React.createElement(Item.Item, Object.assign({}, item, { compact: compact, popupItemClassName: menuItemClassName, menuPopupItems: menuPopupItems, menuPopupTitle: menuPopupTitle, onMouseLeave: onMouseLeave, onPopupItemClick: onPopupItemClick, onItemClick: onItemClickByIndex(item.onItemClick) })));
76
+ return (React.createElement(Item.Item, Object.assign({}, item, { compact: compact, popupItemClassName: menuItemClassName, menuPopupItems: menuPopupItems, menuPopupTitle: menuPopupTitle, menuPopupNestedHideIcon: hideNestedIcons, onMouseLeave: onMouseLeave, onPopupItemClick: onPopupItemClick, onItemClick: onItemClickByIndex(item.onItemClick), suppressCurrentItemIds: suppressCurrentItemIds, enableQuickAccessPin: enableQuickAccessPin, quickAccessPinItem: item, onToggleQuickAccess: onToggleQuickAccess })));
61
77
  }
62
78
  const headerItem = utils.makeGroupHeaderAsideItem(row.group);
63
79
  const groupIsCollapsed = isGroupCollapsed(row.group.id);
64
80
  const groupHasOwnAction = Boolean(row.group.onItemClick || row.group.href);
65
81
  const onHeaderItemClick = onItemClickByIndex(row.group.onItemClick);
66
82
  if (!inlineGroupChildren) {
67
- return (React.createElement(Item.Item, Object.assign({}, headerItem, { href: row.group.href, compact: compact, popupItemClassName: menuItemClassName, menuPopupItems: row.items, menuPopupTitle: row.group.popupTitle, className: b('menu-group-header'), hideCompactChevron: row.group.hideCompactChevron, onMouseLeave: onMouseLeave, onPopupItemClick: onPopupItemClick, onItemClick: onHeaderItemClick })));
83
+ return (React.createElement(Item.Item, Object.assign({}, headerItem, { href: row.group.href, compact: compact, popupItemClassName: menuItemClassName, menuPopupItems: row.items, menuPopupTitle: row.group.popupTitle, menuPopupHideIcon: hideNestedIcons, className: b('menu-group-header'), onMouseLeave: onMouseLeave, onPopupItemClick: onPopupItemClick, onItemClick: onHeaderItemClick, suppressCurrentItemIds: suppressCurrentItemIds, enableQuickAccessPin: enableQuickAccessPin, onToggleQuickAccess: onToggleQuickAccess })));
68
84
  }
69
- const selectedItemIndex = utils.getSelectedItemIndex(row.items);
70
- return (React.createElement("div", { className: b('menu-group', {
85
+ const selectedItemIndex = row.items.findIndex((item) => presentationCurrent.isItemPresentationCurrent(item, { suppressCurrentItemIds }));
86
+ const normalizedSelectedItemIndex = selectedItemIndex === -1 ? undefined : selectedItemIndex;
87
+ return (React.createElement("div", { "data-gn-aside-group": row.group.id, className: b('menu-group', {
71
88
  expanded: !groupIsCollapsed,
72
89
  collapsed: groupIsCollapsed,
73
- }) },
74
- React.createElement(Item.Item, Object.assign({}, headerItem, { href: row.group.href, compact: compact, popupItemClassName: menuItemClassName, className: b('menu-group-header'), groupHeaderExpanded: !groupIsCollapsed, onMouseLeave: onMouseLeave, onGroupHeaderChevronClick: groupHasOwnAction
90
+ }), onMouseEnter: deactivateParentListItem },
91
+ React.createElement(Item.Item, Object.assign({}, headerItem, { href: row.group.href, compact: compact, popupItemClassName: menuItemClassName, className: b('menu-group-header'), groupHeaderExpanded: !groupIsCollapsed, menuPopupItems: groupIsCollapsed ? row.items : undefined, menuPopupTitle: groupIsCollapsed ? row.group.popupTitle : undefined, menuPopupHideIcon: hideNestedIcons, onMouseLeave: onMouseLeave, onPopupItemClick: onPopupItemClick, onGroupHeaderChevronClick: groupHasOwnAction
75
92
  ? () => onToggleGroupCollapsed(row.group.id)
76
93
  : undefined, onItemClick: (item, isItemCollapsed, event) => {
77
94
  if (!groupHasOwnAction) {
78
95
  onToggleGroupCollapsed(row.group.id);
79
96
  }
80
97
  onHeaderItemClick(item, isItemCollapsed, event);
81
- } })),
82
- !groupIsCollapsed && (React.createElement(uikit.List, { items: row.items, selectedItemIndex: selectedItemIndex, itemHeight: utils.getItemHeight, itemsHeight: utils.getItemsHeight, itemClassName: b('menu-group-nested-list-item'), virtualized: false, filterable: false, sortable: false, renderItem: (nestedItem, _isActive, groupItemIndex) => {
83
- const spineActive = selectedItemIndex !== undefined &&
84
- groupItemIndex < selectedItemIndex;
98
+ }, suppressCurrentItemIds: suppressCurrentItemIds, enableQuickAccessPin: enableQuickAccessPin, onToggleQuickAccess: onToggleQuickAccess })),
99
+ !groupIsCollapsed && (React.createElement(uikit.List, { items: row.items, selectedItemIndex: normalizedSelectedItemIndex, itemHeight: nestedItemHeight, itemsHeight: nestedItemsHeight, itemClassName: b('menu-group-nested-list-item'), virtualized: false, filterable: false, sortable: false, renderItem: (nestedItem, _isActive, groupItemIndex) => {
100
+ const spineActive = normalizedSelectedItemIndex !== undefined &&
101
+ groupItemIndex < normalizedSelectedItemIndex;
85
102
  return (React.createElement("div", { className: b('menu-group-nested-row-inner') },
86
103
  React.createElement(Item.Item, Object.assign({}, nestedItem, { className: [
87
104
  nestedItem.className,
88
105
  b('menu-group-nested-item'),
89
106
  ]
90
107
  .filter(Boolean)
91
- .join(' '), compact: compact, menuGroupNestedTreeConnector: React.createElement("span", { className: b('menu-group-nested-connector', { 'spine-active': spineActive }), "aria-hidden": true },
108
+ .join(' '), compact: compact, hideIcon: hideNestedIcons, menuGroupNested: true, menuGroupNestedTreeConnector: React.createElement("span", { className: b('menu-group-nested-connector', { 'spine-active': spineActive }), "aria-hidden": true },
92
109
  React.createElement("svg", { className: b('menu-group-nested-tree-svg', {
93
- active: selectedItemIndex ===
110
+ active: normalizedSelectedItemIndex ===
94
111
  groupItemIndex,
95
112
  }), viewBox: "0 0 16 40", xmlns: "http://www.w3.org/2000/svg" },
96
- React.createElement("path", { d: MENU_GROUP_NESTED_TREE_CONNECTOR_PATH, fill: "none", strokeLinecap: "butt", strokeWidth: "1.3", vectorEffect: "non-scaling-stroke" }))), onMouseLeave: onMouseLeave, onItemClick: onItemClickByIndex(nestedItem.onItemClick) }))));
113
+ React.createElement("path", { d: MENU_GROUP_NESTED_TREE_CONNECTOR_PATH, fill: "none", strokeLinecap: "butt", strokeWidth: "1.3", vectorEffect: "non-scaling-stroke" }))), onMouseLeave: onMouseLeave, onItemClick: onItemClickByIndex(nestedItem.onItemClick), suppressCurrentItemIds: suppressCurrentItemIds, enableQuickAccessPin: enableQuickAccessPin, quickAccessPinItem: nestedItem, onToggleQuickAccess: onToggleQuickAccess }))));
97
114
  } }))));
98
115
  } }));
99
116
  };
100
- const CompositeBar = ({ type, className, items, menuGroups, menuMoreTitle, onItemClick, onMoreClick, compact, compositeId, menuItemClassName, menuOverflow = 'collapse', collapsedMenuGroupIds: collapsedMenuGroupIdsProp, defaultCollapsedMenuGroupIds, onToggleMenuGroupCollapsed, }) => {
117
+ const CompositeBar = ({ type, items, menuGroups, menuMoreTitle, onItemClick, onMoreClick, compact, compositeId, menuItemClassName, layoutWidth, menuOverflow = 'collapse', collapsedMenuGroupIds: collapsedMenuGroupIdsProp, defaultCollapsedMenuGroupIds, onToggleMenuGroupCollapsed, enableQuickAccessPin, onToggleQuickAccess, suppressCurrentItemIds, menuGroupNestedIcons = true, }) => {
101
118
  const rows = React.useMemo(() => grouping.buildCompositeBarRows(items, menuGroups), [items, menuGroups]);
119
+ const { menuDensity } = AsideHeaderContext.useAsideHeaderContext();
102
120
  const isCollapsedControlled = collapsedMenuGroupIdsProp !== undefined;
103
121
  const [uncontrolledCollapsed, setUncontrolledCollapsed] = React.useState(() => defaultCollapsedMenuGroupIds !== null && defaultCollapsedMenuGroupIds !== undefined ? defaultCollapsedMenuGroupIds : {});
104
122
  const collapsedMap = isCollapsedControlled ? collapsedMenuGroupIdsProp : uncontrolledCollapsed;
@@ -111,39 +129,35 @@ const CompositeBar = ({ type, className, items, menuGroups, menuMoreTitle, onIte
111
129
  const isGroupCollapsed = React.useCallback((groupId) => Boolean(collapsedMap[groupId]), [collapsedMap]);
112
130
  const inlineGroupChildren = !compact && menuOverflow === 'scroll' && type === 'menu' && Boolean(menuGroups === null || menuGroups === undefined ? undefined : menuGroups.length);
113
131
  const scrollableRows = React.useMemo(() => utils.getReorderedCompositeBarRows(rows), [rows]);
114
- const scrollRecalcKey = React.useMemo(() => {
115
- var _a;
116
- return `${items.length}:${(_a = menuGroups === null || menuGroups === undefined ? undefined : menuGroups.length) !== null && _a !== undefined ? _a : 0}:${JSON.stringify(Object.keys(collapsedMap)
117
- .sort()
118
- .reduce((acc, k) => {
119
- acc[k] = Boolean(collapsedMap[k]);
120
- return acc;
121
- }, {}))}`;
122
- }, [items.length, menuGroups === null || menuGroups === undefined ? undefined : menuGroups.length, collapsedMap]);
123
132
  if (rows.length === 0) {
124
133
  return null;
125
134
  }
126
135
  let node;
127
136
  if (type === 'menu') {
128
137
  if (menuOverflow === 'scroll' && !compact) {
129
- node = (React.createElement(ScrollableWithScrollbar.ScrollableWithScrollbar, { className: className, recalcDeps: [scrollRecalcKey] },
130
- React.createElement(CompositeBarView, { compositeId: compositeId, type: "menu", compact: compact, rows: scrollableRows, onItemClick: onItemClick, onMoreClick: onMoreClick, menuItemClassName: menuItemClassName, inlineGroupChildren: inlineGroupChildren, isGroupCollapsed: isGroupCollapsed, onToggleGroupCollapsed: onToggleGroupCollapsed })));
138
+ const menuView = (React.createElement(CompositeBarView, { compositeId: compositeId, type: "menu", compact: compact, rows: scrollableRows, onItemClick: onItemClick, onMoreClick: onMoreClick, menuItemClassName: menuItemClassName, inlineGroupChildren: inlineGroupChildren, isGroupCollapsed: isGroupCollapsed, onToggleGroupCollapsed: onToggleGroupCollapsed, enableQuickAccessPin: enableQuickAccessPin, onToggleQuickAccess: onToggleQuickAccess, suppressCurrentItemIds: suppressCurrentItemIds, menuGroupNestedIcons: menuGroupNestedIcons }));
139
+ node = menuView;
131
140
  }
132
141
  else {
133
- const minHeight = utils.getCompositeBarRowsMinHeight(rows);
134
- const collapseItem = utils.getMoreButtonItem(menuMoreTitle);
142
+ const itemLayout = compact ? { sidebarCompact: true } : undefined;
143
+ const minHeight = utils.getCompositeBarRowsMinHeight(rows, menuDensity, itemLayout);
144
+ const collapseItem = utils.getMoreButtonItem(menuMoreTitle, menuDensity);
135
145
  node = (React.createElement("div", { className: b({ autosizer: true }), style: { minHeight } }, rows.length !== 0 && (React.createElement(AutoSizer, null, (size) => {
136
- const width = Number.isNaN(size.width) ? 0 : size.width;
146
+ const width = layoutWidth !== null && layoutWidth !== undefined ? layoutWidth : (Number.isNaN(size.width) ? 0 : size.width);
137
147
  const height = Number.isNaN(size.height) ? 0 : size.height;
138
- const { listRows, collapseItems } = utils.getAutosizeCompositeBarRows(rows, height, collapseItem);
148
+ const { listRows, collapseItems } = utils.getAutosizeCompositeBarRows(rows, height, collapseItem, menuDensity, itemLayout);
139
149
  return (React.createElement("div", { style: { width, height } },
140
- React.createElement(CompositeBarView, { compositeId: compositeId, type: "menu", compact: compact, rows: listRows, onItemClick: onItemClick, onMoreClick: onMoreClick, menuItemClassName: menuItemClassName, collapseItems: collapseItems, inlineGroupChildren: false, isGroupCollapsed: isGroupCollapsed, onToggleGroupCollapsed: onToggleGroupCollapsed })));
150
+ React.createElement(CompositeBarView, { compositeId: compositeId, type: "menu", compact: compact, rows: listRows, onItemClick: onItemClick, onMoreClick: onMoreClick, menuItemClassName: menuItemClassName, collapseItems: collapseItems, inlineGroupChildren: false, isGroupCollapsed: isGroupCollapsed, onToggleGroupCollapsed: onToggleGroupCollapsed, enableQuickAccessPin: enableQuickAccessPin, onToggleQuickAccess: onToggleQuickAccess, suppressCurrentItemIds: suppressCurrentItemIds, menuGroupNestedIcons: menuGroupNestedIcons })));
141
151
  }))));
142
152
  }
143
153
  }
154
+ else if (type === 'quick-access') {
155
+ node = (React.createElement("div", { className: b({ 'quick-access': true }) },
156
+ React.createElement(CompositeBarView, { compositeId: compositeId, type: "quick-access", menuItemClassName: menuItemClassName, compact: compact, rows: rows, onItemClick: onItemClick, inlineGroupChildren: false, isGroupCollapsed: isGroupCollapsed, onToggleGroupCollapsed: onToggleGroupCollapsed, enableQuickAccessPin: enableQuickAccessPin, onToggleQuickAccess: onToggleQuickAccess })));
157
+ }
144
158
  else {
145
159
  node = (React.createElement("div", { className: b({ subheader: true }) },
146
- React.createElement(CompositeBarView, { type: "subheader", menuItemClassName: menuItemClassName, compact: compact, rows: rows, onItemClick: onItemClick, inlineGroupChildren: false, isGroupCollapsed: isGroupCollapsed, onToggleGroupCollapsed: onToggleGroupCollapsed })));
160
+ React.createElement(CompositeBarView, { compositeId: compositeId, type: "subheader", menuItemClassName: menuItemClassName, compact: compact, rows: rows, onItemClick: onItemClick, inlineGroupChildren: false, isGroupCollapsed: isGroupCollapsed, onToggleGroupCollapsed: onToggleGroupCollapsed, menuGroupNestedIcons: menuGroupNestedIcons })));
147
161
  }
148
162
  return node;
149
163
  };