@gravity-ui/navigation 6.0.0-beta.0 → 6.0.0-beta.2

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 (113) hide show
  1. package/build/cjs/components/AsideHeader/AsideHeader.css +1 -1
  2. package/build/cjs/components/AsideHeader/AsideHeader.module.scss.js +1 -1
  3. package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.js +52 -16
  4. package/build/cjs/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.js.map +1 -1
  5. package/build/cjs/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.d.ts +20 -0
  6. package/build/cjs/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.js +56 -0
  7. package/build/cjs/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.js.map +1 -0
  8. package/build/cjs/components/AsideHeader/components/AllPagesPanel/allPagesSortable.d.ts +7 -0
  9. package/build/cjs/components/AsideHeader/components/AllPagesPanel/allPagesSortable.js +26 -0
  10. package/build/cjs/components/AsideHeader/components/AllPagesPanel/allPagesSortable.js.map +1 -0
  11. package/build/cjs/components/AsideHeader/components/AllPagesPanel/constants.d.ts +1 -1
  12. package/build/cjs/components/AsideHeader/components/AllPagesPanel/constants.js +3 -3
  13. package/build/cjs/components/AsideHeader/components/AllPagesPanel/constants.js.map +1 -1
  14. package/build/cjs/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.d.ts +10 -1
  15. package/build/cjs/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.js +28 -6
  16. package/build/cjs/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.js.map +1 -1
  17. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.css +1 -1
  18. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.d.ts +9 -1
  19. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.js +99 -28
  20. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.js.map +1 -1
  21. package/build/cjs/components/AsideHeader/components/CompositeBar/CompositeBar.module.scss.js +1 -1
  22. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.js +27 -10
  23. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.js.map +1 -1
  24. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/Item.types.d.ts +8 -0
  25. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemPopup.js +20 -7
  26. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemPopup.js.map +1 -1
  27. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemPopupNestContext.d.ts +6 -0
  28. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemPopupNestContext.js +8 -0
  29. package/build/cjs/components/AsideHeader/components/CompositeBar/Item/ItemPopupNestContext.js.map +1 -0
  30. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.css +1 -0
  31. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.d.ts +12 -0
  32. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js +24 -0
  33. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js.map +1 -0
  34. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.module.scss.js +8 -0
  35. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.module.scss.js.map +1 -0
  36. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/index.d.ts +1 -0
  37. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.d.ts +28 -0
  38. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.js +172 -0
  39. package/build/cjs/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.js.map +1 -0
  40. package/build/cjs/components/AsideHeader/components/CompositeBar/constants.d.ts +2 -0
  41. package/build/cjs/components/AsideHeader/components/CompositeBar/constants.js +3 -0
  42. package/build/cjs/components/AsideHeader/components/CompositeBar/constants.js.map +1 -1
  43. package/build/cjs/components/AsideHeader/components/CompositeBar/grouping.d.ts +27 -8
  44. package/build/cjs/components/AsideHeader/components/CompositeBar/grouping.js +53 -24
  45. package/build/cjs/components/AsideHeader/components/CompositeBar/grouping.js.map +1 -1
  46. package/build/cjs/components/AsideHeader/components/CompositeBar/utils.d.ts +14 -3
  47. package/build/cjs/components/AsideHeader/components/CompositeBar/utils.js +119 -35
  48. package/build/cjs/components/AsideHeader/components/CompositeBar/utils.js.map +1 -1
  49. package/build/cjs/components/AsideHeader/components/FirstPanel.js +4 -3
  50. package/build/cjs/components/AsideHeader/components/FirstPanel.js.map +1 -1
  51. package/build/cjs/components/AsideHeader/components/PageLayout/AsideFallback.css +1 -1
  52. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayout.css +1 -1
  53. package/build/cjs/components/AsideHeader/components/PageLayout/PageLayoutAside.css +1 -1
  54. package/build/cjs/components/AsideHeader/types.d.ts +40 -0
  55. package/build/cjs/components/AsideHeader/types.js +4 -0
  56. package/build/cjs/components/AsideHeader/types.js.map +1 -1
  57. package/build/esm/components/AsideHeader/AsideHeader.css +1 -1
  58. package/build/esm/components/AsideHeader/AsideHeader.module.scss.js +1 -1
  59. package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.js +50 -14
  60. package/build/esm/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.js.map +1 -1
  61. package/build/esm/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.d.ts +20 -0
  62. package/build/esm/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.js +50 -0
  63. package/build/esm/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.js.map +1 -0
  64. package/build/esm/components/AsideHeader/components/AllPagesPanel/allPagesSortable.d.ts +7 -0
  65. package/build/esm/components/AsideHeader/components/AllPagesPanel/allPagesSortable.js +23 -0
  66. package/build/esm/components/AsideHeader/components/AllPagesPanel/allPagesSortable.js.map +1 -0
  67. package/build/esm/components/AsideHeader/components/AllPagesPanel/constants.d.ts +1 -1
  68. package/build/esm/components/AsideHeader/components/AllPagesPanel/constants.js +1 -1
  69. package/build/esm/components/AsideHeader/components/AllPagesPanel/constants.js.map +1 -1
  70. package/build/esm/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.d.ts +10 -1
  71. package/build/esm/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.js +28 -6
  72. package/build/esm/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.js.map +1 -1
  73. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.css +1 -1
  74. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.d.ts +9 -1
  75. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.js +102 -31
  76. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.js.map +1 -1
  77. package/build/esm/components/AsideHeader/components/CompositeBar/CompositeBar.module.scss.js +1 -1
  78. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.js +28 -11
  79. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.js.map +1 -1
  80. package/build/esm/components/AsideHeader/components/CompositeBar/Item/Item.types.d.ts +8 -0
  81. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemPopup.js +20 -7
  82. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemPopup.js.map +1 -1
  83. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemPopupNestContext.d.ts +6 -0
  84. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemPopupNestContext.js +6 -0
  85. package/build/esm/components/AsideHeader/components/CompositeBar/Item/ItemPopupNestContext.js.map +1 -0
  86. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.css +1 -0
  87. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.d.ts +12 -0
  88. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js +22 -0
  89. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.js.map +1 -0
  90. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.module.scss.js +4 -0
  91. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/ScrollableWithScrollbar.module.scss.js.map +1 -0
  92. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/index.d.ts +1 -0
  93. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.d.ts +28 -0
  94. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.js +170 -0
  95. package/build/esm/components/AsideHeader/components/CompositeBar/ScrollableWithScrollbar/useScrollableScrollbarSync.js.map +1 -0
  96. package/build/esm/components/AsideHeader/components/CompositeBar/constants.d.ts +2 -0
  97. package/build/esm/components/AsideHeader/components/CompositeBar/constants.js +3 -1
  98. package/build/esm/components/AsideHeader/components/CompositeBar/constants.js.map +1 -1
  99. package/build/esm/components/AsideHeader/components/CompositeBar/grouping.d.ts +27 -8
  100. package/build/esm/components/AsideHeader/components/CompositeBar/grouping.js +52 -23
  101. package/build/esm/components/AsideHeader/components/CompositeBar/grouping.js.map +1 -1
  102. package/build/esm/components/AsideHeader/components/CompositeBar/utils.d.ts +14 -3
  103. package/build/esm/components/AsideHeader/components/CompositeBar/utils.js +110 -29
  104. package/build/esm/components/AsideHeader/components/CompositeBar/utils.js.map +1 -1
  105. package/build/esm/components/AsideHeader/components/FirstPanel.js +4 -3
  106. package/build/esm/components/AsideHeader/components/FirstPanel.js.map +1 -1
  107. package/build/esm/components/AsideHeader/components/PageLayout/AsideFallback.css +1 -1
  108. package/build/esm/components/AsideHeader/components/PageLayout/PageLayout.css +1 -1
  109. package/build/esm/components/AsideHeader/components/PageLayout/PageLayoutAside.css +1 -1
  110. package/build/esm/components/AsideHeader/types.d.ts +40 -0
  111. package/build/esm/components/AsideHeader/types.js +3 -1
  112. package/build/esm/components/AsideHeader/types.js.map +1 -1
  113. package/package.json +1 -1
