diff --git a/src/core/public/chrome/ui/header/collapsible_nav_group_enabled.test.tsx b/src/core/public/chrome/ui/header/collapsible_nav_group_enabled.test.tsx
index e0530b8a6289..25ce7cf41d80 100644
--- a/src/core/public/chrome/ui/header/collapsible_nav_group_enabled.test.tsx
+++ b/src/core/public/chrome/ui/header/collapsible_nav_group_enabled.test.tsx
@@ -287,4 +287,46 @@ describe('', () => {
);
expect(queryAllByTestId('collapsibleNavAppLink-link-in-all').length).toEqual(1);
});
+
+ it('should show links with custom category if the nav link is inside second level but no entry in all use case', async () => {
+ const props = mockProps({
+ currentNavGroupId: ALL_USE_CASE_ID,
+ navGroupsMap: {
+ [DEFAULT_NAV_GROUPS.essentials.id]: {
+ ...DEFAULT_NAV_GROUPS.essentials,
+ navLinks: [
+ {
+ id: 'link-in-essentials',
+ title: 'link-in-essentials',
+ },
+ {
+ id: 'link-in-all',
+ title: 'link-in-all',
+ },
+ ],
+ },
+ },
+ navLinks: [
+ {
+ id: 'link-in-essentials',
+ title: 'link-in-essentials',
+ baseUrl: '',
+ href: '',
+ },
+ {
+ id: 'link-in-all',
+ title: 'link-in-all',
+ baseUrl: '',
+ href: '',
+ },
+ ],
+ });
+ const { queryAllByTestId, getByText, getByTestId } = render(
+
+ );
+ // Should render custom category
+ expect(getByText('Custom')).toBeInTheDocument();
+ expect(getByTestId('collapsibleNavAppLink-link-in-essentials')).toBeInTheDocument();
+ expect(queryAllByTestId('collapsibleNavAppLink-link-in-all').length).toEqual(1);
+ });
});
diff --git a/src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx b/src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx
index 35668a1a727b..af67974ecb9d 100644
--- a/src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx
+++ b/src/core/public/chrome/ui/header/collapsible_nav_group_enabled.tsx
@@ -312,6 +312,22 @@ export function CollapsibleNavGroupEnabled({
order: Number.MAX_SAFE_INTEGER,
category: categoryInfo,
});
+ } else {
+ /**
+ * Find if there are any links inside a use case but without a `see all` entry.
+ * If so, append these features into custom category as a fallback
+ */
+ fulfillRegistrationLinksToChromeNavLinks(group.navLinks, navLinks)
+ // Filter out links that already exists in all use case
+ .filter(
+ (navLink) => !navLinksForAll.find((navLinkInAll) => navLinkInAll.id === navLink.id)
+ )
+ .forEach((navLink) => {
+ navLinksForAll.push({
+ ...navLink,
+ category: customCategory,
+ });
+ });
}
});