import { css } from '@emotion/css'; import { useState } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { ConfirmButton, RadioButtonGroup, Icon, useStyles2 } from '@grafana/ui'; import { contextSrv } from 'app/core/core'; import { ExternalUserTooltip } from 'app/features/admin/UserOrgs'; import { AccessControlAction } from 'app/types/accessControl'; interface Props { isGrafanaAdmin: boolean; isExternalUser?: boolean; lockMessage?: string; onGrafanaAdminChange: (isGrafanaAdmin: boolean) => void; } const adminOptions = [ { label: 'Yes', value: true }, { label: 'No', value: false }, ]; export function UserPermissions({ isGrafanaAdmin, isExternalUser, lockMessage, onGrafanaAdminChange }: Props) { const [isEditing, setIsEditing] = useState(false); const [currentAdminOption, setCurrentAdminOption] = useState(isGrafanaAdmin); const onChangeClick = () => setIsEditing(true); const onCancelClick = () => { setIsEditing(false); setCurrentAdminOption(isGrafanaAdmin); }; const handleGrafanaAdminChange = () => onGrafanaAdminChange(currentAdminOption); const canChangePermissions = contextSrv.hasPermission(AccessControlAction.UsersPermissionsUpdate) && !isExternalUser; const styles = useStyles2(getTooltipStyles); return (

Permissions

{isEditing ? ( ) : ( )}
Grafana Admin {isGrafanaAdmin ? ( <> Yes ) : ( No )} {canChangePermissions && ( {t('admin.user-permissions.change-button', 'Change')} )} {isExternalUser && (
)}
); } const getTooltipStyles = (theme: GrafanaTheme2) => ({ lockMessageClass: css({ display: 'flex', justifyContent: 'flex-end', fontStyle: 'italic', marginRight: theme.spacing(0.6), }), });