From 1150e22190178f5a64246414232bdefb96cef47b Mon Sep 17 00:00:00 2001
From: Matthew Hodgson <matthew@matrix.org>
Date: Fri, 6 Nov 2015 21:25:20 +0100
Subject: [PATCH] collapsible sublists

---
 .../vector/css/organisms/RoomSubList.css      |  4 ++++
 .../vector/views/organisms/RoomSubList.js     | 23 +++++++++++++++----
 2 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/src/skins/vector/css/organisms/RoomSubList.css b/src/skins/vector/css/organisms/RoomSubList.css
index 43f453fb..0580f574 100644
--- a/src/skins/vector/css/organisms/RoomSubList.css
+++ b/src/skins/vector/css/organisms/RoomSubList.css
@@ -30,3 +30,7 @@ limitations under the License.
     margin-top: 8px;
     margin-bottom: 4px;
 }
+
+.mx_RoomSubList_chevron {
+    padding-left: 5px;
+}
\ No newline at end of file
diff --git a/src/skins/vector/views/organisms/RoomSubList.js b/src/skins/vector/views/organisms/RoomSubList.js
index 27cfb2ae..47e412f3 100644
--- a/src/skins/vector/views/organisms/RoomSubList.js
+++ b/src/skins/vector/views/organisms/RoomSubList.js
@@ -58,6 +58,7 @@ var RoomSubList = React.createClass({
 
     getInitialState: function() {
         return {
+            hidden: false,
             sortedList: [],
         };
     },
@@ -71,6 +72,10 @@ var RoomSubList = React.createClass({
         this.sortList(newProps.list, newProps.order);
     },
 
+    onClick: function(ev) {
+        this.setState({ hidden : !this.state.hidden });
+    },
+
     tsOfNewestEvent: function(room) {
         if (room.timeline.length) {
             return room.timeline[room.timeline.length - 1].getTs();
@@ -229,14 +234,22 @@ var RoomSubList = React.createClass({
             target = <RoomDropTarget label={ 'Drop here to ' + this.props.verb }/>;
         }
 
+        var subList;
+        if (!this.state.hidden) {
+            subList = <div className="mx_RoomSubList">
+                            { target }
+                            { this.makeRoomTiles() }
+                        </div>;
+        }
+
+
         if (this.state.sortedList.length > 0 || this.props.editable) {
             return connectDropTarget(
                 <div>
-                    <h2 className="mx_RoomSubList_label">{ this.props.collapsed ? '' : this.props.label }</h2>
-                    <div className="mx_RoomSubList">
-                        { target }
-                        { this.makeRoomTiles() }
-                    </div>
+                    <h2 onClick={ this.onClick } className="mx_RoomSubList_label">{ this.props.collapsed ? '' : this.props.label }
+                        <img className="mx_RoomSubList_chevron" src={ this.state.hidden ? "/img/list-open.png" : "/img/list-close.png" } width="10" height="10"/>
+                    </h2>
+                    { subList }
                 </div>
             );
         }