// Copyright (C) The Arvados Authors. All rights reserved. // // 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 { 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"; export interface MainAppBarMenuItem { label: string; } export interface MainAppBarMenuItems { accountMenu: MainAppBarMenuItem[]; helpMenu: MainAppBarMenuItem[]; anonymousMenu: MainAppBarMenuItem[]; } interface MainAppBarDataProps { searchText: string; searchDebounce?: number; breadcrumbs: Breadcrumb[]; user?: User; menuItems: MainAppBarMenuItems; } 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 const MainAppBar: React.SFC = (props) => { return Arvados Workbench 2 { props.user && } { props.user ? renderMenuForUser(props) : renderMenuForAnonymous(props) } { 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} )); };