@cloud-ru/ds-uikit-product-header 1.5.4-preview-65417497.0 → 2.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.
- package/CHANGELOG.md +17 -0
- package/README.md +89 -89
- package/dist/cjs/components/HeaderButton/HeaderButton.d.ts +1 -0
- package/dist/cjs/components/HeaderLayout/HeaderLayout.d.ts +6 -0
- package/dist/cjs/components/Logo/Logo.d.ts +7 -0
- package/dist/cjs/components/MainMenu/MainMenu.js +9 -6
- package/dist/cjs/components/MainMenu/helperComponents/Banners/MenuBanner.js +1 -1
- package/dist/cjs/components/MainMenu/helperComponents/Content/Content.d.ts +6 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/Content.js +35 -11
- package/dist/cjs/components/MainMenu/helperComponents/Content/cardsContext.d.ts +20 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/cardsContext.js +17 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/ContentToolbar.d.ts +9 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/SortableGroup.d.ts +23 -4
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/SortableGroup.js +38 -10
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupCards.d.ts +7 -4
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupCards.js +8 -4
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupDragHandle.d.ts +2 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.d.ts +3 -1
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.js +6 -4
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupSkeleton.d.ts +1 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategory.d.ts +9 -4
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategory.js +17 -12
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategoryTitle.d.ts +8 -3
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategoryTitle.js +24 -18
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/styles.module.css +17 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/hooks/useContentSegmentsSortable.js +4 -2
- package/dist/cjs/components/MainMenu/helperComponents/Content/hooks/useProgressiveCount.d.ts +12 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/hooks/useProgressiveCount.js +39 -0
- package/dist/cjs/components/MainMenu/helperComponents/Content/hooks/useSegmentDnd.d.ts +4 -4
- package/dist/cjs/components/MainMenu/helperComponents/Content/hooks/useSegmentDnd.js +3 -3
- package/dist/cjs/components/MainMenu/helperComponents/Content/styles.module.css +16 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/Favorites.d.ts +4 -4
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/Favorites.js +10 -33
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/Content.d.ts +31 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/Content.js +43 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyState.d.ts +4 -1
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyState.js +4 -2
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesList.d.ts +21 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesList.js +31 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesReorderList.d.ts +24 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesReorderList.js +36 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/RecentList.d.ts +24 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/RecentList.js +31 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/SortableFavoriteCard.d.ts +9 -3
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/SortableFavoriteCard.js +5 -3
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/index.d.ts +1 -1
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/index.js +1 -1
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesAutoSwitch.d.ts +16 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesAutoSwitch.js +28 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesReorder.d.ts +30 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/hooks/{useFavoritesDnd.js → useFavoritesReorder.js} +21 -22
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/styles.module.css +9 -3
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/utils.d.ts +2 -2
- package/dist/cjs/components/MainMenu/helperComponents/MenuBottom/MenuBottom.d.ts +2 -0
- package/dist/cjs/components/MainMenu/helperComponents/MenuDesktop/MenuDesktop.d.ts +1 -1
- package/dist/cjs/components/MainMenu/helperComponents/MenuDesktop/MenuDesktop.js +7 -7
- package/dist/cjs/components/MainMenu/helperComponents/MenuDesktop/styles.module.css +0 -6
- package/dist/cjs/components/MainMenu/helperComponents/MenuHeaderBrand/MenuHeaderBrand.d.ts +3 -0
- package/dist/cjs/components/MainMenu/helperComponents/MenuMobile/MenuMobile.d.ts +1 -1
- package/dist/cjs/components/MainMenu/helperComponents/MenuMobile/MenuMobile.js +5 -6
- package/dist/cjs/components/MainMenu/helperComponents/MenuMobile/styles.module.css +0 -7
- package/dist/cjs/components/MainMenu/helperComponents/MountAnimation/MountAnimation.d.ts +1 -1
- package/dist/cjs/components/MainMenu/helperComponents/MountAnimation/MountAnimation.js +4 -1
- package/dist/cjs/components/MainMenu/helperComponents/ServiceCard/ServiceCard.d.ts +30 -6
- package/dist/cjs/components/MainMenu/helperComponents/ServiceCard/ServiceCard.js +30 -21
- package/dist/cjs/components/MainMenu/helperComponents/ServiceCard/styles.module.css +6 -1
- package/dist/cjs/components/MainMenu/hooks/useMainMenuDnd.d.ts +6 -4
- package/dist/cjs/components/MainMenu/hooks/useMainMenuDnd.js +4 -6
- package/dist/cjs/components/MainMenu/hooks/useMenuItems.js +12 -7
- package/dist/cjs/components/MainMenu/types.d.ts +31 -1
- package/dist/cjs/components/MainMenu/utils/filterLinksGroupsFuzzy.d.ts +5 -0
- package/dist/cjs/components/MainMenu/utils/filterLinksGroupsFuzzy.js +21 -7
- package/dist/cjs/components/MainMenu/utils/flatLinksGroups.d.ts +2 -0
- package/dist/cjs/components/MainMenu/utils/flatLinksGroups.js +5 -0
- package/dist/cjs/components/MainMenu/utils/resolveInnerLinksByIds.d.ts +2 -2
- package/dist/cjs/components/MainMenu/utils/resolveInnerLinksByIds.js +2 -4
- package/dist/cjs/components/PathBreadcrumbs/PathBreadcrumbs.d.ts +1 -0
- package/dist/cjs/components/UserMenu/UserMenu.d.ts +12 -0
- package/dist/cjs/components/UserMenu/UserMenu.js +1 -1
- package/dist/cjs/components/UserMenu/types.d.ts +7 -0
- package/dist/cjs/style.css +48 -17
- package/dist/cjs/utils/noop.d.ts +1 -0
- package/dist/cjs/utils/noop.js +5 -0
- package/dist/esm/components/HeaderButton/HeaderButton.d.ts +1 -0
- package/dist/esm/components/HeaderLayout/HeaderLayout.d.ts +6 -0
- package/dist/esm/components/Logo/Logo.d.ts +7 -0
- package/dist/esm/components/MainMenu/MainMenu.js +10 -7
- package/dist/esm/components/MainMenu/helperComponents/Banners/MenuBanner.js +1 -1
- package/dist/esm/components/MainMenu/helperComponents/Content/Content.d.ts +6 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/Content.js +37 -13
- package/dist/esm/components/MainMenu/helperComponents/Content/cardsContext.d.ts +20 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/cardsContext.js +13 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/ContentToolbar.d.ts +9 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/SortableGroup.d.ts +23 -4
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/SortableGroup.js +37 -9
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupCards.d.ts +7 -4
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupCards.js +9 -5
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupDragHandle.d.ts +2 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.d.ts +3 -1
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.js +5 -3
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupSkeleton.d.ts +1 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategory.d.ts +9 -4
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategory.js +18 -13
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategoryTitle.d.ts +8 -3
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategoryTitle.js +25 -19
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/styles.module.css +17 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/hooks/useContentSegmentsSortable.js +4 -2
- package/dist/esm/components/MainMenu/helperComponents/Content/hooks/useProgressiveCount.d.ts +12 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/hooks/useProgressiveCount.js +35 -0
- package/dist/esm/components/MainMenu/helperComponents/Content/hooks/useSegmentDnd.d.ts +4 -4
- package/dist/esm/components/MainMenu/helperComponents/Content/hooks/useSegmentDnd.js +3 -3
- package/dist/esm/components/MainMenu/helperComponents/Content/styles.module.css +16 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/Favorites.d.ts +4 -4
- package/dist/esm/components/MainMenu/helperComponents/Favorites/Favorites.js +12 -35
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/Content.d.ts +31 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/Content.js +40 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyState.d.ts +4 -1
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyState.js +3 -1
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesList.d.ts +21 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesList.js +25 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesReorderList.d.ts +24 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesReorderList.js +30 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/RecentList.d.ts +24 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/RecentList.js +25 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/SortableFavoriteCard.d.ts +9 -3
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/SortableFavoriteCard.js +5 -3
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/index.d.ts +1 -1
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/index.js +1 -1
- package/dist/esm/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesAutoSwitch.d.ts +16 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesAutoSwitch.js +25 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesReorder.d.ts +30 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/hooks/{useFavoritesDnd.js → useFavoritesReorder.js} +21 -22
- package/dist/esm/components/MainMenu/helperComponents/Favorites/styles.module.css +9 -3
- package/dist/esm/components/MainMenu/helperComponents/Favorites/utils.d.ts +2 -2
- package/dist/esm/components/MainMenu/helperComponents/MenuBottom/MenuBottom.d.ts +2 -0
- package/dist/esm/components/MainMenu/helperComponents/MenuDesktop/MenuDesktop.d.ts +1 -1
- package/dist/esm/components/MainMenu/helperComponents/MenuDesktop/MenuDesktop.js +7 -7
- package/dist/esm/components/MainMenu/helperComponents/MenuDesktop/styles.module.css +0 -6
- package/dist/esm/components/MainMenu/helperComponents/MenuHeaderBrand/MenuHeaderBrand.d.ts +3 -0
- package/dist/esm/components/MainMenu/helperComponents/MenuMobile/MenuMobile.d.ts +1 -1
- package/dist/esm/components/MainMenu/helperComponents/MenuMobile/MenuMobile.js +5 -6
- package/dist/esm/components/MainMenu/helperComponents/MenuMobile/styles.module.css +0 -7
- package/dist/esm/components/MainMenu/helperComponents/MountAnimation/MountAnimation.d.ts +1 -1
- package/dist/esm/components/MainMenu/helperComponents/MountAnimation/MountAnimation.js +4 -1
- package/dist/esm/components/MainMenu/helperComponents/ServiceCard/ServiceCard.d.ts +30 -6
- package/dist/esm/components/MainMenu/helperComponents/ServiceCard/ServiceCard.js +30 -20
- package/dist/esm/components/MainMenu/helperComponents/ServiceCard/styles.module.css +6 -1
- package/dist/esm/components/MainMenu/hooks/useMainMenuDnd.d.ts +6 -4
- package/dist/esm/components/MainMenu/hooks/useMainMenuDnd.js +6 -8
- package/dist/esm/components/MainMenu/hooks/useMenuItems.js +13 -8
- package/dist/esm/components/MainMenu/types.d.ts +31 -1
- package/dist/esm/components/MainMenu/utils/filterLinksGroupsFuzzy.d.ts +5 -0
- package/dist/esm/components/MainMenu/utils/filterLinksGroupsFuzzy.js +20 -7
- package/dist/esm/components/MainMenu/utils/flatLinksGroups.d.ts +2 -0
- package/dist/esm/components/MainMenu/utils/flatLinksGroups.js +4 -0
- package/dist/esm/components/MainMenu/utils/resolveInnerLinksByIds.d.ts +2 -2
- package/dist/esm/components/MainMenu/utils/resolveInnerLinksByIds.js +2 -4
- package/dist/esm/components/PathBreadcrumbs/PathBreadcrumbs.d.ts +1 -0
- package/dist/esm/components/UserMenu/UserMenu.d.ts +12 -0
- package/dist/esm/components/UserMenu/UserMenu.js +1 -1
- package/dist/esm/components/UserMenu/types.d.ts +7 -0
- package/dist/esm/style.css +48 -17
- package/dist/esm/utils/noop.d.ts +1 -0
- package/dist/esm/utils/noop.js +1 -0
- package/dist/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +28 -28
- package/src/components/HeaderButton/HeaderButton.tsx +2 -7
- package/src/components/HeaderLayout/HeaderLayout.tsx +6 -0
- package/src/components/Logo/Logo.tsx +7 -0
- package/src/components/MainMenu/MainMenu.tsx +11 -6
- package/src/components/MainMenu/helperComponents/Banners/MenuBanner.tsx +1 -1
- package/src/components/MainMenu/helperComponents/Content/Content.tsx +104 -59
- package/src/components/MainMenu/helperComponents/Content/cardsContext.ts +36 -0
- package/src/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/ContentToolbar.tsx +9 -0
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/SortableGroup.tsx +106 -47
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupCards.tsx +18 -25
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupDragHandle.tsx +2 -0
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.tsx +11 -6
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupSkeleton.tsx +1 -0
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategory.tsx +73 -97
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategoryTitle.tsx +65 -49
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/styles.module.scss +27 -0
- package/src/components/MainMenu/helperComponents/Content/hooks/useContentSegmentsSortable.ts +4 -2
- package/src/components/MainMenu/helperComponents/Content/hooks/useProgressiveCount.ts +46 -0
- package/src/components/MainMenu/helperComponents/Content/hooks/useSegmentDnd.tsx +8 -7
- package/src/components/MainMenu/helperComponents/Content/styles.module.scss +19 -0
- package/src/components/MainMenu/helperComponents/Favorites/Favorites.tsx +32 -84
- package/src/components/MainMenu/helperComponents/Favorites/components/Content.tsx +101 -0
- package/src/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyState.tsx +6 -1
- package/src/components/MainMenu/helperComponents/Favorites/components/FavoritesList.tsx +59 -0
- package/src/components/MainMenu/helperComponents/Favorites/components/FavoritesReorderList.tsx +75 -0
- package/src/components/MainMenu/helperComponents/Favorites/components/RecentList.tsx +63 -0
- package/src/components/MainMenu/helperComponents/Favorites/components/SortableFavoriteCard.tsx +11 -4
- package/src/components/MainMenu/helperComponents/Favorites/components/index.ts +1 -1
- package/src/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesAutoSwitch.ts +32 -0
- package/src/components/MainMenu/helperComponents/Favorites/hooks/{useFavoritesDnd.tsx → useFavoritesReorder.tsx} +32 -30
- package/src/components/MainMenu/helperComponents/Favorites/styles.module.scss +16 -2
- package/src/components/MainMenu/helperComponents/Favorites/utils.ts +2 -2
- package/src/components/MainMenu/helperComponents/MenuBottom/MenuBottom.tsx +2 -0
- package/src/components/MainMenu/helperComponents/MenuDesktop/MenuDesktop.tsx +17 -11
- package/src/components/MainMenu/helperComponents/MenuDesktop/styles.module.scss +0 -7
- package/src/components/MainMenu/helperComponents/MenuHeaderBrand/MenuHeaderBrand.tsx +3 -0
- package/src/components/MainMenu/helperComponents/MenuMobile/MenuMobile.tsx +7 -10
- package/src/components/MainMenu/helperComponents/MenuMobile/styles.module.scss +0 -7
- package/src/components/MainMenu/helperComponents/MountAnimation/MountAnimation.tsx +5 -1
- package/src/components/MainMenu/helperComponents/ServiceCard/ServiceCard.tsx +91 -41
- package/src/components/MainMenu/helperComponents/ServiceCard/styles.module.scss +7 -1
- package/src/components/MainMenu/hooks/useMainMenuDnd.tsx +9 -12
- package/src/components/MainMenu/hooks/useMenuItems.tsx +34 -10
- package/src/components/MainMenu/types.ts +31 -1
- package/src/components/MainMenu/utils/filterLinksGroupsFuzzy.ts +29 -8
- package/src/components/MainMenu/utils/flatLinksGroups.ts +5 -0
- package/src/components/MainMenu/utils/resolveInnerLinksByIds.ts +3 -6
- package/src/components/PathBreadcrumbs/PathBreadcrumbs.tsx +1 -0
- package/src/components/UserMenu/UserMenu.tsx +17 -1
- package/src/components/UserMenu/types.ts +7 -0
- package/src/utils/noop.ts +1 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesSortable.d.ts +0 -19
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesSortable.js +0 -30
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesDnd.d.ts +0 -25
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesSortable.d.ts +0 -19
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesSortable.js +0 -24
- package/dist/esm/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesDnd.d.ts +0 -25
- package/src/components/MainMenu/helperComponents/Favorites/components/FavoritesSortable.tsx +0 -78
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,23 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# 2.0.0 (2026-09-29)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- **FF-9088:** align header and service cards with compact density ([e1248e8](https://github.com/cloud-ru-tech/snack-v2/commit/e1248e8ca5d1462df2a5a46b080cc19bb51cf59d))
|
|
11
|
+
- **FF-9088:** use CloudLogoHome in header logo instead of hrGreen brand ([0e73236](https://github.com/cloud-ru-tech/snack-v2/commit/0e73236d3650a2cf2aa3a6a5cbce3efb20aa5472))
|
|
12
|
+
- **FF-9192:** disable dnd measuring on first render ([bcdd411](https://github.com/cloud-ru-tech/snack-v2/commit/bcdd411d3dcd3b32824850399a16e0ac6e2579d7))
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
- **FF-9192:** rendering optimizations ([24f6d5b](https://github.com/cloud-ru-tech/snack-v2/commit/24f6d5b02925732340871a2e9bf14a6664533579))
|
|
17
|
+
|
|
18
|
+
### BREAKING CHANGES
|
|
19
|
+
|
|
20
|
+
- **FF-9088:** split UserMenu items into top, organization and bottom groups ([91d8a37](https://github.com/cloud-ru-tech/snack-v2/commit/91d8a3717db7bb9e40cc82b21ca33e760cd904a7))
|
|
21
|
+
- **FF-9088:** remove actionsSize from card actions ([bfad613](https://github.com/cloud-ru-tech/snack-v2/commit/bfad613905acd6e7ac0b78db4b62eb4e45d96c29))
|
|
22
|
+
|
|
6
23
|
## 1.5.3 (2026-09-28)
|
|
7
24
|
|
|
8
25
|
**Note:** Version bump only for package @ds/uikit-product-header
|
package/README.md
CHANGED
|
@@ -98,13 +98,13 @@ export function PartialSlots() {
|
|
|
98
98
|
|
|
99
99
|
| Prop | Type | Default | Description |
|
|
100
100
|
|------|------|---------|-------------|
|
|
101
|
-
| `breadcrumbs` | `ReactNode` | — |
|
|
102
|
-
| `className` | `string` | — |
|
|
101
|
+
| `breadcrumbs` | `ReactNode` | — | Слот хлебных крошек. На mobile переносится под основную строку хедера. |
|
|
102
|
+
| `className` | `string` | — | CSS-класс корневого элемента. |
|
|
103
103
|
| `data-test-id` | `string` | — | |
|
|
104
|
-
| `logo` | `ReactNode` | — |
|
|
105
|
-
| `menu` | `ReactNode` | — |
|
|
106
|
-
| `select` | `ReactNode` | — |
|
|
107
|
-
| `toolbar` | `ReactNode` | — |
|
|
104
|
+
| `logo` | `ReactNode` | — | Слот логотипа (крайний левый). |
|
|
105
|
+
| `menu` | `ReactNode` | — | Слот главного меню (слева, после логотипа). |
|
|
106
|
+
| `select` | `ReactNode` | — | Слот селектора (например, выбор облака/организации), после меню. |
|
|
107
|
+
| `toolbar` | `ReactNode` | — | Слот тулбара — правая часть хедера. |
|
|
108
108
|
|
|
109
109
|
## MainMenu
|
|
110
110
|
|
|
@@ -292,27 +292,27 @@ function LocalMainMenu() {
|
|
|
292
292
|
|------|------|---------|-------------|
|
|
293
293
|
| `activeSegmentId` | `string` | — | Активный сегмент правой панели (значение SegmentControl, см. {@link MainMenuSegment.id}). <br/> Не передано — неуправляемое состояние (дефолт — первый сегмент с видимыми карточками). |
|
|
294
294
|
| `defaultWidth` | `number` | — | Ширина дровера, с которой открывается меню (desktop only) |
|
|
295
|
-
| `disabled` | `boolean` | — |
|
|
295
|
+
| `disabled` | `boolean` | — | Кнопка открытия меню недоступна для клика. |
|
|
296
296
|
| `draggerTooltip` | `string` | — | Текст подсказки для драггера (desktop only) |
|
|
297
|
-
| `favorite` | `FavoriteProps` | — |
|
|
298
|
-
| `leftBottom` | `ReactNode` | — |
|
|
299
|
-
| `leftTop` | `ReactNode` | — |
|
|
297
|
+
| `favorite` | `FavoriteProps` | — | Избранное. Без пропа группа-предок карточек драга из избранного не активируется. <br/> Избранное. Без пропа секция «Избранное» не отображается. |
|
|
298
|
+
| `leftBottom` | `ReactNode` | — | Слот под пунктами настроек в левой колонке (desktop) / в конце списка (mobile). |
|
|
299
|
+
| `leftTop` | `ReactNode` | — | Слот над поиском в левой колонке (desktop) / над поиском в списке (mobile). |
|
|
300
300
|
| `loading` | `boolean` | — | Флаг загрузки данных |
|
|
301
|
-
| `logo` | `ReactNode` | — |
|
|
301
|
+
| `logo` | `ReactNode` | — | Логотип в шапке меню. |
|
|
302
302
|
| `onActiveSegmentChange` | `((segmentId: string) => void)` | — | Колбэк смены активного сегмента правой панели. |
|
|
303
303
|
| `onSegmentExpandedChange` | `((segmentId: string, expandedGroupIds: string[]) => void)` | — | Колбэк при изменении набора раскрытых групп сегмента <br/> (без id синтетической группы избранного). |
|
|
304
304
|
| `onSegmentOrderChange` | `((segmentId: string, orderedGroupIds: string[]) => void)` | — | Колбэк после DnD групп в сегменте (без id синтетической группы избранного). |
|
|
305
305
|
| `onSegmentServiceClick` | `((service: InnerLink, e?: MouseEvent<HTMLElement, MouseEvent>) => void)` | — | Колбэк клика по карточке сервиса в сегменте. |
|
|
306
306
|
| `onWidthChangeEnd` | `((width: number) => void)` | — | Вызывается при окончании изменения ширины дровера (desktop only) |
|
|
307
|
-
| `open` | `boolean` | — |
|
|
307
|
+
| `open` | `boolean` | — | Открыто ли меню. <br/> Не передано — состояние открытия неуправляемое (меню само переключает себя по клику на кнопку). |
|
|
308
308
|
| `platformGroups` | `LinksGroup` | — | Платформенные группы (например «Облачные продукты», «Другие продукты»). <br/> Без поиска в сетке карточек **не отображаются**. <br/> С поиском: попадают в результаты при совпадении; порядок — <br/> после совпадений из сегментов без `pinBottomOnSearch`, перед сегментами с `pinBottomOnSearch`. <br/> Обычно `favoritesEnabled: false`; карточки могут быть без `icon` (Avatar по `label`). |
|
|
309
309
|
| `preferences` | `MainMenuPreferencesProps` | — | Настройки меню (модалка по кнопке в тулбаре): описания карточек, цвета групп. <br/> Не передано — кнопка настроек в тулбаре не отображается. |
|
|
310
310
|
| `rightTop` | `ReactNode` | — | Слот над тулбаром правой колонки (например, баннеры) |
|
|
311
|
-
| `search` | `SearchProps` | — |
|
|
311
|
+
| `search` | `SearchProps` | — | Поиск по сервисам. Без пропа поисковая строка не отображается. |
|
|
312
312
|
| `searchGroups` | `LinksGroup` | — | Результаты поиска (уже смерженные); в обычном режиме не используются. |
|
|
313
313
|
| `segmentPrefs` | `MainMenuSegmentPrefs` | — | Пользовательские prefs сегментов (порядок / раскрытие групп). <br/> Нет записи для сегмента или omit `order` / `expanded` → uncontrolled для этого поля. |
|
|
314
314
|
| `segments` | `MainMenuSegment` | — | Сегменты правой панели (сетка карточек) — только каталог. <br/> При поиске: совпадения из сегментов без `pinBottomOnSearch` → `platformGroups` → сегменты с `pinBottomOnSearch`. <br/> Если один и тот же {@link InnerLink.id} совпал сразу в нескольких сегментах — остаётся только <br/> первое по этому приоритету вхождение, остальные (и опустевшие после этого группы) не показываются. <br/> При `segments.length > 1` показывается SegmentControl (скрывается во время поиска). <br/> Порядок и раскрытие групп — через `segmentPrefs` и колбэки ниже. |
|
|
315
|
-
| `setOpen` | `((open: boolean) => void)` | — |
|
|
315
|
+
| `setOpen` | `((open: boolean) => void)` | — | Колбэк открытия/закрытия меню. |
|
|
316
316
|
| `settingItems` | `InnerLink` \| `MainMenuSettingsItem` | — | Пункты левой колонки (desktop) / нижней части списка (mobile). <br/> Плоский список (`dividerBefore` для разделителей). <br/> Не связан с сегментами правой панели и не меняется при сортировке групп в сегментах. |
|
|
317
317
|
|
|
318
318
|
##### Related types
|
|
@@ -339,17 +339,17 @@ function LocalMainMenu() {
|
|
|
339
339
|
| Prop | Type | Default | Description |
|
|
340
340
|
|------|------|---------|-------------|
|
|
341
341
|
| `aliases` | `string[]` | — | Синонимы для fuzzy-поиска. |
|
|
342
|
-
| `badge` | `CardServiceLightProps` \| `PromoTagPredefinedBaseProps` | — |
|
|
342
|
+
| `badge` | `CardServiceLightProps` \| `PromoTagPredefinedBaseProps` | — | Промо-тег карточки. |
|
|
343
343
|
| `description` | `string \| undefined` | — | Краткое описание сервиса — отображается при включённом переключателе «Описание». |
|
|
344
|
-
| `disabled` | `boolean \| undefined` | — |
|
|
344
|
+
| `disabled` | `boolean \| undefined` | — | Карточка недоступна для клика/drag и визуально приглушена. |
|
|
345
345
|
| `favoritesEnabled` | `boolean \| undefined` | — | Разрешено ли добавление карточки в избранное. default=true - разрешено |
|
|
346
|
-
| `hidden` | `boolean \| undefined` | — |
|
|
347
|
-
| `href` | `string \| undefined` | — |
|
|
346
|
+
| `hidden` | `boolean \| undefined` | — | Карточка скрыта (не рендерится, но остаётся в данных — например, для поиска). |
|
|
347
|
+
| `href` | `string \| undefined` | — | Ссылка карточки (рендерится как `<a>`). |
|
|
348
348
|
| `icon` | `JSXElementConstructor<{ size?: number; className?: string; }> \| undefined` | — | Иконка карточки. |
|
|
349
349
|
| `id` | `string` | — | Уникальный идентификатор карточки (также используется в избранном и при поиске). <br/> Один и тот же сервис может быть представлен в разных сегментах с разной <br/> детализацией (простая карточка в общем каталоге и раскрытая с вложенными <br/> сервисами версия в другом сегменте) — в этом случае обеим версиям задаётся <br/> общий `id`. При поиске из совпадений с одинаковым `id` в разных сегментах <br/> остаётся только первое по приоритету сегментов (см. <br/> {@link <br/> MainMenuProps.segments <br/> } <br/> ). |
|
|
350
350
|
| `items` | `InnerLink` | — | Вложенные сервисы подкатегории. <br/> При наличии карточка раскрывается аккордеоном: в свёрнутом виде — обычная карточка <br/> с кнопкой раскрытия, в развёрнутом — заголовок <br/> {@link <br/> TitleClickable <br/> } <br/> и сетка вложенных сервисов. |
|
|
351
351
|
| `label` | `string` | — | Заголовок карточки. |
|
|
352
|
-
| `onClick` | `(e?: MouseEvent<HTMLElement>) => void` | — |
|
|
352
|
+
| `onClick` | `(e?: MouseEvent<HTMLElement>) => void` | — | Колбэк клика по карточке. |
|
|
353
353
|
| `viewMode` | `"expandable"` \| `"expanded"` \| `"flat-link"` \| `"group-title-only"` | — | Режим отображения карточки. default='expandable'. <br/> - `'expandable'` — подкатегория при наличии реальных <br/> {@link <br/> items <br/> } <br/> : заголовок <br/> {@link <br/> TitleClickable <br/> } <br/> с шевроном и сетка вложенных сервисов (раскрытие/схлопывание — <br/> см. <br/> {@link <br/> expandableEnabled <br/> } <br/> ). Без `items` — обычная карточка сервиса. <br/> - `'group-title-only'` — заголовок подкатегории ( <br/> {@link <br/> TitleClickable <br/> } <br/> с шевроном) без <br/> раскрываемого тела, даже если `items` заданы: карточка ведёт себя как обычная ссылка. <br/> Полезно для группы, чьи вложенные сервисы показываются на отдельной странице. <br/> - `'flat-link'` — всегда обычная карточка сервиса, даже если `items` заданы. |
|
|
354
354
|
|
|
355
355
|
- `InnerLinkViewMode` = `"expandable"` \| `"expanded"` \| `"flat-link"` \| `"group-title-only"`
|
|
@@ -361,13 +361,13 @@ function LocalMainMenu() {
|
|
|
361
361
|
| `aliases` | `string[] \| undefined` | — | Синонимы заголовка группы для fuzzy-поиска. |
|
|
362
362
|
| `blockColor` | `"blue"` \| `"green"` \| `"neutral"` \| `"orange"` \| `"pink"` \| `"primary"` \| `"red"` \| `"violet"` \| `"yellow"` | — | Цвет блока группы. |
|
|
363
363
|
| `favoritesEnabled` | `boolean \| undefined` | — | Разрешено ли добавление карточек группы в избранное. |
|
|
364
|
-
| `hidden` | `boolean \| undefined` | — |
|
|
365
|
-
| `highlight` | `boolean \| undefined` | — | Визуальное выделение
|
|
366
|
-
| `icon` | `JSXElementConstructor<{ size?: number; className?: string; }> \| undefined` | — |
|
|
364
|
+
| `hidden` | `boolean \| undefined` | — | Группа скрыта (не рендерится, но остаётся в данных — например, для поиска). |
|
|
365
|
+
| `highlight` | `boolean \| undefined` | — | Визуальное выделение группы. |
|
|
366
|
+
| `icon` | `JSXElementConstructor<{ size?: number; className?: string; }> \| undefined` | — | Иконка группы. |
|
|
367
367
|
| `id` | `string` | — | Уникальный идентификатор группы (якорь скролла, поиск по id). |
|
|
368
368
|
| `items` | `InnerLink` | — | Карточки сервисов или ссылок внутри группы. |
|
|
369
369
|
| `label` | `LinksGroupTitle` \| `TitleClickable` \| `TitleStatic` | — | Заголовок группы в сетке карточек и в боковой навигации. |
|
|
370
|
-
| `onClick` | `((e?: MouseEvent<HTMLElement>) => void) \| undefined` | — |
|
|
370
|
+
| `onClick` | `((e?: MouseEvent<HTMLElement>) => void) \| undefined` | — | Колбэк клика по заголовку группы. |
|
|
371
371
|
|
|
372
372
|
- `LinksGroupBlockColor` = `"blue"` \| `"green"` \| `"neutral"` \| `"orange"` \| `"pink"` \| `"primary"` \| `"red"` \| `"violet"` \| `"yellow"`
|
|
373
373
|
|
|
@@ -404,38 +404,38 @@ function LocalMainMenu() {
|
|
|
404
404
|
|
|
405
405
|
| Prop | Type | Default | Description |
|
|
406
406
|
|------|------|---------|-------------|
|
|
407
|
-
| `divider` | `"after"` \| `"before"` | — |
|
|
408
|
-
| `hidden` | `boolean \| undefined` | — |
|
|
409
|
-
| `href` | `string \| undefined` | — |
|
|
407
|
+
| `divider` | `"after"` \| `"before"` | — | Разделитель до/после пункта. |
|
|
408
|
+
| `hidden` | `boolean \| undefined` | — | Карточка скрыта (не рендерится, но остаётся в данных — например, для поиска). |
|
|
409
|
+
| `href` | `string \| undefined` | — | Ссылка карточки (рендерится как `<a>`). |
|
|
410
410
|
| `icon` | `JSXElementConstructor<{ size?: number; className?: string; }> \| undefined` | — | Иконка карточки. |
|
|
411
411
|
| `id` | `string` | — | Уникальный идентификатор карточки (также используется в избранном и при поиске). <br/> Один и тот же сервис может быть представлен в разных сегментах с разной <br/> детализацией (простая карточка в общем каталоге и раскрытая с вложенными <br/> сервисами версия в другом сегменте) — в этом случае обеим версиям задаётся <br/> общий `id`. При поиске из совпадений с одинаковым `id` в разных сегментах <br/> остаётся только первое по приоритету сегментов (см. <br/> {@link <br/> MainMenuProps.segments <br/> } <br/> ). |
|
|
412
412
|
| `label` | `string` | — | Заголовок карточки. |
|
|
413
|
-
| `onClick` | `(e?: MouseEvent<HTMLElement>) => void` | — |
|
|
413
|
+
| `onClick` | `(e?: MouseEvent<HTMLElement>) => void` | — | Колбэк клика по карточке. |
|
|
414
414
|
|
|
415
415
|
**MainMenuToggleProps**
|
|
416
416
|
|
|
417
417
|
| Prop | Type | Default | Description |
|
|
418
418
|
|------|------|---------|-------------|
|
|
419
|
-
| `onChange` | `(value: boolean) => void` | — |
|
|
420
|
-
| `value` | `boolean` | — |
|
|
419
|
+
| `onChange` | `(value: boolean) => void` | — | Колбэк изменения значения переключателя. |
|
|
420
|
+
| `value` | `boolean` | — | Текущее значение переключателя. |
|
|
421
421
|
|
|
422
422
|
**SearchProps**
|
|
423
423
|
|
|
424
424
|
| Prop | Type | Default | Description |
|
|
425
425
|
|------|------|---------|-------------|
|
|
426
426
|
| `onBlur` | `FocusEventHandler<HTMLInputElement> \| undefined` | — | Колбек обработки потери фокуса |
|
|
427
|
-
| `onChange` | `(value: string) => void` | — |
|
|
427
|
+
| `onChange` | `(value: string) => void` | — | Колбэк изменения значения поисковой строки. |
|
|
428
428
|
| `onFocus` | `FocusEventHandler<HTMLInputElement> \| undefined` | — | Колбек обработки получения фокуса |
|
|
429
|
-
| `onSearchNoResult` | `((value: string) => void) \| undefined` | — |
|
|
430
|
-
| `value` | `string` | — |
|
|
429
|
+
| `onSearchNoResult` | `((value: string) => void) \| undefined` | — | Колбэк вызывается, когда поиск по текущему значению не дал результатов. |
|
|
430
|
+
| `value` | `string` | — | Текущее значение поисковой строки. |
|
|
431
431
|
|
|
432
432
|
**TitleClickable**
|
|
433
433
|
|
|
434
434
|
| Prop | Type | Default | Description |
|
|
435
435
|
|------|------|---------|-------------|
|
|
436
|
-
| `href` | `string \| undefined` | — |
|
|
437
|
-
| `onClick` | `((e?: MouseEvent<HTMLElement>) => void) \| undefined` | — |
|
|
438
|
-
| `text` | `string` | — |
|
|
436
|
+
| `href` | `string \| undefined` | — | Ссылка заголовка (рендерится как `<a>`). |
|
|
437
|
+
| `onClick` | `((e?: MouseEvent<HTMLElement>) => void) \| undefined` | — | Колбэк клика по заголовку. |
|
|
438
|
+
| `text` | `string` | — | Текст заголовка. |
|
|
439
439
|
|
|
440
440
|
**TitleStatic**
|
|
441
441
|
|
|
@@ -443,7 +443,7 @@ function LocalMainMenu() {
|
|
|
443
443
|
|------|------|---------|-------------|
|
|
444
444
|
| `href` | `undefined` | — | |
|
|
445
445
|
| `onClick` | `undefined` | — | |
|
|
446
|
-
| `text` | `string` | — |
|
|
446
|
+
| `text` | `string` | — | Текст заголовка. |
|
|
447
447
|
|
|
448
448
|
### Смотри также
|
|
449
449
|
|
|
@@ -466,27 +466,27 @@ import { MainMenu, MenuMobile } from '@cloud-ru/ds-uikit-product-header';
|
|
|
466
466
|
|------|------|---------|-------------|
|
|
467
467
|
| `activeSegmentId` | `string` | — | Активный сегмент правой панели (значение SegmentControl, см. {@link MainMenuSegment.id}). <br/> Не передано — неуправляемое состояние (дефолт — первый сегмент с видимыми карточками). |
|
|
468
468
|
| `defaultWidth` | `number` | — | Ширина дровера, с которой открывается меню (desktop only) |
|
|
469
|
-
| `disabled` | `boolean` | — |
|
|
469
|
+
| `disabled` | `boolean` | — | Кнопка открытия меню недоступна для клика. |
|
|
470
470
|
| `draggerTooltip` | `string` | — | Текст подсказки для драггера (desktop only) |
|
|
471
|
-
| `favorite` | `FavoriteProps` | — |
|
|
472
|
-
| `leftBottom` | `ReactNode` | — |
|
|
473
|
-
| `leftTop` | `ReactNode` | — |
|
|
471
|
+
| `favorite` | `FavoriteProps` | — | Избранное. Без пропа группа-предок карточек драга из избранного не активируется. <br/> Избранное. Без пропа секция «Избранное» не отображается. |
|
|
472
|
+
| `leftBottom` | `ReactNode` | — | Слот под пунктами настроек в левой колонке (desktop) / в конце списка (mobile). |
|
|
473
|
+
| `leftTop` | `ReactNode` | — | Слот над поиском в левой колонке (desktop) / над поиском в списке (mobile). |
|
|
474
474
|
| `loading` | `boolean` | — | Флаг загрузки данных |
|
|
475
|
-
| `logo` | `ReactNode` | — |
|
|
475
|
+
| `logo` | `ReactNode` | — | Логотип в шапке меню. |
|
|
476
476
|
| `onActiveSegmentChange` | `((segmentId: string) => void)` | — | Колбэк смены активного сегмента правой панели. |
|
|
477
477
|
| `onSegmentExpandedChange` | `((segmentId: string, expandedGroupIds: string[]) => void)` | — | Колбэк при изменении набора раскрытых групп сегмента <br/> (без id синтетической группы избранного). |
|
|
478
478
|
| `onSegmentOrderChange` | `((segmentId: string, orderedGroupIds: string[]) => void)` | — | Колбэк после DnD групп в сегменте (без id синтетической группы избранного). |
|
|
479
479
|
| `onSegmentServiceClick` | `((service: InnerLink, e?: MouseEvent<HTMLElement, MouseEvent>) => void)` | — | Колбэк клика по карточке сервиса в сегменте. |
|
|
480
480
|
| `onWidthChangeEnd` | `((width: number) => void)` | — | Вызывается при окончании изменения ширины дровера (desktop only) |
|
|
481
|
-
| `open` | `boolean` | — |
|
|
481
|
+
| `open` | `boolean` | `false` | Открыто ли меню. <br/> Не передано — состояние открытия неуправляемое (меню само переключает себя по клику на кнопку). |
|
|
482
482
|
| `platformGroups` | `LinksGroup` | — | Платформенные группы (например «Облачные продукты», «Другие продукты»). <br/> Без поиска в сетке карточек **не отображаются**. <br/> С поиском: попадают в результаты при совпадении; порядок — <br/> после совпадений из сегментов без `pinBottomOnSearch`, перед сегментами с `pinBottomOnSearch`. <br/> Обычно `favoritesEnabled: false`; карточки могут быть без `icon` (Avatar по `label`). |
|
|
483
483
|
| `preferences` | `MainMenuPreferencesProps` | — | Настройки меню (модалка по кнопке в тулбаре): описания карточек, цвета групп. <br/> Не передано — кнопка настроек в тулбаре не отображается. |
|
|
484
484
|
| `rightTop` | `ReactNode` | — | Слот над тулбаром правой колонки (например, баннеры) |
|
|
485
|
-
| `search` | `SearchProps` | — |
|
|
485
|
+
| `search` | `SearchProps` | — | Поиск по сервисам. Без пропа поисковая строка не отображается. |
|
|
486
486
|
| `searchGroups` | `LinksGroup` | — | Результаты поиска (уже смерженные); в обычном режиме не используются. |
|
|
487
487
|
| `segmentPrefs` | `MainMenuSegmentPrefs` | — | Пользовательские prefs сегментов (порядок / раскрытие групп). <br/> Нет записи для сегмента или omit `order` / `expanded` → uncontrolled для этого поля. |
|
|
488
488
|
| `segments` | `MainMenuSegment` | — | Сегменты правой панели (сетка карточек) — только каталог. <br/> При поиске: совпадения из сегментов без `pinBottomOnSearch` → `platformGroups` → сегменты с `pinBottomOnSearch`. <br/> Если один и тот же {@link InnerLink.id} совпал сразу в нескольких сегментах — остаётся только <br/> первое по этому приоритету вхождение, остальные (и опустевшие после этого группы) не показываются. <br/> При `segments.length > 1` показывается SegmentControl (скрывается во время поиска). <br/> Порядок и раскрытие групп — через `segmentPrefs` и колбэки ниже. |
|
|
489
|
-
| `setOpen` | `((open: boolean) => void)` | — |
|
|
489
|
+
| `setOpen` | `((open: boolean) => void)` | — | Колбэк открытия/закрытия меню. |
|
|
490
490
|
| `settingItems` | `InnerLink` \| `MainMenuSettingsItem` | — | Пункты левой колонки (desktop) / нижней части списка (mobile). <br/> Плоский список (`dividerBefore` для разделителей). <br/> Не связан с сегментами правой панели и не меняется при сортировке групп в сегментах. |
|
|
491
491
|
|
|
492
492
|
##### Related types
|
|
@@ -513,17 +513,17 @@ import { MainMenu, MenuMobile } from '@cloud-ru/ds-uikit-product-header';
|
|
|
513
513
|
| Prop | Type | Default | Description |
|
|
514
514
|
|------|------|---------|-------------|
|
|
515
515
|
| `aliases` | `string[]` | — | Синонимы для fuzzy-поиска. |
|
|
516
|
-
| `badge` | `CardServiceLightProps` \| `PromoTagPredefinedBaseProps` | — |
|
|
516
|
+
| `badge` | `CardServiceLightProps` \| `PromoTagPredefinedBaseProps` | — | Промо-тег карточки. |
|
|
517
517
|
| `description` | `string \| undefined` | — | Краткое описание сервиса — отображается при включённом переключателе «Описание». |
|
|
518
|
-
| `disabled` | `boolean \| undefined` | — |
|
|
518
|
+
| `disabled` | `boolean \| undefined` | — | Карточка недоступна для клика/drag и визуально приглушена. |
|
|
519
519
|
| `favoritesEnabled` | `boolean \| undefined` | — | Разрешено ли добавление карточки в избранное. default=true - разрешено |
|
|
520
|
-
| `hidden` | `boolean \| undefined` | — |
|
|
521
|
-
| `href` | `string \| undefined` | — |
|
|
520
|
+
| `hidden` | `boolean \| undefined` | — | Карточка скрыта (не рендерится, но остаётся в данных — например, для поиска). |
|
|
521
|
+
| `href` | `string \| undefined` | — | Ссылка карточки (рендерится как `<a>`). |
|
|
522
522
|
| `icon` | `JSXElementConstructor<{ size?: number; className?: string; }> \| undefined` | — | Иконка карточки. |
|
|
523
523
|
| `id` | `string` | — | Уникальный идентификатор карточки (также используется в избранном и при поиске). <br/> Один и тот же сервис может быть представлен в разных сегментах с разной <br/> детализацией (простая карточка в общем каталоге и раскрытая с вложенными <br/> сервисами версия в другом сегменте) — в этом случае обеим версиям задаётся <br/> общий `id`. При поиске из совпадений с одинаковым `id` в разных сегментах <br/> остаётся только первое по приоритету сегментов (см. <br/> {@link <br/> MainMenuProps.segments <br/> } <br/> ). |
|
|
524
524
|
| `items` | `InnerLink` | — | Вложенные сервисы подкатегории. <br/> При наличии карточка раскрывается аккордеоном: в свёрнутом виде — обычная карточка <br/> с кнопкой раскрытия, в развёрнутом — заголовок <br/> {@link <br/> TitleClickable <br/> } <br/> и сетка вложенных сервисов. |
|
|
525
525
|
| `label` | `string` | — | Заголовок карточки. |
|
|
526
|
-
| `onClick` | `(e?: MouseEvent<HTMLElement>) => void` | — |
|
|
526
|
+
| `onClick` | `(e?: MouseEvent<HTMLElement>) => void` | — | Колбэк клика по карточке. |
|
|
527
527
|
| `viewMode` | `"expandable"` \| `"expanded"` \| `"flat-link"` \| `"group-title-only"` | — | Режим отображения карточки. default='expandable'. <br/> - `'expandable'` — подкатегория при наличии реальных <br/> {@link <br/> items <br/> } <br/> : заголовок <br/> {@link <br/> TitleClickable <br/> } <br/> с шевроном и сетка вложенных сервисов (раскрытие/схлопывание — <br/> см. <br/> {@link <br/> expandableEnabled <br/> } <br/> ). Без `items` — обычная карточка сервиса. <br/> - `'group-title-only'` — заголовок подкатегории ( <br/> {@link <br/> TitleClickable <br/> } <br/> с шевроном) без <br/> раскрываемого тела, даже если `items` заданы: карточка ведёт себя как обычная ссылка. <br/> Полезно для группы, чьи вложенные сервисы показываются на отдельной странице. <br/> - `'flat-link'` — всегда обычная карточка сервиса, даже если `items` заданы. |
|
|
528
528
|
|
|
529
529
|
- `InnerLinkViewMode` = `"expandable"` \| `"expanded"` \| `"flat-link"` \| `"group-title-only"`
|
|
@@ -535,13 +535,13 @@ import { MainMenu, MenuMobile } from '@cloud-ru/ds-uikit-product-header';
|
|
|
535
535
|
| `aliases` | `string[] \| undefined` | — | Синонимы заголовка группы для fuzzy-поиска. |
|
|
536
536
|
| `blockColor` | `"blue"` \| `"green"` \| `"neutral"` \| `"orange"` \| `"pink"` \| `"primary"` \| `"red"` \| `"violet"` \| `"yellow"` | — | Цвет блока группы. |
|
|
537
537
|
| `favoritesEnabled` | `boolean \| undefined` | — | Разрешено ли добавление карточек группы в избранное. |
|
|
538
|
-
| `hidden` | `boolean \| undefined` | — |
|
|
539
|
-
| `highlight` | `boolean \| undefined` | — | Визуальное выделение
|
|
540
|
-
| `icon` | `JSXElementConstructor<{ size?: number; className?: string; }> \| undefined` | — |
|
|
538
|
+
| `hidden` | `boolean \| undefined` | — | Группа скрыта (не рендерится, но остаётся в данных — например, для поиска). |
|
|
539
|
+
| `highlight` | `boolean \| undefined` | — | Визуальное выделение группы. |
|
|
540
|
+
| `icon` | `JSXElementConstructor<{ size?: number; className?: string; }> \| undefined` | — | Иконка группы. |
|
|
541
541
|
| `id` | `string` | — | Уникальный идентификатор группы (якорь скролла, поиск по id). |
|
|
542
542
|
| `items` | `InnerLink` | — | Карточки сервисов или ссылок внутри группы. |
|
|
543
543
|
| `label` | `LinksGroupTitle` \| `TitleClickable` \| `TitleStatic` | — | Заголовок группы в сетке карточек и в боковой навигации. |
|
|
544
|
-
| `onClick` | `((e?: MouseEvent<HTMLElement>) => void) \| undefined` | — |
|
|
544
|
+
| `onClick` | `((e?: MouseEvent<HTMLElement>) => void) \| undefined` | — | Колбэк клика по заголовку группы. |
|
|
545
545
|
|
|
546
546
|
- `LinksGroupBlockColor` = `"blue"` \| `"green"` \| `"neutral"` \| `"orange"` \| `"pink"` \| `"primary"` \| `"red"` \| `"violet"` \| `"yellow"`
|
|
547
547
|
|
|
@@ -578,38 +578,38 @@ import { MainMenu, MenuMobile } from '@cloud-ru/ds-uikit-product-header';
|
|
|
578
578
|
|
|
579
579
|
| Prop | Type | Default | Description |
|
|
580
580
|
|------|------|---------|-------------|
|
|
581
|
-
| `divider` | `"after"` \| `"before"` | — |
|
|
582
|
-
| `hidden` | `boolean \| undefined` | — |
|
|
583
|
-
| `href` | `string \| undefined` | — |
|
|
581
|
+
| `divider` | `"after"` \| `"before"` | — | Разделитель до/после пункта. |
|
|
582
|
+
| `hidden` | `boolean \| undefined` | — | Карточка скрыта (не рендерится, но остаётся в данных — например, для поиска). |
|
|
583
|
+
| `href` | `string \| undefined` | — | Ссылка карточки (рендерится как `<a>`). |
|
|
584
584
|
| `icon` | `JSXElementConstructor<{ size?: number; className?: string; }> \| undefined` | — | Иконка карточки. |
|
|
585
585
|
| `id` | `string` | — | Уникальный идентификатор карточки (также используется в избранном и при поиске). <br/> Один и тот же сервис может быть представлен в разных сегментах с разной <br/> детализацией (простая карточка в общем каталоге и раскрытая с вложенными <br/> сервисами версия в другом сегменте) — в этом случае обеим версиям задаётся <br/> общий `id`. При поиске из совпадений с одинаковым `id` в разных сегментах <br/> остаётся только первое по приоритету сегментов (см. <br/> {@link <br/> MainMenuProps.segments <br/> } <br/> ). |
|
|
586
586
|
| `label` | `string` | — | Заголовок карточки. |
|
|
587
|
-
| `onClick` | `(e?: MouseEvent<HTMLElement>) => void` | — |
|
|
587
|
+
| `onClick` | `(e?: MouseEvent<HTMLElement>) => void` | — | Колбэк клика по карточке. |
|
|
588
588
|
|
|
589
589
|
**MainMenuToggleProps**
|
|
590
590
|
|
|
591
591
|
| Prop | Type | Default | Description |
|
|
592
592
|
|------|------|---------|-------------|
|
|
593
|
-
| `onChange` | `(value: boolean) => void` | — |
|
|
594
|
-
| `value` | `boolean` | — |
|
|
593
|
+
| `onChange` | `(value: boolean) => void` | — | Колбэк изменения значения переключателя. |
|
|
594
|
+
| `value` | `boolean` | — | Текущее значение переключателя. |
|
|
595
595
|
|
|
596
596
|
**SearchProps**
|
|
597
597
|
|
|
598
598
|
| Prop | Type | Default | Description |
|
|
599
599
|
|------|------|---------|-------------|
|
|
600
600
|
| `onBlur` | `FocusEventHandler<HTMLInputElement> \| undefined` | — | Колбек обработки потери фокуса |
|
|
601
|
-
| `onChange` | `(value: string) => void` | — |
|
|
601
|
+
| `onChange` | `(value: string) => void` | — | Колбэк изменения значения поисковой строки. |
|
|
602
602
|
| `onFocus` | `FocusEventHandler<HTMLInputElement> \| undefined` | — | Колбек обработки получения фокуса |
|
|
603
|
-
| `onSearchNoResult` | `((value: string) => void) \| undefined` | — |
|
|
604
|
-
| `value` | `string` | — |
|
|
603
|
+
| `onSearchNoResult` | `((value: string) => void) \| undefined` | — | Колбэк вызывается, когда поиск по текущему значению не дал результатов. |
|
|
604
|
+
| `value` | `string` | — | Текущее значение поисковой строки. |
|
|
605
605
|
|
|
606
606
|
**TitleClickable**
|
|
607
607
|
|
|
608
608
|
| Prop | Type | Default | Description |
|
|
609
609
|
|------|------|---------|-------------|
|
|
610
|
-
| `href` | `string \| undefined` | — |
|
|
611
|
-
| `onClick` | `((e?: MouseEvent<HTMLElement>) => void) \| undefined` | — |
|
|
612
|
-
| `text` | `string` | — |
|
|
610
|
+
| `href` | `string \| undefined` | — | Ссылка заголовка (рендерится как `<a>`). |
|
|
611
|
+
| `onClick` | `((e?: MouseEvent<HTMLElement>) => void) \| undefined` | — | Колбэк клика по заголовку. |
|
|
612
|
+
| `text` | `string` | — | Текст заголовка. |
|
|
613
613
|
|
|
614
614
|
**TitleStatic**
|
|
615
615
|
|
|
@@ -617,7 +617,7 @@ import { MainMenu, MenuMobile } from '@cloud-ru/ds-uikit-product-header';
|
|
|
617
617
|
|------|------|---------|-------------|
|
|
618
618
|
| `href` | `undefined` | — | |
|
|
619
619
|
| `onClick` | `undefined` | — | |
|
|
620
|
-
| `text` | `string` | — |
|
|
620
|
+
| `text` | `string` | — | Текст заголовка. |
|
|
621
621
|
|
|
622
622
|
### Адаптивность
|
|
623
623
|
|
|
@@ -694,16 +694,16 @@ export function ControlledTheme() {
|
|
|
694
694
|
| Prop | Type | Default | Description |
|
|
695
695
|
|------|------|---------|-------------|
|
|
696
696
|
| `bottomItems` | `BaseItemWithoutNonGroup` \| `CommonGroupItem` \| `DroplistProps` \| `ScrollProps` | — | Пункты перед «Выйти из аккаунта». На desktop закреплены снизу |
|
|
697
|
-
| `onClick` | `(() => void)` | — |
|
|
698
|
-
| `onLogout` | `(() => void)` | — |
|
|
699
|
-
| `open` | `boolean` | — |
|
|
697
|
+
| `onClick` | `(() => void)` | — | Колбэк клика по кнопке-триггеру. |
|
|
698
|
+
| `onLogout` | `(() => void)` | — | Колбэк клика по пункту «Выйти». |
|
|
699
|
+
| `open` | `boolean` | — | Открыто ли меню. <br/> Не передано — состояние открытия неуправляемое (меню само переключает себя по клику на кнопку). |
|
|
700
700
|
| `organizationItems` | `BaseItemWithoutNonGroup` \| `CommonGroupItem` \| `DroplistProps` \| `ScrollProps` | — | Список организаций. На desktop — единственная прокручиваемая часть меню |
|
|
701
|
-
| `profile` | `UserProfileProps` | `{}` |
|
|
702
|
-
| `setOpen` | `((open: boolean) => void)` | — |
|
|
703
|
-
| `settingItems` | `BaseItemProps` | — |
|
|
704
|
-
| `theme` | `ThemeProps` | — |
|
|
701
|
+
| `profile` | `UserProfileProps` | `{}` | Профиль пользователя (имя, email, счётчик приглашений). |
|
|
702
|
+
| `setOpen` | `((open: boolean) => void)` | — | Колбэк открытия/закрытия меню. |
|
|
703
|
+
| `settingItems` | `BaseItemProps` | — | Пункты настроек в нижней части меню. |
|
|
704
|
+
| `theme` | `ThemeProps` | — | Переключатель темы в меню. Без пропа не отображается. |
|
|
705
705
|
| `topItems` | `BaseItemWithoutNonGroup` \| `CommonGroupItem` \| `DroplistProps` \| `ScrollProps` | — | Пункты после темы. На desktop закреплены сверху вместе с профилем и темой |
|
|
706
|
-
| `triggerTooltip` | `string` | — |
|
|
706
|
+
| `triggerTooltip` | `string` | — | Текст подсказки для кнопки-триггера. |
|
|
707
707
|
|
|
708
708
|
##### Related types
|
|
709
709
|
|
|
@@ -713,18 +713,18 @@ export function ControlledTheme() {
|
|
|
713
713
|
|
|
714
714
|
| Prop | Type | Default | Description |
|
|
715
715
|
|------|------|---------|-------------|
|
|
716
|
-
| `onChange` | `((themeMode: ThemeMode) => void) \| undefined` | — |
|
|
717
|
-
| `value` | `"dark"` \| `"light"` \| `"system"` | — |
|
|
716
|
+
| `onChange` | `((themeMode: ThemeMode) => void) \| undefined` | — | Колбэк изменения режима темы. |
|
|
717
|
+
| `value` | `"dark"` \| `"light"` \| `"system"` | — | Текущий режим темы. Без пропа переключатель темы в меню не отображается. |
|
|
718
718
|
|
|
719
719
|
**UserProfileProps**
|
|
720
720
|
|
|
721
721
|
| Prop | Type | Default | Description |
|
|
722
722
|
|------|------|---------|-------------|
|
|
723
|
-
| `email` | `string \| undefined` | — |
|
|
724
|
-
| `fullName` | `string \| undefined` | — |
|
|
725
|
-
| `inviteCount` | `number \| undefined` | — |
|
|
726
|
-
| `itemWrapRender` | `((node: ReactNode) => ReactNode) \| undefined` | — |
|
|
727
|
-
| `onClick` | `((e: MouseEvent<HTMLElement>) => void) \| undefined` | — |
|
|
723
|
+
| `email` | `string \| undefined` | — | Email пользователя. |
|
|
724
|
+
| `fullName` | `string \| undefined` | — | Полное имя пользователя. Отображается в аватаре (первые буквы) и в пункте профиля меню. |
|
|
725
|
+
| `inviteCount` | `number \| undefined` | — | Число активных приглашений — отображается счётчиком на кнопке-триггере меню. |
|
|
726
|
+
| `itemWrapRender` | `((node: ReactNode) => ReactNode) \| undefined` | — | Оборачивает содержимое пункта профиля — например, ссылкой или дополнительной разметкой. |
|
|
727
|
+
| `onClick` | `((e: MouseEvent<HTMLElement>) => void) \| undefined` | — | Колбэк клика по пункту профиля. |
|
|
728
728
|
|
|
729
729
|
## Logo
|
|
730
730
|
|
|
@@ -775,14 +775,14 @@ export function WithMode() {
|
|
|
775
775
|
|
|
776
776
|
| Prop | Type | Default | Description |
|
|
777
777
|
|------|------|---------|-------------|
|
|
778
|
-
| `className` | `string` | — |
|
|
778
|
+
| `className` | `string` | — | CSS-класс корневого элемента. |
|
|
779
779
|
| `data-test-id` | `string` | — | |
|
|
780
|
-
| `href` | `string` | — |
|
|
781
|
-
| `loading` | `boolean` | — |
|
|
782
|
-
| `mode` | `"develop"` \| `"hybrid"` \| `"prod"` \| `"stage"` | — |
|
|
783
|
-
| `onClick` | `MouseEventHandler<HTMLAnchorElement>` | — |
|
|
784
|
-
| `path` | `string` | — |
|
|
785
|
-
| `tooltip` | `TooltipProps` | — |
|
|
780
|
+
| `href` | `string` | — | Ссылка логотипа. |
|
|
781
|
+
| `loading` | `boolean` | — | Флаг загрузки — логотип показывается в состоянии загрузки кнопки. |
|
|
782
|
+
| `mode` | `"develop"` \| `"hybrid"` \| `"prod"` \| `"stage"` | — | Режим окружения — отображается промо-тегом рядом с дефолтной иконкой (не для `'prod'`). |
|
|
783
|
+
| `onClick` | `MouseEventHandler<HTMLAnchorElement>` | — | Колбэк клика по логотипу. |
|
|
784
|
+
| `path` | `string` | — | Путь до кастомного изображения логотипа. Без пропа (или при ошибке загрузки) — дефолтная иконка. |
|
|
785
|
+
| `tooltip` | `TooltipProps` | — | Настройки тултипа логотипа. |
|
|
786
786
|
|
|
787
787
|
##### Related types
|
|
788
788
|
|
|
@@ -823,4 +823,4 @@ export function Basic() {
|
|
|
823
823
|
|
|
824
824
|
| Prop | Type | Default | Description |
|
|
825
825
|
|------|------|---------|-------------|
|
|
826
|
-
| `items` | `BreadcrumbsProps` \| `Item` | — |
|
|
826
|
+
| `items` | `BreadcrumbsProps` \| `Item` | — | Пункты хлебных крошек. |
|
|
@@ -4,6 +4,7 @@ import { ElementType } from 'react';
|
|
|
4
4
|
export type HeaderButtonProps<T extends ElementType = 'button'> = Omit<ButtonProps<T>, 'size' | 'appearance' | 'view'> & {
|
|
5
5
|
/** Настройки тултипа. `placement` и `disableSpanWrapper` зафиксированы под анатомию хедера */
|
|
6
6
|
tooltip?: Omit<TooltipProps, 'placement'>;
|
|
7
|
+
/** Мобильная раскладка — тултип не показывается (на mobile нет hover). */
|
|
7
8
|
isMobile?: boolean;
|
|
8
9
|
};
|
|
9
10
|
/**
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import { WithSupportProps } from '@cloud-ru/ds-utils';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
3
|
export type HeaderLayoutProps = WithSupportProps<{
|
|
4
|
+
/** CSS-класс корневого элемента. */
|
|
4
5
|
className?: string;
|
|
6
|
+
/** Слот главного меню (слева, после логотипа). */
|
|
5
7
|
menu?: ReactNode;
|
|
8
|
+
/** Слот логотипа (крайний левый). */
|
|
6
9
|
logo?: ReactNode;
|
|
10
|
+
/** Слот селектора (например, выбор облака/организации), после меню. */
|
|
7
11
|
select?: ReactNode;
|
|
12
|
+
/** Слот хлебных крошек. На mobile переносится под основную строку хедера. */
|
|
8
13
|
breadcrumbs?: ReactNode;
|
|
14
|
+
/** Слот тулбара — правая часть хедера. */
|
|
9
15
|
toolbar?: ReactNode;
|
|
10
16
|
}>;
|
|
11
17
|
export declare function HeaderLayout({ menu, logo, select, breadcrumbs, toolbar, className, ...rest }: HeaderLayoutProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -3,12 +3,19 @@ import { WithSupportProps } from '@cloud-ru/ds-utils';
|
|
|
3
3
|
import { MouseEventHandler } from 'react';
|
|
4
4
|
import { HeaderLogoMode } from './constants';
|
|
5
5
|
export type LogoProps = WithSupportProps<{
|
|
6
|
+
/** Флаг загрузки — логотип показывается в состоянии загрузки кнопки. */
|
|
6
7
|
loading?: boolean;
|
|
8
|
+
/** Путь до кастомного изображения логотипа. Без пропа (или при ошибке загрузки) — дефолтная иконка. */
|
|
7
9
|
path?: string;
|
|
10
|
+
/** Режим окружения — отображается промо-тегом рядом с дефолтной иконкой (не для `'prod'`). */
|
|
8
11
|
mode?: HeaderLogoMode;
|
|
12
|
+
/** Ссылка логотипа. */
|
|
9
13
|
href: string;
|
|
14
|
+
/** Колбэк клика по логотипу. */
|
|
10
15
|
onClick?: MouseEventHandler<HTMLAnchorElement>;
|
|
16
|
+
/** CSS-класс корневого элемента. */
|
|
11
17
|
className?: string;
|
|
18
|
+
/** Настройки тултипа логотипа. */
|
|
12
19
|
tooltip?: TooltipProps;
|
|
13
20
|
}>;
|
|
14
21
|
export declare function Logo({ path, loading, mode, href, onClick, className, tooltip, ...rest }: LogoProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -14,13 +14,16 @@ const MenuMobile_1 = require("./helperComponents/MenuMobile");
|
|
|
14
14
|
function MainMenu({ open: openProp, setOpen: setOpenProp, settingItems, platformGroups, logo, leftTop, leftBottom, rightTop, segments, segmentPrefs, activeSegmentId, onActiveSegmentChange, onSegmentOrderChange, onSegmentExpandedChange, onSegmentServiceClick, favorite, search, preferences, disabled, defaultWidth, onWidthChangeEnd, draggerTooltip, loading, }) {
|
|
15
15
|
const { t } = locale_1.headerLocale.useTranslations();
|
|
16
16
|
const [open = false, setOpen] = (0, utils_1.useValueControl)({ value: openProp, onChange: setOpenProp });
|
|
17
|
+
const searchValue = search?.value;
|
|
18
|
+
const onSearchChange = search?.onChange;
|
|
17
19
|
(0, react_1.useEffect)(() => {
|
|
18
|
-
if (!open &&
|
|
19
|
-
|
|
20
|
-
}, [open,
|
|
20
|
+
if (!open && searchValue)
|
|
21
|
+
onSearchChange?.('');
|
|
22
|
+
}, [open, searchValue, onSearchChange]);
|
|
23
|
+
const handleOpen = (0, react_1.useCallback)(() => {
|
|
24
|
+
setOpen(true);
|
|
25
|
+
}, [setOpen]);
|
|
21
26
|
const isMobile = (0, useMobileLayout_1.useMobileLayout)();
|
|
22
27
|
const MenuComponent = isMobile ? MenuMobile_1.MenuMobile : MenuDesktop_1.MenuDesktop;
|
|
23
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(HeaderButton_1.HeaderButton, { tooltip: open ? undefined : { tip: t('services') }, isMobile: isMobile, disabled: disabled, icon: (0, jsx_runtime_1.jsx)(product_1.MainMenuSVG, {}), onClick: ()
|
|
24
|
-
setOpen(true);
|
|
25
|
-
}, "data-test-id": constants_1.TEST_IDS.mainMenu.drawerButton }), (0, jsx_runtime_1.jsx)(MenuComponent, { settingItems: settingItems, segments: segments, segmentPrefs: segmentPrefs, activeSegmentId: activeSegmentId, onActiveSegmentChange: onActiveSegmentChange, onSegmentOrderChange: onSegmentOrderChange, onSegmentExpandedChange: onSegmentExpandedChange, onSegmentServiceClick: onSegmentServiceClick, platformGroups: platformGroups, search: search, logo: logo, leftTop: leftTop, leftBottom: leftBottom, rightTop: rightTop, favorite: favorite, open: open, setOpen: setOpen, preferences: preferences, defaultWidth: defaultWidth, onWidthChangeEnd: onWidthChangeEnd, draggerTooltip: draggerTooltip, loading: loading })] }));
|
|
28
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(HeaderButton_1.HeaderButton, { tooltip: open ? undefined : { tip: t('services') }, isMobile: isMobile, disabled: disabled, icon: (0, jsx_runtime_1.jsx)(product_1.MainMenuSVG, {}), onClick: handleOpen, "data-test-id": constants_1.TEST_IDS.mainMenu.drawerButton }), (0, jsx_runtime_1.jsx)(MenuComponent, { settingItems: settingItems, segments: segments, segmentPrefs: segmentPrefs, activeSegmentId: activeSegmentId, onActiveSegmentChange: onActiveSegmentChange, onSegmentOrderChange: onSegmentOrderChange, onSegmentExpandedChange: onSegmentExpandedChange, onSegmentServiceClick: onSegmentServiceClick, platformGroups: platformGroups, search: search, logo: logo, leftTop: leftTop, leftBottom: leftBottom, rightTop: rightTop, favorite: favorite, open: open, setOpen: setOpen, preferences: preferences, defaultWidth: defaultWidth, onWidthChangeEnd: onWidthChangeEnd, draggerTooltip: draggerTooltip, loading: loading })] }));
|
|
26
29
|
}
|
|
@@ -22,5 +22,5 @@ function MenuBanner({ title, promoTag, afterTitle, onClose, className, href = '#
|
|
|
22
22
|
e.stopPropagation();
|
|
23
23
|
onClose?.(e);
|
|
24
24
|
}, [onClose]);
|
|
25
|
-
return ((0, jsx_runtime_1.jsx)(card_1.Card, { as: 'a', href: href, radius: 'l', view: 'simple', className: (0, classnames_1.default)(styles_module_scss_1.default.root, className), "data-test-id": dataTestId ?? constants_1.MENU_BANNER_TEST_IDS.root, ...rest, children: (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.contentRow, children: [(0, jsx_runtime_1.jsxs)("span", { className: styles_module_scss_1.default.titleWrapper, children: [(0, jsx_runtime_1.jsx)(typography_1.Typography, { as: 'span', variant: 'body', size: 'm', className: styles_module_scss_1.default.title, "data-test-id": constants_1.MENU_BANNER_TEST_IDS.title, children: title }), promoTag && ((0, jsx_runtime_1.jsx)(promo_tag_1.PromoTag, { ...promoTag, className: styles_module_scss_1.default.promoTag, roleAppearance: promo_tag_1.ROLE_APPEARANCE.Decor, size: promo_tag_1.SIZE.Xs, "data-test-id": constants_1.MENU_BANNER_TEST_IDS.promoTag }))] }), afterTitle && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.afterTitle, "data-test-id": constants_1.MENU_BANNER_TEST_IDS.afterTitle, children: afterTitle })), onClose && ((0, jsx_runtime_1.jsx)(button_1.Button, { className: styles_module_scss_1.default.closeButton, view: 'elevated', appearance: 'neutral', size: 's', icon: (0, jsx_runtime_1.jsx)(system_1.CrossSVG, {
|
|
25
|
+
return ((0, jsx_runtime_1.jsx)(card_1.Card, { as: 'a', href: href, radius: 'l', view: 'simple', className: (0, classnames_1.default)(styles_module_scss_1.default.root, className), "data-test-id": dataTestId ?? constants_1.MENU_BANNER_TEST_IDS.root, ...rest, children: (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.contentRow, children: [(0, jsx_runtime_1.jsxs)("span", { className: styles_module_scss_1.default.titleWrapper, children: [(0, jsx_runtime_1.jsx)(typography_1.Typography, { as: 'span', variant: 'body', size: 'm', className: styles_module_scss_1.default.title, "data-test-id": constants_1.MENU_BANNER_TEST_IDS.title, children: title }), promoTag && ((0, jsx_runtime_1.jsx)(promo_tag_1.PromoTag, { ...promoTag, className: styles_module_scss_1.default.promoTag, roleAppearance: promo_tag_1.ROLE_APPEARANCE.Decor, size: promo_tag_1.SIZE.Xs, "data-test-id": constants_1.MENU_BANNER_TEST_IDS.promoTag }))] }), afterTitle && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.afterTitle, "data-test-id": constants_1.MENU_BANNER_TEST_IDS.afterTitle, children: afterTitle })), onClose && ((0, jsx_runtime_1.jsx)(button_1.Button, { className: styles_module_scss_1.default.closeButton, view: 'elevated', appearance: 'neutral', size: 's', icon: (0, jsx_runtime_1.jsx)(system_1.CrossSVG, {}), onClick: handleClose, "aria-label": t('close'), "data-test-id": constants_1.MENU_BANNER_TEST_IDS.close }))] }) }));
|
|
26
26
|
}
|
|
@@ -40,6 +40,7 @@ export type ContentProps = {
|
|
|
40
40
|
* Колбэк клика по карточке сервиса в сегменте.
|
|
41
41
|
*/
|
|
42
42
|
onSegmentServiceClick?(service: InnerLink, e?: MouseEvent<HTMLElement>): void;
|
|
43
|
+
/** Избранное. Без пропа группа-предок карточек драга из избранного не активируется. */
|
|
43
44
|
favorite?: FavoriteProps;
|
|
44
45
|
/**
|
|
45
46
|
* Настройки меню (модалка по кнопке в тулбаре): описания карточек, цвета групп.
|
|
@@ -47,12 +48,17 @@ export type ContentProps = {
|
|
|
47
48
|
* Не передано — кнопка настроек в тулбаре не отображается.
|
|
48
49
|
*/
|
|
49
50
|
preferences?: MainMenuPreferencesProps;
|
|
51
|
+
/** Текущее значение поисковой строки — переключает контент между каталогом и результатами поиска. */
|
|
50
52
|
searchValue?: string;
|
|
53
|
+
/** Слот поисковой строки — рендерится над контентом. */
|
|
51
54
|
search?: ReactNode;
|
|
52
55
|
/** Слот над тулбаром правой колонки (например, баннеры) */
|
|
53
56
|
rightTop?: ReactNode;
|
|
57
|
+
/** Слот под сеткой карточек. */
|
|
54
58
|
footer?: ReactNode;
|
|
59
|
+
/** Мобильная раскладка. */
|
|
55
60
|
isMobile?: boolean;
|
|
61
|
+
/** CSS-класс корневого элемента. */
|
|
56
62
|
className?: string;
|
|
57
63
|
/** Флаг загрузки данных */
|
|
58
64
|
loading?: boolean;
|