Bladeren bron

Fix #187, address #441 - <Avatar> component now plays gifs only while hovered

master
Eugen Rochko 7 jaren geleden
bovenliggende
commit
00fa850bdc
1 gewijzigde bestanden met toevoegingen van 31 en 2 verwijderingen
  1. +31
    -2
      app/assets/javascripts/components/components/avatar.jsx

+ 31
- 2
app/assets/javascripts/components/components/avatar.jsx Bestand weergeven

@@ -8,12 +8,41 @@ const Avatar = React.createClass({
style: React.PropTypes.object
},

getInitialState () {
return {
hovering: false
};
},

mixins: [PureRenderMixin],

handleMouseEnter () {
this.setState({ hovering: true });
},

handleMouseLeave () {
this.setState({ hovering: false });
},

componentDidMount () {
this.canvas.getContext('2d').drawImage(this.image, 0, 0, this.props.size, this.props.size);
},

setImageRef (c) {
this.image = c;
},

setCanvasRef (c) {
this.canvas = c;
},

render () {
const { hovering } = this.state;

return (
<div style={{ ...this.props.style, width: `${this.props.size}px`, height: `${this.props.size}px` }}>
<img src={this.props.src} width={this.props.size} height={this.props.size} alt='' style={{ display: 'block', borderRadius: '4px' }} />
<div onMouseEnter={this.handleMouseEnter} onMouseLeave={this.handleMouseLeave} style={{ ...this.props.style, width: `${this.props.size}px`, height: `${this.props.size}px`, position: 'relative' }}>
<img ref={this.setImageRef} src={this.props.src} width={this.props.size} height={this.props.size} alt='' style={{ position: 'absolute', top: '0', left: '0', display: hovering ? 'block' : 'none', borderRadius: '4px' }} />
<canvas ref={this.setCanvasRef} width={this.props.size} height={this.props.size} style={{ borderRadius: '4px' }} />
</div>
);
}


Laden…
Annuleren
Opslaan