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 { HelpMenu } from '~/views-components/main-app-bar/help-menu';
import { ReactNode } from "react";
+import { AdminMenu } from "~/views-components/main-app-bar/admin-menu";
+import { pluginConfig } from '~/plugins';
type CssRules = 'toolbar' | 'link';
});
interface MainAppBarDataProps {
- searchText: string;
- searchDebounce?: number;
user?: User;
buildInfo?: string;
children?: ReactNode;
+ uuidPrefix: string;
+ siteBanner: 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="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>
+ {pluginConfig.appBarLeft || <Grid container item xs={3} direction="column" justify="center">
+ <Typography variant='h6' color="inherit" noWrap>
<Link to={Routes.ROOT} className={props.classes.link}>
- arvados workbench
+ <span dangerouslySetInnerHTML={{ __html: props.siteBanner }} /> ({props.uuidPrefix})
</Link>
</Typography>
<Typography variant="caption" color="inherit">{props.buildInfo}</Typography>
- </Grid>
+ </Grid>}
<Grid
item
xs={6}
container
alignItems="center">
- {props.user && <SearchBar
- value={props.searchText}
- onSearch={props.onSearch}
- debounce={props.searchDebounce}
- />}
+ {pluginConfig.appBarMiddle || (props.user && props.user.isActive && <SearchBar />)}
</Grid>
<Grid
item
alignItems="center"
justify="flex-end"
wrap="nowrap">
- {props.user
- ? <>
+ {pluginConfig.appBarRight ||
+ (props.user ? <>
<NotificationsMenu />
<AccountMenu />
+ {props.user.isAdmin && <AdminMenu />}
<HelpMenu />
- </>
- : <HelpMenu />}
+ </> :
+ <HelpMenu />)}
</Grid>
</Grid>
</Toolbar>