@gravity-ui/navigation 5.0.0-beta.3 → 5.0.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 (395) hide show
  1. package/build/cjs/assets/icons/divider-collapsed-compact.svg.js +41 -0
  2. package/build/cjs/assets/icons/divider-collapsed-compact.svg.js.map +1 -0
  3. package/build/cjs/components/AsideHeader/AsideHeader.css +1 -1
  4. package/build/cjs/components/AsideHeader/AsideHeader.js +3 -3
  5. package/build/cjs/components/AsideHeader/AsideHeader.js.map +1 -1
  6. package/build/cjs/components/AsideHeader/AsideHeader.module.scss.js +1 -1
  7. package/build/cjs/components/AsideHeader/AsideHeaderContext.d.ts +17 -4
  8. package/build/cjs/components/AsideHeader/AsideHeaderContext.js +10 -8
  9. package/build/cjs/components/AsideHeader/AsideHeaderContext.js.map +1 -1
  10. package/build/cjs/components/AsideHeader/FooterLayoutContext.d.ts +7 -0
  11. package/build/cjs/components/AsideHeader/FooterLayoutContext.js +10 -0
  12. package/build/cjs/components/AsideHeader/FooterLayoutContext.js.map +1 -0
  13. package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.css +1 -1
  14. package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.js +23 -15
  15. package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.js.map +1 -1
  16. package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.module.scss.js +1 -1
  17. package/build/cjs/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.js +10 -5
  18. package/build/cjs/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.js.map +1 -1
  19. package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/getExpandedIndexForSortableIndex.d.ts +9 -0
  20. package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/getExpandedIndexForSortableIndex.js +27 -0
  21. package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/getExpandedIndexForSortableIndex.js.map +1 -0
  22. package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/getRealIndexInGroup.d.ts +71 -0
  23. package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/getRealIndexInGroup.js +122 -0
  24. package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/getRealIndexInGroup.js.map +1 -1
  25. package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItemsWithDividers.d.ts +3 -1
  26. package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItemsWithDividers.js +23 -22
  27. package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItemsWithDividers.js.map +1 -1
  28. package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.css +1 -1
  29. package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.d.ts +2 -1
  30. package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.js +13 -13
  31. package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.js.map +1 -1
  32. package/build/cjs/components/AsideHeader/components/CollapseButton/CollapseButton.module.scss.js +1 -1
  33. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.css +1 -1
  34. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.d.ts +11 -5
  35. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.js +63 -165
  36. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.js.map +1 -1
  37. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.module.scss.js +1 -1
  38. package/build/cjs/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.css +1 -1
  39. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.css +25 -1
  40. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.d.ts +7 -2
  41. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.js +26 -8
  42. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.js.map +1 -1
  43. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.module.scss.js +1 -1
  44. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.css +1 -0
  45. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.d.ts +8 -0
  46. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js +27 -0
  47. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js.map +1 -0
  48. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.module.scss.js +8 -0
  49. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.module.scss.js.map +1 -0
  50. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/index.d.ts +1 -0
  51. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollbar.d.ts +21 -0
  52. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollbar.js +146 -0
  53. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollbar.js.map +1 -0
  54. package/build/cjs/components/AsideHeader/components/CompositeBar/utils.d.ts +4 -2
  55. package/build/cjs/components/AsideHeader/components/CompositeBar/utils.js +57 -7
  56. package/build/cjs/components/AsideHeader/components/CompositeBar/utils.js.map +1 -1
  57. package/build/cjs/components/AsideHeader/components/FirstPanel.js +29 -9
  58. package/build/cjs/components/AsideHeader/components/FirstPanel.js.map +1 -1
  59. package/build/cjs/components/AsideHeader/components/FooterBar/FooterBar.css +1 -0
  60. package/build/cjs/components/AsideHeader/components/FooterBar/FooterBar.d.ts +19 -0
  61. package/build/cjs/components/AsideHeader/components/FooterBar/FooterBar.js +95 -0
  62. package/build/cjs/components/AsideHeader/components/FooterBar/FooterBar.js.map +1 -0
  63. package/build/cjs/components/AsideHeader/components/FooterBar/FooterBar.module.scss.js +8 -0
  64. package/build/cjs/components/AsideHeader/components/FooterBar/FooterBar.module.scss.js.map +1 -0
  65. package/build/cjs/components/AsideHeader/components/FooterBar/constants.d.ts +1 -0
  66. package/build/cjs/components/AsideHeader/components/FooterBar/constants.js +6 -0
  67. package/build/cjs/components/AsideHeader/components/FooterBar/constants.js.map +1 -0
  68. package/build/cjs/components/AsideHeader/components/FooterBar/index.d.ts +1 -0
  69. package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.css +1 -1
  70. package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.d.ts +2 -0
  71. package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.js +12 -1
  72. package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.js.map +1 -1
  73. package/build/cjs/components/AsideHeader/components/FooterItem/FooterItem.module.scss.js +1 -1
  74. package/build/cjs/components/AsideHeader/components/Header.js +9 -6
  75. package/build/cjs/components/AsideHeader/components/Header.js.map +1 -1
  76. package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.css +2 -0
  77. package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.js +4 -3
  78. package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.js.map +1 -1
  79. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.css +2 -0
  80. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.d.ts +4 -2
  81. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.js +12 -9
  82. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.js.map +1 -1
  83. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.css +2 -0
  84. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.d.ts +1 -1
  85. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.js +5 -3
  86. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.js.map +1 -1
  87. package/build/cjs/components/AsideHeader/components/Panels.js +6 -3
  88. package/build/cjs/components/AsideHeader/components/Panels.js.map +1 -1
  89. package/build/cjs/components/AsideHeader/hooks/useIsExpanded.d.ts +3 -1
  90. package/build/cjs/components/AsideHeader/hooks/useIsExpanded.js +34 -11
  91. package/build/cjs/components/AsideHeader/hooks/useIsExpanded.js.map +1 -1
  92. package/build/cjs/components/AsideHeader/i18n/en.json.js +4 -1
  93. package/build/cjs/components/AsideHeader/i18n/en.json.js.map +1 -1
  94. package/build/cjs/components/AsideHeader/i18n/index.d.ts +4 -4
  95. package/build/cjs/components/AsideHeader/i18n/ru.json.js +4 -1
  96. package/build/cjs/components/AsideHeader/i18n/ru.json.js.map +1 -1
  97. package/build/cjs/components/AsideHeader/index.d.ts +3 -2
  98. package/build/cjs/components/AsideHeader/types.d.ts +30 -14
  99. package/build/cjs/components/AsideHeader/types.js.map +1 -1
  100. package/build/cjs/components/AsideHeader/useAsideHeaderInnerContextValue.d.ts +3 -2
  101. package/build/cjs/components/AsideHeader/useAsideHeaderInnerContextValue.js +31 -9
  102. package/build/cjs/components/AsideHeader/useAsideHeaderInnerContextValue.js.map +1 -1
  103. package/build/cjs/components/AsideHeader/utils/getGroupHeight.d.ts +1 -1
  104. package/build/cjs/components/AsideHeader/utils/getGroupHeight.js +5 -5
  105. package/build/cjs/components/AsideHeader/utils/getGroupHeight.js.map +1 -1
  106. package/build/cjs/components/Footer/desktop/Footer.js +1 -1
  107. package/build/cjs/components/Footer/desktop/Footer.js.map +1 -1
  108. package/build/cjs/components/Footer/mobile/Footer.js +1 -1
  109. package/build/cjs/components/Footer/mobile/Footer.js.map +1 -1
  110. package/build/cjs/components/HotkeysPanel/HotkeysPanel.d.ts +6 -4
  111. package/build/cjs/components/HotkeysPanel/HotkeysPanel.js +4 -7
  112. package/build/cjs/components/HotkeysPanel/HotkeysPanel.js.map +1 -1
  113. package/build/cjs/components/Logo/Logo.css +1 -1
  114. package/build/cjs/components/Logo/Logo.d.ts +7 -3
  115. package/build/cjs/components/Logo/Logo.js +9 -6
  116. package/build/cjs/components/Logo/Logo.js.map +1 -1
  117. package/build/cjs/components/Logo/Logo.module.scss.js +1 -1
  118. package/build/cjs/components/MobileHeader/MobileHeader.d.ts +4 -8
  119. package/build/cjs/components/MobileHeader/MobileHeader.js +24 -20
  120. package/build/cjs/components/MobileHeader/MobileHeader.js.map +1 -1
  121. package/build/cjs/components/MobileHeader/OverlapPanel/OverlapPanel.d.ts +2 -2
  122. package/build/cjs/components/MobileHeader/OverlapPanel/OverlapPanel.js +2 -2
  123. package/build/cjs/components/MobileHeader/OverlapPanel/OverlapPanel.js.map +1 -1
  124. package/build/cjs/components/MobileLogo/MobileLogo.d.ts +1 -1
  125. package/build/cjs/components/MobileLogo/MobileLogo.js +2 -2
  126. package/build/cjs/components/MobileLogo/MobileLogo.js.map +1 -1
  127. package/build/cjs/components/Settings/Settings.css +1 -1
  128. package/build/cjs/components/Settings/SettingsMenu/SettingsMenu.css +1 -1
  129. package/build/cjs/components/Settings/SettingsMenu/SettingsMenu.js +5 -1
  130. package/build/cjs/components/Settings/SettingsMenu/SettingsMenu.js.map +1 -1
  131. package/build/cjs/components/Settings/SettingsMenu/SettingsMenu.module.scss.js +1 -1
  132. package/build/cjs/components/constants.d.ts +6 -2
  133. package/build/cjs/components/constants.js +11 -3
  134. package/build/cjs/components/constants.js.map +1 -1
  135. package/build/cjs/components/types.d.ts +11 -6
  136. package/build/cjs/components/utils/getCollapsedWidth.d.ts +1 -0
  137. package/build/cjs/components/utils/getCollapsedWidth.js +10 -0
  138. package/build/cjs/components/utils/getCollapsedWidth.js.map +1 -0
  139. package/build/cjs/index.js +4 -0
  140. package/build/cjs/index.js.map +1 -1
  141. package/build/esm/assets/icons/divider-collapsed-compact.svg.js +18 -0
  142. package/build/esm/assets/icons/divider-collapsed-compact.svg.js.map +1 -0
  143. package/build/esm/components/AsideHeader/AsideHeader.css +1 -1
  144. package/build/esm/components/AsideHeader/AsideHeader.js +3 -3
  145. package/build/esm/components/AsideHeader/AsideHeader.js.map +1 -1
  146. package/build/esm/components/AsideHeader/AsideHeader.module.scss.js +1 -1
  147. package/build/esm/components/AsideHeader/AsideHeaderContext.d.ts +17 -4
  148. package/build/esm/components/AsideHeader/AsideHeaderContext.js +10 -9
  149. package/build/esm/components/AsideHeader/AsideHeaderContext.js.map +1 -1
  150. package/build/esm/components/AsideHeader/FooterLayoutContext.d.ts +7 -0
  151. package/build/esm/components/AsideHeader/FooterLayoutContext.js +7 -0
  152. package/build/esm/components/AsideHeader/FooterLayoutContext.js.map +1 -0
  153. package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.css +1 -1
  154. package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.js +24 -16
  155. package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.js.map +1 -1
  156. package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.module.scss.js +1 -1
  157. package/build/esm/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.js +10 -5
  158. package/build/esm/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.js.map +1 -1
  159. package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/getExpandedIndexForSortableIndex.d.ts +9 -0
  160. package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/getExpandedIndexForSortableIndex.js +25 -0
  161. package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/getExpandedIndexForSortableIndex.js.map +1 -0
  162. package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/getRealIndexInGroup.d.ts +71 -0
  163. package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/getRealIndexInGroup.js +117 -1
  164. package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/getRealIndexInGroup.js.map +1 -1
  165. package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItemsWithDividers.d.ts +3 -1
  166. package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItemsWithDividers.js +23 -22
  167. package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItemsWithDividers.js.map +1 -1
  168. package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.css +1 -1
  169. package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.d.ts +2 -1
  170. package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.js +13 -13
  171. package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.js.map +1 -1
  172. package/build/esm/components/AsideHeader/components/CollapseButton/CollapseButton.module.scss.js +1 -1
  173. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.css +1 -1
  174. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.d.ts +11 -5
  175. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.js +62 -164
  176. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.js.map +1 -1
  177. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.module.scss.js +1 -1
  178. package/build/esm/components/AsideHeader/components/CompositeBar/HighlightedItem/HighlightedItem.css +1 -1
  179. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.css +25 -1
  180. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.d.ts +7 -2
  181. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.js +26 -8
  182. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.js.map +1 -1
  183. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.module.scss.js +1 -1
  184. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.css +1 -0
  185. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.d.ts +8 -0
  186. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js +25 -0
  187. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js.map +1 -0
  188. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.module.scss.js +4 -0
  189. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.module.scss.js.map +1 -0
  190. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/index.d.ts +1 -0
  191. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollbar.d.ts +21 -0
  192. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollbar.js +144 -0
  193. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollbar.js.map +1 -0
  194. package/build/esm/components/AsideHeader/components/CompositeBar/utils.d.ts +4 -2
  195. package/build/esm/components/AsideHeader/components/CompositeBar/utils.js +57 -9
  196. package/build/esm/components/AsideHeader/components/CompositeBar/utils.js.map +1 -1
  197. package/build/esm/components/AsideHeader/components/FirstPanel.js +30 -10
  198. package/build/esm/components/AsideHeader/components/FirstPanel.js.map +1 -1
  199. package/build/esm/components/AsideHeader/components/FooterBar/FooterBar.css +1 -0
  200. package/build/esm/components/AsideHeader/components/FooterBar/FooterBar.d.ts +19 -0
  201. package/build/esm/components/AsideHeader/components/FooterBar/FooterBar.js +93 -0
  202. package/build/esm/components/AsideHeader/components/FooterBar/FooterBar.js.map +1 -0
  203. package/build/esm/components/AsideHeader/components/FooterBar/FooterBar.module.scss.js +4 -0
  204. package/build/esm/components/AsideHeader/components/FooterBar/FooterBar.module.scss.js.map +1 -0
  205. package/build/esm/components/AsideHeader/components/FooterBar/constants.d.ts +1 -0
  206. package/build/esm/components/AsideHeader/components/FooterBar/constants.js +4 -0
  207. package/build/esm/components/AsideHeader/components/FooterBar/constants.js.map +1 -0
  208. package/build/esm/components/AsideHeader/components/FooterBar/index.d.ts +1 -0
  209. package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.css +1 -1
  210. package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.d.ts +2 -0
  211. package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.js +12 -1
  212. package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.js.map +1 -1
  213. package/build/esm/components/AsideHeader/components/FooterItem/FooterItem.module.scss.js +1 -1
  214. package/build/esm/components/AsideHeader/components/Header.js +10 -7
  215. package/build/esm/components/AsideHeader/components/Header.js.map +1 -1
  216. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.css +2 -0
  217. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.js +5 -4
  218. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.js.map +1 -1
  219. package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.css +2 -0
  220. package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.d.ts +4 -2
  221. package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.js +13 -10
  222. package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.js.map +1 -1
  223. package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.css +2 -0
  224. package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.d.ts +1 -1
  225. package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.js +5 -3
  226. package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.js.map +1 -1
  227. package/build/esm/components/AsideHeader/components/Panels.js +6 -3
  228. package/build/esm/components/AsideHeader/components/Panels.js.map +1 -1
  229. package/build/esm/components/AsideHeader/hooks/useIsExpanded.d.ts +3 -1
  230. package/build/esm/components/AsideHeader/hooks/useIsExpanded.js +35 -12
  231. package/build/esm/components/AsideHeader/hooks/useIsExpanded.js.map +1 -1
  232. package/build/esm/components/AsideHeader/i18n/en.json.js +4 -2
  233. package/build/esm/components/AsideHeader/i18n/en.json.js.map +1 -1
  234. package/build/esm/components/AsideHeader/i18n/index.d.ts +4 -4
  235. package/build/esm/components/AsideHeader/i18n/ru.json.js +4 -2
  236. package/build/esm/components/AsideHeader/i18n/ru.json.js.map +1 -1
  237. package/build/esm/components/AsideHeader/index.d.ts +3 -2
  238. package/build/esm/components/AsideHeader/types.d.ts +30 -14
  239. package/build/esm/components/AsideHeader/types.js.map +1 -1
  240. package/build/esm/components/AsideHeader/useAsideHeaderInnerContextValue.d.ts +3 -2
  241. package/build/esm/components/AsideHeader/useAsideHeaderInnerContextValue.js +31 -9
  242. package/build/esm/components/AsideHeader/useAsideHeaderInnerContextValue.js.map +1 -1
  243. package/build/esm/components/AsideHeader/utils/getGroupHeight.d.ts +1 -1
  244. package/build/esm/components/AsideHeader/utils/getGroupHeight.js +6 -6
  245. package/build/esm/components/AsideHeader/utils/getGroupHeight.js.map +1 -1
  246. package/build/esm/components/Footer/desktop/Footer.js +1 -1
  247. package/build/esm/components/Footer/desktop/Footer.js.map +1 -1
  248. package/build/esm/components/Footer/mobile/Footer.js +1 -1
  249. package/build/esm/components/Footer/mobile/Footer.js.map +1 -1
  250. package/build/esm/components/HotkeysPanel/HotkeysPanel.d.ts +6 -4
  251. package/build/esm/components/HotkeysPanel/HotkeysPanel.js +4 -7
  252. package/build/esm/components/HotkeysPanel/HotkeysPanel.js.map +1 -1
  253. package/build/esm/components/Logo/Logo.css +1 -1
  254. package/build/esm/components/Logo/Logo.d.ts +7 -3
  255. package/build/esm/components/Logo/Logo.js +9 -6
  256. package/build/esm/components/Logo/Logo.js.map +1 -1
  257. package/build/esm/components/Logo/Logo.module.scss.js +1 -1
  258. package/build/esm/components/MobileHeader/MobileHeader.d.ts +4 -8
  259. package/build/esm/components/MobileHeader/MobileHeader.js +25 -21
  260. package/build/esm/components/MobileHeader/MobileHeader.js.map +1 -1
  261. package/build/esm/components/MobileHeader/OverlapPanel/OverlapPanel.d.ts +2 -2
  262. package/build/esm/components/MobileHeader/OverlapPanel/OverlapPanel.js +2 -2
  263. package/build/esm/components/MobileHeader/OverlapPanel/OverlapPanel.js.map +1 -1
  264. package/build/esm/components/MobileLogo/MobileLogo.d.ts +1 -1
  265. package/build/esm/components/MobileLogo/MobileLogo.js +2 -2
  266. package/build/esm/components/MobileLogo/MobileLogo.js.map +1 -1
  267. package/build/esm/components/Settings/Settings.css +1 -1
  268. package/build/esm/components/Settings/SettingsMenu/SettingsMenu.css +1 -1
  269. package/build/esm/components/Settings/SettingsMenu/SettingsMenu.js +5 -1
  270. package/build/esm/components/Settings/SettingsMenu/SettingsMenu.js.map +1 -1
  271. package/build/esm/components/Settings/SettingsMenu/SettingsMenu.module.scss.js +1 -1
  272. package/build/esm/components/constants.d.ts +6 -2
  273. package/build/esm/components/constants.js +7 -3
  274. package/build/esm/components/constants.js.map +1 -1
  275. package/build/esm/components/types.d.ts +11 -6
  276. package/build/esm/components/utils/getCollapsedWidth.d.ts +1 -0
  277. package/build/esm/components/utils/getCollapsedWidth.js +8 -0
  278. package/build/esm/components/utils/getCollapsedWidth.js.map +1 -0
  279. package/build/esm/index.js +2 -1
  280. package/build/esm/index.js.map +1 -1
  281. package/codemods/bin/cli.js +19 -6
  282. package/codemods/transforms/compactToIsExpanded.ts +345 -0
  283. package/codemods/transforms/compactToPinned.ts +135 -0
  284. package/codemods/transforms/v5.ts +36 -0
  285. package/package.json +2 -2
  286. package/build/cjs/components/ActionBar/__stories__/ActionBar.stories.d.ts +0 -20
  287. package/build/cjs/components/ActionBar/__stories__/ActionBarShowcase.d.ts +0 -2
  288. package/build/cjs/components/ActionBar/__stories__/ActionBarSingleSection.d.ts +0 -2
  289. package/build/cjs/components/ActionBar/__stories__/ActionBarStretchGroupShowcase.d.ts +0 -2
  290. package/build/cjs/components/ActionBar/__tests__/helpersPlaywright.d.ts +0 -5
  291. package/build/cjs/components/AsideHeader/__stories__/AsideHeader.stories.d.ts +0 -23
  292. package/build/cjs/components/AsideHeader/__stories__/AsideHeaderShowcase.d.ts +0 -13
  293. package/build/cjs/components/AsideHeader/__stories__/getAsideHeaderWrapper.d.ts +0 -3
  294. package/build/cjs/components/AsideHeader/__stories__/moc.d.ts +0 -17
  295. package/build/cjs/components/AsideHeader/__tests__/helpersPlaywright.d.ts +0 -2
  296. package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItems.d.ts +0 -2
  297. package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItems.js +0 -16
  298. package/build/cjs/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItems.js.map +0 -1
  299. package/build/cjs/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.css +0 -9
  300. package/build/cjs/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.d.ts +0 -9
  301. package/build/cjs/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.js +0 -34
  302. package/build/cjs/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.js.map +0 -1
  303. package/build/cjs/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.module.scss.js +0 -8
  304. package/build/cjs/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.module.scss.js.map +0 -1
  305. package/build/cjs/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltipContext.d.ts +0 -24
  306. package/build/cjs/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltipContext.js +0 -29
  307. package/build/cjs/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltipContext.js.map +0 -1
  308. package/build/cjs/components/AsideHeader/components/CompositeBar/MultipleTooltip/index.d.ts +0 -2
  309. package/build/cjs/components/AsideHeader/components/FooterItem/__stories__/FooterItem.stories.d.ts +0 -6
  310. package/build/cjs/components/AsideHeader/components/FooterItem/__tests__/helpersPlaywright.d.ts +0 -2
  311. package/build/cjs/components/Footer/desktop/__stories__/Footer.stories.d.ts +0 -8
  312. package/build/cjs/components/Footer/desktop/__stories__/FooterShowcase.d.ts +0 -4
  313. package/build/cjs/components/Footer/desktop/__stories__/moc.d.ts +0 -3
  314. package/build/cjs/components/Footer/desktop/__tests__/helpersPlaywright.d.ts +0 -2
  315. package/build/cjs/components/Footer/mobile/__stories__/MobileFooter.stories.d.ts +0 -8
  316. package/build/cjs/components/Footer/mobile/__stories__/MobileFooterShowcase.d.ts +0 -4
  317. package/build/cjs/components/Footer/mobile/__stories__/moc.d.ts +0 -3
  318. package/build/cjs/components/Footer/mobile/__tests__/helpersPlaywright.d.ts +0 -2
  319. package/build/cjs/components/HotkeysPanel/__stories__/HotkeysPanel.stories.d.ts +0 -5
  320. package/build/cjs/components/HotkeysPanel/__stories__/HotkeysPanelShowcase.d.ts +0 -6
  321. package/build/cjs/components/HotkeysPanel/__stories__/moc.d.ts +0 -2
  322. package/build/cjs/components/HotkeysPanel/__tests__/helpersPlaywright.d.ts +0 -2
  323. package/build/cjs/components/Logo/__stories__/Logo.stories.d.ts +0 -7
  324. package/build/cjs/components/Logo/__tests__/helpersPlaywright.d.ts +0 -2
  325. package/build/cjs/components/MobileHeader/BurgerMenu/__stories__/BurgerMenu.stories.d.ts +0 -6
  326. package/build/cjs/components/MobileHeader/BurgerMenu/__stories__/moc.d.ts +0 -2
  327. package/build/cjs/components/MobileHeader/BurgerMenu/__tests__/helpersPlaywright.d.ts +0 -2
  328. package/build/cjs/components/MobileHeader/OverlapPanel/__stories__/OverlapPanel.stories.d.ts +0 -6
  329. package/build/cjs/components/MobileHeader/OverlapPanel/__stories__/moc.d.ts +0 -2
  330. package/build/cjs/components/MobileHeader/OverlapPanel/__tests__/helpersPlaywright.d.ts +0 -2
  331. package/build/cjs/components/MobileHeader/__stories__/MobileHeader.stories.d.ts +0 -4
  332. package/build/cjs/components/MobileHeader/__stories__/MobileHeaderShowcase.d.ts +0 -3
  333. package/build/cjs/components/MobileHeader/__stories__/moc.d.ts +0 -1
  334. package/build/cjs/components/MobileHeader/__tests__/helpersPlaywright.d.ts +0 -2
  335. package/build/cjs/components/MobileLogo/__stories__/MobileLogo.stories.d.ts +0 -6
  336. package/build/cjs/components/MobileLogo/__tests__/helpersPlaywright.d.ts +0 -2
  337. package/build/cjs/components/Settings/__stories__/Settings.stories.d.ts +0 -5
  338. package/build/cjs/components/Settings/__stories__/SettingsDemo.d.ts +0 -14
  339. package/build/cjs/components/Settings/__stories__/SettingsMobileDemo.d.ts +0 -8
  340. package/build/cjs/components/Settings/__tests__/helpersPlaywright.d.ts +0 -2
  341. package/build/esm/components/ActionBar/__stories__/ActionBar.stories.d.ts +0 -20
  342. package/build/esm/components/ActionBar/__stories__/ActionBarShowcase.d.ts +0 -2
  343. package/build/esm/components/ActionBar/__stories__/ActionBarSingleSection.d.ts +0 -2
  344. package/build/esm/components/ActionBar/__stories__/ActionBarStretchGroupShowcase.d.ts +0 -2
  345. package/build/esm/components/ActionBar/__tests__/helpersPlaywright.d.ts +0 -5
  346. package/build/esm/components/AsideHeader/__stories__/AsideHeader.stories.d.ts +0 -23
  347. package/build/esm/components/AsideHeader/__stories__/AsideHeaderShowcase.d.ts +0 -13
  348. package/build/esm/components/AsideHeader/__stories__/getAsideHeaderWrapper.d.ts +0 -3
  349. package/build/esm/components/AsideHeader/__stories__/moc.d.ts +0 -17
  350. package/build/esm/components/AsideHeader/__tests__/helpersPlaywright.d.ts +0 -2
  351. package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItems.d.ts +0 -2
  352. package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItems.js +0 -14
  353. package/build/esm/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItems.js.map +0 -1
  354. package/build/esm/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.css +0 -9
  355. package/build/esm/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.d.ts +0 -9
  356. package/build/esm/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.js +0 -32
  357. package/build/esm/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.js.map +0 -1
  358. package/build/esm/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.module.scss.js +0 -4
  359. package/build/esm/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltip.module.scss.js.map +0 -1
  360. package/build/esm/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltipContext.d.ts +0 -24
  361. package/build/esm/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltipContext.js +0 -26
  362. package/build/esm/components/AsideHeader/components/CompositeBar/MultipleTooltip/MultipleTooltipContext.js.map +0 -1
  363. package/build/esm/components/AsideHeader/components/CompositeBar/MultipleTooltip/index.d.ts +0 -2
  364. package/build/esm/components/AsideHeader/components/FooterItem/__stories__/FooterItem.stories.d.ts +0 -6
  365. package/build/esm/components/AsideHeader/components/FooterItem/__tests__/helpersPlaywright.d.ts +0 -2
  366. package/build/esm/components/Footer/desktop/__stories__/Footer.stories.d.ts +0 -8
  367. package/build/esm/components/Footer/desktop/__stories__/FooterShowcase.d.ts +0 -4
  368. package/build/esm/components/Footer/desktop/__stories__/moc.d.ts +0 -3
  369. package/build/esm/components/Footer/desktop/__tests__/helpersPlaywright.d.ts +0 -2
  370. package/build/esm/components/Footer/mobile/__stories__/MobileFooter.stories.d.ts +0 -8
  371. package/build/esm/components/Footer/mobile/__stories__/MobileFooterShowcase.d.ts +0 -4
  372. package/build/esm/components/Footer/mobile/__stories__/moc.d.ts +0 -3
  373. package/build/esm/components/Footer/mobile/__tests__/helpersPlaywright.d.ts +0 -2
  374. package/build/esm/components/HotkeysPanel/__stories__/HotkeysPanel.stories.d.ts +0 -5
  375. package/build/esm/components/HotkeysPanel/__stories__/HotkeysPanelShowcase.d.ts +0 -6
  376. package/build/esm/components/HotkeysPanel/__stories__/moc.d.ts +0 -2
  377. package/build/esm/components/HotkeysPanel/__tests__/helpersPlaywright.d.ts +0 -2
  378. package/build/esm/components/Logo/__stories__/Logo.stories.d.ts +0 -7
  379. package/build/esm/components/Logo/__tests__/helpersPlaywright.d.ts +0 -2
  380. package/build/esm/components/MobileHeader/BurgerMenu/__stories__/BurgerMenu.stories.d.ts +0 -6
  381. package/build/esm/components/MobileHeader/BurgerMenu/__stories__/moc.d.ts +0 -2
  382. package/build/esm/components/MobileHeader/BurgerMenu/__tests__/helpersPlaywright.d.ts +0 -2
  383. package/build/esm/components/MobileHeader/OverlapPanel/__stories__/OverlapPanel.stories.d.ts +0 -6
  384. package/build/esm/components/MobileHeader/OverlapPanel/__stories__/moc.d.ts +0 -2
  385. package/build/esm/components/MobileHeader/OverlapPanel/__tests__/helpersPlaywright.d.ts +0 -2
  386. package/build/esm/components/MobileHeader/__stories__/MobileHeader.stories.d.ts +0 -4
  387. package/build/esm/components/MobileHeader/__stories__/MobileHeaderShowcase.d.ts +0 -3
  388. package/build/esm/components/MobileHeader/__stories__/moc.d.ts +0 -1
  389. package/build/esm/components/MobileHeader/__tests__/helpersPlaywright.d.ts +0 -2
  390. package/build/esm/components/MobileLogo/__stories__/MobileLogo.stories.d.ts +0 -6
  391. package/build/esm/components/MobileLogo/__tests__/helpersPlaywright.d.ts +0 -2
  392. package/build/esm/components/Settings/__stories__/Settings.stories.d.ts +0 -5
  393. package/build/esm/components/Settings/__stories__/SettingsDemo.d.ts +0 -14
  394. package/build/esm/components/Settings/__stories__/SettingsMobileDemo.d.ts +0 -8
  395. package/build/esm/components/Settings/__tests__/helpersPlaywright.d.ts +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"Item.js","sources":["../../../../../../../../src/components/AsideHeader/components/CompositeBar/Item/Item.tsx"],"sourcesContent":["import React from 'react';\n\nimport {Pin, PinFill} from '@gravity-ui/icons';\nimport {Button, Icon, Popup, PopupPlacement, PopupProps} from '@gravity-ui/uikit';\nimport {CSSTransition} from 'react-transition-group';\n\nimport {AsideHeaderItem} from 'src/components/AsideHeader/types';\n\nimport {ASIDE_HEADER_EXPAND_TRANSITION_DELAY, ASIDE_HEADER_ICON_SIZE} from '../../../../constants';\nimport {MakeItemParams} from '../../../../types';\nimport {createBlock} from '../../../../utils/cn';\nimport {HighlightedItem} from '../HighlightedItem/HighlightedItem';\nimport {ITEM_TYPE_REGULAR} from '../constants';\n\nimport styles from './Item.module.scss';\n\nconst b = createBlock('composite-bar-item', styles);\n\nconst itemTransitionClasses = {\n enter: b('transition-title-enter'),\n enterActive: b('transition-title-enter-active'),\n enterDone: b('transition-title-enter-done'),\n exit: b('transition-title-exit'),\n exitActive: b('transition-title-exit-active'),\n exitDone: b('transition-title-exit-done'),\n};\n\nexport interface ItemProps extends AsideHeaderItem {}\n\ninterface ItemInnerProps extends ItemProps {\n compact?: boolean;\n className?: string;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n editMode?: boolean;\n onToggleVisibility?: () => void;\n}\n\nfunction renderItemTitle(params: Pick<AsideHeaderItem, 'title' | 'rightAdornment'>) {\n let titleNode = <div className={b('title-text')}>{params.title}</div>;\n\n if (params.rightAdornment) {\n titleNode = (\n <React.Fragment>\n {titleNode}\n <div className={b('title-adornment')}>{params.rightAdornment}</div>\n </React.Fragment>\n );\n }\n\n return titleNode;\n}\n\nconst defaultPopupPlacement: PopupPlacement = ['right-end'];\nconst defaultPopupOffset: NonNullable<PopupProps['offset']> = {mainAxis: 8, crossAxis: -20};\n\nexport const Item: React.FC<ItemInnerProps> = (props) => {\n const {\n className,\n onMouseLeave,\n onMouseEnter,\n popupVisible = false,\n popupRef: anchoreRefProp,\n popupPlacement = defaultPopupPlacement,\n popupOffset = defaultPopupOffset,\n popupKeepMounted,\n renderPopupContent,\n onOpenChangePopup,\n onItemClick,\n onItemClickCapture,\n itemWrapper,\n bringForward,\n rightAdornment,\n title,\n href,\n qa,\n compact,\n editMode = false,\n onToggleVisibility,\n hidden,\n preventUserRemoving,\n } = props;\n\n const ref = React.useRef<HTMLAnchorElement & HTMLButtonElement>(null);\n const anchorRef = anchoreRefProp?.current ? anchoreRefProp : ref;\n const highlightedRef = React.useRef<HTMLDivElement>(null);\n\n const type = props.type || ITEM_TYPE_REGULAR;\n const current = props.current || false;\n const icon = props.icon;\n const iconSize = props.iconSize || ASIDE_HEADER_ICON_SIZE;\n const iconQa = props.iconQa;\n\n const onPinButtonClick = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n e.preventDefault();\n onToggleVisibility?.();\n },\n [onToggleVisibility],\n );\n\n const handleOpenChangePopup = React.useCallback<NonNullable<ItemProps['onOpenChangePopup']>>(\n (newOpen, event, reason) => {\n if (\n event instanceof MouseEvent &&\n event.target &&\n ref.current?.contains(event.target as Node)\n ) {\n return;\n }\n onOpenChangePopup?.(newOpen, event, reason);\n },\n [onOpenChangePopup],\n );\n\n if (type === 'divider') {\n return <div className={b('menu-divider')} />;\n }\n\n const makeIconNode = (iconEl: React.ReactNode): React.ReactNode => {\n return compact ? <div className={b('btn-icon')}>{iconEl}</div> : iconEl;\n };\n\n const makeNode = ({icon: iconEl, title: titleEl}: MakeItemParams) => {\n const [Tag, tagProps] = href ? ['a' as const, {href}] : ['button' as const, {}];\n\n const createdNode = (\n <React.Fragment>\n <Tag\n {...tagProps}\n className={b({type, current, compact}, className)}\n ref={ref}\n data-qa={qa}\n onClick={(event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n onItemClick?.(props, false, event);\n }}\n onClickCapture={onItemClickCapture}\n onMouseEnter={() => {\n onMouseEnter?.();\n }}\n onMouseLeave={() => {\n onMouseLeave?.();\n }}\n >\n <div className={b('icon-place')} ref={highlightedRef}>\n {makeIconNode(iconEl)}\n </div>\n\n <CSSTransition\n in={!compact}\n timeout={ASIDE_HEADER_EXPAND_TRANSITION_DELAY}\n classNames={itemTransitionClasses}\n >\n <div\n className={b('title')}\n title={typeof title === 'string' ? title : undefined}\n >\n {titleEl}\n </div>\n </CSSTransition>\n\n {editMode && !preventUserRemoving && onToggleVisibility ? (\n <Button\n onClick={onPinButtonClick}\n view={hidden ? 'flat-secondary' : 'flat-action'}\n className={b('visibility-button')}\n >\n <Button.Icon>{hidden ? <Pin /> : <PinFill />}</Button.Icon>\n </Button>\n ) : null}\n </Tag>\n {renderPopupContent && Boolean(anchorRef?.current) && (\n <Popup\n strategy=\"fixed\"\n open={popupVisible}\n keepMounted={popupKeepMounted}\n placement={popupPlacement}\n offset={popupOffset}\n anchorElement={anchorRef.current}\n onOpenChange={handleOpenChangePopup}\n >\n {renderPopupContent()}\n </Popup>\n )}\n </React.Fragment>\n );\n\n return createdNode;\n };\n\n const iconNode = icon ? (\n <Icon qa={iconQa} data={icon} size={iconSize} className={b('icon')} />\n ) : null;\n const titleNode = renderItemTitle({title, rightAdornment});\n const params = {icon: iconNode, title: titleNode};\n let highlightedNode = null;\n let node;\n\n const opts = {compact: Boolean(compact), collapsed: false, item: props, ref};\n\n if (typeof itemWrapper === 'function') {\n node = itemWrapper(params, makeNode, opts) as React.ReactElement;\n highlightedNode =\n bringForward &&\n (itemWrapper(\n params,\n ({icon: iconEl}) => makeIconNode(iconEl),\n opts,\n ) as React.ReactElement);\n } else {\n node = makeNode(params);\n highlightedNode = bringForward && makeIconNode(iconNode);\n }\n\n return (\n <React.Fragment>\n {bringForward && (\n <HighlightedItem\n iconNode={highlightedNode}\n iconRef={highlightedRef}\n onClick={(event: React.MouseEvent<HTMLElement, MouseEvent>) =>\n onItemClick?.(props, false, event)\n }\n onClickCapture={onItemClickCapture}\n />\n )}\n {node}\n </React.Fragment>\n );\n};\n\nItem.displayName = 'Item';\n"],"names":["createBlock","styles","ITEM_TYPE_REGULAR","ASIDE_HEADER_ICON_SIZE","CSSTransition","ASIDE_HEADER_EXPAND_TRANSITION_DELAY","Button","Pin","PinFill","Popup","Icon","HighlightedItem"],"mappings":"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"}
