1
1
import MenuItem from "@material-ui/core/MenuItem"
2
- import Select from "@material-ui/core/Select"
2
+ import Select , { SelectProps } from "@material-ui/core/Select"
3
3
import { makeStyles } from "@material-ui/core/styles"
4
4
import Table from "@material-ui/core/Table"
5
5
import TableBody from "@material-ui/core/TableBody"
@@ -118,6 +118,34 @@ const AddTemplateUserOrGroup: React.FC<AddTemplateUserOrGroupProps> = ({
118
118
)
119
119
}
120
120
121
+ const RoleSelect : FC < SelectProps > = ( props ) => {
122
+ const styles = useStyles ( )
123
+
124
+ return (
125
+ < Select
126
+ renderValue = { ( value ) => < div className = { styles . role } > { `${ value } ` } </ div > }
127
+ variant = "outlined"
128
+ className = { styles . updateSelect }
129
+ { ...props }
130
+ >
131
+ < MenuItem key = "view" value = "view" className = { styles . menuItem } >
132
+ < div >
133
+ < div > View</ div >
134
+ < div className = { styles . menuItemSecondary } > Read, access</ div >
135
+ </ div >
136
+ </ MenuItem >
137
+ < MenuItem key = "admin" value = "admin" className = { styles . menuItem } >
138
+ < div >
139
+ < div > Admin</ div >
140
+ < div className = { styles . menuItemSecondary } >
141
+ Read, access, edit, push, and delete
142
+ </ div >
143
+ </ div >
144
+ </ MenuItem >
145
+ </ Select >
146
+ )
147
+ }
148
+
121
149
export interface TemplatePermissionsPageViewProps {
122
150
templateACL : TemplateACL | undefined
123
151
organizationId : string
@@ -218,10 +246,8 @@ export const TemplatePermissionsPageView: FC<
218
246
< TableCell >
219
247
< ChooseOne >
220
248
< Cond condition = { canUpdatePermissions } >
221
- < Select
249
+ < RoleSelect
222
250
value = { group . role }
223
- variant = "outlined"
224
- className = { styles . updateSelect }
225
251
disabled = {
226
252
updatingGroup && updatingGroup . id === group . id
227
253
}
@@ -231,14 +257,7 @@ export const TemplatePermissionsPageView: FC<
231
257
event . target . value as TemplateRole ,
232
258
)
233
259
} }
234
- >
235
- < MenuItem key = "view" value = "view" >
236
- View
237
- </ MenuItem >
238
- < MenuItem key = "admin" value = "admin" >
239
- Admin
240
- </ MenuItem >
241
- </ Select >
260
+ />
242
261
</ Cond >
243
262
< Cond >
244
263
< div className = { styles . role } > { group . role } </ div >
@@ -283,10 +302,8 @@ export const TemplatePermissionsPageView: FC<
283
302
< TableCell >
284
303
< ChooseOne >
285
304
< Cond condition = { canUpdatePermissions } >
286
- < Select
305
+ < RoleSelect
287
306
value = { user . role }
288
- variant = "outlined"
289
- className = { styles . updateSelect }
290
307
disabled = {
291
308
updatingUser && updatingUser . id === user . id
292
309
}
@@ -296,14 +313,7 @@ export const TemplatePermissionsPageView: FC<
296
313
event . target . value as TemplateRole ,
297
314
)
298
315
} }
299
- >
300
- < MenuItem key = "view" value = "view" >
301
- View
302
- </ MenuItem >
303
- < MenuItem key = "admin" value = "admin" >
304
- Admin
305
- </ MenuItem >
306
- </ Select >
316
+ />
307
317
</ Cond >
308
318
< Cond >
309
319
< div className = { styles . role } > { user . role } </ div >
@@ -355,15 +365,31 @@ export const useStyles = makeStyles((theme) => {
355
365
// Set a fixed width for the select. It avoids selects having different sizes
356
366
// depending on how many roles they have selected.
357
367
width : theme . spacing ( 25 ) ,
368
+
358
369
"& .MuiSelect-root" : {
359
370
// Adjusting padding because it does not have label
360
371
paddingTop : theme . spacing ( 1.5 ) ,
361
372
paddingBottom : theme . spacing ( 1.5 ) ,
373
+
374
+ ".secondary" : {
375
+ display : "none" ,
376
+ } ,
362
377
} ,
363
378
} ,
364
379
365
380
role : {
366
381
textTransform : "capitalize" ,
367
382
} ,
383
+
384
+ menuItem : {
385
+ lineHeight : "140%" ,
386
+ paddingTop : theme . spacing ( 1.5 ) ,
387
+ paddingBottom : theme . spacing ( 1.5 ) ,
388
+ } ,
389
+
390
+ menuItemSecondary : {
391
+ fontSize : 14 ,
392
+ color : theme . palette . text . secondary ,
393
+ } ,
368
394
}
369
395
} )
0 commit comments