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

52 lines
1.2 KiB
React
Raw Normal View History

import { registerComponent } from 'meteor/nova:lib';
2016-03-24 16:03:30 +09:00
import React, { PropTypes, Component } from 'react';
2016-06-23 15:00:58 +09:00
import Users from 'meteor/nova:users';
2016-06-30 09:56:24 +09:00
import { Link } from 'react-router';
const UsersAvatar = ({user, size, link}) => {
2016-03-24 16:03:30 +09:00
const sizes = {
small: "20px",
medium: "30px",
large: "50px"
}
const aStyle = {
borderRadius: "100%",
display: "inline-block",
height: sizes[size],
width: sizes[size]
};
const imgStyle = {
borderRadius: "100%",
2016-03-25 12:42:25 +09:00
display: "block",
height: sizes[size],
width: sizes[size]
2016-03-24 16:03:30 +09:00
};
2016-06-23 15:00:58 +09:00
const avatarUrl = Users.avatar.getUrl(user);
2016-06-23 15:00:58 +09:00
const img = <img alt={Users.getDisplayName(user)} style={imgStyle} className="avatar" src={avatarUrl}/>;
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
2016-06-30 09:56:24 +09:00
return link ? <Link style={aStyle} className="users-avatar" to={Users.getProfileUrl(user)}>{avatar}</Link> : avatar;
2016-03-25 12:42:25 +09:00
2016-03-24 16:03:30 +09:00
}
UsersAvatar.propTypes = {
2016-03-24 16:03:30 +09:00
user: React.PropTypes.object.isRequired,
2016-03-25 12:42:25 +09:00
size: React.PropTypes.string,
link: React.PropTypes.bool
2016-03-24 16:03:30 +09:00
}
UsersAvatar.defaultProps = {
2016-03-25 12:42:25 +09:00
size: "medium",
link: true
2016-03-24 16:03:30 +09:00
}
2016-03-19 18:19:28 +09:00
UsersAvatar.displayName = "UsersAvatar";
registerComponent('UsersAvatar', UsersAvatar);