mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
TopNav: Fixes breadcrumb issues and title for apps when topnav is disabled (#61835)
This commit is contained in:
parent
97fc6c4eb4
commit
cd99bfec68
@ -144,5 +144,22 @@ describe('breadcrumb utils', () => {
|
|||||||
{ text: 'My page', href: '/my-page' },
|
{ text: 'My page', href: '/my-page' },
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('Should add breadcrumbs for child pages that have not set parentItem', () => {
|
||||||
|
const pageNav: NavModelItem = {
|
||||||
|
text: 'My page',
|
||||||
|
url: '/my-page',
|
||||||
|
children: [
|
||||||
|
{ text: 'A', url: '/a', active: true },
|
||||||
|
{ text: 'B', url: '/b' },
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
expect(buildBreadcrumbs(mockHomeNav, pageNav, mockHomeNav)).toEqual([
|
||||||
|
{ text: 'Home', href: '/home' },
|
||||||
|
{ text: 'My page', href: '/my-page' },
|
||||||
|
{ text: 'A', href: '/a' },
|
||||||
|
]);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -16,6 +16,7 @@ export function buildBreadcrumbs(sectionNav: NavModelItem, pageNav?: NavModelIte
|
|||||||
if (urlSearchParams.has('editview')) {
|
if (urlSearchParams.has('editview')) {
|
||||||
urlToMatch += `?editview=${urlSearchParams.get('editview')}`;
|
urlToMatch += `?editview=${urlSearchParams.get('editview')}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!foundHome && !node.hideFromBreadcrumbs) {
|
if (!foundHome && !node.hideFromBreadcrumbs) {
|
||||||
if (homeNav && urlToMatch === homeNav.url) {
|
if (homeNav && urlToMatch === homeNav.url) {
|
||||||
crumbs.unshift({ text: getNavTitle(homeNav.id) ?? homeNav.text, href: node.url ?? '' });
|
crumbs.unshift({ text: getNavTitle(homeNav.id) ?? homeNav.text, href: node.url ?? '' });
|
||||||
@ -31,7 +32,18 @@ export function buildBreadcrumbs(sectionNav: NavModelItem, pageNav?: NavModelIte
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (pageNav) {
|
if (pageNav) {
|
||||||
addCrumbs(pageNav);
|
if (pageNav.url && pageNav.children) {
|
||||||
|
const child = pageNav.children.find((child) => child.active);
|
||||||
|
if (child) {
|
||||||
|
addCrumbs(child);
|
||||||
|
// Some pages set up children but they are not connected to parent pageNav
|
||||||
|
if (child.parentItem !== pageNav) {
|
||||||
|
addCrumbs(pageNav);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
addCrumbs(pageNav);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
addCrumbs(sectionNav);
|
addCrumbs(sectionNav);
|
||||||
|
@ -112,7 +112,8 @@ const stateSlice = createSlice({
|
|||||||
...pluginNav,
|
...pluginNav,
|
||||||
node: {
|
node: {
|
||||||
...pluginNav.main,
|
...pluginNav.main,
|
||||||
hideFromBreadcrumbs: true,
|
// Because breadcumbs code is also used to set title when topnav should only set hideFromBreadcrumbs when topnav is enabled
|
||||||
|
hideFromBreadcrumbs: config.featureToggles.topnav,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user