Merge pull request #729 from vector-im/matthew/truncateroomlist
truncate room list
This commit is contained in:
commit
5e21059144
2 changed files with 43 additions and 6 deletions
|
@ -72,19 +72,22 @@ var RoomSubList = React.createClass({
|
||||||
collapsed: React.PropTypes.bool.isRequired,
|
collapsed: React.PropTypes.bool.isRequired,
|
||||||
onHeaderClick: React.PropTypes.func,
|
onHeaderClick: React.PropTypes.func,
|
||||||
alwaysShowHeader: React.PropTypes.bool,
|
alwaysShowHeader: React.PropTypes.bool,
|
||||||
incomingCall: React.PropTypes.object
|
incomingCall: React.PropTypes.object,
|
||||||
|
onShowMoreRooms: React.PropTypes.func
|
||||||
},
|
},
|
||||||
|
|
||||||
getInitialState: function() {
|
getInitialState: function() {
|
||||||
return {
|
return {
|
||||||
hidden: this.props.startAsHidden || false,
|
hidden: this.props.startAsHidden || false,
|
||||||
|
truncateAt: 20,
|
||||||
sortedList: [],
|
sortedList: [],
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
getDefaultProps: function() {
|
getDefaultProps: function() {
|
||||||
return {
|
return {
|
||||||
onHeaderClick: function() {} // NOP
|
onHeaderClick: function() {}, // NOP
|
||||||
|
onShowMoreRooms: function() {} // NOP
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -101,6 +104,13 @@ var RoomSubList = React.createClass({
|
||||||
onClick: function(ev) {
|
onClick: function(ev) {
|
||||||
var isHidden = !this.state.hidden;
|
var isHidden = !this.state.hidden;
|
||||||
this.setState({ hidden : isHidden });
|
this.setState({ hidden : isHidden });
|
||||||
|
|
||||||
|
if (isHidden) {
|
||||||
|
// as good a way as any to reset the truncate state
|
||||||
|
this.setState({ truncateAt : 20 });
|
||||||
|
this.props.onShowMoreRooms();
|
||||||
|
}
|
||||||
|
|
||||||
this.props.onHeaderClick(isHidden);
|
this.props.onHeaderClick(isHidden);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -272,9 +282,30 @@ var RoomSubList = React.createClass({
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_createOverflowTile: function(overflowCount, totalCount) {
|
||||||
|
var BaseAvatar = sdk.getComponent('avatars.BaseAvatar');
|
||||||
|
// XXX: this is duplicated from RoomTile - factor it out
|
||||||
|
return (
|
||||||
|
<div className="mx_RoomTile mx_RoomTile_ellipsis" onClick={this._showFullMemberList}>
|
||||||
|
<div className="mx_RoomTile_avatar">
|
||||||
|
<BaseAvatar url="img/ellipsis.svg" name="..." width={24} height={24} />
|
||||||
|
</div>
|
||||||
|
<div className="mx_RoomTile_name">and { overflowCount } others...</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
|
_showFullMemberList: function() {
|
||||||
|
this.setState({
|
||||||
|
truncateAt: -1
|
||||||
|
});
|
||||||
|
this.props.onShowMoreRooms();
|
||||||
|
},
|
||||||
|
|
||||||
render: function() {
|
render: function() {
|
||||||
var connectDropTarget = this.props.connectDropTarget;
|
var connectDropTarget = this.props.connectDropTarget;
|
||||||
var RoomDropTarget = sdk.getComponent('rooms.RoomDropTarget');
|
var RoomDropTarget = sdk.getComponent('rooms.RoomDropTarget');
|
||||||
|
var TruncatedList = sdk.getComponent('elements.TruncatedList');
|
||||||
|
|
||||||
var label = this.props.collapsed ? null : this.props.label;
|
var label = this.props.collapsed ? null : this.props.label;
|
||||||
|
|
||||||
|
@ -290,14 +321,15 @@ var RoomSubList = React.createClass({
|
||||||
var classes = "mx_RoomSubList";
|
var classes = "mx_RoomSubList";
|
||||||
|
|
||||||
if (!this.state.hidden) {
|
if (!this.state.hidden) {
|
||||||
subList = <div className={ classes }>
|
subList = <TruncatedList className={ classes } truncateAt={this.state.truncateAt}
|
||||||
|
createOverflowElement={this._createOverflowTile} >
|
||||||
{ target }
|
{ target }
|
||||||
{ this.makeRoomTiles() }
|
{ this.makeRoomTiles() }
|
||||||
</div>;
|
</TruncatedList>;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
subList = <div className={ classes }>
|
subList = <TruncatedList className={ classes }>
|
||||||
</div>;
|
</TruncatedList>;
|
||||||
}
|
}
|
||||||
|
|
||||||
return connectDropTarget(
|
return connectDropTarget(
|
||||||
|
|
|
@ -43,6 +43,11 @@ limitations under the License.
|
||||||
color: rgba(69, 69, 69, 0.8);
|
color: rgba(69, 69, 69, 0.8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.mx_RoomTile_ellipsis .mx_RoomTile_name {
|
||||||
|
font-style: italic;
|
||||||
|
color: #454545;
|
||||||
|
}
|
||||||
|
|
||||||
.mx_RoomTile_invite {
|
.mx_RoomTile_invite {
|
||||||
/* color: rgba(69, 69, 69, 0.5);
|
/* color: rgba(69, 69, 69, 0.5);
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Reference in a new issue