import React, { useCallback, useMemo } from 'react'; import { Field, TextInput, TextAreaInput, MultiSelectFiltered, Box, ToggleSwitch, Icon } from '@rocket.chat/fuselage'; import { useTranslation } from '../../contexts/TranslationContext'; import { isEmail } from '../../../app/utils/lib/isEmail.js'; import VerticalBar from '../../components/basic/VerticalBar'; import CustomFieldsForm from './CustomFieldsForm'; export default function UserForm({ formValues, formHandlers, availableRoles, append, prepend, ...props }) { const t = useTranslation(); const { name, username, email, verified, statusText, bio, password, setRandomPassword, requirePasswordChange, roles, customFields, joinDefaultChannels, sendWelcomeEmail, } = formValues; const { handleName, handleUsername, handleEmail, handleVerified, handleStatusText, handleBio, handlePassword, handleSetRandomPassword, handleRequirePasswordChange, handleRoles, handleCustomFields, handleJoinDefaultChannels, handleSendWelcomeEmail, } = formHandlers; return e.preventDefault(), [])} { ...props }> { prepend } {useMemo(() => {t('Name')} , [name, handleName])} {useMemo(() => {t('Username')} }/> , [username, handleUsername])} {useMemo(() => {t('Email')} 0 ? 'error' : undefined} onChange={handleEmail} addon={}/> {t('Verified')} , [email, handleEmail, verified, handleVerified])} {useMemo(() => {t('StatusMessage')} }/> , [statusText, handleStatusText])} {useMemo(() => {t('Bio')} }/> , [bio, handleBio])} {useMemo(() => {t('Password')} }/> , [password, handlePassword])} {useMemo(() => {t('Require_password_change')} , [requirePasswordChange, handleRequirePasswordChange])} {useMemo(() => {t('Set_random_password_and_send_by_email')} , [setRandomPassword, handleSetRandomPassword])} {useMemo(() => {t('Roles')} , [...roles, handleRoles, JSON.stringify(availableRoles)])} {useMemo(() => handleJoinDefaultChannels && {t('Join_default_channels')} , [joinDefaultChannels, handleJoinDefaultChannels])} {useMemo(() => handleSendWelcomeEmail && {t('Send_welcome_email')} , [sendWelcomeEmail, handleSendWelcomeEmail])} { append } ; }