Merge pull request #1571 from mattermost/PLT-1310

PLT-1310 moving permalink to dropdown
Этот коммит содержится в:
Corey Hulen
2015-12-04 15:20:37 -08:00
родитель 1bee1e06e4 d4db4545f5
Коммит 8ae357c535
2 изменённых файлов: 70 добавлений и 47 удалений

Просмотреть файл

@@ -9,14 +9,15 @@ import * as EventHelpers from '../dispatcher/event_helpers.jsx';
import Constants from '../utils/constants.jsx'; import Constants from '../utils/constants.jsx';
const OverlayTrigger = ReactBootstrap.OverlayTrigger; const Overlay = ReactBootstrap.Overlay;
const Popover = ReactBootstrap.Popover; const Popover = ReactBootstrap.Popover;
export default class PostInfo extends React.Component { export default class PostInfo extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);
this.state = { this.state = {
copiedLink: false copiedLink: false,
show: false
}; };
this.handlePermalinkCopy = this.handlePermalinkCopy.bind(this); this.handlePermalinkCopy = this.handlePermalinkCopy.bind(this);
@@ -41,6 +42,54 @@ export default class PostInfo extends React.Component {
dataComments = this.props.commentCount; dataComments = this.props.commentCount;
} }
if (this.props.allowReply === 'true') {
dropdownContents.push(
<li
key='replyLink'
role='presentation'
>
<a
className='link__reply theme'
href='#'
onClick={this.props.handleCommentClick}
>
{'Reply'}
</a>
</li>
);
}
dropdownContents.push(
<li
key='copyLink'
role='presentation'
>
<a
href='#'
onClick={(e) => this.setState({target: e.target, show: !this.state.show})}
>
{'Permalink'}
</a>
</li>
);
if (isOwner || isAdmin) {
dropdownContents.push(
<li
key='deletePost'
role='presentation'
>
<a
href='#'
role='menuitem'
onClick={() => EventHelpers.showDeletePostModal(post, dataComments)}
>
{'Delete'}
</a>
</li>
);
}
if (isOwner) { if (isOwner) {
dropdownContents.push( dropdownContents.push(
<li <li
@@ -65,40 +114,6 @@ export default class PostInfo extends React.Component {
); );
} }
if (isOwner || isAdmin) {
dropdownContents.push(
<li
key='deletePost'
role='presentation'
>
<a
href='#'
role='menuitem'
onClick={() => EventHelpers.showDeletePostModal(post, dataComments)}
>
{'Delete'}
</a>
</li>
);
}
if (this.props.allowReply === 'true') {
dropdownContents.push(
<li
key='replyLink'
role='presentation'
>
<a
className='link__reply theme'
href='#'
onClick={this.props.handleCommentClick}
>
{'Reply'}
</a>
</li>
);
}
if (dropdownContents.length === 0) { if (dropdownContents.length === 0) {
return ''; return '';
} }
@@ -121,6 +136,7 @@ export default class PostInfo extends React.Component {
</div> </div>
); );
} }
handlePermalinkCopy() { handlePermalinkCopy() {
const textBox = $(ReactDOM.findDOMNode(this.refs.permalinkbox)); const textBox = $(ReactDOM.findDOMNode(this.refs.permalinkbox));
textBox.select(); textBox.select();
@@ -128,7 +144,7 @@ export default class PostInfo extends React.Component {
try { try {
const successful = document.execCommand('copy'); const successful = document.execCommand('copy');
if (successful) { if (successful) {
this.setState({copiedLink: true}); this.setState({copiedLink: true, show: false});
} else { } else {
this.setState({copiedLink: false}); this.setState({copiedLink: false});
} }
@@ -197,6 +213,8 @@ export default class PostInfo extends React.Component {
</Popover> </Popover>
); );
const containerPadding = 20;
return ( return (
<ul className='post__header post__header--info'> <ul className='post__header post__header--info'>
<li className='col'> <li className='col'>
@@ -206,18 +224,23 @@ export default class PostInfo extends React.Component {
</li> </li>
<li className='col col__reply'> <li className='col col__reply'>
{comments} {comments}
<OverlayTrigger <div
trigger='click' className='dropdown'
placement='left' ref='dotMenu'
rootClose={true}
overlay={permalinkOverlay}
> >
<i className={'permalink-icon fa fa-link ' + showCommentClass}/>
</OverlayTrigger>
<div className='dropdown'>
{dropdown} {dropdown}
</div> </div>
<Overlay
show={this.state.show}
target={() => ReactDOM.findDOMNode(this.refs.dotMenu)}
onHide={() => this.setState({show: false})}
placement='left'
container={this}
containerPadding={containerPadding}
rootClose={true}
>
{permalinkOverlay}
</Overlay>
</li> </li>
</ul> </ul>
); );

Просмотреть файл

@@ -568,7 +568,6 @@ body.ios {
display: inline-block; display: inline-block;
visibility: hidden; visibility: hidden;
top: -1px; top: -1px;
float: right;
.dropdown-menu { .dropdown-menu {
right: 0; right: 0;
@@ -805,4 +804,5 @@ body.ios {
.permalink-popover { .permalink-popover {
min-width: 320px; min-width: 320px;
margin-left: 50px !important;
} }