Merge pull request #833 from mattermost/plt-417

PLT-417 Fix scrolling related to RHS.
Этот коммит содержится в:
Christopher Speller
2015-09-29 09:54:37 -04:00
родитель 5999b03eb9 c17310d011
Коммит 9703c6bc01
2 изменённых файлов: 30 добавлений и 9 удалений

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

@@ -128,6 +128,15 @@ export default class PostList extends React.Component {
this.userHasSeenNew = true; this.userHasSeenNew = true;
} }
this.isUserScroll = true; this.isUserScroll = true;
$('.top-visible-post').removeClass('top-visible-post');
$(React.findDOMNode(this.refs.postlistcontent)).children().each(function select() {
if ($(this).position().top + $(this).height() / 2 > 0) {
$(this).addClass('top-visible-post');
return false;
}
});
}); });
$('.post-list__content div .post').removeClass('post--last'); $('.post-list__content div .post').removeClass('post--last');
@@ -665,7 +674,10 @@ export default class PostList extends React.Component {
className={'post-list-holder-by-time ' + activeClass} className={'post-list-holder-by-time ' + activeClass}
> >
<div className='post-list__table'> <div className='post-list__table'>
<div className='post-list__content'> <div
ref='postlistcontent'
className='post-list__content'
>
{moreMessages} {moreMessages}
{postCtls} {postCtls}
</div> </div>

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

@@ -14,9 +14,10 @@ export default class SidebarRight extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);
this.plScrolledToBottom = true;
this.onSelectedChange = this.onSelectedChange.bind(this); this.onSelectedChange = this.onSelectedChange.bind(this);
this.onSearchChange = this.onSearchChange.bind(this); this.onSearchChange = this.onSearchChange.bind(this);
this.resize = this.resize.bind(this);
this.state = getStateFromStores(); this.state = getStateFromStores();
} }
@@ -28,6 +29,14 @@ export default class SidebarRight extends React.Component {
PostStore.removeSearchChangeListener(this.onSearchChange); PostStore.removeSearchChangeListener(this.onSearchChange);
PostStore.removeSelectedPostChangeListener(this.onSelectedChange); PostStore.removeSelectedPostChangeListener(this.onSelectedChange);
} }
componentDidUpdate() {
if (!this.plScrolledToBottom) {
$('.top-visible-post')[0].scrollIntoView();
} else {
var postHolder = $('.post-list-holder-by-time');
postHolder.scrollTop(postHolder[0].scrollHeight);
}
}
onSelectedChange(fromSearch) { onSelectedChange(fromSearch) {
var newState = getStateFromStores(fromSearch); var newState = getStateFromStores(fromSearch);
newState.from_search = fromSearch; newState.from_search = fromSearch;
@@ -41,15 +50,15 @@ export default class SidebarRight extends React.Component {
this.setState(newState); this.setState(newState);
} }
} }
resize() {
var postHolder = $('.post-list-holder-by-time');
postHolder[0].scrollTop = postHolder[0].scrollHeight - 224;
}
render() { render() {
var postHolder = $('.post-list-holder-by-time');
const position = postHolder.scrollTop() + postHolder.height() + 14;
const bottom = postHolder[0].scrollHeight;
this.plScrolledToBottom = position >= bottom;
if (!(this.state.search_visible || this.state.post_right_visible)) { if (!(this.state.search_visible || this.state.post_right_visible)) {
$('.inner__wrap').removeClass('move--left').removeClass('move--right'); $('.inner__wrap').removeClass('move--left').removeClass('move--right');
$('.sidebar--right').removeClass('move--left'); $('.sidebar--right').removeClass('move--left');
this.resize();
return ( return (
<div></div> <div></div>
); );
@@ -59,8 +68,8 @@ export default class SidebarRight extends React.Component {
$('.sidebar--left').removeClass('move--right'); $('.sidebar--left').removeClass('move--right');
$('.sidebar--right').addClass('move--left'); $('.sidebar--right').addClass('move--left');
$('.sidebar--right').prepend('<div class="sidebar__overlay"></div>'); $('.sidebar--right').prepend('<div class="sidebar__overlay"></div>');
this.resize();
setTimeout(function overlayTimer() { setTimeout(() => {
$('.sidebar__overlay').fadeOut('200', function fadeOverlay() { $('.sidebar__overlay').fadeOut('200', function fadeOverlay() {
$(this).remove(); $(this).remove();
}); });