, 'c
{props.clickActionText ?? 'Click me'}
) : (
- Hello world
+ <>
+ Solution side nav
+
+ There should be multiple "selected" nodes in the side nav:
+
+ - * Item 03 » Item 22
+ - * Footer parent 1 » Item 35
+
+ >
)}
@@ -455,9 +463,49 @@ const generalLayoutNavTree: NavigationTreeDefinitionUI = {
id: 'example_project_footer',
path: '',
children: [
+ {
+ id: 'footer-section6',
+ title: 'Footer parent 1',
+ path: '',
+ renderAs: 'accordion',
+ spaceBefore: null,
+ icon: 'iInCircle',
+ defaultIsCollapsed: false,
+ children: [
+ {
+ id: 'item33',
+ path: '',
+ title: 'Item 33',
+ href: '/app/kibana',
+ icon: 'iInCircle',
+ },
+ {
+ id: 'item34',
+ path: '',
+ title: 'Item 34',
+ href: '/app/kibana',
+ icon: 'iInCircle',
+ },
+ {
+ id: 'item35',
+ path: '',
+ title: 'Item 35',
+ href: '/app/kibana',
+ icon: 'iInCircle',
+ openInNewTab: true,
+ },
+ ],
+ },
+ {
+ id: 'item10',
+ path: '',
+ title: 'Item 10',
+ icon: 'iInCircle',
+ href: '/app/kibana',
+ },
{
id: 'footer-section5',
- title: 'Parent item, closed',
+ title: 'Footer parent 2',
path: '',
renderAs: 'accordion',
spaceBefore: null,
@@ -502,46 +550,6 @@ const generalLayoutNavTree: NavigationTreeDefinitionUI = {
},
],
},
- {
- id: 'item10',
- path: '',
- title: 'Item 10',
- icon: 'iInCircle',
- href: '/app/kibana',
- },
- {
- id: 'footer-section6',
- title: 'Parent item, opened',
- path: '',
- renderAs: 'accordion',
- spaceBefore: null,
- icon: 'iInCircle',
- defaultIsCollapsed: false,
- children: [
- {
- id: 'item33',
- path: '',
- title: 'Item 33',
- href: '/app/kibana',
- icon: 'iInCircle',
- },
- {
- id: 'item34',
- path: '',
- title: 'Item 34',
- href: '/app/kibana',
- icon: 'iInCircle',
- },
- {
- id: 'item35',
- path: '',
- title: 'Item 35',
- href: '/app/kibana',
- icon: 'iInCircle',
- openInNewTab: true,
- },
- ],
- },
],
},
],
@@ -585,6 +593,11 @@ export const GeneralLayoutStructure = (args: NavigationServices) => {
{ id: '', path: 'example_project.root-section1.item03.child-section4' },
{ id: '', path: 'example_project.root-section1.item03.child-section4.sub3' },
],
+ [
+ { id: '', path: 'example_project_footer' },
+ { id: '', path: 'example_project_footer.footer-section6' },
+ { id: '', path: 'example_project_footer.footer-section6.item35' },
+ ],
]);
return (
diff --git a/x-pack/solutions/chat/plugins/serverless_chat/public/navigation_tree.ts b/x-pack/solutions/chat/plugins/serverless_chat/public/navigation_tree.ts
index 39fd27eee11d..dd419cc3d92d 100644
--- a/x-pack/solutions/chat/plugins/serverless_chat/public/navigation_tree.ts
+++ b/x-pack/solutions/chat/plugins/serverless_chat/public/navigation_tree.ts
@@ -11,7 +11,6 @@ import type { NavigationTreeDefinition } from '@kbn/core-chrome-browser';
export const createNavigationTree = (): NavigationTreeDefinition => {
return {
body: [
- { type: 'recentlyAccessed' },
{
type: 'navGroup',
id: 'workchat_project_nav',
@@ -35,101 +34,109 @@ export const createNavigationTree = (): NavigationTreeDefinition => {
},
],
footer: [
- {
- type: 'navItem',
- id: 'devTools',
- title: i18n.translate('xpack.serverlessObservability.nav.devTools', {
- defaultMessage: 'Developer tools',
- }),
- link: 'dev_tools',
- icon: 'editorCodeBlock',
- },
{
type: 'navGroup',
- id: 'project_settings_project_nav',
- title: i18n.translate('xpack.serverlessObservability.nav.projectSettings', {
- defaultMessage: 'Project settings',
- }),
- icon: 'gear',
- breadcrumbStatus: 'hidden',
+ id: 'workchat_project_nav_footer',
children: [
{
- id: 'management',
- title: i18n.translate('xpack.serverlessObservability.nav.mngt', {
- defaultMessage: 'Management',
+ id: 'devTools',
+ title: i18n.translate('xpack.serverlessObservability.nav.devTools', {
+ defaultMessage: 'Developer tools',
}),
+ link: 'dev_tools',
+ icon: 'editorCodeBlock',
+ },
+ {
+ id: 'project_settings_project_nav',
+ title: i18n.translate('xpack.serverlessObservability.nav.projectSettings', {
+ defaultMessage: 'Project settings',
+ }),
+ icon: 'gear',
+ breadcrumbStatus: 'hidden',
+ renderAs: 'accordion',
spaceBefore: null,
- renderAs: 'panelOpener',
children: [
{
- title: i18n.translate('xpack.serverlessObservability.nav.mngt.data', {
- defaultMessage: 'Data',
+ id: 'management',
+ title: i18n.translate('xpack.serverlessObservability.nav.mngt', {
+ defaultMessage: 'Management',
}),
- breadcrumbStatus: 'hidden',
+ renderAs: 'panelOpener',
children: [
- { link: 'management:index_management', breadcrumbStatus: 'hidden' },
- { link: 'management:transform', breadcrumbStatus: 'hidden' },
- { link: 'management:ingest_pipelines', breadcrumbStatus: 'hidden' },
- { link: 'management:dataViews', breadcrumbStatus: 'hidden' },
- { link: 'management:jobsListLink', breadcrumbStatus: 'hidden' },
- { link: 'management:pipelines', breadcrumbStatus: 'hidden' },
- { link: 'management:data_quality', breadcrumbStatus: 'hidden' },
- { link: 'management:data_usage', breadcrumbStatus: 'hidden' },
- ],
- },
- {
- title: i18n.translate('xpack.serverlessObservability.nav.mngt.access', {
- defaultMessage: 'Access',
- }),
- breadcrumbStatus: 'hidden',
- children: [{ link: 'management:api_keys', breadcrumbStatus: 'hidden' }],
- },
- {
- title: i18n.translate('xpack.serverlessObservability.nav.mngt.alertsAndInsights', {
- defaultMessage: 'Alerts and insights',
- }),
- breadcrumbStatus: 'hidden',
- children: [
- { link: 'management:triggersActionsConnectors', breadcrumbStatus: 'hidden' },
- { link: 'management:maintenanceWindows', breadcrumbStatus: 'hidden' },
- ],
- },
- {
- title: i18n.translate('xpack.serverlessObservability.nav.mngt.content', {
- defaultMessage: 'Content',
- }),
- breadcrumbStatus: 'hidden',
- children: [
- { link: 'management:spaces', breadcrumbStatus: 'hidden' },
- { link: 'management:objects', breadcrumbStatus: 'hidden' },
- { link: 'management:filesManagement', breadcrumbStatus: 'hidden' },
- { link: 'management:reporting', breadcrumbStatus: 'hidden' },
- { link: 'management:tags', breadcrumbStatus: 'hidden' },
- ],
- },
- {
- title: i18n.translate('xpack.serverlessObservability.nav.mngt.other', {
- defaultMessage: 'Other',
- }),
- breadcrumbStatus: 'hidden',
- children: [
- { link: 'management:settings', breadcrumbStatus: 'hidden' },
{
- link: 'management:observabilityAiAssistantManagement',
+ title: i18n.translate('xpack.serverlessObservability.nav.mngt.data', {
+ defaultMessage: 'Data',
+ }),
breadcrumbStatus: 'hidden',
+ children: [
+ { link: 'management:index_management', breadcrumbStatus: 'hidden' },
+ { link: 'management:transform', breadcrumbStatus: 'hidden' },
+ { link: 'management:ingest_pipelines', breadcrumbStatus: 'hidden' },
+ { link: 'management:dataViews', breadcrumbStatus: 'hidden' },
+ { link: 'management:jobsListLink', breadcrumbStatus: 'hidden' },
+ { link: 'management:pipelines', breadcrumbStatus: 'hidden' },
+ { link: 'management:data_quality', breadcrumbStatus: 'hidden' },
+ { link: 'management:data_usage', breadcrumbStatus: 'hidden' },
+ ],
+ },
+ {
+ title: i18n.translate('xpack.serverlessObservability.nav.mngt.access', {
+ defaultMessage: 'Access',
+ }),
+ breadcrumbStatus: 'hidden',
+ children: [{ link: 'management:api_keys', breadcrumbStatus: 'hidden' }],
+ },
+ {
+ title: i18n.translate(
+ 'xpack.serverlessObservability.nav.mngt.alertsAndInsights',
+ {
+ defaultMessage: 'Alerts and insights',
+ }
+ ),
+ breadcrumbStatus: 'hidden',
+ children: [
+ { link: 'management:triggersActionsConnectors', breadcrumbStatus: 'hidden' },
+ { link: 'management:maintenanceWindows', breadcrumbStatus: 'hidden' },
+ ],
+ },
+ {
+ title: i18n.translate('xpack.serverlessObservability.nav.mngt.content', {
+ defaultMessage: 'Content',
+ }),
+ breadcrumbStatus: 'hidden',
+ children: [
+ { link: 'management:spaces', breadcrumbStatus: 'hidden' },
+ { link: 'management:objects', breadcrumbStatus: 'hidden' },
+ { link: 'management:filesManagement', breadcrumbStatus: 'hidden' },
+ { link: 'management:reporting', breadcrumbStatus: 'hidden' },
+ { link: 'management:tags', breadcrumbStatus: 'hidden' },
+ ],
+ },
+ {
+ title: i18n.translate('xpack.serverlessObservability.nav.mngt.other', {
+ defaultMessage: 'Other',
+ }),
+ breadcrumbStatus: 'hidden',
+ children: [
+ { link: 'management:settings', breadcrumbStatus: 'hidden' },
+ {
+ link: 'management:observabilityAiAssistantManagement',
+ breadcrumbStatus: 'hidden',
+ },
+ ],
},
],
},
+ {
+ id: 'cloudLinkUserAndRoles',
+ cloudLink: 'userAndRoles',
+ },
+ {
+ id: 'cloudLinkBilling',
+ cloudLink: 'billingAndSub',
+ },
],
},
- {
- id: 'cloudLinkUserAndRoles',
- cloudLink: 'userAndRoles',
- },
- {
- id: 'cloudLinkBilling',
- cloudLink: 'billingAndSub',
- },
],
},
],
diff --git a/x-pack/solutions/observability/plugins/observability/public/navigation_tree.ts b/x-pack/solutions/observability/plugins/observability/public/navigation_tree.ts
index 3a373111b1b2..f3ac899e3b35 100644
--- a/x-pack/solutions/observability/plugins/observability/public/navigation_tree.ts
+++ b/x-pack/solutions/observability/plugins/observability/public/navigation_tree.ts
@@ -210,7 +210,7 @@ function createNavTree({ streamsAvailable }: { streamsAvailable?: boolean }) {
id: 'machine_learning-landing',
renderAs: 'panelOpener',
title: i18n.translate('xpack.observability.obltNav.machineLearning', {
- defaultMessage: 'Machine learning',
+ defaultMessage: 'Machine Learning',
}),
children: [
{
@@ -325,133 +325,137 @@ function createNavTree({ streamsAvailable }: { streamsAvailable?: boolean }) {
},
],
footer: [
- { type: 'recentlyAccessed' },
- {
- type: 'navItem',
- title: i18n.translate('xpack.observability.obltNav.addData', {
- defaultMessage: 'Add data',
- }),
- link: 'observabilityOnboarding',
- icon: 'launch',
- },
- {
- type: 'navItem',
- id: 'devTools',
- title: i18n.translate('xpack.observability.obltNav.devTools', {
- defaultMessage: 'Developer tools',
- }),
- link: 'dev_tools',
- icon: 'editorCodeBlock',
- },
{
type: 'navGroup',
- id: 'project_settings_project_nav',
- title: i18n.translate('xpack.observability.obltNav.management', {
- defaultMessage: 'Management',
- }),
- icon: 'gear',
- breadcrumbStatus: 'hidden',
+ id: 'observability_project_nav_footer',
children: [
{
- id: 'stack_management', // This id can't be changed as we use it to open the panel programmatically
- title: i18n.translate('xpack.observability.obltNav.stackManagement', {
- defaultMessage: 'Stack Management',
+ title: i18n.translate('xpack.observability.obltNav.addData', {
+ defaultMessage: 'Add data',
}),
- renderAs: 'panelOpener',
+ link: 'observabilityOnboarding',
+ icon: 'launch',
+ },
+ {
+ id: 'devTools',
+ title: i18n.translate('xpack.observability.obltNav.devTools', {
+ defaultMessage: 'Developer tools',
+ }),
+ link: 'dev_tools',
+ icon: 'editorCodeBlock',
+ },
+ {
+ id: 'project_settings_project_nav',
+ title: i18n.translate('xpack.observability.obltNav.management', {
+ defaultMessage: 'Management',
+ }),
+ icon: 'gear',
+ breadcrumbStatus: 'hidden',
+ renderAs: 'accordion',
spaceBefore: null,
children: [
{
- title: 'Ingest',
+ id: 'stack_management', // This id can't be changed as we use it to open the panel programmatically
+ title: i18n.translate('xpack.observability.obltNav.stackManagement', {
+ defaultMessage: 'Stack Management',
+ }),
+ renderAs: 'panelOpener',
+ spaceBefore: null,
children: [
- { link: 'management:ingest_pipelines' },
- { link: 'management:pipelines' },
+ {
+ title: 'Ingest',
+ children: [
+ { link: 'management:ingest_pipelines' },
+ { link: 'management:pipelines' },
+ ],
+ },
+ {
+ title: 'Data',
+ children: [
+ { link: 'management:index_management' },
+ { link: 'management:data_quality' },
+ { link: 'management:index_lifecycle_management' },
+ { link: 'management:snapshot_restore' },
+ { link: 'management:rollup_jobs' },
+ { link: 'management:transform' },
+ { link: 'management:cross_cluster_replication' },
+ { link: 'management:remote_clusters' },
+ { link: 'management:migrate_data' },
+ ],
+ },
+ {
+ title: 'Alerts and Insights',
+ children: [
+ { link: 'management:triggersActions' },
+ { link: 'management:cases' },
+ { link: 'management:triggersActionsConnectors' },
+ { link: 'management:reporting' },
+ { link: 'management:jobsListLink' },
+ { link: 'management:watcher' },
+ { link: 'management:maintenanceWindows' },
+ ],
+ },
+ {
+ title: 'Machine Learning',
+ children: [
+ { link: 'management:overview' },
+ { link: 'management:anomaly_detection' },
+ { link: 'management:analytics' },
+ { link: 'management:trained_models' },
+ { link: 'management:supplied_configurations' },
+ ],
+ },
+ {
+ title: 'Security',
+ children: [
+ { link: 'management:users' },
+ { link: 'management:roles' },
+ { link: 'management:api_keys' },
+ { link: 'management:role_mappings' },
+ ],
+ },
+ {
+ title: 'Kibana',
+ children: [
+ { link: 'management:dataViews' },
+ { link: 'management:filesManagement' },
+ { link: 'management:objects' },
+ { link: 'management:tags' },
+ { link: 'management:search_sessions' },
+ { link: 'management:aiAssistantManagementSelection' },
+ { link: 'management:spaces' },
+ { link: 'management:settings' },
+ ],
+ },
+ {
+ title: 'Stack',
+ children: [
+ { link: 'management:license_management' },
+ { link: 'management:upgrade_assistant' },
+ ],
+ },
],
},
{
- title: 'Data',
- children: [
- { link: 'management:index_management' },
- { link: 'management:data_quality' },
- { link: 'management:index_lifecycle_management' },
- { link: 'management:snapshot_restore' },
- { link: 'management:rollup_jobs' },
- { link: 'management:transform' },
- { link: 'management:cross_cluster_replication' },
- { link: 'management:remote_clusters' },
- { link: 'management:migrate_data' },
- ],
+ id: 'monitoring',
+ link: 'monitoring',
},
{
- title: 'Alerts and Insights',
- children: [
- { link: 'management:triggersActions' },
- { link: 'management:cases' },
- { link: 'management:triggersActionsConnectors' },
- { link: 'management:reporting' },
- { link: 'management:jobsListLink' },
- { link: 'management:watcher' },
- { link: 'management:maintenanceWindows' },
- ],
+ link: 'integrations',
},
{
- title: 'Machine Learning',
- children: [
- { link: 'management:overview' },
- { link: 'management:anomaly_detection' },
- { link: 'management:analytics' },
- { link: 'management:trained_models' },
- { link: 'management:supplied_configurations' },
- ],
+ link: 'fleet',
},
{
- title: 'Security',
- children: [
- { link: 'management:users' },
- { link: 'management:roles' },
- { link: 'management:api_keys' },
- { link: 'management:role_mappings' },
- ],
+ id: 'cloudLinkUserAndRoles',
+ cloudLink: 'userAndRoles',
},
{
- title: 'Kibana',
- children: [
- { link: 'management:dataViews' },
- { link: 'management:filesManagement' },
- { link: 'management:objects' },
- { link: 'management:tags' },
- { link: 'management:search_sessions' },
- { link: 'management:aiAssistantManagementSelection' },
- { link: 'management:spaces' },
- { link: 'management:settings' },
- ],
- },
- {
- title: 'Stack',
- children: [
- { link: 'management:license_management' },
- { link: 'management:upgrade_assistant' },
- ],
+ id: 'cloudLinkBilling',
+ cloudLink: 'billingAndSub',
},
],
},
- {
- id: 'monitoring',
- link: 'monitoring',
- },
- {
- link: 'integrations',
- },
- {
- link: 'fleet',
- },
- {
- id: 'cloudLinkUserAndRoles',
- cloudLink: 'userAndRoles',
- },
- {
- id: 'cloudLinkBilling',
- cloudLink: 'billingAndSub',
- },
],
},
],
diff --git a/x-pack/solutions/observability/plugins/serverless_observability/public/navigation_tree.ts b/x-pack/solutions/observability/plugins/serverless_observability/public/navigation_tree.ts
index 82785301d0de..6caacb2082c4 100644
--- a/x-pack/solutions/observability/plugins/serverless_observability/public/navigation_tree.ts
+++ b/x-pack/solutions/observability/plugins/serverless_observability/public/navigation_tree.ts
@@ -15,7 +15,6 @@ export const createNavigationTree = ({
}): NavigationTreeDefinition => {
return {
body: [
- { type: 'recentlyAccessed' },
{
type: 'navGroup',
id: 'observability_project_nav',
@@ -173,7 +172,7 @@ export const createNavigationTree = ({
id: 'machine_learning-landing',
renderAs: 'panelOpener',
title: i18n.translate('xpack.serverlessObservability.nav.machineLearning', {
- defaultMessage: 'Machine learning',
+ defaultMessage: 'Machine Learning',
}),
children: [
{
@@ -258,126 +257,134 @@ export const createNavigationTree = ({
},
],
footer: [
- {
- type: 'navItem',
- title: i18n.translate('xpack.serverlessObservability.nav.getStarted', {
- defaultMessage: 'Add data',
- }),
- link: 'observabilityOnboarding',
- icon: 'launch',
- },
- {
- type: 'navItem',
- id: 'devTools',
- title: i18n.translate('xpack.serverlessObservability.nav.devTools', {
- defaultMessage: 'Developer tools',
- }),
- link: 'dev_tools',
- icon: 'editorCodeBlock',
- },
{
type: 'navGroup',
- id: 'project_settings_project_nav',
- title: i18n.translate('xpack.serverlessObservability.nav.projectSettings', {
- defaultMessage: 'Project settings',
- }),
- icon: 'gear',
- breadcrumbStatus: 'hidden',
+ id: 'observability_project_nav_footer',
children: [
{
- id: 'management',
- title: i18n.translate('xpack.serverlessObservability.nav.mngt', {
- defaultMessage: 'Management',
+ title: i18n.translate('xpack.serverlessObservability.nav.getStarted', {
+ defaultMessage: 'Add data',
}),
+ link: 'observabilityOnboarding',
+ icon: 'launch',
+ },
+ {
+ id: 'devTools',
+ title: i18n.translate('xpack.serverlessObservability.nav.devTools', {
+ defaultMessage: 'Developer tools',
+ }),
+ link: 'dev_tools',
+ icon: 'editorCodeBlock',
+ },
+ {
+ id: 'project_settings_project_nav',
+ title: i18n.translate('xpack.serverlessObservability.nav.projectSettings', {
+ defaultMessage: 'Project settings',
+ }),
+ icon: 'gear',
+ breadcrumbStatus: 'hidden',
+ renderAs: 'accordion',
spaceBefore: null,
- renderAs: 'panelOpener',
children: [
{
- title: i18n.translate('xpack.serverlessObservability.nav.mngt.data', {
- defaultMessage: 'Data',
+ id: 'management',
+ title: i18n.translate('xpack.serverlessObservability.nav.mngt', {
+ defaultMessage: 'Management',
}),
- breadcrumbStatus: 'hidden',
+ spaceBefore: null,
+ renderAs: 'panelOpener',
children: [
- { link: 'management:index_management', breadcrumbStatus: 'hidden' },
- { link: 'management:transform', breadcrumbStatus: 'hidden' },
- { link: 'management:ingest_pipelines', breadcrumbStatus: 'hidden' },
- { link: 'management:dataViews', breadcrumbStatus: 'hidden' },
- { link: 'management:jobsListLink', breadcrumbStatus: 'hidden' },
- { link: 'management:pipelines', breadcrumbStatus: 'hidden' },
- { link: 'management:data_quality', breadcrumbStatus: 'hidden' },
- { link: 'management:data_usage', breadcrumbStatus: 'hidden' },
- { link: 'management:content_connectors', breadcrumbStatus: 'hidden' },
- ],
- },
- {
- title: i18n.translate('xpack.serverlessObservability.nav.mngt.access', {
- defaultMessage: 'Access',
- }),
- breadcrumbStatus: 'hidden',
- children: [{ link: 'management:api_keys', breadcrumbStatus: 'hidden' }],
- },
- {
- title: i18n.translate('xpack.serverlessObservability.nav.mngt.alertsAndInsights', {
- defaultMessage: 'Alerts and insights',
- }),
- breadcrumbStatus: 'hidden',
- children: [
- { link: 'management:triggersActionsConnectors', breadcrumbStatus: 'hidden' },
- { link: 'management:maintenanceWindows', breadcrumbStatus: 'hidden' },
- ],
- },
- {
- title: 'Machine Learning',
- children: [
- { link: 'management:overview' },
- { link: 'management:anomaly_detection' },
- { link: 'management:analytics' },
- { link: 'management:trained_models' },
- { link: 'management:supplied_configurations' },
- ],
- },
- {
- title: i18n.translate('xpack.serverlessObservability.nav.mngt.content', {
- defaultMessage: 'Content',
- }),
- breadcrumbStatus: 'hidden',
- children: [
- { link: 'management:spaces', breadcrumbStatus: 'hidden' },
- { link: 'management:objects', breadcrumbStatus: 'hidden' },
- { link: 'management:filesManagement', breadcrumbStatus: 'hidden' },
- { link: 'management:reporting', breadcrumbStatus: 'hidden' },
- { link: 'management:tags', breadcrumbStatus: 'hidden' },
- ],
- },
- {
- title: i18n.translate('xpack.serverlessObservability.nav.mngt.other', {
- defaultMessage: 'Other',
- }),
- breadcrumbStatus: 'hidden',
- children: [
- { link: 'management:settings', breadcrumbStatus: 'hidden' },
{
- link: 'management:observabilityAiAssistantManagement',
+ title: i18n.translate('xpack.serverlessObservability.nav.mngt.data', {
+ defaultMessage: 'Data',
+ }),
breadcrumbStatus: 'hidden',
+ children: [
+ { link: 'management:index_management', breadcrumbStatus: 'hidden' },
+ { link: 'management:transform', breadcrumbStatus: 'hidden' },
+ { link: 'management:ingest_pipelines', breadcrumbStatus: 'hidden' },
+ { link: 'management:dataViews', breadcrumbStatus: 'hidden' },
+ { link: 'management:jobsListLink', breadcrumbStatus: 'hidden' },
+ { link: 'management:pipelines', breadcrumbStatus: 'hidden' },
+ { link: 'management:data_quality', breadcrumbStatus: 'hidden' },
+ { link: 'management:data_usage', breadcrumbStatus: 'hidden' },
+ { link: 'management:content_connectors', breadcrumbStatus: 'hidden' },
+ ],
+ },
+ {
+ title: i18n.translate('xpack.serverlessObservability.nav.mngt.access', {
+ defaultMessage: 'Access',
+ }),
+ breadcrumbStatus: 'hidden',
+ children: [{ link: 'management:api_keys', breadcrumbStatus: 'hidden' }],
+ },
+ {
+ title: i18n.translate(
+ 'xpack.serverlessObservability.nav.mngt.alertsAndInsights',
+ {
+ defaultMessage: 'Alerts and insights',
+ }
+ ),
+ breadcrumbStatus: 'hidden',
+ children: [
+ { link: 'management:triggersActionsConnectors', breadcrumbStatus: 'hidden' },
+ { link: 'management:maintenanceWindows', breadcrumbStatus: 'hidden' },
+ ],
+ },
+ {
+ title: 'Machine Learning',
+ children: [
+ { link: 'management:overview' },
+ { link: 'management:anomaly_detection' },
+ { link: 'management:analytics' },
+ { link: 'management:trained_models' },
+ { link: 'management:supplied_configurations' },
+ ],
+ },
+ {
+ title: i18n.translate('xpack.serverlessObservability.nav.mngt.content', {
+ defaultMessage: 'Content',
+ }),
+ breadcrumbStatus: 'hidden',
+ children: [
+ { link: 'management:spaces', breadcrumbStatus: 'hidden' },
+ { link: 'management:objects', breadcrumbStatus: 'hidden' },
+ { link: 'management:filesManagement', breadcrumbStatus: 'hidden' },
+ { link: 'management:reporting', breadcrumbStatus: 'hidden' },
+ { link: 'management:tags', breadcrumbStatus: 'hidden' },
+ ],
+ },
+ {
+ title: i18n.translate('xpack.serverlessObservability.nav.mngt.other', {
+ defaultMessage: 'Other',
+ }),
+ breadcrumbStatus: 'hidden',
+ children: [
+ { link: 'management:settings', breadcrumbStatus: 'hidden' },
+ {
+ link: 'management:observabilityAiAssistantManagement',
+ breadcrumbStatus: 'hidden',
+ },
+ ],
},
],
},
+ {
+ link: 'integrations',
+ },
+ {
+ link: 'fleet',
+ },
+ {
+ id: 'cloudLinkUserAndRoles',
+ cloudLink: 'userAndRoles',
+ },
+ {
+ id: 'cloudLinkBilling',
+ cloudLink: 'billingAndSub',
+ },
],
},
- {
- link: 'integrations',
- },
- {
- link: 'fleet',
- },
- {
- id: 'cloudLinkUserAndRoles',
- cloudLink: 'userAndRoles',
- },
- {
- id: 'cloudLinkBilling',
- cloudLink: 'billingAndSub',
- },
],
},
],
diff --git a/x-pack/solutions/search/plugins/enterprise_search/public/navigation_tree.ts b/x-pack/solutions/search/plugins/enterprise_search/public/navigation_tree.ts
index a14414aaf5c1..c090202aa8af 100644
--- a/x-pack/solutions/search/plugins/enterprise_search/public/navigation_tree.ts
+++ b/x-pack/solutions/search/plugins/enterprise_search/public/navigation_tree.ts
@@ -234,104 +234,110 @@ export const getNavigationTreeDefinition = ({
},
],
footer: [
- { type: 'recentlyAccessed' },
{
- breadcrumbStatus: 'hidden',
children: [
{
- link: 'management:trained_models',
- title: i18n.translate(
- 'xpack.enterpriseSearch.searchNav.management.trainedModels',
- {
- defaultMessage: 'Trained Models',
- }
- ),
- },
- {
+ breadcrumbStatus: 'hidden',
children: [
{
- children: [
- { link: 'management:ingest_pipelines' },
- { link: 'management:pipelines' },
- ],
- title: 'Ingest',
+ link: 'management:trained_models',
+ title: i18n.translate(
+ 'xpack.enterpriseSearch.searchNav.management.trainedModels',
+ {
+ defaultMessage: 'Trained Models',
+ }
+ ),
},
{
children: [
- { link: 'management:index_management' },
- { link: 'management:index_lifecycle_management' },
- { link: 'management:snapshot_restore' },
- { link: 'management:rollup_jobs' },
- { link: 'management:transform' },
- { link: 'management:cross_cluster_replication' },
- { link: 'management:remote_clusters' },
- { link: 'management:migrate_data' },
+ {
+ children: [
+ { link: 'management:ingest_pipelines' },
+ { link: 'management:pipelines' },
+ ],
+ title: 'Ingest',
+ },
+ {
+ children: [
+ { link: 'management:index_management' },
+ { link: 'management:index_lifecycle_management' },
+ { link: 'management:snapshot_restore' },
+ { link: 'management:rollup_jobs' },
+ { link: 'management:transform' },
+ { link: 'management:cross_cluster_replication' },
+ { link: 'management:remote_clusters' },
+ { link: 'management:migrate_data' },
+ ],
+ title: 'Data',
+ },
+ {
+ children: [
+ { link: 'management:triggersActions' },
+ { link: 'management:cases' },
+ { link: 'management:triggersActionsConnectors' },
+ { link: 'management:reporting' },
+ { link: 'management:jobsListLink' },
+ { link: 'management:watcher' },
+ { link: 'management:maintenanceWindows' },
+ ],
+ title: 'Alerts and Insights',
+ },
+ {
+ children: [{ link: 'management:trained_models' }],
+ title: 'Machine Learning',
+ },
+ {
+ children: [
+ { link: 'management:users' },
+ { link: 'management:roles' },
+ { link: 'management:api_keys' },
+ { link: 'management:role_mappings' },
+ ],
+ title: 'Security',
+ },
+ {
+ children: [
+ { link: 'management:dataViews' },
+ { link: 'management:filesManagement' },
+ { link: 'management:objects' },
+ { link: 'management:tags' },
+ { link: 'management:search_sessions' },
+ { link: 'management:aiAssistantManagementSelection' },
+ { link: 'management:spaces' },
+ { link: 'management:settings' },
+ ],
+ title: 'Kibana',
+ },
+ {
+ children: [
+ { link: 'management:license_management' },
+ { link: 'management:upgrade_assistant' },
+ ],
+ title: 'Stack',
+ },
],
- title: 'Data',
+ id: 'stack_management', // This id can't be changed as we use it to open the panel programmatically
+ renderAs: 'panelOpener',
+ spaceBefore: null,
+ title: i18n.translate('xpack.enterpriseSearch.searchNav.mngt', {
+ defaultMessage: 'Stack Management',
+ }),
},
{
- children: [
- { link: 'management:triggersActions' },
- { link: 'management:cases' },
- { link: 'management:triggersActionsConnectors' },
- { link: 'management:reporting' },
- { link: 'management:jobsListLink' },
- { link: 'management:watcher' },
- { link: 'management:maintenanceWindows' },
- ],
- title: 'Alerts and Insights',
- },
- {
- children: [{ link: 'management:trained_models' }],
- title: 'Machine Learning',
- },
- {
- children: [
- { link: 'management:users' },
- { link: 'management:roles' },
- { link: 'management:api_keys' },
- { link: 'management:role_mappings' },
- ],
- title: 'Security',
- },
- {
- children: [
- { link: 'management:dataViews' },
- { link: 'management:filesManagement' },
- { link: 'management:objects' },
- { link: 'management:tags' },
- { link: 'management:search_sessions' },
- { link: 'management:aiAssistantManagementSelection' },
- { link: 'management:spaces' },
- { link: 'management:settings' },
- ],
- title: 'Kibana',
- },
- {
- children: [
- { link: 'management:license_management' },
- { link: 'management:upgrade_assistant' },
- ],
- title: 'Stack',
+ id: 'monitoring',
+ link: 'monitoring',
},
],
- id: 'stack_management', // This id can't be changed as we use it to open the panel programmatically
- renderAs: 'panelOpener',
+ icon: 'gear',
+ id: 'project_settings_project_nav',
+ renderAs: 'accordion',
spaceBefore: null,
- title: i18n.translate('xpack.enterpriseSearch.searchNav.mngt', {
- defaultMessage: 'Stack Management',
+ title: i18n.translate('xpack.enterpriseSearch.searchNav.management', {
+ defaultMessage: 'Management',
}),
},
- {
- id: 'monitoring',
- link: 'monitoring',
- },
],
- icon: 'gear',
- id: 'project_settings_project_nav',
- title: i18n.translate('xpack.enterpriseSearch.searchNav.management', {
- defaultMessage: 'Management',
- }),
+ id: 'search_project_nav_footer',
type: 'navGroup',
},
],
diff --git a/x-pack/solutions/search/plugins/serverless_search/public/navigation_tree.ts b/x-pack/solutions/search/plugins/serverless_search/public/navigation_tree.ts
index 2aa424b9a4ba..2b744377f707 100644
--- a/x-pack/solutions/search/plugins/serverless_search/public/navigation_tree.ts
+++ b/x-pack/solutions/search/plugins/serverless_search/public/navigation_tree.ts
@@ -149,127 +149,136 @@ export const navigationTree = ({ isAppRegistered }: ApplicationStart): Navigatio
},
],
footer: [
- {
- id: 'gettingStarted',
- type: 'navItem',
- title: i18n.translate('xpack.serverlessSearch.nav.gettingStarted', {
- defaultMessage: 'Getting Started',
- }),
- link: 'serverlessElasticsearch',
- icon: 'launch',
- },
{
type: 'navGroup',
- id: 'project_settings_project_nav',
- title: i18n.translate('xpack.serverlessSearch.nav.projectSettings', {
- defaultMessage: 'Project settings',
- }),
- icon: 'gear',
- breadcrumbStatus: 'hidden',
+ id: 'search_project_nav_footer',
children: [
{
- link: 'management:trained_models',
- title: i18n.translate('xpack.serverlessSearch.nav.trainedModels', {
- defaultMessage: 'Trained Models',
+ id: 'gettingStarted',
+ title: i18n.translate('xpack.serverlessSearch.nav.gettingStarted', {
+ defaultMessage: 'Getting Started',
}),
+ link: 'serverlessElasticsearch',
+ icon: 'launch',
},
{
- id: 'management',
- title: i18n.translate('xpack.serverlessSearch.nav.mngt', {
- defaultMessage: 'Management',
+ id: 'project_settings_project_nav',
+ title: i18n.translate('xpack.serverlessSearch.nav.projectSettings', {
+ defaultMessage: 'Project settings',
}),
+ icon: 'gear',
+ breadcrumbStatus: 'hidden',
+ renderAs: 'accordion',
spaceBefore: null,
- renderAs: 'panelOpener',
children: [
{
- title: i18n.translate('xpack.serverlessSearch.nav.mngt.data', {
- defaultMessage: 'Data',
+ link: 'management:trained_models',
+ title: i18n.translate('xpack.serverlessSearch.nav.trainedModels', {
+ defaultMessage: 'Trained Models',
}),
- breadcrumbStatus: 'hidden',
- children: [
- { link: 'management:index_management', breadcrumbStatus: 'hidden' },
- { link: 'management:transform', breadcrumbStatus: 'hidden' },
- { link: 'management:ingest_pipelines', breadcrumbStatus: 'hidden' },
- { link: 'management:dataViews', breadcrumbStatus: 'hidden' },
- { link: 'management:jobsListLink', breadcrumbStatus: 'hidden' },
- { link: 'management:pipelines', breadcrumbStatus: 'hidden' },
- { link: 'management:data_quality', breadcrumbStatus: 'hidden' },
- { link: 'management:data_usage', breadcrumbStatus: 'hidden' },
- ],
},
{
- title: i18n.translate('xpack.serverlessSearch.nav.mngt.access', {
- defaultMessage: 'Access',
+ id: 'management',
+ title: i18n.translate('xpack.serverlessSearch.nav.mngt', {
+ defaultMessage: 'Management',
}),
- breadcrumbStatus: 'hidden',
+ spaceBefore: null,
+ renderAs: 'panelOpener',
children: [
- { link: 'management:api_keys', breadcrumbStatus: 'hidden' },
- { link: 'management:roles', breadcrumbStatus: 'hidden' },
{
- cloudLink: 'userAndRoles',
- title: i18n.translate('xpack.serverlessSearch.nav.mngt.access.userAndRoles', {
- defaultMessage: 'Manage Organization Members',
+ title: i18n.translate('xpack.serverlessSearch.nav.mngt.data', {
+ defaultMessage: 'Data',
}),
- },
- ],
- },
- {
- title: i18n.translate('xpack.serverlessSearch.nav.mngt.alertsAndInsights', {
- defaultMessage: 'Alerts and insights',
- }),
- breadcrumbStatus: 'hidden',
- children: [
- { link: 'management:triggersActions', breadcrumbStatus: 'hidden' },
- { link: 'management:triggersActionsConnectors', breadcrumbStatus: 'hidden' },
- ],
- },
- {
- title: 'Machine Learning',
- children: [{ link: 'management:trained_models', breadcrumbStatus: 'hidden' }],
- },
- {
- title: i18n.translate('xpack.serverlessSearch.nav.mngt.content', {
- defaultMessage: 'Content',
- }),
- breadcrumbStatus: 'hidden',
- children: [
- { link: 'management:spaces', breadcrumbStatus: 'hidden' },
- { link: 'management:objects', breadcrumbStatus: 'hidden' },
- { link: 'management:filesManagement', breadcrumbStatus: 'hidden' },
- { link: 'management:reporting', breadcrumbStatus: 'hidden' },
- { link: 'management:tags', breadcrumbStatus: 'hidden' },
- ],
- },
- {
- title: i18n.translate('xpack.serverlessSearch.nav.mngt.other', {
- defaultMessage: 'Other',
- }),
- breadcrumbStatus: 'hidden',
- children: [
- { link: 'management:settings', breadcrumbStatus: 'hidden' },
- {
- link: 'management:observabilityAiAssistantManagement',
breadcrumbStatus: 'hidden',
- title: i18n.translate(
- 'xpack.serverlessSearch.nav.mngt.other.aiAssistantSettings',
- { defaultMessage: 'AI Assistant Settings' }
- ),
+ children: [
+ { link: 'management:index_management', breadcrumbStatus: 'hidden' },
+ { link: 'management:transform', breadcrumbStatus: 'hidden' },
+ { link: 'management:ingest_pipelines', breadcrumbStatus: 'hidden' },
+ { link: 'management:dataViews', breadcrumbStatus: 'hidden' },
+ { link: 'management:jobsListLink', breadcrumbStatus: 'hidden' },
+ { link: 'management:pipelines', breadcrumbStatus: 'hidden' },
+ { link: 'management:data_quality', breadcrumbStatus: 'hidden' },
+ { link: 'management:data_usage', breadcrumbStatus: 'hidden' },
+ ],
+ },
+ {
+ title: i18n.translate('xpack.serverlessSearch.nav.mngt.access', {
+ defaultMessage: 'Access',
+ }),
+ breadcrumbStatus: 'hidden',
+ children: [
+ { link: 'management:api_keys', breadcrumbStatus: 'hidden' },
+ { link: 'management:roles', breadcrumbStatus: 'hidden' },
+ {
+ cloudLink: 'userAndRoles',
+ title: i18n.translate(
+ 'xpack.serverlessSearch.nav.mngt.access.userAndRoles',
+ {
+ defaultMessage: 'Manage Organization Members',
+ }
+ ),
+ },
+ ],
+ },
+ {
+ title: i18n.translate('xpack.serverlessSearch.nav.mngt.alertsAndInsights', {
+ defaultMessage: 'Alerts and insights',
+ }),
+ breadcrumbStatus: 'hidden',
+ children: [
+ { link: 'management:triggersActions', breadcrumbStatus: 'hidden' },
+ { link: 'management:triggersActionsConnectors', breadcrumbStatus: 'hidden' },
+ ],
+ },
+ {
+ title: 'Machine Learning',
+ children: [{ link: 'management:trained_models', breadcrumbStatus: 'hidden' }],
+ },
+ {
+ title: i18n.translate('xpack.serverlessSearch.nav.mngt.content', {
+ defaultMessage: 'Content',
+ }),
+ breadcrumbStatus: 'hidden',
+ children: [
+ { link: 'management:spaces', breadcrumbStatus: 'hidden' },
+ { link: 'management:objects', breadcrumbStatus: 'hidden' },
+ { link: 'management:filesManagement', breadcrumbStatus: 'hidden' },
+ { link: 'management:reporting', breadcrumbStatus: 'hidden' },
+ { link: 'management:tags', breadcrumbStatus: 'hidden' },
+ ],
+ },
+ {
+ title: i18n.translate('xpack.serverlessSearch.nav.mngt.other', {
+ defaultMessage: 'Other',
+ }),
+ breadcrumbStatus: 'hidden',
+ children: [
+ { link: 'management:settings', breadcrumbStatus: 'hidden' },
+ {
+ link: 'management:observabilityAiAssistantManagement',
+ breadcrumbStatus: 'hidden',
+ title: i18n.translate(
+ 'xpack.serverlessSearch.nav.mngt.other.aiAssistantSettings',
+ { defaultMessage: 'AI Assistant Settings' }
+ ),
+ },
+ ],
},
],
},
+ {
+ id: 'cloudLinkDeployment',
+ cloudLink: 'deployment',
+ title: i18n.translate('xpack.serverlessSearch.nav.performance', {
+ defaultMessage: 'Performance',
+ }),
+ },
+ {
+ id: 'cloudLinkBilling',
+ cloudLink: 'billingAndSub',
+ },
],
},
- {
- id: 'cloudLinkDeployment',
- cloudLink: 'deployment',
- title: i18n.translate('xpack.serverlessSearch.nav.performance', {
- defaultMessage: 'Performance',
- }),
- },
- {
- id: 'cloudLinkBilling',
- cloudLink: 'billingAndSub',
- },
],
},
],
diff --git a/x-pack/solutions/security/packages/navigation/src/i18n_strings.ts b/x-pack/solutions/security/packages/navigation/src/i18n_strings.ts
index 24cca089a321..8448a4bf2940 100644
--- a/x-pack/solutions/security/packages/navigation/src/i18n_strings.ts
+++ b/x-pack/solutions/security/packages/navigation/src/i18n_strings.ts
@@ -63,7 +63,7 @@ export const i18nStrings = {
},
ml: {
title: i18n.translate('securitySolutionPackages.navLinks.ml', {
- defaultMessage: 'Machine learning',
+ defaultMessage: 'Machine Learning',
}),
overview: i18n.translate('securitySolutionPackages.navLinks.ml.overview', {
defaultMessage: 'Overview',
diff --git a/x-pack/solutions/security/plugins/security_solution_ess/public/navigation/navigation_tree.ts b/x-pack/solutions/security/plugins/security_solution_ess/public/navigation/navigation_tree.ts
index f5db8751d603..a2151fae2ea1 100644
--- a/x-pack/solutions/security/plugins/security_solution_ess/public/navigation/navigation_tree.ts
+++ b/x-pack/solutions/security/plugins/security_solution_ess/public/navigation/navigation_tree.ts
@@ -75,117 +75,125 @@ export const createNavigationTree = (services: Services): NavigationTreeDefiniti
],
footer: [
{
- id: SecurityPageName.landing,
- link: securityLink(SecurityPageName.landing),
- type: 'navItem',
- icon: 'launch',
- },
- {
- type: 'navItem',
- link: 'dev_tools',
- title: i18nStrings.devTools,
- icon: 'editorCodeBlock',
- },
- {
+ id: 'security_solution_nav_footer',
type: 'navGroup',
- title: i18nStrings.management.title,
- icon: 'gear',
- breadcrumbStatus: 'hidden',
children: [
{
- id: 'stack_management', // This id can't be changed as we use it to open the panel programmatically
- title: i18nStrings.stackManagement.title,
- renderAs: 'panelOpener',
+ id: SecurityPageName.landing,
+ link: securityLink(SecurityPageName.landing),
+ icon: 'launch',
+ },
+ {
+ link: 'dev_tools',
+ title: i18nStrings.devTools,
+ icon: 'editorCodeBlock',
+ },
+ {
+ title: i18nStrings.management.title,
+ icon: 'gear',
+ breadcrumbStatus: 'hidden',
+ renderAs: 'accordion',
spaceBefore: null,
children: [
{
- title: i18nStrings.stackManagement.ingest.title,
- children: [{ link: 'management:ingest_pipelines' }, { link: 'management:pipelines' }],
- },
- {
- title: i18nStrings.stackManagement.data.title,
+ id: 'stack_management',
+ title: i18nStrings.stackManagement.title,
+ renderAs: 'panelOpener',
+ spaceBefore: null,
children: [
- { link: 'management:index_management' },
- { link: 'management:index_lifecycle_management' },
- { link: 'management:snapshot_restore' },
- { link: 'management:rollup_jobs' },
- { link: 'management:transform' },
- { link: 'management:cross_cluster_replication' },
- { link: 'management:remote_clusters' },
- { link: 'management:migrate_data' },
- ],
- },
- {
- title: i18nStrings.stackManagement.alertsAndInsights.title,
- children: [
- { link: 'management:triggersActions' },
- { link: 'management:cases' },
- { link: 'management:triggersActionsConnectors' },
- { link: 'management:reporting' },
- { link: 'management:jobsListLink' },
- { link: 'management:watcher' },
- { link: 'management:maintenanceWindows' },
{
- id: SecurityPageName.entityAnalyticsManagement,
- link: securityLink(SecurityPageName.entityAnalyticsManagement),
+ title: i18nStrings.stackManagement.ingest.title,
+ children: [
+ { link: 'management:ingest_pipelines' },
+ { link: 'management:pipelines' },
+ ],
},
{
- id: SecurityPageName.entityAnalyticsEntityStoreManagement,
- link: securityLink(SecurityPageName.entityAnalyticsEntityStoreManagement),
+ title: i18nStrings.stackManagement.data.title,
+ children: [
+ { link: 'management:index_management' },
+ { link: 'management:index_lifecycle_management' },
+ { link: 'management:snapshot_restore' },
+ { link: 'management:rollup_jobs' },
+ { link: 'management:transform' },
+ { link: 'management:cross_cluster_replication' },
+ { link: 'management:remote_clusters' },
+ { link: 'management:migrate_data' },
+ ],
+ },
+ {
+ title: i18nStrings.stackManagement.alertsAndInsights.title,
+ children: [
+ { link: 'management:triggersActions' },
+ { link: 'management:cases' },
+ { link: 'management:triggersActionsConnectors' },
+ { link: 'management:reporting' },
+ { link: 'management:jobsListLink' },
+ { link: 'management:watcher' },
+ { link: 'management:maintenanceWindows' },
+ {
+ id: SecurityPageName.entityAnalyticsManagement,
+ link: securityLink(SecurityPageName.entityAnalyticsManagement),
+ },
+ {
+ id: SecurityPageName.entityAnalyticsEntityStoreManagement,
+ link: securityLink(SecurityPageName.entityAnalyticsEntityStoreManagement),
+ },
+ ],
+ },
+ {
+ title: i18nStrings.ml.title,
+ children: [
+ { link: 'management:overview' },
+ { link: 'management:anomaly_detection' },
+ { link: 'management:analytics' },
+ { link: 'management:trained_models' },
+ { link: 'management:supplied_configurations' },
+ ],
+ },
+ {
+ title: i18nStrings.stackManagement.security.title,
+ children: [
+ { link: 'management:users' },
+ { link: 'management:roles' },
+ { link: 'management:api_keys' },
+ { link: 'management:role_mappings' },
+ ],
+ },
+ {
+ title: i18nStrings.stackManagement.kibana.title,
+ children: [
+ { link: 'management:dataViews' },
+ { link: 'management:filesManagement' },
+ { link: 'management:objects' },
+ { link: 'management:tags' },
+ { link: 'management:search_sessions' },
+ { link: 'management:aiAssistantManagementSelection' },
+ { link: 'management:spaces' },
+ { link: 'maps' },
+ { link: 'visualize' },
+ { link: 'graph' },
+ { link: 'canvas' },
+ { link: 'management:settings' },
+ ],
+ },
+ {
+ title: i18nStrings.stackManagement.stack.title,
+ children: [
+ { link: 'management:license_management' },
+ { link: 'management:upgrade_assistant' },
+ ],
},
],
},
{
- title: i18nStrings.ml.title,
- children: [
- { link: 'management:overview' },
- { link: 'management:anomaly_detection' },
- { link: 'management:analytics' },
- { link: 'management:trained_models' },
- { link: 'management:supplied_configurations' },
- ],
+ link: 'monitoring',
},
{
- title: i18nStrings.stackManagement.security.title,
- children: [
- { link: 'management:users' },
- { link: 'management:roles' },
- { link: 'management:api_keys' },
- { link: 'management:role_mappings' },
- ],
- },
- {
- title: i18nStrings.stackManagement.kibana.title,
- children: [
- { link: 'management:dataViews' },
- { link: 'management:filesManagement' },
- { link: 'management:objects' },
- { link: 'management:tags' },
- { link: 'management:search_sessions' },
- { link: 'management:aiAssistantManagementSelection' },
- { link: 'management:spaces' },
- { link: 'maps' },
- { link: 'visualize' },
- { link: 'graph' },
- { link: 'canvas' },
- { link: 'management:settings' },
- ],
- },
- {
- title: i18nStrings.stackManagement.stack.title,
- children: [
- { link: 'management:license_management' },
- { link: 'management:upgrade_assistant' },
- ],
+ link: 'integrations',
},
],
},
- {
- link: 'monitoring',
- },
- {
- link: 'integrations',
- },
],
},
],
diff --git a/x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/ai_navigation/ai_navigation_tree.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/ai_navigation/ai_navigation_tree.ts
index ed5fc020a5fe..3abb0a25bc20 100644
--- a/x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/ai_navigation/ai_navigation_tree.ts
+++ b/x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/ai_navigation/ai_navigation_tree.ts
@@ -96,17 +96,21 @@ export const createAiNavigationTree = (): NavigationTreeDefinition => ({
],
footer: [
{
- type: 'navItem',
- id: SecurityPageName.landing,
- link: securityLink(SecurityPageName.landing),
- icon: 'launch',
+ id: 'security_solution_ai_nav_footer',
+ type: 'navGroup',
+ children: [
+ {
+ id: SecurityPageName.landing,
+ link: securityLink(SecurityPageName.landing),
+ icon: 'launch',
+ },
+ {
+ link: 'dev_tools',
+ title: i18nStrings.devTools,
+ icon: 'editorCodeBlock',
+ },
+ createStackManagementNavigationTree(),
+ ],
},
- {
- type: 'navItem',
- link: 'dev_tools',
- title: i18nStrings.devTools,
- icon: 'editorCodeBlock',
- },
- createStackManagementNavigationTree(),
],
});
diff --git a/x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/navigation_tree.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/navigation_tree.ts
index 342e9258d62d..5ab8f45351af 100644
--- a/x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/navigation_tree.ts
+++ b/x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/navigation_tree.ts
@@ -82,17 +82,21 @@ export const createNavigationTree = (services: Services): NavigationTreeDefiniti
],
footer: [
{
- type: 'navItem',
- id: SecurityPageName.landing,
- link: securityLink(SecurityPageName.landing),
- icon: 'launch',
+ id: 'security_solution_nav_footer',
+ type: 'navGroup',
+ children: [
+ {
+ id: SecurityPageName.landing,
+ link: securityLink(SecurityPageName.landing),
+ icon: 'launch',
+ },
+ {
+ link: 'dev_tools',
+ title: i18nStrings.devTools,
+ icon: 'editorCodeBlock',
+ },
+ createStackManagementNavigationTree(),
+ ],
},
- {
- type: 'navItem',
- link: 'dev_tools',
- title: i18nStrings.devTools,
- icon: 'editorCodeBlock',
- },
- createStackManagementNavigationTree(),
],
});
diff --git a/x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/stack_management_navigation.ts b/x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/stack_management_navigation.ts
index 39d534c962a3..4c6cdad1929f 100644
--- a/x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/stack_management_navigation.ts
+++ b/x-pack/solutions/security/plugins/security_solution_serverless/public/navigation/stack_management_navigation.ts
@@ -5,16 +5,17 @@
* 2.0.
*/
-import type { GroupDefinition } from '@kbn/core-chrome-browser';
+import type { NodeDefinition } from '@kbn/core-chrome-browser';
import { SecurityPageName } from '@kbn/security-solution-navigation';
import { i18nStrings, securityLink } from '@kbn/security-solution-navigation/links';
-export const createStackManagementNavigationTree = (): GroupDefinition => ({
- type: 'navGroup',
+export const createStackManagementNavigationTree = (): NodeDefinition => ({
id: 'category-management',
title: i18nStrings.projectSettings.title,
icon: 'gear',
breadcrumbStatus: 'hidden',
+ renderAs: 'accordion',
+ spaceBefore: null,
children: [
{
id: 'stack_management', // This id can't be changed as we use it to open the panel programmatically
diff --git a/x-pack/test/functional_search/tests/solution_navigation.ts b/x-pack/test/functional_search/tests/solution_navigation.ts
index 77cdbe00408a..d3b42cd989cd 100644
--- a/x-pack/test/functional_search/tests/solution_navigation.ts
+++ b/x-pack/test/functional_search/tests/solution_navigation.ts
@@ -241,9 +241,14 @@ export default function searchSolutionNavigation({
it('renders only expected items', async () => {
await solutionNavigation.sidenav.openSection('search_project_nav.otherTools');
- await solutionNavigation.sidenav.openSection('project_settings_project_nav');
await solutionNavigation.sidenav.expectSectionOpen('search_project_nav.otherTools');
- await solutionNavigation.sidenav.expectSectionOpen('project_settings_project_nav');
+
+ await solutionNavigation.sidenav.openSection(
+ 'search_project_nav_footer.project_settings_project_nav'
+ );
+ await solutionNavigation.sidenav.expectSectionOpen(
+ 'search_project_nav_footer.project_settings_project_nav'
+ );
await solutionNavigation.sidenav.expectOnlyDefinedLinks([
'search_project_nav',
@@ -265,6 +270,7 @@ export default function searchSolutionNavigation({
'otherTools',
'maps',
'graph',
+ 'search_project_nav_footer',
'project_settings_project_nav',
'management:trained_models',
'stack_management',
diff --git a/x-pack/test/functional_solution_sidenav/tests/observability_sidenav.ts b/x-pack/test/functional_solution_sidenav/tests/observability_sidenav.ts
index 7bc49a1ecf08..6303fefc0cab 100644
--- a/x-pack/test/functional_solution_sidenav/tests/observability_sidenav.ts
+++ b/x-pack/test/functional_solution_sidenav/tests/observability_sidenav.ts
@@ -79,7 +79,9 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
}
// navigate to a different section
- await solutionNavigation.sidenav.openSection('project_settings_project_nav');
+ await solutionNavigation.sidenav.openSection(
+ 'observability_project_nav_footer.project_settings_project_nav'
+ );
await solutionNavigation.sidenav.clickLink({ navId: 'stack_management' });
await solutionNavigation.sidenav.expectLinkActive({ navId: 'stack_management' });
await solutionNavigation.sidenav.clickPanelLink('management:tags');
diff --git a/x-pack/test/functional_solution_sidenav/tests/search_sidenav.ts b/x-pack/test/functional_solution_sidenav/tests/search_sidenav.ts
index 7aa055fe06db..ee6aaaadfde0 100644
--- a/x-pack/test/functional_solution_sidenav/tests/search_sidenav.ts
+++ b/x-pack/test/functional_solution_sidenav/tests/search_sidenav.ts
@@ -60,7 +60,9 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
});
// navigate to a different section
- await solutionNavigation.sidenav.openSection('project_settings_project_nav');
+ await solutionNavigation.sidenav.openSection(
+ 'search_project_nav_footer.project_settings_project_nav'
+ );
await solutionNavigation.sidenav.clickLink({ navId: 'stack_management' });
await solutionNavigation.sidenav.expectLinkActive({ navId: 'stack_management' });
await solutionNavigation.breadcrumbs.expectBreadcrumbExists({ text: 'Data' });
diff --git a/x-pack/test/observability_functional/apps/observability/sidenav/sidenav.ts b/x-pack/test/observability_functional/apps/observability/sidenav/sidenav.ts
index 92735bc0bd84..d8addf538c44 100644
--- a/x-pack/test/observability_functional/apps/observability/sidenav/sidenav.ts
+++ b/x-pack/test/observability_functional/apps/observability/sidenav/sidenav.ts
@@ -76,7 +76,9 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
});
// Supplied configurations is under Management -> Anomaly Detection Jobs -> Click button mlSuppliedConfigurationsButton
- await solutionNavigation.sidenav.openSection('project_settings_project_nav');
+ await solutionNavigation.sidenav.openSection(
+ 'observability_project_nav_footer.project_settings_project_nav'
+ );
await solutionNavigation.sidenav.clickLink({ navId: 'stack_management' });
await solutionNavigation.sidenav.expectLinkActive({ navId: 'stack_management' });
await solutionNavigation.sidenav.clickPanelLink('management:anomaly_detection');
diff --git a/x-pack/test_serverless/functional/services/ml/observability_navigation.ts b/x-pack/test_serverless/functional/services/ml/observability_navigation.ts
index 2e30db4930f2..a3c333660685 100644
--- a/x-pack/test_serverless/functional/services/ml/observability_navigation.ts
+++ b/x-pack/test_serverless/functional/services/ml/observability_navigation.ts
@@ -16,7 +16,9 @@ export function MachineLearningNavigationProviderObservability({
const svlCommonNavigation = getPageObject('svlCommonNavigation');
async function navigateToArea(id: string, expectedTestSubject: string) {
- await svlCommonNavigation.sidenav.openSection('project_settings_project_nav');
+ await svlCommonNavigation.sidenav.openSection(
+ 'observability_project_nav_footer.project_settings_project_nav'
+ );
await retry.tryForTime(5 * 1000, async () => {
await svlCommonNavigation.sidenav.clickLink({ navId: 'management' });
await svlCommonNavigation.sidenav.clickPanelLink(id);
diff --git a/x-pack/test_serverless/functional/services/ml/security_navigation.ts b/x-pack/test_serverless/functional/services/ml/security_navigation.ts
index 0a7944b1aaf5..8f7e020018a5 100644
--- a/x-pack/test_serverless/functional/services/ml/security_navigation.ts
+++ b/x-pack/test_serverless/functional/services/ml/security_navigation.ts
@@ -16,7 +16,9 @@ export function MachineLearningNavigationProviderSecurity({
const retry = getService('retry');
async function navigateToArea(id: string, expectedTestSubject: string) {
- await svlCommonNavigation.sidenav.openSection('category-management');
+ await svlCommonNavigation.sidenav.openSection(
+ 'security_solution_nav_footer.category-management'
+ );
await retry.tryForTime(5 * 1000, async () => {
await svlCommonNavigation.sidenav.clickLink({ navId: 'stack_management' });
await svlCommonNavigation.sidenav.clickPanelLink(id);
diff --git a/x-pack/test_serverless/functional/test_suites/observability/navigation.ts b/x-pack/test_serverless/functional/test_suites/observability/navigation.ts
index e5205a86f2f3..ea64e8b8e855 100644
--- a/x-pack/test_serverless/functional/test_suites/observability/navigation.ts
+++ b/x-pack/test_serverless/functional/test_suites/observability/navigation.ts
@@ -32,7 +32,9 @@ export default function ({ getPageObject, getService }: FtrProviderContext) {
await svlCommonNavigation.breadcrumbs.expectBreadcrumbExists({
deepLinkId: 'observabilityOnboarding',
});
- await svlCommonNavigation.sidenav.expectSectionClosed('project_settings_project_nav');
+ await svlCommonNavigation.sidenav.expectSectionClosed(
+ 'observability_project_nav_footer.project_settings_project_nav'
+ );
// navigate to the logs explorer tab by default
await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'discover' });
@@ -48,7 +50,9 @@ export default function ({ getPageObject, getService }: FtrProviderContext) {
await svlCommonNavigation.sidenav.clickLink({ navId: 'observabilityAIAssistant' }); // click on AI Assistant link
await svlCommonNavigation.breadcrumbs.expectBreadcrumbExists({ text: 'AI Assistant' });
// navigate to a different section
- await svlCommonNavigation.sidenav.openSection('project_settings_project_nav');
+ await svlCommonNavigation.sidenav.openSection(
+ 'observability_project_nav_footer.project_settings_project_nav'
+ );
await svlCommonNavigation.sidenav.clickLink({ navId: 'management' });
await svlCommonNavigation.sidenav.expectLinkActive({ navId: 'management' });
await svlCommonNavigation.sidenav.clickPanelLink('management:tags');
@@ -59,18 +63,24 @@ export default function ({ getPageObject, getService }: FtrProviderContext) {
await svlCommonNavigation.breadcrumbs.expectBreadcrumbExists({
deepLinkId: 'observabilityOnboarding',
});
- await svlCommonNavigation.sidenav.expectSectionOpen(`project_settings_project_nav`); // remains open
+ await svlCommonNavigation.sidenav.expectSectionOpen(
+ 'observability_project_nav_footer.project_settings_project_nav'
+ ); // remains open
await expectNoPageReload();
});
it('active sidenav section is auto opened on load', async () => {
- await svlCommonNavigation.sidenav.openSection('project_settings_project_nav');
+ await svlCommonNavigation.sidenav.openSection(
+ 'observability_project_nav_footer.project_settings_project_nav'
+ );
await svlCommonNavigation.sidenav.clickLink({ navId: 'management' });
await svlCommonNavigation.sidenav.clickPanelLink('management:tags');
await browser.refresh();
await svlCommonNavigation.expectExists();
- await svlCommonNavigation.sidenav.expectSectionOpen('project_settings_project_nav');
+ await svlCommonNavigation.sidenav.expectSectionOpen(
+ 'observability_project_nav_footer.project_settings_project_nav'
+ );
});
it('shows cases in sidebar navigation', async () => {
@@ -120,7 +130,9 @@ export default function ({ getPageObject, getService }: FtrProviderContext) {
});
it('navigates to integrations', async () => {
- await svlCommonNavigation.sidenav.openSection('project_settings_project_nav');
+ await svlCommonNavigation.sidenav.openSection(
+ 'observability_project_nav_footer.project_settings_project_nav'
+ );
await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'integrations' });
await svlCommonNavigation.breadcrumbs.expectBreadcrumbTexts([
'Integrations',
@@ -129,13 +141,17 @@ export default function ({ getPageObject, getService }: FtrProviderContext) {
});
it('navigates to fleet', async () => {
- await svlCommonNavigation.sidenav.openSection('project_settings_project_nav');
+ await svlCommonNavigation.sidenav.openSection(
+ 'observability_project_nav_footer.project_settings_project_nav'
+ );
await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'fleet' });
await svlCommonNavigation.breadcrumbs.expectBreadcrumbTexts(['Fleet', 'Agents']);
});
it('navigates to maintenance windows', async () => {
- await svlCommonNavigation.sidenav.openSection('project_settings_project_nav');
+ await svlCommonNavigation.sidenav.openSection(
+ 'observability_project_nav_footer.project_settings_project_nav'
+ );
await svlCommonNavigation.sidenav.clickLink({ navId: 'management' });
await svlCommonNavigation.sidenav.clickPanelLink('management:maintenanceWindows');
await svlCommonNavigation.breadcrumbs.expectBreadcrumbTexts([
diff --git a/x-pack/test_serverless/functional/test_suites/search/ml/trained_models_list.ts b/x-pack/test_serverless/functional/test_suites/search/ml/trained_models_list.ts
index 519c3c303f38..1245ebc3a806 100644
--- a/x-pack/test_serverless/functional/test_suites/search/ml/trained_models_list.ts
+++ b/x-pack/test_serverless/functional/test_suites/search/ml/trained_models_list.ts
@@ -29,7 +29,9 @@ export default function ({ getService, getPageObjects, getPageObject }: FtrProvi
describe('page navigation', () => {
it('renders trained models list', async () => {
- await svlCommonNavigation.sidenav.openSection('project_settings_project_nav');
+ await svlCommonNavigation.sidenav.openSection(
+ 'search_project_nav_footer.project_settings_project_nav'
+ );
await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'management:trained_models' });
await svlCommonNavigation.sidenav.expectLinkActive({
deepLinkId: 'management:trained_models',
diff --git a/x-pack/test_serverless/functional/test_suites/search/navigation.ts b/x-pack/test_serverless/functional/test_suites/search/navigation.ts
index 5c91600bd43f..907d4d7ffaf2 100644
--- a/x-pack/test_serverless/functional/test_suites/search/navigation.ts
+++ b/x-pack/test_serverless/functional/test_suites/search/navigation.ts
@@ -127,7 +127,9 @@ export default function ({ getPageObject, getService }: FtrProviderContext) {
}
// Open Project Settings
- await solutionNavigation.sidenav.openSection('project_settings_project_nav');
+ await solutionNavigation.sidenav.openSection(
+ 'search_project_nav_footer.project_settings_project_nav'
+ );
// check Project Settings
// > Trained Models
await solutionNavigation.sidenav.clickLink({
@@ -172,7 +174,9 @@ export default function ({ getPageObject, getService }: FtrProviderContext) {
});
it('navigate management', async () => {
- await svlCommonNavigation.sidenav.openSection('project_settings_project_nav');
+ await svlCommonNavigation.sidenav.openSection(
+ 'search_project_nav_footer.project_settings_project_nav'
+ );
await svlCommonNavigation.sidenav.clickLink({ navId: 'management' });
await svlCommonNavigation.sidenav.clickPanelLink('management:tags');
await svlCommonNavigation.breadcrumbs.expectBreadcrumbTexts(['Management', 'Tags']);
@@ -206,7 +210,9 @@ export default function ({ getPageObject, getService }: FtrProviderContext) {
});
it('renders expected side navigation items', async () => {
- await solutionNavigation.sidenav.openSection('project_settings_project_nav');
+ await solutionNavigation.sidenav.openSection(
+ 'search_project_nav_footer.project_settings_project_nav'
+ );
// Verify all expected top-level links exist
await solutionNavigation.sidenav.expectLinkExists({ text: 'Data' });
await solutionNavigation.sidenav.expectLinkExists({ text: 'Index Management' });
@@ -230,7 +236,9 @@ export default function ({ getPageObject, getService }: FtrProviderContext) {
await solutionNavigation.sidenav.expectLinkExists({ text: 'Performance' });
await solutionNavigation.sidenav.expectLinkExists({ text: 'Billing and subscription' });
- await solutionNavigation.sidenav.openSection('project_settings_project_nav');
+ await solutionNavigation.sidenav.openSection(
+ 'search_project_nav_footer.project_settings_project_nav'
+ );
await solutionNavigation.sidenav.expectOnlyDefinedLinks([
'search_project_nav',
'data',
@@ -249,6 +257,7 @@ export default function ({ getPageObject, getService }: FtrProviderContext) {
'otherTools',
'maps',
'gettingStarted',
+ 'search_project_nav_footer',
'project_settings_project_nav',
'management:trained_models',
'management',
diff --git a/x-pack/test_serverless/functional/test_suites/search/pipelines.ts b/x-pack/test_serverless/functional/test_suites/search/pipelines.ts
index 2c9164926f82..8f90a32c747a 100644
--- a/x-pack/test_serverless/functional/test_suites/search/pipelines.ts
+++ b/x-pack/test_serverless/functional/test_suites/search/pipelines.ts
@@ -19,7 +19,9 @@ export default function ({ getPageObjects }: FtrProviderContext) {
describe('ingest pipelines', function () {
before(async () => {
await pageObjects.svlCommonPage.loginWithRole('developer');
- await pageObjects.svlCommonNavigation.sidenav.openSection('project_settings_project_nav');
+ await pageObjects.svlCommonNavigation.sidenav.openSection(
+ 'search_project_nav_footer.project_settings_project_nav'
+ );
await pageObjects.svlCommonNavigation.sidenav.clickLink({ navId: 'management' });
await pageObjects.svlCommonNavigation.sidenav.clickPanelLink('management:ingest_pipelines');
});
diff --git a/x-pack/test_serverless/functional/test_suites/search/rules/rule_details.ts b/x-pack/test_serverless/functional/test_suites/search/rules/rule_details.ts
index 4cf5664c3514..5016c6f2efd5 100644
--- a/x-pack/test_serverless/functional/test_suites/search/rules/rule_details.ts
+++ b/x-pack/test_serverless/functional/test_suites/search/rules/rule_details.ts
@@ -43,7 +43,9 @@ export default ({ getPageObject, getService }: FtrProviderContext) => {
const navigateToConnectors = async () => {
await svlSearchNavigation.navigateToLandingPage();
- await svlCommonNavigation.sidenav.openSection('project_settings_project_nav');
+ await svlCommonNavigation.sidenav.openSection(
+ 'search_project_nav_footer.project_settings_project_nav'
+ );
await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'management' });
await testSubjects.click('app-card-triggersActionsConnectors');
};
diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/navigation.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/navigation.ts
index b5ecfa9e63a3..b4d4e98e4428 100644
--- a/x-pack/test_serverless/functional/test_suites/security/ftr/navigation.ts
+++ b/x-pack/test_serverless/functional/test_suites/security/ftr/navigation.ts
@@ -78,7 +78,9 @@ export default function ({ getPageObject, getService }: FtrProviderContext) {
it('navigates to maintenance windows', async () => {
await svlCommonPage.loginAsAdmin();
await svlSecNavigation.navigateToLandingPage();
- await svlCommonNavigation.sidenav.openSection('category-management');
+ await svlCommonNavigation.sidenav.openSection(
+ 'security_solution_nav_footer.category-management'
+ );
await svlCommonNavigation.sidenav.clickLink({ navId: 'stack_management' });
await svlCommonNavigation.sidenav.clickPanelLink('management:maintenanceWindows');
await svlCommonNavigation.breadcrumbs.expectBreadcrumbTexts([