-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
75 lines (68 loc) · 1.69 KB
/
Copy pathindex.js
File metadata and controls
75 lines (68 loc) · 1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import silhouette from './silhouette';
import Tooltip from '../tooltip';
import OverlayTrigger from '../overlay-trigger';
const AvatarImg = (props) => (
<div className="user-avatar-img">
<img
src={ props.src || silhouette }
alt={ `Picture of ${props.name || 'unknown user'}` }
onError={ (e) => {
e.target.src = silhouette;
} }
/>
</div>
);
AvatarImg.displayName = 'AvatarImg';
AvatarImg.propTypes = {
src: PropTypes.string,
name: PropTypes.string,
};
const Avatar = (props) => (
<div
className={ classNames('user-avatar', {
'user-avatar--small': props.size === 'small',
'user-avatar--medium': props.size === 'medium',
'user-avatar--extra-large': props.size === 'extraLarge',
}, props.className) }
style={ props.style }
>
{ props.showTooltip ? (
<OverlayTrigger
trigger="hover"
delay={ 0 }
overlay={
<Tooltip placement={ props.tooltipPlacement }>{ props.name === '' ? 'N/A' : props.name }</Tooltip>
}
>
<AvatarImg
src={ props.src }
name={ props.name }
/>
</OverlayTrigger>
) : (
<AvatarImg
src={ props.src }
name={ props.name }
/>
) }
</div>
);
Avatar.displayName = 'Avatar';
Avatar.propTypes = {
size: PropTypes.string,
name: PropTypes.string,
src: PropTypes.string,
className: PropTypes.string,
tooltipPlacement: PropTypes.string,
showTooltip: PropTypes.bool,
style: PropTypes.object,
};
Avatar.defaultProps = {
src: silhouette,
showTooltip: true,
name: 'N/A',
};
export default Avatar;