X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/1a9eb2261e6030ba78078e2a206bad27653f2475..3a530766c12a5677e6b5f8c54cd3a61f8e6934b4:/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 c0525a56..ba01f550 100644 --- a/src/views-components/main-app-bar/main-app-bar.tsx +++ b/src/views-components/main-app-bar/main-app-bar.tsx @@ -3,127 +3,85 @@ // 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 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 } from "@material-ui/core"; +import { StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core/styles'; +import { Link } from "react-router-dom"; +import { User } from "~/models/user"; +import { SearchBar } from "~/views-components/search-bar/search-bar"; +import { Routes } from '~/routes/routes'; +import { NotificationsMenu } from "~/views-components/main-app-bar/notifications-menu"; +import { AccountMenu } from "~/views-components/main-app-bar/account-menu"; +import { HelpMenu } from './help-menu'; +import { ReactNode } from "react"; -export interface MainAppBarMenuItem { - label: string; -} +type CssRules = 'toolbar' | 'link'; -export interface MainAppBarMenuItems { - accountMenu: MainAppBarMenuItem[]; - helpMenu: MainAppBarMenuItem[]; - anonymousMenu: MainAppBarMenuItem[]; -} +const styles: StyleRulesCallback = () => ({ + link: { + textDecoration: 'none', + color: 'inherit' + }, + toolbar: { + height: '56px' + } +}); interface MainAppBarDataProps { searchText: string; searchDebounce?: number; - breadcrumbs: Breadcrumb[]; user?: User; - menuItems: MainAppBarMenuItems; + buildInfo?: string; + children?: ReactNode; } export interface MainAppBarActionProps { onSearch: (searchText: string) => void; - onBreadcrumbClick: (breadcrumb: Breadcrumb) => void; - onMenuItemClick: (menuItem: MainAppBarMenuItem) => void; } -type MainAppBarProps = MainAppBarDataProps & MainAppBarActionProps & WithStyles; +export type MainAppBarProps = MainAppBarDataProps & MainAppBarActionProps & WithStyles; -export const MainAppBar: React.SFC = (props) => { - return - - - - - Arvados - - - Workbench 2 - - - - { - props.user && { + return + + + + + + arvados workbench + + + {props.buildInfo} + + + {props.user && - } + />} + + + {props.user + ? <> + + + + + : } + - - { - props.user ? renderMenuForUser(props) : renderMenuForAnonymous(props) - } - - - - { - props.user && - - } - ; -}; - - -const renderMenuForUser = ({ user, menuItems, onMenuItemClick }: MainAppBarProps) => { - return ( - <> - - - - - - - - {getUserFullname(user)} - - {renderMenuItems(menuItems.accountMenu, onMenuItemClick)} - - - {renderMenuItems(menuItems.helpMenu, onMenuItemClick)} - - - ); -}; - -const renderMenuForAnonymous = ({ onMenuItemClick, menuItems }: MainAppBarProps) => { - return menuItems.anonymousMenu.map((item, index) => ( - - )); -}; - -const renderMenuItems = (menuItems: MainAppBarMenuItem[], onMenuItemClick: (menuItem: MainAppBarMenuItem) => void) => { - return menuItems.map((item, index) => ( - onMenuItemClick(item)}> - {item.label} - - )); -}; - -type CssRules = "appBar" | "toolbar"; - -const styles: StyleRulesCallback = theme => ({ - appBar: { - backgroundColor: "#692498" - }, - toolbar: { - minHeight: '48px' + {props.children} + ; } -}); - -export default withStyles(styles)(MainAppBar); +);