From 588a48dd670bf2129f550a19089ec819cb8f649a Mon Sep 17 00:00:00 2001 From: RachelElysia <71795832+RachelElysia@users.noreply.github.com> Date: Tue, 8 Jun 2021 19:14:52 -0400 Subject: [PATCH] User Management Page: Teams column renders for basic tier only (#1023) * Render teams column only for Basic tier Co-authored by: Sarah Gillespie @gillespi314 --- .../UserManagementPage/UserManagementPage.jsx | 8 +++++- .../UserManagementPage/UsersTableConfig.tsx | 26 ++++++++++++------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/frontend/pages/admin/UserManagementPage/UserManagementPage.jsx b/frontend/pages/admin/UserManagementPage/UserManagementPage.jsx index 565d61d26e..7a36b70297 100644 --- a/frontend/pages/admin/UserManagementPage/UserManagementPage.jsx +++ b/frontend/pages/admin/UserManagementPage/UserManagementPage.jsx @@ -13,6 +13,7 @@ import inviteInterface from "interfaces/invite"; import configInterface from "interfaces/config"; import userInterface from "interfaces/user"; import teamInterface from "interfaces/team"; +import permissionUtils from "utilities/permissions"; import paths from "router/paths"; import entityGetter from "redux/utilities/entityGetter"; import inviteActions from "redux/nodes/entities/invites/actions"; @@ -60,6 +61,7 @@ export class UserManagementPage extends Component { base: PropTypes.string, email: PropTypes.string, }), + isBasicTier: PropTypes.bool, users: PropTypes.arrayOf(userInterface), userErrors: PropTypes.shape({ base: PropTypes.string, @@ -80,9 +82,11 @@ export class UserManagementPage extends Component { usersEditing: [], }; + const { isBasicTier } = props; + // done as an instance variable as these headers will not change, so dont // want to recalculate on re-renders. - this.tableHeaders = generateTableHeaders(this.onActionSelect); + this.tableHeaders = generateTableHeaders(this.onActionSelect, isBasicTier); } componentDidMount() { @@ -488,6 +492,7 @@ const mapStateToProps = (state) => { } = state.entities.invites; const { errors: userErrors, loading: loadingUsers } = state.entities.users; const loadingTableData = loadingUsers || loadingInvites; + const isBasicTier = permissionUtils.isBasicTier(config); return { appConfigLoading, @@ -497,6 +502,7 @@ const mapStateToProps = (state) => { userErrors, invites, inviteErrors, + isBasicTier, loadingTableData, teams, }; diff --git a/frontend/pages/admin/UserManagementPage/UsersTableConfig.tsx b/frontend/pages/admin/UserManagementPage/UsersTableConfig.tsx index b07900cbb9..128dba4dc2 100644 --- a/frontend/pages/admin/UserManagementPage/UsersTableConfig.tsx +++ b/frontend/pages/admin/UserManagementPage/UsersTableConfig.tsx @@ -1,4 +1,3 @@ -import { string } from "prop-types"; import React from "react"; import HeaderCell from "components/TableContainer/DataTable/HeaderCell/HeaderCell"; @@ -50,9 +49,10 @@ interface IUserTableData { // NOTE: cellProps come from react-table // more info here https://react-table.tanstack.com/docs/api/useTable#cell-properties const generateTableHeaders = ( - actionSelectHandler: (value: string, user: IUser | IInvite) => void + actionSelectHandler: (value: string, user: IUser | IInvite) => void, + isBasicTier = false ): IDataColumn[] => { - return [ + const tableHeaders: IDataColumn[] = [ { title: "Name", Header: (cellProps) => ( @@ -83,13 +83,6 @@ const generateTableHeaders = ( accessor: "email", Cell: (cellProps) => , }, - { - title: "Teams", - Header: "Teams", - accessor: "teams", - disableSortBy: true, - Cell: (cellProps) => , - }, { title: "Roles", Header: "Roles", @@ -113,6 +106,19 @@ const generateTableHeaders = ( ), }, ]; + + // Add Teams tab for basic tier only + if (isBasicTier) { + tableHeaders.splice(3, 0, { + title: "Teams", + Header: "Teams", + accessor: "teams", + disableSortBy: true, + Cell: (cellProps) => , + }); + } + + return tableHeaders; }; // TODO: need to rethink status data.