import { createTree } from '~/models/tree';
import { noop } from 'lodash/fp';
import { RootState } from '~/store/store';
-import { GROUP_DETAILS_PANEL_ID } from '~/store/group-details-panel/group-details-panel-actions';
+import { GROUP_DETAILS_PANEL_ID, openAddGroupMembersDialog } from '~/store/group-details-panel/group-details-panel-actions';
+import { openContextMenu } from '~/store/context-menu/context-menu-actions';
+import { ResourcesState, getResource } from '~/store/resources/resources';
+import { ContextMenuKind } from '~/views-components/context-menu/context-menu';
+import { PermissionResource } from '~/models/permission';
+import { Grid, Button } from '@material-ui/core';
+import { AddIcon } from '~/components/icon/icon';
export enum GroupDetailsPanelColumnNames {
FIRST_NAME = "First name",
};
};
-const mapDispatchToProps = {};
+const mapDispatchToProps = {
+ onContextMenu: openContextMenu,
+ onAddUser: openAddGroupMembersDialog,
+};
-export interface GroupDetailsPanelProps { }
+export interface GroupDetailsPanelProps {
+ onContextMenu: (event: React.MouseEvent<HTMLElement>, item: any) => void;
+ onAddUser: () => void;
+ resources: ResourcesState;
+}
export const GroupDetailsPanel = connect(
mapStateToProps, mapDispatchToProps
id={GROUP_DETAILS_PANEL_ID}
onRowClick={noop}
onRowDoubleClick={noop}
- onContextMenu={noop}
+ onContextMenu={this.handleContextMenu}
contextMenuColumn={true}
- hideColumnSelector />
+ hideColumnSelector
+ hideSearchInput
+ actions={
+ <Grid container justify='flex-end'>
+ <Button
+ variant="contained"
+ color="primary"
+ onClick={this.props.onAddUser}>
+ <AddIcon /> Add user
+ </Button>
+ </Grid>
+ } />
);
}
+
+ handleContextMenu = (event: React.MouseEvent<HTMLElement>, resourceUuid: string) => {
+ const resource = getResource<PermissionResource>(resourceUuid)(this.props.resources);
+ if (resource) {
+ this.props.onContextMenu(event, {
+ name: '',
+ uuid: resource.uuid,
+ ownerUuid: resource.ownerUuid,
+ kind: resource.kind,
+ menuKind: ContextMenuKind.GROUP_MEMBER
+ });
+ }
+ }
});