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.
 
 
 
 

70 linhas
2.2 KiB

  1. import ImmutablePropTypes from 'react-immutable-proptypes';
  2. import PropTypes from 'prop-types';
  3. import Avatar from '../../../components/avatar';
  4. import IconButton from '../../../components/icon_button';
  5. import DisplayName from '../../../components/display_name';
  6. import emojify from '../../../emoji';
  7. import { defineMessages, injectIntl } from 'react-intl';
  8. const messages = defineMessages({
  9. cancel: { id: 'reply_indicator.cancel', defaultMessage: 'Cancel' }
  10. });
  11. class ReplyIndicator extends React.PureComponent {
  12. constructor (props, context) {
  13. super(props, context);
  14. this.handleClick = this.handleClick.bind(this);
  15. this.handleAccountClick = this.handleAccountClick.bind(this);
  16. }
  17. handleClick () {
  18. this.props.onCancel();
  19. }
  20. handleAccountClick (e) {
  21. if (e.button === 0) {
  22. e.preventDefault();
  23. this.context.router.push(`/accounts/${this.props.status.getIn(['account', 'id'])}`);
  24. }
  25. }
  26. render () {
  27. const { status, intl } = this.props;
  28. if (!status) {
  29. return null;
  30. }
  31. const content = { __html: emojify(status.get('content')) };
  32. return (
  33. <div className='reply-indicator'>
  34. <div style={{ overflow: 'hidden', marginBottom: '5px' }}>
  35. <div style={{ float: 'right', lineHeight: '24px' }}><IconButton title={intl.formatMessage(messages.cancel)} icon='times' onClick={this.handleClick} /></div>
  36. <a href={status.getIn(['account', 'url'])} onClick={this.handleAccountClick} className='reply-indicator__display-name' style={{ display: 'block', maxWidth: '100%', paddingRight: '25px', textDecoration: 'none', overflow: 'hidden', lineHeight: '24px' }}>
  37. <div style={{ float: 'left', marginRight: '5px' }}><Avatar size={24} src={status.getIn(['account', 'avatar'])} staticSrc={status.getIn(['account', 'avatar_static'])} /></div>
  38. <DisplayName account={status.get('account')} />
  39. </a>
  40. </div>
  41. <div className='reply-indicator__content' dangerouslySetInnerHTML={content} />
  42. </div>
  43. );
  44. }
  45. }
  46. ReplyIndicator.contextTypes = {
  47. router: PropTypes.object
  48. };
  49. ReplyIndicator.propTypes = {
  50. status: ImmutablePropTypes.map,
  51. onCancel: PropTypes.func.isRequired,
  52. intl: PropTypes.object.isRequired
  53. };
  54. export default injectIntl(ReplyIndicator);