mirror of
https://github.com/grafana/grafana.git
synced 2025-08-01 21:12:13 +08:00
Disable select when permissions is not managed or if user does not have (#44144)
* Disable select when permissions is not managed
This commit is contained in:
@ -6,12 +6,12 @@ interface Props {
|
||||
title: string;
|
||||
items: ResourcePermission[];
|
||||
permissionLevels: string[];
|
||||
canRemove: boolean;
|
||||
canSet: boolean;
|
||||
onRemove: (item: ResourcePermission) => void;
|
||||
onChange: (resourcePermission: ResourcePermission, permission: string) => void;
|
||||
}
|
||||
|
||||
export const PermissionList = ({ title, items, permissionLevels, canRemove, onRemove, onChange }: Props) => {
|
||||
export const PermissionList = ({ title, items, permissionLevels, canSet, onRemove, onChange }: Props) => {
|
||||
if (items.length === 0) {
|
||||
return null;
|
||||
}
|
||||
@ -26,7 +26,7 @@ export const PermissionList = ({ title, items, permissionLevels, canRemove, onRe
|
||||
item={item}
|
||||
onRemove={onRemove}
|
||||
onChange={onChange}
|
||||
canRemove={canRemove}
|
||||
canSet={canSet}
|
||||
key={`${index}-${item.userId}`}
|
||||
permissionLevels={permissionLevels}
|
||||
/>
|
||||
|
@ -5,12 +5,12 @@ import { Button, Icon, Select, Tooltip } from '@grafana/ui';
|
||||
interface Props {
|
||||
item: ResourcePermission;
|
||||
permissionLevels: string[];
|
||||
canRemove: boolean;
|
||||
canSet: boolean;
|
||||
onRemove: (item: ResourcePermission) => void;
|
||||
onChange: (item: ResourcePermission, permission: string) => void;
|
||||
}
|
||||
|
||||
export const PermissionListItem = ({ item, permissionLevels, canRemove, onRemove, onChange }: Props) => (
|
||||
export const PermissionListItem = ({ item, permissionLevels, canSet, onRemove, onChange }: Props) => (
|
||||
<tr>
|
||||
<td style={{ width: '1%' }}>{getAvatar(item)}</td>
|
||||
<td style={{ width: '90%' }}>{getDescription(item)}</td>
|
||||
@ -21,6 +21,7 @@ export const PermissionListItem = ({ item, permissionLevels, canRemove, onRemove
|
||||
<Select
|
||||
className="width-20"
|
||||
menuShouldPortal
|
||||
disabled={!canSet || !item.isManaged}
|
||||
onChange={(p) => onChange(item, p.value!)}
|
||||
value={permissionLevels.find((p) => p === item.permission)}
|
||||
options={permissionLevels.map((p) => ({ value: p, label: p }))}
|
||||
@ -38,7 +39,7 @@ export const PermissionListItem = ({ item, permissionLevels, canRemove, onRemove
|
||||
size="sm"
|
||||
icon="times"
|
||||
variant="destructive"
|
||||
disabled={!canRemove}
|
||||
disabled={!canSet}
|
||||
onClick={() => onRemove(item)}
|
||||
aria-label={`Remove permission for ${getName(item)}`}
|
||||
/>
|
||||
|
@ -139,7 +139,7 @@ export const Permissions = ({ resource, resourceId, canListUsers, canSetPermissi
|
||||
permissionLevels={desc.permissions}
|
||||
onChange={onChange}
|
||||
onRemove={onRemove}
|
||||
canRemove={canSetPermissions}
|
||||
canSet={canSetPermissions}
|
||||
/>
|
||||
<PermissionList
|
||||
title="Users"
|
||||
@ -147,7 +147,7 @@ export const Permissions = ({ resource, resourceId, canListUsers, canSetPermissi
|
||||
permissionLevels={desc.permissions}
|
||||
onChange={onChange}
|
||||
onRemove={onRemove}
|
||||
canRemove={canSetPermissions}
|
||||
canSet={canSetPermissions}
|
||||
/>
|
||||
<PermissionList
|
||||
title="Teams"
|
||||
@ -155,7 +155,7 @@ export const Permissions = ({ resource, resourceId, canListUsers, canSetPermissi
|
||||
permissionLevels={desc.permissions}
|
||||
onChange={onChange}
|
||||
onRemove={onRemove}
|
||||
canRemove={canSetPermissions}
|
||||
canSet={canSetPermissions}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
Reference in New Issue
Block a user