diff --git a/public/app/core/components/AppChrome/TopBar/TopNavBarMenu.tsx b/public/app/core/components/AppChrome/TopBar/TopNavBarMenu.tsx index 5c5eb5b8ce0..044d42ce440 100644 --- a/public/app/core/components/AppChrome/TopBar/TopNavBarMenu.tsx +++ b/public/app/core/components/AppChrome/TopBar/TopNavBarMenu.tsx @@ -1,18 +1,25 @@ import { css } from '@emotion/css'; import { i18n } from '@lingui/core'; +import { cloneDeep } from 'lodash'; import React from 'react'; +import { useLocation } from 'react-router-dom'; import { GrafanaTheme2, NavModelItem } from '@grafana/data'; import { Menu, MenuItem, useStyles2 } from '@grafana/ui'; import menuItemTranslations from '../../NavBar/navBarItem-translations'; +import { enrichConfigItems, enrichWithInteractionTracking } from '../../NavBar/utils'; export interface TopNavBarMenuProps { node: NavModelItem; } -export function TopNavBarMenu({ node }: TopNavBarMenuProps) { +export function TopNavBarMenu({ node: nodePlain }: TopNavBarMenuProps) { const styles = useStyles2(getStyles); + const location = useLocation(); + const enriched = enrichConfigItems([cloneDeep(nodePlain)], location); + const node = enrichWithInteractionTracking(enriched[0], false); + if (!node) { return null; } diff --git a/public/app/core/components/AppChrome/TopSearchBar.tsx b/public/app/core/components/AppChrome/TopSearchBar.tsx index 87f7cff44af..94a505f1a78 100644 --- a/public/app/core/components/AppChrome/TopSearchBar.tsx +++ b/public/app/core/components/AppChrome/TopSearchBar.tsx @@ -1,51 +1,22 @@ import { css } from '@emotion/css'; -import { cloneDeep } from 'lodash'; -import React, { useState } from 'react'; -import { useLocation } from 'react-router-dom'; +import React from 'react'; -import { GrafanaTheme2, NavSection } from '@grafana/data'; -import { locationService } from '@grafana/runtime'; -import { Dropdown, FilterInput, Icon, Tooltip, useStyles2 } from '@grafana/ui'; +import { GrafanaTheme2 } from '@grafana/data'; +import { Dropdown, Icon, Tooltip, useStyles2 } from '@grafana/ui'; import { contextSrv } from 'app/core/core'; -import { useSearchQuery } from 'app/features/search/hooks/useSearchQuery'; import { useSelector } from 'app/types'; -import { enrichConfigItems, enrichWithInteractionTracking } from '../NavBar/utils'; -import { OrgSwitcher } from '../OrgSwitcher'; - import { TopNavBarMenu } from './TopBar/TopNavBarMenu'; +import { TopSearchBarInput } from './TopSearchBarInput'; import { TOP_BAR_LEVEL_HEIGHT } from './types'; export function TopSearchBar() { const styles = useStyles2(getStyles); - const location = useLocation(); - const { query, onQueryChange } = useSearchQuery({}); - const navBarTree = useSelector((state) => state.navBarTree); - const navTree = cloneDeep(navBarTree); - const [showSwitcherModal, setShowSwitcherModal] = useState(false); - const toggleSwitcherModal = () => { - setShowSwitcherModal(!showSwitcherModal); - }; + const navIndex = useSelector((state) => state.navIndex); - const onOpenSearch = () => { - locationService.partial({ search: 'open' }); - }; - const onSearchChange = (value: string) => { - onQueryChange(value); - if (value) { - onOpenSearch(); - } - }; - - const configItems = enrichConfigItems( - navTree.filter((item) => item.section === NavSection.Config), - location, - toggleSwitcherModal - ).map((item) => enrichWithInteractionTracking(item, false)); - - const helpNode = configItems.find((item) => item.id === 'help'); - const profileNode = configItems.find((item) => item.id === 'profile'); - const signInNode = configItems.find((item) => item.id === 'signin'); + const helpNode = navIndex['help']; + const profileNode = navIndex['profile']; + const signInNode = navIndex['signin']; return (