@@ -1 +1 @@
1
- .AsideHeader-module__gn-aside-header___Z0Sa7{--gn-aside-header-min-width:56px;--_--item-margin-inline:8px;--gn-aside-header-item-expanded-radius:8px;--_--item-icon-background-size:38px;--_--background-color:var(--g-color-base-background);--_--decoration-collapsed-background-color:var(--g-color-base-warning-light);--_--decoration-expanded-background-color:var(--g-color-base-warning-light);--_--vertical-divider-line-color:var(--g-color-line-generic);--_--horizontal-divider-line-color:var(--g-color-line-generic);background-color:var(--g-color-base-background);height:100%;position:relative;width:100%}.AsideHeader-module__gn-aside-header__aside___AyP0y{background-color:var(--gn-aside-header-expanded-background-color,var(--gn-aside-header-background-color,var(--_--background-color)));box-sizing:border-box;display:flex;flex-direction:column;height:100vh;left:0;margin-top:var(--gn-top-alert-height,0);max-height:calc(100vh - var(--gn-top-alert-height, 0));position:sticky;top:var(--gn-top-alert-height,0);width:inherit;z-index:var(--gn-aside-header-z-index,100)}.AsideHeader-module__gn-aside-header__aside___AyP0y:after{background-color:var(--gn-aside-header-divider-vertical-color,var(--_--vertical-divider-line-color));content:"";height:100%;position:absolute;right:0;top:0;width:1px;z-index:2}.AsideHeader-module__gn-aside-header__aside-popup-anchor___N3tgM{inset:0;position:absolute;z-index:1}.AsideHeader-module__gn-aside-header__aside-content___w5GOS{--gradient-height:334px;display:flex;flex-direction:column;height:inherit;overflow-x:hidden;padding-top:var(--gn-aside-header-padding-top);position:relative;user-select:none;width:inherit;z-index:2}.AsideHeader-module__gn-aside-header__aside-content___w5GOS>.AsideHeader-module__gn-aside-header-logo___6MdXx{margin:8px 0}.AsideHeader-module__gn-aside-header__aside-content_with-decoration___UsCye{background:linear-gradient(180deg,var(--gn-aside-header-decoration-expanded-background-color,var(--_--decoration-expanded-background-color)) calc(var(--gradient-height)*.33),transparent calc(var(--gradient-height)*.88))}.AsideHeader-module__gn-aside-header__aside-custom-background___-bqdE{bottom:0;display:flex;position:absolute;top:0;width:var(--gn-aside-header-size);z-index:-1}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__aside___AyP0y{background-color:var(--gn-aside-header-collapsed-background-color,var(--gn-aside-header-background-color,var(--_--background-color)))}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__aside-content___w5GOS{background:transparent}.AsideHeader-module__gn-aside-header__header___m5aIU{--gn-aside-header-header-divider-height:29px;box-sizing:border-box;flex:none;padding-bottom:22px;padding-top:8px;position:relative;width:100%;z-index:1}.AsideHeader-module__gn-aside-header__header___m5aIU .AsideHeader-module__gn-aside-header__header-divider___lIG-e{bottom:0;color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));display:none;left:0;position:absolute;z-index:-2}.AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO:before{background-color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));content:"";display:none;height:calc(100% - var(--gn-aside-header-header-divider-height));left:0;position:absolute;top:0;width:100%;z-index:-2}.AsideHeader-module__gn-aside-header__header___m5aIU:after{background-color:var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));bottom:12px;content:"";height:1px;left:0;position:absolute;width:100%;z-index:-2}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header___m5aIU:before, .AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO .AsideHeader-module__gn-aside-header__header-divider___lIG-e{display:block}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO:after{display:none}.AsideHeader-module__gn-aside-header__logo-button___5u2iH .AsideHeader-module__gn-aside-header__logo-icon-place___3Oo9i{height:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));width:var(--gn-aside-header-min-width)}.AsideHeader-module__gn-aside-header__menu-items___SOI2-{flex-grow:1}.AsideHeader-module__gn-aside-header__menu-item___q2y31:not(:has([data-type=action])){margin-inline:var(--_--item-margin-inline)}.AsideHeader-module__gn-aside-header__menu-item___q2y31:has([data-type=regular]), .AsideHeader-module__gn-aside-header__menu-item_type_regular___XYYbc, .AsideHeader-module__gn-aside-header__root-menu-item___eNfkk[class]:hover{border-radius:var(--gn-aside-header-item-expanded-radius,8px)}.AsideHeader-module__gn-aside-header__footer___vmoTl{display:flex;flex-direction:column;flex-shrink:0;margin:var(--g-spacing-2) var(--_--item-margin-inline)}.AsideHeader-module__gn-aside-header__panels___-fdu4{z-index:var(--gn-aside-header-panel-z-index,98)}.AsideHeader-module__gn-aside-header__panel___HywH6, .AsideHeader-module__gn-aside-header__panel___HywH6.g-drawer__item{bottom:0;height:auto;top:0}.AsideHeader-module__gn-aside-header__pane-container___y-v2e{display:flex;flex-direction:row;outline:none;overflow:visible;user-select:text}.AsideHeader-module__gn-aside-header__top-alert___hY12r{background:var(--g-color-base-background);position:fixed;top:0;width:100%;z-index:var(--gn-aside-header-pane-top-z-index,98)}.AsideHeader-module__gn-aside-header__content___4-mBl{margin-top:var(--gn-top-alert-height,0);width:calc(100% - var(--gn-aside-header-size));z-index:var(--gn-aside-header-content-z-index,95)}.AsideHeader-module__gn-aside-header__all-pages-panel___O94IU{width:fit-content!important}
1
+ .AsideHeader-module__gn-aside-header___Z0Sa7{--gn-aside-header-min-width:56px;--_--item-margin-inline:8px;--gn-aside-header-item-expanded-radius:8px;--_--item-icon-background-size:38px;--_--background-color:var(--g-color-base-background);--_--decoration-collapsed-background-color:var(--g-color-base-warning-light);--_--decoration-expanded-background-color:var(--g-color-base-warning-light);--_--vertical-divider-line-color:var(--g-color-line-generic);--_--horizontal-divider-line-color:var(--g-color-line-generic);background-color:var(--g-color-base-background);height:100%;position:relative;width:100%}.AsideHeader-module__gn-aside-header__aside___AyP0y{background-color:var(--gn-aside-header-expanded-background-color,var(--gn-aside-header-background-color,var(--_--background-color)));box-sizing:border-box;display:flex;flex-direction:column;height:100vh;left:0;margin-top:var(--gn-top-alert-height,0);max-height:calc(100vh - var(--gn-top-alert-height, 0));position:sticky;top:var(--gn-top-alert-height,0);width:inherit;z-index:var(--gn-aside-header-z-index,100)}.AsideHeader-module__gn-aside-header__aside___AyP0y:after{background-color:var(--gn-aside-header-divider-vertical-color,var(--_--vertical-divider-line-color));content:"";height:100%;position:absolute;right:0;top:0;width:1px;z-index:2}.AsideHeader-module__gn-aside-header__aside-popup-anchor___N3tgM{inset:0;position:absolute;z-index:1}.AsideHeader-module__gn-aside-header__aside-content___w5GOS{--gradient-height:334px;display:flex;flex-direction:column;height:inherit;overflow-x:hidden;padding-top:var(--gn-aside-header-padding-top);position:relative;user-select:none;width:inherit;z-index:2}.AsideHeader-module__gn-aside-header__aside-content___w5GOS>.AsideHeader-module__gn-aside-header-logo___6MdXx{margin:8px 0}.AsideHeader-module__gn-aside-header__aside_menu-overflow-scroll___l-td6 .AsideHeader-module__gn-aside-header__aside-content___w5GOS{min-height:0;overflow:hidden}.AsideHeader-module__gn-aside-header__aside-content_with-decoration___UsCye{background:linear-gradient(180deg,var(--gn-aside-header-decoration-expanded-background-color,var(--_--decoration-expanded-background-color)) calc(var(--gradient-height)*.33),transparent calc(var(--gradient-height)*.88))}.AsideHeader-module__gn-aside-header__aside-custom-background___-bqdE{bottom:0;display:flex;position:absolute;top:0;width:var(--gn-aside-header-size);z-index:-1}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__aside___AyP0y{background-color:var(--gn-aside-header-collapsed-background-color,var(--gn-aside-header-background-color,var(--_--background-color)))}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__aside-content___w5GOS{background:transparent}.AsideHeader-module__gn-aside-header__header___m5aIU{--gn-aside-header-header-divider-height:29px;box-sizing:border-box;flex:none;padding-bottom:22px;padding-top:8px;position:relative;width:100%;z-index:1}.AsideHeader-module__gn-aside-header__header___m5aIU .AsideHeader-module__gn-aside-header__header-divider___lIG-e{bottom:0;color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));display:none;left:0;position:absolute;z-index:-2}.AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO:before{background-color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));content:"";display:none;height:calc(100% - var(--gn-aside-header-header-divider-height));left:0;position:absolute;top:0;width:100%;z-index:-2}.AsideHeader-module__gn-aside-header__header___m5aIU:after{background-color:var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));bottom:12px;content:"";height:1px;left:0;position:absolute;width:100%;z-index:-2}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header___m5aIU:before, .AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO .AsideHeader-module__gn-aside-header__header-divider___lIG-e{display:block}.AsideHeader-module__gn-aside-header_compact___z-nL- .AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO:after{display:none}.AsideHeader-module__gn-aside-header__logo-button___5u2iH .AsideHeader-module__gn-aside-header__logo-icon-place___3Oo9i{height:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));width:var(--gn-aside-header-min-width)}.AsideHeader-module__gn-aside-header__menu-items___SOI2-{flex-grow:1}.AsideHeader-module__gn-aside-header__menu-item___q2y31:not(:has([data-type=action])){margin-inline:var(--_--item-margin-inline)}.AsideHeader-module__gn-aside-header__menu-item___q2y31:has([data-type=regular]), .AsideHeader-module__gn-aside-header__menu-item_type_regular___XYYbc, .AsideHeader-module__gn-aside-header__root-menu-item___eNfkk[class]:hover{border-radius:var(--gn-aside-header-item-expanded-radius,8px)}.AsideHeader-module__gn-aside-header__footer___vmoTl{display:flex;flex-direction:column;flex-shrink:0;margin:var(--g-spacing-2) var(--_--item-margin-inline)}.AsideHeader-module__gn-aside-header__panels___-fdu4{z-index:var(--gn-aside-header-panel-z-index,98)}.AsideHeader-module__gn-aside-header__panel___HywH6, .AsideHeader-module__gn-aside-header__panel___HywH6.g-drawer__item{bottom:0;height:auto;top:0}.AsideHeader-module__gn-aside-header__pane-container___y-v2e{display:flex;flex-direction:row;outline:none;overflow:visible;user-select:text}.AsideHeader-module__gn-aside-header__top-alert___hY12r{background:var(--g-color-base-background);position:fixed;top:0;width:100%;z-index:var(--gn-aside-header-pane-top-z-index,98)}.AsideHeader-module__gn-aside-header__content___4-mBl{margin-top:var(--gn-top-alert-height,0);width:calc(100% - var(--gn-aside-header-size));z-index:var(--gn-aside-header-content-z-index,95)}.AsideHeader-module__gn-aside-header__all-pages-panel___O94IU{width:fit-content!important}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var styles = {"g-root":"AsideHeader-module__g-root___EuNRw","gRoot":"AsideHeader-module__g-root___EuNRw","gn-aside-header":"AsideHeader-module__gn-aside-header___Z0Sa7","gnAsideHeader":"AsideHeader-module__gn-aside-header___Z0Sa7","gn-aside-header__aside":"AsideHeader-module__gn-aside-header__aside___AyP0y","gnAsideHeaderAside":"AsideHeader-module__gn-aside-header__aside___AyP0y","gn-aside-header__aside-popup-anchor":"AsideHeader-module__gn-aside-header__aside-popup-anchor___N3tgM","gnAsideHeaderAsidePopupAnchor":"AsideHeader-module__gn-aside-header__aside-popup-anchor___N3tgM","gn-aside-header__aside-content":"AsideHeader-module__gn-aside-header__aside-content___w5GOS","gnAsideHeaderAsideContent":"AsideHeader-module__gn-aside-header__aside-content___w5GOS","gn-aside-header-logo":"AsideHeader-module__gn-aside-header-logo___6MdXx","gnAsideHeaderLogo":"AsideHeader-module__gn-aside-header-logo___6MdXx","gn-aside-header__aside-content_with-decoration":"AsideHeader-module__gn-aside-header__aside-content_with-decoration___UsCye","gnAsideHeaderAsideContentWithDecoration":"AsideHeader-module__gn-aside-header__aside-content_with-decoration___UsCye","gn-aside-header__aside-custom-background":"AsideHeader-module__gn-aside-header__aside-custom-background___-bqdE","gnAsideHeaderAsideCustomBackground":"AsideHeader-module__gn-aside-header__aside-custom-background___-bqdE","gn-aside-header_compact":"AsideHeader-module__gn-aside-header_compact___z-nL-","gnAsideHeaderCompact":"AsideHeader-module__gn-aside-header_compact___z-nL-","gn-aside-header__header":"AsideHeader-module__gn-aside-header__header___m5aIU","gnAsideHeaderHeader":"AsideHeader-module__gn-aside-header__header___m5aIU","gn-aside-header__header-divider":"AsideHeader-module__gn-aside-header__header-divider___lIG-e","gnAsideHeaderHeaderDivider":"AsideHeader-module__gn-aside-header__header-divider___lIG-e","gn-aside-header__header_with-decoration":"AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO","gnAsideHeaderHeaderWithDecoration":"AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO","gn-aside-header__logo-button":"AsideHeader-module__gn-aside-header__logo-button___5u2iH","gnAsideHeaderLogoButton":"AsideHeader-module__gn-aside-header__logo-button___5u2iH","gn-aside-header__logo-icon-place":"AsideHeader-module__gn-aside-header__logo-icon-place___3Oo9i","gnAsideHeaderLogoIconPlace":"AsideHeader-module__gn-aside-header__logo-icon-place___3Oo9i","gn-aside-header__menu-items":"AsideHeader-module__gn-aside-header__menu-items___SOI2-","gnAsideHeaderMenuItems":"AsideHeader-module__gn-aside-header__menu-items___SOI2-","gn-aside-header__menu-item":"AsideHeader-module__gn-aside-header__menu-item___q2y31","gnAsideHeaderMenuItem":"AsideHeader-module__gn-aside-header__menu-item___q2y31","gn-aside-header__menu-item_type_regular":"AsideHeader-module__gn-aside-header__menu-item_type_regular___XYYbc","gnAsideHeaderMenuItemTypeRegular":"AsideHeader-module__gn-aside-header__menu-item_type_regular___XYYbc","gn-aside-header__root-menu-item":"AsideHeader-module__gn-aside-header__root-menu-item___eNfkk","gnAsideHeaderRootMenuItem":"AsideHeader-module__gn-aside-header__root-menu-item___eNfkk","gn-aside-header__footer":"AsideHeader-module__gn-aside-header__footer___vmoTl","gnAsideHeaderFooter":"AsideHeader-module__gn-aside-header__footer___vmoTl","gn-aside-header__panels":"AsideHeader-module__gn-aside-header__panels___-fdu4","gnAsideHeaderPanels":"AsideHeader-module__gn-aside-header__panels___-fdu4","gn-aside-header__panel":"AsideHeader-module__gn-aside-header__panel___HywH6","gnAsideHeaderPanel":"AsideHeader-module__gn-aside-header__panel___HywH6","gn-aside-header__pane-container":"AsideHeader-module__gn-aside-header__pane-container___y-v2e","gnAsideHeaderPaneContainer":"AsideHeader-module__gn-aside-header__pane-container___y-v2e","gn-aside-header__top-alert":"AsideHeader-module__gn-aside-header__top-alert___hY12r","gnAsideHeaderTopAlert":"AsideHeader-module__gn-aside-header__top-alert___hY12r","gn-aside-header__content":"AsideHeader-module__gn-aside-header__content___4-mBl","gnAsideHeaderContent":"AsideHeader-module__gn-aside-header__content___4-mBl","gn-aside-header__all-pages-panel":"AsideHeader-module__gn-aside-header__all-pages-panel___O94IU","gnAsideHeaderAllPagesPanel":"AsideHeader-module__gn-aside-header__all-pages-panel___O94IU"};
5
+ var styles = {"g-root":"AsideHeader-module__g-root___EuNRw","gRoot":"AsideHeader-module__g-root___EuNRw","gn-aside-header":"AsideHeader-module__gn-aside-header___Z0Sa7","gnAsideHeader":"AsideHeader-module__gn-aside-header___Z0Sa7","gn-aside-header__aside":"AsideHeader-module__gn-aside-header__aside___AyP0y","gnAsideHeaderAside":"AsideHeader-module__gn-aside-header__aside___AyP0y","gn-aside-header__aside-popup-anchor":"AsideHeader-module__gn-aside-header__aside-popup-anchor___N3tgM","gnAsideHeaderAsidePopupAnchor":"AsideHeader-module__gn-aside-header__aside-popup-anchor___N3tgM","gn-aside-header__aside-content":"AsideHeader-module__gn-aside-header__aside-content___w5GOS","gnAsideHeaderAsideContent":"AsideHeader-module__gn-aside-header__aside-content___w5GOS","gn-aside-header-logo":"AsideHeader-module__gn-aside-header-logo___6MdXx","gnAsideHeaderLogo":"AsideHeader-module__gn-aside-header-logo___6MdXx","gn-aside-header__aside_menu-overflow-scroll":"AsideHeader-module__gn-aside-header__aside_menu-overflow-scroll___l-td6","gnAsideHeaderAsideMenuOverflowScroll":"AsideHeader-module__gn-aside-header__aside_menu-overflow-scroll___l-td6","gn-aside-header__aside-content_with-decoration":"AsideHeader-module__gn-aside-header__aside-content_with-decoration___UsCye","gnAsideHeaderAsideContentWithDecoration":"AsideHeader-module__gn-aside-header__aside-content_with-decoration___UsCye","gn-aside-header__aside-custom-background":"AsideHeader-module__gn-aside-header__aside-custom-background___-bqdE","gnAsideHeaderAsideCustomBackground":"AsideHeader-module__gn-aside-header__aside-custom-background___-bqdE","gn-aside-header_compact":"AsideHeader-module__gn-aside-header_compact___z-nL-","gnAsideHeaderCompact":"AsideHeader-module__gn-aside-header_compact___z-nL-","gn-aside-header__header":"AsideHeader-module__gn-aside-header__header___m5aIU","gnAsideHeaderHeader":"AsideHeader-module__gn-aside-header__header___m5aIU","gn-aside-header__header-divider":"AsideHeader-module__gn-aside-header__header-divider___lIG-e","gnAsideHeaderHeaderDivider":"AsideHeader-module__gn-aside-header__header-divider___lIG-e","gn-aside-header__header_with-decoration":"AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO","gnAsideHeaderHeaderWithDecoration":"AsideHeader-module__gn-aside-header__header_with-decoration___3dTJO","gn-aside-header__logo-button":"AsideHeader-module__gn-aside-header__logo-button___5u2iH","gnAsideHeaderLogoButton":"AsideHeader-module__gn-aside-header__logo-button___5u2iH","gn-aside-header__logo-icon-place":"AsideHeader-module__gn-aside-header__logo-icon-place___3Oo9i","gnAsideHeaderLogoIconPlace":"AsideHeader-module__gn-aside-header__logo-icon-place___3Oo9i","gn-aside-header__menu-items":"AsideHeader-module__gn-aside-header__menu-items___SOI2-","gnAsideHeaderMenuItems":"AsideHeader-module__gn-aside-header__menu-items___SOI2-","gn-aside-header__menu-item":"AsideHeader-module__gn-aside-header__menu-item___q2y31","gnAsideHeaderMenuItem":"AsideHeader-module__gn-aside-header__menu-item___q2y31","gn-aside-header__menu-item_type_regular":"AsideHeader-module__gn-aside-header__menu-item_type_regular___XYYbc","gnAsideHeaderMenuItemTypeRegular":"AsideHeader-module__gn-aside-header__menu-item_type_regular___XYYbc","gn-aside-header__root-menu-item":"AsideHeader-module__gn-aside-header__root-menu-item___eNfkk","gnAsideHeaderRootMenuItem":"AsideHeader-module__gn-aside-header__root-menu-item___eNfkk","gn-aside-header__footer":"AsideHeader-module__gn-aside-header__footer___vmoTl","gnAsideHeaderFooter":"AsideHeader-module__gn-aside-header__footer___vmoTl","gn-aside-header__panels":"AsideHeader-module__gn-aside-header__panels___-fdu4","gnAsideHeaderPanels":"AsideHeader-module__gn-aside-header__panels___-fdu4","gn-aside-header__panel":"AsideHeader-module__gn-aside-header__panel___HywH6","gnAsideHeaderPanel":"AsideHeader-module__gn-aside-header__panel___HywH6","gn-aside-header__pane-container":"AsideHeader-module__gn-aside-header__pane-container___y-v2e","gnAsideHeaderPaneContainer":"AsideHeader-module__gn-aside-header__pane-container___y-v2e","gn-aside-header__top-alert":"AsideHeader-module__gn-aside-header__top-alert___hY12r","gnAsideHeaderTopAlert":"AsideHeader-module__gn-aside-header__top-alert___hY12r","gn-aside-header__content":"AsideHeader-module__gn-aside-header__content___4-mBl","gnAsideHeaderContent":"AsideHeader-module__gn-aside-header__content___4-mBl","gn-aside-header__all-pages-panel":"AsideHeader-module__gn-aside-header__all-pages-panel___O94IU","gnAsideHeaderAllPagesPanel":"AsideHeader-module__gn-aside-header__all-pages-panel___O94IU"};
6
6
 
