@@ -34,17 +34,19 @@ interface CustomRolesPageViewProps {
34
34
builtInRoles : AssignableRoles [ ] | undefined ;
35
35
customRoles : AssignableRoles [ ] | undefined ;
36
36
onDeleteRole : ( role : Role ) => void ;
37
- canAssignOrgRole : boolean ;
38
37
canCreateOrgRole : boolean ;
38
+ canUpdateOrgRole : boolean ;
39
+ canDeleteOrgRole : boolean ;
39
40
isCustomRolesEnabled : boolean ;
40
41
}
41
42
42
43
export const CustomRolesPageView : FC < CustomRolesPageViewProps > = ( {
43
44
builtInRoles,
44
45
customRoles,
45
46
onDeleteRole,
46
- canAssignOrgRole,
47
47
canCreateOrgRole,
48
+ canUpdateOrgRole,
49
+ canDeleteOrgRole,
48
50
isCustomRolesEnabled,
49
51
} ) => {
50
52
return (
@@ -77,7 +79,9 @@ export const CustomRolesPageView: FC<CustomRolesPageViewProps> = ({
77
79
< RoleTable
78
80
roles = { customRoles }
79
81
isCustomRolesEnabled = { isCustomRolesEnabled }
80
- canAssignOrgRole = { canAssignOrgRole }
82
+ canCreateOrgRole = { canCreateOrgRole }
83
+ canUpdateOrgRole = { canUpdateOrgRole }
84
+ canDeleteOrgRole = { canDeleteOrgRole }
81
85
onDeleteRole = { onDeleteRole }
82
86
/>
83
87
< span >
@@ -90,7 +94,9 @@ export const CustomRolesPageView: FC<CustomRolesPageViewProps> = ({
90
94
< RoleTable
91
95
roles = { builtInRoles }
92
96
isCustomRolesEnabled = { isCustomRolesEnabled }
93
- canAssignOrgRole = { canAssignOrgRole }
97
+ canCreateOrgRole = { canCreateOrgRole }
98
+ canUpdateOrgRole = { canUpdateOrgRole }
99
+ canDeleteOrgRole = { canDeleteOrgRole }
94
100
onDeleteRole = { onDeleteRole }
95
101
/>
96
102
</ Stack >
@@ -100,15 +106,19 @@ export const CustomRolesPageView: FC<CustomRolesPageViewProps> = ({
100
106
interface RoleTableProps {
101
107
roles : AssignableRoles [ ] | undefined ;
102
108
isCustomRolesEnabled : boolean ;
103
- canAssignOrgRole : boolean ;
109
+ canCreateOrgRole : boolean ;
110
+ canUpdateOrgRole : boolean ;
111
+ canDeleteOrgRole : boolean ;
104
112
onDeleteRole : ( role : Role ) => void ;
105
113
}
106
114
107
115
const RoleTable : FC < RoleTableProps > = ( {
108
116
roles,
109
117
isCustomRolesEnabled,
118
+ canCreateOrgRole,
119
+ canUpdateOrgRole,
120
+ canDeleteOrgRole,
110
121
onDeleteRole,
111
- canAssignOrgRole,
112
122
} ) => {
113
123
const isLoading = roles === undefined ;
114
124
const isEmpty = Boolean ( roles && roles . length === 0 ) ;
@@ -134,14 +144,14 @@ const RoleTable: FC<RoleTableProps> = ({
134
144
< EmptyState
135
145
message = "No custom roles yet"
136
146
description = {
137
- canAssignOrgRole && isCustomRolesEnabled
147
+ canCreateOrgRole && isCustomRolesEnabled
138
148
? "Create your first custom role"
139
149
: ! isCustomRolesEnabled
140
150
? "Upgrade to a premium license to create a custom role"
141
151
: "You don't have permission to create a custom role"
142
152
}
143
153
cta = {
144
- canAssignOrgRole &&
154
+ canCreateOrgRole &&
145
155
isCustomRolesEnabled && (
146
156
< Button
147
157
component = { RouterLink }
@@ -165,7 +175,8 @@ const RoleTable: FC<RoleTableProps> = ({
165
175
< RoleRow
166
176
key = { role . name }
167
177
role = { role }
168
- canAssignOrgRole = { canAssignOrgRole }
178
+ canUpdateOrgRole = { canUpdateOrgRole }
179
+ canDeleteOrgRole = { canDeleteOrgRole }
169
180
onDelete = { ( ) => onDeleteRole ( role ) }
170
181
/>
171
182
) ) }
@@ -179,11 +190,17 @@ const RoleTable: FC<RoleTableProps> = ({
179
190
180
191
interface RoleRowProps {
181
192
role : AssignableRoles ;
193
+ canUpdateOrgRole : boolean ;
194
+ canDeleteOrgRole : boolean ;
182
195
onDelete : ( ) => void ;
183
- canAssignOrgRole : boolean ;
184
196
}
185
197
186
- const RoleRow : FC < RoleRowProps > = ( { role, onDelete, canAssignOrgRole } ) => {
198
+ const RoleRow : FC < RoleRowProps > = ( {
199
+ role,
200
+ onDelete,
201
+ canUpdateOrgRole,
202
+ canDeleteOrgRole,
203
+ } ) => {
187
204
const navigate = useNavigate ( ) ;
188
205
189
206
return (
@@ -195,20 +212,22 @@ const RoleRow: FC<RoleRowProps> = ({ role, onDelete, canAssignOrgRole }) => {
195
212
</ TableCell >
196
213
197
214
< TableCell >
198
- { ! role . built_in && (
215
+ { ! role . built_in && ( canUpdateOrgRole || canDeleteOrgRole ) && (
199
216
< MoreMenu >
200
217
< MoreMenuTrigger >
201
218
< ThreeDotsButton />
202
219
</ MoreMenuTrigger >
203
220
< MoreMenuContent >
204
- < MoreMenuItem
205
- onClick = { ( ) => {
206
- navigate ( role . name ) ;
207
- } }
208
- >
209
- Edit
210
- </ MoreMenuItem >
211
- { canAssignOrgRole && (
221
+ { canUpdateOrgRole && (
222
+ < MoreMenuItem
223
+ onClick = { ( ) => {
224
+ navigate ( role . name ) ;
225
+ } }
226
+ >
227
+ Edit
228
+ </ MoreMenuItem >
229
+ ) }
230
+ { canDeleteOrgRole && (
212
231
< MoreMenuItem danger onClick = { onDelete } >
213
232
Delete…
214
233
</ MoreMenuItem >
0 commit comments