vector wireframes
|  | @ -0,0 +1 @@ | |||
| ../../skins/base/img | ||||
|  | @ -3,6 +3,7 @@ | |||
|   <head> | ||||
|     <meta charset="utf-8"> | ||||
|     <title>Matrix React SDK Example</title> | ||||
| 	<link href='http://fonts.googleapis.com/css?family=Muli:300,400' rel='stylesheet' type='text/css'> | ||||
|   </head> | ||||
|   <body style="height: 100%;"> | ||||
|     <section id="matrixchat" style="height: 100%;"></section> | ||||
|  |  | |||
|  | @ -15,6 +15,4 @@ limitations under the License. | |||
| */ | ||||
| 
 | ||||
| .mx_MessageTimestamp { | ||||
|     display: table-cell; | ||||
|     white-space: pre; | ||||
| } | ||||
|  |  | |||
|  | @ -15,9 +15,21 @@ limitations under the License. | |||
| */ | ||||
| 
 | ||||
| body { | ||||
| 	font-family: Helvetica, Arial, Sans-Serif; | ||||
| 	font-family: 'Muli', Helvetica, Arial, Sans-Serif; | ||||
|     font-weight: 300; | ||||
|     font-size: 15px; | ||||
| 	color: #747474; | ||||
| 	border: 0px; | ||||
| 	margin: 0px; | ||||
| } | ||||
| 
 | ||||
| div.error { | ||||
|     color: red; | ||||
| } | ||||
| 
 | ||||
| h2 { | ||||
|     font-weight: 400; | ||||
|     font-size: 20px; | ||||
|     margin-top: 16px; | ||||
|     margin-bottom: 16px; | ||||
| } | ||||
|  |  | |||
|  | @ -0,0 +1,37 @@ | |||
| /* | ||||
| 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. | ||||
| */ | ||||
| 
 | ||||
| .mx_MemberTile { | ||||
|     cursor: pointer; | ||||
|     display: table-row; | ||||
| } | ||||
| 
 | ||||
| .mx_MemberTile_avatar { | ||||
| 	display: table-cell; | ||||
| 	padding-right: 12px; | ||||
| 	padding-top: 3px; | ||||
| 	padding-bottom: 3px; | ||||
| 	vertical-align: middle; | ||||
| 	width: 32px; | ||||
| 	height: 32px; | ||||
| } | ||||
| 
 | ||||
| .mx_MemberTile_name { | ||||
| 	display: table-cell; | ||||
| 	vertical-align: middle; | ||||
|     overflow: hidden; | ||||
|     text-overflow: ellipsis; | ||||
| } | ||||
|  | @ -14,7 +14,50 @@ See the License for the specific language governing permissions and | |||
| limitations under the License. | ||||
| */ | ||||
| 
 | ||||