1
+ {"version":3,"file":"Item.js","sources":["../../../../../../../../src/components/AsideHeader/components/CompositeBar/Item/Item.tsx"],"sourcesContent":["import React from 'react';\n\nimport {Pin, PinFill} from '@gravity-ui/icons';\nimport {Button, Icon, Popup, PopupPlacement, PopupProps} from '@gravity-ui/uikit';\nimport {CSSTransition} from 'react-transition-group';\n\nimport {ASIDE_HEADER_EXPAND_TRANSITION_DELAY, ASIDE_HEADER_ICON_SIZE} from '../../../../constants';\nimport {MakeItemParams} from '../../../../types';\nimport {createBlock} from '../../../../utils/cn';\nimport {AsideHeaderItem, SetCollapseBlocker} from '../../../types';\nimport {HighlightedItem} from '../HighlightedItem/HighlightedItem';\nimport {ITEM_TYPE_REGULAR} from '../constants';\n\nimport styles from './Item.module.scss';\n\nconst b = createBlock('composite-bar-item', styles);\n\nconst itemTransitionClasses = {\n enter: b('transition-title-enter'),\n enterActive: b('transition-title-enter-active'),\n enterDone: b('transition-title-enter-done'),\n exit: b('transition-title-exit'),\n exitActive: b('transition-title-exit-active'),\n exitDone: b('transition-title-exit-done'),\n};\n\nexport interface ItemProps extends AsideHeaderItem {}\n\ninterface ItemInnerProps extends ItemProps {\n /** Registers a temporary block on collapse (e.g. while dropdown is open). Returns release function. */\n setCollapseBlocker?: SetCollapseBlocker;\n /** When `true`, the item is displayed in expanded form. */\n isExpanded?: boolean;\n /** Layout mode: 'horizontal' shows icon only, 'vertical' shows icon and title. Used in FooterBar. */\n layout?: 'horizontal' | 'vertical';\n className?: string;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n editMode?: boolean;\n onToggleVisibility?: () => void;\n}\n\nfunction renderItemTitle(params: Pick<AsideHeaderItem, 'title' | 'rightAdornment'>) {\n let titleNode = <div className={b('title-text')}>{params.title}</div>;\n\n if (params.rightAdornment) {\n titleNode = (\n <React.Fragment>\n {titleNode}\n <div className={b('title-adornment')}>{params.rightAdornment}</div>\n </React.Fragment>\n );\n }\n\n return titleNode;\n}\n\nconst defaultPopupPlacement: PopupPlacement = ['right-end'];\nconst defaultPopupOffset: NonNullable<PopupProps['offset']> = {mainAxis: 8, crossAxis: -20};\n\nexport const Item: React.FC<ItemInnerProps> = (props) => {\n const {\n className,\n onMouseLeave,\n onMouseEnter,\n popupVisible = false,\n popupRef: anchoreRefProp,\n popupPlacement = defaultPopupPlacement,\n popupOffset = defaultPopupOffset,\n popupKeepMounted,\n renderPopupContent,\n onOpenChangePopup,\n onItemClick,\n onItemClickCapture,\n itemWrapper,\n bringForward,\n rightAdornment,\n title,\n href,\n qa,\n isExpanded = true,\n layout = 'vertical',\n editMode = false,\n onToggleVisibility,\n setCollapseBlocker,\n hidden,\n preventUserRemoving,\n } = props;\n\n const ref = React.useRef<HTMLAnchorElement & HTMLButtonElement>(null);\n const anchorRef = anchoreRefProp?.current ? anchoreRefProp : ref;\n const highlightedRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n let didBlock = false;\n\n if (popupVisible) {\n didBlock = true;\n\n setCollapseBlocker?.(true);\n }\n\n return () => {\n if (didBlock) {\n setCollapseBlocker?.(false);\n }\n };\n }, [popupVisible, setCollapseBlocker]);\n\n const type = props.type || ITEM_TYPE_REGULAR;\n const current = props.current || false;\n const icon = props.icon;\n const iconSize = props.iconSize || ASIDE_HEADER_ICON_SIZE;\n const iconQa = props.iconQa;\n\n const onPinButtonClick = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n e.preventDefault();\n onToggleVisibility?.();\n },\n [onToggleVisibility],\n );\n\n const handleOpenChangePopup = React.useCallback<NonNullable<ItemProps['onOpenChangePopup']>>(\n (newOpen, event, reason) => {\n if (\n event instanceof MouseEvent &&\n event.target &&\n ref.current?.contains(event.target as Node)\n ) {\n return;\n }\n\n onOpenChangePopup?.(newOpen, event, reason);\n },\n [onOpenChangePopup],\n );\n\n if (type === 'divider') {\n return <div className={b('menu-divider')} />;\n }\n\n const makeIconNode = (iconEl: React.ReactNode): React.ReactNode => {\n return isExpanded ? iconEl : <div className={b('btn-icon')}>{iconEl}</div>;\n };\n\n const makeNode = ({icon: iconEl, title: titleEl}: MakeItemParams) => {\n const [Tag, tagProps] = href ? ['a' as const, {href}] : ['button' as const, {}];\n const ariaLabel = typeof title === 'string' ? title : undefined;\n\n const createdNode = (\n <React.Fragment>\n <Tag\n {...tagProps}\n className={b({type, current, collapsed: !isExpanded}, className)}\n ref={ref}\n data-qa={qa}\n data-type={type}\n aria-label={ariaLabel}\n onClick={(event: React.MouseEvent<HTMLElement, MouseEvent>) => {\n onItemClick?.(props, false, event, {setCollapseBlocker});\n }}\n onClickCapture={onItemClickCapture}\n onMouseEnter={() => {\n onMouseEnter?.();\n }}\n onMouseLeave={() => {\n onMouseLeave?.();\n }}\n >\n <div className={b('icon-place')} ref={highlightedRef}>\n {makeIconNode(iconEl)}\n </div>\n\n {layout === 'vertical' && (\n <CSSTransition\n in={isExpanded}\n timeout={ASIDE_HEADER_EXPAND_TRANSITION_DELAY}\n classNames={itemTransitionClasses}\n >\n <div\n className={b('title')}\n title={typeof title === 'string' ? title : undefined}\n >\n {titleEl}\n </div>\n </CSSTransition>\n )}\n\n {editMode && !preventUserRemoving && onToggleVisibility ? (\n <Button\n onClick={onPinButtonClick}\n view={hidden ? 'flat-secondary' : 'flat-action'}\n className={b('visibility-button')}\n >\n <Button.Icon>{hidden ? <Pin /> : <PinFill />}</Button.Icon>\n </Button>\n ) : null}\n </Tag>\n {renderPopupContent && Boolean(anchorRef?.current) && (\n <Popup\n strategy=\"fixed\"\n open={popupVisible}\n keepMounted={popupKeepMounted}\n placement={popupPlacement}\n offset={popupOffset}\n anchorElement={anchorRef.current}\n onOpenChange={handleOpenChangePopup}\n >\n {renderPopupContent()}\n </Popup>\n )}\n </React.Fragment>\n );\n\n return createdNode;\n };\n\n const iconNode = icon ? (\n <Icon qa={iconQa} data={icon} size={iconSize} className={b('icon')} />\n ) : null;\n const titleNode = renderItemTitle({title, rightAdornment});\n const params = {icon: iconNode, title: titleNode};\n let highlightedNode = null;\n let node;\n\n const opts = {\n isExpanded,\n item: props,\n ref,\n setCollapseBlocker,\n };\n\n if (typeof itemWrapper === 'function') {\n node = itemWrapper(params, makeNode, opts) as React.ReactElement;\n highlightedNode =\n bringForward &&\n (itemWrapper(\n params,\n ({icon: iconEl}) => makeIconNode(iconEl),\n opts,\n ) as React.ReactElement);\n } else {\n node = makeNode(params);\n highlightedNode = bringForward && makeIconNode(iconNode);\n }\n\n return (\n <React.Fragment>\n {bringForward && (\n <HighlightedItem\n iconNode={highlightedNode}\n iconRef={highlightedRef}\n onClick={(event: React.MouseEvent<HTMLElement, MouseEvent>) =>\n onItemClick?.(props, false, event, {setCollapseBlocker})\n }\n onClickCapture={onItemClickCapture}\n />\n )}\n {node}\n </React.Fragment>\n );\n};\n\nItem.displayName = 'Item';\n"],"names":["createBlock","styles","ITEM_TYPE_REGULAR","ASIDE_HEADER_ICON_SIZE","CSSTransition","ASIDE_HEADER_EXPAND_TRANSITION_DELAY","Button","Pin","PinFill","Popup","Icon","HighlightedItem"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var styles = {"gn-composite-bar-item":"Item-module__gn-composite-bar-item___-pkx5","gnCompositeBarItem":"Item-module__gn-composite-bar-item___-pkx5","gn-composite-bar-item__icon":"Item-module__gn-composite-bar-item__icon___ORFNf","gnCompositeBarItemIcon":"Item-module__gn-composite-bar-item__icon___ORFNf","gn-composite-bar-item_current":"Item-module__gn-composite-bar-item_current___NT2hB","gnCompositeBarItemCurrent":"Item-module__gn-composite-bar-item_current___NT2hB","gn-composite-bar-item__icon-tooltip":"Item-module__gn-composite-bar-item__icon-tooltip___PxU2i","gnCompositeBarItemIconTooltip":"Item-module__gn-composite-bar-item__icon-tooltip___PxU2i","g-action-tooltip__description":"Item-module__g-action-tooltip__description___UsHcG","gActionTooltipDescription":"Item-module__g-action-tooltip__description___UsHcG","gn-composite-bar-item__icon-place":"Item-module__gn-composite-bar-item__icon-place___jPKRh","gnCompositeBarItemIconPlace":"Item-module__gn-composite-bar-item__icon-place___jPKRh","gn-composite-bar-item__title":"Item-module__gn-composite-bar-item__title___wj5L5","gnCompositeBarItemTitle":"Item-module__gn-composite-bar-item__title___wj5L5","gn-composite-bar-item__transition-title-enter":"Item-module__gn-composite-bar-item__transition-title-enter___4n6yR","gnCompositeBarItemTransitionTitleEnter":"Item-module__gn-composite-bar-item__transition-title-enter___4n6yR","gn-composite-bar-item__transition-title-enter-active":"Item-module__gn-composite-bar-item__transition-title-enter-active___AAvSZ","gnCompositeBarItemTransitionTitleEnterActive":"Item-module__gn-composite-bar-item__transition-title-enter-active___AAvSZ","gn-composite-bar-item__transition-title-enter-done":"Item-module__gn-composite-bar-item__transition-title-enter-done___Ilzkv","gnCompositeBarItemTransitionTitleEnterDone":"Item-module__gn-composite-bar-item__transition-title-enter-done___Ilzkv","gn-composite-bar-item__transition-title-exit":"Item-module__gn-composite-bar-item__transition-title-exit___5-JKk","gnCompositeBarItemTransitionTitleExit":"Item-module__gn-composite-bar-item__transition-title-exit___5-JKk","gn-composite-bar-item__transition-title-exit-active":"Item-module__gn-composite-bar-item__transition-title-exit-active___Dif7T","gnCompositeBarItemTransitionTitleExitActive":"Item-module__gn-composite-bar-item__transition-title-exit-active___Dif7T","gn-composite-bar-item__transition-title-exit-done":"Item-module__gn-composite-bar-item__transition-title-exit-done___PJvzY","gnCompositeBarItemTransitionTitleExitDone":"Item-module__gn-composite-bar-item__transition-title-exit-done___PJvzY","gn-composite-bar-item__visibility-button":"Item-module__gn-composite-bar-item__visibility-button___QaJg-","gnCompositeBarItemVisibilityButton":"Item-module__gn-composite-bar-item__visibility-button___QaJg-","gn-composite-bar-item__title-text":"Item-module__gn-composite-bar-item__title-text___cILJo","gnCompositeBarItemTitleText":"Item-module__gn-composite-bar-item__title-text___cILJo","gn-composite-bar-item__title-adornment":"Item-module__gn-composite-bar-item__title-adornment___Xcopn","gnCompositeBarItemTitleAdornment":"Item-module__gn-composite-bar-item__title-adornment___Xcopn","gn-composite-bar-item__collapse-item":"Item-module__gn-composite-bar-item__collapse-item___Up6IX","gnCompositeBarItemCollapseItem":"Item-module__gn-composite-bar-item__collapse-item___Up6IX","gn-composite-bar-item__collapse-item-icon":"Item-module__gn-composite-bar-item__collapse-item-icon___CD-ao","gnCompositeBarItemCollapseItemIcon":"Item-module__gn-composite-bar-item__collapse-item-icon___CD-ao","gn-composite-bar-item__menu-divider":"Item-module__gn-composite-bar-item__menu-divider___hkm-Z","gnCompositeBarItemMenuDivider":"Item-module__gn-composite-bar-item__menu-divider___hkm-Z","gn-composite-bar-item__collapse-items-popup-content":"Item-module__gn-composite-bar-item__collapse-items-popup-content___a82to","gnCompositeBarItemCollapseItemsPopupContent":"Item-module__gn-composite-bar-item__collapse-items-popup-content___a82to","gn-composite-bar-item__link":"Item-module__gn-composite-bar-item__link___McAVN","gnCompositeBarItemLink":"Item-module__gn-composite-bar-item__link___McAVN","gn-composite-bar-item__btn-icon":"Item-module__gn-composite-bar-item__btn-icon___SwT65","gnCompositeBarItemBtnIcon":"Item-module__gn-composite-bar-item__btn-icon___SwT65","gn-composite-bar-item_type_action":"Item-module__gn-composite-bar-item_type_action___2jxO8","gnCompositeBarItemTypeAction":"Item-module__gn-composite-bar-item_type_action___2jxO8","gn-composite-bar-item__icon-tooltip_item-type_action":"Item-module__gn-composite-bar-item__icon-tooltip_item-type_action___HUhUR","gnCompositeBarItemIconTooltipItemTypeAction":"Item-module__gn-composite-bar-item__icon-tooltip_item-type_action___HUhUR","gn-composite-bar-item_compact":"Item-module__gn-composite-bar-item_compact___PVTeM","gnCompositeBarItemCompact":"Item-module__gn-composite-bar-item_compact___PVTeM","gn-composite-bar-item_type_regular":"Item-module__gn-composite-bar-item_type_regular___wkhsT","gnCompositeBarItemTypeRegular":"Item-module__gn-composite-bar-item_type_regular___wkhsT"};
5
+ var styles = {"gn-composite-bar-item":"Item-module__gn-composite-bar-item___-pkx5","gnCompositeBarItem":"Item-module__gn-composite-bar-item___-pkx5","gn-composite-bar-item_type_regular":"Item-module__gn-composite-bar-item_type_regular___wkhsT","gnCompositeBarItemTypeRegular":"Item-module__gn-composite-bar-item_type_regular___wkhsT","gn-composite-bar-item__btn-icon":"Item-module__gn-composite-bar-item__btn-icon___SwT65","gnCompositeBarItemBtnIcon":"Item-module__gn-composite-bar-item__btn-icon___SwT65","gn-composite-bar-item_current":"Item-module__gn-composite-bar-item_current___NT2hB","gnCompositeBarItemCurrent":"Item-module__gn-composite-bar-item_current___NT2hB","gn-composite-bar-item__icon-place":"Item-module__gn-composite-bar-item__icon-place___jPKRh","gnCompositeBarItemIconPlace":"Item-module__gn-composite-bar-item__icon-place___jPKRh","gn-composite-bar-item__title":"Item-module__gn-composite-bar-item__title___wj5L5","gnCompositeBarItemTitle":"Item-module__gn-composite-bar-item__title___wj5L5","gn-composite-bar-item__transition-title-enter":"Item-module__gn-composite-bar-item__transition-title-enter___4n6yR","gnCompositeBarItemTransitionTitleEnter":"Item-module__gn-composite-bar-item__transition-title-enter___4n6yR","gn-composite-bar-item__transition-title-enter-active":"Item-module__gn-composite-bar-item__transition-title-enter-active___AAvSZ","gnCompositeBarItemTransitionTitleEnterActive":"Item-module__gn-composite-bar-item__transition-title-enter-active___AAvSZ","gn-composite-bar-item__transition-title-enter-done":"Item-module__gn-composite-bar-item__transition-title-enter-done___Ilzkv","gnCompositeBarItemTransitionTitleEnterDone":"Item-module__gn-composite-bar-item__transition-title-enter-done___Ilzkv","gn-composite-bar-item__transition-title-exit":"Item-module__gn-composite-bar-item__transition-title-exit___5-JKk","gnCompositeBarItemTransitionTitleExit":"Item-module__gn-composite-bar-item__transition-title-exit___5-JKk","gn-composite-bar-item__transition-title-exit-active":"Item-module__gn-composite-bar-item__transition-title-exit-active___Dif7T","gnCompositeBarItemTransitionTitleExitActive":"Item-module__gn-composite-bar-item__transition-title-exit-active___Dif7T","gn-composite-bar-item__transition-title-exit-done":"Item-module__gn-composite-bar-item__transition-title-exit-done___PJvzY","gnCompositeBarItemTransitionTitleExitDone":"Item-module__gn-composite-bar-item__transition-title-exit-done___PJvzY","gn-composite-bar-item__visibility-button":"Item-module__gn-composite-bar-item__visibility-button___QaJg-","gnCompositeBarItemVisibilityButton":"Item-module__gn-composite-bar-item__visibility-button___QaJg-","gn-composite-bar-item__title-text":"Item-module__gn-composite-bar-item__title-text___cILJo","gnCompositeBarItemTitleText":"Item-module__gn-composite-bar-item__title-text___cILJo","gn-composite-bar-item__title-adornment":"Item-module__gn-composite-bar-item__title-adornment___Xcopn","gnCompositeBarItemTitleAdornment":"Item-module__gn-composite-bar-item__title-adornment___Xcopn","gn-composite-bar-item__collapse-item":"Item-module__gn-composite-bar-item__collapse-item___Up6IX","gnCompositeBarItemCollapseItem":"Item-module__gn-composite-bar-item__collapse-item___Up6IX","gn-composite-bar-item__collapse-item-icon":"Item-module__gn-composite-bar-item__collapse-item-icon___CD-ao","gnCompositeBarItemCollapseItemIcon":"Item-module__gn-composite-bar-item__collapse-item-icon___CD-ao","gn-composite-bar-item__menu-divider":"Item-module__gn-composite-bar-item__menu-divider___hkm-Z","gnCompositeBarItemMenuDivider":"Item-module__gn-composite-bar-item__menu-divider___hkm-Z","gn-composite-bar-item__collapse-items-popup-content":"Item-module__gn-composite-bar-item__collapse-items-popup-content___a82to","gnCompositeBarItemCollapseItemsPopupContent":"Item-module__gn-composite-bar-item__collapse-items-popup-content___a82to","gn-composite-bar-item__link":"Item-module__gn-composite-bar-item__link___McAVN","gnCompositeBarItemLink":"Item-module__gn-composite-bar-item__link___McAVN","gn-composite-bar-item_type_action":"Item-module__gn-composite-bar-item_type_action___2jxO8","gnCompositeBarItemTypeAction":"Item-module__gn-composite-bar-item_type_action___2jxO8","gn-composite-bar-item_collapsed":"Item-module__gn-composite-bar-item_collapsed___Ichlf","gnCompositeBarItemCollapsed":"Item-module__gn-composite-bar-item_collapsed___Ichlf"};
6
6
 
7
7
  exports.default = styles;
8
8
  //# sourceMappingURL=Item.module.scss.js.map
@@ -0,0 +1 @@
1
+ .ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar___S-GKS{flex:1 1 auto;min-height:0;position:relative;width:100%}.ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar___S-GKS:before{background:var(--gn-aside-bottom-shadow-color,linear-gradient(to bottom,transparent 0,transparent 50%,rgba(0,0,0,.08) 100%));bottom:0;content:"";height:100%;left:0;opacity:0;pointer-events:none;position:absolute;right:0;transition:opacity .3s ease-in-out}.ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar___S-GKS.ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar_bottom-shadow___YoCCZ:before{opacity:1}.ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar__scrollable-inner___yRIza{-ms-overflow-style:none;height:100%;overflow:hidden auto;scrollbar-width:none;width:100%}.ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar__scrollable-inner___yRIza::-webkit-scrollbar{display:none}.ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar__scrollbar___igCbU{bottom:0;box-sizing:border-box;padding:2px 0;position:absolute;right:2px;top:0;width:var(--g-spacing-1)}.ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar__scrollbar-track___u6MVN{background:var(--gn-aside-scrollbar-track-color,transparent);cursor:pointer;height:100%;position:relative;width:100%}.ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar__scrollbar-thumb___bLf6h{background:var(--gn-aside-scrollbar-handle-color,var(--g-color-line-generic-solid));cursor:grab;left:0;min-height:20px;position:absolute;width:100%}.ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar__scrollbar-thumb___bLf6h:hover{background:var(--gn-aside-scrollbar-handle-color-hover,var(--gn-aside-scrollbar-handle-color,var(--g-color-line-generic-solid)))}.ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar__scrollbar-thumb___bLf6h:active{cursor:grabbing}.g-root_theme_light .ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar___S-GKS, .g-root_theme_light-hc .ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar___S-GKS{--gn-aside-bottom-shadow-color:linear-gradient(180deg,transparent 0%,transparent 50%,rgba(0,0,0,.08))}.g-root_theme_dark .ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar___S-GKS, .g-root_theme_dark-hc .ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar___S-GKS{--gn-aside-bottom-shadow-color:linear-gradient(180deg,transparent 80%,transparent 0,rgba(0,0,0,.4))}
@@ -0,0 +1,8 @@
1
+ import React, { FC, ReactNode } from 'react';
2
+ type ScrollableWithScrollbarProps = {
3
+ children: ReactNode;
4
+ className?: string;
5
+ recalcDeps?: React.DependencyList;
6
+ };
7
+ export declare const ScrollableWithScrollbar: FC<ScrollableWithScrollbarProps>;
8
+ export {};
@@ -0,0 +1,27 @@
1
+ import './ScrollableWithScrollbar.css';
2
+ 'use strict';
3
+
4
+ var React = require('react');
5
+ var cn = require('../../../../utils/cn.js');
6
+ var useScrollbar = require('./useScrollbar.js');
7
+ var ScrollableWithScrollbar_module = require('./ScrollableWithScrollbar.module.scss.js');
8
+
9
+ const b = cn.createBlock('scrollable-with-scrollbar', ScrollableWithScrollbar_module.default);
10
+ const EMPTY_DEPS = [];
11
+ const ScrollableWithScrollbar = ({ children, className, recalcDeps = EMPTY_DEPS, }) => {
12
+ const scrollableContentId = React.useId();
13
+ const { scrollRef, scrollState, updateScrollState, showScrollbar, thumbHeight, thumbTop, handleThumbMouseDown, handleTrackClick, handleScrollbarKeyDown, } = useScrollbar.useScrollbar({ recalcDeps });
14
+ const hasContentBelow = scrollState.scrollHeight > scrollState.clientHeight &&
15
+ scrollState.scrollTop + scrollState.clientHeight < scrollState.scrollHeight - 1;
16
+ return (React.createElement("div", { className: b({ 'bottom-shadow': hasContentBelow }, className) },
17
+ React.createElement("div", { id: scrollableContentId, ref: scrollRef, className: b('scrollable-inner'), onScroll: updateScrollState }, children),
18
+ showScrollbar && (React.createElement("div", { className: b('scrollbar'), role: "scrollbar", "aria-controls": scrollableContentId, "aria-orientation": "vertical", "aria-valuenow": scrollState.scrollTop, "aria-valuemin": 0, "aria-valuemax": scrollState.scrollHeight - scrollState.clientHeight, tabIndex: 0, onKeyDown: handleScrollbarKeyDown },
19
+ React.createElement("div", { className: b('scrollbar-track'), onClick: handleTrackClick },
20
+ React.createElement("div", { className: b('scrollbar-thumb'), style: {
21
+ height: thumbHeight,
22
+ transform: `translateY(${thumbTop}px)`,
23
+ }, onMouseDown: handleThumbMouseDown }))))));
24
+ };
25
+
26
+ exports.ScrollableWithScrollbar = ScrollableWithScrollbar;
27
+ //# sourceMappingURL=ScrollableWithScrollbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollableWithScrollbar.js","sources":["../../../../../../../../src/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.tsx"],"sourcesContent":["import React, {FC, ReactNode, useId} from 'react';\n\nimport {createBlock} from '../../../../utils/cn';\n\nimport {useScrollbar} from './useScrollbar';\n\nimport styles from './ScrollableWithScrollbar.module.scss';\n\nconst b = createBlock('scrollable-with-scrollbar', styles);\n\nconst EMPTY_DEPS: React.DependencyList = [];\n\ntype ScrollableWithScrollbarProps = {\n children: ReactNode;\n className?: string;\n recalcDeps?: React.DependencyList;\n};\n\nexport const ScrollableWithScrollbar: FC<ScrollableWithScrollbarProps> = ({\n children,\n className,\n recalcDeps = EMPTY_DEPS,\n}) => {\n const scrollableContentId = useId();\n const {\n scrollRef,\n scrollState,\n updateScrollState,\n showScrollbar,\n thumbHeight,\n thumbTop,\n handleThumbMouseDown,\n handleTrackClick,\n handleScrollbarKeyDown,\n } = useScrollbar({recalcDeps});\n\n const hasContentBelow =\n scrollState.scrollHeight > scrollState.clientHeight &&\n scrollState.scrollTop + scrollState.clientHeight < scrollState.scrollHeight - 1;\n\n return (\n <div className={b({'bottom-shadow': hasContentBelow}, className)}>\n <div\n id={scrollableContentId}\n ref={scrollRef}\n className={b('scrollable-inner')}\n onScroll={updateScrollState}\n >\n {children}\n </div>\n\n {showScrollbar && (\n <div\n className={b('scrollbar')}\n role=\"scrollbar\"\n aria-controls={scrollableContentId}\n aria-orientation=\"vertical\"\n aria-valuenow={scrollState.scrollTop}\n aria-valuemin={0}\n aria-valuemax={scrollState.scrollHeight - scrollState.clientHeight}\n tabIndex={0}\n onKeyDown={handleScrollbarKeyDown}\n >\n <div className={b('scrollbar-track')} onClick={handleTrackClick}>\n <div\n className={b('scrollbar-thumb')}\n style={{\n height: thumbHeight,\n transform: `translateY(${thumbTop}px)`,\n }}\n onMouseDown={handleThumbMouseDown}\n />\n </div>\n </div>\n )}\n </div>\n );\n};\n"],"names":["createBlock","styles","useId","useScrollbar"],"mappings":";;;;;;;AAQA,MAAM,CAAC,GAAGA,cAAW,CAAC,2BAA2B,EAAEC,sCAAM,CAAC;AAE1D,MAAM,UAAU,GAAyB,EAAE;AAQpC,MAAM,uBAAuB,GAAqC,CAAC,EACtE,QAAQ,EACR,SAAS,EACT,UAAU,GAAG,UAAU,GAC1B,KAAI;AACD,IAAA,MAAM,mBAAmB,GAAGC,WAAK,EAAE;IACnC,MAAM,EACF,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,QAAQ,EACR,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,GACzB,GAAGC,yBAAY,CAAC,EAAC,UAAU,EAAC,CAAC;IAE9B,MAAM,eAAe,GACjB,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY;AACnD,QAAA,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,GAAG,CAAC;AAEnF,IAAA,QACI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAC,CAAC,EAAC,eAAe,EAAE,eAAe,EAAC,EAAE,SAAS,CAAC,EAAA;QAC5D,KACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,EAAE,EAAE,mBAAmB,EACvB,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,CAAC,CAAC,kBAAkB,CAAC,EAChC,QAAQ,EAAE,iBAAiB,EAAA,EAE1B,QAAQ,CACP;AAEL,QAAA,aAAa,KACV,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAE,CAAC,CAAC,WAAW,CAAC,EACzB,IAAI,EAAC,WAAW,mBACD,mBAAmB,EAAA,kBAAA,EACjB,UAAU,EACZ,eAAA,EAAA,WAAW,CAAC,SAAS,mBACrB,CAAC,EAAA,eAAA,EACD,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,EAClE,QAAQ,EAAE,CAAC,EACX,SAAS,EAAE,sBAAsB,EAAA;YAEjC,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,CAAC,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAA;gBAC3D,KACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,CAAC,CAAC,iBAAiB,CAAC,EAC/B,KAAK,EAAE;AACH,wBAAA,MAAM,EAAE,WAAW;wBACnB,SAAS,EAAE,CAAc,WAAA,EAAA,QAAQ,CAAK,GAAA,CAAA;qBACzC,EACD,WAAW,EAAE,oBAAoB,EAAA,CACnC,CACA,CACJ,CACT,CACC;AAEd;;;;"}
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var styles = {"gn-scrollable-with-scrollbar":"ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar___S-GKS","gnScrollableWithScrollbar":"ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar___S-GKS","gn-scrollable-with-scrollbar_bottom-shadow":"ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar_bottom-shadow___YoCCZ","gnScrollableWithScrollbarBottomShadow":"ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar_bottom-shadow___YoCCZ","gn-scrollable-with-scrollbar__scrollable-inner":"ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar__scrollable-inner___yRIza","gnScrollableWithScrollbarScrollableInner":"ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar__scrollable-inner___yRIza","gn-scrollable-with-scrollbar__scrollbar":"ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar__scrollbar___igCbU","gnScrollableWithScrollbarScrollbar":"ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar__scrollbar___igCbU","gn-scrollable-with-scrollbar__scrollbar-track":"ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar__scrollbar-track___u6MVN","gnScrollableWithScrollbarScrollbarTrack":"ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar__scrollbar-track___u6MVN","gn-scrollable-with-scrollbar__scrollbar-thumb":"ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar__scrollbar-thumb___bLf6h","gnScrollableWithScrollbarScrollbarThumb":"ScrollableWithScrollbar-module__gn-scrollable-with-scrollbar__scrollbar-thumb___bLf6h"};
6
+
7
+ exports.default = styles;
8
+ //# sourceMappingURL=ScrollableWithScrollbar.module.scss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollableWithScrollbar.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -0,0 +1 @@
1
+ export { ScrollableWithScrollbar } from './ScrollableWithScrollbar';
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ type ScrollbarState = {
3
+ scrollTop: number;
4
+ scrollHeight: number;
5
+ clientHeight: number;
6
+ };
7
+ type UseScrollbarOptions = {
8
+ recalcDeps?: React.DependencyList;
9
+ };
10
+ export declare function useScrollbar(options?: UseScrollbarOptions): {
11
+ scrollRef: React.RefObject<HTMLDivElement>;
12
+ scrollState: ScrollbarState;
13
+ updateScrollState: () => void;
14
+ showScrollbar: boolean;
15
+ thumbHeight: number;
16
+ thumbTop: number;
17
+ handleThumbMouseDown: (e: React.MouseEvent) => void;
18
+ handleTrackClick: (e: React.MouseEvent<HTMLDivElement>) => void;
19
+ handleScrollbarKeyDown: (e: React.KeyboardEvent) => void;
20
+ };
21
+ export {};
@@ -0,0 +1,146 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+
5
+ const DEFAULT_SCROLLBAR_THUMB_HEIGHT = 20;
6
+ const EMPTY_DEPS = [];
7
+ function useScrollbar(options = {}) {
8
+ const { recalcDeps = EMPTY_DEPS } = options;
9
+ const scrollRef = React.useRef(null);
10
+ const [scrollState, setScrollState] = React.useState({
11
+ scrollTop: 0,
12
+ scrollHeight: 0,
13
+ clientHeight: 0,
14
+ });
15
+ const thumbDragRef = React.useRef({ isDragging: false, startY: 0, startScrollTop: 0 });
16
+ const dragCleanupRef = React.useRef(null);
17
+ const updateScrollState = React.useCallback(() => {
18
+ const el = scrollRef.current;
19
+ if (!el)
20
+ return;
21
+ setScrollState({
22
+ scrollTop: el.scrollTop,
23
+ scrollHeight: el.scrollHeight,
24
+ clientHeight: el.clientHeight,
25
+ });
26
+ }, []);
27
+ React.useEffect(() => {
28
+ const el = scrollRef.current;
29
+ if (!el)
30
+ return;
31
+ updateScrollState();
32
+ const observer = new ResizeObserver(updateScrollState);
33
+ observer.observe(el);
34
+ return () => observer.disconnect();
35
+ }, [updateScrollState, ...recalcDeps]);
36
+ const handleThumbMouseDown = React.useCallback((e) => {
37
+ e.preventDefault();
38
+ if (!scrollRef.current)
39
+ return;
40
+ thumbDragRef.current = {
41
+ isDragging: true,
42
+ startY: e.clientY,
43
+ startScrollTop: scrollRef.current.scrollTop,
44
+ };
45
+ const onMouseMove = (moveEvent) => {
46
+ if (!thumbDragRef.current.isDragging || !scrollRef.current)
47
+ return;
48
+ const { scrollHeight, clientHeight } = scrollRef.current;
49
+ const trackHeight = clientHeight;
50
+ const maxScroll = scrollHeight - clientHeight;
51
+ if (maxScroll <= 0)
52
+ return;
53
+ const deltaY = moveEvent.clientY - thumbDragRef.current.startY;
54
+ const thumbRatio = trackHeight / scrollHeight;
55
+ const scrollDelta = deltaY / thumbRatio;
56
+ scrollRef.current.scrollTop = Math.min(maxScroll, Math.max(0, thumbDragRef.current.startScrollTop + scrollDelta));
57
+ thumbDragRef.current.startY = moveEvent.clientY;
58
+ thumbDragRef.current.startScrollTop = scrollRef.current.scrollTop;
59
+ };
60
+ const removeListeners = () => {
61
+ document.removeEventListener('mousemove', onMouseMove);
62
+ document.removeEventListener('mouseup', onMouseUp);
63
+ dragCleanupRef.current = null;
64
+ };
65
+ const onMouseUp = () => {
66
+ thumbDragRef.current.isDragging = false;
67
+ removeListeners();
68
+ };
69
+ dragCleanupRef.current = removeListeners;
70
+ document.addEventListener('mousemove', onMouseMove);
71
+ document.addEventListener('mouseup', onMouseUp);
72
+ }, []);
73
+ React.useEffect(() => {
74
+ return () => {
75
+ var _a;
76
+ (_a = dragCleanupRef.current) === null || _a === undefined ? undefined : _a.call(dragCleanupRef);
77
+ };
78
+ }, []);
79
+ const handleTrackClick = React.useCallback((e) => {
80
+ if (!scrollRef.current || e.target !== e.currentTarget)
81
+ return;
82
+ const { scrollHeight, clientHeight } = scrollRef.current;
83
+ const maxScroll = scrollHeight - clientHeight;
84
+ if (maxScroll <= 0)
85
+ return;
86
+ const rect = e.currentTarget.getBoundingClientRect();
87
+ const ratio = (e.clientY - rect.top) / rect.height;
88
+ scrollRef.current.scrollTop = ratio * maxScroll;
89
+ }, []);
90
+ const handleScrollbarKeyDown = React.useCallback((e) => {
91
+ const el = scrollRef.current;
92
+ if (!el)
93
+ return;
94
+ const { scrollHeight, clientHeight } = el;
95
+ const maxScroll = scrollHeight - clientHeight;
96
+ if (maxScroll <= 0)
97
+ return;
98
+ const step = Math.max(20, clientHeight * 0.2);
99
+ let newScrollTop = el.scrollTop;
100
+ switch (e.key) {
101
+ case 'ArrowDown':
102
+ e.preventDefault();
103
+ newScrollTop = Math.min(maxScroll, el.scrollTop + step);
104
+ break;
105
+ case 'ArrowUp':
106
+ e.preventDefault();
107
+ newScrollTop = Math.max(0, el.scrollTop - step);
108
+ break;
109
+ case 'End':
110
+ e.preventDefault();
111
+ newScrollTop = maxScroll;
112
+ break;
113
+ case 'Home':
114
+ e.preventDefault();
115
+ newScrollTop = 0;
116
+ break;
117
+ default:
118
+ return;
119
+ }
120
+ el.scrollTop = newScrollTop;
121
+ updateScrollState();
122
+ }, [updateScrollState]);
123
+ const showScrollbar = scrollState.scrollHeight > scrollState.clientHeight && scrollState.scrollHeight > 0;
124
+ const thumbRatio = scrollState.scrollHeight > 0 ? scrollState.clientHeight / scrollState.scrollHeight : 0;
125
+ const thumbHeight = Math.max(DEFAULT_SCROLLBAR_THUMB_HEIGHT, scrollState.clientHeight * thumbRatio);
126
+ const trackHeight = scrollState.clientHeight;
127
+ const thumbMaxTop = trackHeight - thumbHeight;
128
+ const thumbTop = trackHeight > thumbHeight && scrollState.scrollHeight > scrollState.clientHeight
129
+ ? (scrollState.scrollTop / (scrollState.scrollHeight - scrollState.clientHeight)) *
130
+ thumbMaxTop
131
+ : 0;
132
+ return {
133
+ scrollRef,
134
+ scrollState,
135
+ updateScrollState,
136
+ showScrollbar,
137
+ thumbHeight,
138
+ thumbTop,
139
+ handleThumbMouseDown,
140
+ handleTrackClick,
141
+ handleScrollbarKeyDown,
142
+ };
143
+ }
144
+
145
+ exports.useScrollbar = useScrollbar;
146
+ //# sourceMappingURL=useScrollbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScrollbar.js","sources":["../../../../../../../../src/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollbar.ts"],"sourcesContent":["import React, {useCallback, useEffect, useRef, useState} from 'react';\n\ntype ScrollbarState = {\n scrollTop: number;\n scrollHeight: number;\n clientHeight: number;\n};\n\ntype UseScrollbarOptions = {\n recalcDeps?: React.DependencyList;\n};\n\nconst DEFAULT_SCROLLBAR_THUMB_HEIGHT = 20;\n\nconst EMPTY_DEPS: React.DependencyList = [];\n\nexport function useScrollbar(options: UseScrollbarOptions = {}) {\n const {recalcDeps = EMPTY_DEPS} = options;\n const scrollRef = useRef<HTMLDivElement>(null);\n const [scrollState, setScrollState] = useState<ScrollbarState>({\n scrollTop: 0,\n scrollHeight: 0,\n clientHeight: 0,\n });\n const thumbDragRef = useRef({isDragging: false, startY: 0, startScrollTop: 0});\n const dragCleanupRef = useRef<(() => void) | null>(null);\n\n const updateScrollState = useCallback(() => {\n const el = scrollRef.current;\n\n if (!el) return;\n\n setScrollState({\n scrollTop: el.scrollTop,\n scrollHeight: el.scrollHeight,\n clientHeight: el.clientHeight,\n });\n }, []);\n\n useEffect(() => {\n const el = scrollRef.current;\n\n if (!el) return;\n\n updateScrollState();\n\n const observer = new ResizeObserver(updateScrollState);\n observer.observe(el);\n\n return () => observer.disconnect();\n }, [updateScrollState, ...recalcDeps]);\n\n const handleThumbMouseDown = useCallback((e: React.MouseEvent) => {\n e.preventDefault();\n\n if (!scrollRef.current) return;\n\n thumbDragRef.current = {\n isDragging: true,\n startY: e.clientY,\n startScrollTop: scrollRef.current.scrollTop,\n };\n\n const onMouseMove = (moveEvent: MouseEvent) => {\n if (!thumbDragRef.current.isDragging || !scrollRef.current) return;\n const {scrollHeight, clientHeight} = scrollRef.current;\n const trackHeight = clientHeight;\n const maxScroll = scrollHeight - clientHeight;\n\n if (maxScroll <= 0) return;\n\n const deltaY = moveEvent.clientY - thumbDragRef.current.startY;\n const thumbRatio = trackHeight / scrollHeight;\n const scrollDelta = deltaY / thumbRatio;\n\n scrollRef.current.scrollTop = Math.min(\n maxScroll,\n Math.max(0, thumbDragRef.current.startScrollTop + scrollDelta),\n );\n\n thumbDragRef.current.startY = moveEvent.clientY;\n thumbDragRef.current.startScrollTop = scrollRef.current.scrollTop;\n };\n\n const removeListeners = () => {\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', onMouseUp);\n dragCleanupRef.current = null;\n };\n\n const onMouseUp = () => {\n thumbDragRef.current.isDragging = false;\n removeListeners();\n };\n\n dragCleanupRef.current = removeListeners;\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', onMouseUp);\n }, []);\n\n useEffect(() => {\n return () => {\n dragCleanupRef.current?.();\n };\n }, []);\n\n const handleTrackClick = useCallback((e: React.MouseEvent<HTMLDivElement>) => {\n if (!scrollRef.current || e.target !== e.currentTarget) return;\n\n const {scrollHeight, clientHeight} = scrollRef.current;\n const maxScroll = scrollHeight - clientHeight;\n\n if (maxScroll <= 0) return;\n\n const rect = e.currentTarget.getBoundingClientRect();\n const ratio = (e.clientY - rect.top) / rect.height;\n\n scrollRef.current.scrollTop = ratio * maxScroll;\n }, []);\n\n const handleScrollbarKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n const el = scrollRef.current;\n if (!el) return;\n\n const {scrollHeight, clientHeight} = el;\n const maxScroll = scrollHeight - clientHeight;\n if (maxScroll <= 0) return;\n\n const step = Math.max(20, clientHeight * 0.2);\n let newScrollTop = el.scrollTop;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n newScrollTop = Math.min(maxScroll, el.scrollTop + step);\n break;\n case 'ArrowUp':\n e.preventDefault();\n newScrollTop = Math.max(0, el.scrollTop - step);\n break;\n case 'End':\n e.preventDefault();\n newScrollTop = maxScroll;\n break;\n case 'Home':\n e.preventDefault();\n newScrollTop = 0;\n break;\n default:\n return;\n }\n\n el.scrollTop = newScrollTop;\n updateScrollState();\n },\n [updateScrollState],\n );\n\n const showScrollbar =\n scrollState.scrollHeight > scrollState.clientHeight && scrollState.scrollHeight > 0;\n const thumbRatio =\n scrollState.scrollHeight > 0 ? scrollState.clientHeight / scrollState.scrollHeight : 0;\n const thumbHeight = Math.max(\n DEFAULT_SCROLLBAR_THUMB_HEIGHT,\n scrollState.clientHeight * thumbRatio,\n );\n const trackHeight = scrollState.clientHeight;\n const thumbMaxTop = trackHeight - thumbHeight;\n const thumbTop =\n trackHeight > thumbHeight && scrollState.scrollHeight > scrollState.clientHeight\n ? (scrollState.scrollTop / (scrollState.scrollHeight - scrollState.clientHeight)) *\n thumbMaxTop\n : 0;\n\n return {\n scrollRef,\n scrollState,\n updateScrollState,\n showScrollbar,\n thumbHeight,\n thumbTop,\n handleThumbMouseDown,\n handleTrackClick,\n handleScrollbarKeyDown,\n };\n}\n"],"names":["useRef","useState","useCallback","useEffect"],"mappings":";;;;AAYA,MAAM,8BAA8B,GAAG,EAAE;AAEzC,MAAM,UAAU,GAAyB,EAAE;AAE3B,SAAA,YAAY,CAAC,OAAA,GAA+B,EAAE,EAAA;AAC1D,IAAA,MAAM,EAAC,UAAU,GAAG,UAAU,EAAC,GAAG,OAAO;AACzC,IAAA,MAAM,SAAS,GAAGA,YAAM,CAAiB,IAAI,CAAC;AAC9C,IAAA,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAGC,cAAQ,CAAiB;AAC3D,QAAA,SAAS,EAAE,CAAC;AACZ,QAAA,YAAY,EAAE,CAAC;AACf,QAAA,YAAY,EAAE,CAAC;AAClB,KAAA,CAAC;AACF,IAAA,MAAM,YAAY,GAAGD,YAAM,CAAC,EAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAC,CAAC;AAC9E,IAAA,MAAM,cAAc,GAAGA,YAAM,CAAsB,IAAI,CAAC;AAExD,IAAA,MAAM,iBAAiB,GAAGE,iBAAW,CAAC,MAAK;AACvC,QAAA,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO;AAE5B,QAAA,IAAI,CAAC,EAAE;YAAE;AAET,QAAA,cAAc,CAAC;YACX,SAAS,EAAE,EAAE,CAAC,SAAS;YACvB,YAAY,EAAE,EAAE,CAAC,YAAY;YAC7B,YAAY,EAAE,EAAE,CAAC,YAAY;AAChC,SAAA,CAAC;KACL,EAAE,EAAE,CAAC;IAENC,eAAS,CAAC,MAAK;AACX,QAAA,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO;AAE5B,QAAA,IAAI,CAAC,EAAE;YAAE;AAET,QAAA,iBAAiB,EAAE;AAEnB,QAAA,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,iBAAiB,CAAC;AACtD,QAAA,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;AAEpB,QAAA,OAAO,MAAM,QAAQ,CAAC,UAAU,EAAE;KACrC,EAAE,CAAC,iBAAiB,EAAE,GAAG,UAAU,CAAC,CAAC;AAEtC,IAAA,MAAM,oBAAoB,GAAGD,iBAAW,CAAC,CAAC,CAAmB,KAAI;QAC7D,CAAC,CAAC,cAAc,EAAE;QAElB,IAAI,CAAC,SAAS,CAAC,OAAO;YAAE;QAExB,YAAY,CAAC,OAAO,GAAG;AACnB,YAAA,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,CAAC,CAAC,OAAO;AACjB,YAAA,cAAc,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS;SAC9C;AAED,QAAA,MAAM,WAAW,GAAG,CAAC,SAAqB,KAAI;YAC1C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,OAAO;gBAAE;YAC5D,MAAM,EAAC,YAAY,EAAE,YAAY,EAAC,GAAG,SAAS,CAAC,OAAO;YACtD,MAAM,WAAW,GAAG,YAAY;AAChC,YAAA,MAAM,SAAS,GAAG,YAAY,GAAG,YAAY;YAE7C,IAAI,SAAS,IAAI,CAAC;gBAAE;YAEpB,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM;AAC9D,YAAA,MAAM,UAAU,GAAG,WAAW,GAAG,YAAY;AAC7C,YAAA,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU;YAEvC,SAAS,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAClC,SAAS,EACT,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,cAAc,GAAG,WAAW,CAAC,CACjE;YAED,YAAY,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,OAAO;YAC/C,YAAY,CAAC,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS;AACrE,SAAC;QAED,MAAM,eAAe,GAAG,MAAK;AACzB,YAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC;AACtD,YAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC;AAClD,YAAA,cAAc,CAAC,OAAO,GAAG,IAAI;AACjC,SAAC;QAED,MAAM,SAAS,GAAG,MAAK;AACnB,YAAA,YAAY,CAAC,OAAO,CAAC,UAAU,GAAG,KAAK;AACvC,YAAA,eAAe,EAAE;AACrB,SAAC;AAED,QAAA,cAAc,CAAC,OAAO,GAAG,eAAe;AACxC,QAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC;AACnD,QAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC;KAClD,EAAE,EAAE,CAAC;IAENC,eAAS,CAAC,MAAK;AACX,QAAA,OAAO,MAAK;;AACR,YAAA,CAAA,EAAA,GAAA,cAAc,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,SAAA,GAAA,SAAA,GAAA,EAAA,CAAA,IAAA,CAAA,cAAA,CAAI;AAC9B,SAAC;KACJ,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,gBAAgB,GAAGD,iBAAW,CAAC,CAAC,CAAmC,KAAI;QACzE,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,aAAa;YAAE;QAExD,MAAM,EAAC,YAAY,EAAE,YAAY,EAAC,GAAG,SAAS,CAAC,OAAO;AACtD,QAAA,MAAM,SAAS,GAAG,YAAY,GAAG,YAAY;QAE7C,IAAI,SAAS,IAAI,CAAC;YAAE;QAEpB,MAAM,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,qBAAqB,EAAE;AACpD,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM;QAElD,SAAS,CAAC,OAAO,CAAC,SAAS,GAAG,KAAK,GAAG,SAAS;KAClD,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,sBAAsB,GAAGA,iBAAW,CACtC,CAAC,CAAsB,KAAI;AACvB,QAAA,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO;AAC5B,QAAA,IAAI,CAAC,EAAE;YAAE;AAET,QAAA,MAAM,EAAC,YAAY,EAAE,YAAY,EAAC,GAAG,EAAE;AACvC,QAAA,MAAM,SAAS,GAAG,YAAY,GAAG,YAAY;QAC7C,IAAI,SAAS,IAAI,CAAC;YAAE;AAEpB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,YAAY,GAAG,GAAG,CAAC;AAC7C,QAAA,IAAI,YAAY,GAAG,EAAE,CAAC,SAAS;AAE/B,QAAA,QAAQ,CAAC,CAAC,GAAG;AACT,YAAA,KAAK,WAAW;gBACZ,CAAC,CAAC,cAAc,EAAE;AAClB,gBAAA,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;gBACvD;AACJ,YAAA,KAAK,SAAS;gBACV,CAAC,CAAC,cAAc,EAAE;AAClB,gBAAA,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;gBAC/C;AACJ,YAAA,KAAK,KAAK;gBACN,CAAC,CAAC,cAAc,EAAE;gBAClB,YAAY,GAAG,SAAS;gBACxB;AACJ,YAAA,KAAK,MAAM;gBACP,CAAC,CAAC,cAAc,EAAE;gBAClB,YAAY,GAAG,CAAC;gBAChB;AACJ,YAAA;gBACI;;AAGR,QAAA,EAAE,CAAC,SAAS,GAAG,YAAY;AAC3B,QAAA,iBAAiB,EAAE;AACvB,KAAC,EACD,CAAC,iBAAiB,CAAC,CACtB;AAED,IAAA,MAAM,aAAa,GACf,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,IAAI,WAAW,CAAC,YAAY,GAAG,CAAC;IACvF,MAAM,UAAU,GACZ,WAAW,CAAC,YAAY,GAAG,CAAC,GAAG,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,GAAG,CAAC;AAC1F,IAAA,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CACxB,8BAA8B,EAC9B,WAAW,CAAC,YAAY,GAAG,UAAU,CACxC;AACD,IAAA,MAAM,WAAW,GAAG,WAAW,CAAC,YAAY;AAC5C,IAAA,MAAM,WAAW,GAAG,WAAW,GAAG,WAAW;AAC7C,IAAA,MAAM,QAAQ,GACV,WAAW,GAAG,WAAW,IAAI,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC;AAChE,UAAE,CAAC,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;YAC9E;UACA,CAAC;IAEX,OAAO;QACH,SAAS;QACT,WAAW;QACX,iBAAiB;QACjB,aAAa;QACb,WAAW;QACX,QAAQ;QACR,oBAAoB;QACpB,gBAAgB;QAChB,sBAAsB;KACzB;AACL;;;;"}
@@ -1,4 +1,6 @@
1
1
  import { AsideHeaderItem, MenuItemsWithGroups } from '../../types';
2
- export declare function getItemHeight(compositeItem: MenuItemsWithGroups): number;
3
- export declare function getItemsHeight<T extends AsideHeaderItem>(items: T[]): number;
2
+ export declare function getItemHeight(compositeItem: MenuItemsWithGroups, isCompactMode?: boolean): number;
3
+ export declare function getItemsHeight<T extends AsideHeaderItem>(items: T[], isCompactMode?: boolean): number;
4
4
  export declare function getSelectedItemIndex(compositeItems: AsideHeaderItem[]): number | undefined;
5
+ export declare function getVisibleItemsWithFilteredDividers(items: MenuItemsWithGroups[], allPagesId?: string): MenuItemsWithGroups[];
6
+ export declare function filterRedundantDividers<T extends MenuItemsWithGroups>(items: T[], allPagesId?: string): T[];
@@ -3,14 +3,14 @@
3
3
  var constants = require('../../../constants.js');
4
4
  var getGroupHeight$1 = require('../../utils/getGroupHeight.js');
5
5
 
6
- function getGroupHeight(compositeItem) {
6
+ function getGroupHeight(compositeItem, isCompactMode) {
7
7
  const visibleGroupItems = compositeItem.isCollapsed ? [] : compositeItem.items;
8
- return getGroupHeight$1.getGroupBlockHeight(visibleGroupItems);
8
+ return getGroupHeight$1.getGroupBlockHeight(visibleGroupItems, isCompactMode);
9
9
  }
10
- function getItemHeight(compositeItem) {
10
+ function getItemHeight(compositeItem, isCompactMode) {
11
11
  var _a;
12
12
  if ('items' in compositeItem && compositeItem.items && ((_a = compositeItem.items) === null || _a === undefined ? undefined : _a.length) > 0) {
13
- return getGroupHeight(compositeItem);
13
+ return getGroupHeight(compositeItem, isCompactMode);
14
14
  }
15
15
  switch (compositeItem.type) {
16
16
  case 'action':
@@ -18,18 +18,68 @@ function getItemHeight(compositeItem) {
18
18
  case 'divider':
19
19
  return 15;
20
20
  default:
21
- return constants.ITEM_HEIGHT;
21
+ return isCompactMode ? constants.ITEM_HEIGHT_COMPACT : constants.ITEM_HEIGHT;
22
22
  }
23
23
  }
24
- function getItemsHeight(items) {
25
- return items.reduce((sum, item) => sum + getItemHeight(item), 0);
24
+ function getItemsHeight(items, isCompactMode) {
25
+ const gaps = items.length > 1 ? (items.length - 1) * constants.ITEM_GAP : 0;
26
+ return items.reduce((sum, item) => sum + getItemHeight(item, isCompactMode), 0) + gaps;
26
27
  }
27
28
  function getSelectedItemIndex(compositeItems) {
28
29
  const index = compositeItems.findIndex(({ current }) => Boolean(current));
29
30
  return index === -1 ? undefined : index;
30
31
  }
32
+ /** Removes consecutive dividers so that at most one divider is shown between other items. */
33
+ function filterConsecutiveDividers(items) {
34
+ return items.filter((item, index) => {
35
+ if (item.type !== 'divider') {
36
+ return true;
37
+ }
38
+ const prev = items[index - 1];
39
+ return (prev === null || prev === undefined ? undefined : prev.type) !== 'divider';
40
+ });
41
+ }
42
+ /** Removes dividers from the start and end of the list. */
43
+ function filterLeadingAndTrailingDividers(items) {
44
+ const firstNonDividerIndex = items.findIndex((item) => item.type !== 'divider');
45
+ if (firstNonDividerIndex === -1) {
46
+ return [];
47
+ }
48
+ let lastNonDividerIndex = items.length - 1;
49
+ while (lastNonDividerIndex >= firstNonDividerIndex &&
50
+ items[lastNonDividerIndex].type === 'divider') {
51
+ lastNonDividerIndex--;
52
+ }
53
+ if (lastNonDividerIndex < firstNonDividerIndex) {
54
+ return [];
55
+ }
56
+ return items.slice(firstNonDividerIndex, lastNonDividerIndex + 1);
57
+ }
58
+ function getVisibleItemsWithFilteredDividers(items, allPagesId) {
59
+ const visible = items
60
+ .filter((item) => !item.hidden)
61
+ .map((item) => {
62
+ if ('items' in item && item.items) {
63
+ return Object.assign(Object.assign({}, item), { items: filterRedundantDividers(item.items.filter((nested) => !nested.hidden), allPagesId) });
64
+ }
65
+ return item;
66
+ });
67
+ return filterRedundantDividers(visible, allPagesId);
68
+ }
69
+ function filterRedundantDividers(items, allPagesId) {
70
+ const nonDividers = items.filter((item) => item.type !== 'divider');
71
+ const hasNoNonDividers = nonDividers.length === 0;
72
+ const isOnlyAllPagesItem = nonDividers.length === 1 && allPagesId !== undefined && nonDividers[0].id === allPagesId;
73
+ const hasNoRealContent = hasNoNonDividers || isOnlyAllPagesItem;
74
+ if (hasNoRealContent) {
75
+ return nonDividers;
76
+ }
77
+ return filterLeadingAndTrailingDividers(filterConsecutiveDividers(items));
78
+ }
31
79
 
80
+ exports.filterRedundantDividers = filterRedundantDividers;
32
81
  exports.getItemHeight = getItemHeight;
33
82
  exports.getItemsHeight = getItemsHeight;
34
83
  exports.getSelectedItemIndex = getSelectedItemIndex;
84
+ exports.getVisibleItemsWithFilteredDividers = getVisibleItemsWithFilteredDividers;
35
85
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../../../src/components/AsideHeader/components/CompositeBar/utils.ts"],"sourcesContent":["import {ITEM_HEIGHT} from '../../../constants';\nimport {AsideHeaderItem, GroupedMenuItem, MenuItemsWithGroups} from '../../types';\nimport {getGroupBlockHeight} from '../../utils/getGroupHeight';\n\nfunction getGroupHeight(compositeItem: GroupedMenuItem) {\n const visibleGroupItems = compositeItem.isCollapsed ? [] : compositeItem.items;\n\n return getGroupBlockHeight(visibleGroupItems);\n}\n\nexport function getItemHeight(compositeItem: MenuItemsWithGroups) {\n if ('items' in compositeItem && compositeItem.items && compositeItem.items?.length > 0) {\n return getGroupHeight(compositeItem);\n }\n\n switch (compositeItem.type) {\n case 'action':\n return 50;\n case 'divider':\n return 15;\n\n default:\n return ITEM_HEIGHT;\n }\n}\n\nexport function getItemsHeight<T extends AsideHeaderItem>(items: T[]) {\n return items.reduce((sum, item) => sum + getItemHeight(item), 0);\n}\n\nexport function getSelectedItemIndex(compositeItems: AsideHeaderItem[]) {\n const index = compositeItems.findIndex(({current}) => Boolean(current));\n return index === -1 ? undefined : index;\n}\n"],"names":["getGroupBlockHeight","ITEM_HEIGHT"],"mappings":";;;;;AAIA,SAAS,cAAc,CAAC,aAA8B,EAAA;AAClD,IAAA,MAAM,iBAAiB,GAAG,aAAa,CAAC,WAAW,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK;AAE9E,IAAA,OAAOA,oCAAmB,CAAC,iBAAiB,CAAC;AACjD;AAEM,SAAU,aAAa,CAAC,aAAkC,EAAA;;AAC5D,IAAA,IAAI,OAAO,IAAI,aAAa,IAAI,aAAa,CAAC,KAAK,IAAI,CAAA,CAAA,EAAA,GAAA,aAAa,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,SAAA,GAAA,SAAA,GAAA,EAAA,CAAE,MAAM,IAAG,CAAC,EAAE;AACpF,QAAA,OAAO,cAAc,CAAC,aAAa,CAAC;;AAGxC,IAAA,QAAQ,aAAa,CAAC,IAAI;AACtB,QAAA,KAAK,QAAQ;AACT,YAAA,OAAO,EAAE;AACb,QAAA,KAAK,SAAS;AACV,YAAA,OAAO,EAAE;AAEb,QAAA;AACI,YAAA,OAAOC,qBAAW;;AAE9B;AAEM,SAAU,cAAc,CAA4B,KAAU,EAAA;IAChE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpE;AAEM,SAAU,oBAAoB,CAAC,cAAiC,EAAA;AAClE,IAAA,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,EAAC,OAAO,EAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AACvE,IAAA,OAAO,KAAK,KAAK,EAAE,GAAG,SAAS,GAAG,KAAK;AAC3C;;;;;;"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../../../src/components/AsideHeader/components/CompositeBar/utils.ts"],"sourcesContent":["import {ITEM_GAP, ITEM_HEIGHT, ITEM_HEIGHT_COMPACT} from '../../../constants';\nimport {AsideHeaderItem, GroupedMenuItem, MenuItemsWithGroups} from '../../types';\nimport {getGroupBlockHeight} from '../../utils/getGroupHeight';\n\nfunction getGroupHeight(compositeItem: GroupedMenuItem, isCompactMode?: boolean) {\n const visibleGroupItems = compositeItem.isCollapsed ? [] : compositeItem.items;\n\n return getGroupBlockHeight(visibleGroupItems, isCompactMode);\n}\n\nexport function getItemHeight(compositeItem: MenuItemsWithGroups, isCompactMode?: boolean) {\n if ('items' in compositeItem && compositeItem.items && compositeItem.items?.length > 0) {\n return getGroupHeight(compositeItem, isCompactMode);\n }\n\n switch (compositeItem.type) {\n case 'action':\n return 50;\n case 'divider':\n return 15;\n\n default:\n return isCompactMode ? ITEM_HEIGHT_COMPACT : ITEM_HEIGHT;\n }\n}\n\nexport function getItemsHeight<T extends AsideHeaderItem>(items: T[], isCompactMode?: boolean) {\n const gaps = items.length > 1 ? (items.length - 1) * ITEM_GAP : 0;\n\n return items.reduce((sum, item) => sum + getItemHeight(item, isCompactMode), 0) + gaps;\n}\n\nexport function getSelectedItemIndex(compositeItems: AsideHeaderItem[]) {\n const index = compositeItems.findIndex(({current}) => Boolean(current));\n return index === -1 ? undefined : index;\n}\n\n/** Removes consecutive dividers so that at most one divider is shown between other items. */\nfunction filterConsecutiveDividers<T extends AsideHeaderItem>(items: T[]): T[] {\n return items.filter((item, index) => {\n if (item.type !== 'divider') {\n return true;\n }\n\n const prev = items[index - 1];\n\n return prev?.type !== 'divider';\n });\n}\n\n/** Removes dividers from the start and end of the list. */\nfunction filterLeadingAndTrailingDividers<T extends MenuItemsWithGroups>(items: T[]): T[] {\n const firstNonDividerIndex = items.findIndex((item) => item.type !== 'divider');\n\n if (firstNonDividerIndex === -1) {\n return [];\n }\n\n let lastNonDividerIndex = items.length - 1;\n\n while (\n lastNonDividerIndex >= firstNonDividerIndex &&\n items[lastNonDividerIndex].type === 'divider'\n ) {\n lastNonDividerIndex--;\n }\n\n if (lastNonDividerIndex < firstNonDividerIndex) {\n return [];\n }\n return items.slice(firstNonDividerIndex, lastNonDividerIndex + 1);\n}\n\nexport function getVisibleItemsWithFilteredDividers(\n items: MenuItemsWithGroups[],\n allPagesId?: string,\n) {\n const visible = items\n .filter((item) => !item.hidden)\n .map((item) => {\n if ('items' in item && item.items) {\n return {\n ...item,\n items: filterRedundantDividers(\n item.items.filter((nested) => !nested.hidden),\n allPagesId,\n ),\n };\n }\n return item;\n });\n\n return filterRedundantDividers(visible, allPagesId);\n}\n\nexport function filterRedundantDividers<T extends MenuItemsWithGroups>(\n items: T[],\n allPagesId?: string,\n) {\n const nonDividers = items.filter((item) => item.type !== 'divider');\n const hasNoNonDividers = nonDividers.length === 0;\n const isOnlyAllPagesItem =\n nonDividers.length === 1 && allPagesId !== undefined && nonDividers[0].id === allPagesId;\n const hasNoRealContent = hasNoNonDividers || isOnlyAllPagesItem;\n\n if (hasNoRealContent) {\n return nonDividers;\n }\n\n return filterLeadingAndTrailingDividers(filterConsecutiveDividers(items));\n}\n"],"names":["getGroupBlockHeight","ITEM_HEIGHT_COMPACT","ITEM_HEIGHT","ITEM_GAP"],"mappings":"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"}
@@ -8,6 +8,7 @@ var AsideHeaderContext = require('../AsideHeaderContext.js');
8
8
  var utils = require('../utils.js');
9
9
  var useGroupedMenuItems = require('./AllPagesPanel/useGroupedMenuItems.js');
10
10
  var CompositeBar = require('./CompositeBar/CompositeBar.js');
11
+ var FooterBar = require('./FooterBar/FooterBar.js');
11
12
  var Header = require('./Header.js');
12
13
  var Panels = require('./Panels.js');
13
14
 
@@ -20,26 +21,45 @@ const asideTransitionClassNames = {
20
21
  exitActive: utils.b('aside-transition-exit-active'),
21
22
  };
22
23
  const FirstPanel = React.forwardRef((_props, ref) => {
23
- const { size, onItemClick, headerDecoration, multipleTooltip, onMenuMoreClick, renderFooter, onToggleGroupCollapsed, compact, customBackground, customBackgroundClassName, className, menuItems, menuGroups, qa, onExpand, onFold, isExpanded, } = AsideHeaderContext.useAsideHeaderInnerContext();
24
+ const { size, onItemClick, headerDecoration, onMenuMoreClick, renderFooter, onToggleGroupCollapsed, renderFooterAfter, pinned, customBackground, customBackgroundClassName, className, menuItems, menuGroups, qa, onExpand, onFold, setCollapseBlocker, isExpanded, isCompactMode, } = AsideHeaderContext.useAsideHeaderInnerContext();
24
25
  const flatListItems = useGroupedMenuItems.useGroupedMenuItems(menuItems, menuGroups);
25
26
  const asideRef = React.useRef(null);
26
27
  React.useEffect(() => {
27
28
  uikit.setRef(ref, asideRef.current);
28
29
  }, [ref]);
29
- const isExpandedByHover = compact && isExpanded;
30
+ const isExpandedByHover = !pinned && isExpanded;
31
+ const footerResult = renderFooter === null || renderFooter === undefined ? undefined : renderFooter({
32
+ size,
33
+ isExpanded,
34
+ isPinned: pinned,
35
+ asideRef,
36
+ isCompactMode,
37
+ });
38
+ const canRenderFooterInHorizontalMode = Array.isArray(footerResult) && footerResult.length > 1;
39
+ const renderFooterContent = React.useCallback(() => {
40
+ if (canRenderFooterInHorizontalMode) {
41
+ return (React.createElement(FooterBar.FooterBar, { isPinned: pinned, isExpanded: isExpanded, renderAfter: renderFooterAfter, setCollapseBlocker: setCollapseBlocker }, footerResult));
42
+ }
43
+ return footerResult;
44
+ }, [
45
+ footerResult,
46
+ pinned,
47
+ isExpanded,
48
+ canRenderFooterInHorizontalMode,
49
+ setCollapseBlocker,
50
+ renderFooterAfter,
51
+ ]);
30
52
  return (React.createElement(React.Fragment, null,
31
53
  React.createElement(reactTransitionGroup.CSSTransition, { in: isExpandedByHover, timeout: constants.ASIDE_HEADER_EXPAND_TRANSITION_DELAY, classNames: asideTransitionClassNames },
32
- React.createElement("div", { className: utils.b('aside', className), style: { width: size }, "data-qa": qa, onMouseEnter: onExpand, onMouseLeave: onFold },
54
+ React.createElement("div", { className: utils.b('aside', { ['compact-mode']: isCompactMode }, className), style: { width: size }, "data-qa": qa, onMouseEnter: onExpand, onMouseLeave: onFold },
33
55
  React.createElement("div", { className: utils.b('aside-popup-anchor'), ref: asideRef }),
34
56
  customBackground && (React.createElement("div", { className: utils.b('aside-custom-background', customBackgroundClassName) }, customBackground)),
35
57
  React.createElement("div", { className: utils.b('aside-content', { ['with-decoration']: headerDecoration }) },
36
58
  React.createElement(Header.Header, null),
37
- (flatListItems === null || flatListItems === undefined ? undefined : flatListItems.length) ? (React.createElement(CompositeBar.CompositeBar, { compositeId: MENU_ITEMS_COMPOSITE_ID, className: utils.b('menu-items'), groupClassName: utils.b('menu-items-group'), menuItemClassName: utils.b('menu-item'), compact: !isExpanded, type: "menu", items: flatListItems, onItemClick: onItemClick, onMoreClick: onMenuMoreClick, onToggleGroupCollapsed: onToggleGroupCollapsed, multipleTooltip: multipleTooltip })) : (React.createElement("div", { className: utils.b('menu-items') })),
38
- React.createElement("div", { className: utils.b('footer') }, renderFooter === null || renderFooter === undefined ? undefined : renderFooter({
39
- size,
40
- compact: Boolean(!isExpanded),
41
- asideRef,
42
- }))))),
59
+ (flatListItems === null || flatListItems === undefined ? undefined : flatListItems.length) ? (React.createElement(CompositeBar.CompositeBar, { compositeId: MENU_ITEMS_COMPOSITE_ID, className: utils.b('menu-items'), menuItemClassName: utils.b('menu-item'), isExpanded: isExpanded, type: "menu", items: flatListItems, onItemClick: onItemClick, onMoreClick: onMenuMoreClick, onToggleGroupCollapsed: onToggleGroupCollapsed, isCompactMode: isCompactMode, setCollapseBlocker: setCollapseBlocker })) : (React.createElement("div", { className: utils.b('menu-items') })),
60
+ React.createElement("div", { className: utils.b('footer', {
61
+ horizontal: canRenderFooterInHorizontalMode && pinned,
62
+ }) }, renderFooterContent())))),
43
63
  React.createElement(Panels.Panels, null)));
44
64
  });
45
65
  FirstPanel.displayName = 'FirstPanel';