// @flow import * as React from 'react'; import classnames from 'classnames'; import { FormattedMessage } from 'react-intl'; import { Link } from '../../components/link'; import PlainButton from '../../components/plain-button'; import Tooltip from '../../components/tooltip'; import IconClose from '../../icon/fill/X16'; import { COLLAB_GROUP_TYPE, COLLAB_PENDING_TYPE } from './constants'; import messages from './messages'; import commonMessages from '../../elements/common/messages'; import CollaboratorAvatarItem from './CollaboratorAvatarItem'; import type { collaboratorType } from '../unified-share-modal/flowTypes'; import './CollaboratorListItem.scss'; type Props = { canRemoveCollaborators?: boolean, collaborator: Object, index: number, onRemoveCollaborator?: (collaborator: collaboratorType) => void, trackingProps: { emailProps: ?Object, usernameProps: ?Object }, }; const CollaboratorListItem = (props: Props) => { const { index, trackingProps, canRemoveCollaborators = false, onRemoveCollaborator } = props; const { usernameProps, emailProps } = trackingProps; const { email, expiration, hasCustomAvatar, name, type, imageURL, isExternalCollab, profileURL, translatedRole, userID, isRemovable = false, } = props.collaborator; const userOrGroupNameContent = type !== COLLAB_GROUP_TYPE ? (
{name}
) : (
{name}
); const emailContent = type !== COLLAB_GROUP_TYPE && email ? (
{email}
) : null; const roleNodeContent = (
{type === COLLAB_PENDING_TYPE ? : translatedRole}
); return (
  • {userOrGroupNameContent} {emailContent}
    {canRemoveCollaborators ? (
    {roleNodeContent} {isRemovable && ( }> onRemoveCollaborator?.(props.collaborator)} type="button" > )}
    ) : ( roleNodeContent )}
  • ); }; export default CollaboratorListItem;