X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/01e4b29eb65a760650476a8f5f059413130921f4..cee5fc55b8b13217ac9aa540d74375a59afbb49a:/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 54d6a5da..63bdd8bf 100644 --- a/src/views-components/main-app-bar/main-app-bar.tsx +++ b/src/views-components/main-app-bar/main-app-bar.tsx @@ -3,12 +3,27 @@ // SPDX-License-Identifier: AGPL-3.0 import * as React from "react"; -import { AppBar, Toolbar, Typography, Grid, IconButton, Badge, Button, MenuItem } from "@material-ui/core"; +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 { Breadcrumbs, Breadcrumb } from "~/components/breadcrumbs/breadcrumbs"; import { DropdownMenu } from "~/components/dropdown-menu/dropdown-menu"; import { DetailsIcon, NotificationIcon, UserPanelIcon, HelpIcon } from "~/components/icon/icon"; +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 { AnonymousMenu } from "~/views-components/main-app-bar/anonymous-menu"; + +type CssRules = 'link'; + +const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ + link: { + textDecoration: 'none', + color: 'inherit' + } +}); export interface MainAppBarMenuItem { label: string; @@ -23,7 +38,7 @@ export interface MainAppBarMenuItems { interface MainAppBarDataProps { searchText: string; searchDebounce?: number; - breadcrumbs: Breadcrumb[]; + breadcrumbs: React.ComponentType; user?: User; menuItems: MainAppBarMenuItems; buildInfo: string; @@ -31,90 +46,56 @@ interface MainAppBarDataProps { export interface MainAppBarActionProps { onSearch: (searchText: string) => void; - onBreadcrumbClick: (breadcrumb: Breadcrumb) => void; onMenuItemClick: (menuItem: MainAppBarMenuItem) => void; - onContextMenu: (event: React.MouseEvent, breadcrumb: Breadcrumb) => void; onDetailsPanelToggle: () => void; } -type MainAppBarProps = MainAppBarDataProps & MainAppBarActionProps; +export type MainAppBarProps = MainAppBarDataProps & MainAppBarActionProps & WithStyles; -export const MainAppBar: React.SFC = (props) => { - return - - - - - Arvados 2 - - - {props.buildInfo} - - - - { - props.user && - } - - - { - props.user ? renderMenuForUser(props) : renderMenuForAnonymous(props) - } +export const MainAppBar = withStyles(styles)( + (props: MainAppBarProps) => { + return + + + + + + arvados workbench + + + {/* + {props.buildInfo} + */} + + + { + props.user && + } + + + { + props.user + ? <> + + + + : + } + - - - - { - props.user && - } - { props.user && - - - } - - ; -}; - -const renderMenuForUser = ({ user, menuItems, onMenuItemClick }: MainAppBarProps) => { - return ( - <> - - - - - - } id="account-menu"> - - {getUserFullname(user)} - - {renderMenuItems(menuItems.accountMenu, onMenuItemClick)} - - } id="help-menu"> - {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} - - )); -}; + + {/* + {props.user && } + {props.user && + + + + } + */} + ; + } +);