Skip to content

Commit

Permalink
feat: enable parent nav link id
Browse files Browse the repository at this point in the history
Signed-off-by: SuZhou-Joe <[email protected]>
  • Loading branch information
SuZhou-Joe committed Jul 1, 2024
1 parent ac790af commit 0b12a02
Showing 1 changed file with 31 additions and 37 deletions.
68 changes: 31 additions & 37 deletions src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import {
EuiFlexGroup,
EuiSideNavItemType,
EuiSideNav,
EuiText,
} from '@elastic/eui';
import { i18n } from '@osd/i18n';
import { sortBy } from 'lodash';
Expand All @@ -33,8 +32,9 @@ import type { Logos } from '../../../../common/types';
import { CollapsibleNavHeaderRender } from '../../chrome_service';
import { NavGroupItemInMap } from '../../nav_group';
import {
fullfillRegistrationLinksToChromeNavLinks,
fulfillRegistrationLinksToChromeNavLinks,
getOrderedLinksOrCategories,
LinkItem,
LinkItemType,
} from '../../utils';

Expand Down Expand Up @@ -85,28 +85,32 @@ function NavGroups({ navLinks, suffix, style, appId, navigateToApp, onClick }: N
};
};
const orderedLinksOrCategories = getOrderedLinksOrCategories(navLinks);
const sideNavItems = orderedLinksOrCategories
.map((navLink): EuiSideNavItemType<{}> | undefined => {
if (navLink.itemType === LinkItemType.LINK) {
return createNavItem({
link: navLink.link,
});
}
const createSideNavItem = (navLink: LinkItem): EuiSideNavItemType<{}> => {

Check warning on line 88 in src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx

View check run for this annotation

Codecov / codecov/patch

src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx#L87-L88

Added lines #L87 - L88 were not covered by tests
if (navLink.itemType === LinkItemType.LINK) {
return createNavItem({

Check warning on line 90 in src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx

View check run for this annotation

Codecov / codecov/patch

src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx#L90

Added line #L90 was not covered by tests
link: navLink.link,
});
}

if (navLink.itemType === LinkItemType.PARENT_LINK && navLink.link) {
return {

Check warning on line 96 in src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx

View check run for this annotation

Codecov / codecov/patch

src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx#L96

Added line #L96 was not covered by tests
...createNavItem({ link: navLink.link }),
items: navLink.links.map((subNavLink) => createSideNavItem(subNavLink)),

Check warning on line 98 in src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx

View check run for this annotation

Codecov / codecov/patch

src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx#L98

Added line #L98 was not covered by tests
};
}

if (navLink.itemType === LinkItemType.PARENT_LINK && navLink.link) {
return createNavItem({
link: navLink.link,
});
}
if (navLink.itemType === LinkItemType.CATEGORY) {
return {

Check warning on line 103 in src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx

View check run for this annotation

Codecov / codecov/patch

src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx#L103

Added line #L103 was not covered by tests
id: navLink.category?.id ?? '',
name: <div className="padding-horizontal">{navLink.category?.label ?? ''}</div>,
items: navLink.links?.map((link) => createSideNavItem(link)),

Check warning on line 106 in src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx

View check run for this annotation

Codecov / codecov/patch

src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx#L106

Added line #L106 was not covered by tests
};
}

if (navLink.itemType === LinkItemType.CATEGORY) {
return {
id: navLink.category?.id ?? '',
name: <div className="padding-horizontal">{navLink.category?.label ?? ''}</div>,
items: navLink.links?.map((link) => createNavItem({ link })),
};
}
})
return {} as EuiSideNavItemType<{}>;

Check warning on line 110 in src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx

View check run for this annotation

Codecov / codecov/patch

src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx#L110

Added line #L110 was not covered by tests
};
const sideNavItems = orderedLinksOrCategories
.map((navLink) => createSideNavItem(navLink))
.filter((item): item is EuiSideNavItemType<{}> => !!item);
return (

Check warning on line 115 in src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx

View check run for this annotation

Codecov / codecov/patch

src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx#L112-L115

Added lines #L112 - L115 were not covered by tests
<EuiFlexItem className="eui-yScroll" style={style}>
Expand Down Expand Up @@ -187,7 +191,7 @@ export function CollapsibleNavGroupEnabled({
</EuiFlexGroup>
</div>
<NavGroups
navLinks={fullfillRegistrationLinksToChromeNavLinks(
navLinks={fulfillRegistrationLinksToChromeNavLinks(
navGroupsMap[focusGroup.id]?.navLinks || [],
navLinks
)}
Expand Down Expand Up @@ -220,24 +224,14 @@ export function CollapsibleNavGroupEnabled({
e: React.MouseEvent<HTMLButtonElement, MouseEvent>,
group: ChromeNavGroup
) => {
const fullfilledLinks = fullfillRegistrationLinksToChromeNavLinks(
const fulfilledLinks = fulfillRegistrationLinksToChromeNavLinks(

Check warning on line 227 in src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx

View check run for this annotation

Codecov / codecov/patch

src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx#L227

Added line #L227 was not covered by tests
navGroupsMap[group.id]?.navLinks,
navLinks
);
const orderedLinksOrCategories = getOrderedLinksOrCategories(fullfilledLinks);
setFocusGroup(group);

Check warning on line 231 in src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx

View check run for this annotation

Codecov / codecov/patch

src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx#L231

Added line #L231 was not covered by tests
let firstLink: ChromeNavLink | null = null;
orderedLinksOrCategories.find((linkOrCategory) => {
if (linkOrCategory.itemType === LinkItemType.CATEGORY) {
if (linkOrCategory.links?.length) {
firstLink = linkOrCategory.links[0];
return true;
}
} else if (linkOrCategory.itemType === LinkItemType.LINK) {
firstLink = linkOrCategory.link;
return true;
}
});

// the `navGroupsMap[group.id]?.navLinks` has already been sorted
const firstLink = fulfilledLinks[0];

Check warning on line 234 in src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx

View check run for this annotation

Codecov / codecov/patch

src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx#L234

Added line #L234 was not covered by tests
if (firstLink) {
const propsForEui = createEuiListItem({

Check warning on line 236 in src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx

View check run for this annotation

Codecov / codecov/patch

src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx#L236

Added line #L236 was not covered by tests
link: firstLink,
Expand Down

0 comments on commit 0b12a02

Please sign in to comment.