Vulcan/packages/vulcan-base-components/lib/users/UsersAvatar.jsx

44 lines
1.1 KiB
React
Raw Normal View History

2017-03-23 16:27:59 +09:00
import { registerComponent } from 'meteor/vulcan:core';
2017-05-19 14:42:43 -06:00
import React from 'react';
import PropTypes from 'prop-types';
2017-03-23 16:27:59 +09:00
import Users from 'meteor/vulcan:users';
2016-06-30 09:56:24 +09:00
import { Link } from 'react-router';
import classNames from 'classnames';
const UsersAvatar = ({className, user, link}) => {
2016-03-24 16:03:30 +09:00
const avatarUrl = user.avatarUrl || Users.avatar.getUrl(user);
const img = <img alt={Users.getDisplayName(user)} className="avatar-image" src={avatarUrl} title={user.username}/>;
2016-06-23 15:00:58 +09:00
const initials = <span className="avatar-initials"><span>{Users.avatar.getInitials(user)}</span></span>;
const avatar = avatarUrl ? img : initials;
2016-03-25 12:42:25 +09:00
return (
<div className={classNames('avatar', className)}>
{link ?
<Link to={Users.getProfileUrl(user)}>
<span>{avatar}</span>
</Link>
: <span>{avatar}</span>
}
</div>
);
2016-03-25 12:42:25 +09:00
2016-03-24 16:03:30 +09:00
}
UsersAvatar.propTypes = {
2017-05-19 14:42:43 -06:00
user: PropTypes.object.isRequired,
size: PropTypes.string,
link: PropTypes.bool
2016-03-24 16:03:30 +09:00
}
UsersAvatar.defaultProps = {
2017-05-19 14:42:43 -06:00
size: 'medium',
2016-03-25 12:42:25 +09:00
link: true
2016-03-24 16:03:30 +09:00
}
2016-03-19 18:19:28 +09:00
2017-05-19 14:42:43 -06:00
UsersAvatar.displayName = 'UsersAvatar';
registerComponent('UsersAvatar', UsersAvatar);