| .mx_MessageComposer textarea { | ||||
|     width: 100%; | ||||
| .mx_MessageComposer_wrapper { | ||||
|     max-width: 720px; | ||||
|     height: 50px; | ||||
|     vertical-align: middle; | ||||
|     margin: auto; | ||||
|     border-top: 1px solid #d8d8d8; | ||||
|     border-left: 1px solid #d8d8d8; | ||||
|     border-right: 1px solid #d8d8d8; | ||||
| } | ||||
| 
 | ||||
| .mx_MessageComposer_row { | ||||
| 	display: table-row; | ||||
| 	width: 100%; | ||||
| 	height: 50px; | ||||
| } | ||||
| 
 | ||||
| .mx_MessageComposer .mx_MessageComposer_avatar { | ||||
| 	display: table-cell; | ||||
| 	padding-left: 12px; | ||||
| 	padding-right: 12px; | ||||
| 	padding-top: 3px; | ||||
| 	padding-bottom: 3px; | ||||
| 	vertical-align: middle; | ||||
| 	width: 32px; | ||||
| 	height: 32px; | ||||
| } | ||||
| 
 | ||||
| .mx_MessageComposer_input { | ||||
| 	display: table-cell; | ||||
|     width: 100%; | ||||
|     padding-right: 1em; | ||||
| 	vertical-align: middle; | ||||
| } | ||||
| 
 | ||||
| .mx_MessageComposer_input textarea { | ||||
|     font-size: 15px; | ||||
|     width: 100%; | ||||
|     height: 1em; | ||||
|     border: 0px; | ||||
|     resize: none; | ||||
| 	outline: none; | ||||
| 	padding-top: 0.7em; | ||||
| 	padding-bottom: 0.7em; | ||||
|     -webkit-box-shadow: none; | ||||
|     -moz-box-shadow: none; | ||||
|     box-shadow: none;     | ||||
| } | ||||
|  | @ -15,11 +15,31 @@ limitations under the License. | |||
| */ | ||||
| 
 | ||||
| .mx_MessageTile { | ||||
| 	display: table-row; | ||||
| 	width: 100%; | ||||
| 	clear: both; | ||||
| 	margin-top: 32px; | ||||
| } | ||||
| 
 | ||||
| .mx_MessageTile_avatar { | ||||
| 	padding-left: 12px; | ||||
| 	padding-right: 12px; | ||||
| 	margin-top: -7px; | ||||
| 	float: left; | ||||
| } | ||||
| 
 | ||||
| .mx_MessageTile .mx_SenderProfile { | ||||
| 	color: #acacac; | ||||
| 	font-size: 13px; | ||||
| 	display: block; | ||||
| } | ||||
| 
 | ||||
| .mx_MessageTile .mx_MessageTimestamp { | ||||
| 	color: #acacac; | ||||
| 	font-size: 13px; | ||||
| 	float: right; | ||||
| } | ||||
| 
 | ||||
| .mx_MessageTile_content { | ||||
| 	display: table-cell; | ||||
| } | ||||
| 
 | ||||
| .mx_MessageTile_sending { | ||||
|  |  | |||
|  | @ -0,0 +1,27 @@ | |||
| /* | ||||
| 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. | ||||
| */ | ||||
| 
 | ||||
| .mx_RoomDropTarget { | ||||
| 	font-size: 14px; | ||||
| 	text-align: center; | ||||
| 	margin-left: -8px; | ||||
| 	margin-right: -8px; | ||||
| 	padding-top: 16px; | ||||
| 	padding-bottom: 16px; | ||||
| 	background-color: #fbfbfb; | ||||
| 	border: 1px dashed #d7d7d7; | ||||
| 	border-radius: 8px; | ||||
| } | ||||
|  | @ -15,6 +15,45 @@ limitations under the License. | |||
| */ | ||||
| 
 | ||||
| .mx_RoomHeader { | ||||
|     height: 1em; | ||||
|     padding: 0px; | ||||
| } | ||||
| 
 | ||||
| .mx_RoomHeader_wrapper { | ||||
| 	max-width: 720px; | ||||
| 	margin: auto; | ||||
| 	height: 50px; | ||||
| } | ||||
| 
 | ||||
| .mx_RoomHeader_leftRow { | ||||
| 	display: table-row; | ||||
| 	height: 50px; | ||||
| 	float: left; | ||||
| } | ||||
| 
 | ||||
| .mx_RoomHeader_rightRow { | ||||
| 	display: table-row; | ||||
| 	height: 50px; | ||||
| 	float: right; | ||||
| } | ||||
| 
 | ||||
| .mx_RoomHeader_name { | ||||
| 	display: table-cell; | ||||
| 	vertical-align: middle; | ||||
| 	height: 50px; | ||||
| 	font-weight: 400; | ||||
| 	font-size: 20px; | ||||
| 	padding-left: 16px; | ||||
| 	padding-right: 16px; | ||||
| } | ||||
| 
 | ||||
| .mx_RoomHeader_avatar { | ||||
| 	display: table-cell; | ||||
| 	height: 50px; | ||||
| 	vertical-align: middle; | ||||
| } | ||||
| 
 | ||||
| .mx_RoomHeader_button { | ||||
| 	height: 50px; | ||||
| 	display: table-cell; | ||||
| 	vertical-align: middle; | ||||
| 	padding-right: 16px;	 | ||||
| } | ||||
|  | @ -15,31 +15,40 @@ limitations under the License. | |||
| */ | ||||
| 
 | ||||
| .mx_RoomTile { | ||||
|     padding: 5px; | ||||
|     cursor: pointer; | ||||
|     display: table-row; | ||||
| } | ||||
| 
 | ||||
| .mx_RoomTile.selected { | ||||
| .mx_RoomTile_selected { | ||||
|     text-decoration: underline; | ||||
| } | ||||
| 
 | ||||
| .mx_RoomTile_name { | ||||
| .mx_RoomTile_avatar { | ||||
| 	display: table-cell; | ||||
| 	padding-right: 12px; | ||||
| 	padding-top: 3px; | ||||
| 	padding-bottom: 3px; | ||||
| 	vertical-align: middle; | ||||
| 	width: 32px; | ||||
| 	height: 32px; | ||||
| } | ||||
| 
 | ||||
| .mx_RoomTile div { | ||||
| .mx_RoomTile_name { | ||||
| 	display: table-cell; | ||||
| 	vertical-align: middle; | ||||
|     overflow: hidden; | ||||
|     text-overflow: ellipsis; | ||||
| } | ||||
| 
 | ||||
| .mx_RoomTile.unread { | ||||
| .mx_RoomTile_unread { | ||||
|     font-weight: bold; | ||||
| } | ||||
| 
 | ||||
| .mx_RoomTile.highlight { | ||||
| .mx_RoomTile_highlight { | ||||
|     background-color: lime; | ||||
| } | ||||
| 
 | ||||
| .mx_RoomTile.invited { | ||||
| .mx_RoomTile_invited { | ||||
|     font-weight: bold; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -15,6 +15,4 @@ limitations under the License. | |||
| */ | ||||
| 
 | ||||
| .mx_SenderProfile { | ||||
|     display: table-cell; | ||||
|     padding: 0px 1em 0em 1em; | ||||
| } | ||||
|  |  | |||
|  | @ -0,0 +1,88 @@ | |||
| /* | ||||
| 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. | ||||
| */ | ||||
| 
 | ||||
| .mx_LeftPanel { | ||||
|     position: relative; | ||||
| 
 | ||||
|     display: -webkit-box; | ||||
|     display: -moz-box; | ||||
|     display: -ms-flexbox; | ||||
|     display: -webkit-flex; | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     -webkit-flex-direction: column; | ||||
| 
 | ||||
|     border-right: 1px solid #d8d8d8; | ||||
| } | ||||
| 
 | ||||
| .mx_LeftPanel_hideButton { | ||||
|     position: absolute; | ||||
|     top: 10px; | ||||
|     right: 10px; | ||||
| } | ||||
| 
 | ||||
| .mx_LeftPanel .mx_RoomList { | ||||
|     -webkit-box-ordinal-group: 1; | ||||
|     -moz-box-ordinal-group: 1; | ||||
|     -ms-flex-order: 1; | ||||
|     -webkit-order: 1; | ||||
|     order: 1; | ||||
| 
 | ||||
|     padding-left: 16px; | ||||
|     padding-right: 16px; | ||||
| 
 | ||||
|     /* background-color: #0ff; */ | ||||
|     height: 100%; | ||||
|     overflow-y: scroll; | ||||
| } | ||||
| 
 | ||||
| .mx_LeftPanel .mx_RoomCreate { | ||||
|     -webkit-box-ordinal-group: 2; | ||||
|     -moz-box-ordinal-group: 2; | ||||
|     -ms-flex-order: 2; | ||||
|     -webkit-order: 2; | ||||
|     order: 2; | ||||
| 
 | ||||
|     padding-left: 16px; | ||||
|     padding-right: 16px; | ||||
|     min-height: 46px; | ||||
| 
 | ||||
|     border-top: 1px solid #d8d8d8; | ||||
|     border-bottom: 1px solid #d8d8d8; | ||||
| } | ||||
| 
 | ||||
| .mx_LeftPanel .mx_RoomCreate .mx_RoomCreate_table { | ||||
|     display: table; | ||||
|     width: 100%; | ||||
|     height: 46px; | ||||
| } | ||||
| 
 | ||||
| .mx_LeftPanel .mx_DirectoryMenu { | ||||
|     -webkit-box-ordinal-group: 3; | ||||
|     -moz-box-ordinal-group: 3; | ||||
|     -ms-flex-order: 3; | ||||
|     -webkit-order: 3; | ||||
|     order: 3; | ||||
| 
 | ||||
|     min-height: 150px; | ||||
|     padding-left: 16px; | ||||
|     padding-right: 16px; | ||||
| } | ||||
| 
 | ||||
| .mx_LeftPanel .mx_DirectoryMenu .mx_DirectoryMenu_options { | ||||
|     margin-top: -12px; | ||||
|     width: 100%; | ||||
| } | ||||
|  | @ -0,0 +1,42 @@ | |||
| /* | ||||
| 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. | ||||
| */ | ||||
| 
 | ||||
| .mx_MemberList { | ||||
| 	width: 100%; | ||||
| 	height: 100%; | ||||
| 	margin-bottom: 100px; | ||||
| } | ||||
| 
 | ||||
| .mx_MemberList_chevron { | ||||
| 	position: absolute; | ||||
| 	right: 20px; | ||||
| 	margin-top: -5px; | ||||
| } | ||||
| 
 | ||||
| .mx_MemberList_wrapper { | ||||
| 	border: 1px solid #d8d8d8; | ||||
| 	margin: 8px; | ||||
|     overflow-y: scroll; | ||||
| 	height: auto; | ||||
|     max-height: 75%; | ||||
| 	border-radius: 8px; | ||||
| 	padding: 20px 24px 14px 24px; | ||||
| 	table-layout: fixed; | ||||
| } | ||||
| 
 | ||||
| .mx_MemberList h2 { | ||||
| 	margin-top: 0px; | ||||
| } | ||||
|  | @ -0,0 +1,54 @@ | |||
| /* | ||||
| 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. | ||||
| */ | ||||
| 
 | ||||
| .mx_RightPanel { | ||||
|     position: relative; | ||||
| 
 | ||||
|     display: -webkit-box; | ||||
|     display: -moz-box; | ||||
|     display: -ms-flexbox; | ||||
|     display: -webkit-flex; | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     -webkit-flex-direction: column; | ||||
| } | ||||
| 
 | ||||
| .mx_RightPanel_header { | ||||
|     -webkit-box-ordinal-group: 1; | ||||
|     -moz-box-ordinal-group: 1; | ||||
|     -ms-flex-order: 1; | ||||
|     -webkit-order: 1; | ||||
|     order: 1; | ||||
|     flex: 0 0 50px;     | ||||
| 
 | ||||
|     text-align: right; | ||||
| 
 | ||||
|     height: 50px; | ||||
|     border-bottom: 1px solid #d8d8d8; | ||||
| } | ||||
| 
 | ||||
| .mx_RightPanel_headerButton { | ||||
|     margin-top: 9px; | ||||
|     margin-right: 16px; | ||||
| } | ||||
| 
 | ||||
| .mx_RightPanel .mx_MemberList { | ||||
|     -webkit-box-ordinal-group: 2; | ||||
|     -moz-box-ordinal-group: 2; | ||||
|     -ms-flex-order: 2; | ||||
|     -webkit-order: 2; | ||||
|     order: 2; | ||||
| } | ||||
|  | @ -16,3 +16,10 @@ limitations under the License. | |||
| 
 | ||||
| .mx_RoomList { | ||||
| } | ||||
| 
 | ||||
| .mx_RoomList_recents { | ||||
| 	margin-top: -12px; | ||||
| 	display: table; | ||||
| 	table-layout: fixed; | ||||
| 	width: 100%; | ||||
| } | ||||
|  | @ -17,66 +17,74 @@ limitations under the License. | |||
| .mx_RoomView { | ||||
|     word-wrap: break-word; | ||||
|     position: relative; | ||||
| } | ||||
| 
 | ||||
| .mx_RoomView .mx_RoomHeader { | ||||
|     height: 30px; | ||||
| } | ||||
| 
 | ||||
| .mx_RoomView_roomWrapper { | ||||
|     display: -webkit-box; | ||||
|     display: -moz-box; | ||||
|     display: -ms-flexbox; | ||||
|     display: -webkit-flex; | ||||
|     display: flex;     | ||||
|     position: absolute; | ||||
|     display: flex; | ||||
|     width: 100%; | ||||
|     top: 32px; | ||||
|     bottom: 0px; | ||||
|     flex-direction: column; | ||||
|     -webkit-flex-direction: column; | ||||
| } | ||||
| 
 | ||||
| .mx_RoomView_messagePanel { | ||||
| .mx_RoomView .mx_RoomHeader { | ||||
|     -webkit-box-ordinal-group: 1; | ||||
|     -moz-box-ordinal-group: 1; | ||||
|     -ms-flex-order: 1; | ||||
|     -webkit-order: 1; | ||||
|     order: 1; | ||||
|     width: 100%; | ||||
|     height: 100%; | ||||
|     /* background-color: #ff0; */ | ||||
| 
 | ||||
|     flex: 0 0 50px; | ||||
|     border-bottom: 1px solid #d8d8d8; | ||||
| } | ||||
| 
 | ||||
| .mx_RoomView_messageListWrapper { | ||||
|     height: 100%; | ||||
|     overflow-y: scroll;     | ||||
| } | ||||
| 
 | ||||
| .mx_RoomView_MessageList { | ||||
|     display: table; | ||||
| } | ||||
| 
 | ||||
| .mx_RoomView_invitePrompt { | ||||
| } | ||||
| 
 | ||||
| .mx_RoomView .mx_MemberList { | ||||
| .mx_RoomView_auxPanel { | ||||
|     -webkit-box-ordinal-group: 2; | ||||
|     -moz-box-ordinal-group: 2; | ||||
|     -ms-flex-order: 2; | ||||
|     -webkit-order: 2; | ||||
|     order: 2; | ||||
| 
 | ||||
|     /* background-color: #0f0; */ | ||||
|     width: 250px; | ||||
|     overflow-y: scroll; | ||||
|     height: 100%; | ||||
|     width: 100%; | ||||
|     height: 0%; | ||||
| } | ||||
| 
 | ||||
| .mx_RoomView .mx_MemberList ul { | ||||
|     margin: 0px; | ||||
|     padding: 0px; | ||||
| .mx_RoomView_messagePanel { | ||||
|     -webkit-box-ordinal-group: 3; | ||||
|     -moz-box-ordinal-group: 3; | ||||
|     -ms-flex-order: 3; | ||||
|     -webkit-order: 3; | ||||
|     order: 3; | ||||
| 
 | ||||
|     width: 100%; | ||||
|     height: 100%; | ||||
|     margin-bottom: 60px; | ||||
|     /* background-color: #ff0; */ | ||||
| 
 | ||||
|     overflow-y: scroll;     | ||||
| } | ||||
| 
 | ||||
| .mx_RoomView_messageListWrapper { | ||||
|     max-width: 720px; | ||||
|     margin: auto; | ||||
| } | ||||
| 
 | ||||
| .mx_RoomView_MessageList { | ||||
|     width: 100%; | ||||
| } | ||||
| 
 | ||||
| .mx_RoomView_invitePrompt { | ||||
| } | ||||
| 
 | ||||
| .mx_RoomView .mx_MessageComposer { | ||||
|     -webkit-box-ordinal-group: 4; | ||||
|     -moz-box-ordinal-group: 4; | ||||
|     -ms-flex-order: 4; | ||||
|     -webkit-order: 4; | ||||
|     order: 4; | ||||
| 
 | ||||
|     width: 100%; | ||||
|     bottom: 0px; | ||||
|     flex: 0 0 50px;     | ||||
|     /* background-color: #ff0; */ | ||||
| } | ||||
|  |  | |||
|  | @ -18,62 +18,23 @@ limitations under the License. | |||
|     position: relative; | ||||
|     width: 100%; | ||||
|     height: 100%; | ||||
| } | ||||
| 
 | ||||
| .mx_MatrixChat_chatWrapper { | ||||
|     display: -webkit-box; | ||||
|     display: -moz-box; | ||||
|     display: -ms-flexbox; | ||||
|     display: -webkit-flex; | ||||
|     display: flex; | ||||
|     position: absolute; | ||||
|     width: 100%; | ||||
|     top: 0px; | ||||
|     bottom: 42px; | ||||
| } | ||||
| 
 | ||||
| .mx_MatrixChat_leftPanel { | ||||
|     -webkit-box-ordinal-group: 1; | ||||
|     -moz-box-ordinal-group: 1; | ||||
|     -ms-flex-order: 1; | ||||
|     -webkit-order: 1; | ||||
|     order: 1; | ||||
| 
 | ||||
|     display: -webkit-box; | ||||
|     display: -moz-box; | ||||
|     display: -ms-flexbox; | ||||
|     display: -webkit-flex; | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|     -webkit-flex-direction: column; | ||||
| 
 | ||||
|     /* background-color: #f00; */ | ||||
|     width: 250px; | ||||
|     height: 100%; | ||||
| } | ||||
| 
 | ||||
| .mx_MatrixChat_leftPanel .mx_MatrixToolbar { | ||||
| .mx_MatrixChat .mx_LeftPanel { | ||||
|     -webkit-box-ordinal-group: 1; | ||||
|     -moz-box-ordinal-group: 1; | ||||
|     -ms-flex-order: 1; | ||||
|     -webkit-order: 1; | ||||
|     order: 1; | ||||
| 
 | ||||
|     width: 100%; | ||||
|     height: 40px; | ||||
| } | ||||
| 
 | ||||
| .mx_MatrixChat_leftPanel .mx_RoomList { | ||||
|     -webkit-box-ordinal-group: 2; | ||||
|     -moz-box-ordinal-group: 2; | ||||
|     -ms-flex-order: 2; | ||||
|     -webkit-order: 2; | ||||
|     order: 2; | ||||
| 
 | ||||
|     /* background-color: #0ff; */ | ||||
|     width: 100%; | ||||
|     flex: 0 0 230px; | ||||
|     height: 100%; | ||||
|     overflow-y: scroll; | ||||
| } | ||||
| 
 | ||||
| .mx_MatrixChat .mx_RoomView { | ||||
|  | @ -87,3 +48,14 @@ limitations under the License. | |||
|     width: 100%; | ||||
|     height: 100%;        | ||||
| } | ||||
| 
 | ||||
| .mx_MatrixChat .mx_RightPanel { | ||||
|     -webkit-box-ordinal-group: 3; | ||||
|     -moz-box-ordinal-group: 3; | ||||
|     -ms-flex-order: 3; | ||||
|     -webkit-order: 3; | ||||
|     order: 3; | ||||
| 
 | ||||
|     flex: 0 0 230px; | ||||
|     height: 100%;        | ||||
| } | ||||
|  |  | |||
| After Width: | Height: | Size: 369 B | 
| After Width: | Height: | Size: 2.9 KiB | 
| After Width: | Height: | Size: 807 B | 
| After Width: | Height: | Size: 308 B | 
| After Width: | Height: | Size: 341 B | 
| After Width: | Height: | Size: 660 B | 
| After Width: | Height: | Size: 910 B | 
| After Width: | Height: | Size: 394 B | 
| After Width: | Height: | Size: 651 B | 
| After Width: | Height: | Size: 471 B | 
| After Width: | Height: | Size: 541 B | 
|  | @ -0,0 +1,50 @@ | |||
| /* | ||||
| 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 DirectoryMenuController = require("../../../../src/controllers/molecules/DirectoryMenuController");
 | ||||
| 
 | ||||
| var MatrixClientPeg = require("../../../../src/MatrixClientPeg"); | ||||
| 
 | ||||
| module.exports = React.createClass({ | ||||
|     displayName: 'DirectoryMenu', | ||||
|     // mixins: [DirectoryMenuController],
 | ||||
|     render: function() { | ||||
|         return ( | ||||
|             <div className="mx_DirectoryMenu"> | ||||
|                 <h2>Directory</h2> | ||||
|                 <div className="mx_DirectoryMenu_options"> | ||||
|                     <div className="mx_RoomTile"> | ||||
|                         <div className="mx_RoomTile_avatar"> | ||||
|                             <img src="img/placeholder.png" width="32" height="32" alt="(+)"/> | ||||
|                         </div> | ||||
|                         <div className="mx_RoomTile_name">Users</div> | ||||
|                     </div> | ||||
|                     <div className="mx_RoomTile"> | ||||
|                         <div className="mx_RoomTile_avatar"> | ||||
|                             <img src="img/placeholder.png" width="32" height="32" alt="(+)"/> | ||||
|                         </div> | ||||
|                         <div className="mx_RoomTile_name">Rooms</div> | ||||
|                     </div> | ||||
|                 </div> | ||||
|             </div> | ||||
|         ); | ||||
|     } | ||||
| }); | ||||
|  | @ -26,6 +26,7 @@ module.exports = React.createClass({ | |||
|     render: function() { | ||||
|         return ( | ||||
|             <div className="mx_MemberTile"> | ||||
|                 <div className="mx_MemberTile_avatar"><img src="img/placeholder.png" width="32" height="32" alt="()"/></div>             | ||||
|                 <div className="mx_MemberTile_name">{this.props.member.name}</div> | ||||
|             </div> | ||||
|         ); | ||||
|  |  | |||
|  | @ -27,7 +27,16 @@ module.exports = React.createClass({ | |||
|     render: function() { | ||||
|         return ( | ||||
|             <div className="mx_MessageComposer"> | ||||
|                 <textarea ref="textarea" onKeyDown={this.onKeyDown} /> | ||||
|                 <div className="mx_MessageComposer_wrapper"> | ||||
|                     <div className="mx_MessageComposer_row"> | ||||
|                         <div className="mx_MessageComposer_avatar"> | ||||
|                             <img src="img/placeholder.png" width="32" height="32" alt="(+)"/> | ||||
|                         </div> | ||||
|                         <div className="mx_MessageComposer_input"> | ||||
|                             <textarea ref="textarea" onKeyDown={this.onKeyDown} placeholder="Type a message" /> | ||||
|                         </div> | ||||
|                     </div> | ||||
|                 </div> | ||||
|             </div> | ||||
|         ); | ||||
|     }, | ||||
|  |  | |||
|  | @ -56,6 +56,9 @@ module.exports = React.createClass({ | |||
|         }); | ||||
|         return ( | ||||
|             <div className={classes}> | ||||
|                 <div className="mx_MessageTile_avatar"> | ||||
|                     <img src="/img/placeholder.png" width="32" height="32"/> | ||||
|                 </div> | ||||
|                 <MessageTimestamp ts={this.props.mxEvent.getTs()} /> | ||||
|                 <SenderProfile mxEvent={this.props.mxEvent} /> | ||||
|                 <TileType mxEvent={this.props.mxEvent} /> | ||||
|  |  | |||
|  | @ -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 ( | ||||
|             <div className="mx_RoomCreate"> | ||||
|                 <div className="mx_RoomCreate_table"> | ||||
|                     <div className="mx_RoomTile"> | ||||
|                         <div className="mx_RoomTile_avatar"> | ||||
|                             <img src="img/create.png" width="32" height="32" alt="(+)"/> | ||||
|                         </div> | ||||
|                         <div className="mx_RoomTile_name">Create new room</div> | ||||
|                     </div> | ||||
|                 </div> | ||||
|             </div> | ||||
|         ); | ||||
|     } | ||||
| }); | ||||
|  | @ -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 ( | ||||
|             <div className="mx_RoomDropTarget"> | ||||
|                 {this.props.text} | ||||
|             </div> | ||||
|         ); | ||||
|     } | ||||
| }); | ||||
|  | @ -27,7 +27,28 @@ module.exports = React.createClass({ | |||
|     render: function() { | ||||
|         return ( | ||||
|             <div className="mx_RoomHeader"> | ||||
|                 {this.props.room.name} | ||||
|                 <div className="mx_RoomHeader_wrapper"> | ||||
|                     <div className="mx_RoomHeader_leftRow"> | ||||
|                         <div className="mx_RoomHeader_avatar"> | ||||
|                             <img src="img/placeholder.png" width="32" height="32" alt="(+)"/> | ||||
|                         </div> | ||||
|                         <div className="mx_RoomHeader_name">{this.props.room.name}</div> | ||||
|                         <div className="mx_RoomHeader_button"> | ||||
|                             <img src="img/info.png" width="32" height="32"/> | ||||
|                         </div> | ||||
|                     </div> | ||||
|                     <div className="mx_RoomHeader_rightRow"> | ||||
|                         <div className="mx_RoomHeader_button"> | ||||
|                             <img src="img/search.png" width="32" height="32"/> | ||||
|                         </div> | ||||
|                         <div className="mx_RoomHeader_button"> | ||||
|                             <img src="img/video.png" width="32" height="32"/> | ||||
|                         </div> | ||||
|                         <div className="mx_RoomHeader_button"> | ||||
|                             <img src="img/voip.png" width="32" height="32"/> | ||||
|                         </div> | ||||
|                     </div> | ||||
|                 </div> | ||||
|             </div> | ||||
|         ); | ||||
|     }, | ||||
|  |  | |||
|  | @ -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 ( | ||||
|             <div className={classes} onClick={this.onClick}> | ||||
|                 <div className="mx_RoomTile_avatar"><img src="img/placeholder.png" width="32" height="32" alt="()"/></div> | ||||
|                 <div className="mx_RoomTile_name">{this.props.room.name}</div> | ||||
|             </div> | ||||
|         ); | ||||
|  |  | |||
|  | @ -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 ( | ||||
|             <div className="mx_LeftPanel"> | ||||
|                 <img className="mx_LeftPanel_hideButton" src="img/hide.png" width="32" height="32" alt="<"/> | ||||
|                 <RoomList selectedRoom={this.props.currentRoom} /> | ||||
|                 <RoomCreate/> | ||||
|                 <DirectoryMenu /> | ||||
|             </div> | ||||
|         ); | ||||
|     } | ||||
| }); | ||||
| 
 | ||||
|  | @ -34,11 +34,7 @@ module.exports = React.createClass({ | |||
|         return Object.keys(that.state.memberDict).map(function(userId) { | ||||
|             var m = that.state.memberDict[userId]; | ||||
|             return ( | ||||
|                 <li key={userId}> | ||||
|                 <MemberTile | ||||
|                     member={m} | ||||
|                 /> | ||||
|                 </li> | ||||
|                 <MemberTile key={userId} member={m} /> | ||||
|             ); | ||||
|         }); | ||||
|     }, | ||||
|  | @ -46,9 +42,17 @@ module.exports = React.createClass({ | |||
|     render: function() { | ||||
|         return ( | ||||
|             <div className="mx_MemberList"> | ||||
|                 <ul> | ||||
|                 <div className="mx_MemberList_chevron"> | ||||
|                     <img src="img/chevron.png" width="24" height="13"/> | ||||
|                 </div> | ||||
|                 <div className="mx_MemberList_wrapper"> | ||||
|                     <h2>Members</h2> | ||||
|                     {this.makeMemberTiles()} | ||||
|                 </ul> | ||||
|                     <div className="mx_MemberTile"> | ||||
|                         <div className="mx_MemberTile_avatar"><img src="img/create.png" width="32" height="32" alt="()"/></div>             | ||||
|                         <div className="mx_MemberTile_name">Invite</div> | ||||
|                     </div> | ||||
|                 </div> | ||||
|             </div> | ||||
|         ); | ||||
|     } | ||||
|  |  | |||
|  | @ -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 ( | ||||
|             <div className="mx_RightPanel"> | ||||
|                 <div className="mx_RightPanel_header"> | ||||
|                     <img className="mx_RightPanel_headerButton" src="img/file.png" width="32" height="32" alt="Files"/> | ||||
|                     <img className="mx_RightPanel_headerButton" src="img/members.png" width="32" height="32" alt="Members"/> | ||||
|                 </div> | ||||
|                 <MemberList roomId={this.props.roomId} key={this.props.roomId} /> | ||||
|             </div> | ||||
|         ); | ||||
|     } | ||||
| }); | ||||
| 
 | ||||
|  | @ -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 ( | ||||
|             <div className="mx_RoomList"> | ||||
|                 {this.makeRoomTiles()} | ||||
|                 <h2>Favourites</h2> | ||||
|                 <RoomDropTarget text="Drop here to favourite"/> | ||||
| 
 | ||||
|                 <h2>Recents</h2> | ||||
|                 <div className="mx_RoomList_recents"> | ||||
|                     {this.makeRoomTiles()} | ||||
|                 </div> | ||||
| 
 | ||||
|                 <h2>Archive</h2> | ||||
|                 <RoomDropTarget text="Drop here to archive"/> | ||||
|             </div> | ||||
|         ); | ||||
|     } | ||||
|  |  | |||
|  | @ -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 ( | ||||
|                 <div className="mx_RoomView"> | ||||
|                     <RoomHeader room={this.state.room} /> | ||||
|                     <div className="mx_RoomView_roomWrapper"> | ||||
|                         <div className="mx_RoomView_messagePanel"> | ||||
|                             <div ref="messageWrapper" className="mx_RoomView_messageListWrapper" onScroll={this.onMessageListScroll}> | ||||
|                                 <div className="mx_RoomView_MessageList" aria-live="polite"> | ||||
|                                     <div className={scrollheader_classes}> | ||||
|                                     </div> | ||||
|                                     {this.getEventTiles()} | ||||
|                     <div ref="messageWrapper" className="mx_RoomView_messagePanel" onScroll={this.onMessageListScroll}> | ||||
|                         <div className="mx_RoomView_messageListWrapper"> | ||||
|                             <div className="mx_RoomView_MessageList" aria-live="polite"> | ||||
|                                 <div className={scrollheader_classes}> | ||||
|                                 </div> | ||||
|                                 {this.getEventTiles()} | ||||
|                             </div> | ||||
|                             <MessageComposer roomId={this.props.roomId} /> | ||||
|                         </div> | ||||
|                         <MemberList roomId={this.props.roomId} key={this.props.roomId} /> | ||||
|                     </div> | ||||
|                     <MessageComposer roomId={this.props.roomId} /> | ||||
|                 </div> | ||||
|             ); | ||||
|         } | ||||
|  |  | |||
|  | @ -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 ( | ||||
|                 <div className="mx_MatrixChat"> | ||||
|                     <div className="mx_MatrixChat_chatWrapper"> | ||||
|                         <div className="mx_MatrixChat_leftPanel"> | ||||
|                             <RoomList selectedRoom={this.state.currentRoom} /> | ||||
|                             <MatrixToolbar /> | ||||
|                         </div> | ||||
|                         <RoomView roomId={this.state.currentRoom} key={this.state.currentRoom} /> | ||||
|                     </div> | ||||
|                     <LeftPanel selectedRoom={this.state.currentRoom} /> | ||||
|                     <RoomView roomId={this.state.currentRoom} key={this.state.currentRoom} /> | ||||
|                     <RightPanel roomId={this.state.currentRoom} /> | ||||
|                 </div> | ||||
|             ); | ||||
|         } else if (this.state.logged_in) { | ||||
|  |  | |||
|  | @ -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'); | ||||
| 
 | ||||
| } | ||||
|  |  | |||
 Matthew Hodgson
						Matthew Hodgson