[ResponseOps][Serverless]Maintenance window page displays dead breadcrumb for management (#201147)

Closes https://github.com/elastic/kibana/issues/189318

## Summary

- the issue was resolved by using
useKibana.services.serverless.setBreadcrumbs instead of
chrome.setBreadcrumbs, this ensures that breadcrumb functionality is
correctly handled within serverless observability.



https://github.com/user-attachments/assets/d805b54f-74b4-424f-8304-dced09718ebb
This commit is contained in:
Georgiana-Andreea Onoleață 2024-12-10 18:13:43 +02:00 committed by GitHub
parent 1c6b356fc5
commit 5a67a033a3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 45 additions and 20 deletions

View file

@ -1,19 +1,14 @@
{
"type": "plugin",
"id": "@kbn/alerting-plugin",
"owner": [
"@elastic/response-ops"
],
"owner": ["@elastic/response-ops"],
"group": "platform",
"visibility": "shared",
"plugin": {
"id": "alerting",
"browser": true,
"server": true,
"configPath": [
"xpack",
"alerting"
],
"configPath": ["xpack", "alerting"],
"requiredPlugins": [
"actions",
"data",
@ -35,11 +30,9 @@
"usageCollection",
"security",
"monitoringCollection",
"spaces"
"spaces",
"serverless"
],
"extraPublicDirs": [
"common",
"common/parse_duration"
]
"extraPublicDirs": ["common", "common/parse_duration"]
}
}

View file

@ -72,19 +72,25 @@ export const useBreadcrumbs = (pageDeepLink: MaintenanceWindowDeepLinkIds) => {
services: {
chrome: { docTitle, setBreadcrumbs },
application: { navigateToUrl },
serverless,
},
} = useKibana();
const setTitle = docTitle.change;
const { getAppUrl } = useNavigation(MANAGEMENT_APP_ID);
useEffect(() => {
const breadcrumbs = [
{
text: i18n.translate('xpack.alerting.breadcrumbs.stackManagementLinkText', {
defaultMessage: 'Stack Management',
}),
href: getAppUrl(),
},
...(!serverless
? [
{
text: i18n.translate('xpack.alerting.breadcrumbs.stackManagementLinkText', {
defaultMessage: 'Stack Management',
}),
href: getAppUrl(),
},
]
: []),
...(topLevelBreadcrumb[pageDeepLink]
? [
{
@ -98,11 +104,14 @@ export const useBreadcrumbs = (pageDeepLink: MaintenanceWindowDeepLinkIds) => {
},
];
if (setBreadcrumbs) {
if (serverless?.setBreadcrumbs) {
serverless.setBreadcrumbs(breadcrumbs);
} else {
setBreadcrumbs(addClickHandlers(breadcrumbs, navigateToUrl));
}
if (setTitle) {
setTitle(getTitleFromBreadCrumbs(breadcrumbs));
}
}, [pageDeepLink, getAppUrl, navigateToUrl, setBreadcrumbs, setTitle]);
}, [pageDeepLink, getAppUrl, navigateToUrl, setBreadcrumbs, setTitle, serverless]);
};

View file

@ -12,6 +12,7 @@ import { SpacesPluginStart } from '@kbn/spaces-plugin/public';
import { LicensingPluginStart } from '@kbn/licensing-plugin/public';
import type { DataPublicPluginStart } from '@kbn/data-plugin/public';
import type { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public';
import type { ServerlessPluginStart } from '@kbn/serverless/public';
import { AlertNavigationRegistry, AlertNavigationHandler } from './alert_navigation_registry';
import { loadRule, loadRuleType } from './services/rule_api';
@ -68,6 +69,7 @@ export interface AlertingPluginStart {
spaces: SpacesPluginStart;
unifiedSearch: UnifiedSearchPublicPluginStart;
data: DataPublicPluginStart;
serverless?: ServerlessPluginStart;
}
export interface AlertingUIConfig {

View file

@ -132,5 +132,15 @@ export default function ({ getPageObject, getService }: FtrProviderContext) {
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.clickLink({ deepLinkId: 'management' });
await testSubjects.click('app-card-maintenanceWindows');
await svlCommonNavigation.breadcrumbs.expectBreadcrumbTexts([
'Management',
'Maintenance Windows',
]);
});
});
}

View file

@ -74,5 +74,16 @@ export default function ({ getPageObject, getService }: FtrProviderContext) {
await testSubjects.existOrFail('cases-all-title');
});
});
it('navigates to maintenance windows', async () => {
await svlCommonPage.loginAsAdmin();
await svlSecNavigation.navigateToLandingPage();
await svlCommonNavigation.sidenav.openSection('category-management');
await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'management' });
await testSubjects.click('app-card-maintenanceWindows');
await svlCommonNavigation.breadcrumbs.expectBreadcrumbTexts([
'Stack Management',
'Maintenance Windows',
]);
});
});
}