Skip to content

Commit 8e26a56

Browse files
committed
apply suggestions
1 parent 8f18314 commit 8e26a56

File tree

2 files changed

+26
-8
lines changed

2 files changed

+26
-8
lines changed

packages/component/src/Activity/private/FeedbackForm.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ function FeedbackForm({
6161
[postActivity, replyToId, feedbackType, handleReset, userFeedback]
6262
);
6363

64-
const handleChange = useCallback(
65-
(value: string) => {
66-
setUserFeedback(value);
64+
const handleChange: React.FormEventHandler<HTMLTextAreaElement> = useCallback(
65+
event => {
66+
setUserFeedback(event.currentTarget.value);
6767
},
6868
[setUserFeedback]
6969
);
@@ -83,7 +83,7 @@ function FeedbackForm({
8383
<form className={classNames('webchat__feedback-form', feedbackForm + '')} onSubmit={handleSubmit}>
8484
<MultiLineTextBox
8585
data-testid={testIds.feedbackSendBox}
86-
onChange={handleChange}
86+
onInput={handleChange}
8787
placeholder={localize('FEEDBACK_FORM_PLACEHOLDER')}
8888
ref={feedbackTextAreaRef}
8989
value={userFeedback}

packages/component/src/Activity/private/FeedbackTextArea.tsx

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
import { hooks } from 'botframework-webchat-api';
22
import classNames from 'classnames';
3-
import React, { forwardRef, Fragment, useCallback, type ChangeEventHandler, type KeyboardEventHandler } from 'react';
3+
import React, {
4+
forwardRef,
5+
Fragment,
6+
useCallback,
7+
useRef,
8+
type FormEventHandler,
9+
type KeyboardEventHandler
10+
} from 'react';
411
import useStyleSet from '../../hooks/useStyleSet';
512

613
const { useUIState } = hooks;
@@ -21,21 +28,30 @@ const TextArea = forwardRef<
2128
* This ensures the flow of focus did not sent to document body
2229
*/
2330
hidden?: boolean | undefined;
24-
onChange?: ChangeEventHandler<HTMLTextAreaElement> | undefined;
31+
onInput?: FormEventHandler<HTMLTextAreaElement> | undefined;
2532
placeholder?: string | undefined;
2633
startRows?: number | undefined;
2734
value?: string | undefined;
2835
}>
2936
>((props, ref) => {
3037
const [uiState] = useUIState();
3138
const [{ feedbackTextArea }] = useStyleSet();
39+
const isInCompositionRef = useRef<boolean>(false);
3240

3341
const disabled = uiState === 'disabled';
3442

43+
const handleCompositionEnd = useCallback(() => {
44+
isInCompositionRef.current = false;
45+
}, [isInCompositionRef]);
46+
47+
const handleCompositionStart = useCallback(() => {
48+
isInCompositionRef.current = true;
49+
}, [isInCompositionRef]);
50+
3551
const handleKeyDown = useCallback<KeyboardEventHandler<HTMLTextAreaElement>>(event => {
3652
// Shift+Enter adds a new line
3753
// Enter requests related form submission
38-
if (!event.shiftKey && event.key === 'Enter') {
54+
if (!event.shiftKey && event.key === 'Enter' && !isInCompositionRef.current) {
3955
event.preventDefault();
4056

4157
if ('form' in event.target && event.target.form instanceof HTMLFormElement) {
@@ -86,7 +102,9 @@ const TextArea = forwardRef<
86102
feedbackTextArea + ''
87103
)}
88104
data-testid={props['data-testid']}
89-
onChange={props.onChange}
105+
onCompositionEnd={handleCompositionEnd}
106+
onCompositionStart={handleCompositionStart}
107+
onInput={props.onInput}
90108
onKeyDown={handleKeyDown}
91109
placeholder={props.placeholder}
92110
readOnly={disabled}

0 commit comments

Comments
 (0)