import React from "react";
-import { Toolbar, StyleRulesCallback, Grid, WithStyles, withStyles } from "@material-ui/core";
+import { Toolbar, StyleRulesCallback, IconButton, Tooltip, Grid, WithStyles, withStyles } from "@material-ui/core";
+import { DetailsIcon } from "components/icon/icon";
import { Breadcrumbs } from "views-components/breadcrumbs/breadcrumbs";
import { connect } from 'react-redux';
import { RootState } from 'store/store';
+import * as Routes from 'routes/routes';
import { toggleDetailsPanel } from 'store/details-panel/details-panel-action';
import RefreshButton from "components/refresh-button/refresh-button";
import { loadSidePanelTreeProjects } from "store/side-panel-tree/side-panel-tree-actions";
interface MainContentBarProps {
onRefreshPage: () => void;
onDetailsPanelToggle: () => void;
+ buttonVisible: boolean;
+ projectUuid: string;
}
-const mapStateToProps = (state: RootState) => ({
- projectUuid: state.detailsPanel.resourceUuid,
-});
+const isButtonVisible = ({ router }: RootState) => {
+ const pathname = router.location ? router.location.pathname : '';
+ return Routes.matchCollectionsContentAddressRoute(pathname) ||
+ Routes.matchPublicFavoritesRoute(pathname) ||
+ Routes.matchGroupDetailsRoute(pathname) ||
+ Routes.matchGroupsRoute(pathname) ||
+ Routes.matchUsersRoute(pathname) ||
+ Routes.matchSearchResultsRoute(pathname) ||
+ Routes.matchSharedWithMeRoute(pathname) ||
+ Routes.matchProcessRoute(pathname) ||
+ Routes.matchCollectionRoute(pathname) ||
+ Routes.matchProjectRoute(pathname) ||
+ Routes.matchAllProcessesRoute(pathname) ||
+ Routes.matchTrashRoute(pathname) ||
+ Routes.matchFavoritesRoute(pathname);
+};
+
+const mapStateToProps = (state: RootState) => {
+ const currentRoute = state.router.location?.pathname.split('/') || [];
+ const projectUuid = currentRoute[currentRoute.length - 1];
+
+ return {
+ buttonVisible: isButtonVisible(state),
+ projectUuid,
+ }
+};
const mapDispatchToProps = () => (dispatch: Dispatch) => ({
- onDetailsPanelToggle: () => dispatch<any>(toggleDetailsPanel()),
+ onDetailsPanelToggle: (uuid: string) => dispatch<any>(toggleDetailsPanel(uuid)),
onRefreshButtonClick: (id) => {
dispatch<any>(loadSidePanelTreeProjects(id));
}
props.onRefreshButtonClick(props.projectUuid);
}} />
</Grid>
+ <Grid item>
+ {props.buttonVisible && <Tooltip title="Additional Info" disableFocusListener>
+ <IconButton data-cy="additional-info-icon"
+ color="inherit"
+ className={props.classes.infoTooltip}
+ onClick={()=>props.onDetailsPanelToggle(props.projectUuid)}>
+ <DetailsIcon />
+ </IconButton>
+ </Tooltip>}
+ </Grid>
</Grid></Toolbar>
));