You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1.8 KiB

  1. import ImmutablePropTypes from 'react-immutable-proptypes';
  2. import PureRenderMixin from 'react-addons-pure-render-mixin';
  3. import IconButton from './icon_button';
  4. import DropdownMenu from './dropdown_menu';
  5. const StatusActionBar = React.createClass({
  6. propTypes: {
  7. status: ImmutablePropTypes.map.isRequired,
  8. onReply: React.PropTypes.func,
  9. onFavourite: React.PropTypes.func,
  10. onReblog: React.PropTypes.func,
  11. onDelete: React.PropTypes.func
  12. },
  13. mixins: [PureRenderMixin],
  14. handleReplyClick () {
  15. this.props.onReply(this.props.status);
  16. },
  17. handleFavouriteClick () {
  18. this.props.onFavourite(this.props.status);
  19. },
  20. handleReblogClick () {
  21. this.props.onReblog(this.props.status);
  22. },
  23. handleDeleteClick () {
  24. this.props.onDelete(this.props.status);
  25. },
  26. render () {
  27. const { status, me } = this.props;
  28. let menu = [];
  29. if (status.getIn(['account', 'id']) === me) {
  30. menu.push({ text: 'Delete', action: this.handleDeleteClick });
  31. }
  32. return (
  33. <div style={{ marginTop: '10px', overflow: 'hidden' }}>
  34. <div style={{ float: 'left', marginRight: '18px'}}><IconButton title='Reply' icon='reply' onClick={this.handleReplyClick} /></div>
  35. <div style={{ float: 'left', marginRight: '18px'}}><IconButton active={status.get('reblogged')} title='Reblog' icon='retweet' onClick={this.handleReblogClick} /></div>
  36. <div style={{ float: 'left', marginRight: '18px'}}><IconButton active={status.get('favourited')} title='Favourite' icon='star' onClick={this.handleFavouriteClick} /></div>
  37. <div onClick={e => e.stopPropagation()} style={{ width: '18px', height: '18px', float: 'left' }}>
  38. <DropdownMenu items={menu} icon='ellipsis-h' size={18} />
  39. </div>
  40. </div>
  41. );
  42. }
  43. });
  44. export default StatusActionBar;