import { StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core/styles';
import { Link } from "react-router-dom";
import { User } from "~/models/user";
-import { SearchBar } from "~/components/search-bar/search-bar";
+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 { AnonymousMenu } from "~/views-components/main-app-bar/anonymous-menu";
-import { HelpMenu } from './help-menu';
+import { HelpMenu } from '~/views-components/main-app-bar/help-menu';
+import { ReactNode } from "react";
+import { AdminMenu } from "~/views-components/main-app-bar/admin-menu";
type CssRules = 'toolbar' | 'link';
});
interface MainAppBarDataProps {
- searchText: string;
- searchDebounce?: number;
user?: User;
buildInfo?: string;
+ children?: ReactNode;
+ uuidPrefix: string;
}
-export interface MainAppBarActionProps {
- onSearch: (searchText: string) => void;
-}
-
-export type MainAppBarProps = MainAppBarDataProps & MainAppBarActionProps & WithStyles<CssRules>;
+export type MainAppBarProps = MainAppBarDataProps & WithStyles<CssRules>;
export const MainAppBar = withStyles(styles)(
(props: MainAppBarProps) => {
- return <AppBar position="static">
+ return <AppBar position="absolute">
<Toolbar className={props.classes.toolbar}>
<Grid container justify="space-between">
<Grid container item xs={3} direction="column" justify="center">
- <Typography variant="title" color="inherit" noWrap>
+ <Typography variant='h6' color="inherit" noWrap>
<Link to={Routes.ROOT} className={props.classes.link}>
- arvados workbench
+ arvados workbench ({props.uuidPrefix})
</Link>
</Typography>
<Typography variant="caption" color="inherit">{props.buildInfo}</Typography>
xs={6}
container
alignItems="center">
- {props.user && <SearchBar
- value={props.searchText}
- onSearch={props.onSearch}
- debounce={props.searchDebounce}
- />}
+ {props.user && props.user.isActive && <SearchBar />}
</Grid>
<Grid
item
? <>
<NotificationsMenu />
<AccountMenu />
+ {props.user.isAdmin && <AdminMenu />}
<HelpMenu />
</>
- : <AnonymousMenu />}
+ : <HelpMenu />}
</Grid>
</Grid>
</Toolbar>
+ {props.children}
</AppBar>;
}
);