import { Field, FieldGroup, TextInput, FieldLabel, FieldRow, Box, FieldError } from '@rocket.chat/fuselage'; import { GenericModal } from '@rocket.chat/ui-client'; import { useEffect, useId } from 'react'; import { useForm, Controller } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; import { isValidLink } from '../room/MessageList/lib/isValidLink'; export type AddLinkComposerActionModalProps = { selectedText?: string; onConfirm: (url: string, text: string) => void; onClose: () => void; }; const AddLinkComposerActionModal = ({ selectedText, onClose, onConfirm }: AddLinkComposerActionModalProps) => { const { t } = useTranslation(); const textField = useId(); const urlField = useId(); const { handleSubmit, setFocus, control, formState } = useForm({ mode: 'onChange', defaultValues: { text: selectedText || '', url: '', }, }); useEffect(() => { setFocus(selectedText ? 'url' : 'text'); }, [selectedText, setFocus]); const onClickConfirm = ({ url, text }: { url: string; text: string }) => { onConfirm(url, text); }; const submit = handleSubmit(onClickConfirm); return ( void submit(e)} {...props} />} confirmDisabled={!formState.isValid} title={t('Add_link')} > {t('Text')} } /> {t('URL')} isValidLink(value) || t('Invalid_URL'), required: { value: true, message: t(`URL_is_required`), }, }} render={({ field }) => } /> {formState.errors.url?.message} ); }; export default AddLinkComposerActionModal;