@cloud-ru/ds-uikit-product-header 1.5.2-preview-b174c2b1.0 → 1.5.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.
- package/CHANGELOG.md +4 -0
- package/README.md +91 -91
- package/dist/cjs/components/HeaderButton/HeaderButton.d.ts +0 -1
- package/dist/cjs/components/HeaderLayout/HeaderLayout.d.ts +0 -6
- package/dist/cjs/components/Logo/Logo.d.ts +0 -7
- package/dist/cjs/components/MainMenu/MainMenu.js +6 -9
- package/dist/cjs/components/MainMenu/helperComponents/Content/Content.d.ts +0 -6
- package/dist/cjs/components/MainMenu/helperComponents/Content/Content.js +11 -35
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/ContentToolbar.d.ts +0 -9
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/SortableGroup.d.ts +4 -23
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/SortableGroup.js +10 -38
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupCards.d.ts +4 -7
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupCards.js +4 -9
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupDragHandle.d.ts +0 -2
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.d.ts +1 -3
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.js +4 -6
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupSkeleton.d.ts +0 -1
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategory.d.ts +4 -9
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategory.js +12 -17
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategoryTitle.d.ts +3 -8
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategoryTitle.js +18 -24
- package/dist/cjs/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/styles.module.css +0 -17
- package/dist/cjs/components/MainMenu/helperComponents/Content/hooks/useContentSegmentsSortable.js +2 -4
- 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 +0 -16
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/Favorites.d.ts +4 -4
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/Favorites.js +33 -15
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyState.d.ts +1 -4
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyState.js +2 -4
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesSortable.d.ts +19 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesSortable.js +30 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/SortableFavoriteCard.d.ts +1 -7
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/SortableFavoriteCard.js +2 -4
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/index.d.ts +1 -2
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/index.js +1 -2
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesDnd.d.ts +25 -0
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/hooks/{useFavoritesReorder.js → useFavoritesDnd.js} +22 -21
- package/dist/cjs/components/MainMenu/helperComponents/MenuBottom/MenuBottom.d.ts +0 -2
- 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 +5 -0
- package/dist/cjs/components/MainMenu/helperComponents/MenuHeaderBrand/MenuHeaderBrand.d.ts +0 -3
- package/dist/cjs/components/MainMenu/helperComponents/MenuMobile/MenuMobile.d.ts +1 -1
- package/dist/cjs/components/MainMenu/helperComponents/MenuMobile/MenuMobile.js +6 -5
- package/dist/cjs/components/MainMenu/helperComponents/MenuMobile/styles.module.css +7 -0
- package/dist/cjs/components/MainMenu/helperComponents/MountAnimation/MountAnimation.d.ts +1 -1
- package/dist/cjs/components/MainMenu/helperComponents/MountAnimation/MountAnimation.js +1 -4
- package/dist/cjs/components/MainMenu/helperComponents/ServiceCard/ServiceCard.d.ts +6 -30
- package/dist/cjs/components/MainMenu/helperComponents/ServiceCard/ServiceCard.js +21 -30
- package/dist/cjs/components/MainMenu/helperComponents/ServiceCard/styles.module.css +1 -6
- package/dist/cjs/components/MainMenu/hooks/useMainMenuDnd.d.ts +4 -6
- package/dist/cjs/components/MainMenu/hooks/useMainMenuDnd.js +6 -4
- package/dist/cjs/components/MainMenu/hooks/useMenuItems.js +7 -12
- package/dist/cjs/components/MainMenu/types.d.ts +1 -31
- package/dist/cjs/components/MainMenu/utils/filterLinksGroupsFuzzy.d.ts +0 -5
- package/dist/cjs/components/MainMenu/utils/filterLinksGroupsFuzzy.js +7 -21
- package/dist/cjs/components/MainMenu/utils/flatLinksGroups.d.ts +0 -2
- package/dist/cjs/components/MainMenu/utils/flatLinksGroups.js +0 -5
- package/dist/cjs/components/MainMenu/utils/resolveInnerLinksByIds.d.ts +2 -2
- package/dist/cjs/components/MainMenu/utils/resolveInnerLinksByIds.js +4 -2
- package/dist/cjs/components/PathBreadcrumbs/PathBreadcrumbs.d.ts +0 -2
- package/dist/cjs/components/UserMenu/UserMenu.d.ts +0 -13
- package/dist/cjs/components/UserMenu/types.d.ts +0 -7
- package/dist/cjs/style.css +13 -39
- package/dist/esm/components/HeaderButton/HeaderButton.d.ts +0 -1
- package/dist/esm/components/HeaderLayout/HeaderLayout.d.ts +0 -6
- package/dist/esm/components/Logo/Logo.d.ts +0 -7
- package/dist/esm/components/MainMenu/MainMenu.js +7 -10
- package/dist/esm/components/MainMenu/helperComponents/Content/Content.d.ts +0 -6
- package/dist/esm/components/MainMenu/helperComponents/Content/Content.js +13 -37
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/ContentToolbar.d.ts +0 -9
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/SortableGroup.d.ts +4 -23
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/SortableGroup.js +9 -37
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupCards.d.ts +4 -7
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupCards.js +4 -9
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupDragHandle.d.ts +0 -2
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.d.ts +1 -3
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.js +3 -5
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupSkeleton.d.ts +0 -1
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategory.d.ts +4 -9
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategory.js +13 -18
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategoryTitle.d.ts +3 -8
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategoryTitle.js +19 -25
- package/dist/esm/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/styles.module.css +0 -17
- package/dist/esm/components/MainMenu/helperComponents/Content/hooks/useContentSegmentsSortable.js +2 -4
- 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 +0 -16
- package/dist/esm/components/MainMenu/helperComponents/Favorites/Favorites.d.ts +4 -4
- package/dist/esm/components/MainMenu/helperComponents/Favorites/Favorites.js +35 -17
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyState.d.ts +1 -4
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyState.js +1 -3
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesSortable.d.ts +19 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesSortable.js +24 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/SortableFavoriteCard.d.ts +1 -7
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/SortableFavoriteCard.js +1 -3
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/index.d.ts +1 -2
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/index.js +1 -2
- package/dist/esm/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesDnd.d.ts +25 -0
- package/dist/esm/components/MainMenu/helperComponents/Favorites/hooks/{useFavoritesReorder.js → useFavoritesDnd.js} +22 -21
- package/dist/esm/components/MainMenu/helperComponents/MenuBottom/MenuBottom.d.ts +0 -2
- 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 +5 -0
- package/dist/esm/components/MainMenu/helperComponents/MenuHeaderBrand/MenuHeaderBrand.d.ts +0 -3
- package/dist/esm/components/MainMenu/helperComponents/MenuMobile/MenuMobile.d.ts +1 -1
- package/dist/esm/components/MainMenu/helperComponents/MenuMobile/MenuMobile.js +6 -5
- package/dist/esm/components/MainMenu/helperComponents/MenuMobile/styles.module.css +7 -0
- package/dist/esm/components/MainMenu/helperComponents/MountAnimation/MountAnimation.d.ts +1 -1
- package/dist/esm/components/MainMenu/helperComponents/MountAnimation/MountAnimation.js +1 -4
- package/dist/esm/components/MainMenu/helperComponents/ServiceCard/ServiceCard.d.ts +6 -30
- package/dist/esm/components/MainMenu/helperComponents/ServiceCard/ServiceCard.js +20 -30
- package/dist/esm/components/MainMenu/helperComponents/ServiceCard/styles.module.css +1 -6
- package/dist/esm/components/MainMenu/hooks/useMainMenuDnd.d.ts +4 -6
- package/dist/esm/components/MainMenu/hooks/useMainMenuDnd.js +8 -6
- package/dist/esm/components/MainMenu/hooks/useMenuItems.js +8 -13
- package/dist/esm/components/MainMenu/types.d.ts +1 -31
- package/dist/esm/components/MainMenu/utils/filterLinksGroupsFuzzy.d.ts +0 -5
- package/dist/esm/components/MainMenu/utils/filterLinksGroupsFuzzy.js +7 -20
- package/dist/esm/components/MainMenu/utils/flatLinksGroups.d.ts +0 -2
- package/dist/esm/components/MainMenu/utils/flatLinksGroups.js +0 -4
- package/dist/esm/components/MainMenu/utils/resolveInnerLinksByIds.d.ts +2 -2
- package/dist/esm/components/MainMenu/utils/resolveInnerLinksByIds.js +4 -2
- package/dist/esm/components/PathBreadcrumbs/PathBreadcrumbs.d.ts +0 -2
- package/dist/esm/components/UserMenu/UserMenu.d.ts +0 -13
- package/dist/esm/components/UserMenu/types.d.ts +0 -7
- package/dist/esm/style.css +13 -39
- 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 +0 -1
- package/src/components/HeaderLayout/HeaderLayout.tsx +0 -6
- package/src/components/Logo/Logo.tsx +0 -7
- package/src/components/MainMenu/MainMenu.tsx +6 -11
- package/src/components/MainMenu/helperComponents/Content/Content.tsx +59 -104
- package/src/components/MainMenu/helperComponents/Content/helperComponents/ContentToolbar/ContentToolbar.tsx +0 -9
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/SortableGroup.tsx +47 -106
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupCards.tsx +30 -20
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupDragHandle.tsx +0 -2
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupHeader.tsx +6 -11
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SortableGroupSkeleton.tsx +0 -1
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategory.tsx +87 -72
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/components/SubCategory/SubCategoryTitle.tsx +48 -65
- package/src/components/MainMenu/helperComponents/Content/helperComponents/SortableGroup/styles.module.scss +0 -27
- package/src/components/MainMenu/helperComponents/Content/hooks/useContentSegmentsSortable.ts +2 -4
- package/src/components/MainMenu/helperComponents/Content/hooks/useSegmentDnd.tsx +7 -8
- package/src/components/MainMenu/helperComponents/Content/styles.module.scss +0 -19
- package/src/components/MainMenu/helperComponents/Favorites/Favorites.tsx +82 -43
- package/src/components/MainMenu/helperComponents/Favorites/components/EmptyState/EmptyState.tsx +1 -6
- package/src/components/MainMenu/helperComponents/Favorites/components/FavoritesSortable.tsx +78 -0
- package/src/components/MainMenu/helperComponents/Favorites/components/SortableFavoriteCard.tsx +1 -8
- package/src/components/MainMenu/helperComponents/Favorites/components/index.ts +1 -2
- package/src/components/MainMenu/helperComponents/Favorites/hooks/{useFavoritesReorder.tsx → useFavoritesDnd.tsx} +30 -32
- package/src/components/MainMenu/helperComponents/MenuBottom/MenuBottom.tsx +0 -2
- package/src/components/MainMenu/helperComponents/MenuDesktop/MenuDesktop.tsx +11 -17
- package/src/components/MainMenu/helperComponents/MenuDesktop/styles.module.scss +6 -0
- package/src/components/MainMenu/helperComponents/MenuHeaderBrand/MenuHeaderBrand.tsx +0 -3
- package/src/components/MainMenu/helperComponents/MenuMobile/MenuMobile.tsx +10 -7
- package/src/components/MainMenu/helperComponents/MenuMobile/styles.module.scss +7 -0
- package/src/components/MainMenu/helperComponents/MountAnimation/MountAnimation.tsx +1 -5
- package/src/components/MainMenu/helperComponents/ServiceCard/ServiceCard.tsx +41 -92
- package/src/components/MainMenu/helperComponents/ServiceCard/styles.module.scss +1 -7
- package/src/components/MainMenu/hooks/useMainMenuDnd.tsx +12 -9
- package/src/components/MainMenu/hooks/useMenuItems.tsx +10 -34
- package/src/components/MainMenu/types.ts +1 -31
- package/src/components/MainMenu/utils/filterLinksGroupsFuzzy.ts +8 -29
- package/src/components/MainMenu/utils/flatLinksGroups.ts +0 -5
- package/src/components/MainMenu/utils/resolveInnerLinksByIds.ts +6 -3
- package/src/components/PathBreadcrumbs/PathBreadcrumbs.tsx +0 -2
- package/src/components/UserMenu/UserMenu.tsx +0 -13
- package/src/components/UserMenu/types.ts +0 -7
- package/dist/cjs/components/MainMenu/helperComponents/Content/cardsContext.d.ts +0 -20
- package/dist/cjs/components/MainMenu/helperComponents/Content/cardsContext.js +0 -17
- package/dist/cjs/components/MainMenu/helperComponents/Content/hooks/useProgressiveCount.d.ts +0 -12
- package/dist/cjs/components/MainMenu/helperComponents/Content/hooks/useProgressiveCount.js +0 -39
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesDesktop.d.ts +0 -35
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesDesktop.js +0 -27
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesList.d.ts +0 -21
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesList.js +0 -31
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesMobile.d.ts +0 -28
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesMobile.js +0 -20
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesReorderList.d.ts +0 -24
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/FavoritesReorderList.js +0 -36
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/RecentList.d.ts +0 -24
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/components/RecentList.js +0 -30
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesAutoSwitch.d.ts +0 -16
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesAutoSwitch.js +0 -28
- package/dist/cjs/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesReorder.d.ts +0 -30
- package/dist/cjs/utils/noop.d.ts +0 -1
- package/dist/cjs/utils/noop.js +0 -5
- package/dist/esm/components/MainMenu/helperComponents/Content/cardsContext.d.ts +0 -20
- package/dist/esm/components/MainMenu/helperComponents/Content/cardsContext.js +0 -13
- package/dist/esm/components/MainMenu/helperComponents/Content/hooks/useProgressiveCount.d.ts +0 -12
- package/dist/esm/components/MainMenu/helperComponents/Content/hooks/useProgressiveCount.js +0 -35
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesDesktop.d.ts +0 -35
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesDesktop.js +0 -24
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesList.d.ts +0 -21
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesList.js +0 -25
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesMobile.d.ts +0 -28
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesMobile.js +0 -17
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesReorderList.d.ts +0 -24
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/FavoritesReorderList.js +0 -30
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/RecentList.d.ts +0 -24
- package/dist/esm/components/MainMenu/helperComponents/Favorites/components/RecentList.js +0 -24
- package/dist/esm/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesAutoSwitch.d.ts +0 -16
- package/dist/esm/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesAutoSwitch.js +0 -25
- package/dist/esm/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesReorder.d.ts +0 -30
- package/dist/esm/utils/noop.d.ts +0 -1
- package/dist/esm/utils/noop.js +0 -1
- package/src/components/MainMenu/helperComponents/Content/cardsContext.ts +0 -36
- package/src/components/MainMenu/helperComponents/Content/hooks/useProgressiveCount.ts +0 -46
- package/src/components/MainMenu/helperComponents/Favorites/components/FavoritesDesktop.tsx +0 -71
- package/src/components/MainMenu/helperComponents/Favorites/components/FavoritesList.tsx +0 -59
- package/src/components/MainMenu/helperComponents/Favorites/components/FavoritesMobile.tsx +0 -60
- package/src/components/MainMenu/helperComponents/Favorites/components/FavoritesReorderList.tsx +0 -75
- package/src/components/MainMenu/helperComponents/Favorites/components/RecentList.tsx +0 -62
- package/src/components/MainMenu/helperComponents/Favorites/hooks/useFavoritesAutoSwitch.ts +0 -32
- package/src/utils/noop.ts +0 -1
|
@@ -7,6 +7,13 @@
|
|
|
7
7
|
padding:0 var(--sn-primitive-dimension-4, 4px);
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
+
.rightContent{
|
|
11
|
+
display:flex;
|
|
12
|
+
flex-direction:column;
|
|
13
|
+
gap:var(--sn-primitive-dimension-8, 8px);
|
|
14
|
+
min-width:0;
|
|
15
|
+
}
|
|
16
|
+
|
|
10
17
|
.drawerMobile{
|
|
11
18
|
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-brand-palette-gray-90, #eeeff3))) !important;
|
|
12
19
|
}
|
|
@@ -4,4 +4,4 @@ export type MountAnimationProps = PropsWithChildren<WithSupportProps<{
|
|
|
4
4
|
type?: 'fade-slide-up' | 'fade-slide-up-right' | 'slide-right' | 'fade-in';
|
|
5
5
|
className?: string;
|
|
6
6
|
}>>;
|
|
7
|
-
export declare function MountAnimation({ children, type, className, ...props }: MountAnimationProps):
|
|
7
|
+
export declare function MountAnimation({ children, type, className, ...props }: MountAnimationProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -8,9 +8,6 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
8
8
|
const utils_1 = require("@cloud-ru/ds-utils");
|
|
9
9
|
const classnames_1 = __importDefault(require("classnames"));
|
|
10
10
|
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
11
|
-
function MountAnimation({ children, type, className, ...props }) {
|
|
12
|
-
if (type === undefined) {
|
|
13
|
-
return children;
|
|
14
|
-
}
|
|
11
|
+
function MountAnimation({ children, type = 'slide-right', className, ...props }) {
|
|
15
12
|
return ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.wrapper, className), ...(0, utils_1.extractSupportProps)(props), "data-animation-type": type, children: children }));
|
|
16
13
|
}
|
|
@@ -1,43 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CardServiceLightProps } from '@cloud-ru/ds-uikit-product-card-predefined';
|
|
2
2
|
import { MouseEvent } from 'react';
|
|
3
3
|
import { FavoriteProps, InnerLink } from '../../types';
|
|
4
4
|
export type ServiceCardProps = {
|
|
5
|
-
/** Карточка сервиса. */
|
|
6
5
|
service: InnerLink;
|
|
7
|
-
|
|
8
|
-
isFavorite?: boolean;
|
|
9
|
-
/**
|
|
10
|
-
* Переключение избранного (стабильная по ссылке функция). Не передано — кнопка избранного
|
|
11
|
-
* не показывается.
|
|
12
|
-
*/
|
|
13
|
-
onFavoriteChange?: FavoriteProps['onChange'];
|
|
14
|
-
/** Мобильная раскладка. */
|
|
6
|
+
favorite?: FavoriteProps;
|
|
15
7
|
isMobile?: boolean;
|
|
16
|
-
/** Колбэк клика по карточке. */
|
|
17
8
|
onServiceClick?(service: InnerLink, event: MouseEvent<HTMLElement>): void;
|
|
18
|
-
/** Показывать описание сервиса вместо тултипа. */
|
|
19
9
|
showDescription: boolean;
|
|
20
|
-
/** CSS-класс корневого элемента. */
|
|
21
10
|
className?: string;
|
|
22
|
-
/** `tabIndex` корневого элемента. */
|
|
23
11
|
tabIndex?: number;
|
|
24
|
-
/** Карточка рендерится как превью в `DragOverlay` (без тултипа и описания). */
|
|
25
12
|
dragPreview?: boolean;
|
|
26
|
-
} & Pick<
|
|
27
|
-
declare function
|
|
28
|
-
export declare const ServiceCard: import("react").MemoExoticComponent<typeof ServiceCardBase>;
|
|
13
|
+
} & Pick<CardServiceLightProps, 'expandable'>;
|
|
14
|
+
export declare function ServiceCard({ service, favorite, isMobile, onServiceClick, showDescription, className, tabIndex, dragPreview, expandable, }: ServiceCardProps): import("react/jsx-runtime").JSX.Element;
|
|
29
15
|
export type DraggableServiceCardProps = ServiceCardProps & {
|
|
30
16
|
groupId: string;
|
|
17
|
+
dragDisabled?: boolean;
|
|
31
18
|
};
|
|
32
|
-
declare function
|
|
33
|
-
export declare const DraggableServiceCard: import("react").MemoExoticComponent<typeof DraggableServiceCardBase>;
|
|
34
|
-
export type GridServiceCardProps = DraggableServiceCardProps & {
|
|
35
|
-
/**
|
|
36
|
-
* Карточку можно перетаскивать. Иначе рендерится без `useDraggable`: на mobile, при поиске и
|
|
37
|
-
* без избранного сотни карточек не регистрируются в `DndContext` впустую.
|
|
38
|
-
*/
|
|
39
|
-
dragEnabled?: boolean;
|
|
40
|
-
};
|
|
41
|
-
declare function GridServiceCardBase({ dragEnabled, groupId, ...props }: GridServiceCardProps): import("react/jsx-runtime").JSX.Element;
|
|
42
|
-
export declare const GridServiceCard: import("react").MemoExoticComponent<typeof GridServiceCardBase>;
|
|
43
|
-
export {};
|
|
19
|
+
export declare function DraggableServiceCard({ groupId, service, favorite, dragDisabled, ...props }: DraggableServiceCardProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -3,35 +3,32 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.ServiceCard = ServiceCard;
|
|
7
|
+
exports.DraggableServiceCard = DraggableServiceCard;
|
|
7
8
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
9
|
const core_1 = require("@dnd-kit/core");
|
|
9
10
|
const drag_and_drop_1 = require("@cloud-ru/ds-drag-and-drop");
|
|
10
11
|
const uikit_product_card_predefined_1 = require("@cloud-ru/ds-uikit-product-card-predefined");
|
|
11
12
|
const classnames_1 = __importDefault(require("classnames"));
|
|
12
|
-
const react_1 = require("react");
|
|
13
13
|
const utils_1 = require("../../utils");
|
|
14
14
|
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
15
|
-
function
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const favoriteProps =
|
|
15
|
+
function ServiceCard({ service, favorite, isMobile, onServiceClick, showDescription, className, tabIndex, dragPreview, expandable, }) {
|
|
16
|
+
const isInFavorites = favorite?.value.includes(service.id) ?? false;
|
|
17
|
+
const isFavoriteEnabled = service.favoritesEnabled ?? true;
|
|
18
|
+
const favoriteProps = !dragPreview && favorite
|
|
19
19
|
? {
|
|
20
|
-
checked:
|
|
21
|
-
onChange:
|
|
22
|
-
enabled: !disabled &&
|
|
20
|
+
checked: isInFavorites,
|
|
21
|
+
onChange: favorite.onChange(service.id),
|
|
22
|
+
enabled: !service.disabled && isFavoriteEnabled,
|
|
23
23
|
}
|
|
24
|
-
: undefined
|
|
25
|
-
const handleClick = (0, react_1.useCallback)((event) => onServiceClick?.(service, event), [onServiceClick, service]);
|
|
26
|
-
const emblem = (0, react_1.useMemo)(() => (0, utils_1.getLinkEmblem)({ icon }), [icon]);
|
|
27
|
-
const tooltip = (0, react_1.useMemo)(() => (!dragPreview && description ? { tip: description } : undefined), [dragPreview, description]);
|
|
24
|
+
: undefined;
|
|
28
25
|
const commonProps = {
|
|
29
26
|
as: 'a',
|
|
30
27
|
title: service.label,
|
|
31
|
-
icon:
|
|
32
|
-
'data-test-id': `header__drawer-menu__link-${id}`,
|
|
28
|
+
icon: (0, utils_1.getLinkEmblem)(service),
|
|
29
|
+
'data-test-id': `header__drawer-menu__link-${service.id}`,
|
|
33
30
|
href: service.href,
|
|
34
|
-
onClick:
|
|
31
|
+
onClick: (event) => onServiceClick?.(service, event),
|
|
35
32
|
favorite: favoriteProps,
|
|
36
33
|
actionsVisibility: isMobile ? 'always' : 'hover',
|
|
37
34
|
promoTag: service.badge,
|
|
@@ -39,26 +36,20 @@ function ServiceCardBase({ service, isFavorite = false, onFavoriteChange, isMobi
|
|
|
39
36
|
tabIndex,
|
|
40
37
|
expandable,
|
|
41
38
|
};
|
|
42
|
-
|
|
43
|
-
|
|
39
|
+
const card = showDescription ? ((0, jsx_runtime_1.jsx)(uikit_product_card_predefined_1.CardServiceInfo, { ...commonProps, description: service.description ?? '', actionsSize: isMobile ? 's' : 'm' })) : ((0, jsx_runtime_1.jsx)(uikit_product_card_predefined_1.CardServiceLight, { ...commonProps, tooltip: !dragPreview && service.description
|
|
40
|
+
? {
|
|
41
|
+
tip: service.description,
|
|
42
|
+
}
|
|
43
|
+
: undefined }));
|
|
44
44
|
return dragPreview ? (0, jsx_runtime_1.jsx)(drag_and_drop_1.DragPreview, { className: styles_module_scss_1.default.dragCardPreview, children: card }) : card;
|
|
45
45
|
}
|
|
46
|
-
|
|
47
|
-
function DraggableServiceCardBase({ groupId, service, isFavorite, ...props }) {
|
|
46
|
+
function DraggableServiceCard({ groupId, service, favorite, dragDisabled, ...props }) {
|
|
48
47
|
const isFavoriteEnabled = service.favoritesEnabled ?? true;
|
|
49
|
-
const disabled = service.disabled ||
|
|
48
|
+
const disabled = dragDisabled || service.disabled || favorite?.value.includes(service.id) || !isFavoriteEnabled;
|
|
50
49
|
const { attributes, listeners, setNodeRef, isDragging } = (0, core_1.useDraggable)({
|
|
51
50
|
id: (0, utils_1.getServiceSourceDragId)(groupId, service.id),
|
|
52
51
|
disabled,
|
|
53
52
|
});
|
|
54
53
|
const { tabIndex, ...restAttributes } = attributes ?? {};
|
|
55
|
-
return ((0, jsx_runtime_1.jsx)(drag_and_drop_1.DragGhost, { innerRef: setNodeRef, className: styles_module_scss_1.default.draggableCard, dragging: isDragging, mode: drag_and_drop_1.DRAG_MODE.Static, ...listeners, ...restAttributes, children: (0, jsx_runtime_1.jsx)(
|
|
56
|
-
}
|
|
57
|
-
exports.DraggableServiceCard = (0, react_1.memo)(DraggableServiceCardBase);
|
|
58
|
-
function GridServiceCardBase({ dragEnabled, groupId, ...props }) {
|
|
59
|
-
if (dragEnabled) {
|
|
60
|
-
return (0, jsx_runtime_1.jsx)(exports.DraggableServiceCard, { groupId: groupId, ...props });
|
|
61
|
-
}
|
|
62
|
-
return ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.staticCard, children: (0, jsx_runtime_1.jsx)(exports.ServiceCard, { ...props }) }));
|
|
54
|
+
return ((0, jsx_runtime_1.jsx)(drag_and_drop_1.DragGhost, { innerRef: setNodeRef, className: styles_module_scss_1.default.draggableCard, dragging: isDragging, mode: drag_and_drop_1.DRAG_MODE.Static, ...listeners, ...restAttributes, children: (0, jsx_runtime_1.jsx)(ServiceCard, { service: service, favorite: favorite, ...props, tabIndex: tabIndex }) }));
|
|
63
55
|
}
|
|
64
|
-
exports.GridServiceCard = (0, react_1.memo)(GridServiceCardBase);
|
|
@@ -7,12 +7,7 @@
|
|
|
7
7
|
border-radius:var(--sn-density-radius-3xs, var(--sn-platform-comfort-radius-3xs, var(--sn-primitive-dimension-2, 2px)));
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
.draggableCard
|
|
11
|
-
.staticCard{
|
|
10
|
+
.draggableCard{
|
|
12
11
|
display:flex;
|
|
13
12
|
min-width:0;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
.staticCard{
|
|
17
|
-
position:relative;
|
|
18
13
|
}
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import { DragCancelEvent, DragEndEvent, DragStartEvent, Modifier } from '@dnd-kit/core';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
|
-
import { FavoriteProps,
|
|
3
|
+
import { FavoriteProps, LinksGroup } from '../types';
|
|
4
4
|
type MainMenuDndOverlayContextValue = {
|
|
5
5
|
setGroupDragOverlay(overlay: ReactNode): void;
|
|
6
6
|
};
|
|
7
7
|
export declare function useMainMenuDndOverlay(): MainMenuDndOverlayContextValue;
|
|
8
8
|
type UseMainMenuDndProps = {
|
|
9
|
-
/** Избранное. Без пропа DnD карточек в избранное отключён. */
|
|
10
9
|
favorite?: FavoriteProps;
|
|
11
|
-
/** Все
|
|
12
|
-
|
|
13
|
-
/** Показывать описания сервисов в превью карточки при перетаскивании. */
|
|
10
|
+
/** Все группы карточек из сегментов (для резолва сервисов при DnD в избранное). */
|
|
11
|
+
groups: LinksGroup[];
|
|
14
12
|
showDescription: boolean;
|
|
15
13
|
};
|
|
16
|
-
export declare function useMainMenuDnd({ favorite,
|
|
14
|
+
export declare function useMainMenuDnd({ favorite, groups, showDescription }: UseMainMenuDndProps): {
|
|
17
15
|
sensors: import("@dnd-kit/core").SensorDescriptor<import("@dnd-kit/core").SensorOptions>[];
|
|
18
16
|
modifiers: Modifier[];
|
|
19
17
|
collisionDetection: import("@dnd-kit/core").CollisionDetection;
|
|
@@ -18,7 +18,6 @@ const restrictGroupDragToVerticalAxis = args => {
|
|
|
18
18
|
}
|
|
19
19
|
return (0, modifiers_1.restrictToVerticalAxis)(args);
|
|
20
20
|
};
|
|
21
|
-
const MODIFIERS = [restrictGroupDragToVerticalAxis];
|
|
22
21
|
const MainMenuDndOverlayContext = (0, react_1.createContext)(null);
|
|
23
22
|
function useMainMenuDndOverlay() {
|
|
24
23
|
const context = (0, react_1.useContext)(MainMenuDndOverlayContext);
|
|
@@ -26,9 +25,10 @@ function useMainMenuDndOverlay() {
|
|
|
26
25
|
setGroupDragOverlay: () => { },
|
|
27
26
|
});
|
|
28
27
|
}
|
|
29
|
-
function useMainMenuDnd({ favorite,
|
|
28
|
+
function useMainMenuDnd({ favorite, groups, showDescription }) {
|
|
30
29
|
const [activeServiceId, setActiveServiceId] = (0, react_1.useState)(null);
|
|
31
30
|
const [groupDragOverlay, setGroupDragOverlay] = (0, react_1.useState)(null);
|
|
31
|
+
const servicesById = (0, react_1.useMemo)(() => new Map((0, utils_1.flatLinksGroups)(groups).map(service => [service.id, service])), [groups]);
|
|
32
32
|
const activeService = activeServiceId ? servicesById.get(activeServiceId) : undefined;
|
|
33
33
|
const sensors = (0, core_1.useSensors)((0, core_1.useSensor)(core_1.PointerSensor, { activationConstraint: { distance: 8 } }), (0, core_1.useSensor)(core_1.KeyboardSensor, { coordinateGetter: sortable_1.sortableKeyboardCoordinates }));
|
|
34
34
|
const handleDragStart = (0, react_1.useCallback)(({ active }) => {
|
|
@@ -76,7 +76,7 @@ function useMainMenuDnd({ favorite, servicesById, showDescription }) {
|
|
|
76
76
|
}), []);
|
|
77
77
|
return {
|
|
78
78
|
sensors,
|
|
79
|
-
modifiers:
|
|
79
|
+
modifiers: [restrictGroupDragToVerticalAxis],
|
|
80
80
|
collisionDetection: utils_1.favoriteListCollisionDetection,
|
|
81
81
|
onDragStart: handleDragStart,
|
|
82
82
|
onDragEnd: handleDragEnd,
|
|
@@ -94,5 +94,7 @@ function MainMenuDndContext({ children, sensors, modifiers, collisionDetection,
|
|
|
94
94
|
// (панель начинается не с 0), оверлей визуально уезжает ровно на эту величину. Портал
|
|
95
95
|
// в тот же корень, что использует сам Drawer, выносит оверлей из-под этого предка.
|
|
96
96
|
const dragOverlayNode = (0, jsx_runtime_1.jsx)(core_1.DragOverlay, { dropAnimation: null, children: dragOverlay });
|
|
97
|
-
return ((0, jsx_runtime_1.jsx)(MainMenuDndOverlayContext.Provider, { value: overlayContextValue ?? null, children: (0, jsx_runtime_1.jsxs)(core_1.DndContext, { sensors: sensors, collisionDetection: collisionDetection, onDragStart: onDragStart, onDragEnd: onDragEnd, onDragCancel: onDragCancel, modifiers: modifiers,
|
|
97
|
+
return ((0, jsx_runtime_1.jsx)(MainMenuDndOverlayContext.Provider, { value: overlayContextValue ?? null, children: (0, jsx_runtime_1.jsxs)(core_1.DndContext, { sensors: sensors, collisionDetection: collisionDetection, onDragStart: onDragStart, onDragEnd: onDragEnd, onDragCancel: onDragCancel, modifiers: modifiers, measuring: {
|
|
98
|
+
droppable: { strategy: core_1.MeasuringStrategy.Always },
|
|
99
|
+
}, children: [children, portalContextRef.current ? (0, react_dom_1.createPortal)(dragOverlayNode, portalContextRef.current) : dragOverlayNode] }) }));
|
|
98
100
|
}
|
|
@@ -12,25 +12,20 @@ function useMenuItems({ search, segments, platformGroups = [] }) {
|
|
|
12
12
|
const scrollRef = (0, react_1.useRef)(null);
|
|
13
13
|
const regularSegments = (0, react_1.useMemo)(() => segments?.filter(segment => !segment.pinBottomOnSearch) ?? [], [segments]);
|
|
14
14
|
const pinnedSegments = (0, react_1.useMemo)(() => segments?.filter(segment => segment.pinBottomOnSearch) ?? [], [segments]);
|
|
15
|
-
const isSearching = Boolean(searchValue);
|
|
16
|
-
// Индексы строятся при первом вводе и живут, пока поиск активен и каталог не сменился: индексация
|
|
17
|
-
// не зависит от строки поиска, поэтому пересоздавать `Fuse` на каждый символ не нужно. Пока поиска
|
|
18
|
-
// нет, индексы не строятся — открытие меню их не оплачивает.
|
|
19
|
-
const regularSearchers = (0, react_1.useMemo)(() => isSearching ? regularSegments.map(segment => (0, utils_1.createLinksGroupsSearcher)(getVisibleGroups(segment.items))) : [], [isSearching, regularSegments]);
|
|
20
|
-
const pinnedSearchers = (0, react_1.useMemo)(() => isSearching ? pinnedSegments.map(segment => (0, utils_1.createLinksGroupsSearcher)(getVisibleGroups(segment.items))) : [], [isSearching, pinnedSegments]);
|
|
21
|
-
const platformSearcher = (0, react_1.useMemo)(() => (isSearching && platformGroups.length > 0 ? (0, utils_1.createLinksGroupsSearcher)(platformGroups) : undefined), [isSearching, platformGroups]);
|
|
22
15
|
const regularGroups = (0, react_1.useMemo)(() => regularSegments.flatMap(segment => getVisibleGroups(segment.items)), [regularSegments]);
|
|
23
|
-
const
|
|
16
|
+
const pinnedGroups = (0, react_1.useMemo)(() => pinnedSegments.flatMap(segment => getVisibleGroups(segment.items)), [pinnedSegments]);
|
|
24
17
|
const resultItems = (0, react_1.useMemo)(() => {
|
|
25
18
|
if (!searchValue) {
|
|
26
19
|
return regularGroups;
|
|
27
20
|
}
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
const
|
|
21
|
+
const searchIn = (groups) => (0, utils_1.filterLinksGroupsFuzzy)(searchValue, groups);
|
|
22
|
+
const regularResults = regularSegments.flatMap(segment => searchIn(getVisibleGroups(segment.items)));
|
|
23
|
+
const platformResults = platformGroups.length > 0 ? searchIn(platformGroups) : [];
|
|
24
|
+
const pinnedResults = pinnedSegments.flatMap(segment => searchIn(getVisibleGroups(segment.items)));
|
|
31
25
|
const combined = (0, utils_1.dedupeSearchGroups)([...regularResults, ...platformResults, ...pinnedResults]);
|
|
26
|
+
const pinnedGroupIds = pinnedGroups.map(({ id }) => id);
|
|
32
27
|
return pinnedGroupIds.length > 0 ? (0, utils_1.pinGroupToBottom)(combined, pinnedGroupIds) : combined;
|
|
33
|
-
}, [searchValue,
|
|
28
|
+
}, [searchValue, regularSegments, regularGroups, platformGroups, pinnedSegments, pinnedGroups]);
|
|
34
29
|
(0, react_1.useEffect)(() => {
|
|
35
30
|
if (searchValue && !resultItems.length) {
|
|
36
31
|
onSearchNoResult?.(searchValue);
|
|
@@ -30,15 +30,10 @@ export type InnerLink = {
|
|
|
30
30
|
label: string;
|
|
31
31
|
/** Краткое описание сервиса — отображается при включённом переключателе «Описание». */
|
|
32
32
|
description?: string;
|
|
33
|
-
/** Колбэк клика по карточке. */
|
|
34
33
|
onClick(e?: MouseEvent<HTMLElement>): void;
|
|
35
|
-
/** Ссылка карточки (рендерится как `<a>`). */
|
|
36
34
|
href?: string;
|
|
37
|
-
/** Карточка недоступна для клика/drag и визуально приглушена. */
|
|
38
35
|
disabled?: boolean;
|
|
39
|
-
/** Карточка скрыта (не рендерится, но остаётся в данных — например, для поиска). */
|
|
40
36
|
hidden?: boolean;
|
|
41
|
-
/** Промо-тег карточки. */
|
|
42
37
|
badge?: CardServiceLightProps['promoTag'];
|
|
43
38
|
/** Разрешено ли добавление карточки в избранное. default=true - разрешено */
|
|
44
39
|
favoritesEnabled?: boolean;
|
|
@@ -67,17 +62,13 @@ export type InnerLink = {
|
|
|
67
62
|
aliases: string[];
|
|
68
63
|
};
|
|
69
64
|
type TitleStatic = {
|
|
70
|
-
/** Текст заголовка. */
|
|
71
65
|
text: string;
|
|
72
66
|
onClick?: never;
|
|
73
67
|
href?: never;
|
|
74
68
|
};
|
|
75
69
|
type TitleClickable = {
|
|
76
|
-
/** Текст заголовка. */
|
|
77
70
|
text: string;
|
|
78
|
-
/** Ссылка заголовка (рендерится как `<a>`). */
|
|
79
71
|
href?: string;
|
|
80
|
-
/** Колбэк клика по заголовку. */
|
|
81
72
|
onClick?(e?: MouseEvent<HTMLElement>): void;
|
|
82
73
|
};
|
|
83
74
|
export type LinksGroupTitle = TitleStatic | TitleClickable;
|
|
@@ -93,7 +84,6 @@ export type LinksGroup = {
|
|
|
93
84
|
id: string;
|
|
94
85
|
/** Заголовок группы в сетке карточек и в боковой навигации. */
|
|
95
86
|
label: LinksGroupTitle;
|
|
96
|
-
/** Иконка группы. */
|
|
97
87
|
icon?: JSXElementConstructor<{
|
|
98
88
|
size?: number;
|
|
99
89
|
className?: string;
|
|
@@ -102,9 +92,7 @@ export type LinksGroup = {
|
|
|
102
92
|
* Синонимы заголовка группы для fuzzy-поиска.
|
|
103
93
|
*/
|
|
104
94
|
aliases?: string[];
|
|
105
|
-
/** Колбэк клика по заголовку группы. */
|
|
106
95
|
onClick?(e?: MouseEvent<HTMLElement>): void;
|
|
107
|
-
/** Группа скрыта (не рендерится, но остаётся в данных — например, для поиска). */
|
|
108
96
|
hidden?: boolean;
|
|
109
97
|
/**
|
|
110
98
|
* Разрешено ли добавление карточек группы в избранное.
|
|
@@ -116,7 +104,7 @@ export type LinksGroup = {
|
|
|
116
104
|
items: InnerLink[];
|
|
117
105
|
/** Цвет блока группы. */
|
|
118
106
|
blockColor?: LinksGroupBlockColor;
|
|
119
|
-
/** Визуальное выделение
|
|
107
|
+
/** Визуальное выделение группы */
|
|
120
108
|
highlight?: boolean;
|
|
121
109
|
};
|
|
122
110
|
/**
|
|
@@ -160,11 +148,8 @@ export type MainMenuSegmentPrefs = {
|
|
|
160
148
|
expanded?: string[];
|
|
161
149
|
};
|
|
162
150
|
export type SearchProps = Pick<SearchPropsSnack, 'onBlur' | 'onFocus'> & {
|
|
163
|
-
/** Текущее значение поисковой строки. */
|
|
164
151
|
value: string;
|
|
165
|
-
/** Колбэк изменения значения поисковой строки. */
|
|
166
152
|
onChange(value: string): void;
|
|
167
|
-
/** Колбэк вызывается, когда поиск по текущему значению не дал результатов. */
|
|
168
153
|
onSearchNoResult?(value: string): void;
|
|
169
154
|
};
|
|
170
155
|
export type FavoriteProps = {
|
|
@@ -208,9 +193,7 @@ export type FavoriteProps = {
|
|
|
208
193
|
loading?: boolean;
|
|
209
194
|
};
|
|
210
195
|
export type MainMenuToggleProps = {
|
|
211
|
-
/** Текущее значение переключателя. */
|
|
212
196
|
value: boolean;
|
|
213
|
-
/** Колбэк изменения значения переключателя. */
|
|
214
197
|
onChange(value: boolean): void;
|
|
215
198
|
};
|
|
216
199
|
/**
|
|
@@ -237,25 +220,14 @@ export type MainMenuPreferencesProps = {
|
|
|
237
220
|
showGroupsColors?: MainMenuToggleProps;
|
|
238
221
|
};
|
|
239
222
|
export type MainMenuSettingsItem = Pick<InnerLink, 'id' | 'label' | 'icon' | 'onClick' | 'href' | 'hidden'> & {
|
|
240
|
-
/** Разделитель до/после пункта. */
|
|
241
223
|
divider?: 'before' | 'after';
|
|
242
224
|
};
|
|
243
225
|
export type MainMenuProps = Pick<ContentProps, 'segments' | 'searchGroups' | 'segmentPrefs' | 'activeSegmentId' | 'onActiveSegmentChange' | 'onSegmentOrderChange' | 'onSegmentExpandedChange' | 'onSegmentServiceClick' | 'favorite' | 'preferences' | 'loading' | 'rightTop'> & {
|
|
244
|
-
/** Кнопка открытия меню недоступна для клика. */
|
|
245
226
|
disabled?: boolean;
|
|
246
|
-
/**
|
|
247
|
-
* Открыто ли меню.
|
|
248
|
-
*
|
|
249
|
-
* Не передано — состояние открытия неуправляемое (меню само переключает себя по клику на кнопку).
|
|
250
|
-
*/
|
|
251
227
|
open?: boolean;
|
|
252
|
-
/** Колбэк открытия/закрытия меню. */
|
|
253
228
|
setOpen?(open: boolean): void;
|
|
254
|
-
/** Логотип в шапке меню. */
|
|
255
229
|
logo?: ReactNode;
|
|
256
|
-
/** Слот над поиском в левой колонке (desktop) / над поиском в списке (mobile). */
|
|
257
230
|
leftTop?: ReactNode;
|
|
258
|
-
/** Слот под пунктами настроек в левой колонке (desktop) / в конце списка (mobile). */
|
|
259
231
|
leftBottom?: ReactNode;
|
|
260
232
|
/**
|
|
261
233
|
* Пункты левой колонки (desktop) / нижней части списка (mobile).
|
|
@@ -273,9 +245,7 @@ export type MainMenuProps = Pick<ContentProps, 'segments' | 'searchGroups' | 'se
|
|
|
273
245
|
* Обычно `favoritesEnabled: false`; карточки могут быть без `icon` (Avatar по `label`).
|
|
274
246
|
*/
|
|
275
247
|
platformGroups?: LinksGroup[];
|
|
276
|
-
/** Избранное. Без пропа секция «Избранное» не отображается. */
|
|
277
248
|
favorite?: FavoriteProps;
|
|
278
|
-
/** Поиск по сервисам. Без пропа поисковая строка не отображается. */
|
|
279
249
|
search?: SearchProps;
|
|
280
250
|
/**
|
|
281
251
|
* Ширина дровера, с которой открывается меню (desktop only)
|
|
@@ -1,7 +1,2 @@
|
|
|
1
1
|
import { LinksGroup } from '../types';
|
|
2
|
-
/**
|
|
3
|
-
* Строит поисковый индекс по группам один раз. Индексация каталога не зависит от строки поиска,
|
|
4
|
-
* поэтому вызывать `search` на каждый ввод дешевле, чем пересоздавать `Fuse` на каждый символ.
|
|
5
|
-
*/
|
|
6
|
-
export declare function createLinksGroupsSearcher(links: LinksGroup[]): (searchValue: string) => LinksGroup[];
|
|
7
2
|
export declare function filterLinksGroupsFuzzy(searchValue: string, links: LinksGroup[]): LinksGroup[];
|
|
@@ -3,7 +3,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.createLinksGroupsSearcher = createLinksGroupsSearcher;
|
|
7
6
|
exports.filterLinksGroupsFuzzy = filterLinksGroupsFuzzy;
|
|
8
7
|
const fuse_js_1 = __importDefault(require("fuse.js"));
|
|
9
8
|
const constants_1 = require("../constants");
|
|
@@ -61,10 +60,16 @@ function isGroupLabelMatch(matchKey) {
|
|
|
61
60
|
matchKey === constants_1.SEARCH_GROUPS_ACCESSOR.GroupId ||
|
|
62
61
|
matchKey === constants_1.SEARCH_GROUPS_ACCESSOR.GroupAliases);
|
|
63
62
|
}
|
|
64
|
-
function
|
|
63
|
+
function filterLinksGroupsFuzzy(searchValue, links) {
|
|
65
64
|
if (!searchValue) {
|
|
66
65
|
return links;
|
|
67
66
|
}
|
|
67
|
+
const itemsMap = createItemsMap(links);
|
|
68
|
+
const linksFuse = new fuse_js_1.default(links, {
|
|
69
|
+
keys: Object.values(constants_1.SEARCH_GROUPS_ACCESSOR),
|
|
70
|
+
includeMatches: true,
|
|
71
|
+
threshold: constants_1.FUZZY_SEARCH_THRESHOLD,
|
|
72
|
+
});
|
|
68
73
|
let fuseSearchResults = linksFuse.search(searchValue);
|
|
69
74
|
if (fuseSearchResults.length < 1) {
|
|
70
75
|
const fixedLayoutValue = (0, search_1.toggleLayout)(searchValue);
|
|
@@ -156,22 +161,3 @@ function searchLinksGroups(searchValue, links, itemsMap, linksFuse) {
|
|
|
156
161
|
return accResult;
|
|
157
162
|
}, []);
|
|
158
163
|
}
|
|
159
|
-
/**
|
|
160
|
-
* Строит поисковый индекс по группам один раз. Индексация каталога не зависит от строки поиска,
|
|
161
|
-
* поэтому вызывать `search` на каждый ввод дешевле, чем пересоздавать `Fuse` на каждый символ.
|
|
162
|
-
*/
|
|
163
|
-
function createLinksGroupsSearcher(links) {
|
|
164
|
-
const itemsMap = createItemsMap(links);
|
|
165
|
-
const linksFuse = new fuse_js_1.default(links, {
|
|
166
|
-
keys: Object.values(constants_1.SEARCH_GROUPS_ACCESSOR),
|
|
167
|
-
includeMatches: true,
|
|
168
|
-
threshold: constants_1.FUZZY_SEARCH_THRESHOLD,
|
|
169
|
-
});
|
|
170
|
-
return (searchValue) => searchLinksGroups(searchValue, links, itemsMap, linksFuse);
|
|
171
|
-
}
|
|
172
|
-
function filterLinksGroupsFuzzy(searchValue, links) {
|
|
173
|
-
if (!searchValue) {
|
|
174
|
-
return links;
|
|
175
|
-
}
|
|
176
|
-
return createLinksGroupsSearcher(links)(searchValue);
|
|
177
|
-
}
|
|
@@ -1,4 +1,2 @@
|
|
|
1
1
|
import { InnerLink, LinksGroup } from '../types';
|
|
2
2
|
export declare function flatLinksGroups(groups?: LinksGroup[]): InnerLink[];
|
|
3
|
-
/** Все видимые сервисы каталога по id (включая вложенные). Строится один раз на набор групп. */
|
|
4
|
-
export declare function buildServicesById(groups?: LinksGroup[]): Map<string, InnerLink>;
|
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.flatLinksGroups = flatLinksGroups;
|
|
4
|
-
exports.buildServicesById = buildServicesById;
|
|
5
4
|
const innerLink_1 = require("./innerLink");
|
|
6
5
|
function flatLinksGroups(groups = []) {
|
|
7
6
|
return groups.flatMap(({ items }) => (0, innerLink_1.flatInnerLinks)(items));
|
|
8
7
|
}
|
|
9
|
-
/** Все видимые сервисы каталога по id (включая вложенные). Строится один раз на набор групп. */
|
|
10
|
-
function buildServicesById(groups = []) {
|
|
11
|
-
return new Map(flatLinksGroups(groups).map(service => [service.id, service]));
|
|
12
|
-
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { InnerLink } from '../types';
|
|
2
|
-
export declare function resolveInnerLinksByIds(ids: string[],
|
|
1
|
+
import { InnerLink, LinksGroup } from '../types';
|
|
2
|
+
export declare function resolveInnerLinksByIds(ids: string[], groups: LinksGroup[]): InnerLink[];
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resolveInnerLinksByIds = resolveInnerLinksByIds;
|
|
4
|
-
|
|
4
|
+
const flatLinksGroups_1 = require("./flatLinksGroups");
|
|
5
|
+
function resolveInnerLinksByIds(ids, groups) {
|
|
5
6
|
if (!ids.length) {
|
|
6
7
|
return [];
|
|
7
8
|
}
|
|
8
|
-
|
|
9
|
+
const itemsById = new Map((0, flatLinksGroups_1.flatLinksGroups)(groups).map(item => [item.id, item]));
|
|
10
|
+
return ids.map(id => itemsById.get(id)).filter((item) => Boolean(item));
|
|
9
11
|
}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { BreadcrumbsProps } from '@cloud-ru/ds-breadcrumbs';
|
|
2
2
|
type PathBreadcrumbsProps = {
|
|
3
|
-
/** Пункты хлебных крошек. */
|
|
4
3
|
items: BreadcrumbsProps['items'];
|
|
5
|
-
/** Мобильная раскладка — уменьшенный размер. */
|
|
6
4
|
isMobile?: boolean;
|
|
7
5
|
};
|
|
8
6
|
export declare function PathBreadcrumbs({ isMobile, items }: PathBreadcrumbsProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,27 +1,14 @@
|
|
|
1
1
|
import { BaseItemProps, DroplistProps } from '@cloud-ru/ds-list';
|
|
2
2
|
import { ThemeProps, UserProfileProps } from './types';
|
|
3
3
|
export type UserMenuProps = {
|
|
4
|
-
/** Профиль пользователя (имя, email, счётчик приглашений). */
|
|
5
4
|
profile?: UserProfileProps;
|
|
6
|
-
/** Переключатель темы в меню. Без пропа не отображается. */
|
|
7
5
|
theme?: ThemeProps;
|
|
8
|
-
/** Дополнительные пункты меню (например, список организаций). */
|
|
9
6
|
items?: DroplistProps['items'];
|
|
10
|
-
/** Пункты настроек в нижней части меню. */
|
|
11
7
|
settingItems?: BaseItemProps[];
|
|
12
|
-
/** Колбэк клика по пункту «Выйти». */
|
|
13
8
|
onLogout?(): void;
|
|
14
|
-
/**
|
|
15
|
-
* Открыто ли меню.
|
|
16
|
-
*
|
|
17
|
-
* Не передано — состояние открытия неуправляемое (меню само переключает себя по клику на кнопку).
|
|
18
|
-
*/
|
|
19
9
|
open?: boolean;
|
|
20
|
-
/** Колбэк открытия/закрытия меню. */
|
|
21
10
|
setOpen?(open: boolean): void;
|
|
22
|
-
/** Текст подсказки для кнопки-триггера. */
|
|
23
11
|
triggerTooltip?: string;
|
|
24
|
-
/** Колбэк клика по кнопке-триггеру. */
|
|
25
12
|
onClick?(): void;
|
|
26
13
|
};
|
|
27
14
|
export declare function UserMenu({ profile, open: openProp, setOpen: setOpenProp, onLogout, items, settingItems, theme, onClick, triggerTooltip, }: UserMenuProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
import { MouseEvent, ReactNode } from 'react';
|
|
2
2
|
export type UserProfileProps = {
|
|
3
|
-
/** Полное имя пользователя. Отображается в аватаре (первые буквы) и в пункте профиля меню. */
|
|
4
3
|
fullName?: string;
|
|
5
|
-
/** Email пользователя. */
|
|
6
4
|
email?: string;
|
|
7
|
-
/** Число активных приглашений — отображается счётчиком на кнопке-триггере меню. */
|
|
8
5
|
inviteCount?: number;
|
|
9
|
-
/** Колбэк клика по пункту профиля. */
|
|
10
6
|
onClick?(e: MouseEvent<HTMLElement>): void;
|
|
11
|
-
/** Оборачивает содержимое пункта профиля — например, ссылкой или дополнительной разметкой. */
|
|
12
7
|
itemWrapRender?(node: ReactNode): ReactNode;
|
|
13
8
|
};
|
|
14
9
|
type ValueOf<T> = T[keyof T];
|
|
@@ -19,9 +14,7 @@ export declare const THEME_MODE: {
|
|
|
19
14
|
};
|
|
20
15
|
export type ThemeMode = ValueOf<typeof THEME_MODE>;
|
|
21
16
|
export type ThemeProps = {
|
|
22
|
-
/** Текущий режим темы. Без пропа переключатель темы в меню не отображается. */
|
|
23
17
|
value?: ThemeMode;
|
|
24
|
-
/** Колбэк изменения режима темы. */
|
|
25
18
|
onChange?(themeMode: ThemeMode): void;
|
|
26
19
|
};
|
|
27
20
|
export {};
|