7
7
  exports.default = styles;
8
8
  //# sourceMappingURL=AsideHeader.module.scss.js.map
@@ -6,8 +6,11 @@ var icons = require('@gravity-ui/icons');
6
6
  var uikit = require('@gravity-ui/uikit');
7
7
  var cn = require('../../../utils/cn.js');
8
8
  var AsideHeaderContext = require('../../AsideHeaderContext.js');
9
+ var grouping = require('../CompositeBar/grouping.js');
9
10
  var AllPagesListItem = require('./AllPagesListItem/AllPagesListItem.js');
10
- var constants = require('./constants.js');
11
+ var allPagesEditDisplay = require('./allPagesEditDisplay.js');
12
+ var allPagesSortable = require('./allPagesSortable.js');
13
+ var types = require('../../types.js');
11
14
  var index = require('./i18n/index.js');
12
15
  var useGroupedMenuItems = require('./useGroupedMenuItems.js');
13
16
  var AllPagesPanel_module = require('./AllPagesPanel.module.scss.js');
@@ -15,7 +18,7 @@ var AllPagesPanel_module = require('./AllPagesPanel.module.scss.js');
15
18
  const b = cn.createBlock('all-pages-panel', AllPagesPanel_module.default);
16
19
  const AllPagesPanel = (props) => {
17
20
  const { startEditIcon, onEditModeChanged, className } = props;
18
- const { menuItems, defaultMenuItems, onMenuItemsChanged, editMenuProps } = AsideHeaderContext.useAsideHeaderInnerContext();
21
+ const { menuItems, defaultMenuItems, onMenuItemsChanged, editMenuProps, menuGroups, onMenuGroupsChanged, } = AsideHeaderContext.useAsideHeaderInnerContext();
19
22
  const menuItemsRef = React.useRef(menuItems);
20
23
  menuItemsRef.current = menuItems;
21
24
  const [isEditMode, setIsEditMode] = React.useState(false);
@@ -23,7 +26,7 @@ const AllPagesPanel = (props) => {
23
26
  const toggleEditMode = React.useCallback(() => {
24
27
  setIsEditMode((prev) => !prev);
25
28
  }, []);
26
- const groupedItems = useGroupedMenuItems.useGroupedMenuItems(menuItems);
29
+ const groupedItems = useGroupedMenuItems.useGroupedMenuItems(menuItems, isEditMode, menuGroups, onMenuGroupsChanged);
27
30
  React.useEffect(() => {
28
31
  var _a;
29
32
  onEditModeChanged === null || onEditModeChanged === undefined ? undefined : onEditModeChanged(isEditMode);
@@ -37,20 +40,31 @@ const AllPagesPanel = (props) => {
37
40
  (_a = item.onItemClick) === null || _a === undefined ? undefined : _a.call(item, item, false, event);
38
41
  }, []);
39
42
  const togglePageVisibility = React.useCallback((item) => {
40
- var _a;
43
+ var _a, _b;
44
+ const groupIdFromHeader = allPagesEditDisplay.getCompositeBarHeaderGroupId(item.id);
45
+ if (groupIdFromHeader && menuGroups && onMenuGroupsChanged) {
46
+ const previousGroup = menuGroups.find((g) => g.id === groupIdFromHeader);
47
+ if (!previousGroup) {
48
+ return;
49
+ }
50
+ const changedGroup = Object.assign(Object.assign({}, previousGroup), { hidden: !previousGroup.hidden });
51
+ (_a = editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.onToggleMenuGroup) === null || _a === undefined ? undefined : _a.call(editMenuProps, changedGroup);
52
+ onMenuGroupsChanged(menuGroups.map((g) => (g.id === groupIdFromHeader ? changedGroup : g)));
53
+ return;
54
+ }
41
55
  if (!onMenuItemsChanged) {
42
56
  return;
43
57
  }
44
58
  const changedItem = Object.assign(Object.assign({}, item), { hidden: !item.hidden });
45
- const originItems = menuItemsRef.current.filter((menuItem) => menuItem.id !== constants.ALL_PAGES_ID);
46
- (_a = editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.onToggleMenuItem) === null || _a === undefined ? undefined : _a.call(editMenuProps, changedItem);
59
+ const originItems = menuItemsRef.current.filter((menuItem) => menuItem.id !== types.ALL_PAGES_ID);
60
+ (_b = editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.onToggleMenuItem) === null || _b === undefined ? undefined : _b.call(editMenuProps, changedItem);
47
61
  onMenuItemsChanged(originItems.map((menuItem) => {
48
62
  if (menuItem.id !== changedItem.id) {
49
63
  return menuItem;
50
64
  }
51
65
  return changedItem;
52
66
  }));
53
- }, [onMenuItemsChanged, editMenuProps]);
67
+ }, [onMenuItemsChanged, editMenuProps, menuGroups, onMenuGroupsChanged]);
54
68
  const onDragEnd = React.useCallback(() => {
55
69
  setDraggingItemTitle(null);
56
70
  }, [setDraggingItemTitle]);
@@ -66,23 +80,45 @@ const AllPagesPanel = (props) => {
66
80
  return;
67
81
  }
68
82
  (_a = editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.onResetSettingsToDefault) === null || _a === undefined ? undefined : _a.call(editMenuProps);
69
- const originItems = defaultMenuItems === null || defaultMenuItems === undefined ? undefined : defaultMenuItems.filter(({ id }) => id !== constants.ALL_PAGES_ID);
83
+ const originItems = defaultMenuItems === null || defaultMenuItems === undefined ? undefined : defaultMenuItems.filter(({ id }) => id !== types.ALL_PAGES_ID);
70
84
  if (originItems) {
71
85
  onMenuItemsChanged(originItems);
72
86
  }
73
87
  }, [onMenuItemsChanged, editMenuProps, defaultMenuItems]);
