mirror of https://github.com/mastodon/mastodon
Deleting statuses from UI
parent
a41c3487bd
commit
ef2b50c9ac
@ -0,0 +1,67 @@
|
|||||||
|
import ImmutablePropTypes from 'react-immutable-proptypes';
|
||||||
|
import PureRenderMixin from 'react-addons-pure-render-mixin';
|
||||||
|
import IconButton from './icon_button';
|
||||||
|
import Dropdown, { DropdownTrigger, DropdownContent } from 'react-simple-dropdown';
|
||||||
|
|
||||||
|
const StatusActionBar = React.createClass({
|
||||||
|
propTypes: {
|
||||||
|
status: ImmutablePropTypes.map.isRequired,
|
||||||
|
onReply: React.PropTypes.func,
|
||||||
|
onFavourite: React.PropTypes.func,
|
||||||
|
onReblog: React.PropTypes.func,
|
||||||
|
onDelete: React.PropTypes.func
|
||||||
|
},
|
||||||
|
|
||||||
|
mixins: [PureRenderMixin],
|
||||||
|
|
||||||
|
handleReplyClick () {
|
||||||
|
this.props.onReply(this.props.status);
|
||||||
|
},
|
||||||
|
|
||||||
|
handleFavouriteClick () {
|
||||||
|
this.props.onFavourite(this.props.status);
|
||||||
|
},
|
||||||
|
|
||||||
|
handleReblogClick () {
|
||||||
|
this.props.onReblog(this.props.status);
|
||||||
|
},
|
||||||
|
|
||||||
|
handleDeleteClick(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
this.props.onDelete(this.props.status);
|
||||||
|
},
|
||||||
|
|
||||||
|
render () {
|
||||||
|
const { status, me } = this.props;
|
||||||
|
let menu = '';
|
||||||
|
|
||||||
|
if (status.getIn(['account', 'id']) === me) {
|
||||||
|
menu = (
|
||||||
|
<ul>
|
||||||
|
<li><a href='#' onClick={this.handleDeleteClick}>Delete</a></li>
|
||||||
|
</ul>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div style={{ marginTop: '10px', overflow: 'hidden' }}>
|
||||||
|
<div style={{ float: 'left', marginRight: '18px'}}><IconButton title='Reply' icon='reply' onClick={this.handleReplyClick} /></div>
|
||||||
|
<div style={{ float: 'left', marginRight: '18px'}}><IconButton active={status.get('reblogged')} title='Reblog' icon='retweet' onClick={this.handleReblogClick} /></div>
|
||||||
|
<div style={{ float: 'left', marginRight: '18px'}}><IconButton active={status.get('favourited')} title='Favourite' icon='star' onClick={this.handleFavouriteClick} /></div>
|
||||||
|
|
||||||
|
<div onClick={e => e.stopPropagation()} style={{ width: '18px', height: '18px', float: 'left' }}>
|
||||||
|
<Dropdown>
|
||||||
|
<DropdownTrigger className='icon-button' style={{ fontSize: '18px', lineHeight: '18px', width: '18px', height: '18px' }}>
|
||||||
|
<i className='fa fa-fw fa-ellipsis-h' />
|
||||||
|
</DropdownTrigger>
|
||||||
|
|
||||||
|
<DropdownContent>{menu}</DropdownContent>
|
||||||
|
</Dropdown>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
export default StatusActionBar;
|
@ -1,12 +1,19 @@
|
|||||||
!!! 5
|
!!! 5
|
||||||
%html
|
%html
|
||||||
%head
|
%head
|
||||||
%meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/
|
%meta{:content => 'text/html; charset=UTF-8', 'http-equiv' => 'Content-Type'}/
|
||||||
|
%meta{:charset => 'utf-8'}/
|
||||||
|
%meta{:name => 'viewport', :content => 'width=device-width, initial-scale=1'}/
|
||||||
|
%meta{'http-equiv' => 'X-UA-Compatible', :content => 'IE=edge'}/
|
||||||
|
|
||||||
%title
|
%title
|
||||||
= "#{yield(:page_title)} - " if content_for?(:page_title)
|
= "#{yield(:page_title)} - " if content_for?(:page_title)
|
||||||
Mastodon
|
Mastodon
|
||||||
|
|
||||||
= stylesheet_link_tag 'application', media: 'all'
|
= stylesheet_link_tag 'application', media: 'all'
|
||||||
= csrf_meta_tags
|
= csrf_meta_tags
|
||||||
|
|
||||||
= yield :header_tags
|
= yield :header_tags
|
||||||
|
|
||||||
%body{ class: @body_classes }
|
%body{ class: @body_classes }
|
||||||
= content_for?(:content) ? yield(:content) : yield
|
= content_for?(:content) ? yield(:content) : yield
|
||||||
|
Loading…
Reference in New Issue