Skip to content

Commit 40045de

Browse files
authored
feat: Clicking enter key on search input selecting first conversation (#17603)
1 parent 826af6a commit 40045de

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

src/script/page/LeftSidebar/panels/Conversations/ConversationHeader/ConversationHeader.tsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import {WebAppEvents} from '@wireapp/webapp-events';
2727
import {Icon} from 'Components/Icon';
2828
import {ConversationLabel} from 'src/script/conversation/ConversationLabelRepository';
2929
import {SidebarTabs} from 'src/script/page/LeftSidebar/panels/Conversations/state';
30+
import {handleEnterDown} from 'Util/KeyboardUtil';
3031
import {t} from 'Util/LocalizerUtil';
3132

3233
import {
@@ -51,6 +52,7 @@ interface ConversationHeaderProps {
5152
searchInputPlaceholder: string;
5253
currentFolder?: ConversationLabel;
5354
setIsConversationFilterFocused: (isFocused: boolean) => void;
55+
onSearchEnterClick: (event: KeyboardEvent<HTMLInputElement>) => void;
5456
}
5557

5658
export const ConversationHeader = ({
@@ -62,6 +64,7 @@ export const ConversationHeader = ({
6264
currentFolder,
6365
searchInputPlaceholder,
6466
setIsConversationFilterFocused,
67+
onSearchEnterClick,
6568
}: ConversationHeaderProps) => {
6669
const {canCreateGroupConversation} = generatePermissionHelpers(selfUser.teamRole());
6770
const isFolderView = currentTab === SidebarTabs.FOLDER;
@@ -84,11 +87,16 @@ export const ConversationHeader = ({
8487
});
8588
}, []);
8689

87-
function onKeyDown(event: KeyboardEvent<HTMLInputElement>) {
90+
const onKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {
8891
if (event.key === 'Escape') {
8992
setSearchValue('');
9093
}
91-
}
94+
95+
handleEnterDown(event, () => {
96+
onSearchEnterClick(event);
97+
setIsConversationFilterFocused(false);
98+
});
99+
};
92100

93101
return (
94102
<>

src/script/page/LeftSidebar/panels/Conversations/Conversations.tsx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
*
1818
*/
1919

20-
import React, {useEffect, useState} from 'react';
20+
import React, {KeyboardEvent as ReactKeyBoardEvent, useEffect, useState} from 'react';
2121

2222
import {amplify} from 'amplify';
2323
import {container} from 'tsyringe';
@@ -60,6 +60,8 @@ import {useConversationFocus} from '../../../../hooks/useConversationFocus';
6060
import {PreferenceNotificationRepository} from '../../../../notification/PreferenceNotificationRepository';
6161
import {PropertiesRepository} from '../../../../properties/PropertiesRepository';
6262
import {PROPERTIES_TYPE} from '../../../../properties/PropertiesType';
63+
import {generateConversationUrl} from '../../../../router/routeGenerator';
64+
import {createNavigateKeyboard} from '../../../../router/routerBindings';
6365
import {TeamState} from '../../../../team/TeamState';
6466
import {UserState} from '../../../../user/UserState';
6567
import {ListViewModel} from '../../../../view_model/ListViewModel';
@@ -304,6 +306,15 @@ const Conversations: React.FC<ConversationsProps> = ({
304306
</>
305307
);
306308

309+
const handleEnterSearchClick = (event: ReactKeyBoardEvent<HTMLDivElement>) => {
310+
const firstFoundConversation = currentTabConversations?.[0];
311+
312+
if (firstFoundConversation) {
313+
createNavigateKeyboard(generateConversationUrl(firstFoundConversation.qualifiedId), true)(event);
314+
setConversationsFilter('');
315+
}
316+
};
317+
307318
return (
308319
<div className="conversations-wrapper">
309320
<div className="conversations-sidebar-spacer" css={conversationsSpacerStyles(mdBreakpoint)} />
@@ -319,6 +330,7 @@ const Conversations: React.FC<ConversationsProps> = ({
319330
setSearchValue={setConversationsFilter}
320331
searchInputPlaceholder={searchInputPlaceholder}
321332
setIsConversationFilterFocused={setIsConversationFilterFocused}
333+
onSearchEnterClick={handleEnterSearchClick}
322334
/>
323335
}
324336
hasHeader={!isPreferences}

0 commit comments

Comments
 (0)