Files
imphnen-frontend-service/libs/ui/src/organisms/controlled-field/controlled-input-field.tsx
T

34 lines
795 B
TypeScript
Raw Normal View History

2025-04-03 12:21:10 +07:00
import {
InputField,
TInputFieldProps,
} from '@imphnen-frontend-service/ui/molecules';
import {
FieldValues,
useController,
UseControllerProps,
} from 'react-hook-form';
export type TControlledInputFieldProps<T extends FieldValues> =
UseControllerProps<T> & TInputFieldProps;
export const ControlledInputField = <T extends FieldValues>(
props: TControlledInputFieldProps<T>
) => {
const { field, fieldState } = useController<T>(props);
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
const value =
props.type === 'number' ? Number(e.target.value) : e.target.value;
field.onChange(value);
};
2025-04-03 12:21:10 +07:00
return (
<InputField
error={fieldState.error?.message}
{...props}
{...field}
onChange={handleChange}
/>
2025-04-03 12:21:10 +07:00
);
};