The code powering m.abunchtell.com https://m.abunchtell.com
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 

64 linhas
2.0 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. onMention: React.PropTypes.func
  13. },
  14. mixins: [PureRenderMixin],
  15. handleReplyClick () {
  16. this.props.onReply(this.props.status);
  17. },
  18. handleFavouriteClick () {
  19. this.props.onFavourite(this.props.status);
  20. },
  21. handleReblogClick () {
  22. this.props.onReblog(this.props.status);
  23. },
  24. handleDeleteClick () {
  25. this.props.onDelete(this.props.status);
  26. },
  27. handleMentionClick () {
  28. this.props.onMention(this.props.status.get('account'));
  29. },
  30. render () {
  31. const { status, me } = this.props;
  32. let menu = [];
  33. if (status.getIn(['account', 'id']) === me) {
  34. menu.push({ text: 'Delete', action: this.handleDeleteClick });
  35. } else {
  36. menu.push({ text: 'Mention', action: this.handleMentionClick });
  37. }
  38. return (
  39. <div style={{ marginTop: '10px', overflow: 'hidden' }}>
  40. <div style={{ float: 'left', marginRight: '18px'}}><IconButton title='Reply' icon='reply' onClick={this.handleReplyClick} /></div>
  41. <div style={{ float: 'left', marginRight: '18px'}}><IconButton active={status.get('reblogged')} title='Reblog' icon='retweet' onClick={this.handleReblogClick} /></div>
  42. <div style={{ float: 'left', marginRight: '18px'}}><IconButton active={status.get('favourited')} title='Favourite' icon='star' onClick={this.handleFavouriteClick} activeStyle={{ color: '#ca8f04' }} /></div>
  43. <div style={{ width: '18px', height: '18px', float: 'left' }}>
  44. <DropdownMenu items={menu} icon='ellipsis-h' size={18} />
  45. </div>
  46. </div>
  47. );
  48. }
  49. });
  50. export default StatusActionBar;