import React, { PureComponent } from 'react'; import { connect } from 'react-redux'; import { Select, DeleteButton } from '@grafana/ui'; import { SelectableValue } from '@grafana/data'; import { TeamMember, teamsPermissionLevels, TeamPermissionLevel } from 'app/types'; import { WithFeatureToggle } from 'app/core/components/WithFeatureToggle'; import { updateTeamMember, removeTeamMember } from './state/actions'; import { TagBadge } from 'app/core/components/TagFilter/TagBadge'; export interface Props { member: TeamMember; syncEnabled: boolean; editorsCanAdmin: boolean; signedInUserIsTeamAdmin: boolean; removeTeamMember?: typeof removeTeamMember; updateTeamMember?: typeof updateTeamMember; } export class TeamMemberRow extends PureComponent { constructor(props: Props) { super(props); this.renderLabels = this.renderLabels.bind(this); this.renderPermissions = this.renderPermissions.bind(this); } onRemoveMember(member: TeamMember) { this.props.removeTeamMember(member.userId); } onPermissionChange = (item: SelectableValue, member: TeamMember) => { const permission = item.value; const updatedTeamMember = { ...member, permission }; this.props.updateTeamMember(updatedTeamMember); }; renderPermissions(member: TeamMember) { const { editorsCanAdmin, signedInUserIsTeamAdmin } = this.props; const value = teamsPermissionLevels.find(dp => dp.value === member.permission); return (
{signedInUserIsTeamAdmin && (