Added indicators for when a channel with unread posts is offscreen

Этот коммит содержится в:
hmhealey
2015-08-06 18:57:57 -04:00
родитель 38e2b69dba
Коммит 34f7451c4a
2 изменённых файлов: 34 добавлений и 4 удалений

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

@@ -134,14 +134,14 @@ module.exports = React.createClass({
this.updateTitle(); this.updateTitle();
this.updateUnreadIndicators(); this.updateUnreadIndicators();
$('.nav-pills__container').on('scroll', null, this.onScroll); $('.nav-pills__container').on('scroll', this.onScroll);
}, },
componentDidUpdate: function() { componentDidUpdate: function() {
this.updateTitle(); this.updateTitle();
this.updateUnreadIndicators(); this.updateUnreadIndicators();
}, },
componentWillUnmount: function() { componentWillUnmount: function() {
$('.nav-pills__container').off('scroll', null, this.onScroll); $('.nav-pills__container').off('scroll', this.onScroll);
ChannelStore.removeChangeListener(this.onChange); ChannelStore.removeChangeListener(this.onChange);
UserStore.removeChangeListener(this.onChange); UserStore.removeChangeListener(this.onChange);
@@ -251,7 +251,9 @@ module.exports = React.createClass({
var firstUnreadElement = $(this.refs[this.firstUnreadChannel].getDOMNode()); var firstUnreadElement = $(this.refs[this.firstUnreadChannel].getDOMNode());
if (firstUnreadElement.position().top + firstUnreadElement.height() < 0) { if (firstUnreadElement.position().top + firstUnreadElement.height() < 0) {
console.log("off top"); $(this.refs.topUnreadIndicator.getDOMNode()).css('display', 'initial');
} else {
$(this.refs.topUnreadIndicator.getDOMNode()).css('display', 'none');
} }
} }
@@ -259,7 +261,10 @@ module.exports = React.createClass({
var lastUnreadElement = $(this.refs[this.lastUnreadChannel].getDOMNode()); var lastUnreadElement = $(this.refs[this.lastUnreadChannel].getDOMNode());
if (lastUnreadElement.position().top > container.height()) { if (lastUnreadElement.position().top > container.height()) {
console.log("off bottom"); $(this.refs.bottomUnreadIndicator.getDOMNode()).css('bottom', '0');
$(this.refs.bottomUnreadIndicator.getDOMNode()).css('display', 'initial');
} else {
$(this.refs.bottomUnreadIndicator.getDOMNode()).css('display', 'none');
} }
} }
}, },
@@ -387,6 +392,9 @@ module.exports = React.createClass({
<SidebarHeader teamDisplayName={this.props.teamDisplayName} teamType={this.props.teamType} /> <SidebarHeader teamDisplayName={this.props.teamDisplayName} teamType={this.props.teamType} />
<SearchBox /> <SearchBox />
<div ref='topUnreadIndicator' className='nav-pills__unread-indicator nav-pills__unread-indicator-top' style={{display: 'none'}}>Unread post(s) above</div>
<div ref='bottomUnreadIndicator' className='nav-pills__unread-indicator nav-pills__unread-indicator-bottom' style={{display: 'none'}}>Unread post(s) below</div>
<div ref='container' className='nav-pills__container'> <div ref='container' className='nav-pills__container'>
<ul className='nav nav-pills nav-stacked'> <ul className='nav nav-pills nav-stacked'>
<li><h4>Channels<a className='add-channel-btn' href='#' data-toggle='modal' data-target='#new_channel' data-channeltype='O'>+</a></h4></li> <li><h4>Channels<a className='add-channel-btn' href='#' data-toggle='modal' data-target='#new_channel' data-channeltype='O'>+</a></h4></li>

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

@@ -35,7 +35,29 @@
height: 100%; height: 100%;
position: relative; position: relative;
overflow: auto; overflow: auto;
} }
.nav-pills__unread-indicator {
position: absolute;
left: 0;
right: 0;
width: 70%;
background-color: darken($primary-color, 5%);
color: white;
margin: 0 auto;
padding: 2px;
text-align: center;
z-index: 1;
}
.nav-pills__unread-indicator-top {
top: 56px;
}
.nav-pills__unread-indicator-bottom {
bottom: 0px;
}
.nav { .nav {
&.nav-stacked { &.nav-stacked {
> li+li { > li+li {