Add Cmd/Ctrl+Enter to submit when Textarea is focused (#37821)

This commit is contained in:
diondiondion 2026-02-11 11:44:20 +01:00 committed by GitHub
parent c53bb3b33e
commit 8c2c94fa6c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,5 +1,5 @@
import type { ComponentPropsWithoutRef } from 'react'; import type { ComponentPropsWithoutRef } from 'react';
import { forwardRef } from 'react'; import { forwardRef, useCallback } from 'react';
import classNames from 'classnames'; import classNames from 'classnames';
@ -36,12 +36,26 @@ TextAreaField.displayName = 'TextAreaField';
export const TextArea = forwardRef< export const TextArea = forwardRef<
HTMLTextAreaElement, HTMLTextAreaElement,
ComponentPropsWithoutRef<'textarea'> ComponentPropsWithoutRef<'textarea'>
>(({ className, ...otherProps }, ref) => ( >(({ className, onKeyDown, ...otherProps }, ref) => {
<textarea const handleSubmitHotkey = useCallback(
{...otherProps} (e: React.KeyboardEvent<HTMLTextAreaElement>) => {
className={classNames(className, classes.input)} onKeyDown?.(e);
ref={ref} if (e.key === 'Enter' && (e.ctrlKey || e.metaKey)) {
/> const targetForm = e.currentTarget.form;
)); targetForm?.requestSubmit();
}
},
[onKeyDown],
);
return (
<textarea
{...otherProps}
onKeyDown={handleSubmitHotkey}
className={classNames(className, classes.input)}
ref={ref}
/>
);
});
TextArea.displayName = 'TextArea'; TextArea.displayName = 'TextArea';