import React, { FormEvent } from 'react'; import classNames from 'classnames'; import appEvents from 'app/core/app_events'; import { NavModel, NavModelItem, NavModelBreadcrumb } from '@grafana/ui'; export interface Props { model: NavModel; } const SelectNav = ({ main, customCss }: { main: NavModelItem; customCss: string }) => { const defaultSelectedItem = main.children.find(navItem => { return navItem.active === true; }); const gotoUrl = (evt: FormEvent) => { const element = evt.target as HTMLSelectElement; const url = element.options[element.selectedIndex].value; appEvents.emit('location-change', { href: url }); }; return (
); }; const Tabs = ({ main, customCss }: { main: NavModelItem; customCss: string }) => { return ( ); }; const Navigation = ({ main }: { main: NavModelItem }) => { return ( ); }; export default class PageHeader extends React.Component { constructor(props: Props) { super(props); } shouldComponentUpdate() { //Hack to re-render on changed props from angular with the @observer decorator return true; } renderTitle(title: string, breadcrumbs: NavModelBreadcrumb[]) { if (!title && (!breadcrumbs || breadcrumbs.length === 0)) { return null; } if (!breadcrumbs || breadcrumbs.length === 0) { return

{title}

; } const breadcrumbsResult = []; for (const bc of breadcrumbs) { if (bc.url) { breadcrumbsResult.push( {bc.title} ); } else { breadcrumbsResult.push( / {bc.title}); } } breadcrumbsResult.push( / {title}); return

{breadcrumbsResult}

; } renderHeaderTitle(main: NavModelItem) { return (
{main.icon && } {main.img && }
{this.renderTitle(main.text, main.breadcrumbs)} {main.subTitle &&
{main.subTitle}
}
); } render() { const { model } = this.props; if (!model) { return null; } const main = model.main; return (
{this.renderHeaderTitle(main)} {main.children && }
); } }