Skip to content

Commit 4eaaed5

Browse files
authored
[SideNav] Fallbacks icons to deepLink.icon (#232899)
1 parent 59cc861 commit 4eaaed5

File tree

3 files changed

+44
-23
lines changed

3 files changed

+44
-23
lines changed

src/core/packages/chrome/browser-internal/src/ui/project/sidenav_v2/navigation/__snapshots__/to_navigation_items.test.tsx.snap

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/core/packages/chrome/browser-internal/src/ui/project/sidenav_v2/navigation/to_navigation_items.test.tsx

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ describe('toNavigationItems', () => {
3333
expect(logoItem).toMatchInlineSnapshot(`
3434
Object {
3535
"href": "/missing-href-😭",
36-
"iconType": "logoKibana",
36+
"iconType": "broom",
3737
"id": "kibana",
3838
"label": "Kibana",
3939
}
@@ -58,29 +58,29 @@ describe('toNavigationItems', () => {
5858
=== Navigation Warnings ===
5959
• No \\"home\\" node found in primary nodes. There should be a logo node with solution logo, name and home page href. renderAs: \\"home\\" is expected.
6060
• Navigation item is missing. Using fallback value: \\"/missing-href-😭\\".
61-
Navigation item is missing. Using fallback value: \\"logoKibana\\".
61+
No icon found for node \\"undefined\\". Expected iconV2, icon, deepLink.euiIconType, deepLink.icon or a known deep link id. Using fallback icon \\"broom\\".
6262
• Navigation item is missing. Using fallback value: \\"kibana\\".
6363
• Navigation item is missing. Using fallback value: \\"Kibana\\".
6464
• Navigation node \\"node-2\\" is missing href and is not a panel opener. This node was likely used as a sub-section. Ignoring this node and flattening its children: securityGroup:rules, alerts, attack_discovery, cloud_security_posture-findings, cases.
65-
Navigation item \\"securityGroup:rules\\" is missing all of \\"iconV2, icon\\". Using fallback value: \\"broom\\".
66-
Navigation item \\"alerts\\" is missing all of \\"iconV2, icon\\". Using fallback value: \\"broom\\".
67-
Navigation item \\"attack_discovery\\" is missing all of \\"iconV2, icon\\". Using fallback value: \\"broom\\".
68-
Navigation item \\"cloud_security_posture-findings\\" is missing all of \\"iconV2, icon\\". Using fallback value: \\"broom\\".
69-
Navigation item \\"cases\\" is missing all of \\"iconV2, icon\\". Using fallback value: \\"broom\\".
65+
No icon found for node \\"securityGroup:rules\\". Expected iconV2, icon, deepLink.euiIconType, deepLink.icon or a known deep link id. Using fallback icon \\"broom\\".
66+
No icon found for node \\"alerts\\". Expected iconV2, icon, deepLink.euiIconType, deepLink.icon or a known deep link id. Using fallback icon \\"broom\\".
67+
No icon found for node \\"attack_discovery\\". Expected iconV2, icon, deepLink.euiIconType, deepLink.icon or a known deep link id. Using fallback icon \\"broom\\".
68+
No icon found for node \\"cloud_security_posture-findings\\". Expected iconV2, icon, deepLink.euiIconType, deepLink.icon or a known deep link id. Using fallback icon \\"broom\\".
69+
No icon found for node \\"cases\\". Expected iconV2, icon, deepLink.euiIconType, deepLink.icon or a known deep link id. Using fallback icon \\"broom\\".
7070
• Navigation node \\"node-3\\" is missing href and is not a panel opener. This node was likely used as a sub-section. Ignoring this node and flattening its children: securityGroup:entityAnalytics, securityGroup:explore, securityGroup:investigations, threat_intelligence.
7171
• Panel opener node \\"securityGroup:entityAnalytics\\" has no children. Ignoring it.
7272
• Panel opener node \\"securityGroup:explore\\" should contain panel sections, not direct links. Flattening links \\"hosts, network, users\\" into secondary items and creating a placeholder section for these links.
73-
Navigation item \\"securityGroup:explore\\" is missing all of \\"iconV2, icon\\". Using fallback value: \\"broom\\".
73+
No icon found for node \\"securityGroup:explore\\". Expected iconV2, icon, deepLink.euiIconType, deepLink.icon or a known deep link id. Using fallback icon \\"broom\\".
7474
• Panel opener node \\"securityGroup:investigations\\" should contain panel sections, not direct links. Flattening links \\"timelines, notes, osquery\\" into secondary items and creating a placeholder section for these links.
75-
Navigation item \\"securityGroup:investigations\\" is missing all of \\"iconV2, icon\\". Using fallback value: \\"broom\\".
76-
Navigation item \\"threat_intelligence\\" is missing all of \\"iconV2, icon\\". Using fallback value: \\"broom\\".
75+
No icon found for node \\"securityGroup:investigations\\". Expected iconV2, icon, deepLink.euiIconType, deepLink.icon or a known deep link id. Using fallback icon \\"broom\\".
76+
No icon found for node \\"threat_intelligence\\". Expected iconV2, icon, deepLink.euiIconType, deepLink.icon or a known deep link id. Using fallback icon \\"broom\\".
7777
• Navigation node \\"node-4\\" is missing href and is not a panel opener. This node was likely used as a sub-section. Ignoring this node and flattening its children: securityGroup:assets.
7878
• Secondary menu item node \\"fleet\\" has a href \\"/tzo/s/sec/app/fleet\\", but it should not. We're using it as a section title that doesn't have a link.
7979
• Navigation item \\"node-0\\" is missing a \\"title\\". Using fallback value: \\"Missing Title 😭\\".
8080
• Navigation item \\"node-0\\" is missing a \\"href\\". Using fallback value: \\"Missing Href 😭\\".
81-
Navigation item \\"securityGroup:assets\\" is missing all of \\"iconV2, icon\\". Using fallback value: \\"broom\\".
82-
Navigation item \\"securityGroup:machineLearning\\" is missing all of \\"iconV2, icon\\". Using fallback value: \\"broom\\".
83-
Navigation item \\"stack_management\\" is missing all of \\"iconV2, icon\\". Using fallback value: \\"broom\\".
81+
No icon found for node \\"securityGroup:assets\\". Expected iconV2, icon, deepLink.euiIconType, deepLink.icon or a known deep link id. Using fallback icon \\"broom\\".
82+
No icon found for node \\"securityGroup:machineLearning\\". Expected iconV2, icon, deepLink.euiIconType, deepLink.icon or a known deep link id. Using fallback icon \\"broom\\".
83+
No icon found for node \\"stack_management\\". Expected iconV2, icon, deepLink.euiIconType, deepLink.icon or a known deep link id. Using fallback icon \\"broom\\".
8484
• Accordion items are not supported in the new navigation. Flattening them \\"stack_management, monitoring, integrations\\" and dropping accordion node \\"node-2\\"."
8585
`);
8686
});

src/core/packages/chrome/browser-internal/src/ui/project/sidenav_v2/navigation/to_navigation_items.tsx

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ export const toNavigationItems = (
111111

112112
const logoItem: SideNavLogo = {
113113
href: warnIfMissing(logoNode, 'href', '/missing-href-😭'),
114-
iconType: warnIfMissing(logoNode, ['iconV2', 'icon'], 'logoKibana') as string,
114+
iconType: getIcon(logoNode),
115115
id: warnIfMissing(logoNode, 'id', 'kibana'),
116116
label: warnIfMissing(logoNode, 'title', 'Kibana'),
117117
};
@@ -277,14 +277,7 @@ export const toNavigationItems = (
277277
return {
278278
id: navNode.id,
279279
label: warnIfMissing(navNode, 'title', 'Missing Title 😭'),
280-
iconType: warnIfMissing(
281-
{
282-
iconV2: AppDeepLinkIdToIcon[navNode.id],
283-
...navNode,
284-
},
285-
['iconV2', 'icon'],
286-
'broom'
287-
),
280+
iconType: getIcon(navNode),
288281
href: itemHref,
289282
sections: secondarySections,
290283
'data-test-subj': getTestSubj(navNode),
@@ -414,3 +407,31 @@ const getTestSubj = (navNode: ChromeProjectNavigationNode, isActive = false): st
414407
[`nav-item-isActive`]: isActive,
415408
});
416409
};
410+
411+
const getIcon = (node: ChromeProjectNavigationNode | null): string => {
412+
if (node?.iconV2) {
413+
return node.iconV2 as string;
414+
}
415+
416+
if (node?.icon) {
417+
return node.icon as string;
418+
}
419+
420+
if (node && AppDeepLinkIdToIcon[node.id]) {
421+
return AppDeepLinkIdToIcon[node.id];
422+
}
423+
424+
if (node?.deepLink?.euiIconType) {
425+
return node.deepLink.euiIconType;
426+
}
427+
428+
if (node?.deepLink?.icon) {
429+
return node.deepLink.icon;
430+
}
431+
432+
warnOnce(
433+
`No icon found for node "${node?.id}". Expected iconV2, icon, deepLink.euiIconType, deepLink.icon or a known deep link id. Using fallback icon "broom".`
434+
);
435+
436+
return 'broom';
437+
};

0 commit comments

Comments
 (0)