Skip to content

Commit

Permalink
feat: Clicking enter key on search input selecting first conversation (
Browse files Browse the repository at this point in the history
  • Loading branch information
przemvs committed Jun 18, 2024
1 parent 826af6a commit 40045de
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import {WebAppEvents} from '@wireapp/webapp-events';
import {Icon} from 'Components/Icon';
import {ConversationLabel} from 'src/script/conversation/ConversationLabelRepository';
import {SidebarTabs} from 'src/script/page/LeftSidebar/panels/Conversations/state';
import {handleEnterDown} from 'Util/KeyboardUtil';
import {t} from 'Util/LocalizerUtil';

import {
Expand All @@ -51,6 +52,7 @@ interface ConversationHeaderProps {
searchInputPlaceholder: string;
currentFolder?: ConversationLabel;
setIsConversationFilterFocused: (isFocused: boolean) => void;
onSearchEnterClick: (event: KeyboardEvent<HTMLInputElement>) => void;
}

export const ConversationHeader = ({
Expand All @@ -62,6 +64,7 @@ export const ConversationHeader = ({
currentFolder,
searchInputPlaceholder,
setIsConversationFilterFocused,
onSearchEnterClick,
}: ConversationHeaderProps) => {
const {canCreateGroupConversation} = generatePermissionHelpers(selfUser.teamRole());
const isFolderView = currentTab === SidebarTabs.FOLDER;
Expand All @@ -84,11 +87,16 @@ export const ConversationHeader = ({
});
}, []);

function onKeyDown(event: KeyboardEvent<HTMLInputElement>) {
const onKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {
if (event.key === 'Escape') {
setSearchValue('');
}
}

handleEnterDown(event, () => {
onSearchEnterClick(event);
setIsConversationFilterFocused(false);
});
};

return (
<>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
*
*/

import React, {useEffect, useState} from 'react';
import React, {KeyboardEvent as ReactKeyBoardEvent, useEffect, useState} from 'react';

import {amplify} from 'amplify';
import {container} from 'tsyringe';
Expand Down Expand Up @@ -60,6 +60,8 @@ import {useConversationFocus} from '../../../../hooks/useConversationFocus';
import {PreferenceNotificationRepository} from '../../../../notification/PreferenceNotificationRepository';
import {PropertiesRepository} from '../../../../properties/PropertiesRepository';
import {PROPERTIES_TYPE} from '../../../../properties/PropertiesType';
import {generateConversationUrl} from '../../../../router/routeGenerator';
import {createNavigateKeyboard} from '../../../../router/routerBindings';
import {TeamState} from '../../../../team/TeamState';
import {UserState} from '../../../../user/UserState';
import {ListViewModel} from '../../../../view_model/ListViewModel';
Expand Down Expand Up @@ -304,6 +306,15 @@ const Conversations: React.FC<ConversationsProps> = ({
</>
);

const handleEnterSearchClick = (event: ReactKeyBoardEvent<HTMLDivElement>) => {
const firstFoundConversation = currentTabConversations?.[0];

if (firstFoundConversation) {
createNavigateKeyboard(generateConversationUrl(firstFoundConversation.qualifiedId), true)(event);
setConversationsFilter('');
}
};

return (
<div className="conversations-wrapper">
<div className="conversations-sidebar-spacer" css={conversationsSpacerStyles(mdBreakpoint)} />
Expand All @@ -319,6 +330,7 @@ const Conversations: React.FC<ConversationsProps> = ({
setSearchValue={setConversationsFilter}
searchInputPlaceholder={searchInputPlaceholder}
setIsConversationFilterFocused={setIsConversationFilterFocused}
onSearchEnterClick={handleEnterSearchClick}
/>
}
hasHeader={!isPreferences}
Expand Down

0 comments on commit 40045de

Please sign in to comment.