framework/js/lib/helpers/avatar.js

37 lines
1.1 KiB
JavaScript
Raw Normal View History

/**
* The `avatar` helper displays a user's avatar.
*
* @param {User} user
* @param {Object} attrs Attributes to apply to the avatar element
* @return {Object}
*/
export default function avatar(user, attrs = {}) {
attrs.className = 'Avatar ' + (attrs.className || '');
let content = '';
2015-04-25 20:58:39 +08:00
// If the `title` attribute is set to null or false, we don't want to give the
// avatar a title. On the other hand, if it hasn't been given at all, we can
// safely default it to the user's username.
const hasTitle = attrs.title === 'undefined' || attrs.title;
if (!hasTitle) delete attrs.title;
2015-04-25 20:58:39 +08:00
// If a user has been passed, then we will set up an avatar using their
// uploaded image, or the first letter of their username if they haven't
// uploaded one.
2015-04-25 20:58:39 +08:00
if (user) {
const username = user.username() || '?';
const avatarUrl = user.avatarUrl();
2015-04-25 20:58:39 +08:00
if (hasTitle) attrs.title = attrs.title || username;
2015-04-25 20:58:39 +08:00
if (avatarUrl) {
return <img {...attrs} src={avatarUrl}/>;
2015-04-25 20:58:39 +08:00
}
content = username.charAt(0).toUpperCase();
attrs.style = {background: user.color()};
2015-04-25 20:58:39 +08:00
}
return <span {...attrs}>{content}</span>;
2015-04-25 20:58:39 +08:00
}