74
88
  const changeItemsOrder = React.useCallback(({ oldIndex, newIndex }) => {
75
89
  var _a;
76
- const newItems = menuItemsRef.current.filter(({ id }) => id !== constants.ALL_PAGES_ID);
77
- const element = newItems.splice(oldIndex, 1)[0];
78
- newItems.splice(newIndex, 0, element);
79
- onMenuItemsChanged === null || onMenuItemsChanged === undefined ? undefined : onMenuItemsChanged(newItems.filter(({ type }) => type !== 'divider'));
90
+ const withoutAllPages = menuItemsRef.current.filter(({ id, type }) => id !== types.ALL_PAGES_ID && type !== 'divider');
91
+ let element;
92
+ let reordered;
93
+ if (menuGroups === null || menuGroups === undefined ? undefined : menuGroups.length) {
94
+ const rows = grouping.buildCompositeBarRows(withoutAllPages, menuGroups, allPagesEditDisplay.ALL_PAGES_PANEL_ROW_BUILD_OPTIONS);
95
+ const display = allPagesEditDisplay.rowsToAllPagesDisplayItems(rows, {
96
+ enableGroupHeaderPins: Boolean(onMenuGroupsChanged),
97
+ });
98
+ element = display[oldIndex];
99
+ reordered = allPagesEditDisplay.reorderMenuItemsByCompositeBarRows(withoutAllPages, menuGroups, oldIndex, newIndex);
100
+ }
101
+ else {
102
+ const sortableBefore = withoutAllPages.filter(allPagesSortable.isAllPagesSortableItem);
103
+ element = sortableBefore[oldIndex];
104
+ reordered = allPagesSortable.reorderAllPagesSortableItems(withoutAllPages, oldIndex, newIndex);
105
+ }
106
+ onMenuItemsChanged === null || onMenuItemsChanged === undefined ? undefined : onMenuItemsChanged(reordered);
80
107
  setDraggingItemTitle(null);
81
- (_a = editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.onChangeItemsOrder) === null || _a === undefined ? undefined : _a.call(editMenuProps, element, oldIndex, newIndex);
82
- }, [onMenuItemsChanged, editMenuProps]);
108
+ if (element) {
109
+ (_a = editMenuProps === null || editMenuProps === undefined ? undefined : editMenuProps.onChangeItemsOrder) === null || _a === undefined ? undefined : _a.call(editMenuProps, element, oldIndex, newIndex);
110
+ }
111
+ }, [onMenuItemsChanged, editMenuProps, menuGroups, onMenuGroupsChanged]);
83
112
  const sortableItems = React.useMemo(() => {
84
- return menuItems.filter(({ id, afterMoreButton, type }) => id !== constants.ALL_PAGES_ID && !afterMoreButton && type !== 'divider');
85
- }, [menuItems]);
113
+ const without = menuItems.filter(({ id, type }) => id !== types.ALL_PAGES_ID && type !== 'divider');
114
+ const pinHeaders = Boolean(onMenuGroupsChanged);
115
+ if (menuGroups === null || menuGroups === undefined ? undefined : menuGroups.length) {
116
+ return allPagesEditDisplay.getAllPagesEditModeFlatItems(without, menuGroups, {
117
+ enableGroupHeaderPins: pinHeaders,
118
+ });
119
+ }
120
+ return without.filter(allPagesSortable.isAllPagesSortableItem);
121
+ }, [menuItems, menuGroups, onMenuGroupsChanged]);
86
122
  return (React.createElement(uikit.Flex, { className: b(null, className), gap: "5", direction: "column" },
87
123
  React.createElement(uikit.Flex, { gap: "4", alignItems: "center", justifyContent: "space-between" },
88
124
  React.createElement(uikit.Text, { variant: "subheader-2" }, isEditMode ? index.default('all-panel.title.editing') : index.default('all-panel.title.main')),
@@ -1 +1 @@
1
- {"version":3,"file":"AllPagesPanel.js","sources":["../../../../../../../src/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.tsx"],"sourcesContent":["import React, {ReactNode, useCallback, useEffect, useMemo, useRef, useState} from 'react';\n\nimport {Gear} from '@gravity-ui/icons';\nimport {Button, Flex, Icon, List, ListItemData, ListProps, Text, Tooltip} from '@gravity-ui/uikit';\n\nimport {createBlock} from '../../../utils/cn';\nimport {useAsideHeaderInnerContext} from '../../AsideHeaderContext';\nimport {AsideHeaderItem} from '../../types';\n\nimport {AllPagesListItem} from './AllPagesListItem';\nimport {ALL_PAGES_ID} from './constants';\nimport i18n from './i18n';\nimport {useGroupedMenuItems} from './useGroupedMenuItems';\n\nimport styles from './AllPagesPanel.module.scss';\n\nconst b = createBlock('all-pages-panel', styles);\n\ninterface AllPagesPanelProps {\n className?: string;\n startEditIcon?: React.ReactNode;\n onEditModeChanged?: (isEditMode: boolean) => void;\n}\n\nexport const AllPagesPanel: React.FC<AllPagesPanelProps> = (props) => {\n const {startEditIcon, onEditModeChanged, className} = props;\n const {menuItems, defaultMenuItems, onMenuItemsChanged, editMenuProps} =\n useAsideHeaderInnerContext();\n\n const menuItemsRef = useRef(menuItems);\n menuItemsRef.current = menuItems;\n\n const [isEditMode, setIsEditMode] = useState(false);\n\n const [draggingItemTitle, setDraggingItemTitle] = useState<ReactNode | null>(null);\n\n const toggleEditMode = useCallback(() => {\n setIsEditMode((prev) => !prev);\n }, []);\n\n const groupedItems = useGroupedMenuItems(menuItems);\n\n useEffect(() => {\n onEditModeChanged?.(isEditMode);\n\n if (isEditMode) {\n editMenuProps?.onOpenEditMode?.();\n }\n }, [isEditMode, onEditModeChanged, editMenuProps]);\n\n const onItemClick = useCallback<NonNullable<ListProps<AsideHeaderItem>['onItemClick']>>(\n (item, _index, _forwardKey, event) => {\n // TODO: make event an optional argument\n item.onItemClick?.(item, false, event as React.MouseEvent<HTMLElement, MouseEvent>);\n },\n [],\n );\n\n const togglePageVisibility = useCallback(\n (item: AsideHeaderItem) => {\n if (!onMenuItemsChanged) {\n return;\n }\n const changedItem: AsideHeaderItem = {\n ...item,\n hidden: !item.hidden,\n };\n\n const originItems = menuItemsRef.current.filter(\n (menuItem) => menuItem.id !== ALL_PAGES_ID,\n );\n editMenuProps?.onToggleMenuItem?.(changedItem);\n onMenuItemsChanged(\n originItems.map((menuItem) => {\n if (menuItem.id !== changedItem.id) {\n return menuItem;\n }\n return changedItem;\n }),\n );\n },\n [onMenuItemsChanged, editMenuProps],\n );\n\n const onDragEnd = useCallback(() => {\n setDraggingItemTitle(null);\n }, [setDraggingItemTitle]);\n\n const itemRender = useCallback(\n (\n asideHeaderItem: ListItemData<AsideHeaderItem>,\n _isActive: boolean,\n _itemIndex: number,\n ) => {\n const onDragStart = () => {\n setDraggingItemTitle(asideHeaderItem.title);\n };\n\n return (\n <AllPagesListItem\n item={asideHeaderItem}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n editMode={isEditMode}\n onToggle={() => togglePageVisibility(asideHeaderItem)}\n enableSorting={editMenuProps?.enableSorting}\n />\n );\n },\n [isEditMode, togglePageVisibility, onDragEnd, setDraggingItemTitle, editMenuProps],\n );\n\n const onResetToDefaultClick = useCallback(() => {\n if (!onMenuItemsChanged) {\n return;\n }\n editMenuProps?.onResetSettingsToDefault?.();\n const originItems = defaultMenuItems?.filter(({id}) => id !== ALL_PAGES_ID);\n\n if (originItems) {\n onMenuItemsChanged(originItems);\n }\n }, [onMenuItemsChanged, editMenuProps, defaultMenuItems]);\n\n const changeItemsOrder = useCallback(\n ({oldIndex, newIndex}: {oldIndex: number; newIndex: number}) => {\n const newItems = menuItemsRef.current.filter(({id}) => id !== ALL_PAGES_ID);\n\n const element = newItems.splice(oldIndex, 1)[0];\n newItems.splice(newIndex, 0, element);\n\n onMenuItemsChanged?.(newItems.filter(({type}) => type !== 'divider'));\n\n setDraggingItemTitle(null);\n editMenuProps?.onChangeItemsOrder?.(element, oldIndex, newIndex);\n },\n [onMenuItemsChanged, editMenuProps],\n );\n\n const sortableItems = useMemo(() => {\n return menuItems.filter(\n ({id, afterMoreButton, type}) =>\n id !== ALL_PAGES_ID && !afterMoreButton && type !== 'divider',\n );\n }, [menuItems]);\n\n return (\n <Flex className={b(null, className)} gap=\"5\" direction=\"column\">\n <Flex gap=\"4\" alignItems=\"center\" justifyContent=\"space-between\">\n <Text variant=\"subheader-2\">\n {isEditMode ? i18n('all-panel.title.editing') : i18n('all-panel.title.main')}\n </Text>\n <Tooltip content={i18n('all-panel.title.editing')}>\n <Button selected={isEditMode} view=\"normal\" onClick={toggleEditMode}>\n {startEditIcon ? startEditIcon : <Icon data={Gear} />}\n </Button>\n </Tooltip>\n </Flex>\n <Flex className={b('content', {editMode: isEditMode})} gap=\"5\" direction=\"column\">\n {isEditMode && editMenuProps?.enableSorting ? (\n <div>\n <List\n itemClassName={b('item', {editMode: true})}\n itemHeight={40}\n onSortEnd={changeItemsOrder}\n sortable\n virtualized={false}\n filterable={false}\n items={sortableItems}\n onItemClick={onItemClick}\n renderItem={itemRender}\n />\n\n {draggingItemTitle && (\n <div className={b('drag-placeholder')}>{draggingItemTitle}</div>\n )}\n </div>\n ) : (\n Object.keys(groupedItems).map((category) => {\n return (\n <Flex key={category} direction=\"column\" gap=\"3\">\n <Text className={b('category')} variant=\"body-1\" color=\"secondary\">\n {category}\n </Text>\n <List\n virtualized={false}\n filterable={false}\n items={groupedItems[category]}\n onItemClick={onItemClick}\n renderItem={itemRender}\n />\n </Flex>\n );\n })\n )}\n </Flex>\n {isEditMode && (\n <Button onClick={onResetToDefaultClick}>{i18n('all-panel.resetToDefault')}</Button>\n )}\n </Flex>\n );\n};\n"],"names":["createBlock","styles","useAsideHeaderInnerContext","useRef","useState","useCallback","useGroupedMenuItems","useEffect","ALL_PAGES_ID","AllPagesListItem","useMemo","Flex","Text","i18n","Tooltip","Button","Icon","Gear","List"],"mappings":"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"}
1
+ {"version":3,"file":"AllPagesPanel.js","sources":["../../../../../../../src/components/AsideHeader/components/AllPagesPanel/AllPagesPanel.tsx"],"sourcesContent":["import React, {ReactNode, useCallback, useEffect, useMemo, useRef, useState} from 'react';\n\nimport {Gear} from '@gravity-ui/icons';\nimport {Button, Flex, Icon, List, ListItemData, ListProps, Text, Tooltip} from '@gravity-ui/uikit';\n\nimport type {MenuGroup} from '../../../types';\nimport {createBlock} from '../../../utils/cn';\nimport {useAsideHeaderInnerContext} from '../../AsideHeaderContext';\nimport {AsideHeaderItem} from '../../types';\nimport {buildCompositeBarRows} from '../CompositeBar/grouping';\n\nimport {AllPagesListItem} from './AllPagesListItem';\nimport {\n ALL_PAGES_PANEL_ROW_BUILD_OPTIONS,\n getAllPagesEditModeFlatItems,\n getCompositeBarHeaderGroupId,\n reorderMenuItemsByCompositeBarRows,\n rowsToAllPagesDisplayItems,\n} from './allPagesEditDisplay';\nimport {isAllPagesSortableItem, reorderAllPagesSortableItems} from './allPagesSortable';\nimport {ALL_PAGES_ID} from './constants';\nimport i18n from './i18n';\nimport {useGroupedMenuItems} from './useGroupedMenuItems';\n\nimport styles from './AllPagesPanel.module.scss';\n\nconst b = createBlock('all-pages-panel', styles);\n\ninterface AllPagesPanelProps {\n className?: string;\n startEditIcon?: React.ReactNode;\n onEditModeChanged?: (isEditMode: boolean) => void;\n}\n\nexport const AllPagesPanel: React.FC<AllPagesPanelProps> = (props) => {\n const {startEditIcon, onEditModeChanged, className} = props;\n const {\n menuItems,\n defaultMenuItems,\n onMenuItemsChanged,\n editMenuProps,\n menuGroups,\n onMenuGroupsChanged,\n } = useAsideHeaderInnerContext();\n\n const menuItemsRef = useRef(menuItems);\n menuItemsRef.current = menuItems;\n\n const [isEditMode, setIsEditMode] = useState(false);\n\n const [draggingItemTitle, setDraggingItemTitle] = useState<ReactNode | null>(null);\n\n const toggleEditMode = useCallback(() => {\n setIsEditMode((prev) => !prev);\n }, []);\n\n const groupedItems = useGroupedMenuItems(\n menuItems,\n isEditMode,\n menuGroups,\n onMenuGroupsChanged,\n );\n\n useEffect(() => {\n onEditModeChanged?.(isEditMode);\n\n if (isEditMode) {\n editMenuProps?.onOpenEditMode?.();\n }\n }, [isEditMode, onEditModeChanged, editMenuProps]);\n\n const onItemClick = useCallback<NonNullable<ListProps<AsideHeaderItem>['onItemClick']>>(\n (item, _index, _forwardKey, event) => {\n // TODO: make event an optional argument\n item.onItemClick?.(item, false, event as React.MouseEvent<HTMLElement, MouseEvent>);\n },\n [],\n );\n\n const togglePageVisibility = useCallback(\n (item: AsideHeaderItem) => {\n const groupIdFromHeader = getCompositeBarHeaderGroupId(item.id);\n if (groupIdFromHeader && menuGroups && onMenuGroupsChanged) {\n const previousGroup = menuGroups.find((g) => g.id === groupIdFromHeader);\n if (!previousGroup) {\n return;\n }\n const changedGroup: MenuGroup = {\n ...previousGroup,\n hidden: !previousGroup.hidden,\n };\n editMenuProps?.onToggleMenuGroup?.(changedGroup);\n onMenuGroupsChanged(\n menuGroups.map((g) => (g.id === groupIdFromHeader ? changedGroup : g)),\n );\n return;\n }\n\n if (!onMenuItemsChanged) {\n return;\n }\n\n const changedItem: AsideHeaderItem = {\n ...item,\n hidden: !item.hidden,\n };\n\n const originItems = menuItemsRef.current.filter(\n (menuItem) => menuItem.id !== ALL_PAGES_ID,\n );\n editMenuProps?.onToggleMenuItem?.(changedItem);\n onMenuItemsChanged(\n originItems.map((menuItem) => {\n if (menuItem.id !== changedItem.id) {\n return menuItem;\n }\n return changedItem;\n }),\n );\n },\n [onMenuItemsChanged, editMenuProps, menuGroups, onMenuGroupsChanged],\n );\n\n const onDragEnd = useCallback(() => {\n setDraggingItemTitle(null);\n }, [setDraggingItemTitle]);\n\n const itemRender = useCallback(\n (\n asideHeaderItem: ListItemData<AsideHeaderItem>,\n _isActive: boolean,\n _itemIndex: number,\n ) => {\n const onDragStart = () => {\n setDraggingItemTitle(asideHeaderItem.title);\n };\n\n return (\n <AllPagesListItem\n item={asideHeaderItem}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n editMode={isEditMode}\n onToggle={() => togglePageVisibility(asideHeaderItem)}\n enableSorting={editMenuProps?.enableSorting}\n />\n );\n },\n [isEditMode, togglePageVisibility, onDragEnd, setDraggingItemTitle, editMenuProps],\n );\n\n const onResetToDefaultClick = useCallback(() => {\n if (!onMenuItemsChanged) {\n return;\n }\n editMenuProps?.onResetSettingsToDefault?.();\n const originItems = defaultMenuItems?.filter(({id}) => id !== ALL_PAGES_ID);\n\n if (originItems) {\n onMenuItemsChanged(originItems);\n }\n }, [onMenuItemsChanged, editMenuProps, defaultMenuItems]);\n\n const changeItemsOrder = useCallback(\n ({oldIndex, newIndex}: {oldIndex: number; newIndex: number}) => {\n const withoutAllPages = menuItemsRef.current.filter(\n ({id, type}) => id !== ALL_PAGES_ID && type !== 'divider',\n );\n\n let element: AsideHeaderItem | undefined;\n let reordered: AsideHeaderItem[];\n\n if (menuGroups?.length) {\n const rows = buildCompositeBarRows(\n withoutAllPages,\n menuGroups,\n ALL_PAGES_PANEL_ROW_BUILD_OPTIONS,\n );\n const display = rowsToAllPagesDisplayItems(rows, {\n enableGroupHeaderPins: Boolean(onMenuGroupsChanged),\n });\n element = display[oldIndex];\n reordered = reorderMenuItemsByCompositeBarRows(\n withoutAllPages,\n menuGroups,\n oldIndex,\n newIndex,\n );\n } else {\n const sortableBefore = withoutAllPages.filter(isAllPagesSortableItem);\n element = sortableBefore[oldIndex];\n reordered = reorderAllPagesSortableItems(withoutAllPages, oldIndex, newIndex);\n }\n\n onMenuItemsChanged?.(reordered);\n\n setDraggingItemTitle(null);\n if (element) {\n editMenuProps?.onChangeItemsOrder?.(element, oldIndex, newIndex);\n }\n },\n [onMenuItemsChanged, editMenuProps, menuGroups, onMenuGroupsChanged],\n );\n\n const sortableItems = useMemo(() => {\n const without = menuItems.filter(({id, type}) => id !== ALL_PAGES_ID && type !== 'divider');\n const pinHeaders = Boolean(onMenuGroupsChanged);\n if (menuGroups?.length) {\n return getAllPagesEditModeFlatItems(without, menuGroups, {\n enableGroupHeaderPins: pinHeaders,\n });\n }\n return without.filter(isAllPagesSortableItem);\n }, [menuItems, menuGroups, onMenuGroupsChanged]);\n\n return (\n <Flex className={b(null, className)} gap=\"5\" direction=\"column\">\n <Flex gap=\"4\" alignItems=\"center\" justifyContent=\"space-between\">\n <Text variant=\"subheader-2\">\n {isEditMode ? i18n('all-panel.title.editing') : i18n('all-panel.title.main')}\n </Text>\n <Tooltip content={i18n('all-panel.title.editing')}>\n <Button selected={isEditMode} view=\"normal\" onClick={toggleEditMode}>\n {startEditIcon ? startEditIcon : <Icon data={Gear} />}\n </Button>\n </Tooltip>\n </Flex>\n <Flex className={b('content', {editMode: isEditMode})} gap=\"5\" direction=\"column\">\n {isEditMode && editMenuProps?.enableSorting ? (\n <div>\n <List\n itemClassName={b('item', {editMode: true})}\n itemHeight={40}\n onSortEnd={changeItemsOrder}\n sortable\n virtualized={false}\n filterable={false}\n items={sortableItems}\n onItemClick={onItemClick}\n renderItem={itemRender}\n />\n\n {draggingItemTitle && (\n <div className={b('drag-placeholder')}>{draggingItemTitle}</div>\n )}\n </div>\n ) : (\n Object.keys(groupedItems).map((category) => {\n return (\n <Flex key={category} direction=\"column\" gap=\"3\">\n <Text className={b('category')} variant=\"body-1\" color=\"secondary\">\n {category}\n </Text>\n <List\n virtualized={false}\n filterable={false}\n items={groupedItems[category]}\n onItemClick={onItemClick}\n renderItem={itemRender}\n />\n </Flex>\n );\n })\n )}\n </Flex>\n {isEditMode && (\n <Button onClick={onResetToDefaultClick}>{i18n('all-panel.resetToDefault')}</Button>\n )}\n </Flex>\n );\n};\n"],"names":["createBlock","styles","useAsideHeaderInnerContext","useRef","useState","useCallback","useGroupedMenuItems","useEffect","getCompositeBarHeaderGroupId","ALL_PAGES_ID","AllPagesListItem","buildCompositeBarRows","ALL_PAGES_PANEL_ROW_BUILD_OPTIONS","rowsToAllPagesDisplayItems","reorderMenuItemsByCompositeBarRows","isAllPagesSortableItem","reorderAllPagesSortableItems","useMemo","getAllPagesEditModeFlatItems","Flex","Text","i18n","Tooltip","Button","Icon","Gear","List"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { MenuGroup } from '../../../types';
2
+ import { AsideHeaderItem } from '../../types';
3
+ import { type CompositeBarRow } from '../CompositeBar/grouping';
4
+ /** Options passed to {@link buildCompositeBarRows} for All pages panel (edit-mode rows). */
5
+ export declare const ALL_PAGES_PANEL_ROW_BUILD_OPTIONS: {
6
+ readonly includeHidden: true;
7
+ readonly includeHiddenGroups: true;
8
+ };
9
+ export declare function isCompositeBarGroupHeaderItem(item: AsideHeaderItem): boolean;
10
+ export declare function getCompositeBarHeaderGroupId(itemId: string): string | undefined;
11
+ export declare function rowsToAllPagesDisplayItems(rows: CompositeBarRow[], options?: {
12
+ enableGroupHeaderPins?: boolean;
13
+ }): AsideHeaderItem[];
14
+ /**
15
+ * Edit-mode list: top-level items + one row per menu group (header only), same order as CompositeBar.
16
+ */
17
+ export declare function getAllPagesEditModeFlatItems(asideHeaderItems: AsideHeaderItem[], menuGroups: MenuGroup[] | undefined, options?: {
18
+ enableGroupHeaderPins?: boolean;
19
+ }): AsideHeaderItem[];
20
+ export declare function reorderMenuItemsByCompositeBarRows(withoutAllPagesNoDividers: AsideHeaderItem[], menuGroups: MenuGroup[], oldIndex: number, newIndex: number): AsideHeaderItem[];
@@ -0,0 +1,56 @@
1
+ 'use strict';
2
+
3
+ var constants = require('../CompositeBar/constants.js');
4
+ var grouping = require('../CompositeBar/grouping.js');
5
+ var utils = require('../CompositeBar/utils.js');
6
+
7
+ /** Options passed to {@link buildCompositeBarRows} for All pages panel (edit-mode rows). */
8
+ const ALL_PAGES_PANEL_ROW_BUILD_OPTIONS = {
9
+ includeHidden: true,
10
+ includeHiddenGroups: true,
11
+ };
12
+ function getCompositeBarHeaderGroupId(itemId) {
13
+ if (!itemId.startsWith(constants.COMPOSITE_BAR_GROUP_HEADER_ID_PREFIX)) {
14
+ return undefined;
15
+ }
16
+ return itemId.slice(constants.COMPOSITE_BAR_GROUP_HEADER_ID_PREFIX.length);
17
+ }
18
+ function rowsToAllPagesDisplayItems(rows, options) {
19
+ const showPins = Boolean(options === null || options === undefined ? undefined : options.enableGroupHeaderPins);
20
+ return rows.map((row) => {
21
+ var _a;
22
+ if (row.kind === 'item') {
23
+ return row.item;
24
+ }
25
+ const header = utils.makeGroupHeaderAsideItem(row.group);
26
+ const firstCategory = (_a = row.items[0]) === null || _a === undefined ? undefined : _a.category;
27
+ return Object.assign(Object.assign({}, header), { category: firstCategory !== null && firstCategory !== undefined ? firstCategory : row.group.title, hidden: Boolean(row.group.hidden), preventUserRemoving: !showPins });
28
+ });
29
+ }
30
+ /**
31
+ * Edit-mode list: top-level items + one row per menu group (header only), same order as CompositeBar.
32
+ */
33
+ function getAllPagesEditModeFlatItems(asideHeaderItems, menuGroups, options) {
34
+ if (!(menuGroups === null || menuGroups === undefined ? undefined : menuGroups.length)) {
35
+ return asideHeaderItems.filter((item) => !item.groupId);
36
+ }
37
+ const rows = grouping.buildCompositeBarRows(asideHeaderItems, menuGroups, ALL_PAGES_PANEL_ROW_BUILD_OPTIONS);
38
+ return rowsToAllPagesDisplayItems(rows, options);
39
+ }
40
+ function reorderMenuItemsByCompositeBarRows(withoutAllPagesNoDividers, menuGroups, oldIndex, newIndex) {
41
+ const rows = grouping.buildCompositeBarRows(withoutAllPagesNoDividers, menuGroups, ALL_PAGES_PANEL_ROW_BUILD_OPTIONS);
42
+ const reordered = [...rows];
43
+ const [moved] = reordered.splice(oldIndex, 1);
44
+ if (moved === undefined) {
45
+ return grouping.flattenCompositeBarRows(rows);
46
+ }
47
+ reordered.splice(newIndex, 0, moved);
48
+ return grouping.flattenCompositeBarRows(reordered);
49
+ }
50
+
51
+ exports.ALL_PAGES_PANEL_ROW_BUILD_OPTIONS = ALL_PAGES_PANEL_ROW_BUILD_OPTIONS;
52
+ exports.getAllPagesEditModeFlatItems = getAllPagesEditModeFlatItems;
53
+ exports.getCompositeBarHeaderGroupId = getCompositeBarHeaderGroupId;
54
+ exports.reorderMenuItemsByCompositeBarRows = reorderMenuItemsByCompositeBarRows;
55
+ exports.rowsToAllPagesDisplayItems = rowsToAllPagesDisplayItems;
56
+ //# sourceMappingURL=allPagesEditDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allPagesEditDisplay.js","sources":["../../../../../../../src/components/AsideHeader/components/AllPagesPanel/allPagesEditDisplay.ts"],"sourcesContent":["import type {MenuGroup} from '../../../types';\nimport {AsideHeaderItem} from '../../types';\nimport {COMPOSITE_BAR_GROUP_HEADER_ID_PREFIX} from '../CompositeBar/constants';\nimport {\n type CompositeBarRow,\n buildCompositeBarRows,\n flattenCompositeBarRows,\n} from '../CompositeBar/grouping';\nimport {makeGroupHeaderAsideItem} from '../CompositeBar/utils';\n\n/** Options passed to {@link buildCompositeBarRows} for All pages panel (edit-mode rows). */\nexport const ALL_PAGES_PANEL_ROW_BUILD_OPTIONS = {\n includeHidden: true,\n includeHiddenGroups: true,\n} as const;\n\nexport function isCompositeBarGroupHeaderItem(item: AsideHeaderItem): boolean {\n return item.id.startsWith(COMPOSITE_BAR_GROUP_HEADER_ID_PREFIX);\n}\n\nexport function getCompositeBarHeaderGroupId(itemId: string): string | undefined {\n if (!itemId.startsWith(COMPOSITE_BAR_GROUP_HEADER_ID_PREFIX)) {\n return undefined;\n }\n return itemId.slice(COMPOSITE_BAR_GROUP_HEADER_ID_PREFIX.length);\n}\n\nexport function rowsToAllPagesDisplayItems(\n rows: CompositeBarRow[],\n options?: {enableGroupHeaderPins?: boolean},\n): AsideHeaderItem[] {\n const showPins = Boolean(options?.enableGroupHeaderPins);\n return rows.map((row) => {\n if (row.kind === 'item') {\n return row.item;\n }\n const header = makeGroupHeaderAsideItem(row.group);\n const firstCategory = row.items[0]?.category;\n return {\n ...header,\n category: firstCategory ?? row.group.title,\n hidden: Boolean(row.group.hidden),\n preventUserRemoving: !showPins,\n };\n });\n}\n\n/**\n * Edit-mode list: top-level items + one row per menu group (header only), same order as CompositeBar.\n */\nexport function getAllPagesEditModeFlatItems(\n asideHeaderItems: AsideHeaderItem[],\n menuGroups: MenuGroup[] | undefined,\n options?: {enableGroupHeaderPins?: boolean},\n): AsideHeaderItem[] {\n if (!menuGroups?.length) {\n return asideHeaderItems.filter((item) => !item.groupId);\n }\n const rows = buildCompositeBarRows(\n asideHeaderItems,\n menuGroups,\n ALL_PAGES_PANEL_ROW_BUILD_OPTIONS,\n );\n return rowsToAllPagesDisplayItems(rows, options);\n}\n\nexport function reorderMenuItemsByCompositeBarRows(\n withoutAllPagesNoDividers: AsideHeaderItem[],\n menuGroups: MenuGroup[],\n oldIndex: number,\n newIndex: number,\n): AsideHeaderItem[] {\n const rows = buildCompositeBarRows(\n withoutAllPagesNoDividers,\n menuGroups,\n ALL_PAGES_PANEL_ROW_BUILD_OPTIONS,\n );\n const reordered = [...rows];\n const [moved] = reordered.splice(oldIndex, 1);\n\n if (moved === undefined) {\n return flattenCompositeBarRows(rows);\n }\n\n reordered.splice(newIndex, 0, moved);\n\n return flattenCompositeBarRows(reordered);\n}\n"],"names":["COMPOSITE_BAR_GROUP_HEADER_ID_PREFIX","makeGroupHeaderAsideItem","buildCompositeBarRows","flattenCompositeBarRows"],"mappings":";;;;;;AAUA;AACa,MAAA,iCAAiC,GAAG;AAC7C,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,mBAAmB,EAAE,IAAI;;AAOvB,SAAU,4BAA4B,CAAC,MAAc,EAAA;IACvD,IAAI,CAAC,MAAM,CAAC,UAAU,CAACA,8CAAoC,CAAC,EAAE;AAC1D,QAAA,OAAO,SAAS;;IAEpB,OAAO,MAAM,CAAC,KAAK,CAACA,8CAAoC,CAAC,MAAM,CAAC;AACpE;AAEgB,SAAA,0BAA0B,CACtC,IAAuB,EACvB,OAA2C,EAAA;AAE3C,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,SAAA,GAAA,SAAA,GAAP,OAAO,CAAE,qBAAqB,CAAC;AACxD,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;;AACpB,QAAA,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE;YACrB,OAAO,GAAG,CAAC,IAAI;;QAEnB,MAAM,MAAM,GAAGC,8BAAwB,CAAC,GAAG,CAAC,KAAK,CAAC;QAClD,MAAM,aAAa,GAAG,CAAA,EAAA,GAAA,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,SAAA,GAAA,SAAA,GAAA,EAAA,CAAA,QAAQ;AAC5C,QAAA,OAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACO,MAAM,CAAA,EAAA,EACT,QAAQ,EAAE,aAAa,KAAA,IAAA,IAAb,aAAa,KAAA,SAAA,GAAb,aAAa,GAAI,GAAG,CAAC,KAAK,CAAC,KAAK,EAC1C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EACjC,mBAAmB,EAAE,CAAC,QAAQ,EAChC,CAAA;AACN,KAAC,CAAC;AACN;AAEA;;AAEG;SACa,4BAA4B,CACxC,gBAAmC,EACnC,UAAmC,EACnC,OAA2C,EAAA;IAE3C,IAAI,EAAC,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,SAAA,GAAA,SAAA,GAAA,UAAU,CAAE,MAAM,CAAA,EAAE;AACrB,QAAA,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;;IAE3D,MAAM,IAAI,GAAGC,8BAAqB,CAC9B,gBAAgB,EAChB,UAAU,EACV,iCAAiC,CACpC;AACD,IAAA,OAAO,0BAA0B,CAAC,IAAI,EAAE,OAAO,CAAC;AACpD;AAEM,SAAU,kCAAkC,CAC9C,yBAA4C,EAC5C,UAAuB,EACvB,QAAgB,EAChB,QAAgB,EAAA;IAEhB,MAAM,IAAI,GAAGA,8BAAqB,CAC9B,yBAAyB,EACzB,UAAU,EACV,iCAAiC,CACpC;AACD,IAAA,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC;AAC3B,IAAA,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AAE7C,IAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACrB,QAAA,OAAOC,gCAAuB,CAAC,IAAI,CAAC;;IAGxC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC;AAEpC,IAAA,OAAOA,gCAAuB,CAAC,SAAS,CAAC;AAC7C;;;;;;;;"}
@@ -0,0 +1,7 @@
1
+ import { AsideHeaderItem } from '../../types';
2
+ export declare function isAllPagesSortableItem(item: AsideHeaderItem): boolean;
3
+ /**
4
+ * Reorders only {@link isAllPagesSortableItem} entries; every other row stays in place.
5
+ * Indices refer to the contiguous sortable subset (same order as in the drag-and-drop list).
6
+ */
7
+ export declare function reorderAllPagesSortableItems(withoutAllPagesItem: AsideHeaderItem[], oldIndex: number, newIndex: number): AsideHeaderItem[];
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+
3
+ var types = require('../../types.js');
4
+
5
+ function isAllPagesSortableItem(item) {
6
+ return (item.id !== types.ALL_PAGES_ID &&
7
+ !item.afterMoreButton &&
8
+ item.type !== 'divider' &&
9
+ !item.groupId);
10
+ }
11
+ /**
12
+ * Reorders only {@link isAllPagesSortableItem} entries; every other row stays in place.
13
+ * Indices refer to the contiguous sortable subset (same order as in the drag-and-drop list).
14
+ */
15
+ function reorderAllPagesSortableItems(withoutAllPagesItem, oldIndex, newIndex) {
16
+ const sortable = withoutAllPagesItem.filter(isAllPagesSortableItem);
17
+ const reordered = [...sortable];
18
+ const [moved] = reordered.splice(oldIndex, 1);
19
+ reordered.splice(newIndex, 0, moved);
20
+ let i = 0;
21
+ return withoutAllPagesItem.map((item) => isAllPagesSortableItem(item) ? reordered[i++] : item);
22
+ }
23
+
24
+ exports.isAllPagesSortableItem = isAllPagesSortableItem;
25
+ exports.reorderAllPagesSortableItems = reorderAllPagesSortableItems;
26
+ //# sourceMappingURL=allPagesSortable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allPagesSortable.js","sources":["../../../../../../../src/components/AsideHeader/components/AllPagesPanel/allPagesSortable.ts"],"sourcesContent":["import {ALL_PAGES_ID, AsideHeaderItem} from '../../types';\n\nexport function isAllPagesSortableItem(item: AsideHeaderItem): boolean {\n return (\n item.id !== ALL_PAGES_ID &&\n !item.afterMoreButton &&\n item.type !== 'divider' &&\n !item.groupId\n );\n}\n\n/**\n * Reorders only {@link isAllPagesSortableItem} entries; every other row stays in place.\n * Indices refer to the contiguous sortable subset (same order as in the drag-and-drop list).\n */\nexport function reorderAllPagesSortableItems(\n withoutAllPagesItem: AsideHeaderItem[],\n oldIndex: number,\n newIndex: number,\n): AsideHeaderItem[] {\n const sortable = withoutAllPagesItem.filter(isAllPagesSortableItem);\n const reordered = [...sortable];\n const [moved] = reordered.splice(oldIndex, 1);\n reordered.splice(newIndex, 0, moved);\n\n let i = 0;\n return withoutAllPagesItem.map((item) =>\n isAllPagesSortableItem(item) ? reordered[i++]! : item,\n );\n}\n"],"names":["ALL_PAGES_ID"],"mappings":";;;;AAEM,SAAU,sBAAsB,CAAC,IAAqB,EAAA;AACxD,IAAA,QACI,IAAI,CAAC,EAAE,KAAKA,kBAAY;QACxB,CAAC,IAAI,CAAC,eAAe;QACrB,IAAI,CAAC,IAAI,KAAK,SAAS;AACvB,QAAA,CAAC,IAAI,CAAC,OAAO;AAErB;AAEA;;;AAGG;SACa,4BAA4B,CACxC,mBAAsC,EACtC,QAAgB,EAChB,QAAgB,EAAA;IAEhB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,sBAAsB,CAAC;AACnE,IAAA,MAAM,SAAS,GAAG,CAAC,GAAG,QAAQ,CAAC;AAC/B,IAAA,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,CAAC;IAEpC,IAAI,CAAC,GAAG,CAAC;IACT,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,KAChC,sBAAsB,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,CAAE,GAAG,IAAI,CACxD;AACL;;;;;"}
@@ -1,3 +1,3 @@
1
1
  import { AsideHeaderItem } from '../../types';
2
- export declare const ALL_PAGES_ID: "all-pages";
2
+ export { ALL_PAGES_ID } from '../../types';
3
3
  export declare function getAllPagesMenuItem(): AsideHeaderItem;
@@ -1,18 +1,18 @@
1
1
  'use strict';
2
2
 
3
3
  var icons = require('@gravity-ui/icons');
4
+ var types = require('../../types.js');
4
5
  var index = require('./i18n/index.js');
5
6
 
6
- const ALL_PAGES_ID = 'all-pages';
7
7
  function getAllPagesMenuItem() {
8
8
  return {
9
- id: ALL_PAGES_ID,
9
+ id: types.ALL_PAGES_ID,
10
10
  title: index.default('menu-item.all-pages.title'),
11
11
  tooltipText: index.default('menu-item.all-pages.title'),
12
12
  icon: icons.Ellipsis,
13
13
  };
14
14
  }
15
15
 
16
- exports.ALL_PAGES_ID = ALL_PAGES_ID;
16
+ exports.ALL_PAGES_ID = types.ALL_PAGES_ID;
17
17
  exports.getAllPagesMenuItem = getAllPagesMenuItem;
18
18
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../../../../../../../src/components/AsideHeader/components/AllPagesPanel/constants.ts"],"sourcesContent":["import {Ellipsis} from '@gravity-ui/icons';\n\nimport {AsideHeaderItem} from '../../types';\n\nimport i18n from './i18n';\n\nexport const ALL_PAGES_ID = 'all-pages' as const;\n\nexport function getAllPagesMenuItem(): AsideHeaderItem {\n return {\n id: ALL_PAGES_ID,\n title: i18n('menu-item.all-pages.title'),\n tooltipText: i18n('menu-item.all-pages.title'),\n icon: Ellipsis,\n };\n}\n"],"names":["i18n","Ellipsis"],"mappings":";;;;;AAMO,MAAM,YAAY,GAAG;SAEZ,mBAAmB,GAAA;IAC/B,OAAO;AACH,QAAA,EAAE,EAAE,YAAY;AAChB,QAAA,KAAK,EAAEA,aAAI,CAAC,2BAA2B,CAAC;AACxC,QAAA,WAAW,EAAEA,aAAI,CAAC,2BAA2B,CAAC;AAC9C,QAAA,IAAI,EAAEC,cAAQ;KACjB;AACL;;;;;"}
1
+ {"version":3,"file":"constants.js","sources":["../../../../../../../src/components/AsideHeader/components/AllPagesPanel/constants.ts"],"sourcesContent":["import {Ellipsis} from '@gravity-ui/icons';\n\nimport {ALL_PAGES_ID, AsideHeaderItem} from '../../types';\n\nimport i18n from './i18n';\n\nexport {ALL_PAGES_ID} from '../../types';\n\nexport function getAllPagesMenuItem(): AsideHeaderItem {\n return {\n id: ALL_PAGES_ID,\n title: i18n('menu-item.all-pages.title'),\n tooltipText: i18n('menu-item.all-pages.title'),\n icon: Ellipsis,\n };\n}\n"],"names":["ALL_PAGES_ID","i18n","Ellipsis"],"mappings":";;;;;;SAQgB,mBAAmB,GAAA;IAC/B,OAAO;AACH,QAAA,EAAE,EAAEA,kBAAY;AAChB,QAAA,KAAK,EAAEC,aAAI,CAAC,2BAA2B,CAAC;AACxC,QAAA,WAAW,EAAEA,aAAI,CAAC,2BAA2B,CAAC;AAC9C,QAAA,IAAI,EAAEC,cAAQ;KACjB;AACL;;;;;"}
@@ -1,4 +1,13 @@
1
+ import type { MenuGroup } from '../../../types';
1
2
  import { AsideHeaderItem } from '../../types';
2
- export declare const useGroupedMenuItems: (asideHeaderItems: AsideHeaderItem[]) => {
3
+ /**
4
+ * Group menu items by category for the All pages panel.
5
+ *
6
+ * @param asideHeaderItems — items from context (includes synthetic All pages row).
7
+ * @param editMode — when true, applies edit-mode row selection (headers when `menuGroups` is set).
8
+ * @param menuGroups — when provided with edit mode, inserts one CompositeBar-style header per group.
9
+ * @returns Items grouped by `category` key for rendering sections.
10
+ */
11
+ export declare const useGroupedMenuItems: (asideHeaderItems: AsideHeaderItem[], editMode?: boolean, menuGroups?: MenuGroup[], onMenuGroupsChanged?: (menuGroups: MenuGroup[]) => void) => {
3
12
  [key: string]: AsideHeaderItem[];
4
13
  };
@@ -1,13 +1,35 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- var constants = require('./constants.js');
4
+ var types = require('../../types.js');
5
+ var allPagesEditDisplay = require('./allPagesEditDisplay.js');
5
6
  var index = require('./i18n/index.js');
6
7
 
7
- const useGroupedMenuItems = (asideHeaderItems) => {
8
+ /**
9
+ * Group menu items by category for the All pages panel.
10
+ *
11
+ * @param asideHeaderItems — items from context (includes synthetic All pages row).
12
+ * @param editMode — when true, applies edit-mode row selection (headers when `menuGroups` is set).
13
+ * @param menuGroups — when provided with edit mode, inserts one CompositeBar-style header per group.
14
+ * @returns Items grouped by `category` key for rendering sections.
15
+ */
16
+ const useGroupedMenuItems = (asideHeaderItems, editMode, menuGroups, onMenuGroupsChanged) => {
8
17
  const allPagesMenuItems = React.useMemo(() => {
9
- const filteredItems = asideHeaderItems.filter(({ id, type }) => type !== 'divider' && id !== constants.ALL_PAGES_ID);
10
- filteredItems.sort(({ type: typeA }, { type: typeB }) => {
18
+ const base = asideHeaderItems.filter(({ id, type }) => type !== 'divider' && id !== types.ALL_PAGES_ID);
19
+ const groupHeaderPins = Boolean(onMenuGroupsChanged);
20
+ let flatForGrouping;
21
+ if (!editMode) {
22
+ flatForGrouping = base;
23
+ }
24
+ else if (menuGroups === null || menuGroups === undefined ? undefined : menuGroups.length) {
25
+ flatForGrouping = allPagesEditDisplay.getAllPagesEditModeFlatItems(base, menuGroups, {
26
+ enableGroupHeaderPins: groupHeaderPins,
27
+ });
28
+ }
29
+ else {
30
+ flatForGrouping = base.filter((item) => !item.groupId);
31
+ }
32
+ flatForGrouping.sort(({ type: typeA }, { type: typeB }) => {
11
33
  if (typeA === 'action') {
12
34
  return 1;
13
35
  }
@@ -16,7 +38,7 @@ const useGroupedMenuItems = (asideHeaderItems) => {
16
38
  }
17
39
  return 0;
18
40
  });
19
- const groupedItems = filteredItems.reduce((acc, asideHeaderItem) => {
41
+ const groupedItems = flatForGrouping.reduce((acc, asideHeaderItem) => {
20
42
  const category = asideHeaderItem.category || index.default('all-panel.menu.category.allOther');
21
43
  if (!acc[category]) {
22
44
  acc[category] = [];
@@ -25,7 +47,7 @@ const useGroupedMenuItems = (asideHeaderItems) => {
25
47
  return acc;
26
48
  }, {});
27
49
  return groupedItems;
28
- }, [asideHeaderItems]);
50
+ }, [asideHeaderItems, editMode, menuGroups, onMenuGroupsChanged]);
29
51
  return allPagesMenuItems;
30
52
  };
31
53
 
@@ -1 +1 @@
1
- {"version":3,"file":"useGroupedMenuItems.js","sources":["../../../../../../../src/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.ts"],"sourcesContent":["import {useMemo} from 'react';\n\nimport {AsideHeaderItem} from '../../types';\n\nimport {ALL_PAGES_ID} from './constants';\nimport i18n from './i18n';\n\nexport const useGroupedMenuItems = (asideHeaderItems: AsideHeaderItem[]) => {\n const allPagesMenuItems = useMemo(() => {\n const filteredItems = asideHeaderItems.filter(\n ({id, type}) => type !== 'divider' && id !== ALL_PAGES_ID,\n );\n filteredItems.sort(({type: typeA}, {type: typeB}) => {\n if (typeA === 'action') {\n return 1;\n }\n if (typeB === 'action') {\n return -1;\n }\n return 0;\n });\n const groupedItems = filteredItems.reduce(\n (acc, asideHeaderItem) => {\n const category =\n asideHeaderItem.category || i18n('all-panel.menu.category.allOther');\n if (!acc[category]) {\n acc[category] = [];\n }\n acc[category].push(asideHeaderItem);\n return acc;\n },\n {} as {[key: string]: AsideHeaderItem[]},\n );\n return groupedItems;\n }, [asideHeaderItems]);\n\n return allPagesMenuItems;\n};\n"],"names":["useMemo","ALL_PAGES_ID","i18n"],"mappings":";;;;;;AAOa,MAAA,mBAAmB,GAAG,CAAC,gBAAmC,KAAI;AACvE,IAAA,MAAM,iBAAiB,GAAGA,aAAO,CAAC,MAAK;QACnC,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CACzC,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,KAAK,IAAI,KAAK,SAAS,IAAI,EAAE,KAAKC,sBAAY,CAC5D;AACD,QAAA,aAAa,CAAC,IAAI,CAAC,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,KAAI;AAChD,YAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;AACpB,gBAAA,OAAO,CAAC;;AAEZ,YAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;gBACpB,OAAO,EAAE;;AAEb,YAAA,OAAO,CAAC;AACZ,SAAC,CAAC;QACF,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CACrC,CAAC,GAAG,EAAE,eAAe,KAAI;YACrB,MAAM,QAAQ,GACV,eAAe,CAAC,QAAQ,IAAIC,aAAI,CAAC,kCAAkC,CAAC;AACxE,YAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAChB,gBAAA,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;;YAEtB,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;AACnC,YAAA,OAAO,GAAG;SACb,EACD,EAAwC,CAC3C;AACD,QAAA,OAAO,YAAY;AACvB,KAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;AAEtB,IAAA,OAAO,iBAAiB;AAC5B;;;;"}
1
+ {"version":3,"file":"useGroupedMenuItems.js","sources":["../../../../../../../src/components/AsideHeader/components/AllPagesPanel/useGroupedMenuItems.ts"],"sourcesContent":["import {useMemo} from 'react';\n\nimport type {MenuGroup} from '../../../types';\nimport {ALL_PAGES_ID, AsideHeaderItem} from '../../types';\n\nimport {getAllPagesEditModeFlatItems} from './allPagesEditDisplay';\nimport i18n from './i18n';\n\n/**\n * Group menu items by category for the All pages panel.\n *\n * @param asideHeaderItems — items from context (includes synthetic All pages row).\n * @param editMode — when true, applies edit-mode row selection (headers when `menuGroups` is set).\n * @param menuGroups — when provided with edit mode, inserts one CompositeBar-style header per group.\n * @returns Items grouped by `category` key for rendering sections.\n */\nexport const useGroupedMenuItems = (\n asideHeaderItems: AsideHeaderItem[],\n editMode?: boolean,\n menuGroups?: MenuGroup[],\n onMenuGroupsChanged?: (menuGroups: MenuGroup[]) => void,\n) => {\n const allPagesMenuItems = useMemo(() => {\n const base = asideHeaderItems.filter(\n ({id, type}) => type !== 'divider' && id !== ALL_PAGES_ID,\n );\n\n const groupHeaderPins = Boolean(onMenuGroupsChanged);\n\n let flatForGrouping: AsideHeaderItem[];\n\n if (!editMode) {\n flatForGrouping = base;\n } else if (menuGroups?.length) {\n flatForGrouping = getAllPagesEditModeFlatItems(base, menuGroups, {\n enableGroupHeaderPins: groupHeaderPins,\n });\n } else {\n flatForGrouping = base.filter((item) => !item.groupId);\n }\n\n flatForGrouping.sort(({type: typeA}, {type: typeB}) => {\n if (typeA === 'action') {\n return 1;\n }\n if (typeB === 'action') {\n return -1;\n }\n return 0;\n });\n const groupedItems = flatForGrouping.reduce(\n (acc, asideHeaderItem) => {\n const category =\n asideHeaderItem.category || i18n('all-panel.menu.category.allOther');\n if (!acc[category]) {\n acc[category] = [];\n }\n acc[category].push(asideHeaderItem);\n return acc;\n },\n {} as {[key: string]: AsideHeaderItem[]},\n );\n return groupedItems;\n }, [asideHeaderItems, editMode, menuGroups, onMenuGroupsChanged]);\n\n return allPagesMenuItems;\n};\n"],"names":["useMemo","ALL_PAGES_ID","getAllPagesEditModeFlatItems","i18n"],"mappings":";;;;;;;AAQA;;;;;;;AAOG;AACI,MAAM,mBAAmB,GAAG,CAC/B,gBAAmC,EACnC,QAAkB,EAClB,UAAwB,EACxB,mBAAuD,KACvD;AACA,IAAA,MAAM,iBAAiB,GAAGA,aAAO,CAAC,MAAK;QACnC,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAChC,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,KAAK,IAAI,KAAK,SAAS,IAAI,EAAE,KAAKC,kBAAY,CAC5D;AAED,QAAA,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;AAEpD,QAAA,IAAI,eAAkC;QAEtC,IAAI,CAAC,QAAQ,EAAE;YACX,eAAe,GAAG,IAAI;;aACnB,IAAI,UAAU,aAAV,UAAU,KAAA,SAAA,GAAA,SAAA,GAAV,UAAU,CAAE,MAAM,EAAE;AAC3B,YAAA,eAAe,GAAGC,gDAA4B,CAAC,IAAI,EAAE,UAAU,EAAE;AAC7D,gBAAA,qBAAqB,EAAE,eAAe;AACzC,aAAA,CAAC;;aACC;AACH,YAAA,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;;AAG1D,QAAA,eAAe,CAAC,IAAI,CAAC,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,EAAE,EAAC,IAAI,EAAE,KAAK,EAAC,KAAI;AAClD,YAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;AACpB,gBAAA,OAAO,CAAC;;AAEZ,YAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;gBACpB,OAAO,EAAE;;AAEb,YAAA,OAAO,CAAC;AACZ,SAAC,CAAC;QACF,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CACvC,CAAC,GAAG,EAAE,eAAe,KAAI;YACrB,MAAM,QAAQ,GACV,eAAe,CAAC,QAAQ,IAAIC,aAAI,CAAC,kCAAkC,CAAC;AACxE,YAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAChB,gBAAA,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;;YAEtB,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;AACnC,YAAA,OAAO,GAAG;SACb,EACD,EAAwC,CAC3C;AACD,QAAA,OAAO,YAAY;KACtB,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;AAEjE,IAAA,OAAO,iBAAiB;AAC5B;;;;"}
@@ -1 +1 @@
1
- .CompositeBar-module__gn-composite-bar___WoCDY{flex:1 0 auto;min-height:40px;width:100%}.CompositeBar-module__gn-composite-bar___WoCDY .CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF[class]{background-color:transparent}
1
+ .CompositeBar-module__gn-composite-bar___WoCDY{flex:1 0 auto;min-height:40px;width:100%}.CompositeBar-module__gn-composite-bar___WoCDY .CompositeBar-module__gn-composite-bar__root-menu-item___oxCuF[class]{background-color:transparent}.CompositeBar-module__gn-composite-bar__menu-group___3hCzS{display:flex;flex-direction:column;width:100%}.CompositeBar-module__gn-composite-bar__menu-group-header___Yvr21[class]{box-sizing:border-box;flex:0 0 auto;min-height:40px;width:100%}.CompositeBar-module__gn-composite-bar__menu-group-nested-item___9gea-[class]{padding-inline-start:var(--g-spacing-3);position:relative}.CompositeBar-module__gn-composite-bar__menu-group-nested-list-item___-IygH[class]{background-color:transparent;overflow:visible;position:relative}.CompositeBar-module__gn-composite-bar__menu-group-nested-connector___uiegb{box-sizing:content-box;display:flex;pointer-events:none;position:relative;width:16px}.CompositeBar-module__gn-composite-bar__menu-group-nested-connector___uiegb:before{background:var(--gn-aside-header-menu-group-tree-line-color,#c1c3c7);bottom:0;content:"";height:100%;inset-inline-start:calc(50% - .5px);pointer-events:none;position:absolute;top:0;width:1px}.CompositeBar-module__gn-composite-bar__menu-group-nested-connector_spine-active___qVoAX:before{background:var(--gn-aside-header-menu-group-tree-line-active-color,var(--g-color-base-brand));z-index:1}.CompositeBar-module__gn-composite-bar__menu-group-nested-list-item___-IygH:last-child .CompositeBar-module__gn-composite-bar__menu-group-nested-connector___uiegb:before{display:none}.CompositeBar-module__gn-composite-bar__menu-group-nested-tree-svg___FJny7{fill:none;stroke:var(--gn-aside-header-menu-group-tree-line-color,#c1c3c7);display:block;flex-shrink:0;height:40px;max-width:16px;min-width:16px;position:relative}.CompositeBar-module__gn-composite-bar__menu-group-nested-tree-svg_active___Gmthf{stroke:var(--gn-aside-header-menu-group-tree-line-active-color,var(--g-color-base-brand))}.CompositeBar-module__gn-composite-bar__menu-group-nested-row-inner___jJLTe{height:100%;min-width:0;width:100%}
@@ -1,9 +1,10 @@
1
1
  import React, { FC } from 'react';
2
2
  import { MenuGroup } from '../../../types';
3
- import { AsideHeaderItem } from '../../types';
3
+ import { AsideHeaderItem, AsideHeaderMenuOverflow } from '../../types';
4
4
  type CompositeBarProps = {
5
5
  type: 'menu' | 'subheader';
6
6
  items: AsideHeaderItem[];
7
+ className?: string;
7
8
  menuGroups?: MenuGroup[];
8
9
  onItemClick?: (item: AsideHeaderItem, collapsed: boolean, event: React.MouseEvent<HTMLElement, MouseEvent>) => void;
9
10
  menuMoreTitle?: string;
@@ -11,6 +12,13 @@ type CompositeBarProps = {
11
12
  compact: boolean;
12
13
  compositeId?: string;
13
14
  menuItemClassName?: string;
15
+ /**
16
+ * @see AsideHeaderMenuOverflow
17
+ */
18
+ menuOverflow?: AsideHeaderMenuOverflow;
19
+ collapsedMenuGroupIds?: Record<string, boolean>;
20
+ defaultCollapsedMenuGroupIds?: Record<string, boolean>;
21
+ onToggleMenuGroupCollapsed?: (groupId: string) => void;
14
22
  };
15
23
  export declare const CompositeBar: FC<CompositeBarProps>;
16
24
  export {};