-import React from 'react';
-import { Grid, Typography, withStyles, Tooltip, IconButton, Checkbox } from '@material-ui/core';
-import { FavoriteStar, PublicFavoriteStar } from '../favorite-star/favorite-star';
-import { Resource, ResourceKind, TrashableResource } from 'models/resource';
-import { ProjectIcon, FilterGroupIcon, CollectionIcon, ProcessIcon, DefaultIcon, ShareIcon, CollectionOldVersionIcon, WorkflowIcon } from 'components/icon/icon';
-import { formatDate, formatFileSize, formatTime } from 'common/formatters';
-import { resourceLabel } from 'common/labels';
-import { connect, DispatchProp } from 'react-redux';
-import { RootState } from 'store/store';
-import { getResource } from 'store/resources/resources';
-import { GroupContentsResource } from 'services/groups-service/groups-service';
-import { getProcess, Process, getProcessStatus, getProcessStatusColor, getProcessRuntime } from 'store/processes/process';
-import { ArvadosTheme } from 'common/custom-theme';
-import { compose, Dispatch } from 'redux';
-import { WorkflowResource } from 'models/workflow';
-import { ResourceStatus as WorkflowStatus } from 'views/workflow-panel/workflow-panel-view';
-import { getUuidPrefix, openRunProcess } from 'store/workflow-panel/workflow-panel-actions';
-import { openSharingDialog } from 'store/sharing-dialog/sharing-dialog-actions';
-import { getUserFullname, getUserDisplayName, User, UserResource } from 'models/user';
-import { toggleIsActive, toggleIsAdmin } from 'store/users/users-actions';
-import { LinkResource } from 'models/link';
-import { navigateTo } from 'store/navigation/navigation-action';
-import { withResourceData } from 'views-components/data-explorer/with-resources';
-import { CollectionResource } from 'models/collection';
-import { IllegalNamingWarning } from 'components/warning/warning';
-import { loadResource } from 'store/resources/resources-actions';
-import { GroupClass } from 'models/group';
-
-const renderName = (dispatch: Dispatch, item: GroupContentsResource) =>
- <Grid container alignItems="center" wrap="nowrap" spacing={16}>
- <Grid item>
- {renderIcon(item)}
- </Grid>
- <Grid item>
- <Typography color="primary" style={{ width: 'auto', cursor: 'pointer' }} onClick={() => dispatch<any>(navigateTo(item.uuid))}>
- {item.kind === ResourceKind.PROJECT || item.kind === ResourceKind.COLLECTION
- ? <IllegalNamingWarning name={item.name} />
- : null}
- {item.name}
- </Typography>
- </Grid>
- <Grid item>
- <Typography variant="caption">
- <FavoriteStar resourceUuid={item.uuid} />
- <PublicFavoriteStar resourceUuid={item.uuid} />
- </Typography>
+import React from "react";
+import { Grid, Typography, withStyles, Tooltip, IconButton, Checkbox, Chip } from "@material-ui/core";
+import { FavoriteStar, PublicFavoriteStar } from "../favorite-star/favorite-star";
+import { Resource, ResourceKind, TrashableResource } from "models/resource";
+import {
+ FreezeIcon,
+ ProjectIcon,
+ FilterGroupIcon,
+ CollectionIcon,
+ ProcessIcon,
+ DefaultIcon,
+ ShareIcon,
+ CollectionOldVersionIcon,
+ WorkflowIcon,
+ RemoveIcon,
+ RenameIcon,
+ ActiveIcon,
+ SetupIcon,
+ InactiveIcon,
+} from "components/icon/icon";
+import { formatDate, formatFileSize, formatTime } from "common/formatters";
+import { resourceLabel } from "common/labels";
+import { connect, DispatchProp } from "react-redux";
+import { RootState } from "store/store";
+import { getResource, filterResources } from "store/resources/resources";
+import { GroupContentsResource } from "services/groups-service/groups-service";
+import { getProcess, Process, getProcessStatus, getProcessStatusStyles, getProcessRuntime } from "store/processes/process";
+import { ArvadosTheme } from "common/custom-theme";
+import { compose, Dispatch } from "redux";
+import { WorkflowResource } from "models/workflow";
+import { ResourceStatus as WorkflowStatus } from "views/workflow-panel/workflow-panel-view";
+import { getUuidPrefix, openRunProcess } from "store/workflow-panel/workflow-panel-actions";
+import { openSharingDialog } from "store/sharing-dialog/sharing-dialog-actions";
+import { getUserFullname, getUserDisplayName, User, UserResource } from "models/user";
+import { toggleIsAdmin } from "store/users/users-actions";
+import { LinkClass, LinkResource } from "models/link";
+import { navigateTo, navigateToGroupDetails, navigateToUserProfile } from "store/navigation/navigation-action";
+import { withResourceData } from "views-components/data-explorer/with-resources";
+import { CollectionResource } from "models/collection";
+import { IllegalNamingWarning } from "components/warning/warning";
+import { loadResource } from "store/resources/resources-actions";
+import { BuiltinGroups, getBuiltinGroupUuid, GroupClass, GroupResource, isBuiltinGroup } from "models/group";
+import { openRemoveGroupMemberDialog } from "store/group-details-panel/group-details-panel-actions";
+import { setMemberIsHidden } from "store/group-details-panel/group-details-panel-actions";
+import { formatPermissionLevel } from "views-components/sharing-dialog/permission-select";
+import { PermissionLevel } from "models/permission";
+import { openPermissionEditContextMenu } from "store/context-menu/context-menu-actions";
+import { VirtualMachinesResource } from "models/virtual-machines";
+import { CopyToClipboardSnackbar } from "components/copy-to-clipboard-snackbar/copy-to-clipboard-snackbar";
+import { ProjectResource } from "models/project";
+import { ProcessResource } from "models/process";
+
+const renderName = (dispatch: Dispatch, item: GroupContentsResource) => {
+ const navFunc = "groupClass" in item && item.groupClass === GroupClass.ROLE ? navigateToGroupDetails : navigateTo;
+ return (
+ <Grid
+ container
+ alignItems="center"
+ wrap="nowrap"
+ spacing={16}
+ >
+ <Grid item>{renderIcon(item)}</Grid>
+ <Grid item>
+ <Typography
+ color="primary"
+ style={{ width: "auto", cursor: "pointer" }}
+ onClick={() => dispatch<any>(navFunc(item.uuid))}
+ >
+ {item.kind === ResourceKind.PROJECT || item.kind === ResourceKind.COLLECTION ? <IllegalNamingWarning name={item.name} /> : null}
+ {item.name}
+ </Typography>
+ </Grid>
+ <Grid item>
+ <Typography variant="caption">
+ <FavoriteStar resourceUuid={item.uuid} />
+ <PublicFavoriteStar resourceUuid={item.uuid} />
+ {item.kind === ResourceKind.PROJECT && <FrozenProject item={item} />}
+ </Typography>
+ </Grid>