mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-04-03 14:27:20 +02:00
fix(input): normalize chat input text before submit Trim input text before checking if empty to show submit button as disabled
49 lines
1.6 KiB
TypeScript
49 lines
1.6 KiB
TypeScript
import React, { forwardRef } from 'react';
|
|
import { useWatch } from 'react-hook-form';
|
|
import type { Control } from 'react-hook-form';
|
|
import { SendIcon, TooltipAnchor } from '@librechat/client';
|
|
import { useLocalize } from '~/hooks';
|
|
import { cn } from '~/utils';
|
|
|
|
type SendButtonProps = {
|
|
disabled: boolean;
|
|
control: Control<{ text: string }>;
|
|
};
|
|
|
|
const SubmitButton = React.memo(
|
|
forwardRef((props: { disabled: boolean }, ref: React.ForwardedRef<HTMLButtonElement>) => {
|
|
const localize = useLocalize();
|
|
return (
|
|
<TooltipAnchor
|
|
description={localize('com_nav_send_message')}
|
|
render={
|
|
<button
|
|
ref={ref}
|
|
aria-label={localize('com_nav_send_message')}
|
|
id="send-button"
|
|
disabled={props.disabled}
|
|
className={cn(
|
|
'rounded-full bg-text-primary p-1.5 text-text-primary outline-offset-4 transition-all duration-200 disabled:cursor-not-allowed disabled:text-text-secondary disabled:opacity-10',
|
|
)}
|
|
data-testid="send-button"
|
|
type="submit"
|
|
>
|
|
<span className="" data-state="closed">
|
|
<SendIcon size={24} />
|
|
</span>
|
|
</button>
|
|
}
|
|
/>
|
|
);
|
|
}),
|
|
);
|
|
|
|
const SendButton = React.memo(
|
|
forwardRef((props: SendButtonProps, ref: React.ForwardedRef<HTMLButtonElement>) => {
|
|
const data = useWatch({ control: props.control });
|
|
const content = data?.text?.trim();
|
|
return <SubmitButton ref={ref} disabled={props.disabled || !content} />;
|
|
}),
|
|
);
|
|
|
|
export default SendButton;
|