完善通道创建功能,添加参数验证与格式化输出

This commit is contained in:
2025-04-14 16:00:46 +08:00
parent e928b5a270
commit 4315c8eba9
5 changed files with 233 additions and 36 deletions

View File

@@ -8,29 +8,30 @@ import {
ControllerProps,
SubmitHandler,
FieldValues, useFormContext, FieldPath, UseFormReturn, ControllerRenderProps,
ControllerFieldState, UseFormStateReturn, FieldError,
ControllerFieldState, UseFormStateReturn, FieldError, FieldErrors, SubmitErrorHandler,
} from 'react-hook-form'
import {merge} from '@/lib/utils'
import {Label} from '@/components/ui/label'
import {ComponentProps, createContext, ReactNode, useContext, useId} from 'react'
import {BaseSyntheticEvent, ComponentProps, createContext, ReactNode, useContext, useId} from 'react'
type FormProps<T extends FieldValues> = {
form: UseFormReturn<T>
onSubmit: SubmitHandler<T>
} & Omit<ComponentProps<'form'>, 'onSubmit'>
onError?: SubmitErrorHandler<T>
} & Omit<ComponentProps<'form'>, 'onSubmit' | 'onError'>
function Form<T extends FieldValues>(rawProps: FormProps<T>) {
const {children, onSubmit, ...props} = rawProps
const {children, onSubmit, onError, ...props} = rawProps
const form = props.form
return (
<FormProvider {...form}>
<form {...props} onSubmit={event => {
event.preventDefault()
form.handleSubmit(onSubmit)(event)
form.handleSubmit(onSubmit, onError)(event)
event.stopPropagation()
}}>
{children}