Vulcan/packages/nova-share/lib/common/social_share.jsx

44 lines
1.9 KiB
React
Raw Normal View History

const SocialShare = React.createClass({
propTypes: {
url: React.PropTypes.string.isRequired,
title: React.PropTypes.string.isRequired,
},
getInitialState: function() {
return {showShare: false};
},
viaTwitter() {
return !!Settings.get('twitterAccount') ? 'via='+Settings.get('twitterAccount') : '';
},
toggleView() {
this.setState({
showShare: !this.state.showShare
});
return;
},
insertIcon(name) {
return {__html: Telescope.utils.getIcon(name)};
},
render() {
let shareDisplay = this.state.showShare ? 'active' : 'hidden';
return (
<div className="social-share">
<a className="share-link action" title="share" onClick={ this.toggleView } dangerouslySetInnerHTML={ this.insertIcon('share')}/>
<div className={ `share-options ${shareDisplay}` }>
<a className="share-option-facebook" href={ `https://www.facebook.com/sharer/sharer.php?u=${ encodeURIComponent(FlowRouter.url(this.props.url)) }`} target="_blank" dangerouslySetInnerHTML={ this.insertIcon('facebook')} />
<a className="share-option-twitter" href={ `//twitter.com/intent/tweet?text=${ encodeURIComponent(this.props.title) }%20-%20${ encodeURIComponent(FlowRouter.url(this.props.url)) }` } target="_blank" dangerouslySetInnerHTML={ this.insertIcon('twitter')}/>
<a className="share-option-linkedin" href={ `//www.linkedin.com/shareArticle?mini=true&url=${ encodeURIComponent(FlowRouter.url(this.props.url)) }&summary=${ encodeURIComponent(this.props.title) }` } target="_blank" dangerouslySetInnerHTML={ this.insertIcon('linkedin')}/>
<a className="share-option-google" href={ `https://plus.google.com/share?url=${ encodeURIComponent(FlowRouter.url(this.props.url)) }` } target="_blank" dangerouslySetInnerHTML={ this.insertIcon('googleplus')}/>
</div>
</div>
)
}
});
module.exports = SocialShare;