2016-10-18 21:57:29 +13:00
|
|
|
|
|
|
|
|
import React, { PropTypes } from 'react'
|
2016-10-25 17:01:37 +13:00
|
|
|
import * as helpers from '../helpers'
|
2016-10-18 21:57:29 +13:00
|
|
|
|
|
|
|
|
export default class Thumbnail extends React.Component{
|
|
|
|
|
|
|
|
|
|
constructor(props) {
|
|
|
|
|
super(props);
|
2016-10-24 21:26:01 +13:00
|
|
|
|
|
|
|
|
this.state = {
|
2016-11-28 08:24:01 +13:00
|
|
|
url: require('../../assets/no-image.svg')
|
2016-10-24 21:26:01 +13:00
|
|
|
}
|
2016-10-18 21:57:29 +13:00
|
|
|
}
|
|
|
|
|
|
2016-10-24 21:26:01 +13:00
|
|
|
componentDidMount(){
|
|
|
|
|
this.mapImageSizes();
|
|
|
|
|
}
|
2016-10-18 21:57:29 +13:00
|
|
|
|
2016-10-24 21:26:01 +13:00
|
|
|
componentWillReceiveProps( nextProps ){
|
2016-11-28 08:24:01 +13:00
|
|
|
this.mapImageSizes( nextProps );
|
2016-10-24 21:26:01 +13:00
|
|
|
}
|
|
|
|
|
|
2016-11-29 15:36:01 +13:00
|
|
|
mapImageSizes( props = this.props ){
|
|
|
|
|
|
|
|
|
|
// no images
|
|
|
|
|
if( !this.props.image && !this.props.images ){
|
|
|
|
|
this.setState({ url: require('../../assets/no-image.svg') })
|
2016-11-28 08:24:01 +13:00
|
|
|
|
|
|
|
|
// single image
|
2016-11-29 15:36:01 +13:00
|
|
|
}else if( this.props.image ){
|
2016-11-28 08:24:01 +13:00
|
|
|
this.setState({ url: this.props.image })
|
2016-10-25 17:01:37 +13:00
|
|
|
|
2016-11-28 08:24:01 +13:00
|
|
|
// multiple images
|
|
|
|
|
}else if( this.props.images && this.props.images.length > 0 ){
|
|
|
|
|
var images = helpers.sizedImages( this.props.images )
|
|
|
|
|
var size = 'medium'
|
|
|
|
|
if( this.props.size ) size = this.props.size
|
|
|
|
|
this.setState({ url: images[size] })
|
|
|
|
|
}
|
2016-10-18 21:57:29 +13:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
render(){
|
2016-11-29 15:36:01 +13:00
|
|
|
var style = { backgroundImage: 'url("'+this.state.url+'")' }
|
2016-10-25 17:01:37 +13:00
|
|
|
var className = 'thumbnail '+this.props.size;
|
|
|
|
|
if( this.props.circle ) className += ' circle';
|
|
|
|
|
|
2016-10-18 21:57:29 +13:00
|
|
|
return (
|
2016-10-25 17:01:37 +13:00
|
|
|
<div className={className}>
|
|
|
|
|
<div className="image" style={style}></div>
|
|
|
|
|
</div>
|
2016-10-18 21:57:29 +13:00
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|