X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/3127f7c6b7c0a68981598ffb83efa7ae0b41ae7c..35694e6fc2214c366f09ddd75c9910d91cd3ed20:/src/views-components/main-app-bar/main-app-bar.tsx diff --git a/src/views-components/main-app-bar/main-app-bar.tsx b/src/views-components/main-app-bar/main-app-bar.tsx index b03dccd918..04e0fb804a 100644 --- a/src/views-components/main-app-bar/main-app-bar.tsx +++ b/src/views-components/main-app-bar/main-app-bar.tsx @@ -3,15 +3,24 @@ // SPDX-License-Identifier: AGPL-3.0 import * as React from "react"; -import { AppBar, Toolbar, Typography, Grid, IconButton, Badge, StyleRulesCallback, withStyles, WithStyles, Button, MenuItem } from "@material-ui/core"; -import NotificationsIcon from "@material-ui/icons/Notifications"; -import PersonIcon from "@material-ui/icons/Person"; -import HelpIcon from "@material-ui/icons/Help"; -import InfoIcon from '@material-ui/icons/Info'; -import SearchBar from "../../components/search-bar/search-bar"; -import Breadcrumbs, { Breadcrumb } from "../../components/breadcrumbs/breadcrumbs"; -import DropdownMenu from "../../components/dropdown-menu/dropdown-menu"; -import { User, getUserFullname } from "../../models/user"; +import { AppBar, Toolbar, Typography, Grid, IconButton, Badge, Button, MenuItem, Tooltip } from "@material-ui/core"; +import { StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core/styles'; +import { ArvadosTheme } from '~/common/custom-theme'; +import { Link } from "react-router-dom"; +import { User, getUserFullname } from "~/models/user"; +import { SearchBar } from "~/components/search-bar/search-bar"; +import { DropdownMenu } from "~/components/dropdown-menu/dropdown-menu"; +import { DetailsIcon, NotificationIcon, UserPanelIcon, HelpIcon } from "~/components/icon/icon"; +import { Routes } from '~/routes/routes'; + +type CssRules = 'link'; + +const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ + link: { + textDecoration: 'none', + color: 'inherit' + } +}); export interface MainAppBarMenuItem { label: string; @@ -26,78 +35,80 @@ export interface MainAppBarMenuItems { interface MainAppBarDataProps { searchText: string; searchDebounce?: number; - breadcrumbs: Breadcrumb[]; + breadcrumbs: React.ComponentType; user?: User; menuItems: MainAppBarMenuItems; + buildInfo: string; } export interface MainAppBarActionProps { onSearch: (searchText: string) => void; - onBreadcrumbClick: (breadcrumb: Breadcrumb) => void; onMenuItemClick: (menuItem: MainAppBarMenuItem) => void; - onDetailsPanelClick: (isOpened: boolean) => void; + onDetailsPanelToggle: () => void; } -type MainAppBarProps = MainAppBarDataProps & MainAppBarActionProps & WithStyles; +export type MainAppBarProps = MainAppBarDataProps & MainAppBarActionProps & WithStyles; -export const MainAppBar: React.SFC = (props) => { - return - - - - - Arvados - - - Workbench 2 - +export const MainAppBar = withStyles(styles)( + (props: MainAppBarProps) => { + return + + + + + + Arvados 2 + + + + {props.buildInfo} + + + + { + props.user && + } + + + { + props.user ? renderMenuForUser(props) : renderMenuForAnonymous(props) + } + - - { - props.user && - } - - - { - props.user ? renderMenuForUser(props) : renderMenuForAnonymous(props) - } - - - - - { - props.user && - } - props.onDetailsPanelClick(true)}> - - - - ; -}; - + + + {props.user && } + {props.user && + + + + } + + ; + } +); const renderMenuForUser = ({ user, menuItems, onMenuItemClick }: MainAppBarProps) => { return ( <> - - - + + + + + - + } id="account-menu" title="Account Management"> {getUserFullname(user)} {renderMenuItems(menuItems.accountMenu, onMenuItemClick)} - + } id="help-menu" title="Help"> {renderMenuItems(menuItems.helpMenu, onMenuItemClick)} @@ -119,16 +130,3 @@ const renderMenuItems = (menuItems: MainAppBarMenuItem[], onMenuItemClick: (menu )); }; - -type CssRules = "appBar" | "toolbar"; - -const styles: StyleRulesCallback = theme => ({ - appBar: { - backgroundColor: "#692498" - }, - toolbar: { - minHeight: '48px' - } -}); - -export default withStyles(styles)(MainAppBar);