blob: 8df03c36cd4e53bd13446f04d1f74a6d3c586115 [file] [log] [blame]
var React = require('react'),
SupportedPlatforms = require('./supportedplatforms.jsx'),
classNames = require('classnames');
var Plugin = React.createClass({
shouldComponentUpdate: function(nextProps, nextState) {
return this.props.plugin !== nextProps.plugin;
},
render: function() {
var license = this.props.plugin.license;
if (license && license.length > 1) {
license = license[0];
}
var downloadField;
var classes = classNames({
'pluginCard': true,
'featuredPlugin': this.props.plugin.isOfficial
});
if(this.props.plugin.downloadCount) {
var downloadCount = this.props.plugin.downloadCount.toLocaleString();
downloadField = <p><small> {downloadCount} downloads last month</small></p>;
}
return (
<li>
<div className={classes}>
<div className="primaryContent">
<div className="header">
<h3><a href={'https://www.npmjs.com/package/' + this.props.plugin.name} target="_blank">{this.props.plugin.name}</a></h3>
<small className="pluginVersion">v{this.props.plugin.version}</small>
<small> by </small>
<small className="pluginAuthor">{this.props.plugin.author}</small>
</div>
<div className="pluginDesc">{this.props.plugin.description}</div>
</div>
<div className="secondaryContent">
<SupportedPlatforms keywords={this.props.plugin.keywords}/>
<div className="extraInfo">
<p><small><strong>License:</strong> {license}</small></p>
{downloadField}
<p><small><em>Last updated {this.props.plugin.modified} days ago</em></small></p>
</div>
</div>
</div>
</li>
)
}
});
module.exports = Plugin;