PLT-7062 Moved emoji picker in RHS to attach to the body of the page (#6923)
Этот коммит содержится в:
коммит произвёл
Saturnino Abril
родитель
df3290c4cf
Коммит
26370f6eab
@@ -15,7 +15,15 @@ export default class EmojiPickerOverlay extends React.PureComponent {
|
|||||||
onEmojiClick: PropTypes.func.isRequired,
|
onEmojiClick: PropTypes.func.isRequired,
|
||||||
onHide: PropTypes.func.isRequired,
|
onHide: PropTypes.func.isRequired,
|
||||||
rightOffset: PropTypes.number,
|
rightOffset: PropTypes.number,
|
||||||
topOffset: PropTypes.number
|
topOffset: PropTypes.number,
|
||||||
|
spaceRequiredAbove: PropTypes.number,
|
||||||
|
spaceRequiredBelow: PropTypes.number
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reasonable defaults calculated from from the center channel
|
||||||
|
static defaultProps = {
|
||||||
|
spaceRequiredAbove: 422,
|
||||||
|
spaceRequiredBelow: 436
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
@@ -28,15 +36,12 @@ export default class EmojiPickerOverlay extends React.PureComponent {
|
|||||||
|
|
||||||
componentWillUpdate(nextProps) {
|
componentWillUpdate(nextProps) {
|
||||||
if (nextProps.show && !this.props.show) {
|
if (nextProps.show && !this.props.show) {
|
||||||
const spaceRequiredAbove = 422;
|
|
||||||
const spaceRequiredBelow = 436;
|
|
||||||
|
|
||||||
const targetBounds = nextProps.target().getBoundingClientRect();
|
const targetBounds = nextProps.target().getBoundingClientRect();
|
||||||
|
|
||||||
let placement;
|
let placement;
|
||||||
if (targetBounds.top > spaceRequiredAbove) {
|
if (targetBounds.top > nextProps.spaceRequiredAbove) {
|
||||||
placement = 'top';
|
placement = 'top';
|
||||||
} else if (window.innerHeight - targetBounds.bottom > spaceRequiredBelow) {
|
} else if (window.innerHeight - targetBounds.bottom > nextProps.spaceRequiredBelow) {
|
||||||
placement = 'bottom';
|
placement = 'bottom';
|
||||||
} else {
|
} else {
|
||||||
placement = 'left';
|
placement = 'left';
|
||||||
|
|||||||
@@ -26,6 +26,19 @@ import {Link} from 'react-router/es6';
|
|||||||
import {FormattedMessage} from 'react-intl';
|
import {FormattedMessage} from 'react-intl';
|
||||||
|
|
||||||
export default class RhsComment extends React.Component {
|
export default class RhsComment extends React.Component {
|
||||||
|
static propTypes = {
|
||||||
|
post: PropTypes.object,
|
||||||
|
lastPostCount: PropTypes.number,
|
||||||
|
user: PropTypes.object.isRequired,
|
||||||
|
currentUser: PropTypes.object.isRequired,
|
||||||
|
compactDisplay: PropTypes.bool,
|
||||||
|
useMilitaryTime: PropTypes.bool.isRequired,
|
||||||
|
isFlagged: PropTypes.bool,
|
||||||
|
status: PropTypes.string,
|
||||||
|
isBusy: PropTypes.bool,
|
||||||
|
removePost: PropTypes.func.isRequired
|
||||||
|
};
|
||||||
|
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
|
|
||||||
@@ -332,9 +345,10 @@ export default class RhsComment extends React.Component {
|
|||||||
show={this.state.showEmojiPicker}
|
show={this.state.showEmojiPicker}
|
||||||
onHide={this.toggleEmojiPicker}
|
onHide={this.toggleEmojiPicker}
|
||||||
target={() => this.refs.dotMenu}
|
target={() => this.refs.dotMenu}
|
||||||
container={this.props.getPostList}
|
|
||||||
onEmojiClick={this.reactEmojiClick}
|
onEmojiClick={this.reactEmojiClick}
|
||||||
rightOffset={15}
|
rightOffset={15}
|
||||||
|
spaceRequiredAbove={342}
|
||||||
|
spaceRequiredBelow={342}
|
||||||
/>
|
/>
|
||||||
<a
|
<a
|
||||||
href='#'
|
href='#'
|
||||||
@@ -435,17 +449,3 @@ export default class RhsComment extends React.Component {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RhsComment.propTypes = {
|
|
||||||
post: PropTypes.object,
|
|
||||||
lastPostCount: PropTypes.number,
|
|
||||||
user: PropTypes.object.isRequired,
|
|
||||||
currentUser: PropTypes.object.isRequired,
|
|
||||||
compactDisplay: PropTypes.bool,
|
|
||||||
useMilitaryTime: PropTypes.bool.isRequired,
|
|
||||||
isFlagged: PropTypes.bool,
|
|
||||||
status: PropTypes.string,
|
|
||||||
isBusy: PropTypes.bool,
|
|
||||||
getPostList: PropTypes.func.isRequired,
|
|
||||||
removePost: PropTypes.func.isRequired
|
|
||||||
};
|
|
||||||
|
|||||||
@@ -38,8 +38,7 @@ export default class RhsRootPost extends React.Component {
|
|||||||
isFlagged: PropTypes.bool,
|
isFlagged: PropTypes.bool,
|
||||||
status: PropTypes.string,
|
status: PropTypes.string,
|
||||||
previewCollapsed: PropTypes.string,
|
previewCollapsed: PropTypes.string,
|
||||||
isBusy: PropTypes.bool,
|
isBusy: PropTypes.bool
|
||||||
getPostList: PropTypes.func.isRequired
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static defaultProps = {
|
static defaultProps = {
|
||||||
@@ -226,9 +225,10 @@ export default class RhsRootPost extends React.Component {
|
|||||||
show={this.state.showEmojiPicker}
|
show={this.state.showEmojiPicker}
|
||||||
onHide={this.toggleEmojiPicker}
|
onHide={this.toggleEmojiPicker}
|
||||||
target={() => this.refs.dotMenu}
|
target={() => this.refs.dotMenu}
|
||||||
container={this.props.getPostList}
|
|
||||||
onEmojiClick={this.reactEmojiClick}
|
onEmojiClick={this.reactEmojiClick}
|
||||||
rightOffset={15}
|
rightOffset={15}
|
||||||
|
spaceRequiredAbove={342}
|
||||||
|
spaceRequiredBelow={342}
|
||||||
/>
|
/>
|
||||||
<a
|
<a
|
||||||
href='#'
|
href='#'
|
||||||
|
|||||||
@@ -319,10 +319,6 @@ export default class RhsThread extends React.Component {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getPostListContainer = () => {
|
|
||||||
return this.refs.postListContainer;
|
|
||||||
}
|
|
||||||
|
|
||||||
getSidebarBody = () => {
|
getSidebarBody = () => {
|
||||||
return this.refs.sidebarbody;
|
return this.refs.sidebarbody;
|
||||||
}
|
}
|
||||||
@@ -403,7 +399,6 @@ export default class RhsThread extends React.Component {
|
|||||||
isFlagged={isFlagged}
|
isFlagged={isFlagged}
|
||||||
status={status}
|
status={status}
|
||||||
isBusy={this.state.isBusy}
|
isBusy={this.state.isBusy}
|
||||||
getPostList={this.getPostListContainer}
|
|
||||||
removePost={this.props.actions.removePost}
|
removePost={this.props.actions.removePost}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -439,10 +434,7 @@ export default class RhsThread extends React.Component {
|
|||||||
renderView={renderView}
|
renderView={renderView}
|
||||||
onScroll={this.handleScroll}
|
onScroll={this.handleScroll}
|
||||||
>
|
>
|
||||||
<div
|
<div className='post-right__scroll'>
|
||||||
ref='postListContainer'
|
|
||||||
className='post-right__scroll'
|
|
||||||
>
|
|
||||||
<DateSeparator
|
<DateSeparator
|
||||||
date={rootPostDay}
|
date={rootPostDay}
|
||||||
/>
|
/>
|
||||||
@@ -458,7 +450,6 @@ export default class RhsThread extends React.Component {
|
|||||||
status={rootStatus}
|
status={rootStatus}
|
||||||
previewCollapsed={this.state.previewsCollapsed}
|
previewCollapsed={this.state.previewsCollapsed}
|
||||||
isBusy={this.state.isBusy}
|
isBusy={this.state.isBusy}
|
||||||
getPostList={this.getPostListContainer}
|
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
ref='rhspostlist'
|
ref='rhspostlist'
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user