utils.tsx29 lines · main
1import React, { ComponentPropsWithoutRef, ElementRef, forwardRef } from 'react'
2import { ControllerRenderProps, FieldPath, FieldValues } from 'react-hook-form'
3import { FormControl, FormField, FormItem } from 'ui'
4
5/**
6 * Handles react-hook-form field type for FormItem<name> components
7 */
8export interface FormItemProps<
9 TFieldValues extends FieldValues,
10 TName extends FieldPath<TFieldValues>,
11> {
12 field?: ControllerRenderProps<TFieldValues, TName>
13}
14
15/**
16 * Repeatable wrapper for FormItem<name> components
17 */
18const FormItemWrapper = forwardRef<
19 ElementRef<typeof FormItem>,
20 ComponentPropsWithoutRef<typeof FormItem> // Use any as placeholder types
21>(({ ...props }, ref) => (
22 <FormItem ref={ref} {...props}>
23 <FormControl>{props.children}</FormControl>
24 </FormItem>
25))
26
27FormItemWrapper.displayName = 'FormItemWrapper'
28
29export { FormItemWrapper }