From ad072cc1792e82759a9b40d0d4c32c31e1f7bb4a Mon Sep 17 00:00:00 2001 From: Jani Mustonen Date: Fri, 6 Jan 2017 01:37:27 +0200 Subject: [PATCH 1/8] Turned buttons from divs to links. Makes it possible for screen readers and hotkeys to recognize the buttons. --- src/components/structures/UserSettings.js | 4 ++-- .../views/dialogs/ChatInviteDialog.js | 4 ++-- src/components/views/rooms/RoomHeader.js | 20 +++++++++---------- src/components/views/rooms/RoomTile.js | 4 ++-- .../views/rooms/SimpleRoomHeader.js | 2 +- .../views/settings/ChangePassword.js | 4 ++-- 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js index a41eab3a76..cd07a91475 100644 --- a/src/components/structures/UserSettings.js +++ b/src/components/structures/UserSettings.js @@ -663,9 +663,9 @@ module.exports = React.createClass({
-
+ Sign out -
+ {accountJsx}
diff --git a/src/components/views/dialogs/ChatInviteDialog.js b/src/components/views/dialogs/ChatInviteDialog.js index e9a041357f..5c6c627d58 100644 --- a/src/components/views/dialogs/ChatInviteDialog.js +++ b/src/components/views/dialogs/ChatInviteDialog.js @@ -409,9 +409,9 @@ module.exports = React.createClass({
{this.props.title}
-
+ -
+
diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index db3c7bb3d9..bfcaa6b172 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -182,8 +182,8 @@ module.exports = React.createClass({ 'm.room.name', user_id ); - save_button =
Save
- cancel_button =
Cancel
+ save_button = Save + cancel_button = Cancel } if (this.props.saving) { @@ -275,9 +275,9 @@ module.exports = React.createClass({ var settings_button; if (this.props.onSettingsClick) { settings_button = -
+ -
; + ; } // var leave_button; @@ -291,17 +291,17 @@ module.exports = React.createClass({ var forget_button; if (this.props.onForgetClick) { forget_button = -
+ -
; + ; } var rightPanel_buttons; if (this.props.collapsedRhs) { rightPanel_buttons = -
+ -
+ } var right_row; @@ -310,9 +310,9 @@ module.exports = React.createClass({
{ settings_button } { forget_button } -
+ -
+ { rightPanel_buttons }
; } diff --git a/src/components/views/rooms/RoomTile.js b/src/components/views/rooms/RoomTile.js index 84916f8ab8..fce2868d50 100644 --- a/src/components/views/rooms/RoomTile.js +++ b/src/components/views/rooms/RoomTile.js @@ -287,7 +287,7 @@ module.exports = React.createClass({ var connectDropTarget = this.props.connectDropTarget; let ret = ( -
+
@@ -302,7 +302,7 @@ module.exports = React.createClass({
{/* { incomingCallBox } */} { tooltip } -
+
); if (connectDropTarget) ret = connectDropTarget(ret); diff --git a/src/components/views/rooms/SimpleRoomHeader.js b/src/components/views/rooms/SimpleRoomHeader.js index 7f2bb0048a..84c6802b3d 100644 --- a/src/components/views/rooms/SimpleRoomHeader.js +++ b/src/components/views/rooms/SimpleRoomHeader.js @@ -44,7 +44,7 @@ module.exports = React.createClass({ var cancelButton; if (this.props.onCancelClick) { - cancelButton =
Cancel
+ cancelButton = Cancel } var showRhsButton; diff --git a/src/components/views/settings/ChangePassword.js b/src/components/views/settings/ChangePassword.js index 1ef3eff205..74658a09e5 100644 --- a/src/components/views/settings/ChangePassword.js +++ b/src/components/views/settings/ChangePassword.js @@ -136,9 +136,9 @@ module.exports = React.createClass({
-
+ Change Password -
+ ); case this.Phases.Uploading: From 8d79716421253002ae3a640ad7f6dcf77d885e3e Mon Sep 17 00:00:00 2001 From: Jani Mustonen Date: Fri, 6 Jan 2017 16:41:35 +0200 Subject: [PATCH 2/8] Turned the links to buttons to comply with MDN's recommendations --- src/components/structures/UserSettings.js | 4 ++-- .../views/dialogs/ChatInviteDialog.js | 4 ++-- src/components/views/rooms/RoomHeader.js | 20 +++++++++---------- src/components/views/rooms/RoomTile.js | 4 ++-- .../views/rooms/SimpleRoomHeader.js | 2 +- .../views/settings/ChangePassword.js | 4 ++-- 6 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/components/structures/UserSettings.js b/src/components/structures/UserSettings.js index cd07a91475..b104352096 100644 --- a/src/components/structures/UserSettings.js +++ b/src/components/structures/UserSettings.js @@ -663,9 +663,9 @@ module.exports = React.createClass({
- + {accountJsx}
diff --git a/src/components/views/dialogs/ChatInviteDialog.js b/src/components/views/dialogs/ChatInviteDialog.js index 5c6c627d58..fe33ea6d1c 100644 --- a/src/components/views/dialogs/ChatInviteDialog.js +++ b/src/components/views/dialogs/ChatInviteDialog.js @@ -409,9 +409,9 @@ module.exports = React.createClass({
{this.props.title}
- +
diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index bfcaa6b172..92cc6c64fd 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -182,8 +182,8 @@ module.exports = React.createClass({ 'm.room.name', user_id ); - save_button = Save - cancel_button = Cancel + save_button = + cancel_button = } if (this.props.saving) { @@ -275,9 +275,9 @@ module.exports = React.createClass({ var settings_button; if (this.props.onSettingsClick) { settings_button = - + ; } // var leave_button; @@ -291,17 +291,17 @@ module.exports = React.createClass({ var forget_button; if (this.props.onForgetClick) { forget_button = - + ; } var rightPanel_buttons; if (this.props.collapsedRhs) { rightPanel_buttons = - + } var right_row; @@ -310,9 +310,9 @@ module.exports = React.createClass({
{ settings_button } { forget_button } - + { rightPanel_buttons }
; } diff --git a/src/components/views/rooms/RoomTile.js b/src/components/views/rooms/RoomTile.js index fce2868d50..6cd9795bdc 100644 --- a/src/components/views/rooms/RoomTile.js +++ b/src/components/views/rooms/RoomTile.js @@ -287,7 +287,7 @@ module.exports = React.createClass({ var connectDropTarget = this.props.connectDropTarget; let ret = ( - + ); if (connectDropTarget) ret = connectDropTarget(ret); diff --git a/src/components/views/rooms/SimpleRoomHeader.js b/src/components/views/rooms/SimpleRoomHeader.js index 84c6802b3d..3c08fac821 100644 --- a/src/components/views/rooms/SimpleRoomHeader.js +++ b/src/components/views/rooms/SimpleRoomHeader.js @@ -44,7 +44,7 @@ module.exports = React.createClass({ var cancelButton; if (this.props.onCancelClick) { - cancelButton = Cancel + cancelButton = } var showRhsButton; diff --git a/src/components/views/settings/ChangePassword.js b/src/components/views/settings/ChangePassword.js index 74658a09e5..84f049fdad 100644 --- a/src/components/views/settings/ChangePassword.js +++ b/src/components/views/settings/ChangePassword.js @@ -136,9 +136,9 @@ module.exports = React.createClass({ - + ); case this.Phases.Uploading: From d2ff2715ce276f4dd477a545a594698d4068422d Mon Sep 17 00:00:00 2001 From: Jani Mustonen Date: Fri, 6 Jan 2017 22:01:37 +0200 Subject: [PATCH 3/8] Buttonified almost everything. Stylesheet is broken. --- src/components/views/avatars/BaseAvatar.js | 28 +++++++++++++++------- src/components/views/rooms/EntityTile.js | 4 ++-- src/components/views/rooms/MemberInfo.js | 22 ++++++++--------- 3 files changed, 33 insertions(+), 21 deletions(-) diff --git a/src/components/views/avatars/BaseAvatar.js b/src/components/views/avatars/BaseAvatar.js index 47f0a76891..38a700eb7e 100644 --- a/src/components/views/avatars/BaseAvatar.js +++ b/src/components/views/avatars/BaseAvatar.js @@ -138,7 +138,7 @@ module.exports = React.createClass({ const { name, idName, title, url, urls, width, height, resizeMethod, - defaultToInitialLetter, + defaultToInitialLetter, onClick, ...otherProps } = this.props; @@ -156,12 +156,24 @@ module.exports = React.createClass({ ); } - return ( - - ); + if (onClick != null) { + return ( + + ); + } else { + return ( + + ); + } } }); diff --git a/src/components/views/rooms/EntityTile.js b/src/components/views/rooms/EntityTile.js index d29137ffc2..058359706e 100644 --- a/src/components/views/rooms/EntityTile.js +++ b/src/components/views/rooms/EntityTile.js @@ -152,7 +152,7 @@ module.exports = React.createClass({ var av = this.props.avatarJsx || ; return ( -
@@ -161,7 +161,7 @@ module.exports = React.createClass({
{ nameEl } { inviteButton } -
+ ); } }); diff --git a/src/components/views/rooms/MemberInfo.js b/src/components/views/rooms/MemberInfo.js index 1f4d392461..40f85c9e63 100644 --- a/src/components/views/rooms/MemberInfo.js +++ b/src/components/views/rooms/MemberInfo.js @@ -612,7 +612,7 @@ module.exports = WithMatrixClient(React.createClass({ mx_MemberInfo_createRoom_label: true, mx_RoomTile_name: true, }); - const startNewChat =
@@ -620,7 +620,7 @@ module.exports = WithMatrixClient(React.createClass({
Start new chat
- + startChat =

Direct chats

@@ -635,26 +635,26 @@ module.exports = WithMatrixClient(React.createClass({ } if (this.state.can.kick) { - kickButton =
+ kickButton =
; + ; } if (this.state.can.ban) { - banButton =
+ banButton =
; + ; } if (this.state.can.mute) { var muteLabel = this.state.muted ? "Unmute" : "Mute"; - muteButton =
+ muteButton =
; + ; } if (this.state.can.toggleMod) { var giveOpLabel = this.state.isTargetMod ? "Revoke Moderator" : "Make Moderator"; - giveModButton =
+ giveModButton =
+ } // TODO: we should have an invite button if this MemberInfo is showing a user who isn't actually in the current room yet @@ -682,7 +682,7 @@ module.exports = WithMatrixClient(React.createClass({ const EmojiText = sdk.getComponent('elements.EmojiText'); return (
- +
From 041196d7298d72381b66c7ce2aefa4ed924324ec Mon Sep 17 00:00:00 2001 From: Jani Mustonen Date: Sat, 7 Jan 2017 17:53:45 +0200 Subject: [PATCH 4/8] Added quick search functionality --- src/components/views/elements/TintableSvg.js | 1 + src/components/views/rooms/RoomTile.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/views/elements/TintableSvg.js b/src/components/views/elements/TintableSvg.js index 0157131506..401a11c1cb 100644 --- a/src/components/views/elements/TintableSvg.js +++ b/src/components/views/elements/TintableSvg.js @@ -69,6 +69,7 @@ var TintableSvg = React.createClass({ width={ this.props.width } height={ this.props.height } onLoad={ this.onLoad } + tabIndex="-1" /> ); } diff --git a/src/components/views/rooms/RoomTile.js b/src/components/views/rooms/RoomTile.js index 6cd9795bdc..9f592868b4 100644 --- a/src/components/views/rooms/RoomTile.js +++ b/src/components/views/rooms/RoomTile.js @@ -287,7 +287,7 @@ module.exports = React.createClass({ var connectDropTarget = this.props.connectDropTarget; let ret = ( - +
; }, @@ -492,10 +493,10 @@ module.exports = React.createClass({ // bind() the invited rooms so any new invites that may come in as this button is clicked // don't inadvertently get rejected as well. reject = ( - + ); } @@ -663,9 +664,9 @@ module.exports = React.createClass({
- + {accountJsx}
diff --git a/src/components/views/avatars/BaseAvatar.js b/src/components/views/avatars/BaseAvatar.js index 38a700eb7e..906325268f 100644 --- a/src/components/views/avatars/BaseAvatar.js +++ b/src/components/views/avatars/BaseAvatar.js @@ -19,6 +19,7 @@ limitations under the License. var React = require('react'); var AvatarLogic = require("../../../Avatar"); import sdk from '../../../index'; +var AccessibleButton = require('../elements/AccessibleButton'); module.exports = React.createClass({ displayName: 'BaseAvatar', @@ -158,13 +159,13 @@ module.exports = React.createClass({ } if (onClick != null) { return ( - + ); } else { return ( diff --git a/src/components/views/dialogs/ChatInviteDialog.js b/src/components/views/dialogs/ChatInviteDialog.js index fe33ea6d1c..a54651b2db 100644 --- a/src/components/views/dialogs/ChatInviteDialog.js +++ b/src/components/views/dialogs/ChatInviteDialog.js @@ -24,6 +24,7 @@ var DMRoomMap = require('../../../utils/DMRoomMap'); var rate_limited_func = require("../../../ratelimitedfunc"); var dis = require("../../../dispatcher"); var Modal = require('../../../Modal'); +var AccessibleButton = require('../elements/AccessibleButton'); const TRUNCATE_QUERY_LIST = 40; @@ -409,9 +410,9 @@ module.exports = React.createClass({
{this.props.title}
- +
diff --git a/src/components/views/rooms/EntityTile.js b/src/components/views/rooms/EntityTile.js index 058359706e..64de431d9d 100644 --- a/src/components/views/rooms/EntityTile.js +++ b/src/components/views/rooms/EntityTile.js @@ -20,6 +20,7 @@ var React = require('react'); var MatrixClientPeg = require('../../../MatrixClientPeg'); var sdk = require('../../../index'); +var AccessibleButton = require('../elements/AccessibleButton'); var PRESENCE_CLASS = { @@ -152,7 +153,7 @@ module.exports = React.createClass({ var av = this.props.avatarJsx || ; return ( - + ); } }); diff --git a/src/components/views/rooms/MemberInfo.js b/src/components/views/rooms/MemberInfo.js index 40f85c9e63..4863bad5ed 100644 --- a/src/components/views/rooms/MemberInfo.js +++ b/src/components/views/rooms/MemberInfo.js @@ -35,6 +35,7 @@ var DMRoomMap = require('../../../utils/DMRoomMap'); var Unread = require('../../../Unread'); var Receipt = require('../../../utils/Receipt'); var WithMatrixClient = require('../../../wrappers/WithMatrixClient'); +var AccessibleButton = require('../elements/AccessibleButton'); module.exports = WithMatrixClient(React.createClass({ displayName: 'MemberInfo', @@ -612,7 +613,7 @@ module.exports = WithMatrixClient(React.createClass({ mx_MemberInfo_createRoom_label: true, mx_RoomTile_name: true, }); - const startNewChat = + startChat =

Direct chats

@@ -635,26 +636,26 @@ module.exports = WithMatrixClient(React.createClass({ } if (this.state.can.kick) { - kickButton = ; + ; } if (this.state.can.ban) { - banButton = ; + ; } if (this.state.can.mute) { var muteLabel = this.state.muted ? "Unmute" : "Mute"; - muteButton = ; + ; } if (this.state.can.toggleMod) { var giveOpLabel = this.state.isTargetMod ? "Revoke Moderator" : "Make Moderator"; - giveModButton = + } // TODO: we should have an invite button if this MemberInfo is showing a user who isn't actually in the current room yet @@ -682,7 +683,7 @@ module.exports = WithMatrixClient(React.createClass({ const EmojiText = sdk.getComponent('elements.EmojiText'); return (
- +
diff --git a/src/components/views/rooms/ReadReceiptMarker.js b/src/components/views/rooms/ReadReceiptMarker.js index 47875bd7fb..1618e4440d 100644 --- a/src/components/views/rooms/ReadReceiptMarker.js +++ b/src/components/views/rooms/ReadReceiptMarker.js @@ -192,9 +192,9 @@ module.exports = React.createClass({ width={14} height={14} resizeMethod="crop" style={style} title={title} - onClick={this.props.onClick} /> ); + /* onClick={this.props.onClick} */ }, }); diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index 92cc6c64fd..b67acefc52 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -26,6 +26,7 @@ var rate_limited_func = require('../../../ratelimitedfunc'); var linkify = require('linkifyjs'); var linkifyElement = require('linkifyjs/element'); var linkifyMatrix = require('../../../linkify-matrix'); +var AccessibleButton = require('../elements/AccessibleButton'); linkifyMatrix(linkify); @@ -182,8 +183,8 @@ module.exports = React.createClass({ 'm.room.name', user_id ); - save_button = - cancel_button = + save_button = Save + cancel_button = Cancel } if (this.props.saving) { @@ -275,9 +276,9 @@ module.exports = React.createClass({ var settings_button; if (this.props.onSettingsClick) { settings_button = - ; + ; } // var leave_button; @@ -291,17 +292,17 @@ module.exports = React.createClass({ var forget_button; if (this.props.onForgetClick) { forget_button = - ; + ; } var rightPanel_buttons; if (this.props.collapsedRhs) { rightPanel_buttons = - + } var right_row; @@ -310,9 +311,9 @@ module.exports = React.createClass({
{ settings_button } { forget_button } - + { rightPanel_buttons }
; } diff --git a/src/components/views/rooms/RoomTile.js b/src/components/views/rooms/RoomTile.js index 9f592868b4..07790181c5 100644 --- a/src/components/views/rooms/RoomTile.js +++ b/src/components/views/rooms/RoomTile.js @@ -26,6 +26,7 @@ var sdk = require('../../../index'); var ContextualMenu = require('../../structures/ContextualMenu'); var RoomNotifs = require('../../../RoomNotifs'); var FormattingUtils = require('../../../utils/FormattingUtils'); +var AccessibleButton = require('../elements/AccessibleButton'); module.exports = React.createClass({ displayName: 'RoomTile', @@ -286,8 +287,10 @@ module.exports = React.createClass({ var connectDragSource = this.props.connectDragSource; var connectDropTarget = this.props.connectDropTarget; + let ret = ( - + +
); if (connectDropTarget) ret = connectDropTarget(ret); diff --git a/src/components/views/rooms/SimpleRoomHeader.js b/src/components/views/rooms/SimpleRoomHeader.js index 3c08fac821..dbb27deb73 100644 --- a/src/components/views/rooms/SimpleRoomHeader.js +++ b/src/components/views/rooms/SimpleRoomHeader.js @@ -19,6 +19,7 @@ limitations under the License. var React = require('react'); var sdk = require('../../../index'); var dis = require("../../../dispatcher"); +var AccessibleButton = require('../elements/AccessibleButton'); /* * A stripped-down room header used for things like the user settings @@ -44,7 +45,7 @@ module.exports = React.createClass({ var cancelButton; if (this.props.onCancelClick) { - cancelButton = + cancelButton = Cancel } var showRhsButton; diff --git a/src/components/views/settings/ChangePassword.js b/src/components/views/settings/ChangePassword.js index 84f049fdad..8882c1e048 100644 --- a/src/components/views/settings/ChangePassword.js +++ b/src/components/views/settings/ChangePassword.js @@ -19,6 +19,7 @@ limitations under the License. var React = require('react'); var MatrixClientPeg = require("../../../MatrixClientPeg"); var sdk = require("../../../index"); +var AccessibleButton = require('../elements/AccessibleButton'); module.exports = React.createClass({ displayName: 'ChangePassword', @@ -136,9 +137,9 @@ module.exports = React.createClass({
- + ); case this.Phases.Uploading: From 5e013860eee729c7131d5dcde47e4feff5b8037a Mon Sep 17 00:00:00 2001 From: Jani Mustonen Date: Fri, 13 Jan 2017 18:26:59 +0200 Subject: [PATCH 6/8] Definition for AccessibleButton --- .../views/elements/AccessibleButton.js | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/components/views/elements/AccessibleButton.js diff --git a/src/components/views/elements/AccessibleButton.js b/src/components/views/elements/AccessibleButton.js new file mode 100644 index 0000000000..91a9b99333 --- /dev/null +++ b/src/components/views/elements/AccessibleButton.js @@ -0,0 +1,44 @@ +/* + Copyright 2016 Aviral Dasgupta + + 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. + */ + +import React from 'react'; + +export default function AccessibleButton(props) { + const {element, onClick, children, ...restProps} = props; + restProps.onClick = onClick; + restProps.onKeyDown = function(e) { + if (e.keyCode == 13 || e.keyCode == 32) return onClick(); + }; + restProps.tabIndex = restProps.tabIndex || "0"; + restProps.role = "button"; + if (Array.isArray(children)) { + return React.createElement(element, restProps, ...children); + } else { + return React.createElement(element, restProps, children); + } +} + +AccessibleButton.propTypes = { + children: React.PropTypes.node, + element: React.PropTypes.string, + onClick: React.PropTypes.func.isRequired, +}; + +AccessibleButton.defaultProps = { + element: 'div' +}; + +AccessibleButton.displayName = "AccessibleButton"; From b323551f2210dea5842647a213b3486f34342e73 Mon Sep 17 00:00:00 2001 From: Jani Mustonen Date: Fri, 13 Jan 2017 19:34:53 +0200 Subject: [PATCH 7/8] Adhered to code review --- .../views/elements/AccessibleButton.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/components/views/elements/AccessibleButton.js b/src/components/views/elements/AccessibleButton.js index 91a9b99333..3ff5d7a38a 100644 --- a/src/components/views/elements/AccessibleButton.js +++ b/src/components/views/elements/AccessibleButton.js @@ -1,5 +1,5 @@ /* - Copyright 2016 Aviral Dasgupta + Copyright 2016 Jani Mustonen Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -16,6 +16,10 @@ import React from 'react'; +/** + * AccessibleButton is a generic wrapper for any element that should be treated as a button. + * Identifies the element as a button, setting proper tab indexing and keyboard activation behavior. + */ export default function AccessibleButton(props) { const {element, onClick, children, ...restProps} = props; restProps.onClick = onClick; @@ -24,13 +28,15 @@ export default function AccessibleButton(props) { }; restProps.tabIndex = restProps.tabIndex || "0"; restProps.role = "button"; - if (Array.isArray(children)) { - return React.createElement(element, restProps, ...children); - } else { - return React.createElement(element, restProps, children); - } + return React.createElement(element, restProps, children); } +/** + * children: React's magic prop. Represents all children given to the element. + * element: (optional) The base element type. "div" by default. + * onClick: (required) Event handler for button activation. Should be + * implemented exactly like a normal onClick handler. + */ AccessibleButton.propTypes = { children: React.PropTypes.node, element: React.PropTypes.string, From 72492fd909bca2691fe7f21763aab64c571982f5 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Tue, 24 Jan 2017 20:55:10 +0000 Subject: [PATCH 8/8] Fix broken merge I messed up the merge in 6dd46d5. --- src/components/views/rooms/RoomHeader.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/components/views/rooms/RoomHeader.js b/src/components/views/rooms/RoomHeader.js index 0593ba16e9..812dd8c79c 100644 --- a/src/components/views/rooms/RoomHeader.js +++ b/src/components/views/rooms/RoomHeader.js @@ -302,11 +302,7 @@ module.exports = React.createClass({ rightPanel_buttons = -<<<<<<< HEAD - -======= - ; ->>>>>>> origin/develop + ; } var right_row;