import { TextInput, Select, Field } from '@rocket.chat/fuselage'; import { capitalize } from '@rocket.chat/string-helpers'; import React, { useMemo, useEffect, useState } from 'react'; import { useSetting } from '../contexts/SettingsContext'; import { useTranslation } from '../contexts/TranslationContext'; import { useComponentDidUpdate } from '../hooks/useComponentDidUpdate'; import { useForm } from '../hooks/useForm'; const CustomTextInput = ({ label, name, required, minLength, maxLength, setState, state, className, setCustomFieldsError = () => [] }) => { const t = useTranslation(); const [inputError, setInputError] = useState(''); const verify = useMemo(() => { const errors = []; if (!state && required) { errors.push(t('The_field_is_required', label || name)); } if (state.length < minLength && state.length > 0) { errors.push(t('Min_length_is', minLength)); } return errors.join(', '); }, [state, required, minLength, t, label, name]); useEffect(() => { setCustomFieldsError((oldErrors) => (verify ? [...oldErrors, { name }] : oldErrors.filter((item) => item.name !== name))); }, [name, setCustomFieldsError, verify]); useComponentDidUpdate(() => { setInputError(verify); }, [verify]); return useMemo( () => ( {label || t(name)} {required && '*'} setState(e.currentTarget.value)} /> {inputError} ), [className, label, t, name, required, inputError, maxLength, state, setState], ); }; const CustomSelect = ({ label, name, required, options = {}, setState, state, className, setCustomFieldsError = () => [] }) => { const t = useTranslation(); const [selectError, setSelectError] = useState(''); const mappedOptions = useMemo(() => Object.values(options).map((value) => [value, value]), [options]); const verify = useMemo( () => (!state.length && required ? t('The_field_is_required', label || name) : ''), [name, label, required, state.length, t], ); useEffect(() => { setCustomFieldsError((oldErrors) => (verify ? [...oldErrors, { name }] : oldErrors.filter((item) => item.name !== name))); }, [name, setCustomFieldsError, verify]); useComponentDidUpdate(() => { setSelectError(verify); }, [verify]); return useMemo( () => ( {label || t(name)} {required && '*'}