From afe2226cb8dd3a0f23b0d119e3371189889d4f31 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Thu, 17 Oct 2019 17:14:00 +0100 Subject: [PATCH] Handle ARROW_LEFT correctly on any room tile in sublist Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/components/structures/RoomSubList.js | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/components/structures/RoomSubList.js b/src/components/structures/RoomSubList.js index a3c28a74bb..f97b0e5112 100644 --- a/src/components/structures/RoomSubList.js +++ b/src/components/structures/RoomSubList.js @@ -125,7 +125,6 @@ const RoomSubList = createReactClass({ // The header is stuck, so the click is to be interpreted as a scroll to the header this.props.onHeaderClick(this.state.hidden, this.refs.header.dataset.originalPosition); } - this._headerButton.current.focus(); }, onHeaderKeyDown: function(ev) { @@ -134,21 +133,28 @@ const RoomSubList = createReactClass({ // Prevent LeftPanel handling Tab if focus is on the sublist header itself ev.stopPropagation(); break; - case Key.ARROW_LEFT: - ev.stopPropagation(); - if (!this.state.hidden && !this.props.forceExpand) { - this.onClick(); - } - break; case Key.ARROW_RIGHT: ev.stopPropagation(); if (this.state.hidden && !this.props.forceExpand) { this.onClick(); + } else { + // TODO go to first element in subtree } break; } }, + onKeyDown: function(ev) { + // On ARROW_LEFT collapse the room sublist + if (ev.key === Key.ARROW_LEFT) { + ev.stopPropagation(); + if (!this.state.hidden && !this.props.forceExpand) { + this.onClick(); + this._headerButton.current.focus(); + } + } + }, + onRoomTileClick(roomId, ev) { dis.dispatch({ action: 'view_room', @@ -389,6 +395,7 @@ const RoomSubList = createReactClass({ className={subListClasses} role="group" aria-label={this.props.label} + onKeyDown={this.onKeyDown} > { this._getHeaderJsx(isCollapsed) } { content }