diff --git a/packages/grafana-data/src/types/navModel.ts b/packages/grafana-data/src/types/navModel.ts
index 2c83bb45753..c20ea94656c 100644
--- a/packages/grafana-data/src/types/navModel.ts
+++ b/packages/grafana-data/src/types/navModel.ts
@@ -6,7 +6,6 @@ import { IconName } from './icon';
export interface NavLinkDTO {
id?: string;
text: string;
- description?: string;
subTitle?: string;
icon?: IconName;
img?: string;
@@ -21,6 +20,7 @@ export interface NavLinkDTO {
isSection?: boolean;
children?: NavLinkDTO[];
highlightText?: string;
+ highlightId?: string;
emptyMessageId?: string;
// The ID of the plugin that registered the page (in case it was registered by a plugin, otherwise left empty)
pluginId?: string;
@@ -31,23 +31,13 @@ export interface NavLinkDTO {
export interface NavModelItem extends NavLinkDTO {
children?: NavModelItem[];
active?: boolean;
- breadcrumbs?: NavModelBreadcrumb[];
parentItem?: NavModelItem;
- showOrgSwitcher?: boolean;
onClick?: () => void;
- menuItemType?: NavMenuItemType;
- highlightText?: string;
- highlightId?: string;
tabSuffix?: ComponentType<{ className?: string }>;
hideFromBreadcrumbs?: boolean;
emptyMessage?: string;
}
-export enum NavMenuItemType {
- Section = 'section',
- Item = 'item',
-}
-
/**
* Interface used to describe different kinds of page titles and page navigation. Navmodels are usually generated in the backend and stored in Redux.
*/
@@ -62,11 +52,6 @@ export interface NavModel {
node: NavModelItem;
}
-export interface NavModelBreadcrumb {
- title: string;
- url?: string;
-}
-
export type NavIndex = { [s: string]: NavModelItem };
export enum PageLayoutType {
diff --git a/public/app/core/components/PageHeader/PageHeader.test.tsx b/public/app/core/components/PageHeader/PageHeader.test.tsx
index e7c53a234af..26b256bfd66 100644
--- a/public/app/core/components/PageHeader/PageHeader.test.tsx
+++ b/public/app/core/components/PageHeader/PageHeader.test.tsx
@@ -21,22 +21,4 @@ describe('PageHeader', () => {
expect(screen.getByRole('heading', { name: 'node' })).toBeInTheDocument();
});
});
-
- describe('when the nav tree has a node with breadcrumbs and a title', () => {
- it('should render the title with breadcrumbs first and then title last', async () => {
- const nav: NavModelItem = {
- icon: 'folder-open',
- id: 'child',
- subTitle: 'child subtitle',
- url: '',
- text: 'child',
- breadcrumbs: [{ title: 'Parent', url: 'parentUrl' }],
- };
-
- render();
-
- expect(screen.getByRole('heading', { name: 'Parent / child' })).toBeInTheDocument();
- expect(screen.getByRole('link', { name: 'Parent' })).toBeInTheDocument();
- });
- });
});
diff --git a/public/app/core/components/PageHeader/PageHeader.tsx b/public/app/core/components/PageHeader/PageHeader.tsx
index 412da8c3078..c1404c7a2ec 100644
--- a/public/app/core/components/PageHeader/PageHeader.tsx
+++ b/public/app/core/components/PageHeader/PageHeader.tsx
@@ -1,7 +1,7 @@
import { css, cx } from '@emotion/css';
import React from 'react';
-import { NavModelItem, NavModelBreadcrumb, GrafanaTheme2 } from '@grafana/data';
+import { NavModelItem, GrafanaTheme2 } from '@grafana/data';
import { Tab, TabsBar, Icon, useStyles2, toIconName } from '@grafana/ui';
import { PanelHeaderMenuItem } from 'app/features/dashboard/dashgrid/PanelHeader/PanelHeaderMenuItem';
@@ -106,9 +106,7 @@ export const PageHeader = ({ navItem: model, renderTitle, actions, info, subTitl
- {renderTitle
- ? renderTitle(main.text)
- : renderHeaderTitle(main.text, main.breadcrumbs ?? [], main.highlightText)}
+ {renderTitle ? renderTitle(main.text) : renderHeaderTitle(main.text, main.highlightText)}
{info &&
}
{sub &&
{sub}
}
{actions &&
{actions}
}
@@ -129,46 +127,24 @@ export const PageHeader = ({ navItem: model, renderTitle, actions, info, subTitl
);
};
-function renderHeaderTitle(
- title: string,
- breadcrumbs: NavModelBreadcrumb[],
- highlightText: NavModelItem['highlightText']
-) {
- if (!title && (!breadcrumbs || breadcrumbs.length === 0)) {
+function renderHeaderTitle(title: string, highlightText: NavModelItem['highlightText']) {
+ if (!title) {
return null;
}
- if (!breadcrumbs || breadcrumbs.length === 0) {
- return (
-
- {title}
- {highlightText && (
-
- )}
-
- );
- }
-
- const breadcrumbsResult = [];
- for (const bc of breadcrumbs) {
- if (bc.url) {
- breadcrumbsResult.push(
-
- {bc.title}
-
- );
- } else {
- breadcrumbsResult.push(
/ {bc.title});
- }
- }
- breadcrumbsResult.push(
/ {title});
-
- return
{breadcrumbsResult}
;
+ return (
+
+ {title}
+ {highlightText && (
+
+ )}
+
+ );
}
const getStyles = (theme: GrafanaTheme2) => ({
diff --git a/public/app/features/admin/AdminEditOrgPage.tsx b/public/app/features/admin/AdminEditOrgPage.tsx
index e4359481f87..0c071fac6b3 100644
--- a/public/app/features/admin/AdminEditOrgPage.tsx
+++ b/public/app/features/admin/AdminEditOrgPage.tsx
@@ -90,7 +90,6 @@ const AdminEditOrgPage = ({ match }: Props) => {
const pageNav: NavModelItem = {
text: orgState?.value?.name ?? '',
icon: 'shield',
- breadcrumbs: [{ title: 'Orgs', url: 'admin/orgs' }],
subTitle: 'Manage settings and user roles for an organization.',
};
diff --git a/public/app/features/admin/UserAdminPage.tsx b/public/app/features/admin/UserAdminPage.tsx
index 737cbd18d79..0820b1428aa 100644
--- a/public/app/features/admin/UserAdminPage.tsx
+++ b/public/app/features/admin/UserAdminPage.tsx
@@ -111,7 +111,6 @@ export class UserAdminPage extends PureComponent
{
const pageNav: NavModelItem = {
text: user?.login ?? '',
icon: 'shield',
- breadcrumbs: [{ title: 'Users', url: 'admin/users' }],
subTitle: 'Manage settings for an individual user.',
};
diff --git a/public/app/features/admin/UserCreatePage.tsx b/public/app/features/admin/UserCreatePage.tsx
index bf7ce0077fd..da72bd30d90 100644
--- a/public/app/features/admin/UserCreatePage.tsx
+++ b/public/app/features/admin/UserCreatePage.tsx
@@ -20,7 +20,6 @@ const pageNav: NavModelItem = {
id: 'user-new',
text: 'New user',
subTitle: 'Create a new Grafana user.',
- breadcrumbs: [{ title: 'Server admin', url: 'admin/users' }],
};
const UserCreatePage = () => {
diff --git a/public/app/features/alerting/unified/RuleEditor.tsx b/public/app/features/alerting/unified/RuleEditor.tsx
index bc461f500ef..e97c94f195e 100644
--- a/public/app/features/alerting/unified/RuleEditor.tsx
+++ b/public/app/features/alerting/unified/RuleEditor.tsx
@@ -21,7 +21,6 @@ type RuleEditorProps = GrafanaRouteComponentProps<{ id?: string }>;
const defaultPageNav: Partial = {
icon: 'bell',
id: 'alert-rule-view',
- breadcrumbs: [{ title: 'Alert rules', url: 'alerting/list' }],
};
const getPageNav = (state: 'edit' | 'add') => {
diff --git a/public/app/features/alerting/unified/components/mute-timings/MuteTimingForm.tsx b/public/app/features/alerting/unified/components/mute-timings/MuteTimingForm.tsx
index 1a6b0de3fe7..f8d6f1c4c4a 100644
--- a/public/app/features/alerting/unified/components/mute-timings/MuteTimingForm.tsx
+++ b/public/app/features/alerting/unified/components/mute-timings/MuteTimingForm.tsx
@@ -60,7 +60,6 @@ const useDefaultValues = (muteTiming?: MuteTimeInterval): MuteTimingFields => {
const defaultPageNav: Partial = {
icon: 'sitemap',
- breadcrumbs: [{ title: 'Notification Policies', url: 'alerting/routes' }],
};
const MuteTimingForm = ({ muteTiming, showError, provenance }: Props) => {
diff --git a/public/app/features/alerting/unified/components/rule-viewer/RuleViewerLayout.tsx b/public/app/features/alerting/unified/components/rule-viewer/RuleViewerLayout.tsx
index 529abe2ce96..96d0224bb65 100644
--- a/public/app/features/alerting/unified/components/rule-viewer/RuleViewerLayout.tsx
+++ b/public/app/features/alerting/unified/components/rule-viewer/RuleViewerLayout.tsx
@@ -14,7 +14,6 @@ type Props = {
const defaultPageNav: Partial = {
icon: 'bell',
id: 'alert-rule-view',
- breadcrumbs: [{ title: 'Alert rules', url: 'alerting/list' }],
};
export function RuleViewerLayout(props: Props): JSX.Element | null {
diff --git a/public/app/features/alerting/unified/hooks/useSilenceNavData.test.tsx b/public/app/features/alerting/unified/hooks/useSilenceNavData.test.tsx
index 5240b06a999..f604ff0da09 100644
--- a/public/app/features/alerting/unified/hooks/useSilenceNavData.test.tsx
+++ b/public/app/features/alerting/unified/hooks/useSilenceNavData.test.tsx
@@ -27,7 +27,6 @@ describe('useSilenceNavData', () => {
expect(result).toEqual({
icon: 'bell-slash',
- breadcrumbs: [{ title: 'Silences', url: 'alerting/silences' }],
id: 'silence-new',
text: 'Add silence',
});
@@ -39,7 +38,6 @@ describe('useSilenceNavData', () => {
expect(result).toEqual({
icon: 'bell-slash',
- breadcrumbs: [{ title: 'Silences', url: 'alerting/silences' }],
id: 'silence-edit',
text: 'Edit silence',
});
diff --git a/public/app/features/alerting/unified/hooks/useSilenceNavData.ts b/public/app/features/alerting/unified/hooks/useSilenceNavData.ts
index 9757d385f3b..a8fedc67dbf 100644
--- a/public/app/features/alerting/unified/hooks/useSilenceNavData.ts
+++ b/public/app/features/alerting/unified/hooks/useSilenceNavData.ts
@@ -5,7 +5,6 @@ import { NavModelItem } from '@grafana/data';
const defaultPageNav: Partial = {
icon: 'bell-slash',
- breadcrumbs: [{ title: 'Silences', url: 'alerting/silences' }],
};
export function useSilenceNavData() {
diff --git a/public/app/features/datasources/__mocks__/store.navIndex.mock.ts b/public/app/features/datasources/__mocks__/store.navIndex.mock.ts
index 9376b24ee32..b505dd42f61 100644
--- a/public/app/features/datasources/__mocks__/store.navIndex.mock.ts
+++ b/public/app/features/datasources/__mocks__/store.navIndex.mock.ts
@@ -1003,28 +1003,28 @@ export const navIndex: NavIndex = {
{
id: 'connections-datasources',
text: 'Data sources',
- description: 'Add and configure data sources',
+ subTitle: 'Add and configure data sources',
icon: 'database',
url: '/connections/datasources',
},
{
id: 'connections-plugins',
text: 'Plugins',
- description: 'Manage plugins',
+ subTitle: 'Manage plugins',
icon: 'plug',
url: '/connections/plugins',
},
{
id: 'connections-cloud-integrations',
text: 'Cloud integrations',
- description: 'Manage your cloud integrations',
+ subTitle: 'Manage your cloud integrations',
icon: 'bolt',
url: '/connections/cloud-integrations',
},
{
id: 'connections-recorded-queries',
text: 'Recorded queries',
- description: 'Manage your recorded queries',
+ subTitle: 'Manage your recorded queries',
icon: 'record-audio',
url: '/connections/recorded-queries',
},
@@ -1033,7 +1033,7 @@ export const navIndex: NavIndex = {
'connections-datasources': {
id: 'connections-datasources',
text: 'Data sources',
- description: 'Add and configure data sources',
+ subTitle: 'Add and configure data sources',
icon: 'database',
url: '/connections/datasources',
parentItem: {
@@ -1046,28 +1046,28 @@ export const navIndex: NavIndex = {
{
id: 'connections-datasources',
text: 'Data sources',
- description: 'Add and configure data sources',
+ subTitle: 'Add and configure data sources',
icon: 'database',
url: '/connections/datasources',
},
{
id: 'connections-plugins',
text: 'Plugins',
- description: 'Manage plugins',
+ subTitle: 'Manage plugins',
icon: 'plug',
url: '/connections/plugins',
},
{
id: 'connections-cloud-integrations',
text: 'Cloud integrations',
- description: 'Manage your cloud integrations',
+ subTitle: 'Manage your cloud integrations',
icon: 'bolt',
url: '/connections/cloud-integrations',
},
{
id: 'connections-recorded-queries',
text: 'Recorded queries',
- description: 'Manage your recorded queries',
+ subTitle: 'Manage your recorded queries',
icon: 'record-audio',
url: '/connections/recorded-queries',
},
@@ -1077,7 +1077,7 @@ export const navIndex: NavIndex = {
'connections-plugins': {
id: 'connections-plugins',
text: 'Plugins',
- description: 'Manage plugins',
+ subTitle: 'Manage plugins',
icon: 'plug',
url: '/connections/plugins',
parentItem: {
@@ -1090,28 +1090,28 @@ export const navIndex: NavIndex = {
{
id: 'connections-datasources',
text: 'Data sources',
- description: 'Add and configure data sources',
+ subTitle: 'Add and configure data sources',
icon: 'database',
url: '/connections/datasources',
},
{
id: 'connections-plugins',
text: 'Plugins',
- description: 'Manage plugins',
+ subTitle: 'Manage plugins',
icon: 'plug',
url: '/connections/plugins',
},
{
id: 'connections-cloud-integrations',
text: 'Cloud integrations',
- description: 'Manage your cloud integrations',
+ subTitle: 'Manage your cloud integrations',
icon: 'bolt',
url: '/connections/cloud-integrations',
},
{
id: 'connections-recorded-queries',
text: 'Recorded queries',
- description: 'Manage your recorded queries',
+ subTitle: 'Manage your recorded queries',
icon: 'record-audio',
url: '/connections/recorded-queries',
},
@@ -1121,7 +1121,7 @@ export const navIndex: NavIndex = {
'connections-cloud-integrations': {
id: 'connections-cloud-integrations',
text: 'Cloud integrations',
- description: 'Manage your cloud integrations',
+ subTitle: 'Manage your cloud integrations',
icon: 'bolt',
url: '/connections/cloud-integrations',
parentItem: {
@@ -1134,28 +1134,28 @@ export const navIndex: NavIndex = {
{
id: 'connections-datasources',
text: 'Data sources',
- description: 'Add and configure data sources',
+ subTitle: 'Add and configure data sources',
icon: 'database',
url: '/connections/datasources',
},
{
id: 'connections-plugins',
text: 'Plugins',
- description: 'Manage plugins',
+ subTitle: 'Manage plugins',
icon: 'plug',
url: '/connections/plugins',
},
{
id: 'connections-cloud-integrations',
text: 'Cloud integrations',
- description: 'Manage your cloud integrations',
+ subTitle: 'Manage your cloud integrations',
icon: 'bolt',
url: '/connections/cloud-integrations',
},
{
id: 'connections-recorded-queries',
text: 'Recorded queries',
- description: 'Manage your recorded queries',
+ subTitle: 'Manage your recorded queries',
icon: 'record-audio',
url: '/connections/recorded-queries',
},
@@ -1165,7 +1165,7 @@ export const navIndex: NavIndex = {
'connections-recorded-queries': {
id: 'connections-recorded-queries',
text: 'Recorded queries',
- description: 'Manage your recorded queries',
+ subTitle: 'Manage your recorded queries',
icon: 'record-audio',
url: '/connections/recorded-queries',
parentItem: {
@@ -1178,28 +1178,28 @@ export const navIndex: NavIndex = {
{
id: 'connections-datasources',
text: 'Data sources',
- description: 'Add and configure data sources',
+ subTitle: 'Add and configure data sources',
icon: 'database',
url: '/connections/datasources',
},
{
id: 'connections-plugins',
text: 'Plugins',
- description: 'Manage plugins',
+ subTitle: 'Manage plugins',
icon: 'plug',
url: '/connections/plugins',
},
{
id: 'connections-cloud-integrations',
text: 'Cloud integrations',
- description: 'Manage your cloud integrations',
+ subTitle: 'Manage your cloud integrations',
icon: 'bolt',
url: '/connections/cloud-integrations',
},
{
id: 'connections-recorded-queries',
text: 'Recorded queries',
- description: 'Manage your recorded queries',
+ subTitle: 'Manage your recorded queries',
icon: 'record-audio',
url: '/connections/recorded-queries',
},
@@ -1386,49 +1386,49 @@ export const navIndex: NavIndex = {
{
id: 'datasources',
text: 'Data sources',
- description: 'Add and configure data sources',
+ subTitle: 'Add and configure data sources',
icon: 'database',
url: '/datasources',
},
{
id: 'users',
text: 'Users',
- description: 'Manage org members',
+ subTitle: 'Manage org members',
icon: 'user',
url: '/org/users',
},
{
id: 'teams',
text: 'Teams',
- description: 'Manage org groups',
+ subTitle: 'Manage org groups',
icon: 'users-alt',
url: '/org/teams',
},
{
id: 'plugins',
text: 'Plugins',
- description: 'View and configure plugins',
+ subTitle: 'View and configure plugins',
icon: 'plug',
url: '/plugins',
},
{
id: 'org-settings',
text: 'Preferences',
- description: 'Organization preferences',
+ subTitle: 'Organization preferences',
icon: 'sliders-v-alt',
url: '/org',
},
{
id: 'apikeys',
text: 'API keys',
- description: 'Create & manage API keys',
+ subTitle: 'Create & manage API keys',
icon: 'key-skeleton-alt',
url: '/org/apikeys',
},
{
id: 'serviceaccounts',
text: 'Service accounts',
- description: 'Manage service accounts',
+ subTitle: 'Manage service accounts',
icon: 'gf-service-account',
url: '/org/serviceaccounts',
},
@@ -1437,7 +1437,7 @@ export const navIndex: NavIndex = {
datasources: {
id: 'datasources',
text: 'Data sources',
- description: 'Add and configure data sources',
+ subTitle: 'Add and configure data sources',
icon: 'database',
url: '/datasources',
parentItem: {
@@ -1451,49 +1451,49 @@ export const navIndex: NavIndex = {
{
id: 'datasources',
text: 'Data sources',
- description: 'Add and configure data sources',
+ subTitle: 'Add and configure data sources',
icon: 'database',
url: '/datasources',
},
{
id: 'users',
text: 'Users',
- description: 'Manage org members',
+ subTitle: 'Manage org members',
icon: 'user',
url: '/org/users',
},
{
id: 'teams',
text: 'Teams',
- description: 'Manage org groups',
+ subTitle: 'Manage org groups',
icon: 'users-alt',
url: '/org/teams',
},
{
id: 'plugins',
text: 'Plugins',
- description: 'View and configure plugins',
+ subTitle: 'View and configure plugins',
icon: 'plug',
url: '/plugins',
},
{
id: 'org-settings',
text: 'Preferences',
- description: 'Organization preferences',
+ subTitle: 'Organization preferences',
icon: 'sliders-v-alt',
url: '/org',
},
{
id: 'apikeys',
text: 'API keys',
- description: 'Create & manage API keys',
+ subTitle: 'Create & manage API keys',
icon: 'key-skeleton-alt',
url: '/org/apikeys',
},
{
id: 'serviceaccounts',
text: 'Service accounts',
- description: 'Manage service accounts',
+ subTitle: 'Manage service accounts',
icon: 'gf-service-account',
url: '/org/serviceaccounts',
},
@@ -1503,7 +1503,7 @@ export const navIndex: NavIndex = {
users: {
id: 'users',
text: 'Users',
- description: 'Manage org members',
+ subTitle: 'Manage org members',
icon: 'user',
url: '/org/users',
parentItem: {
@@ -1517,49 +1517,49 @@ export const navIndex: NavIndex = {
{
id: 'datasources',
text: 'Data sources',
- description: 'Add and configure data sources',
+ subTitle: 'Add and configure data sources',
icon: 'database',
url: '/datasources',
},
{
id: 'users',
text: 'Users',
- description: 'Manage org members',
+ subTitle: 'Manage org members',
icon: 'user',
url: '/org/users',
},
{
id: 'teams',
text: 'Teams',
- description: 'Manage org groups',
+ subTitle: 'Manage org groups',
icon: 'users-alt',
url: '/org/teams',
},
{
id: 'plugins',
text: 'Plugins',
- description: 'View and configure plugins',
+ subTitle: 'View and configure plugins',
icon: 'plug',
url: '/plugins',
},
{
id: 'org-settings',
text: 'Preferences',
- description: 'Organization preferences',
+ subTitle: 'Organization preferences',
icon: 'sliders-v-alt',
url: '/org',
},
{
id: 'apikeys',
text: 'API keys',
- description: 'Create & manage API keys',
+ subTitle: 'Create & manage API keys',
icon: 'key-skeleton-alt',
url: '/org/apikeys',
},
{
id: 'serviceaccounts',
text: 'Service accounts',
- description: 'Manage service accounts',
+ subTitle: 'Manage service accounts',
icon: 'gf-service-account',
url: '/org/serviceaccounts',
},
@@ -1569,7 +1569,7 @@ export const navIndex: NavIndex = {
teams: {
id: 'teams',
text: 'Teams',
- description: 'Manage org groups',
+ subTitle: 'Manage org groups',
icon: 'users-alt',
url: '/org/teams',
parentItem: {
@@ -1583,49 +1583,49 @@ export const navIndex: NavIndex = {
{
id: 'datasources',
text: 'Data sources',
- description: 'Add and configure data sources',
+ subTitle: 'Add and configure data sources',
icon: 'database',
url: '/datasources',
},
{
id: 'users',
text: 'Users',
- description: 'Manage org members',
+ subTitle: 'Manage org members',
icon: 'user',
url: '/org/users',
},
{
id: 'teams',
text: 'Teams',
- description: 'Manage org groups',
+ subTitle: 'Manage org groups',
icon: 'users-alt',
url: '/org/teams',
},
{
id: 'plugins',
text: 'Plugins',
- description: 'View and configure plugins',
+ subTitle: 'View and configure plugins',
icon: 'plug',
url: '/plugins',
},
{
id: 'org-settings',
text: 'Preferences',
- description: 'Organization preferences',
+ subTitle: 'Organization preferences',
icon: 'sliders-v-alt',
url: '/org',
},
{
id: 'apikeys',
text: 'API keys',
- description: 'Create & manage API keys',
+ subTitle: 'Create & manage API keys',
icon: 'key-skeleton-alt',
url: '/org/apikeys',
},
{
id: 'serviceaccounts',
text: 'Service accounts',
- description: 'Manage service accounts',
+ subTitle: 'Manage service accounts',
icon: 'gf-service-account',
url: '/org/serviceaccounts',
},
@@ -1635,7 +1635,7 @@ export const navIndex: NavIndex = {
plugins: {
id: 'plugins',
text: 'Plugins',
- description: 'View and configure plugins',
+ subTitle: 'View and configure plugins',
icon: 'plug',
url: '/plugins',
parentItem: {
@@ -1649,49 +1649,49 @@ export const navIndex: NavIndex = {
{
id: 'datasources',
text: 'Data sources',
- description: 'Add and configure data sources',
+ subTitle: 'Add and configure data sources',
icon: 'database',
url: '/datasources',
},
{
id: 'users',
text: 'Users',
- description: 'Manage org members',
+ subTitle: 'Manage org members',
icon: 'user',
url: '/org/users',
},
{
id: 'teams',
text: 'Teams',
- description: 'Manage org groups',
+ subTitle: 'Manage org groups',
icon: 'users-alt',
url: '/org/teams',
},
{
id: 'plugins',
text: 'Plugins',
- description: 'View and configure plugins',
+ subTitle: 'View and configure plugins',
icon: 'plug',
url: '/plugins',
},
{
id: 'org-settings',
text: 'Preferences',
- description: 'Organization preferences',
+ subTitle: 'Organization preferences',
icon: 'sliders-v-alt',
url: '/org',
},
{
id: 'apikeys',
text: 'API keys',
- description: 'Create & manage API keys',
+ subTitle: 'Create & manage API keys',
icon: 'key-skeleton-alt',
url: '/org/apikeys',
},
{
id: 'serviceaccounts',
text: 'Service accounts',
- description: 'Manage service accounts',
+ subTitle: 'Manage service accounts',
icon: 'gf-service-account',
url: '/org/serviceaccounts',
},
@@ -1701,7 +1701,7 @@ export const navIndex: NavIndex = {
'org-settings': {
id: 'org-settings',
text: 'Preferences',
- description: 'Organization preferences',
+ subTitle: 'Organization preferences',
icon: 'sliders-v-alt',
url: '/org',
parentItem: {
@@ -1715,49 +1715,49 @@ export const navIndex: NavIndex = {
{
id: 'datasources',
text: 'Data sources',
- description: 'Add and configure data sources',
+ subTitle: 'Add and configure data sources',
icon: 'database',
url: '/datasources',
},
{
id: 'users',
text: 'Users',
- description: 'Manage org members',
+ subTitle: 'Manage org members',
icon: 'user',
url: '/org/users',
},
{
id: 'teams',
text: 'Teams',
- description: 'Manage org groups',
+ subTitle: 'Manage org groups',
icon: 'users-alt',
url: '/org/teams',
},
{
id: 'plugins',
text: 'Plugins',
- description: 'View and configure plugins',
+ subTitle: 'View and configure plugins',
icon: 'plug',
url: '/plugins',
},
{
id: 'org-settings',
text: 'Preferences',
- description: 'Organization preferences',
+ subTitle: 'Organization preferences',
icon: 'sliders-v-alt',
url: '/org',
},
{
id: 'apikeys',
text: 'API keys',
- description: 'Create & manage API keys',
+ subTitle: 'Create & manage API keys',
icon: 'key-skeleton-alt',
url: '/org/apikeys',
},
{
id: 'serviceaccounts',
text: 'Service accounts',
- description: 'Manage service accounts',
+ subTitle: 'Manage service accounts',
icon: 'gf-service-account',
url: '/org/serviceaccounts',
},
@@ -1767,7 +1767,7 @@ export const navIndex: NavIndex = {
apikeys: {
id: 'apikeys',
text: 'API keys',
- description: 'Create & manage API keys',
+ subTitle: 'Create & manage API keys',
icon: 'key-skeleton-alt',
url: '/org/apikeys',
parentItem: {
@@ -1781,49 +1781,49 @@ export const navIndex: NavIndex = {
{
id: 'datasources',
text: 'Data sources',
- description: 'Add and configure data sources',
+ subTitle: 'Add and configure data sources',
icon: 'database',
url: '/datasources',
},
{
id: 'users',
text: 'Users',
- description: 'Manage org members',
+ subTitle: 'Manage org members',
icon: 'user',
url: '/org/users',
},
{
id: 'teams',
text: 'Teams',
- description: 'Manage org groups',
+ subTitle: 'Manage org groups',
icon: 'users-alt',
url: '/org/teams',
},
{
id: 'plugins',
text: 'Plugins',
- description: 'View and configure plugins',
+ subTitle: 'View and configure plugins',
icon: 'plug',
url: '/plugins',
},
{
id: 'org-settings',
text: 'Preferences',
- description: 'Organization preferences',
+ subTitle: 'Organization preferences',
icon: 'sliders-v-alt',
url: '/org',
},
{
id: 'apikeys',
text: 'API keys',
- description: 'Create & manage API keys',
+ subTitle: 'Create & manage API keys',
icon: 'key-skeleton-alt',
url: '/org/apikeys',
},
{
id: 'serviceaccounts',
text: 'Service accounts',
- description: 'Manage service accounts',
+ subTitle: 'Manage service accounts',
icon: 'gf-service-account',
url: '/org/serviceaccounts',
},
@@ -1833,7 +1833,7 @@ export const navIndex: NavIndex = {
serviceaccounts: {
id: 'serviceaccounts',
text: 'Service accounts',
- description: 'Manage service accounts',
+ subTitle: 'Manage service accounts',
icon: 'gf-service-account',
url: '/org/serviceaccounts',
parentItem: {
@@ -1847,49 +1847,49 @@ export const navIndex: NavIndex = {
{
id: 'datasources',
text: 'Data sources',
- description: 'Add and configure data sources',
+ subTitle: 'Add and configure data sources',
icon: 'database',
url: '/datasources',
},
{
id: 'users',
text: 'Users',
- description: 'Manage org members',
+ subTitle: 'Manage org members',
icon: 'user',
url: '/org/users',
},
{
id: 'teams',
text: 'Teams',
- description: 'Manage org groups',
+ subTitle: 'Manage org groups',
icon: 'users-alt',
url: '/org/teams',
},
{
id: 'plugins',
text: 'Plugins',
- description: 'View and configure plugins',
+ subTitle: 'View and configure plugins',
icon: 'plug',
url: '/plugins',
},
{
id: 'org-settings',
text: 'Preferences',
- description: 'Organization preferences',
+ subTitle: 'Organization preferences',
icon: 'sliders-v-alt',
url: '/org',
},
{
id: 'apikeys',
text: 'API keys',
- description: 'Create & manage API keys',
+ subTitle: 'Create & manage API keys',
icon: 'key-skeleton-alt',
url: '/org/apikeys',
},
{
id: 'serviceaccounts',
text: 'Service accounts',
- description: 'Manage service accounts',
+ subTitle: 'Manage service accounts',
icon: 'gf-service-account',
url: '/org/serviceaccounts',
},
diff --git a/public/app/features/datasources/state/navModel.ts b/public/app/features/datasources/state/navModel.ts
index 50226da0013..8c89a2cc990 100644
--- a/public/app/features/datasources/state/navModel.ts
+++ b/public/app/features/datasources/state/navModel.ts
@@ -19,7 +19,6 @@ export function buildNavModel(dataSource: DataSourceSettings, plugin: GenericDat
subTitle: `Type: ${pluginMeta.name}`,
url: '',
text: dataSource.name,
- breadcrumbs: [{ title: 'Data Sources', url: 'datasources' }],
children: [
{
active: false,
diff --git a/public/app/features/folders/components/NewDashboardsFolder.tsx b/public/app/features/folders/components/NewDashboardsFolder.tsx
index 7664956bab1..8844e162078 100644
--- a/public/app/features/folders/components/NewDashboardsFolder.tsx
+++ b/public/app/features/folders/components/NewDashboardsFolder.tsx
@@ -29,7 +29,6 @@ const initialFormModel: FormModel = { folderName: '' };
const pageNav: NavModelItem = {
text: 'Create a new folder',
subTitle: 'Folders provide a way to group dashboards and alert rules.',
- breadcrumbs: [{ title: 'Dashboards', url: 'dashboards' }],
};
function NewDashboardsFolder({ createNewFolder }: Props) {
diff --git a/public/app/features/folders/state/navModel.ts b/public/app/features/folders/state/navModel.ts
index 341e07ac880..113a61123b0 100644
--- a/public/app/features/folders/state/navModel.ts
+++ b/public/app/features/folders/state/navModel.ts
@@ -10,7 +10,6 @@ export function buildNavModel(folder: FolderDTO): NavModelItem {
subTitle: 'Manage folder dashboards and permissions',
url: '',
text: folder.title,
- breadcrumbs: [{ title: 'Dashboards', url: 'dashboards' }],
children: [
{
active: false,
diff --git a/public/app/features/manage-dashboards/DashboardImportPage.tsx b/public/app/features/manage-dashboards/DashboardImportPage.tsx
index 298874dfc60..be8209a382a 100644
--- a/public/app/features/manage-dashboards/DashboardImportPage.tsx
+++ b/public/app/features/manage-dashboards/DashboardImportPage.tsx
@@ -192,7 +192,6 @@ class UnthemedDashboardImport extends PureComponent {
pageNav: NavModelItem = {
text: 'Import dashboard',
subTitle: 'Import dashboard from file or Grafana.com',
- breadcrumbs: [{ title: 'Dashboards', url: 'dashboards' }],
};
render() {
diff --git a/public/app/features/org/NewOrgPage.tsx b/public/app/features/org/NewOrgPage.tsx
index 0b459d24579..2b1864aba59 100644
--- a/public/app/features/org/NewOrgPage.tsx
+++ b/public/app/features/org/NewOrgPage.tsx
@@ -24,7 +24,6 @@ const pageNav: NavModelItem = {
icon: 'building',
id: 'org-new',
text: 'New organization',
- breadcrumbs: [{ title: 'Server admin', url: 'admin/orgs' }],
};
export const NewOrgPage = ({ createOrganization }: Props) => {
diff --git a/public/app/features/plugins/admin/hooks/usePluginDetailsTabs.tsx b/public/app/features/plugins/admin/hooks/usePluginDetailsTabs.tsx
index 42c2b9962b4..79cc6a2fa88 100644
--- a/public/app/features/plugins/admin/hooks/usePluginDetailsTabs.tsx
+++ b/public/app/features/plugins/admin/hooks/usePluginDetailsTabs.tsx
@@ -21,7 +21,6 @@ export const usePluginDetailsTabs = (plugin?: CatalogPlugin, pageId?: PluginTabI
const { loading, error, value: pluginConfig } = usePluginConfig(plugin);
const { pathname } = useLocation();
const defaultTab = useDefaultPage(plugin, pluginConfig);
- const parentUrl = pathname.substring(0, pathname.lastIndexOf('/'));
const isPublished = Boolean(plugin?.isPublished);
const currentPageId = pageId || defaultTab;
@@ -98,7 +97,6 @@ export const usePluginDetailsTabs = (plugin?: CatalogPlugin, pageId?: PluginTabI
const navModel: NavModelItem = {
text: plugin?.name ?? '',
img: plugin?.info.logos.small,
- breadcrumbs: [{ title: 'Plugins', url: parentUrl }],
children: [
{
text: PluginTabLabels.OVERVIEW,
diff --git a/public/app/features/serviceaccounts/ServiceAccountPage.tsx b/public/app/features/serviceaccounts/ServiceAccountPage.tsx
index 936dc4e8c06..4ae6e309d0f 100644
--- a/public/app/features/serviceaccounts/ServiceAccountPage.tsx
+++ b/public/app/features/serviceaccounts/ServiceAccountPage.tsx
@@ -82,7 +82,6 @@ export const ServiceAccountPageUnconnected = ({
const pageNav: NavModelItem = {
text: serviceAccount.name,
img: serviceAccount.avatarUrl,
- breadcrumbs: [{ title: 'Service accounts', url: 'org/serviceaccounts' }],
subTitle: 'Manage settings for an individual service account.',
};
diff --git a/public/app/features/teams/CreateTeam.tsx b/public/app/features/teams/CreateTeam.tsx
index 90a846cecc6..deb3330c70a 100644
--- a/public/app/features/teams/CreateTeam.tsx
+++ b/public/app/features/teams/CreateTeam.tsx
@@ -15,7 +15,6 @@ const pageNav: NavModelItem = {
id: 'team-new',
text: 'New team',
subTitle: 'Create a new team. Teams let you grant permissions to a group of users.',
- breadcrumbs: [{ title: 'Configuration', url: 'org/teams' }],
};
export const CreateTeam = (): JSX.Element => {
diff --git a/public/app/features/teams/state/navModel.ts b/public/app/features/teams/state/navModel.ts
index 0f7b503d1b6..c3fe188968a 100644
--- a/public/app/features/teams/state/navModel.ts
+++ b/public/app/features/teams/state/navModel.ts
@@ -25,7 +25,6 @@ export function buildNavModel(team: Team): NavModelItem {
subTitle: 'Manage members and settings',
url: '',
text: team.name,
- breadcrumbs: [{ title: 'Teams', url: 'org/teams' }],
children: [
// With RBAC this tab will always be available (but not always editable)
// With Legacy it will be hidden by hideTabsFromNonTeamAdmin should the user not be allowed to see it