@tanstack/react-form 1.23.9 → 1.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/createFormHook.cjs +1 -0
- package/dist/cjs/createFormHook.cjs.map +1 -1
- package/dist/cjs/index.cjs +0 -2
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +0 -1
- package/dist/cjs/types.d.cts +2 -1
- package/dist/cjs/useField.cjs +6 -3
- package/dist/cjs/useField.cjs.map +1 -1
- package/dist/cjs/useFieldGroup.cjs +1 -0
- package/dist/cjs/useFieldGroup.cjs.map +1 -1
- package/dist/cjs/useForm.cjs +1 -0
- package/dist/cjs/useForm.cjs.map +1 -1
- package/dist/esm/createFormHook.js +1 -0
- package/dist/esm/createFormHook.js.map +1 -1
- package/dist/esm/index.d.ts +0 -1
- package/dist/esm/index.js +1 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types.d.ts +2 -1
- package/dist/esm/useField.js +7 -4
- package/dist/esm/useField.js.map +1 -1
- package/dist/esm/useFieldGroup.js +1 -0
- package/dist/esm/useFieldGroup.js.map +1 -1
- package/dist/esm/useForm.js +1 -0
- package/dist/esm/useForm.js.map +1 -1
- package/package.json +4 -38
- package/src/createFormHook.tsx +1 -0
- package/src/index.ts +0 -1
- package/src/types.ts +21 -0
- package/src/useField.tsx +15 -4
- package/src/useFieldGroup.tsx +2 -0
- package/src/useForm.tsx +2 -0
- package/dist/cjs/nextjs/createServerValidate.cjs +0 -51
- package/dist/cjs/nextjs/createServerValidate.cjs.map +0 -1
- package/dist/cjs/nextjs/createServerValidate.d.cts +0 -9
- package/dist/cjs/nextjs/error.cjs +0 -11
- package/dist/cjs/nextjs/error.cjs.map +0 -1
- package/dist/cjs/nextjs/error.d.cts +0 -10
- package/dist/cjs/nextjs/index.cjs +0 -15
- package/dist/cjs/nextjs/index.cjs.map +0 -1
- package/dist/cjs/nextjs/index.d.cts +0 -4
- package/dist/cjs/nextjs/types.d.cts +0 -2
- package/dist/cjs/remix/createServerValidate.cjs +0 -51
- package/dist/cjs/remix/createServerValidate.cjs.map +0 -1
- package/dist/cjs/remix/createServerValidate.d.cts +0 -9
- package/dist/cjs/remix/error.cjs +0 -11
- package/dist/cjs/remix/error.cjs.map +0 -1
- package/dist/cjs/remix/error.d.cts +0 -10
- package/dist/cjs/remix/index.cjs +0 -15
- package/dist/cjs/remix/index.cjs.map +0 -1
- package/dist/cjs/remix/index.d.cts +0 -4
- package/dist/cjs/remix/types.d.cts +0 -2
- package/dist/cjs/start/createServerValidate.cjs +0 -53
- package/dist/cjs/start/createServerValidate.cjs.map +0 -1
- package/dist/cjs/start/createServerValidate.d.cts +0 -7
- package/dist/cjs/start/error.cjs +0 -12
- package/dist/cjs/start/error.cjs.map +0 -1
- package/dist/cjs/start/error.d.cts +0 -12
- package/dist/cjs/start/getFormData.cjs +0 -18
- package/dist/cjs/start/getFormData.cjs.map +0 -1
- package/dist/cjs/start/getFormData.d.cts +0 -13
- package/dist/cjs/start/index.cjs +0 -10
- package/dist/cjs/start/index.cjs.map +0 -1
- package/dist/cjs/start/index.d.cts +0 -4
- package/dist/cjs/start/types.d.cts +0 -2
- package/dist/cjs/start/utils.cjs +0 -21
- package/dist/cjs/start/utils.cjs.map +0 -1
- package/dist/cjs/start/utils.d.cts +0 -3
- package/dist/cjs/useTransform.cjs +0 -10
- package/dist/cjs/useTransform.cjs.map +0 -1
- package/dist/cjs/useTransform.d.cts +0 -2
- package/dist/esm/nextjs/createServerValidate.d.ts +0 -9
- package/dist/esm/nextjs/createServerValidate.js +0 -51
- package/dist/esm/nextjs/createServerValidate.js.map +0 -1
- package/dist/esm/nextjs/error.d.ts +0 -10
- package/dist/esm/nextjs/error.js +0 -11
- package/dist/esm/nextjs/error.js.map +0 -1
- package/dist/esm/nextjs/index.d.ts +0 -4
- package/dist/esm/nextjs/index.js +0 -9
- package/dist/esm/nextjs/index.js.map +0 -1
- package/dist/esm/nextjs/types.d.ts +0 -2
- package/dist/esm/remix/createServerValidate.d.ts +0 -9
- package/dist/esm/remix/createServerValidate.js +0 -51
- package/dist/esm/remix/createServerValidate.js.map +0 -1
- package/dist/esm/remix/error.d.ts +0 -10
- package/dist/esm/remix/error.js +0 -11
- package/dist/esm/remix/error.js.map +0 -1
- package/dist/esm/remix/index.d.ts +0 -4
- package/dist/esm/remix/index.js +0 -9
- package/dist/esm/remix/index.js.map +0 -1
- package/dist/esm/remix/types.d.ts +0 -2
- package/dist/esm/start/createServerValidate.d.ts +0 -7
- package/dist/esm/start/createServerValidate.js +0 -53
- package/dist/esm/start/createServerValidate.js.map +0 -1
- package/dist/esm/start/error.d.ts +0 -12
- package/dist/esm/start/error.js +0 -12
- package/dist/esm/start/error.js.map +0 -1
- package/dist/esm/start/getFormData.d.ts +0 -13
- package/dist/esm/start/getFormData.js +0 -18
- package/dist/esm/start/getFormData.js.map +0 -1
- package/dist/esm/start/index.d.ts +0 -4
- package/dist/esm/start/index.js +0 -10
- package/dist/esm/start/index.js.map +0 -1
- package/dist/esm/start/types.d.ts +0 -2
- package/dist/esm/start/utils.d.ts +0 -3
- package/dist/esm/start/utils.js +0 -21
- package/dist/esm/start/utils.js.map +0 -1
- package/dist/esm/useTransform.d.ts +0 -2
- package/dist/esm/useTransform.js +0 -10
- package/dist/esm/useTransform.js.map +0 -1
- package/src/nextjs/createServerValidate.ts +0 -134
- package/src/nextjs/error.ts +0 -25
- package/src/nextjs/index.ts +0 -5
- package/src/nextjs/types.ts +0 -21
- package/src/remix/createServerValidate.ts +0 -134
- package/src/remix/error.ts +0 -25
- package/src/remix/index.ts +0 -5
- package/src/remix/types.ts +0 -21
- package/src/start/createServerValidate.tsx +0 -138
- package/src/start/error.ts +0 -28
- package/src/start/getFormData.tsx +0 -22
- package/src/start/index.ts +0 -4
- package/src/start/types.ts +0 -21
- package/src/start/utils.ts +0 -23
- package/src/useTransform.ts +0 -17
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
isGlobalFormValidationError,
|
|
3
|
-
isStandardSchemaValidator,
|
|
4
|
-
standardSchemaValidators,
|
|
5
|
-
} from '@tanstack/form-core'
|
|
6
|
-
import { getHeader } from '@tanstack/react-start/server'
|
|
7
|
-
import { decode } from 'decode-formdata'
|
|
8
|
-
import { ServerValidateError } from './error'
|
|
9
|
-
import { setInternalTanStackCookie } from './utils'
|
|
10
|
-
import type { ServerFormState } from './types'
|
|
11
|
-
import type {
|
|
12
|
-
FormAsyncValidateOrFn,
|
|
13
|
-
FormOptions,
|
|
14
|
-
FormValidateAsyncFn,
|
|
15
|
-
FormValidateOrFn,
|
|
16
|
-
UnwrapFormAsyncValidateOrFn,
|
|
17
|
-
} from '@tanstack/form-core'
|
|
18
|
-
|
|
19
|
-
interface CreateServerValidateOptions<
|
|
20
|
-
TFormData,
|
|
21
|
-
TOnMount extends undefined | FormValidateOrFn<TFormData>,
|
|
22
|
-
TOnChange extends undefined | FormValidateOrFn<TFormData>,
|
|
23
|
-
TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
|
|
24
|
-
TOnBlur extends undefined | FormValidateOrFn<TFormData>,
|
|
25
|
-
TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
|
|
26
|
-
TOnSubmit extends undefined | FormValidateOrFn<TFormData>,
|
|
27
|
-
TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
|
|
28
|
-
TOnDynamic extends undefined | FormValidateOrFn<TFormData>,
|
|
29
|
-
TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
|
|
30
|
-
TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,
|
|
31
|
-
TSubmitMeta,
|
|
32
|
-
> extends FormOptions<
|
|
33
|
-
TFormData,
|
|
34
|
-
TOnMount,
|
|
35
|
-
TOnChange,
|
|
36
|
-
TOnChangeAsync,
|
|
37
|
-
TOnBlur,
|
|
38
|
-
TOnBlurAsync,
|
|
39
|
-
TOnSubmit,
|
|
40
|
-
TOnSubmitAsync,
|
|
41
|
-
TOnDynamic,
|
|
42
|
-
TOnDynamicAsync,
|
|
43
|
-
TOnServer,
|
|
44
|
-
TSubmitMeta
|
|
45
|
-
> {
|
|
46
|
-
onServerValidate: TOnServer
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export const createServerValidate =
|
|
50
|
-
<
|
|
51
|
-
TFormData,
|
|
52
|
-
TOnMount extends undefined | FormValidateOrFn<TFormData>,
|
|
53
|
-
TOnChange extends undefined | FormValidateOrFn<TFormData>,
|
|
54
|
-
TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
|
|
55
|
-
TOnBlur extends undefined | FormValidateOrFn<TFormData>,
|
|
56
|
-
TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
|
|
57
|
-
TOnSubmit extends undefined | FormValidateOrFn<TFormData>,
|
|
58
|
-
TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
|
|
59
|
-
TOnDynamic extends undefined | FormValidateOrFn<TFormData>,
|
|
60
|
-
TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>,
|
|
61
|
-
TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,
|
|
62
|
-
TSubmitMeta,
|
|
63
|
-
>(
|
|
64
|
-
defaultOpts: CreateServerValidateOptions<
|
|
65
|
-
TFormData,
|
|
66
|
-
TOnMount,
|
|
67
|
-
TOnChange,
|
|
68
|
-
TOnChangeAsync,
|
|
69
|
-
TOnBlur,
|
|
70
|
-
TOnBlurAsync,
|
|
71
|
-
TOnSubmit,
|
|
72
|
-
TOnSubmitAsync,
|
|
73
|
-
TOnDynamic,
|
|
74
|
-
TOnDynamicAsync,
|
|
75
|
-
TOnServer,
|
|
76
|
-
TSubmitMeta
|
|
77
|
-
>,
|
|
78
|
-
) =>
|
|
79
|
-
async (formData: FormData, info?: Parameters<typeof decode>[1]) => {
|
|
80
|
-
const { onServerValidate } = defaultOpts
|
|
81
|
-
|
|
82
|
-
const runValidator = async ({
|
|
83
|
-
value,
|
|
84
|
-
validationSource,
|
|
85
|
-
}: {
|
|
86
|
-
value: TFormData
|
|
87
|
-
validationSource: 'form'
|
|
88
|
-
}) => {
|
|
89
|
-
if (isStandardSchemaValidator(onServerValidate)) {
|
|
90
|
-
return await standardSchemaValidators.validateAsync(
|
|
91
|
-
{ value, validationSource },
|
|
92
|
-
onServerValidate,
|
|
93
|
-
)
|
|
94
|
-
}
|
|
95
|
-
return (onServerValidate as FormValidateAsyncFn<TFormData>)({
|
|
96
|
-
value,
|
|
97
|
-
signal: undefined as never,
|
|
98
|
-
formApi: undefined as never,
|
|
99
|
-
})
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
const referer = getHeader('referer')!
|
|
103
|
-
|
|
104
|
-
const data = decode(formData, info) as never as TFormData
|
|
105
|
-
|
|
106
|
-
const onServerError = (await runValidator({
|
|
107
|
-
value: data,
|
|
108
|
-
validationSource: 'form',
|
|
109
|
-
})) as UnwrapFormAsyncValidateOrFn<TOnServer> | undefined
|
|
110
|
-
|
|
111
|
-
if (!onServerError) return data
|
|
112
|
-
|
|
113
|
-
const onServerErrorVal = (
|
|
114
|
-
isGlobalFormValidationError(onServerError)
|
|
115
|
-
? onServerError.form
|
|
116
|
-
: onServerError
|
|
117
|
-
) as UnwrapFormAsyncValidateOrFn<TOnServer>
|
|
118
|
-
|
|
119
|
-
const formState: ServerFormState<TFormData, TOnServer> = {
|
|
120
|
-
errorMap: {
|
|
121
|
-
onServer: onServerError,
|
|
122
|
-
},
|
|
123
|
-
values: data,
|
|
124
|
-
errors: onServerErrorVal ? [onServerErrorVal] : [],
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
setInternalTanStackCookie(formState)
|
|
128
|
-
|
|
129
|
-
throw new ServerValidateError({
|
|
130
|
-
response: new Response('ok', {
|
|
131
|
-
headers: {
|
|
132
|
-
Location: referer,
|
|
133
|
-
},
|
|
134
|
-
status: 302,
|
|
135
|
-
}),
|
|
136
|
-
formState: formState,
|
|
137
|
-
})
|
|
138
|
-
}
|
package/src/start/error.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import type { ServerFormState } from './types'
|
|
2
|
-
import type { FormAsyncValidateOrFn } from '@tanstack/form-core'
|
|
3
|
-
|
|
4
|
-
interface ServerValidateErrorState<
|
|
5
|
-
TFormData,
|
|
6
|
-
TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,
|
|
7
|
-
> {
|
|
8
|
-
formState: ServerFormState<TFormData, TOnServer>
|
|
9
|
-
response: Response
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export class ServerValidateError<
|
|
13
|
-
TFormData,
|
|
14
|
-
TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,
|
|
15
|
-
>
|
|
16
|
-
extends Error
|
|
17
|
-
implements ServerValidateErrorState<TFormData, TOnServer>
|
|
18
|
-
{
|
|
19
|
-
formState: ServerFormState<TFormData, TOnServer>
|
|
20
|
-
response: Response
|
|
21
|
-
|
|
22
|
-
constructor(options: ServerValidateErrorState<TFormData, TOnServer>) {
|
|
23
|
-
super('Your form has errors. Please check the fields and try again.')
|
|
24
|
-
this.name = 'ServerValidateError'
|
|
25
|
-
this.response = options.response
|
|
26
|
-
this.formState = options.formState
|
|
27
|
-
}
|
|
28
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
deleteInternalTanStackCookie,
|
|
3
|
-
getInternalTanStackCookie,
|
|
4
|
-
} from './utils'
|
|
5
|
-
import type { ServerFormState } from './types'
|
|
6
|
-
|
|
7
|
-
export const initialFormState = {
|
|
8
|
-
errorMap: {
|
|
9
|
-
onServer: undefined,
|
|
10
|
-
},
|
|
11
|
-
errors: [],
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export const getFormData = async () => {
|
|
15
|
-
const data = getInternalTanStackCookie() as
|
|
16
|
-
| undefined
|
|
17
|
-
| ServerFormState<any, undefined>
|
|
18
|
-
// Delete the temporary cookie from the client after reading it
|
|
19
|
-
deleteInternalTanStackCookie()
|
|
20
|
-
if (!data) return initialFormState
|
|
21
|
-
return data
|
|
22
|
-
}
|
package/src/start/index.ts
DELETED
package/src/start/types.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { FormAsyncValidateOrFn, FormState } from '@tanstack/form-core'
|
|
2
|
-
|
|
3
|
-
export type ServerFormState<
|
|
4
|
-
TFormData,
|
|
5
|
-
TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>,
|
|
6
|
-
> = Pick<
|
|
7
|
-
FormState<
|
|
8
|
-
TFormData,
|
|
9
|
-
undefined,
|
|
10
|
-
undefined,
|
|
11
|
-
undefined,
|
|
12
|
-
undefined,
|
|
13
|
-
undefined,
|
|
14
|
-
undefined,
|
|
15
|
-
undefined,
|
|
16
|
-
undefined,
|
|
17
|
-
undefined,
|
|
18
|
-
TOnServer
|
|
19
|
-
>,
|
|
20
|
-
'values' | 'errors' | 'errorMap'
|
|
21
|
-
>
|
package/src/start/utils.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
deleteCookie,
|
|
3
|
-
getCookie,
|
|
4
|
-
setCookie,
|
|
5
|
-
} from '@tanstack/react-start/server'
|
|
6
|
-
import { parse, stringify } from 'devalue'
|
|
7
|
-
|
|
8
|
-
const _INTERNALS_COOKIE_NAME = '_tanstack_form_internals'
|
|
9
|
-
|
|
10
|
-
export const setInternalTanStackCookie = (data: any) => {
|
|
11
|
-
const cookie = stringify(data)
|
|
12
|
-
setCookie(_INTERNALS_COOKIE_NAME, cookie)
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export const getInternalTanStackCookie = () => {
|
|
16
|
-
const cookie = getCookie(_INTERNALS_COOKIE_NAME)
|
|
17
|
-
if (!cookie) return undefined
|
|
18
|
-
return parse(cookie)
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export const deleteInternalTanStackCookie = () => {
|
|
22
|
-
deleteCookie(_INTERNALS_COOKIE_NAME)
|
|
23
|
-
}
|
package/src/useTransform.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
AnyFormApi,
|
|
3
|
-
FormApi,
|
|
4
|
-
FormAsyncValidateOrFn,
|
|
5
|
-
FormTransform,
|
|
6
|
-
FormValidateOrFn,
|
|
7
|
-
} from '@tanstack/form-core'
|
|
8
|
-
|
|
9
|
-
export function useTransform(
|
|
10
|
-
fn: (formBase: AnyFormApi) => AnyFormApi,
|
|
11
|
-
deps: unknown[],
|
|
12
|
-
): FormTransform<any, any, any, any, any, any, any, any, any, any, any, any> {
|
|
13
|
-
return {
|
|
14
|
-
fn,
|
|
15
|
-
deps,
|
|
16
|
-
}
|
|
17
|
-
}
|