diff --git a/components/sender/__tests__/index.test.tsx b/components/sender/__tests__/index.test.tsx index 08c1200d..b1f0d88b 100644 --- a/components/sender/__tests__/index.test.tsx +++ b/components/sender/__tests__/index.test.tsx @@ -82,10 +82,10 @@ describe('Sender Component', () => { ); fireEvent.change(container.querySelector('textarea')!, { target: { value: 'bamboo' } }); - expect(onChange).toHaveBeenCalledWith('bamboo'); + expect(onChange).toHaveBeenCalledWith('bamboo', {}); fireEvent.click(container.querySelector('button')!); - expect(onChange).toHaveBeenCalledWith(''); + expect(onChange).toHaveBeenCalledWith('', undefined); }); describe('submitType', () => { diff --git a/components/sender/index.en-US.md b/components/sender/index.en-US.md index 2492ff98..422fdcbd 100644 --- a/components/sender/index.en-US.md +++ b/components/sender/index.en-US.md @@ -49,7 +49,7 @@ Common props ref:[Common props](/docs/react/common-props) | submitType | Submit type | SubmitType | `enter` \| `shiftEnter` | - | | value | Input value | string | - | - | | onSubmit | Callback when click send button | (message: string) => void | - | - | -| onChange | Callback when input value changes | (value: string) => void | - | - | +| onChange | Callback when input value changes | (value: string, event?: React.FormEvent<`HTMLTextAreaElement`> \| React.ChangeEvent<`HTMLTextAreaElement`> ) => void | - | - | | onCancel | Callback when click cancel button | () => void | - | - | ```typescript | pure diff --git a/components/sender/index.tsx b/components/sender/index.tsx index 61345e7a..be3faf83 100644 --- a/components/sender/index.tsx +++ b/components/sender/index.tsx @@ -43,7 +43,10 @@ export interface SenderProps extends Pick void; - onChange?: (value: string) => void; + onChange?: ( + value: string, + event?: React.FormEvent | React.ChangeEvent, + ) => void; onCancel?: VoidFunction; onKeyDown?: React.KeyboardEventHandler; onPaste?: React.ClipboardEventHandler; @@ -142,11 +145,11 @@ function Sender(props: SenderProps, ref: React.Ref) { value, }); - const triggerValueChange = (nextValue: string) => { + const triggerValueChange: SenderProps['onChange'] = (nextValue, event) => { setInnerValue(nextValue); if (onChange) { - onChange(nextValue); + onChange(nextValue, event); } }; @@ -297,8 +300,11 @@ function Sender(props: SenderProps, ref: React.Ref) { className={classnames(inputCls, contextConfig.classNames.input, classNames.input)} autoSize={{ maxRows: 8 }} value={innerValue} - onChange={(e) => { - triggerValueChange((e.target as HTMLTextAreaElement).value); + onChange={(event) => { + triggerValueChange( + (event.target as HTMLTextAreaElement).value, + event as React.ChangeEvent, + ); triggerSpeech(true); }} onPressEnter={onInternalKeyPress} diff --git a/components/sender/index.zh-CN.md b/components/sender/index.zh-CN.md index 1a3f69ad..dfb521d8 100644 --- a/components/sender/index.zh-CN.md +++ b/components/sender/index.zh-CN.md @@ -50,7 +50,7 @@ coverDark: https://mdn.alipayobjects.com/huamei_iwk9zp/afts/img/A*cOfrS4fVkOMAAA | submitType | 提交模式 | SubmitType | `enter` \| `shiftEnter` | - | | value | 输入框值 | string | - | - | | onSubmit | 点击发送按钮的回调 | (message: string) => void | - | - | -| onChange | 输入框值改变的回调 | (value: string) => void | - | - | +| onChange | 输入框值改变的回调 | (value: string, event?: React.FormEvent<`HTMLTextAreaElement`> \| React.ChangeEvent<`HTMLTextAreaElement`> ) => void | - | - | | onCancel | 点击取消按钮的回调 | () => void | - | - | ```typescript | pure