mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 09:19:04 -04:00
[8.x] [Solution nav] Use flyout for Stack Management in Search and Observability solutions (#208632) (#210630)
# Backport This will backport the following commits from `main` to `8.x`: - [[Solution nav] Use flyout for Stack Management in Search and Observability solutions (#208632)](https://github.com/elastic/kibana/pull/208632) <!--- Backport version: 9.4.3 --> ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sqren/backport) <!--BACKPORT [{"author":{"name":"Tim Sullivan","email":"tsullivan@users.noreply.github.com"},"sourceCommit":{"committedDate":"2025-02-11T16:14:32Z","message":"[Solution nav] Use flyout for Stack Management in Search and Observability solutions (#208632)\n\n## Summary\r\n\r\nCloses https://github.com/elastic/kibana/issues/208636\r\nPart of https://github.com/elastic/kibana-team/issues/1439\r\n\r\n### Checklist\r\n\r\nCheck the PR satisfies following conditions. \r\n\r\nReviewers should verify this PR satisfies this list as well.\r\n\r\n- [x] [Unit or functional\r\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\r\nwere updated or added to match the most common scenarios\r\n\r\n### Identify risks\r\n\r\nDoes this PR introduce any risks? For example, consider risks like hard\r\nto test bugs, performance regression, potential of data loss.\r\n\r\nDescribe the risk, its severity, and mitigation for each identified\r\nrisk. Invite stakeholders and evaluate how to proceed before merging.\r\n\r\n- [ ] New lists of Stack Management navigation items were added for\r\nflyout menus in serverless projects using static declarations. There is\r\na risk that these lists have missing items, which could hurt user\r\nexperience by making the pages harder to navigate to.\r\n\r\n### Screenshots\r\n<details><summary>Observability / Serverless</summary>\r\n\r\n\r\n\r\n</details>\r\n<details><summary>Observability / Stateful</summary>\r\n\r\n\r\n\r\n</details>\r\n<details><summary>Search / Serverless</summary>\r\n\r\n\r\n\r\n</details>\r\n<details><summary>Search / Stateful</summary>\r\n\r\n","sha":"f16446486c7695a13f564d53f7d630337a9a50e8","branchLabelMapping":{"^v9.1.0$":"main","^v8.19.0$":"8.x","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","v9.0.0","Team:SharedUX","ci:project-deploy-observability","Team:obs-ux-management","backport:version","v8.18.0","v9.1.0","v8.19.0"],"title":"[Solution nav] Use flyout for Stack Management in Search and Observability solutions","number":208632,"url":"https://github.com/elastic/kibana/pull/208632","mergeCommit":{"message":"[Solution nav] Use flyout for Stack Management in Search and Observability solutions (#208632)\n\n## Summary\r\n\r\nCloses https://github.com/elastic/kibana/issues/208636\r\nPart of https://github.com/elastic/kibana-team/issues/1439\r\n\r\n### Checklist\r\n\r\nCheck the PR satisfies following conditions. \r\n\r\nReviewers should verify this PR satisfies this list as well.\r\n\r\n- [x] [Unit or functional\r\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\r\nwere updated or added to match the most common scenarios\r\n\r\n### Identify risks\r\n\r\nDoes this PR introduce any risks? For example, consider risks like hard\r\nto test bugs, performance regression, potential of data loss.\r\n\r\nDescribe the risk, its severity, and mitigation for each identified\r\nrisk. Invite stakeholders and evaluate how to proceed before merging.\r\n\r\n- [ ] New lists of Stack Management navigation items were added for\r\nflyout menus in serverless projects using static declarations. There is\r\na risk that these lists have missing items, which could hurt user\r\nexperience by making the pages harder to navigate to.\r\n\r\n### Screenshots\r\n<details><summary>Observability / Serverless</summary>\r\n\r\n\r\n\r\n</details>\r\n<details><summary>Observability / Stateful</summary>\r\n\r\n\r\n\r\n</details>\r\n<details><summary>Search / Serverless</summary>\r\n\r\n\r\n\r\n</details>\r\n<details><summary>Search / Stateful</summary>\r\n\r\n","sha":"f16446486c7695a13f564d53f7d630337a9a50e8"}},"sourceBranch":"main","suggestedTargetBranches":["9.0","8.18","8.x"],"targetPullRequestStates":[{"branch":"9.0","label":"v9.0.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"8.18","label":"v8.18.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"main","label":"v9.1.0","branchLabelMappingKey":"^v9.1.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/208632","number":208632,"mergeCommit":{"message":"[Solution nav] Use flyout for Stack Management in Search and Observability solutions (#208632)\n\n## Summary\r\n\r\nCloses https://github.com/elastic/kibana/issues/208636\r\nPart of https://github.com/elastic/kibana-team/issues/1439\r\n\r\n### Checklist\r\n\r\nCheck the PR satisfies following conditions. \r\n\r\nReviewers should verify this PR satisfies this list as well.\r\n\r\n- [x] [Unit or functional\r\ntests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)\r\nwere updated or added to match the most common scenarios\r\n\r\n### Identify risks\r\n\r\nDoes this PR introduce any risks? For example, consider risks like hard\r\nto test bugs, performance regression, potential of data loss.\r\n\r\nDescribe the risk, its severity, and mitigation for each identified\r\nrisk. Invite stakeholders and evaluate how to proceed before merging.\r\n\r\n- [ ] New lists of Stack Management navigation items were added for\r\nflyout menus in serverless projects using static declarations. There is\r\na risk that these lists have missing items, which could hurt user\r\nexperience by making the pages harder to navigate to.\r\n\r\n### Screenshots\r\n<details><summary>Observability / Serverless</summary>\r\n\r\n\r\n\r\n</details>\r\n<details><summary>Observability / Stateful</summary>\r\n\r\n\r\n\r\n</details>\r\n<details><summary>Search / Serverless</summary>\r\n\r\n\r\n\r\n</details>\r\n<details><summary>Search / Stateful</summary>\r\n\r\n","sha":"f16446486c7695a13f564d53f7d630337a9a50e8"}},{"branch":"8.x","label":"v8.19.0","branchLabelMappingKey":"^v8.19.0$","isSourceBranch":false,"state":"NOT_CREATED"}]}] BACKPORT--> --------- Co-authored-by: Tim Sullivan <tsullivan@users.noreply.github.com> Co-authored-by: Timothy Sullivan <tsullivan@elastic.co>
This commit is contained in:
parent
fae24a980f
commit
530f5329c4
10 changed files with 168 additions and 29 deletions
|
@ -36,6 +36,7 @@ export type ManagementId =
|
|||
| 'cross_cluster_replication'
|
||||
| 'dataViews'
|
||||
| 'data_quality'
|
||||
| 'data_usage'
|
||||
| 'filesManagement'
|
||||
| 'license_management'
|
||||
| 'index_lifecycle_management'
|
||||
|
|
|
@ -465,7 +465,6 @@ function createNavTree({ streamsAvailable }: { streamsAvailable?: boolean }) {
|
|||
children: [
|
||||
{
|
||||
id: 'stack_management', // This id can't be changed as we use it to open the panel programmatically
|
||||
link: 'management',
|
||||
title: i18n.translate('xpack.observability.obltNav.stackManagement', {
|
||||
defaultMessage: 'Stack Management',
|
||||
}),
|
||||
|
|
|
@ -368,10 +368,73 @@ export const createNavigationTree = ({
|
|||
breadcrumbStatus: 'hidden',
|
||||
children: [
|
||||
{
|
||||
link: 'management',
|
||||
id: 'management',
|
||||
title: i18n.translate('xpack.serverlessObservability.nav.mngt', {
|
||||
defaultMessage: 'Management',
|
||||
}),
|
||||
spaceBefore: null,
|
||||
renderAs: 'panelOpener',
|
||||
children: [
|
||||
{
|
||||
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',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
link: 'integrations',
|
||||
|
|
|
@ -358,7 +358,6 @@ export const getNavigationTreeDefinition = ({
|
|||
},
|
||||
],
|
||||
id: 'stack_management', // This id can't be changed as we use it to open the panel programmatically
|
||||
link: 'management',
|
||||
renderAs: 'panelOpener',
|
||||
spaceBefore: null,
|
||||
title: i18n.translate('xpack.enterpriseSearch.searchNav.mngt', {
|
||||
|
|
|
@ -163,10 +163,86 @@ export const navigationTree = ({ isAppRegistered }: ApplicationStart): Navigatio
|
|||
}),
|
||||
},
|
||||
{
|
||||
link: 'management',
|
||||
id: 'management',
|
||||
title: i18n.translate('xpack.serverlessSearch.nav.mngt', {
|
||||
defaultMessage: 'Management',
|
||||
}),
|
||||
spaceBefore: null,
|
||||
renderAs: 'panelOpener',
|
||||
children: [
|
||||
{
|
||||
title: i18n.translate('xpack.serverlessSearch.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.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: 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',
|
||||
|
|
|
@ -80,8 +80,9 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
|
|||
|
||||
// navigate to a different section
|
||||
await solutionNavigation.sidenav.openSection('project_settings_project_nav');
|
||||
await solutionNavigation.sidenav.clickLink({ deepLinkId: 'management' });
|
||||
await solutionNavigation.sidenav.expectLinkActive({ deepLinkId: 'management' });
|
||||
await solutionNavigation.sidenav.clickLink({ navId: 'stack_management' });
|
||||
await solutionNavigation.sidenav.expectLinkActive({ navId: 'stack_management' });
|
||||
await solutionNavigation.sidenav.clickPanelLink('management:tags');
|
||||
await solutionNavigation.breadcrumbs.expectBreadcrumbExists({ text: 'Stack Management' });
|
||||
|
||||
// navigate back to the home page using header logo
|
||||
|
|
|
@ -62,8 +62,9 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
|
|||
|
||||
// navigate to a different section
|
||||
await solutionNavigation.sidenav.openSection('project_settings_project_nav');
|
||||
await solutionNavigation.sidenav.clickLink({ deepLinkId: 'management' });
|
||||
await solutionNavigation.sidenav.expectLinkActive({ deepLinkId: 'management' });
|
||||
await solutionNavigation.sidenav.clickLink({ navId: 'stack_management' });
|
||||
await solutionNavigation.sidenav.expectLinkActive({ navId: 'stack_management' });
|
||||
await solutionNavigation.sidenav.clickPanelLink('management:tags');
|
||||
await solutionNavigation.breadcrumbs.expectBreadcrumbExists({ text: 'Stack Management' });
|
||||
|
||||
// navigate back to the home page using header logo
|
||||
|
|
|
@ -50,9 +50,10 @@ export default function ({ getPageObject, getService }: FtrProviderContext) {
|
|||
await svlCommonNavigation.breadcrumbs.expectBreadcrumbExists({ text: 'AI Assistant' });
|
||||
// navigate to a different section
|
||||
await svlCommonNavigation.sidenav.openSection('project_settings_project_nav');
|
||||
await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'management' });
|
||||
await svlCommonNavigation.sidenav.expectLinkActive({ deepLinkId: 'management' });
|
||||
await svlCommonNavigation.breadcrumbs.expectBreadcrumbExists({ deepLinkId: 'management' });
|
||||
await svlCommonNavigation.sidenav.clickLink({ navId: 'management' });
|
||||
await svlCommonNavigation.sidenav.expectLinkActive({ navId: 'management' });
|
||||
await svlCommonNavigation.sidenav.clickPanelLink('management:tags');
|
||||
await svlCommonNavigation.breadcrumbs.expectBreadcrumbTexts(['Management', 'Tags']);
|
||||
|
||||
// navigate back to serverless oblt overview
|
||||
await svlCommonNavigation.clickLogo();
|
||||
|
@ -66,7 +67,8 @@ export default function ({ getPageObject, getService }: FtrProviderContext) {
|
|||
|
||||
it('active sidenav section is auto opened on load', async () => {
|
||||
await svlCommonNavigation.sidenav.openSection('project_settings_project_nav');
|
||||
await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'management' });
|
||||
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');
|
||||
|
@ -135,8 +137,8 @@ export default function ({ getPageObject, getService }: FtrProviderContext) {
|
|||
|
||||
it('navigates to maintenance windows', async () => {
|
||||
await svlCommonNavigation.sidenav.openSection('project_settings_project_nav');
|
||||
await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'management' });
|
||||
await testSubjects.click('app-card-maintenanceWindows');
|
||||
await svlCommonNavigation.sidenav.clickLink({ navId: 'management' });
|
||||
await svlCommonNavigation.sidenav.clickPanelLink('management:maintenanceWindows');
|
||||
await svlCommonNavigation.breadcrumbs.expectBreadcrumbTexts([
|
||||
'Management',
|
||||
'Maintenance Windows',
|
||||
|
|
|
@ -184,16 +184,10 @@ export default function ({ getPageObject, getService }: FtrProviderContext) {
|
|||
deepLinkId: 'ml:modelManagement',
|
||||
});
|
||||
// > Management
|
||||
await solutionNavigation.sidenav.clickLink({
|
||||
deepLinkId: 'management',
|
||||
});
|
||||
await solutionNavigation.sidenav.expectLinkActive({
|
||||
deepLinkId: 'management',
|
||||
});
|
||||
await solutionNavigation.breadcrumbs.expectBreadcrumbExists({ text: 'Management' });
|
||||
await solutionNavigation.breadcrumbs.expectBreadcrumbExists({
|
||||
deepLinkId: 'management',
|
||||
});
|
||||
await solutionNavigation.sidenav.clickLink({ navId: 'management' });
|
||||
await solutionNavigation.sidenav.expectLinkActive({ navId: 'management' });
|
||||
await svlCommonNavigation.sidenav.clickPanelLink('management:tags');
|
||||
await svlCommonNavigation.breadcrumbs.expectBreadcrumbTexts(['Management', 'Tags']);
|
||||
|
||||
// navigate back to serverless search overview
|
||||
await svlCommonNavigation.clickLogo();
|
||||
|
@ -226,9 +220,12 @@ export default function ({ getPageObject, getService }: FtrProviderContext) {
|
|||
|
||||
it('navigate management', async () => {
|
||||
await svlCommonNavigation.sidenav.openSection('project_settings_project_nav');
|
||||
await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'management' });
|
||||
await svlCommonNavigation.breadcrumbs.expectBreadcrumbTexts(['Management']);
|
||||
await testSubjects.click('app-card-dataViews');
|
||||
await svlCommonNavigation.sidenav.clickLink({ navId: 'management' });
|
||||
await svlCommonNavigation.sidenav.clickPanelLink('management:tags');
|
||||
await svlCommonNavigation.breadcrumbs.expectBreadcrumbTexts(['Management', 'Tags']);
|
||||
|
||||
await svlCommonNavigation.sidenav.clickLink({ navId: 'management' });
|
||||
await svlCommonNavigation.sidenav.clickPanelLink('management:dataViews');
|
||||
await svlCommonNavigation.breadcrumbs.expectBreadcrumbTexts(['Management', 'Data views']);
|
||||
});
|
||||
|
||||
|
|
|
@ -20,8 +20,8 @@ export default function ({ getPageObjects }: FtrProviderContext) {
|
|||
before(async () => {
|
||||
await pageObjects.svlCommonPage.loginWithRole('developer');
|
||||
await pageObjects.svlCommonNavigation.sidenav.openSection('project_settings_project_nav');
|
||||
await pageObjects.svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'management' });
|
||||
await pageObjects.svlManagementPage.clickIngestPipelinesManagementCard();
|
||||
await pageObjects.svlCommonNavigation.sidenav.clickLink({ navId: 'management' });
|
||||
await pageObjects.svlCommonNavigation.sidenav.clickPanelLink('management:ingest_pipelines');
|
||||
});
|
||||
|
||||
it('has embedded console', async () => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue