@codegateinc/react-form-builder-v2
Advanced tools
Comparing version 1.2.16 to 1.2.17
@@ -8,7 +8,7 @@ type VoidFunction = () => void | ||
type Field<T> = { | ||
type Field<T, Required extends boolean = boolean> = { | ||
value: T, | ||
key: string, | ||
label?: string, | ||
isRequired: boolean, | ||
isRequired: Required, | ||
hasChange: boolean, | ||
@@ -28,7 +28,7 @@ placeholder?: string, | ||
export type FieldConfig<T> = { | ||
export type FieldConfig<T, Required extends boolean = boolean> = { | ||
key: string, | ||
label?: string, | ||
initialValue: T, | ||
isRequired: boolean, | ||
isRequired: Required, | ||
placeholder?: string, | ||
@@ -41,4 +41,14 @@ validateOnBlur?: boolean, | ||
export type InferForm<T extends () => Record<string, Field<any>>> = { | ||
[K in keyof ReturnType<T>]: RequiredFieldValue<ReturnType<T>, K> | ||
} | ||
type FieldValue<T, K extends keyof T> = T[K] extends Field<infer F> ? F : never | ||
type RequiredFieldValue<T, K extends keyof T> = T[K] extends Field<infer F> | ||
? T[K] extends Field<F, true> | ||
? NonNullable<F> | ||
: F | ||
: never | ||
type UseFormReturn<T> = { | ||
@@ -56,7 +66,7 @@ form: T, | ||
addFields(fields: Array<FieldConfig<any>>): void, | ||
removeFieldIds(fields: Array<string>) | ||
removeFieldIds(fields: Array<string>): void | ||
} | ||
type FormGateCallbacks<T> = { | ||
onSuccess(form: {[K in keyof T]: FieldValue<T, K>}): void, | ||
onSuccess(form: {[K in keyof T]: RequiredFieldValue<T, K>}): void, | ||
onError?(form: Record<keyof T, string>): void | ||
@@ -70,3 +80,3 @@ } | ||
declare function useField<T>(props: FieldConfig<T>): Field<T> | ||
declare function useField<T, Required extends boolean = boolean>(props: FieldConfig<T, Required>): Field<T, Required> | ||
@@ -73,0 +83,0 @@ export { |
@@ -6,3 +6,3 @@ { | ||
"typings": "index.d.ts", | ||
"version": "1.2.16", | ||
"version": "1.2.17", | ||
"main": "dist/index.js", | ||
@@ -9,0 +9,0 @@ "scripts": { |
246092
2062