parent
					
						
							
								07cc201acc
							
						
					
				
			
			
				commit
				
					
						8dfe5179ee
					
				
			
		
					 6 changed files with 103 additions and 79 deletions
				
			
		|  | @ -2,6 +2,7 @@ import React from 'react'; | |||
| import PropTypes from 'prop-types'; | ||||
| import ImmutablePropTypes from 'react-immutable-proptypes'; | ||||
| import { autoPlayGif } from '../initial_state'; | ||||
| import Avatar from './avatar'; | ||||
| 
 | ||||
| export default class AvatarOverlay extends React.PureComponent { | ||||
| 
 | ||||
|  | @ -9,27 +10,40 @@ export default class AvatarOverlay extends React.PureComponent { | |||
|     account: ImmutablePropTypes.map.isRequired, | ||||
|     friend: ImmutablePropTypes.map.isRequired, | ||||
|     animate: PropTypes.bool, | ||||
|     size: PropTypes.number, | ||||
|     baseSize: PropTypes.number, | ||||
|     overlaySize: PropTypes.number, | ||||
|   }; | ||||
| 
 | ||||
|   static defaultProps = { | ||||
|     animate: autoPlayGif, | ||||
|     size: 46, | ||||
|     baseSize: 36, | ||||
|     overlaySize: 24, | ||||
|   }; | ||||
| 
 | ||||
|   state = { | ||||
|     hovering: false, | ||||
|   }; | ||||
| 
 | ||||
|   handleMouseEnter = () => { | ||||
|     if (this.props.animate) return; | ||||
|     this.setState({ hovering: true }); | ||||
|   } | ||||
| 
 | ||||
|   handleMouseLeave = () => { | ||||
|     if (this.props.animate) return; | ||||
|     this.setState({ hovering: false }); | ||||
|   } | ||||
| 
 | ||||
|   render() { | ||||
|     const { account, friend, animate } = this.props; | ||||
| 
 | ||||
|     const baseStyle = { | ||||
|       backgroundImage: `url(${account.get(animate ? 'avatar' : 'avatar_static')})`, | ||||
|     }; | ||||
| 
 | ||||
|     const overlayStyle = { | ||||
|       backgroundImage: `url(${friend.get(animate ? 'avatar' : 'avatar_static')})`, | ||||
|     }; | ||||
|     const { account, friend, animate, size, baseSize, overlaySize } = this.props; | ||||
|     const { hovering } = this.state; | ||||
| 
 | ||||
|     return ( | ||||
|       <div className='account__avatar-overlay'> | ||||
|         <div className='account__avatar-overlay-base' style={baseStyle} /> | ||||
|         <div className='account__avatar-overlay-overlay' style={overlayStyle} /> | ||||
|       <div className='account__avatar-overlay' style={{ width: size, height: size }}> | ||||
|         <div className='account__avatar-overlay-base'><Avatar animate={hovering || animate} account={account} size={baseSize} /></div> | ||||
|         <div className='account__avatar-overlay-overlay'><Avatar animate={hovering || animate} account={friend} size={overlaySize} /></div> | ||||
|       </div> | ||||
|     ); | ||||
|   } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue