diff --git a/examples/trivial/img b/examples/trivial/img
new file mode 120000
index 0000000000..0d3ef0e2f2
--- /dev/null
+++ b/examples/trivial/img
@@ -0,0 +1 @@
+../../skins/base/img
\ No newline at end of file
diff --git a/examples/trivial/index.html b/examples/trivial/index.html
index 4ec5b9093a..b5f4175f26 100644
--- a/examples/trivial/index.html
+++ b/examples/trivial/index.html
@@ -3,6 +3,7 @@
+
+
+
diff --git a/skins/base/views/molecules/RoomCreate.js b/skins/base/views/molecules/RoomCreate.js
new file mode 100644
index 0000000000..4e431e7d16
--- /dev/null
+++ b/skins/base/views/molecules/RoomCreate.js
@@ -0,0 +1,43 @@
+/*
+Copyright 2015 OpenMarket Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+'use strict';
+
+var React = require('react');
+var classNames = require('classnames');
+
+//var RoomCreateController = require("../../../../src/controllers/molecules/RoomCreateController");
+
+var MatrixClientPeg = require("../../../../src/MatrixClientPeg");
+
+module.exports = React.createClass({
+ displayName: 'RoomCreate',
+ // mixins: [RoomCreateController],
+ render: function() {
+ return (
+
+
+
+
+
+
+
Create new room
+
+
+
+ );
+ }
+});
diff --git a/skins/base/views/molecules/RoomDropTarget.js b/skins/base/views/molecules/RoomDropTarget.js
new file mode 100644
index 0000000000..0a076949c3
--- /dev/null
+++ b/skins/base/views/molecules/RoomDropTarget.js
@@ -0,0 +1,36 @@
+/*
+Copyright 2015 OpenMarket Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+'use strict';
+
+var React = require('react');
+var classNames = require('classnames');
+
+//var RoomDropTargetController = require("../../../../src/controllers/molecules/RoomDropTargetController");
+
+var MatrixClientPeg = require("../../../../src/MatrixClientPeg");
+
+module.exports = React.createClass({
+ displayName: 'RoomDropTarget',
+ // mixins: [RoomDropTargetController],
+ render: function() {
+ return (
+
+ {this.props.text}
+
+ );
+ }
+});
diff --git a/skins/base/views/molecules/RoomHeader.js b/skins/base/views/molecules/RoomHeader.js
index b5296f4e82..a5cfdc7e55 100644
--- a/skins/base/views/molecules/RoomHeader.js
+++ b/skins/base/views/molecules/RoomHeader.js
@@ -27,7 +27,28 @@ module.exports = React.createClass({
render: function() {
return (
- {this.props.room.name}
+
+
+
+
+
+
{this.props.room.name}
+
+
+
+
+
+
);
},
diff --git a/skins/base/views/molecules/RoomTile.js b/skins/base/views/molecules/RoomTile.js
index 0e80fc2015..f4b596cbc0 100644
--- a/skins/base/views/molecules/RoomTile.js
+++ b/skins/base/views/molecules/RoomTile.js
@@ -30,13 +30,14 @@ module.exports = React.createClass({
var myUserId = MatrixClientPeg.get().credentials.userId;
var classes = classNames({
'mx_RoomTile': true,
- 'selected': this.props.selected,
- 'unread': this.props.unread,
- 'highlight': this.props.highlight,
- 'invited': this.props.room.currentState.members[myUserId].membership == 'invite'
+ 'mx_RoomTile_selected': this.props.selected,
+ 'mx_RoomTile_unread': this.props.unread,
+ 'mx_RoomTile_highlight': this.props.highlight,
+ 'mx_RoomTile_invited': this.props.room.currentState.members[myUserId].membership == 'invite'
});
return (
);
diff --git a/skins/base/views/organisms/LeftPanel.js b/skins/base/views/organisms/LeftPanel.js
new file mode 100644
index 0000000000..08020bcad7
--- /dev/null
+++ b/skins/base/views/organisms/LeftPanel.js
@@ -0,0 +1,40 @@
+/*
+Copyright 2015 OpenMarket Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+'use strict';
+
+var React = require('react');
+var ComponentBroker = require('../../../../src/ComponentBroker');
+
+var RoomList = ComponentBroker.get('organisms/RoomList');
+var DirectoryMenu = ComponentBroker.get('molecules/DirectoryMenu');
+var RoomCreate = ComponentBroker.get('molecules/RoomCreate');
+
+module.exports = React.createClass({
+ displayName: 'LeftPanel',
+
+ render: function() {
+ return (
+
+
+
+
+
+
+ );
+ }
+});
+
diff --git a/skins/base/views/organisms/MemberList.js b/skins/base/views/organisms/MemberList.js
index 5d1b2fd0f9..b258978fed 100644
--- a/skins/base/views/organisms/MemberList.js
+++ b/skins/base/views/organisms/MemberList.js
@@ -34,11 +34,7 @@ module.exports = React.createClass({
return Object.keys(that.state.memberDict).map(function(userId) {
var m = that.state.memberDict[userId];
return (
-
-
-
+
);
});
},
@@ -46,9 +42,17 @@ module.exports = React.createClass({
render: function() {
return (
);
}
diff --git a/skins/base/views/organisms/RightPanel.js b/skins/base/views/organisms/RightPanel.js
new file mode 100644
index 0000000000..a5d8649f98
--- /dev/null
+++ b/skins/base/views/organisms/RightPanel.js
@@ -0,0 +1,39 @@
+/*
+Copyright 2015 OpenMarket Ltd
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+'use strict';
+
+var React = require('react');
+var ComponentBroker = require('../../../../src/ComponentBroker');
+
+var MemberList = ComponentBroker.get('organisms/MemberList');
+
+module.exports = React.createClass({
+ displayName: 'RightPanel',
+
+ render: function() {
+ return (
+
+
+
+
+
+
+
+ );
+ }
+});
+
diff --git a/skins/base/views/organisms/RoomList.js b/skins/base/views/organisms/RoomList.js
index f8be66f76e..7b3ab07508 100644
--- a/skins/base/views/organisms/RoomList.js
+++ b/skins/base/views/organisms/RoomList.js
@@ -17,10 +17,12 @@ limitations under the License.
'use strict';
var React = require('react');
+var ComponentBroker = require('../../../../src/ComponentBroker');
+
+var RoomDropTarget = ComponentBroker.get('molecules/RoomDropTarget');
var RoomListController = require("../../../../src/controllers/organisms/RoomList");
-
module.exports = React.createClass({
displayName: 'RoomList',
mixins: [RoomListController],
@@ -28,7 +30,16 @@ module.exports = React.createClass({
render: function() {
return (
- {this.makeRoomTiles()}
+
Favourites
+
+
+
Recents
+
+ {this.makeRoomTiles()}
+
+
+
Archive
+
);
}
diff --git a/skins/base/views/organisms/RoomView.js b/skins/base/views/organisms/RoomView.js
index 81a59c2e82..67e7afe3c5 100644
--- a/skins/base/views/organisms/RoomView.js
+++ b/skins/base/views/organisms/RoomView.js
@@ -25,7 +25,6 @@ var classNames = require("classnames");
var MessageTile = ComponentBroker.get('molecules/MessageTile');
var RoomHeader = ComponentBroker.get('molecules/RoomHeader');
-var MemberList = ComponentBroker.get('organisms/MemberList');
var MessageComposer = ComponentBroker.get('molecules/MessageComposer');
var RoomViewController = require("../../../../src/controllers/organisms/RoomView");
@@ -68,19 +67,16 @@ module.exports = React.createClass({
return (
-
-
-
-
-
-
- {this.getEventTiles()}
+
+
+
+
+ {this.getEventTiles()}
-
-
+
);
}
diff --git a/skins/base/views/pages/MatrixChat.js b/skins/base/views/pages/MatrixChat.js
index f9e199e6e8..11e2be9ca2 100644
--- a/skins/base/views/pages/MatrixChat.js
+++ b/skins/base/views/pages/MatrixChat.js
@@ -19,9 +19,9 @@ limitations under the License.
var React = require('react');
var ComponentBroker = require('../../../../src/ComponentBroker');
-var RoomList = ComponentBroker.get('organisms/RoomList');
+var LeftPanel = ComponentBroker.get('organisms/LeftPanel');
var RoomView = ComponentBroker.get('organisms/RoomView');
-var MatrixToolbar = ComponentBroker.get('molecules/MatrixToolbar');
+var RightPanel = ComponentBroker.get('organisms/RightPanel');
var Login = ComponentBroker.get('templates/Login');
var MatrixChatController = require("../../../../src/controllers/pages/MatrixChat");
@@ -38,13 +38,9 @@ module.exports = React.createClass({
if (this.state.logged_in && this.state.ready) {
return (
);
} else if (this.state.logged_in) {
diff --git a/src/ComponentBroker.js b/src/ComponentBroker.js
index 32b07a0335..e00ef2424a 100644
--- a/src/ComponentBroker.js
+++ b/src/ComponentBroker.js
@@ -82,4 +82,11 @@ require('../skins/base/views/organisms/RoomList');
require('../skins/base/views/organisms/RoomView');
require('../skins/base/views/templates/Login');
require('../skins/base/views/organisms/Notifier');
+// new for vector
+require('../skins/base/views/organisms/LeftPanel');
+require('../skins/base/views/organisms/RightPanel');
+require('../skins/base/views/molecules/RoomCreate');
+require('../skins/base/views/molecules/RoomDropTarget');
+require('../skins/base/views/molecules/DirectoryMenu');
+
}