mirror of
https://github.com/grafana/grafana.git
synced 2025-02-16 18:34:52 -06:00
* First stab at new page layouts behind feature toggle * Simplifying PageHeader * Progress on a new model that can more easily support new and old page layouts * Progress * rename folder * Progress * Minor change * fixes * Fixing tests * Make breadcrumbs work * Add tests for old Page component * Adding tests for new Page component and behavior * fixing page header test * Fixed test * AppChrome outside route * Renaming folder * Minor fix * Updated * Fixing StoragePage * Fix for banners Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>
30 lines
805 B
TypeScript
30 lines
805 B
TypeScript
import { useSelector } from 'react-redux';
|
|
import { createSelector } from 'reselect';
|
|
|
|
import { NavModel } from '@grafana/data';
|
|
import { getNavModel } from 'app/core/selectors/navModel';
|
|
import { store } from 'app/store/store';
|
|
import { StoreState } from 'app/types';
|
|
|
|
export function usePageNav(navId?: string, oldProp?: NavModel): NavModel | undefined {
|
|
if (oldProp) {
|
|
return oldProp;
|
|
}
|
|
|
|
if (!navId) {
|
|
return;
|
|
}
|
|
|
|
// Page component is used in so many tests, this simplifies not having to initialize a full redux store
|
|
if (!store) {
|
|
return;
|
|
}
|
|
|
|
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
return useSelector(createSelector(getNavIndex, (navIndex) => getNavModel(navIndex, navId ?? 'home')));
|
|
}
|
|
|
|
function getNavIndex(store: StoreState) {
|
|
return store.navIndex;
|
|
}
|