@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,38 +1,39 @@
1
1
  import { getIsMenuItem } from './getIsMenuItem.js';
2
2
 
3
- /** Sorts menu items while preserving divider positions at their original locations. */
3
+ /** Items that stay at their position when sorting (not draggable). */
4
+ function isFixedPositionItem(item) {
5
+ return item.type === 'divider' || item.type === 'action';
6
+ }
7
+ /**
8
+ * Sorts menu items while preserving divider and action positions at their original locations.
9
+ */
4
10
  function sortMenuItemsWithDividers(oldIndex, newIndex, currentFlatList) {
5
- // Single pass: collect dividers and items
6
- const dividerPositions = [];
7
- const itemsWithoutDividers = [];
11
+ const fixedPositionItems = [];
12
+ const sortableItems = [];
8
13
  currentFlatList.forEach((item, index) => {
9
- if (item.type === 'divider') {
10
- dividerPositions.push({ index, item });
14
+ if (isFixedPositionItem(item)) {
15
+ fixedPositionItems.push({ index, item });
11
16
  }
12
17
  else if (getIsMenuItem(item)) {
13
- itemsWithoutDividers.push(item);
18
+ sortableItems.push(item);
14
19
  }
15
20
  });
16
- if (itemsWithoutDividers[oldIndex] === undefined ||
17
- itemsWithoutDividers[newIndex] === undefined) {
21
+ if (sortableItems[oldIndex] === undefined || sortableItems[newIndex] === undefined) {
18
22
  return currentFlatList;
19
23
  }
20
- const sortedItemsWithoutDividers = [...itemsWithoutDividers];
21
- const [movedElement] = sortedItemsWithoutDividers.splice(oldIndex, 1);
22
- sortedItemsWithoutDividers.splice(newIndex, 0, movedElement);
23
- // Insert dividers back at their original positions in currentFlatList
24
+ const sortedItems = [...sortableItems];
25
+ const [movedElement] = sortedItems.splice(oldIndex, 1);
26
+ sortedItems.splice(newIndex, 0, movedElement);
24
27
  const result = [];
25
- const dividerMap = new Map(dividerPositions.map((d) => [d.index, d.item]));
26
- let sortedIndex = 0;
28
+ const fixedMap = new Map(fixedPositionItems.map((f) => [f.index, f.item]));
29
+ let sortableIndex = 0;
27
30
  for (let originalIndex = 0; originalIndex < currentFlatList.length; originalIndex++) {
28
- const dividerItem = dividerMap.get(originalIndex);
29
- if (dividerItem) {
30
- // Insert divider at its original position
31
- result.push(dividerItem);
31
+ const fixedItem = fixedMap.get(originalIndex);
32
+ if (fixedItem) {
33
+ result.push(fixedItem);
32
34
  }
33
- else if (sortedIndex < sortedItemsWithoutDividers.length) {
34
- // Insert item from sorted array (without dividers)
35
- result.push(sortedItemsWithoutDividers[sortedIndex++]);
35
+ else if (sortableIndex < sortedItems.length) {
36
+ result.push(sortedItems[sortableIndex++]);
36
37
  }
37
38
  }
38
39
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"sortMenuItemsWithDividers.js","sources":["../../../../../../../../src/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItemsWithDividers.ts"],"sourcesContent":["import {MenuItemsWithGroups} from '../../../types';\n\nimport {getIsMenuItem} from './getIsMenuItem';\n\n/** Sorts menu items while preserving divider positions at their original locations. */\nexport function sortMenuItemsWithDividers(\n oldIndex: number,\n newIndex: number,\n currentFlatList: MenuItemsWithGroups[],\n): MenuItemsWithGroups[] {\n // Single pass: collect dividers and items\n const dividerPositions: Array<{index: number; item: MenuItemsWithGroups}> = [];\n const itemsWithoutDividers: MenuItemsWithGroups[] = [];\n\n currentFlatList.forEach((item, index) => {\n if (item.type === 'divider') {\n dividerPositions.push({index, item});\n } else if (getIsMenuItem(item)) {\n itemsWithoutDividers.push(item);\n }\n });\n\n if (\n itemsWithoutDividers[oldIndex] === undefined ||\n itemsWithoutDividers[newIndex] === undefined\n ) {\n return currentFlatList;\n }\n\n const sortedItemsWithoutDividers = [...itemsWithoutDividers];\n const [movedElement] = sortedItemsWithoutDividers.splice(oldIndex, 1);\n sortedItemsWithoutDividers.splice(newIndex, 0, movedElement);\n\n // Insert dividers back at their original positions in currentFlatList\n const result: MenuItemsWithGroups[] = [];\n const dividerMap = new Map(dividerPositions.map((d) => [d.index, d.item]));\n let sortedIndex = 0;\n\n for (let originalIndex = 0; originalIndex < currentFlatList.length; originalIndex++) {\n const dividerItem = dividerMap.get(originalIndex);\n\n if (dividerItem) {\n // Insert divider at its original position\n result.push(dividerItem);\n } else if (sortedIndex < sortedItemsWithoutDividers.length) {\n // Insert item from sorted array (without dividers)\n result.push(sortedItemsWithoutDividers[sortedIndex++]);\n }\n }\n\n return result;\n}\n"],"names":[],"mappings":";;AAIA;SACgB,yBAAyB,CACrC,QAAgB,EAChB,QAAgB,EAChB,eAAsC,EAAA;;IAGtC,MAAM,gBAAgB,GAAsD,EAAE;IAC9E,MAAM,oBAAoB,GAA0B,EAAE;IAEtD,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACpC,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;YACzB,gBAAgB,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC;;AACjC,aAAA,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE;AAC5B,YAAA,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;;AAEvC,KAAC,CAAC;AAEF,IAAA,IACI,oBAAoB,CAAC,QAAQ,CAAC,KAAK,SAAS;AAC5C,QAAA,oBAAoB,CAAC,QAAQ,CAAC,KAAK,SAAS,EAC9C;AACE,QAAA,OAAO,eAAe;;AAG1B,IAAA,MAAM,0BAA0B,GAAG,CAAC,GAAG,oBAAoB,CAAC;AAC5D,IAAA,MAAM,CAAC,YAAY,CAAC,GAAG,0BAA0B,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrE,0BAA0B,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,CAAC;;IAG5D,MAAM,MAAM,GAA0B,EAAE;IACxC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1E,IAAI,WAAW,GAAG,CAAC;AAEnB,IAAA,KAAK,IAAI,aAAa,GAAG,CAAC,EAAE,aAAa,GAAG,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE;QACjF,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC;QAEjD,IAAI,WAAW,EAAE;;AAEb,YAAA,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;;AACrB,aAAA,IAAI,WAAW,GAAG,0BAA0B,CAAC,MAAM,EAAE;;YAExD,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,CAAC,CAAC;;;AAI9D,IAAA,OAAO,MAAM;AACjB;;;;"}
1
+ {"version":3,"file":"sortMenuItemsWithDividers.js","sources":["../../../../../../../../src/components/AsideHeader/components/AllPagesPanel/utils/sortMenuItemsWithDividers.ts"],"sourcesContent":["import {MenuItemsWithGroups} from '../../../types';\n\nimport {getIsMenuItem} from './getIsMenuItem';\n\n/** Items that stay at their position when sorting (not draggable). */\nfunction isFixedPositionItem(item: MenuItemsWithGroups): boolean {\n return item.type === 'divider' || item.type === 'action';\n}\n\n/**\n * Sorts menu items while preserving divider and action positions at their original locations.\n */\nexport function sortMenuItemsWithDividers(\n oldIndex: number,\n newIndex: number,\n currentFlatList: MenuItemsWithGroups[],\n): MenuItemsWithGroups[] {\n const fixedPositionItems: Array<{index: number; item: MenuItemsWithGroups}> = [];\n const sortableItems: MenuItemsWithGroups[] = [];\n\n currentFlatList.forEach((item, index) => {\n if (isFixedPositionItem(item)) {\n fixedPositionItems.push({index, item});\n } else if (getIsMenuItem(item)) {\n sortableItems.push(item);\n }\n });\n\n if (sortableItems[oldIndex] === undefined || sortableItems[newIndex] === undefined) {\n return currentFlatList;\n }\n\n const sortedItems = [...sortableItems];\n const [movedElement] = sortedItems.splice(oldIndex, 1);\n sortedItems.splice(newIndex, 0, movedElement);\n\n const result: MenuItemsWithGroups[] = [];\n const fixedMap = new Map(fixedPositionItems.map((f) => [f.index, f.item]));\n let sortableIndex = 0;\n\n for (let originalIndex = 0; originalIndex < currentFlatList.length; originalIndex++) {\n const fixedItem = fixedMap.get(originalIndex);\n\n if (fixedItem) {\n result.push(fixedItem);\n } else if (sortableIndex < sortedItems.length) {\n result.push(sortedItems[sortableIndex++]);\n }\n }\n\n return result;\n}\n"],"names":[],"mappings":";;AAIA;AACA,SAAS,mBAAmB,CAAC,IAAyB,EAAA;IAClD,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;AAC5D;AAEA;;AAEG;SACa,yBAAyB,CACrC,QAAgB,EAChB,QAAgB,EAChB,eAAsC,EAAA;IAEtC,MAAM,kBAAkB,GAAsD,EAAE;IAChF,MAAM,aAAa,GAA0B,EAAE;IAE/C,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACpC,QAAA,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE;YAC3B,kBAAkB,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC;;AACnC,aAAA,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE;AAC5B,YAAA,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;;AAEhC,KAAC,CAAC;AAEF,IAAA,IAAI,aAAa,CAAC,QAAQ,CAAC,KAAK,SAAS,IAAI,aAAa,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE;AAChF,QAAA,OAAO,eAAe;;AAG1B,IAAA,MAAM,WAAW,GAAG,CAAC,GAAG,aAAa,CAAC;AACtC,IAAA,MAAM,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtD,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,CAAC;IAE7C,MAAM,MAAM,GAA0B,EAAE;IACxC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1E,IAAI,aAAa,GAAG,CAAC;AAErB,IAAA,KAAK,IAAI,aAAa,GAAG,CAAC,EAAE,aAAa,GAAG,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE;QACjF,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC;QAE7C,IAAI,SAAS,EAAE;AACX,YAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;;AACnB,aAAA,IAAI,aAAa,GAAG,WAAW,CAAC,MAAM,EAAE;YAC3C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC;;;AAIjD,IAAA,OAAO,MAAM;AACjB;;;;"}
@@ -1 +1 @@
1
- .CollapseButton-module__gn-collapse-button_compact___IaLr3 .CollapseButton-module__gn-collapse-button__icon___iMooT{transform:rotate(180deg)}
1
+ .CollapseButton-module__gn-collapse-button_collapsed___c19gr .CollapseButton-module__gn-collapse-button__icon___iMooT{transform:rotate(180deg)}
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  interface CollapseButtonProps {
3
3
  className?: string;
4
+ isCompactMode?: boolean;
4
5
  }
5
- export declare const CollapseButton: ({ className }: CollapseButtonProps) => string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
6
+ export declare const CollapseButton: ({ className, isCompactMode }: CollapseButtonProps) => string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
6
7
  export {};
@@ -1,29 +1,29 @@
1
1
  import './CollapseButton.css';
2
2
  import React__default, { useCallback } from 'react';
3
+ import { ArrowLeftFromLine } from '@gravity-ui/icons';
3
4
  import { Button, Icon } from '@gravity-ui/uikit';
4
5
  import { createBlock } from '../../../utils/cn.js';
5
6
  import { useAsideHeaderContext, useAsideHeaderInnerContext } from '../../AsideHeaderContext.js';
6
7
  import i18n from '../../i18n/index.js';
7
- import ArrowLeftFromLineIcon from '@gravity-ui/icons/svgs/arrow-left-from-line.svg';
8
8
  import styles from './CollapseButton.module.scss.js';
9
9
 
10
10
  const b = createBlock('collapse-button', styles);
11
- const CollapseButton = ({ className }) => {
12
- const { compact, onChangeCompact } = useAsideHeaderContext();
11
+ const CollapseButton = ({ className, isCompactMode }) => {
12
+ const { pinned, onChangePinned } = useAsideHeaderContext();
13
13
  const { expandTitle, collapseTitle, collapseButtonWrapper } = useAsideHeaderInnerContext();
14
14
  const onCollapseButtonClick = useCallback(() => {
15
- const newCompact = !compact;
16
- onChangeCompact === null || onChangeCompact === undefined ? undefined : onChangeCompact(newCompact);
17
- }, [compact, onChangeCompact]);
18
- const buttonTitle = compact
19
- ? expandTitle || i18n('button_expand')
20
- : collapseTitle || i18n('button_collapse');
21
- const defaultButton = (React__default.createElement(Button, { view: "flat-secondary", size: "l", className: b({ compact }, className), onClick: onCollapseButtonClick, "aria-label": buttonTitle, title: buttonTitle },
22
- React__default.createElement(Icon, { data: ArrowLeftFromLineIcon, className: b('icon'), size: 16 })));
15
+ const newPinned = !pinned;
16
+ onChangePinned === null || onChangePinned === undefined ? undefined : onChangePinned(newPinned);
17
+ }, [pinned, onChangePinned]);
18
+ const buttonTitle = pinned
19
+ ? collapseTitle || i18n('button_collapse')
20
+ : expandTitle || i18n('button_expand');
21
+ const defaultButton = (React__default.createElement(Button, { view: "flat-secondary", size: isCompactMode ? 'm' : 'l', className: b({ collapsed: !pinned }, className), onClick: onCollapseButtonClick, "aria-label": buttonTitle, title: buttonTitle },
22
+ React__default.createElement(Icon, { data: ArrowLeftFromLine, className: b('icon'), size: 16 })));
23
23
  if (collapseButtonWrapper) {
24
24
  return collapseButtonWrapper(defaultButton, {
25
- compact,
26
- onChangeCompact,
25
+ isExpanded: pinned,
26
+ onChangePinned,
27
27
  });
28
28
  }
29
29
  return defaultButton;
@@ -1 +1 @@
1
- {"version":3,"file":"CollapseButton.js","sources":["../../../../../../../src/components/AsideHeader/components/CollapseButton/CollapseButton.tsx"],"sourcesContent":["import React, {useCallback} from 'react';\n\nimport {Button, Icon} from '@gravity-ui/uikit';\n\nimport {createBlock} from '../../../utils/cn';\nimport {useAsideHeaderContext, useAsideHeaderInnerContext} from '../../AsideHeaderContext';\nimport i18n from '../../i18n';\n\nimport ArrowLeftFromLineIcon from '@gravity-ui/icons/svgs/arrow-left-from-line.svg';\n\nimport styles from './CollapseButton.module.scss';\n\nconst b = createBlock('collapse-button', styles);\n\ninterface CollapseButtonProps {\n className?: string;\n}\n\nexport const CollapseButton = ({className}: CollapseButtonProps) => {\n const {compact, onChangeCompact} = useAsideHeaderContext();\n const {expandTitle, collapseTitle, collapseButtonWrapper} = useAsideHeaderInnerContext();\n\n const onCollapseButtonClick = useCallback(() => {\n const newCompact = !compact;\n\n onChangeCompact?.(newCompact);\n }, [compact, onChangeCompact]);\n\n const buttonTitle = compact\n ? expandTitle || i18n('button_expand')\n : collapseTitle || i18n('button_collapse');\n\n const defaultButton = (\n <Button\n view=\"flat-secondary\"\n size=\"l\"\n className={b({compact}, className)}\n onClick={onCollapseButtonClick}\n aria-label={buttonTitle}\n title={buttonTitle}\n >\n <Icon data={ArrowLeftFromLineIcon} className={b('icon')} size={16} />\n </Button>\n );\n\n if (collapseButtonWrapper) {\n return collapseButtonWrapper(defaultButton, {\n compact,\n onChangeCompact,\n });\n }\n\n return defaultButton;\n};\n"],"names":["React"],"mappings":";;;;;;;;AAYA,MAAM,CAAC,GAAG,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC;MAMnC,cAAc,GAAG,CAAC,EAAC,SAAS,EAAsB,KAAI;IAC/D,MAAM,EAAC,OAAO,EAAE,eAAe,EAAC,GAAG,qBAAqB,EAAE;IAC1D,MAAM,EAAC,WAAW,EAAE,aAAa,EAAE,qBAAqB,EAAC,GAAG,0BAA0B,EAAE;AAExF,IAAA,MAAM,qBAAqB,GAAG,WAAW,CAAC,MAAK;AAC3C,QAAA,MAAM,UAAU,GAAG,CAAC,OAAO;AAE3B,QAAA,eAAe,aAAf,eAAe,KAAA,SAAA,GAAA,SAAA,GAAf,eAAe,CAAG,UAAU,CAAC;AACjC,KAAC,EAAE,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAE9B,MAAM,WAAW,GAAG;AAChB,UAAE,WAAW,IAAI,IAAI,CAAC,eAAe;AACrC,UAAE,aAAa,IAAI,IAAI,CAAC,iBAAiB,CAAC;AAE9C,IAAA,MAAM,aAAa,IACfA,cAAA,CAAA,aAAA,CAAC,MAAM,EACH,EAAA,IAAI,EAAC,gBAAgB,EACrB,IAAI,EAAC,GAAG,EACR,SAAS,EAAE,CAAC,CAAC,EAAC,OAAO,EAAC,EAAE,SAAS,CAAC,EAClC,OAAO,EAAE,qBAAqB,EAClB,YAAA,EAAA,WAAW,EACvB,KAAK,EAAE,WAAW,EAAA;AAElB,QAAAA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAC,EAAA,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAI,CAAA,CAChE,CACZ;IAED,IAAI,qBAAqB,EAAE;QACvB,OAAO,qBAAqB,CAAC,aAAa,EAAE;YACxC,OAAO;YACP,eAAe;AAClB,SAAA,CAAC;;AAGN,IAAA,OAAO,aAAa;AACxB;;;;"}
1
+ {"version":3,"file":"CollapseButton.js","sources":["../../../../../../../src/components/AsideHeader/components/CollapseButton/CollapseButton.tsx"],"sourcesContent":["import React, {useCallback} from 'react';\n\nimport {ArrowLeftFromLine} from '@gravity-ui/icons';\nimport {Button, Icon} from '@gravity-ui/uikit';\n\nimport {createBlock} from '../../../utils/cn';\nimport {useAsideHeaderContext, useAsideHeaderInnerContext} from '../../AsideHeaderContext';\nimport i18n from '../../i18n';\n\nimport styles from './CollapseButton.module.scss';\n\nconst b = createBlock('collapse-button', styles);\n\ninterface CollapseButtonProps {\n className?: string;\n isCompactMode?: boolean;\n}\n\nexport const CollapseButton = ({className, isCompactMode}: CollapseButtonProps) => {\n const {pinned, onChangePinned} = useAsideHeaderContext();\n const {expandTitle, collapseTitle, collapseButtonWrapper} = useAsideHeaderInnerContext();\n\n const onCollapseButtonClick = useCallback(() => {\n const newPinned = !pinned;\n\n onChangePinned?.(newPinned);\n }, [pinned, onChangePinned]);\n\n const buttonTitle = pinned\n ? collapseTitle || i18n('button_collapse')\n : expandTitle || i18n('button_expand');\n\n const defaultButton = (\n <Button\n view=\"flat-secondary\"\n size={isCompactMode ? 'm' : 'l'}\n className={b({collapsed: !pinned}, className)}\n onClick={onCollapseButtonClick}\n aria-label={buttonTitle}\n title={buttonTitle}\n >\n <Icon data={ArrowLeftFromLine} className={b('icon')} size={16} />\n </Button>\n );\n\n if (collapseButtonWrapper) {\n return collapseButtonWrapper(defaultButton, {\n isExpanded: pinned,\n onChangePinned,\n });\n }\n\n return defaultButton;\n};\n"],"names":["React"],"mappings":";;;;;;;;AAWA,MAAM,CAAC,GAAG,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC;AAOnC,MAAA,cAAc,GAAG,CAAC,EAAC,SAAS,EAAE,aAAa,EAAsB,KAAI;IAC9E,MAAM,EAAC,MAAM,EAAE,cAAc,EAAC,GAAG,qBAAqB,EAAE;IACxD,MAAM,EAAC,WAAW,EAAE,aAAa,EAAE,qBAAqB,EAAC,GAAG,0BAA0B,EAAE;AAExF,IAAA,MAAM,qBAAqB,GAAG,WAAW,CAAC,MAAK;AAC3C,QAAA,MAAM,SAAS,GAAG,CAAC,MAAM;AAEzB,QAAA,cAAc,aAAd,cAAc,KAAA,SAAA,GAAA,SAAA,GAAd,cAAc,CAAG,SAAS,CAAC;AAC/B,KAAC,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAE5B,MAAM,WAAW,GAAG;AAChB,UAAE,aAAa,IAAI,IAAI,CAAC,iBAAiB;AACzC,UAAE,WAAW,IAAI,IAAI,CAAC,eAAe,CAAC;IAE1C,MAAM,aAAa,IACfA,cAAA,CAAA,aAAA,CAAC,MAAM,EACH,EAAA,IAAI,EAAC,gBAAgB,EACrB,IAAI,EAAE,aAAa,GAAG,GAAG,GAAG,GAAG,EAC/B,SAAS,EAAE,CAAC,CAAC,EAAC,SAAS,EAAE,CAAC,MAAM,EAAC,EAAE,SAAS,CAAC,EAC7C,OAAO,EAAE,qBAAqB,EAAA,YAAA,EAClB,WAAW,EACvB,KAAK,EAAE,WAAW,EAAA;AAElB,QAAAA,cAAA,CAAA,aAAA,CAAC,IAAI,EAAC,EAAA,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,EAAI,CAAA,CAC5D,CACZ;IAED,IAAI,qBAAqB,EAAE;QACvB,OAAO,qBAAqB,CAAC,aAAa,EAAE;AACxC,YAAA,UAAU,EAAE,MAAM;YAClB,cAAc;AACjB,SAAA,CAAC;;AAGN,IAAA,OAAO,aAAa;AACxB;;;;"}
@@ -1,4 +1,4 @@
1
- var styles = {"gn-collapse-button_compact":"CollapseButton-module__gn-collapse-button_compact___IaLr3","gnCollapseButtonCompact":"CollapseButton-module__gn-collapse-button_compact___IaLr3","gn-collapse-button__icon":"CollapseButton-module__gn-collapse-button__icon___iMooT","gnCollapseButtonIcon":"CollapseButton-module__gn-collapse-button__icon___iMooT"};
1
+ var styles = {"gn-collapse-button_collapsed":"CollapseButton-module__gn-collapse-button_collapsed___c19gr","gnCollapseButtonCollapsed":"CollapseButton-module__gn-collapse-button_collapsed___c19gr","gn-collapse-button__icon":"CollapseButton-module__gn-collapse-button__icon___iMooT","gnCollapseButtonIcon":"CollapseButton-module__gn-collapse-button__icon___iMooT"};
2
2
 
3
3
  export { styles as default };
4
4
  //# sourceMappingURL=CollapseButton.module.scss.js.map
@@ -1 +1 @@
1
- .CompositeBar-module__gn-composite-bar___WoCDY{--gn-aside-header-item-expanded-radius:6px;display:flex;flex:1 1 auto;flex-direction:column;min-height:40px;width:100%}.CompositeBar-module__gn-composite-bar___WoCDY .CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF[class]{background-color:transparent}.CompositeBar-module__gn-composite-bar__menu-group-header___Yvr21, .CompositeBar-module__gn-composite-bar__menu-group-item___TLcnI, .CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF[class]{margin-bottom:2px}.CompositeBar-module__gn-composite-bar__menu-group-header___Yvr21:last-child, .CompositeBar-module__gn-composite-bar__menu-group-item___TLcnI:last-child, .CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF[class]:last-child{margin-bottom:0}.CompositeBar-module__gn-composite-bar_scrollable___W2xYo{-ms-overflow-style:none;flex:1 1 auto;overflow-y:auto;scrollbar-width:none}.CompositeBar-module__gn-composite-bar_scrollable___W2xYo::-webkit-scrollbar{display:none}.CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF:has(.CompositeBar-module__gn-composite-bar__menu-group___3hCzS){align-items:flex-start}.CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF:has(.CompositeBar-module__gn-composite-bar__menu-group___3hCzS)>.g-list__item-sort-icon{position:relative;top:12px}.CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF:has(.CompositeBar-module__gn-composite-bar__menu-group___3hCzS):not(.CompositeBar-module__gn-composite-bar__root-menu-item_compact___vvKTD) .g-list__item-content{overflow:visible}.CompositeBar-module__gn-composite-bar__menu-group___3hCzS{height:100%;position:relative;width:100%}.CompositeBar-module__gn-composite-bar__menu-group___3hCzS:before{border-left:2px solid var(--g-color-line-generic);border-radius:0;content:"";height:100%;left:0;position:absolute;top:0;transition:border-radius .15s ease-out;width:100%;z-index:-1}.CompositeBar-module__gn-composite-bar__menu-group-header___Yvr21, .CompositeBar-module__gn-composite-bar__menu-group-item___TLcnI{height:36px}.CompositeBar-module__gn-composite-bar__menu-group-item___TLcnI{position:relative}.CompositeBar-module__gn-composite-bar__menu-group-item___TLcnI:last-child{border-radius:0 0 var(--gn-aside-header-item-expanded-radius) var(--gn-aside-header-item-expanded-radius)}.CompositeBar-module__gn-composite-bar__menu-group-item_edit___Es8er:not(.CompositeBar-module__gn-composite-bar__menu-group-item_compact___-7tZl){left:-16px;width:calc(100% + 16px)}.CompositeBar-module__gn-composite-bar__menu-group-header___Yvr21{border-radius:var(--gn-aside-header-item-expanded-radius) var(--gn-aside-header-item-expanded-radius) 0 0}.CompositeBar-module__gn-composite-bar__menu-group-header_collapsed___bTXn1, .CompositeBar-module__gn-composite-bar__menu-group___3hCzS:hover:before, .CompositeBar-module__gn-composite-bar__menu-group_expanded___GY0oS:before, .CompositeBar-module__gn-composite-bar__menu-item_type_regular___8DHUR, .CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF[class]:hover{border-radius:var(--gn-aside-header-item-expanded-radius)}.CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF[class]{transition:border-radius .15s ease-out}.CompositeBar-module__gn-composite-bar__menu-group-toggle-placeholder___vAqkn, .CompositeBar-module__gn-composite-bar__menu-group-toggle___4--VW{align-items:center;cursor:pointer;display:inline-flex;height:24px;width:24px}.CompositeBar-module__gn-composite-bar__menu-group-toggle___4--VW{margin-left:auto}.CompositeBar-module__gn-composite-bar__menu-group-icon___YVg-C{margin-right:var(--g-spacing-3)}
1
+ .CompositeBar-module__gn-composite-bar___WoCDY{background-color:var(--gn-aside-main-background-color);display:flex;flex:1 1 auto;flex-direction:column;min-height:40px;width:100%}.CompositeBar-module__gn-composite-bar___WoCDY .CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF[class]{background-color:transparent}.CompositeBar-module__gn-composite-bar__menu-group-header___Yvr21, .CompositeBar-module__gn-composite-bar__menu-group-item___TLcnI, .CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF[class]{margin-bottom:2px}.CompositeBar-module__gn-composite-bar__menu-group-header___Yvr21:last-child, .CompositeBar-module__gn-composite-bar__menu-group-item___TLcnI:last-child, .CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF[class]:last-child{margin-bottom:0}.CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF:has(.CompositeBar-module__gn-composite-bar__menu-group___3hCzS){align-items:flex-start}.CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF:has(.CompositeBar-module__gn-composite-bar__menu-group___3hCzS)>.g-list__item-sort-icon{position:relative;top:12px}.CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF:has(.CompositeBar-module__gn-composite-bar__menu-group___3hCzS):not(.CompositeBar-module__gn-composite-bar__root-menu-item_compact___vvKTD) .g-list__item-content{overflow:visible}.CompositeBar-module__gn-composite-bar__menu-group___3hCzS{height:100%;position:relative;width:100%}.CompositeBar-module__gn-composite-bar__menu-group___3hCzS:before{background-color:var(--gn-aside-main-group-item-background-color,transparent);border-left:2px solid var(--gn-aside-main-group-border-color,var(--g-color-line-generic));border-radius:0;content:"";height:100%;left:0;position:absolute;top:0;transition:border-radius .15s ease-out;width:100%;z-index:-1}.CompositeBar-module__gn-composite-bar__menu-group___3hCzS:hover:before{border-color:var(--gn-aside-main-group-border-color-hover,var(--g-color-line-generic))}.CompositeBar-module__gn-composite-bar__menu-group-header___Yvr21{height:var(--_--item-height)}.CompositeBar-module__gn-composite-bar__menu-group-item___TLcnI{position:relative}.CompositeBar-module__gn-composite-bar__menu-group-item___TLcnI:last-child .CompositeBar-module__gn-composite-bar__group-item___L1pJ8{border-radius:0 0 var(--gn-aside-header-item-expanded-radius) var(--gn-aside-header-item-expanded-radius)}.CompositeBar-module__gn-composite-bar__menu-group-item_edit___Es8er:not(.CompositeBar-module__gn-composite-bar__menu-group-item_compact___-7tZl){left:-16px;width:calc(100% + 16px)}.CompositeBar-module__gn-composite-bar__menu-group-header___Yvr21:not(.CompositeBar-module__gn-composite-bar__menu-group-header_collapsed___bTXn1){border-radius:var(--gn-aside-header-item-expanded-radius) var(--gn-aside-header-item-expanded-radius) 0 0}.CompositeBar-module__gn-composite-bar__menu-group___3hCzS:hover:before, .CompositeBar-module__gn-composite-bar__menu-group_expanded___GY0oS:before, .CompositeBar-module__gn-composite-bar__menu-item_type_regular___8DHUR, .CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF[class]:hover{border-radius:var(--gn-aside-header-item-expanded-radius)}.CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF[class]{transition:border-radius .15s ease-out}.CompositeBar-module__gn-composite-bar__menu-group-toggle-placeholder___vAqkn, .CompositeBar-module__gn-composite-bar__menu-group-toggle___4--VW{align-items:center;cursor:pointer;display:inline-flex;height:24px;width:24px}.CompositeBar-module__gn-composite-bar__menu-group-toggle___4--VW{margin-left:auto}.CompositeBar-module__gn-composite-bar__menu-group-icon___YVg-C{margin-right:var(--g-spacing-3)}.CompositeBar-module__gn-composite-bar__menu-item___zaw-R[data-type=action]{margin-inline:var(--_--item-margin-inline)}
@@ -1,19 +1,23 @@
1
1
  import React, { FC } from 'react';
2
- import { AsideHeaderItem, MenuItemsWithGroups } from '../../types';
2
+ import { AsideHeaderItem, MenuItemsWithGroups, SetCollapseBlocker } from '../../types';
3
3
  type CompositeBarProps = {
4
4
  type: 'menu' | 'subheader';
5
+ setCollapseBlocker?: SetCollapseBlocker;
5
6
  items?: MenuItemsWithGroups[];
6
- onItemClick?: (item: AsideHeaderItem, collapsed: boolean, event: React.MouseEvent<HTMLElement, MouseEvent>) => void;
7
- multipleTooltip?: boolean;
7
+ onItemClick?: (item: AsideHeaderItem, collapsed: boolean, event: React.MouseEvent<HTMLElement, MouseEvent>, options: {
8
+ setCollapseBlocker: SetCollapseBlocker | undefined;
9
+ }) => void;
8
10
  menuMoreTitle?: string;
9
11
  onMoreClick?: () => void;
10
- compact: boolean;
12
+ /** When `true`, the navigation is expanded. When `false`, it is collapsed. */
13
+ isExpanded: boolean;
11
14
  compositeId?: string;
12
15
  className?: string;
13
- groupClassName?: string;
14
16
  menuItemClassName?: string;
15
17
  editMode?: boolean;
16
18
  onToggleGroupCollapsed?: (groupId: string) => void;
19
+ /** When `true`, menu items use compact height. */
20
+ isCompactMode?: boolean;
17
21
  };
18
22
  type CompositeBarViewProps = CompositeBarProps & {
19
23
  compositeId?: string;
@@ -32,6 +36,8 @@ type CompositeBarViewProps = CompositeBarProps & {
32
36
  oldIndex: number;
33
37
  newIndex: number;
34
38
  }) => void;
39
+ /** When `true`, menu items use compact height. */
40
+ isCompactMode?: boolean;
35
41
  };
36
42
  export declare const CompositeBarView: FC<CompositeBarViewProps>;
37
43
  export declare const CompositeBar: FC<CompositeBarProps>;
@@ -1,127 +1,34 @@
1
1
  import './CompositeBar.css';
2
- import React__default, { useRef, useState, useContext, useCallback } from 'react';
3
- import { ChevronDown, ChevronRight } from '@gravity-ui/icons';
2
+ import React__default, { useRef, useState, useCallback } from 'react';
3
+ import { ChevronRight, ChevronDown } from '@gravity-ui/icons';
4
4
  import { List } from '@gravity-ui/uikit';
5
- import { ASIDE_HEADER_COMPACT_WIDTH } from '../../../constants.js';
6
5
  import { createBlock } from '../../../utils/cn.js';
7
6
  import { UNGROUPED_ID } from '../AllPagesPanel/constants.js';
8
7
  import { Item } from './Item/Item.js';
9
- import { MultipleTooltip } from './MultipleTooltip/MultipleTooltip.js';
10
- import { MultipleTooltipProvider, MultipleTooltipContext } from './MultipleTooltip/MultipleTooltipContext.js';
8
+ import { ScrollableWithScrollbar } from './ScrollableWithScrollbar/ScrollableWithScrollbar.js';
11
9
  import { COLLAPSE_ITEM_ID, ITEM_TYPE_REGULAR } from './constants.js';
12
10
  import { getSelectedItemIndex, getItemHeight, getItemsHeight } from './utils.js';
13
11
  import styles from './CompositeBar.module.scss.js';
14
12
 
15
13
  const b = createBlock('composite-bar', styles);
16
- const CompositeBarView = ({ type, items, onItemClick, onMoreClick, multipleTooltip = false, compositeId, className, groupClassName, menuItemClassName, enableSorting = false, editMode = false, compact, onToggleGroupCollapsed, onToggleMenuGroupVisibility, onToggleMenuItemVisibility, onFirstLevelSortEnd, onSecondLevelSortEnd, }) => {
14
+ const CompositeBarView = ({ type, items, onItemClick, onMoreClick, compositeId, className, menuItemClassName, enableSorting = false, editMode = false, isExpanded, onToggleGroupCollapsed, onToggleMenuGroupVisibility, onToggleMenuItemVisibility, onFirstLevelSortEnd, onSecondLevelSortEnd, setCollapseBlocker, isCompactMode, }) => {
17
15
  const ref = useRef(null);
18
- const tooltipRef = useRef(null);
19
16
  const [hoveredGroupId, setHoveredGroupId] = useState(null);
20
- const { setValue: setMultipleTooltipContextValue, active: multipleTooltipActive, activeIndex, lastClickedItemIndex, } = useContext(MultipleTooltipContext);
21
- React__default.useEffect(() => {
22
- function handleBlurWindow() {
23
- if (multipleTooltip && multipleTooltipActive) {
24
- setMultipleTooltipContextValue({ active: false });
25
- }
26
- }
27
- window.addEventListener('blur', handleBlurWindow);
28
- return () => {
29
- window.removeEventListener('blur', handleBlurWindow);
30
- };
31
- }, [multipleTooltip, multipleTooltipActive, setMultipleTooltipContextValue]);
32
- const onTooltipMouseEnter = useCallback((e) => {
33
- if (multipleTooltip &&
34
- compact &&
35
- !multipleTooltipActive &&
36
- document.hasFocus() &&
37
- activeIndex !== lastClickedItemIndex &&
38
- e.clientX <= ASIDE_HEADER_COMPACT_WIDTH) {
39
- setMultipleTooltipContextValue === null || setMultipleTooltipContextValue === undefined ? undefined : setMultipleTooltipContextValue({
40
- active: true,
41
- });
42
- }
43
- }, [
44
- multipleTooltip,
45
- compact,
46
- multipleTooltipActive,
47
- activeIndex,
48
- lastClickedItemIndex,
49
- setMultipleTooltipContextValue,
50
- ]);
51
- const onTooltipMouseLeave = useCallback(() => {
52
- if (multipleTooltip && multipleTooltipActive && document.hasFocus()) {
53
- setMultipleTooltipContextValue === null || setMultipleTooltipContextValue === undefined ? undefined : setMultipleTooltipContextValue({
54
- active: false,
55
- lastClickedItemIndex: undefined,
56
- });
57
- }
58
- }, [multipleTooltip, multipleTooltipActive, setMultipleTooltipContextValue]);
59
- const onMouseEnterByIndex = useCallback((itemIndex) => () => {
60
- if (multipleTooltip && document.hasFocus()) {
61
- let multipleTooltipActiveValue = multipleTooltipActive;
62
- if (!multipleTooltipActive && itemIndex !== lastClickedItemIndex) {
63
- multipleTooltipActiveValue = true;
64
- }
65
- if (activeIndex === itemIndex &&
66
- multipleTooltipActive === multipleTooltipActiveValue) {
67
- return;
68
- }
69
- setMultipleTooltipContextValue({
70
- activeIndex: itemIndex,
71
- active: multipleTooltipActiveValue,
72
- });
73
- }
74
- }, [
75
- multipleTooltip,
76
- multipleTooltipActive,
77
- lastClickedItemIndex,
78
- activeIndex,
79
- setMultipleTooltipContextValue,
80
- ]);
81
17
  const onMouseLeave = useCallback(() => {
82
18
  var _a;
83
- if (compact && document.hasFocus()) {
19
+ if (!isExpanded && document.hasFocus()) {
84
20
  (_a = ref.current) === null || _a === undefined ? undefined : _a.activateItem(undefined);
85
- if (multipleTooltip &&
86
- (activeIndex !== undefined || lastClickedItemIndex !== undefined)) {
87
- setMultipleTooltipContextValue({
88
- activeIndex: undefined,
89
- lastClickedItemIndex: undefined,
90
- });
91
- }
92
- }
93
- }, [
94
- activeIndex,
95
- compact,
96
- lastClickedItemIndex,
97
- multipleTooltip,
98
- setMultipleTooltipContextValue,
99
- ]);
100
- const onItemClickByIndex = useCallback((itemIndex, orginalItemClick) => (item, collapsed, event) => {
101
- if (compact &&
102
- multipleTooltip &&
103
- itemIndex !== lastClickedItemIndex &&
104
- item.id !== COLLAPSE_ITEM_ID) {
105
- setMultipleTooltipContextValue({
106
- lastClickedItemIndex: itemIndex,
107
- active: false,
108
- });
109
21
  }
22
+ }, [isExpanded]);
23
+ const onItemClickByIndex = useCallback((_itemIndex, orginalItemClick) => (item, collapsed, event, options) => {
110
24
  // Handle clicks on the "more" button (collapse item)
111
25
  if (item.id === COLLAPSE_ITEM_ID && collapsed) {
112
26
  onMoreClick === null || onMoreClick === undefined ? undefined : onMoreClick();
113
27
  }
114
28
  else {
115
- onItemClick === null || onItemClick === undefined ? undefined : onItemClick(Object.assign(Object.assign({}, item), { onItemClick: orginalItemClick }), collapsed, event);
29
+ onItemClick === null || onItemClick === undefined ? undefined : onItemClick(Object.assign(Object.assign({}, item), { onItemClick: orginalItemClick }), collapsed, event, options);
116
30
  }
117
- }, [
118
- compact,
119
- lastClickedItemIndex,
120
- multipleTooltip,
121
- onItemClick,
122
- onMoreClick,
123
- setMultipleTooltipContextValue,
124
- ]);
31
+ }, [onItemClick, onMoreClick]);
125
32
  const handleFirstLevelSortEnd = useCallback(({ oldIndex, newIndex }) => {
126
33
  if (onFirstLevelSortEnd) {
127
34
  onFirstLevelSortEnd({ oldIndex, newIndex });
@@ -135,73 +42,64 @@ const CompositeBarView = ({ type, items, onItemClick, onMoreClick, multipleToolt
135
42
  if (!items || items.length === 0) {
136
43
  return null;
137
44
  }
138
- return (React__default.createElement(React__default.Fragment, null,
139
- React__default.createElement("div", { className: className, ref: tooltipRef, onMouseEnter: onTooltipMouseEnter, onMouseLeave: onTooltipMouseLeave },
140
- React__default.createElement(List, { id: compositeId, ref: ref, items: items, selectedItemIndex: type === 'menu' ? getSelectedItemIndex(items) : undefined, itemHeight: getItemHeight, itemsHeight: getItemsHeight, itemClassName: b('root-menu-item', { compact }), virtualized: false, filterable: false, sortable: enableSorting, onSortEnd: enableSorting ? handleFirstLevelSortEnd : undefined, renderItem: (item, _isItemActive, itemIndex) => {
141
- const groupId = item.groupId;
142
- const itemType = item.type || ITEM_TYPE_REGULAR;
143
- if (!groupId) {
144
- return (React__default.createElement(Item, Object.assign({}, item, { className: b('menu-item', { compact, type: itemType }, menuItemClassName), compact: compact, editMode: editMode, onMouseEnter: onMouseEnterByIndex(itemIndex), onMouseLeave: onMouseLeave, onItemClick: onItemClickByIndex(itemIndex, item.onItemClick), onToggleVisibility: onToggleMenuItemVisibility
145
- ? () => onToggleMenuItemVisibility(item)
146
- : undefined })));
147
- }
148
- const isCollapsible = Boolean('collapsible' in item && item.collapsible);
149
- const isCollapsed = Boolean('isCollapsed' in item && item.isCollapsed);
150
- const groupListItems = ('items' in item && item.items) || [];
151
- const hasHeader = item.title || item.icon || isCollapsible;
152
- const isUngrouped = item.id === UNGROUPED_ID;
153
- const isGroupHovered = hoveredGroupId === item.id;
154
- let groupIcon = item.icon;
155
- if (!isCollapsed) {
156
- groupIcon = ChevronDown;
157
- }
158
- else if (isGroupHovered) {
159
- groupIcon = ChevronRight;
160
- }
161
- return (React__default.createElement("div", { className: b('menu-group', { expanded: !isCollapsed }, groupClassName) },
162
- hasHeader && !isUngrouped && (React__default.createElement(Item, Object.assign({}, item, { className: b('menu-group-header', { collapsed: isCollapsed }), icon: groupIcon, compact: compact, editMode: editMode, onMouseEnter: () => {
163
- setHoveredGroupId(item.id);
164
- }, onMouseLeave: () => {
165
- setHoveredGroupId(null);
166
- }, onItemClick: onItemClickByIndex(itemIndex, onToggleGroupCollapsed
167
- ? () => onToggleGroupCollapsed(groupId)
168
- : undefined), onToggleVisibility: onToggleMenuGroupVisibility
169
- ? () => onToggleMenuGroupVisibility(groupId)
170
- : undefined }))),
171
- !isCollapsed && (React__default.createElement(List, { items: groupListItems, sortable: enableSorting, onSortEnd: handleSecondLevelSortEnd(itemIndex), virtualized: false, filterable: false, itemClassName: b('menu-group-item', {
172
- edit: enableSorting,
173
- compact,
174
- }), itemHeight: getItemHeight, itemsHeight: getItemsHeight, renderItem: (nestedItem, _isNestedItemActive, _nestedItemIndex) => {
175
- return (React__default.createElement(Item, Object.assign({}, nestedItem, { compact: compact, editMode: editMode, onMouseEnter: () => {
176
- setHoveredGroupId(nestedItem.id);
177
- }, onMouseLeave: () => {
178
- setHoveredGroupId(null);
179
- }, onItemClick: onItemClickByIndex(itemIndex, item.onItemClick), onToggleVisibility: onToggleMenuItemVisibility
180
- ? () => onToggleMenuItemVisibility(nestedItem)
181
- : undefined })));
182
- } }))));
183
- } })),
184
- type === 'menu' && multipleTooltip && (React__default.createElement(MultipleTooltip, { open: compact && multipleTooltipActive, anchorRef: tooltipRef, placement: ['right-start'], items: items }))));
45
+ return (React__default.createElement("div", { className: className },
46
+ React__default.createElement(List, { id: compositeId, ref: ref, items: items, selectedItemIndex: type === 'menu' ? getSelectedItemIndex(items) : undefined, itemHeight: (item) => getItemHeight(item, isCompactMode), itemsHeight: (items) => getItemsHeight(items, isCompactMode), itemClassName: b('root-menu-item', { collapsed: !isExpanded }, menuItemClassName), virtualized: false, filterable: false, sortable: enableSorting, onSortEnd: enableSorting ? handleFirstLevelSortEnd : undefined, renderItem: (item, _isItemActive, itemIndex) => {
47
+ const groupId = item.groupId;
48
+ const itemType = item.type || ITEM_TYPE_REGULAR;
49
+ if (!groupId) {
50
+ return (React__default.createElement(Item, Object.assign({}, item, { className: b('menu-item', {
51
+ collapsed: !isExpanded,
52
+ type: itemType,
53
+ }), isExpanded: isExpanded, editMode: editMode, onMouseLeave: onMouseLeave, onItemClick: onItemClickByIndex(itemIndex, item.onItemClick), setCollapseBlocker: setCollapseBlocker, onToggleVisibility: onToggleMenuItemVisibility
54
+ ? () => onToggleMenuItemVisibility(item)
55
+ : undefined })));
56
+ }
57
+ const isCollapsible = Boolean('collapsible' in item && item.collapsible);
58
+ const isCollapsed = Boolean('isCollapsed' in item && item.isCollapsed);
59
+ const groupListItems = ('items' in item && item.items) || [];
60
+ const hasHeader = item.title || item.icon || isCollapsible;
61
+ const isUngrouped = item.id === UNGROUPED_ID;
62
+ const isGroupHovered = hoveredGroupId === item.id;
63
+ let groupIcon = item.icon;
64
+ if (isGroupHovered) {
65
+ groupIcon = isCollapsed ? ChevronRight : ChevronDown;
66
+ }
67
+ return (React__default.createElement("div", { className: b('menu-group', { expanded: !isCollapsed, wrapper: true }) },
68
+ hasHeader && !isUngrouped && (React__default.createElement(Item, Object.assign({}, item, { className: b('menu-group-header', { collapsed: isCollapsed }), icon: groupIcon, isExpanded: isExpanded, editMode: editMode, setCollapseBlocker: setCollapseBlocker, onMouseEnter: () => {
69
+ setHoveredGroupId(item.id);
70
+ }, onMouseLeave: () => {
71
+ setHoveredGroupId(null);
72
+ }, onItemClick: onItemClickByIndex(itemIndex, onToggleGroupCollapsed
73
+ ? () => onToggleGroupCollapsed(groupId)
74
+ : undefined), onToggleVisibility: onToggleMenuGroupVisibility
75
+ ? () => onToggleMenuGroupVisibility(groupId)
76
+ : undefined }))),
77
+ !isCollapsed && (React__default.createElement(List, { items: groupListItems, sortable: enableSorting, onSortEnd: handleSecondLevelSortEnd(itemIndex), virtualized: false, filterable: false, itemClassName: b('menu-group-item', {
78
+ edit: enableSorting,
79
+ collapsed: !isExpanded,
80
+ }), itemHeight: (item) => getItemHeight(item, isCompactMode), itemsHeight: (items) => getItemsHeight(items, isCompactMode), renderItem: (nestedItem, _isNestedItemActive, nestedItemIndex) => {
81
+ return (React__default.createElement(Item, Object.assign({}, nestedItem, { isExpanded: isExpanded, className: b('group-item'), editMode: editMode, setCollapseBlocker: setCollapseBlocker, onMouseEnter: () => {
82
+ setHoveredGroupId(nestedItem.id);
83
+ }, onMouseLeave: () => {
84
+ setHoveredGroupId(null);
85
+ }, onItemClick: onItemClickByIndex(
86
+ // +1 because the first item is the group header
87
+ itemIndex + nestedItemIndex + 1, nestedItem.onItemClick), onToggleVisibility: onToggleMenuItemVisibility
88
+ ? () => onToggleMenuItemVisibility(nestedItem)
89
+ : undefined })));
90
+ } }))));
91
+ } })));
185
92
  };
186
- const CompositeBar = ({ type, items, onItemClick, onMoreClick, onToggleGroupCollapsed, multipleTooltip = false, compact, compositeId, className, groupClassName, menuItemClassName, editMode = false, }) => {
187
- var _a;
188
- const visibleItems = (_a = items === null || items === undefined ? undefined : items.filter((item) => !item.hidden)) === null || _a === undefined ? undefined : _a.map((item) => {
189
- var _a;
190
- return (Object.assign(Object.assign({}, item), { items: 'items' in item ? (_a = item.items) === null || _a === undefined ? undefined : _a.filter((item) => !item.hidden) : [] }));
191
- });
192
- if (!visibleItems || visibleItems.length === 0) {
93
+ const CompositeBar = ({ type, items, onItemClick, onMoreClick, onToggleGroupCollapsed, setCollapseBlocker, isExpanded, compositeId, className, menuItemClassName, editMode = false, isCompactMode, }) => {
94
+ if (!items || items.length === 0) {
193
95
  return null;
194
96
  }
195
- let node;
196
97
  if (type === 'menu') {
197
- node = (React__default.createElement("div", { className: b({ scrollable: true }, className) },
198
- React__default.createElement(CompositeBarView, { compositeId: compositeId, groupClassName: groupClassName, menuItemClassName: menuItemClassName, type: "menu", compact: compact, items: visibleItems, onItemClick: onItemClick, onMoreClick: onMoreClick, multipleTooltip: multipleTooltip, onToggleGroupCollapsed: onToggleGroupCollapsed, editMode: editMode })));
199
- }
200
- else {
201
- node = (React__default.createElement("div", { className: b({ subheader: true }, className) },
202
- React__default.createElement(CompositeBarView, { groupClassName: groupClassName, menuItemClassName: menuItemClassName, type: "subheader", compact: compact, items: visibleItems, onItemClick: onItemClick, editMode: editMode })));
98
+ return (React__default.createElement(ScrollableWithScrollbar, { className: b(null, className), recalcDeps: [items.length] },
99
+ React__default.createElement(CompositeBarView, { compositeId: compositeId, menuItemClassName: menuItemClassName, type: "menu", isExpanded: isExpanded, items: items, onItemClick: onItemClick, onMoreClick: onMoreClick, onToggleGroupCollapsed: onToggleGroupCollapsed, setCollapseBlocker: setCollapseBlocker, editMode: editMode, isCompactMode: isCompactMode })));
203
100
  }
204
- return React__default.createElement(MultipleTooltipProvider, null, node);
101
+ return (React__default.createElement("div", { className: b({ subheader: true }, className) },
102
+ React__default.createElement(CompositeBarView, { menuItemClassName: menuItemClassName, type: "subheader", isExpanded: isExpanded, items: items, onItemClick: onItemClick, setCollapseBlocker: setCollapseBlocker, editMode: editMode, isCompactMode: isCompactMode })));
205
103
  };
206
104
 
207
105
  export { CompositeBar, CompositeBarView };