Skip to content

Commit 7e87140

Browse files
committed
fix: keep Enter key as reserved for message submission
1 parent 84bfba2 commit 7e87140

File tree

1 file changed

+37
-33
lines changed

1 file changed

+37
-33
lines changed

src/components/TextAreaComposer/TextAreaComposer.tsx

Lines changed: 37 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -122,43 +122,47 @@ export const TextAreaComposer = ({
122122
onKeyDown(event);
123123
return;
124124
}
125-
// todo: submit message with commands (giphy, ban @mention, etc)
126-
if (textComposer.suggestions) {
125+
126+
if (event.key === 'Enter') {
127+
// allow next line only on Shift + Enter. Enter is reserved for submission.
128+
event.preventDefault();
129+
}
130+
131+
if (
132+
textComposer.suggestions &&
133+
textComposer.suggestions.searchSource.items?.length
134+
) {
127135
if (event.key === 'Escape') return textComposer.closeSuggestions();
128136
const loadedItems = textComposer.suggestions.searchSource.items;
129-
if (loadedItems?.length) {
130-
if (event.key === 'Enter') {
131-
event.preventDefault();
132-
textComposer.handleSelect(loadedItems[focusedItemIndex]);
133-
}
134-
if (event.key === 'ArrowUp') {
135-
event.preventDefault();
136-
setFocusedItemIndex((prev) => {
137-
let nextIndex = prev - 1;
138-
if (suggestions?.searchSource.hasNext) {
139-
nextIndex = prev;
140-
} else if (nextIndex < 0) {
141-
nextIndex = loadedItems.length - 1;
142-
}
143-
return nextIndex;
144-
});
145-
}
146-
if (event.key === 'ArrowDown') {
147-
event.preventDefault();
148-
setFocusedItemIndex((prev) => {
149-
let nextIndex = prev + 1;
150-
if (suggestions?.searchSource.hasNext) {
151-
nextIndex = prev;
152-
} else if (nextIndex >= loadedItems.length) {
153-
nextIndex = 0;
154-
}
155-
156-
return nextIndex;
157-
});
158-
}
137+
if (event.key === 'Enter') {
138+
textComposer.handleSelect(loadedItems[focusedItemIndex]);
139+
}
140+
if (event.key === 'ArrowUp') {
141+
event.preventDefault();
142+
setFocusedItemIndex((prev) => {
143+
let nextIndex = prev - 1;
144+
if (suggestions?.searchSource.hasNext) {
145+
nextIndex = prev;
146+
} else if (nextIndex < 0) {
147+
nextIndex = loadedItems.length - 1;
148+
}
149+
return nextIndex;
150+
});
151+
}
152+
if (event.key === 'ArrowDown') {
153+
event.preventDefault();
154+
setFocusedItemIndex((prev) => {
155+
let nextIndex = prev + 1;
156+
if (suggestions?.searchSource.hasNext) {
157+
nextIndex = prev;
158+
} else if (nextIndex >= loadedItems.length) {
159+
nextIndex = 0;
160+
}
161+
162+
return nextIndex;
163+
});
159164
}
160165
} else if (shouldSubmit(event) && textareaRef.current) {
161-
event.preventDefault();
162166
handleSubmit();
163167
textareaRef.current.selectionEnd = 0;
164168
}

0 commit comments

Comments
 (0)