Skip to content

Commit 105bb08

Browse files
rdonigianCarsonF
authored andcommitted
add user status to details and grid
1 parent 75bb304 commit 105bb08

File tree

6 files changed

+43
-2
lines changed

6 files changed

+43
-2
lines changed

src/common/fragments/user.graphql

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ fragment DisplayUser on User {
5454
canEdit
5555
value
5656
}
57+
status {
58+
canRead
59+
canEdit
60+
value
61+
}
5762
fullName
5863
timezone {
5964
canRead

src/components/UserDataGrid/UserColumns.tsx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,15 @@ import {
44
GridToolbarColumnsButton,
55
GridToolbarFilterButton,
66
} from '@mui/x-data-grid-pro';
7-
import { RoleLabels, RoleList } from '~/api/schema.graphql';
7+
import {
8+
RoleLabels,
9+
RoleList,
10+
UserStatusLabels,
11+
UserStatusList,
12+
} from '~/api/schema.graphql';
813
import {
914
booleanColumn,
15+
enumColumn,
1016
getInitialVisibility,
1117
multiEnumColumn,
1218
QuickFilterButton,
@@ -43,6 +49,12 @@ export const UserColumns: Array<GridColDef<User>> = [
4349
return roles.value;
4450
},
4551
},
52+
{
53+
headerName: 'Status',
54+
field: 'status',
55+
...enumColumn(UserStatusList, UserStatusLabels),
56+
valueGetter: (_, row) => row.status.value,
57+
},
4658
{
4759
headerName: 'Pinned',
4860
field: 'pinned',

src/components/UserDataGrid/userDataGridRow.graphql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,8 @@ fragment userDataGridRow on User {
1010
email {
1111
value
1212
}
13+
status {
14+
value
15+
}
1316
...TogglePin
1417
}

src/scenes/Users/Detail/UserDetail.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,11 @@ export const UserDetail = () => {
9696
<ToggleCommentsButton loading={!user} />
9797
<ImpersonationToggle user={user} />
9898
</Box>
99+
<DisplayProperty
100+
label="Status"
101+
value={user?.status.value}
102+
loading={!user}
103+
/>
99104
<DisplayProperty
100105
label="Email"
101106
value={user?.email.value}

src/scenes/Users/Edit/EditUser.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export const EditUser = (props: EditUserProps) => {
3030
email: user.email.value,
3131
title: user.title.value,
3232
roles: user.roles.value,
33+
status: user.status.value,
3334
},
3435
}
3536
: undefined,

src/scenes/Users/UserForm/UserForm.tsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
import { Stack } from '@mui/material';
22
import { memoize } from 'lodash';
33
import { SetRequired } from 'type-fest';
4-
import { RoleLabels } from '~/api/schema.graphql';
4+
import {
5+
RoleLabels,
6+
UserStatusLabels,
7+
UserStatusList,
8+
} from '~/api/schema.graphql';
59
import { labelFrom } from '~/common';
610
import {
711
DialogForm,
812
DialogFormProps,
913
} from '../../../components/Dialog/DialogForm';
1014
import {
1115
EmailField,
16+
EnumField,
1217
matchFieldIfSame,
1318
SecuredField,
1419
SubmitError,
@@ -91,6 +96,16 @@ export const UserForm = <T, R = void>({
9196
)}
9297
</SecuredField>
9398
</Stack>
99+
<SecuredField obj={user} name="status">
100+
{(props) => (
101+
<EnumField
102+
label="Status"
103+
options={UserStatusList}
104+
getLabel={(value) => UserStatusLabels[value]}
105+
{...props}
106+
/>
107+
)}
108+
</SecuredField>
94109
<SecuredField obj={user} name="email">
95110
{(props) => <EmailField {...props} required={false} />}
96111
</SecuredField>

0 commit comments

Comments
 (0)