RocketChat/Rocket.Chat

View on GitHub
apps/meteor/client/views/audit/components/tabs/UsersTab.tsx

Summary

Maintainability
A
0 mins
Test Coverage
import { Field, FieldLabel, FieldRow, FieldError } from '@rocket.chat/fuselage';
import { useTranslation } from '@rocket.chat/ui-contexts';
import type { ReactElement } from 'react';
import React from 'react';
import type { UseFormReturn } from 'react-hook-form';
import { useController } from 'react-hook-form';

import UserAutoCompleteMultiple from '../../../../components/UserAutoCompleteMultiple';
import type { AuditFields } from '../../hooks/useAuditForm';

type UsersTabProps = {
    form: UseFormReturn<AuditFields>;
};

const UsersTab = ({ form: { control } }: UsersTabProps): ReactElement => {
    const t = useTranslation();

    const { field: usersField, fieldState: usersFieldState } = useController({
        name: 'users',
        control,
        rules: {
            required: true,
            validate: (value) => {
                if (value.length < 1) {
                    return t('The_field_is_required', t('Users'));
                }
            },
        },
    });

    return (
        <Field flexShrink={1}>
            <FieldLabel>{t('Users')}</FieldLabel>
            <FieldRow>
                <UserAutoCompleteMultiple
                    error={!!usersFieldState.error}
                    value={usersField.value}
                    onChange={usersField.onChange}
                    placeholder={t('Username_Placeholder')}
                />
            </FieldRow>
            {usersFieldState.error?.type === 'required' && <FieldError>{t('The_field_is_required', t('Users'))}</FieldError>}
            {usersFieldState.error?.type === 'validate' && <FieldError>{usersFieldState.error.message}</FieldError>}
        </Field>
    );
};

export default UsersTab;