@bysages/react 0.2.1 → 0.2.3
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/ai-response-jZy-0Tvv.mjs +127 -0
- package/dist/chevron-BeHvt46K.mjs +17 -0
- package/dist/components/accordion/index.d.mts +7 -0
- package/dist/components/accordion/index.mjs +10 -0
- package/dist/components/affix/index.d.mts +20 -0
- package/dist/components/affix/index.mjs +18 -0
- package/dist/components/ai/index.d.mts +2 -0
- package/dist/components/ai/index.mjs +65 -0
- package/dist/components/ai-action/index.d.mts +14 -0
- package/dist/components/ai-action/index.mjs +18 -0
- package/dist/components/ai-attachments/index.d.mts +19 -0
- package/dist/components/ai-attachments/index.mjs +106 -0
- package/dist/components/ai-message/index.d.mts +11 -0
- package/dist/components/ai-message/index.mjs +15 -0
- package/dist/components/ai-prompt-input/index.d.mts +47 -0
- package/dist/components/ai-prompt-input/index.mjs +135 -0
- package/dist/components/ai-reasoning/index.d.mts +13 -0
- package/dist/components/ai-reasoning/index.mjs +19 -0
- package/dist/components/ai-response/index.d.mts +22 -0
- package/dist/components/ai-response/index.mjs +2 -0
- package/dist/components/ai-source/index.d.mts +17 -0
- package/dist/components/ai-source/index.mjs +27 -0
- package/dist/components/ai-suggestion/index.d.mts +13 -0
- package/dist/components/ai-suggestion/index.mjs +16 -0
- package/dist/components/ai-tool/index.d.mts +21 -0
- package/dist/components/ai-tool/index.mjs +36 -0
- package/dist/components/alert/index.d.mts +23 -0
- package/dist/components/alert/index.mjs +80 -0
- package/dist/components/angle-slider/index.d.mts +16 -0
- package/dist/components/angle-slider/index.mjs +21 -0
- package/dist/components/aspect-ratio/index.d.mts +10 -0
- package/dist/components/aspect-ratio/index.mjs +17 -0
- package/dist/components/autocomplete/index.d.mts +21 -0
- package/dist/components/autocomplete/index.mjs +35 -0
- package/dist/components/avatar/index.d.mts +20 -0
- package/dist/components/avatar/index.mjs +14 -0
- package/dist/components/avatar-group/index.d.mts +11 -0
- package/dist/components/avatar-group/index.mjs +15 -0
- package/dist/components/back-top/index.d.mts +29 -0
- package/dist/components/back-top/index.mjs +82 -0
- package/dist/components/badge/index.d.mts +10 -0
- package/dist/components/badge/index.mjs +15 -0
- package/dist/components/banner/index.d.mts +31 -0
- package/dist/components/banner/index.mjs +63 -0
- package/dist/components/breadcrumb/index.d.mts +32 -0
- package/dist/components/breadcrumb/index.mjs +35 -0
- package/dist/components/button/index.d.mts +19 -0
- package/dist/components/button/index.mjs +29 -0
- package/dist/components/button-group/index.d.mts +24 -0
- package/dist/components/button-group/index.mjs +25 -0
- package/dist/components/calendar/index.d.mts +17 -0
- package/dist/components/calendar/index.mjs +96 -0
- package/dist/components/card/index.d.mts +46 -0
- package/dist/components/card/index.mjs +44 -0
- package/dist/components/carousel/index.d.mts +9 -0
- package/dist/components/carousel/index.mjs +12 -0
- package/dist/components/cascade-select/index.d.mts +31 -0
- package/dist/components/cascade-select/index.mjs +223 -0
- package/dist/components/checkbox/index.d.mts +16 -0
- package/dist/components/checkbox/index.mjs +21 -0
- package/dist/components/checkbox-group/index.d.mts +28 -0
- package/dist/components/checkbox-group/index.mjs +65 -0
- package/dist/components/chip/index.d.mts +12 -0
- package/dist/components/chip/index.mjs +17 -0
- package/dist/components/client-only/index.d.mts +2 -0
- package/dist/components/client-only/index.mjs +2 -0
- package/dist/components/clipboard/index.d.mts +17 -0
- package/dist/components/clipboard/index.mjs +17 -0
- package/dist/components/collapsible/index.d.mts +7 -0
- package/dist/components/collapsible/index.mjs +10 -0
- package/dist/components/collection/index.d.mts +2 -0
- package/dist/components/collection/index.mjs +2 -0
- package/dist/components/color-picker/index.d.mts +20 -0
- package/dist/components/color-picker/index.mjs +25 -0
- package/dist/components/combobox/index.d.mts +17 -0
- package/dist/components/combobox/index.mjs +18 -0
- package/dist/components/command/index.d.mts +43 -0
- package/dist/components/command/index.mjs +137 -0
- package/dist/components/comment/index.d.mts +17 -0
- package/dist/components/comment/index.mjs +47 -0
- package/dist/components/config-provider/index.d.mts +46 -0
- package/dist/components/config-provider/index.mjs +41 -0
- package/dist/components/container/index.d.mts +13 -0
- package/dist/components/container/index.mjs +15 -0
- package/dist/components/date-input/index.d.mts +17 -0
- package/dist/components/date-input/index.mjs +21 -0
- package/dist/components/date-picker/index.d.mts +19 -0
- package/dist/components/date-picker/index.mjs +23 -0
- package/dist/components/descriptions/index.d.mts +25 -0
- package/dist/components/descriptions/index.mjs +32 -0
- package/dist/components/dialog/index.d.mts +9 -0
- package/dist/components/dialog/index.mjs +11 -0
- package/dist/components/download-trigger/index.d.mts +2 -0
- package/dist/components/download-trigger/index.mjs +2 -0
- package/dist/components/drawer/index.d.mts +9 -0
- package/dist/components/drawer/index.mjs +12 -0
- package/dist/components/dynamic-input/index.d.mts +28 -0
- package/dist/components/dynamic-input/index.mjs +83 -0
- package/dist/components/editable/index.d.mts +16 -0
- package/dist/components/editable/index.mjs +17 -0
- package/dist/components/ellipsis/index.d.mts +10 -0
- package/dist/components/ellipsis/index.mjs +19 -0
- package/dist/components/empty/index.d.mts +28 -0
- package/dist/components/empty/index.mjs +32 -0
- package/dist/components/field/index.d.mts +8 -0
- package/dist/components/field/index.mjs +11 -0
- package/dist/components/fieldset/index.d.mts +7 -0
- package/dist/components/fieldset/index.mjs +10 -0
- package/dist/components/file-upload/index.d.mts +18 -0
- package/dist/components/file-upload/index.mjs +23 -0
- package/dist/components/float-button/index.d.mts +59 -0
- package/dist/components/float-button/index.mjs +90 -0
- package/dist/components/floating-panel/index.d.mts +9 -0
- package/dist/components/floating-panel/index.mjs +12 -0
- package/dist/components/focus-trap/index.d.mts +2 -0
- package/dist/components/focus-trap/index.mjs +2 -0
- package/dist/components/form/index.d.mts +2 -0
- package/dist/components/form/index.mjs +67 -0
- package/dist/components/format/index.d.mts +9 -0
- package/dist/components/format/index.mjs +10 -0
- package/dist/components/frame/index.d.mts +10 -0
- package/dist/components/frame/index.mjs +12 -0
- package/dist/components/grid/index.d.mts +13 -0
- package/dist/components/grid/index.mjs +31 -0
- package/dist/components/highlight/index.d.mts +7 -0
- package/dist/components/highlight/index.mjs +11 -0
- package/dist/components/hover-card/index.d.mts +7 -0
- package/dist/components/hover-card/index.mjs +10 -0
- package/dist/components/icon/index.d.mts +19 -0
- package/dist/components/icon/index.mjs +26 -0
- package/dist/components/image/index.d.mts +17 -0
- package/dist/components/image/index.mjs +57 -0
- package/dist/components/image-cropper/index.d.mts +8 -0
- package/dist/components/image-cropper/index.mjs +11 -0
- package/dist/components/image-viewer/index.d.mts +18 -0
- package/dist/components/image-viewer/index.mjs +110 -0
- package/dist/components/input/index.d.mts +16 -0
- package/dist/components/input/index.mjs +21 -0
- package/dist/components/input-group/index.d.mts +17 -0
- package/dist/components/input-group/index.mjs +31 -0
- package/dist/components/json-tree-view/index.d.mts +7 -0
- package/dist/components/json-tree-view/index.mjs +10 -0
- package/dist/components/kbd/index.d.mts +6 -0
- package/dist/components/kbd/index.mjs +14 -0
- package/dist/components/layout/index.d.mts +63 -0
- package/dist/components/layout/index.mjs +133 -0
- package/dist/components/link/index.d.mts +10 -0
- package/dist/components/link/index.mjs +18 -0
- package/dist/components/list/index.d.mts +39 -0
- package/dist/components/list/index.mjs +66 -0
- package/dist/components/listbox/index.d.mts +18 -0
- package/dist/components/listbox/index.mjs +18 -0
- package/dist/components/marquee/index.d.mts +7 -0
- package/dist/components/marquee/index.mjs +10 -0
- package/dist/components/masonry/index.d.mts +11 -0
- package/dist/components/masonry/index.mjs +29 -0
- package/dist/components/mentions/index.d.mts +2 -0
- package/dist/components/mentions/index.mjs +2 -0
- package/dist/components/menu/index.d.mts +20 -0
- package/dist/components/menu/index.mjs +37 -0
- package/dist/components/menubar/index.d.mts +32 -0
- package/dist/components/menubar/index.mjs +35 -0
- package/dist/components/meter/index.d.mts +26 -0
- package/dist/components/meter/index.mjs +59 -0
- package/dist/components/navigation-menu/index.d.mts +8 -0
- package/dist/components/navigation-menu/index.mjs +11 -0
- package/dist/components/number-input/index.d.mts +16 -0
- package/dist/components/number-input/index.mjs +21 -0
- package/dist/components/page-header/index.d.mts +32 -0
- package/dist/components/page-header/index.mjs +34 -0
- package/dist/components/pagination/index.d.mts +18 -0
- package/dist/components/pagination/index.mjs +23 -0
- package/dist/components/password-input/index.d.mts +16 -0
- package/dist/components/password-input/index.mjs +21 -0
- package/dist/components/pin-input/index.d.mts +15 -0
- package/dist/components/pin-input/index.mjs +20 -0
- package/dist/components/popconfirm/index.d.mts +20 -0
- package/dist/components/popconfirm/index.mjs +44 -0
- package/dist/components/popover/index.d.mts +8 -0
- package/dist/components/popover/index.mjs +11 -0
- package/dist/components/presence/index.d.mts +2 -0
- package/dist/components/presence/index.mjs +2 -0
- package/dist/components/progress/index.d.mts +16 -0
- package/dist/components/progress/index.mjs +21 -0
- package/dist/components/progress-group/index.d.mts +22 -0
- package/dist/components/progress-group/index.mjs +56 -0
- package/dist/components/qr-code/index.d.mts +8 -0
- package/dist/components/qr-code/index.mjs +11 -0
- package/dist/components/radio-group/index.d.mts +16 -0
- package/dist/components/radio-group/index.mjs +21 -0
- package/dist/components/rating-group/index.d.mts +16 -0
- package/dist/components/rating-group/index.mjs +21 -0
- package/dist/components/scroll-area/index.d.mts +7 -0
- package/dist/components/scroll-area/index.mjs +10 -0
- package/dist/components/segment-group/index.d.mts +18 -0
- package/dist/components/segment-group/index.mjs +20 -0
- package/dist/components/select/index.d.mts +17 -0
- package/dist/components/select/index.mjs +18 -0
- package/dist/components/separator/index.d.mts +11 -0
- package/dist/components/separator/index.mjs +16 -0
- package/dist/components/signature-pad/index.d.mts +8 -0
- package/dist/components/signature-pad/index.mjs +11 -0
- package/dist/components/skeleton/index.d.mts +7 -0
- package/dist/components/skeleton/index.mjs +13 -0
- package/dist/components/slider/index.d.mts +16 -0
- package/dist/components/slider/index.mjs +21 -0
- package/dist/components/spinner/index.d.mts +9 -0
- package/dist/components/spinner/index.mjs +36 -0
- package/dist/components/split-button/index.d.mts +36 -0
- package/dist/components/split-button/index.mjs +71 -0
- package/dist/components/splitter/index.d.mts +7 -0
- package/dist/components/splitter/index.mjs +10 -0
- package/dist/components/stack/index.d.mts +11 -0
- package/dist/components/stack/index.mjs +32 -0
- package/dist/components/stat/index.d.mts +29 -0
- package/dist/components/stat/index.mjs +37 -0
- package/dist/components/steps/index.d.mts +19 -0
- package/dist/components/steps/index.mjs +24 -0
- package/dist/components/swap/index.d.mts +8 -0
- package/dist/components/swap/index.mjs +11 -0
- package/dist/components/switch/index.d.mts +16 -0
- package/dist/components/switch/index.mjs +21 -0
- package/dist/components/table/index.d.mts +79 -0
- package/dist/components/table/index.mjs +688 -0
- package/dist/components/tabs/index.d.mts +18 -0
- package/dist/components/tabs/index.mjs +23 -0
- package/dist/components/tags-input/index.d.mts +17 -0
- package/dist/components/tags-input/index.mjs +22 -0
- package/dist/components/textarea/index.d.mts +14 -0
- package/dist/components/textarea/index.mjs +20 -0
- package/dist/components/timeline/index.d.mts +24 -0
- package/dist/components/timeline/index.mjs +30 -0
- package/dist/components/timer/index.d.mts +8 -0
- package/dist/components/timer/index.mjs +11 -0
- package/dist/components/toast/index.d.mts +11 -0
- package/dist/components/toast/index.mjs +13 -0
- package/dist/components/toc/index.d.mts +7 -0
- package/dist/components/toc/index.mjs +10 -0
- package/dist/components/toggle/index.d.mts +7 -0
- package/dist/components/toggle/index.mjs +10 -0
- package/dist/components/toggle-group/index.d.mts +15 -0
- package/dist/components/toggle-group/index.mjs +20 -0
- package/dist/components/tooltip/index.d.mts +7 -0
- package/dist/components/tooltip/index.mjs +10 -0
- package/dist/components/tour/index.d.mts +11 -0
- package/dist/components/tour/index.mjs +13 -0
- package/dist/components/transfer/index.d.mts +23 -0
- package/dist/components/transfer/index.mjs +154 -0
- package/dist/components/tree-select/index.d.mts +28 -0
- package/dist/components/tree-select/index.mjs +157 -0
- package/dist/components/tree-view/index.d.mts +19 -0
- package/dist/components/tree-view/index.mjs +18 -0
- package/dist/components/typography/index.d.mts +32 -0
- package/dist/components/typography/index.mjs +34 -0
- package/dist/components/watermark/index.d.mts +16 -0
- package/dist/components/watermark/index.mjs +80 -0
- package/dist/index-DaAbbSz9.d.mts +13416 -0
- package/dist/index-Uefyw7Im.d.mts +108 -0
- package/dist/index-uPyYiWaL.d.mts +1813 -0
- package/dist/index.d.mts +128 -15218
- package/dist/index.mjs +128 -4556
- package/dist/mentions-DMIBCBOd.mjs +181 -0
- package/package.json +77 -3
|
@@ -0,0 +1,1813 @@
|
|
|
1
|
+
import { ComponentType, HTMLAttributes, ReactNode } from "react";
|
|
2
|
+
import { useField, useForm } from "@tanstack/react-form";
|
|
3
|
+
//#region ../../node_modules/.pnpm/@tanstack+form-core@1.33.5/node_modules/@tanstack/form-core/dist/esm/standardSchemaValidator.d.ts
|
|
4
|
+
type TStandardSchemaValidatorValue<TData, TSource extends ValidationSource = ValidationSource> = {
|
|
5
|
+
value: TData;
|
|
6
|
+
validationSource: TSource;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* The Standard Schema interface.
|
|
10
|
+
*/
|
|
11
|
+
type StandardSchemaV1<Input = unknown, Output = Input> = {
|
|
12
|
+
/**
|
|
13
|
+
* The Standard Schema properties.
|
|
14
|
+
*/
|
|
15
|
+
readonly '~standard': StandardSchemaV1Props<Input, Output>;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* The Standard Schema properties interface.
|
|
19
|
+
*/
|
|
20
|
+
interface StandardSchemaV1Props<Input = unknown, Output = Input> {
|
|
21
|
+
/**
|
|
22
|
+
* The version number of the standard.
|
|
23
|
+
*/
|
|
24
|
+
readonly version: 1;
|
|
25
|
+
/**
|
|
26
|
+
* The vendor name of the schema library.
|
|
27
|
+
*/
|
|
28
|
+
readonly vendor: string;
|
|
29
|
+
/**
|
|
30
|
+
* Validates unknown input values.
|
|
31
|
+
*/
|
|
32
|
+
readonly validate: (value: unknown) => StandardSchemaV1Result<Output> | Promise<StandardSchemaV1Result<Output>>;
|
|
33
|
+
/**
|
|
34
|
+
* Inferred types associated with the schema.
|
|
35
|
+
*/
|
|
36
|
+
readonly types?: StandardSchemaV1Types<Input, Output> | undefined;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The result interface of the validate function.
|
|
40
|
+
*/
|
|
41
|
+
type StandardSchemaV1Result<Output> = StandardSchemaV1SuccessResult<Output> | StandardSchemaV1FailureResult;
|
|
42
|
+
/**
|
|
43
|
+
* The result interface if validation succeeds.
|
|
44
|
+
*/
|
|
45
|
+
interface StandardSchemaV1SuccessResult<Output> {
|
|
46
|
+
/**
|
|
47
|
+
* The typed output value.
|
|
48
|
+
*/
|
|
49
|
+
readonly value: Output;
|
|
50
|
+
/**
|
|
51
|
+
* The non-existent issues.
|
|
52
|
+
*/
|
|
53
|
+
readonly issues?: undefined;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The result interface if validation fails.
|
|
57
|
+
*/
|
|
58
|
+
interface StandardSchemaV1FailureResult {
|
|
59
|
+
/**
|
|
60
|
+
* The issues of failed validation.
|
|
61
|
+
*/
|
|
62
|
+
readonly issues: ReadonlyArray<StandardSchemaV1Issue>;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The issue interface of the failure output.
|
|
66
|
+
*/
|
|
67
|
+
interface StandardSchemaV1Issue {
|
|
68
|
+
/**
|
|
69
|
+
* The error message of the issue.
|
|
70
|
+
*/
|
|
71
|
+
readonly message: string;
|
|
72
|
+
/**
|
|
73
|
+
* The path of the issue, if any.
|
|
74
|
+
*/
|
|
75
|
+
readonly path?: ReadonlyArray<PropertyKey | StandardSchemaV1PathSegment> | undefined;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* The path segment interface of the issue.
|
|
79
|
+
*/
|
|
80
|
+
interface StandardSchemaV1PathSegment {
|
|
81
|
+
/**
|
|
82
|
+
* The key representing a path segment.
|
|
83
|
+
*/
|
|
84
|
+
readonly key: PropertyKey;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* The Standard Schema types interface.
|
|
88
|
+
*/
|
|
89
|
+
interface StandardSchemaV1Types<Input = unknown, Output = Input> {
|
|
90
|
+
/**
|
|
91
|
+
* The input type of the schema.
|
|
92
|
+
*/
|
|
93
|
+
readonly input: Input;
|
|
94
|
+
/**
|
|
95
|
+
* The output type of the schema.
|
|
96
|
+
*/
|
|
97
|
+
readonly output: Output;
|
|
98
|
+
}
|
|
99
|
+
//#endregion
|
|
100
|
+
//#region ../../node_modules/.pnpm/@tanstack+store@0.11.1/node_modules/@tanstack/store/dist/types.d.ts
|
|
101
|
+
type Observer<T> = {
|
|
102
|
+
next?: (value: T) => void;
|
|
103
|
+
error?: (err: unknown) => void;
|
|
104
|
+
complete?: () => void;
|
|
105
|
+
};
|
|
106
|
+
interface Subscription {
|
|
107
|
+
unsubscribe: () => void;
|
|
108
|
+
}
|
|
109
|
+
//#endregion
|
|
110
|
+
//#region ../../node_modules/.pnpm/@tanstack+store@0.11.1/node_modules/@tanstack/store/dist/store.d.ts
|
|
111
|
+
//#region src/store.d.ts
|
|
112
|
+
type StoreAction = (...args: Array<any>) => any;
|
|
113
|
+
type StoreActionMap = Record<string, StoreAction>;
|
|
114
|
+
type StoreActionsFactory<T, TActions extends StoreActionMap> = (store: {
|
|
115
|
+
setState: Store<T>['setState'];
|
|
116
|
+
get: Store<T>['get'];
|
|
117
|
+
}) => TActions;
|
|
118
|
+
type NonFunction<T> = T extends ((...args: Array<any>) => any) ? never : T;
|
|
119
|
+
declare class Store<T, TActions extends StoreActionMap = never> {
|
|
120
|
+
private atom;
|
|
121
|
+
readonly actions: TActions;
|
|
122
|
+
constructor(getValue: (prev?: NoInfer<T>) => T);
|
|
123
|
+
constructor(initialValue: T);
|
|
124
|
+
constructor(initialValue: NonFunction<T>, actionsFactory: StoreActionsFactory<T, TActions>);
|
|
125
|
+
setState(updater: (prev: T) => T): void;
|
|
126
|
+
get state(): T;
|
|
127
|
+
get(): T;
|
|
128
|
+
subscribe(observerOrFn: Observer<T> | ((value: T) => void)): Subscription;
|
|
129
|
+
}
|
|
130
|
+
declare class ReadonlyStore<T> implements Omit<Store<T>, 'setState' | 'actions'> {
|
|
131
|
+
private atom;
|
|
132
|
+
constructor(getValue: (prev?: NoInfer<T>) => T);
|
|
133
|
+
constructor(initialValue: T);
|
|
134
|
+
get state(): T;
|
|
135
|
+
get(): T;
|
|
136
|
+
subscribe(observerOrFn: Observer<T> | ((value: T) => void)): Subscription;
|
|
137
|
+
}
|
|
138
|
+
//#endregion
|
|
139
|
+
//#region ../../node_modules/.pnpm/@tanstack+form-core@1.33.5/node_modules/@tanstack/form-core/dist/esm/util-types.d.ts
|
|
140
|
+
/**
|
|
141
|
+
* @private
|
|
142
|
+
*/
|
|
143
|
+
type UnwrapOneLevelOfArray<T> = T extends (infer U)[] ? U : T;
|
|
144
|
+
/**
|
|
145
|
+
* @private
|
|
146
|
+
* Helper type that rejects synchronous validators that return Promises.
|
|
147
|
+
* If the validator is a function returning a Promise, the type becomes `never`.
|
|
148
|
+
* Uses infer to extract the return type and handles `any` specially to avoid
|
|
149
|
+
* rejecting mock functions and other uses of `any`.
|
|
150
|
+
*/
|
|
151
|
+
type RejectPromiseValidator<T> = T extends ((...args: any[]) => infer R) ? 0 extends 1 & R ? T : [R] extends [Promise<any> | PromiseLike<any>] ? never : T : T;
|
|
152
|
+
interface AnyDeepKeyAndValue<K extends string = string, V extends any = any> {
|
|
153
|
+
key: K;
|
|
154
|
+
value: V;
|
|
155
|
+
}
|
|
156
|
+
type ArrayAccessor<TParent extends AnyDeepKeyAndValue> = `${TParent['key'] extends never ? '' : TParent['key']}[${number}]`;
|
|
157
|
+
interface ArrayDeepKeyAndValue<in out TParent extends AnyDeepKeyAndValue, in out T extends ReadonlyArray<any>> extends AnyDeepKeyAndValue {
|
|
158
|
+
key: ArrayAccessor<TParent>;
|
|
159
|
+
value: T[number] | Nullable<TParent['value']>;
|
|
160
|
+
}
|
|
161
|
+
type DeepKeyAndValueArray<TParent extends AnyDeepKeyAndValue, T extends ReadonlyArray<any>, TAcc> = DeepKeysAndValuesImpl<NonNullable<T[number]>, ArrayDeepKeyAndValue<TParent, T>, TAcc | ArrayDeepKeyAndValue<TParent, T>>;
|
|
162
|
+
type TupleAccessor<TParent extends AnyDeepKeyAndValue, TKey extends string> = `${TParent['key'] extends never ? '' : TParent['key']}[${TKey}]`;
|
|
163
|
+
interface TupleDeepKeyAndValue<in out TParent extends AnyDeepKeyAndValue, in out T, in out TKey extends AllTupleKeys<T>> extends AnyDeepKeyAndValue {
|
|
164
|
+
key: TupleAccessor<TParent, TKey>;
|
|
165
|
+
value: T[TKey] | Nullable<TParent['value']>;
|
|
166
|
+
}
|
|
167
|
+
type AllTupleKeys<T> = T extends any ? keyof T & `${number}` : never;
|
|
168
|
+
type DeepKeyAndValueTuple<TParent extends AnyDeepKeyAndValue, T extends ReadonlyArray<any>, TAcc, TAllKeys extends AllTupleKeys<T> = AllTupleKeys<T>> = TAllKeys extends any ? DeepKeysAndValuesImpl<NonNullable<T[TAllKeys]>, TupleDeepKeyAndValue<TParent, T, TAllKeys>, TAcc | TupleDeepKeyAndValue<TParent, T, TAllKeys>> : never;
|
|
169
|
+
type AllObjectKeys<T> = T extends any ? keyof T & (string | number) : never;
|
|
170
|
+
type ObjectAccessor<TParent extends AnyDeepKeyAndValue, TKey extends string | number> = TParent['key'] extends never ? `${TKey}` : `${TParent['key']}.${TKey}`;
|
|
171
|
+
type Nullable<T> = T & (undefined | null);
|
|
172
|
+
type ObjectValue<TParent extends AnyDeepKeyAndValue, T, TKey extends AllObjectKeys<T>> = T[TKey] | Nullable<TParent['value']>;
|
|
173
|
+
interface ObjectDeepKeyAndValue<in out TParent extends AnyDeepKeyAndValue, in out T, in out TKey extends AllObjectKeys<T>> extends AnyDeepKeyAndValue {
|
|
174
|
+
key: ObjectAccessor<TParent, TKey>;
|
|
175
|
+
value: ObjectValue<TParent, T, TKey>;
|
|
176
|
+
}
|
|
177
|
+
type DeepKeyAndValueObject<TParent extends AnyDeepKeyAndValue, T, TAcc, TAllKeys extends AllObjectKeys<T> = AllObjectKeys<T>> = TAllKeys extends any ? DeepKeysAndValuesImpl<NonNullable<T[TAllKeys]>, ObjectDeepKeyAndValue<TParent, T, TAllKeys>, TAcc | ObjectDeepKeyAndValue<TParent, T, TAllKeys>> : never;
|
|
178
|
+
type UnknownAccessor<TParent extends AnyDeepKeyAndValue> = TParent['key'] extends never ? string : `${TParent['key']}.${string}`;
|
|
179
|
+
interface UnknownDeepKeyAndValue<TParent extends AnyDeepKeyAndValue> extends AnyDeepKeyAndValue {
|
|
180
|
+
key: UnknownAccessor<TParent>;
|
|
181
|
+
value: unknown;
|
|
182
|
+
}
|
|
183
|
+
type DeepKeysAndValues<T> = DeepKeysAndValuesImpl<T> extends AnyDeepKeyAndValue ? DeepKeysAndValuesImpl<T> : never;
|
|
184
|
+
type DeepKeysAndValuesImpl<T, TParent extends AnyDeepKeyAndValue = never, TAcc = never> = unknown extends T ? TAcc | UnknownDeepKeyAndValue<TParent> : unknown extends T ? T : T extends string | number | boolean | bigint | Date ? TAcc : T extends ReadonlyArray<any> ? number extends T['length'] ? DeepKeyAndValueArray<TParent, T, TAcc> : DeepKeyAndValueTuple<TParent, T, TAcc> : keyof T extends never ? TAcc | UnknownDeepKeyAndValue<TParent> : T extends object ? DeepKeyAndValueObject<TParent, T, TAcc> : TAcc;
|
|
185
|
+
type DeepRecord<T> = { [TRecord in DeepKeysAndValues<T> as TRecord['key']]: TRecord['value']; };
|
|
186
|
+
/**
|
|
187
|
+
* The keys of an object or array, deeply nested.
|
|
188
|
+
*/
|
|
189
|
+
type DeepKeys<T> = unknown extends T ? string : DeepKeysAndValues<T>['key'];
|
|
190
|
+
/**
|
|
191
|
+
* Infer the type of a deeply nested property within an object or an array.
|
|
192
|
+
*/
|
|
193
|
+
type DeepValue<TValue, TAccessor> = unknown extends TValue ? TValue : TAccessor extends DeepKeys<TValue> ? DeepRecord<TValue>[TAccessor] : never;
|
|
194
|
+
/**
|
|
195
|
+
* The keys of an object or array, deeply nested and only with a value of TValue
|
|
196
|
+
*/
|
|
197
|
+
type DeepKeysOfType<TData, TValue> = Extract<DeepKeysAndValues<TData>, AnyDeepKeyAndValue<string, TValue>>['key'];
|
|
198
|
+
//#endregion
|
|
199
|
+
//#region ../../node_modules/.pnpm/@tanstack+form-core@1.33.5/node_modules/@tanstack/form-core/dist/esm/utils.d.ts
|
|
200
|
+
type UpdaterFn<TInput, TOutput = TInput> = (input: TInput) => TOutput;
|
|
201
|
+
type Updater<TInput, TOutput = TInput> = TOutput | UpdaterFn<TInput, TOutput>;
|
|
202
|
+
//#endregion
|
|
203
|
+
//#region ../../node_modules/.pnpm/@tanstack+form-core@1.33.5/node_modules/@tanstack/form-core/dist/esm/FieldApi.d.ts
|
|
204
|
+
/**
|
|
205
|
+
* @private
|
|
206
|
+
*/
|
|
207
|
+
type FieldValidateFn<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>> = (props: {
|
|
208
|
+
value: TData;
|
|
209
|
+
fieldApi: FieldApi<TParentData, TName, TData, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any>;
|
|
210
|
+
}) => unknown;
|
|
211
|
+
/**
|
|
212
|
+
* @private
|
|
213
|
+
*/
|
|
214
|
+
type FieldValidateAsyncFn<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>> = (options: {
|
|
215
|
+
value: TData;
|
|
216
|
+
fieldApi: FieldApi<TParentData, TName, TData, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any>;
|
|
217
|
+
signal: AbortSignal;
|
|
218
|
+
}) => unknown | Promise<unknown>;
|
|
219
|
+
/**
|
|
220
|
+
* @private
|
|
221
|
+
*/
|
|
222
|
+
type FieldListenerFn<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>> = (props: {
|
|
223
|
+
value: TData;
|
|
224
|
+
fieldApi: FieldApi<TParentData, TName, TData, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any>;
|
|
225
|
+
}) => void;
|
|
226
|
+
/**
|
|
227
|
+
* @private
|
|
228
|
+
*/
|
|
229
|
+
type FieldValidateOrFn<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>> = FieldValidateFn<TParentData, TName, TData> | StandardSchemaV1<TData, unknown>;
|
|
230
|
+
/**
|
|
231
|
+
* @private
|
|
232
|
+
*/
|
|
233
|
+
type FieldAsyncValidateOrFn<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>> = FieldValidateAsyncFn<TParentData, TName, TData> | StandardSchemaV1<TData, unknown>;
|
|
234
|
+
interface FieldValidators<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName>, TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnChangeAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnBlurAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnSubmitAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnDynamic extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnDynamicAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>> {
|
|
235
|
+
/**
|
|
236
|
+
* An optional function, that runs on the mount event of input.
|
|
237
|
+
*/
|
|
238
|
+
onMount?: RejectPromiseValidator<TOnMount>;
|
|
239
|
+
/**
|
|
240
|
+
* An optional function, that runs on the change event of input.
|
|
241
|
+
*
|
|
242
|
+
* @example z.string().min(1)
|
|
243
|
+
*/
|
|
244
|
+
onChange?: RejectPromiseValidator<TOnChange>;
|
|
245
|
+
/**
|
|
246
|
+
* An optional property similar to `onChange` but async validation
|
|
247
|
+
*
|
|
248
|
+
* @example z.string().refine(async (val) => val.length > 3, { message: 'Testing 123' })
|
|
249
|
+
*/
|
|
250
|
+
onChangeAsync?: TOnChangeAsync;
|
|
251
|
+
/**
|
|
252
|
+
* An optional number to represent how long the `onChangeAsync` should wait before running
|
|
253
|
+
*
|
|
254
|
+
* If set to a number larger than 0, will debounce the async validation event by this length of time in milliseconds
|
|
255
|
+
*/
|
|
256
|
+
onChangeAsyncDebounceMs?: number;
|
|
257
|
+
/**
|
|
258
|
+
* An optional list of field names that should trigger this field's `onChange` and `onChangeAsync` events when its value changes
|
|
259
|
+
*/
|
|
260
|
+
onChangeListenTo?: DeepKeys<TParentData>[];
|
|
261
|
+
/**
|
|
262
|
+
* An optional function, that runs on the blur event of input.
|
|
263
|
+
*
|
|
264
|
+
* @example z.string().min(1)
|
|
265
|
+
*/
|
|
266
|
+
onBlur?: RejectPromiseValidator<TOnBlur>;
|
|
267
|
+
/**
|
|
268
|
+
* An optional property similar to `onBlur` but async validation.
|
|
269
|
+
*
|
|
270
|
+
* @example z.string().refine(async (val) => val.length > 3, { message: 'Testing 123' })
|
|
271
|
+
*/
|
|
272
|
+
onBlurAsync?: TOnBlurAsync;
|
|
273
|
+
/**
|
|
274
|
+
* An optional number to represent how long the `onBlurAsync` should wait before running
|
|
275
|
+
*
|
|
276
|
+
* If set to a number larger than 0, will debounce the async validation event by this length of time in milliseconds
|
|
277
|
+
*/
|
|
278
|
+
onBlurAsyncDebounceMs?: number;
|
|
279
|
+
/**
|
|
280
|
+
* An optional list of field names that should trigger this field's `onBlur` and `onBlurAsync` events when its value changes
|
|
281
|
+
*/
|
|
282
|
+
onBlurListenTo?: DeepKeys<TParentData>[];
|
|
283
|
+
/**
|
|
284
|
+
* An optional function, that runs on the submit event of form.
|
|
285
|
+
*
|
|
286
|
+
* @example z.string().min(1)
|
|
287
|
+
*/
|
|
288
|
+
onSubmit?: RejectPromiseValidator<TOnSubmit>;
|
|
289
|
+
/**
|
|
290
|
+
* An optional property similar to `onSubmit` but async validation.
|
|
291
|
+
*
|
|
292
|
+
* @example z.string().refine(async (val) => val.length > 3, { message: 'Testing 123' })
|
|
293
|
+
*/
|
|
294
|
+
onSubmitAsync?: TOnSubmitAsync;
|
|
295
|
+
onDynamic?: RejectPromiseValidator<TOnDynamic>;
|
|
296
|
+
onDynamicAsync?: TOnDynamicAsync;
|
|
297
|
+
onDynamicAsyncDebounceMs?: number;
|
|
298
|
+
}
|
|
299
|
+
interface FieldListeners<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>> {
|
|
300
|
+
onChange?: FieldListenerFn<TParentData, TName, TData>;
|
|
301
|
+
onChangeDebounceMs?: number;
|
|
302
|
+
onBlur?: FieldListenerFn<TParentData, TName, TData>;
|
|
303
|
+
onBlurDebounceMs?: number;
|
|
304
|
+
onMount?: FieldListenerFn<TParentData, TName, TData>;
|
|
305
|
+
onUnmount?: FieldListenerFn<TParentData, TName, TData>;
|
|
306
|
+
onSubmit?: FieldListenerFn<TParentData, TName, TData>;
|
|
307
|
+
onGroupSubmit?: FieldListenerFn<TParentData, TName, TData>;
|
|
308
|
+
}
|
|
309
|
+
interface FieldExtraOptions<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName>, TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnChangeAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnBlurAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnSubmitAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, TOnDynamic extends undefined | FieldValidateOrFn<TParentData, TName, TData>, TOnDynamicAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>> {
|
|
310
|
+
/**
|
|
311
|
+
* A list of validators to pass to the field
|
|
312
|
+
*/
|
|
313
|
+
validators?: FieldValidators<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync>;
|
|
314
|
+
/**
|
|
315
|
+
* A list of listeners which attach to the corresponding events
|
|
316
|
+
*/
|
|
317
|
+
listeners?: FieldListeners<TParentData, TName, TData>;
|
|
318
|
+
}
|
|
319
|
+
interface FieldApiOptions<in out TParentData, in out TName extends DeepKeys<TParentData>, in out TData extends DeepValue<TParentData, TName>, in out TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData>, in out TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData>, in out TOnChangeAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, in out TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData>, in out TOnBlurAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, in out TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData>, in out TOnSubmitAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, in out TOnDynamic extends undefined | FieldValidateOrFn<TParentData, TName, TData>, in out TOnDynamicAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, in out TFormOnMount extends undefined | FormValidateOrFn<TParentData>, in out TFormOnChange extends undefined | FormValidateOrFn<TParentData>, in out TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnBlur extends undefined | FormValidateOrFn<TParentData>, in out TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>, in out TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>, in out TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>, in out TParentSubmitMeta> extends FieldLikeApiOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>, FieldExtraOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync> {}
|
|
320
|
+
/**
|
|
321
|
+
* @public
|
|
322
|
+
*
|
|
323
|
+
* A type representing the Field API with all generics set to `any` for convenience.
|
|
324
|
+
*/
|
|
325
|
+
type AnyFieldApi = FieldApi<any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any>;
|
|
326
|
+
/**
|
|
327
|
+
* We cannot use methods and must use arrow functions. Otherwise, our React adapters
|
|
328
|
+
* will break due to loss of the method when using spread.
|
|
329
|
+
*/
|
|
330
|
+
/**
|
|
331
|
+
* A class representing the API for managing a form field.
|
|
332
|
+
*
|
|
333
|
+
* Normally, you will not need to create a new `FieldApi` instance directly.
|
|
334
|
+
* Instead, you will use a framework hook/function like `useField` or `createField`
|
|
335
|
+
* to create a new instance for you that uses your framework's reactivity model.
|
|
336
|
+
* However, if you need to create a new instance manually, you can do so by calling
|
|
337
|
+
* the `new FieldApi` constructor.
|
|
338
|
+
*/
|
|
339
|
+
declare class FieldApi<in out TParentData, in out TName extends DeepKeys<TParentData>, in out TData extends DeepValue<TParentData, TName>, in out TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData>, in out TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData>, in out TOnChangeAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, in out TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData>, in out TOnBlurAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, in out TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData>, in out TOnSubmitAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, in out TOnDynamic extends undefined | FieldValidateOrFn<TParentData, TName, TData>, in out TOnDynamicAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData>, in out TFormOnMount extends undefined | FormValidateOrFn<TParentData>, in out TFormOnChange extends undefined | FormValidateOrFn<TParentData>, in out TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnBlur extends undefined | FormValidateOrFn<TParentData>, in out TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>, in out TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>, in out TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>, in out TParentSubmitMeta> implements FieldLikeAPI<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta, FieldExtraOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync>> {
|
|
340
|
+
/**
|
|
341
|
+
* A reference to the form API instance.
|
|
342
|
+
*/
|
|
343
|
+
form: FieldApiOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>['form'];
|
|
344
|
+
/**
|
|
345
|
+
* The field name.
|
|
346
|
+
*/
|
|
347
|
+
name: TName;
|
|
348
|
+
/**
|
|
349
|
+
* The field options.
|
|
350
|
+
*/
|
|
351
|
+
options: FieldApiOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>;
|
|
352
|
+
/**
|
|
353
|
+
* The field state store.
|
|
354
|
+
*/
|
|
355
|
+
store: ReadonlyStore<FieldLikeState<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync>>;
|
|
356
|
+
/**
|
|
357
|
+
* The current field state.
|
|
358
|
+
*/
|
|
359
|
+
get state(): FieldLikeState<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync>;
|
|
360
|
+
timeoutIds: {
|
|
361
|
+
validations: Record<ValidationCause, ReturnType<typeof setTimeout> | null>;
|
|
362
|
+
listeners: Record<ListenerCause, ReturnType<typeof setTimeout> | null>;
|
|
363
|
+
formListeners: Record<ListenerCause, ReturnType<typeof setTimeout> | null>;
|
|
364
|
+
};
|
|
365
|
+
/**
|
|
366
|
+
* Initializes a new `FieldApi` instance.
|
|
367
|
+
*/
|
|
368
|
+
constructor(opts: FieldApiOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>);
|
|
369
|
+
/**
|
|
370
|
+
* @private
|
|
371
|
+
*/
|
|
372
|
+
runValidator<TValue extends TStandardSchemaValidatorValue<TData> & {
|
|
373
|
+
fieldApi: AnyFieldApi;
|
|
374
|
+
}, TType extends 'validate' | 'validateAsync'>(props: {
|
|
375
|
+
validate: TType extends 'validate' ? FieldValidateOrFn<any, any, any> : FieldAsyncValidateOrFn<any, any, any>;
|
|
376
|
+
value: TValue;
|
|
377
|
+
type: TType;
|
|
378
|
+
}): unknown;
|
|
379
|
+
/**
|
|
380
|
+
* Mounts the field instance to the form.
|
|
381
|
+
* @returns A function to unmount the field instance.
|
|
382
|
+
*/
|
|
383
|
+
mount: () => () => void;
|
|
384
|
+
/**
|
|
385
|
+
* Updates the field instance with new options.
|
|
386
|
+
*/
|
|
387
|
+
update: (opts: FieldApiOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>) => void;
|
|
388
|
+
/**
|
|
389
|
+
* Gets the current field value.
|
|
390
|
+
* @deprecated Use `field.state.value` instead.
|
|
391
|
+
*/
|
|
392
|
+
getValue: () => TData;
|
|
393
|
+
/**
|
|
394
|
+
* Sets the field value and run the `change` validator.
|
|
395
|
+
*/
|
|
396
|
+
setValue: (updater: Updater<TData>, options?: UpdateMetaOptions) => void;
|
|
397
|
+
getMeta: () => FieldLikeMeta<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync>;
|
|
398
|
+
/**
|
|
399
|
+
* Sets the field metadata.
|
|
400
|
+
*/
|
|
401
|
+
setMeta: (updater: Updater<FieldLikeMetaBase<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync>>) => void;
|
|
402
|
+
/**
|
|
403
|
+
* Gets the field information object.
|
|
404
|
+
*/
|
|
405
|
+
getInfo: () => FieldInfo<TParentData>;
|
|
406
|
+
/**
|
|
407
|
+
* Pushes a new value to the field.
|
|
408
|
+
*/
|
|
409
|
+
pushValue: (value: TData extends any[] ? TData[number] : never, options?: UpdateMetaOptions) => void;
|
|
410
|
+
/**
|
|
411
|
+
* Inserts a value at the specified index, shifting the subsequent values to the right.
|
|
412
|
+
*/
|
|
413
|
+
insertValue: (index: number, value: TData extends any[] ? TData[number] : never, options?: UpdateMetaOptions) => void;
|
|
414
|
+
/**
|
|
415
|
+
* Replaces a value at the specified index.
|
|
416
|
+
*/
|
|
417
|
+
replaceValue: (index: number, value: TData extends any[] ? TData[number] : never, options?: UpdateMetaOptions) => void;
|
|
418
|
+
/**
|
|
419
|
+
* Removes a value at the specified index.
|
|
420
|
+
*/
|
|
421
|
+
removeValue: (index: number, options?: UpdateMetaOptions) => void;
|
|
422
|
+
/**
|
|
423
|
+
* Swaps the values at the specified indices.
|
|
424
|
+
*/
|
|
425
|
+
swapValues: (aIndex: number, bIndex: number, options?: UpdateMetaOptions) => void;
|
|
426
|
+
/**
|
|
427
|
+
* Moves the value at the first specified index to the second specified index.
|
|
428
|
+
*/
|
|
429
|
+
moveValue: (aIndex: number, bIndex: number, options?: UpdateMetaOptions) => void;
|
|
430
|
+
/**
|
|
431
|
+
* Clear all values from the array.
|
|
432
|
+
*/
|
|
433
|
+
clearValues: (options?: UpdateMetaOptions) => void;
|
|
434
|
+
/**
|
|
435
|
+
* @private
|
|
436
|
+
*/
|
|
437
|
+
getLinkedFields: (cause: ValidationCause) => AnyFieldApi[];
|
|
438
|
+
/**
|
|
439
|
+
* @private
|
|
440
|
+
*/
|
|
441
|
+
validateSync: (cause: ValidationCause, errorFromForm: ValidationErrorMap) => {
|
|
442
|
+
hasErrored: boolean;
|
|
443
|
+
};
|
|
444
|
+
/**
|
|
445
|
+
* `@private`
|
|
446
|
+
* Starts tracking an async validation, incrementing the counter and setting isValidating if needed.
|
|
447
|
+
*/
|
|
448
|
+
private startValidation;
|
|
449
|
+
/**
|
|
450
|
+
* `@private`
|
|
451
|
+
* Ends tracking an async validation, decrementing the counter and clearing isValidating if no validations remain.
|
|
452
|
+
*/
|
|
453
|
+
private endValidation;
|
|
454
|
+
/**
|
|
455
|
+
* @private
|
|
456
|
+
*/
|
|
457
|
+
validateAsync: (cause: ValidationCause, formValidationResultPromise: Promise<FieldErrorMapFromValidator<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync>>) => Promise<unknown[]>;
|
|
458
|
+
/**
|
|
459
|
+
* Validates the field value.
|
|
460
|
+
*/
|
|
461
|
+
validate: (cause: ValidationCause, opts?: {
|
|
462
|
+
skipFormValidation?: boolean;
|
|
463
|
+
skipGroupValidation?: boolean;
|
|
464
|
+
}) => ValidationError[] | Promise<ValidationError[]>;
|
|
465
|
+
/**
|
|
466
|
+
* Handles the change event.
|
|
467
|
+
*/
|
|
468
|
+
handleChange: (updater: Updater<TData>) => void;
|
|
469
|
+
/**
|
|
470
|
+
* Handles the blur event.
|
|
471
|
+
*/
|
|
472
|
+
handleBlur: () => void;
|
|
473
|
+
/**
|
|
474
|
+
* Updates the field's errorMap
|
|
475
|
+
*/
|
|
476
|
+
setErrorMap: (errorMap: ValidationErrorMap<UnwrapFieldValidateOrFn<TName, TOnMount, TFormOnMount>, UnwrapFieldValidateOrFn<TName, TOnChange, TFormOnChange>, UnwrapFieldAsyncValidateOrFn<TName, TOnChangeAsync, TFormOnChangeAsync>, UnwrapFieldValidateOrFn<TName, TOnBlur, TFormOnBlur>, UnwrapFieldAsyncValidateOrFn<TName, TOnBlurAsync, TFormOnBlurAsync>, UnwrapFieldValidateOrFn<TName, TOnSubmit, TFormOnSubmit>, UnwrapFieldAsyncValidateOrFn<TName, TOnSubmitAsync, TFormOnSubmitAsync>, UnwrapFieldValidateOrFn<TName, TOnDynamic, TFormOnDynamic>, UnwrapFieldAsyncValidateOrFn<TName, TOnDynamicAsync, TFormOnDynamicAsync>>) => void;
|
|
477
|
+
/**
|
|
478
|
+
* Parses the field's value with the given schema and returns
|
|
479
|
+
* issues (if any). This method does NOT set any internal errors.
|
|
480
|
+
* @param schema The standard schema to parse this field's value with.
|
|
481
|
+
*/
|
|
482
|
+
parseValueWithSchema: (schema: StandardSchemaV1<TData, unknown>) => StandardSchemaV1Issue[] | undefined;
|
|
483
|
+
/**
|
|
484
|
+
* Parses the field's value with the given schema and returns
|
|
485
|
+
* issues (if any). This method does NOT set any internal errors.
|
|
486
|
+
* @param schema The standard schema to parse this field's value with.
|
|
487
|
+
*/
|
|
488
|
+
parseValueWithSchemaAsync: (schema: StandardSchemaV1<TData, unknown>) => Promise<StandardSchemaV1Issue[] | undefined>;
|
|
489
|
+
private triggerOnBlurListener;
|
|
490
|
+
/**
|
|
491
|
+
* @private
|
|
492
|
+
*/
|
|
493
|
+
triggerOnChangeListener: () => void;
|
|
494
|
+
/**
|
|
495
|
+
* @private
|
|
496
|
+
*/
|
|
497
|
+
triggerOnSubmitListener: () => void;
|
|
498
|
+
}
|
|
499
|
+
//#endregion
|
|
500
|
+
//#region ../../node_modules/.pnpm/@tanstack+form-core@1.33.5/node_modules/@tanstack/form-core/dist/esm/ValidationLogic.d.ts
|
|
501
|
+
interface ValidationLogicValidatorsFn {
|
|
502
|
+
fn: FormValidators<any, any, any, any, any, any, any, any, any, any>[keyof FormValidators<any, any, any, any, any, any, any, any, any, any>];
|
|
503
|
+
cause: 'change' | 'blur' | 'submit' | 'mount' | 'server' | 'dynamic';
|
|
504
|
+
}
|
|
505
|
+
interface ValidationLogicProps {
|
|
506
|
+
form: AnyFormApi$1;
|
|
507
|
+
/**
|
|
508
|
+
* Set when the validators being processed belong to a `FormGroupApi`.
|
|
509
|
+
* Allows validation strategies (e.g. `revalidateLogic`) to gate their
|
|
510
|
+
* behavior on the group's own state instead of the parent form's.
|
|
511
|
+
*/
|
|
512
|
+
group?: AnyFormGroupApi;
|
|
513
|
+
validators: FormValidators<any, any, any, any, any, any, any, any, any, any> | undefined | null;
|
|
514
|
+
event: {
|
|
515
|
+
type: 'blur' | 'change' | 'submit' | 'mount' | 'server';
|
|
516
|
+
fieldName?: string;
|
|
517
|
+
async: boolean;
|
|
518
|
+
};
|
|
519
|
+
runValidation: (props: {
|
|
520
|
+
validators: Array<ValidationLogicValidatorsFn | undefined>;
|
|
521
|
+
form: AnyFormApi$1;
|
|
522
|
+
}) => void;
|
|
523
|
+
}
|
|
524
|
+
type ValidationLogicFn = (props: ValidationLogicProps) => void;
|
|
525
|
+
//#endregion
|
|
526
|
+
//#region ../../node_modules/.pnpm/@tanstack+form-core@1.33.5/node_modules/@tanstack/form-core/dist/esm/FormGroupApi.d.ts
|
|
527
|
+
/**
|
|
528
|
+
* @private
|
|
529
|
+
*/
|
|
530
|
+
type FormGroupValidateFn<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>> = (props: {
|
|
531
|
+
value: TData;
|
|
532
|
+
groupApi: FormGroupApi<TParentData, TName, TData, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any>;
|
|
533
|
+
}) => unknown;
|
|
534
|
+
/**
|
|
535
|
+
* @private
|
|
536
|
+
*/
|
|
537
|
+
type FormGroupValidateOrFn<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>> = FormGroupValidateFn<TParentData, TName, TData> | StandardSchemaV1<TData, unknown>;
|
|
538
|
+
/**
|
|
539
|
+
* @private
|
|
540
|
+
*/
|
|
541
|
+
type FormGroupValidateAsyncFn<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>> = (options: {
|
|
542
|
+
value: TData;
|
|
543
|
+
groupApi: FormGroupApi<TParentData, TName, TData, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any>;
|
|
544
|
+
signal: AbortSignal;
|
|
545
|
+
}) => unknown | Promise<unknown>;
|
|
546
|
+
/**
|
|
547
|
+
* @private
|
|
548
|
+
*/
|
|
549
|
+
type FormGroupAsyncValidateOrFn<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>> = FormGroupValidateAsyncFn<TParentData, TName, TData> | StandardSchemaV1<TData, unknown>;
|
|
550
|
+
/**
|
|
551
|
+
* @private
|
|
552
|
+
*/
|
|
553
|
+
type FormGroupListenerFn<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>> = (props: {
|
|
554
|
+
value: TData;
|
|
555
|
+
groupApi: FormGroupApi<TParentData, TName, TData, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any>;
|
|
556
|
+
}) => void;
|
|
557
|
+
interface FormGroupValidators<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName>, TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChange extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChangeAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnBlurAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnSubmit extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnSubmitAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnDynamic extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, TOnDynamicAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>> {
|
|
558
|
+
/**
|
|
559
|
+
* An optional function, that runs on the mount event of input.
|
|
560
|
+
*/
|
|
561
|
+
onMount?: TOnMount;
|
|
562
|
+
/**
|
|
563
|
+
* An optional function, that runs on the change event of input.
|
|
564
|
+
*
|
|
565
|
+
* @example z.string().min(1)
|
|
566
|
+
*/
|
|
567
|
+
onChange?: TOnChange;
|
|
568
|
+
/**
|
|
569
|
+
* An optional property similar to `onChange` but async validation
|
|
570
|
+
*
|
|
571
|
+
* @example z.string().refine(async (val) => val.length > 3, { message: 'Testing 123' })
|
|
572
|
+
*/
|
|
573
|
+
onChangeAsync?: TOnChangeAsync;
|
|
574
|
+
/**
|
|
575
|
+
* An optional number to represent how long the `onChangeAsync` should wait before running
|
|
576
|
+
*
|
|
577
|
+
* If set to a number larger than 0, will debounce the async validation event by this length of time in milliseconds
|
|
578
|
+
*/
|
|
579
|
+
onChangeAsyncDebounceMs?: number;
|
|
580
|
+
/**
|
|
581
|
+
* An optional list of field names that should trigger this field's `onChange` and `onChangeAsync` events when its value changes
|
|
582
|
+
*/
|
|
583
|
+
/**
|
|
584
|
+
* An optional function, that runs on the blur event of input.
|
|
585
|
+
*
|
|
586
|
+
* @example z.string().min(1)
|
|
587
|
+
*/
|
|
588
|
+
onBlur?: TOnBlur;
|
|
589
|
+
/**
|
|
590
|
+
* An optional property similar to `onBlur` but async validation.
|
|
591
|
+
*
|
|
592
|
+
* @example z.string().refine(async (val) => val.length > 3, { message: 'Testing 123' })
|
|
593
|
+
*/
|
|
594
|
+
onBlurAsync?: TOnBlurAsync;
|
|
595
|
+
/**
|
|
596
|
+
* An optional number to represent how long the `onBlurAsync` should wait before running
|
|
597
|
+
*
|
|
598
|
+
* If set to a number larger than 0, will debounce the async validation event by this length of time in milliseconds
|
|
599
|
+
*/
|
|
600
|
+
onBlurAsyncDebounceMs?: number;
|
|
601
|
+
/**
|
|
602
|
+
* An optional list of field names that should trigger this field's `onBlur` and `onBlurAsync` events when its value changes
|
|
603
|
+
*/
|
|
604
|
+
/**
|
|
605
|
+
* An optional function, that runs on the submit event of form.
|
|
606
|
+
*
|
|
607
|
+
* @example z.string().min(1)
|
|
608
|
+
*/
|
|
609
|
+
onSubmit?: TOnSubmit;
|
|
610
|
+
/**
|
|
611
|
+
* An optional property similar to `onSubmit` but async validation.
|
|
612
|
+
*
|
|
613
|
+
* @example z.string().refine(async (val) => val.length > 3, { message: 'Testing 123' })
|
|
614
|
+
*/
|
|
615
|
+
onSubmitAsync?: TOnSubmitAsync;
|
|
616
|
+
onDynamic?: TOnDynamic;
|
|
617
|
+
onDynamicAsync?: TOnDynamicAsync;
|
|
618
|
+
onDynamicAsyncDebounceMs?: number;
|
|
619
|
+
}
|
|
620
|
+
interface FormGroupListeners<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName> = DeepValue<TParentData, TName>> {
|
|
621
|
+
onChange?: FormGroupListenerFn<TParentData, TName, TData>;
|
|
622
|
+
onChangeDebounceMs?: number;
|
|
623
|
+
onBlur?: FormGroupListenerFn<TParentData, TName, TData>;
|
|
624
|
+
onBlurDebounceMs?: number;
|
|
625
|
+
onMount?: FormGroupListenerFn<TParentData, TName, TData>;
|
|
626
|
+
onUnmount?: FormGroupListenerFn<TParentData, TName, TData>;
|
|
627
|
+
onSubmit?: FormGroupListenerFn<TParentData, TName, TData>;
|
|
628
|
+
onGroupSubmit?: FormGroupListenerFn<TParentData, TName, TData>;
|
|
629
|
+
}
|
|
630
|
+
interface FormGroupExtraOptions<in out TParentData, in out TName extends DeepKeys<TParentData>, in out TData extends DeepValue<TParentData, TName>, in out TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnChange extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnChangeAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnBlurAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnSubmit extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnSubmitAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnDynamic extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnDynamicAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TSubmitMeta, in out TFormOnMount extends undefined | FormValidateOrFn<TParentData>, in out TFormOnChange extends undefined | FormValidateOrFn<TParentData>, in out TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnBlur extends undefined | FormValidateOrFn<TParentData>, in out TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>, in out TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>, in out TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>, in out TParentSubmitMeta> {
|
|
631
|
+
/**
|
|
632
|
+
* A list of validators to pass to the field
|
|
633
|
+
*/
|
|
634
|
+
validators?: FormGroupValidators<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync>;
|
|
635
|
+
/**
|
|
636
|
+
* If true, allows the form to be submitted in an invalid state i.e. canSubmit will remain true regardless of validation errors. Defaults to undefined.
|
|
637
|
+
*/
|
|
638
|
+
canSubmitWhenInvalid?: boolean;
|
|
639
|
+
/**
|
|
640
|
+
* A list of listeners which attach to the corresponding events
|
|
641
|
+
*/
|
|
642
|
+
listeners?: FormGroupListeners<TParentData, TName, TData>;
|
|
643
|
+
defaultState?: FormGroupState;
|
|
644
|
+
/**
|
|
645
|
+
* Optional validation logic strategy to use for this group's own
|
|
646
|
+
* validators (e.g. `revalidateLogic()`). When omitted, the parent form's
|
|
647
|
+
* `validationLogic` (or the default) is used.
|
|
648
|
+
*/
|
|
649
|
+
validationLogic?: ValidationLogicFn;
|
|
650
|
+
/**
|
|
651
|
+
* onSubmitMeta, the data passed from the handleSubmit handler, to the onSubmit function props
|
|
652
|
+
*/
|
|
653
|
+
onSubmitMeta?: TSubmitMeta;
|
|
654
|
+
/**
|
|
655
|
+
* A function to be called when the form is submitted, what should happen once the user submits a valid form returns `any` or a promise `Promise<any>`
|
|
656
|
+
*/
|
|
657
|
+
onGroupSubmit?: (props: {
|
|
658
|
+
value: TData;
|
|
659
|
+
groupApi: FormGroupApi<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TSubmitMeta, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>;
|
|
660
|
+
meta: TSubmitMeta;
|
|
661
|
+
}) => any | Promise<any>;
|
|
662
|
+
/**
|
|
663
|
+
* Specify an action for scenarios where the user tries to submit an invalid form.
|
|
664
|
+
*/
|
|
665
|
+
onGroupSubmitInvalid?: (props: {
|
|
666
|
+
value: TData;
|
|
667
|
+
groupApi: FormGroupApi<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TSubmitMeta, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>;
|
|
668
|
+
meta: TSubmitMeta;
|
|
669
|
+
}) => void;
|
|
670
|
+
}
|
|
671
|
+
interface FormGroupOptions<in out TParentData, in out TName extends DeepKeys<TParentData>, in out TData extends DeepValue<TParentData, TName>, in out TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnChange extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnChangeAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnBlurAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnSubmit extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnSubmitAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnDynamic extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnDynamicAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TSubmitMeta, in out TFormOnMount extends undefined | FormValidateOrFn<TParentData>, in out TFormOnChange extends undefined | FormValidateOrFn<TParentData>, in out TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnBlur extends undefined | FormValidateOrFn<TParentData>, in out TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>, in out TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>, in out TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>, in out TParentSubmitMeta> extends FieldLikeOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync>, FormGroupExtraOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TSubmitMeta, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta> {}
|
|
672
|
+
interface FormGroupApiOptions<in out TParentData, in out TName extends DeepKeys<TParentData>, in out TData extends DeepValue<TParentData, TName>, in out TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnChange extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnChangeAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnBlurAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnSubmit extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnSubmitAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnDynamic extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnDynamicAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TSubmitMeta, in out TFormOnMount extends undefined | FormValidateOrFn<TParentData>, in out TFormOnChange extends undefined | FormValidateOrFn<TParentData>, in out TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnBlur extends undefined | FormValidateOrFn<TParentData>, in out TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>, in out TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>, in out TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>, in out TParentSubmitMeta> extends FormGroupOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TSubmitMeta, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta> {
|
|
673
|
+
form: FormApi<TParentData, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>;
|
|
674
|
+
}
|
|
675
|
+
interface FormGroupState {
|
|
676
|
+
/**
|
|
677
|
+
* A boolean indicating if the form is currently in the process of being submitted after `handleSubmit` is called.
|
|
678
|
+
*
|
|
679
|
+
* Goes back to `false` when submission completes for one of the following reasons:
|
|
680
|
+
* - the validation step returned errors.
|
|
681
|
+
* - the `onSubmit` function has completed.
|
|
682
|
+
*
|
|
683
|
+
* Note: if you're running async operations in your `onSubmit` function make sure to await them to ensure `isSubmitting` is set to `false` only when the async operation completes.
|
|
684
|
+
*
|
|
685
|
+
* This is useful for displaying loading indicators or disabling form inputs during submission.
|
|
686
|
+
*
|
|
687
|
+
*/
|
|
688
|
+
isSubmitting: boolean;
|
|
689
|
+
/**
|
|
690
|
+
* A boolean indicating if the `onSubmit` function has completed successfully.
|
|
691
|
+
*
|
|
692
|
+
* Goes back to `false` at each new submission attempt.
|
|
693
|
+
*
|
|
694
|
+
* Note: you can use isSubmitting to check if the form is currently submitting.
|
|
695
|
+
*/
|
|
696
|
+
isSubmitted: boolean;
|
|
697
|
+
/**
|
|
698
|
+
* A boolean indicating if the form or any of its fields are currently validating.
|
|
699
|
+
*/
|
|
700
|
+
isValidating: boolean;
|
|
701
|
+
/**
|
|
702
|
+
* A counter for tracking the number of submission attempts.
|
|
703
|
+
*/
|
|
704
|
+
submissionAttempts: number;
|
|
705
|
+
/**
|
|
706
|
+
* A boolean indicating if the last submission was successful.
|
|
707
|
+
*/
|
|
708
|
+
isSubmitSuccessful: boolean;
|
|
709
|
+
}
|
|
710
|
+
/**
|
|
711
|
+
* @public
|
|
712
|
+
*
|
|
713
|
+
* A type representing the FormGroup API with all generics set to `any` for convenience.
|
|
714
|
+
*/
|
|
715
|
+
type AnyFormGroupApi = FormGroupApi<any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any>;
|
|
716
|
+
/**
|
|
717
|
+
* @public
|
|
718
|
+
*
|
|
719
|
+
* The `meta` shape exposed on `FormGroupApi.state.meta`. Mirrors
|
|
720
|
+
* `FieldApi.state.meta` (since `FormGroupMeta extends FieldLikeMeta`) but
|
|
721
|
+
* additionally surfaces the group's submission lifecycle and aggregated
|
|
722
|
+
* validity flags. All derivation lives on the parent `FormApi` (in
|
|
723
|
+
* `formGroupMetaDerived`), keeping per-instance `FormGroupApi.store` as
|
|
724
|
+
* minimal as `FieldApi.store`.
|
|
725
|
+
*
|
|
726
|
+
* Aggregated booleans (`isTouched`, `isBlurred`, `isDirty`, `isPristine`,
|
|
727
|
+
* `isDefaultValue`) are computed across the group's descendant fields
|
|
728
|
+
* rather than the group's own field-meta entry.
|
|
729
|
+
*/
|
|
730
|
+
interface FormGroupMeta<in out TParentData, in out TName extends DeepKeys<TParentData>, in out TData extends DeepValue<TParentData, TName>, in out TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnChange extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnChangeAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnBlurAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnSubmit extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnSubmitAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnDynamic extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnDynamicAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TFormOnMount extends undefined | FormValidateOrFn<TParentData>, in out TFormOnChange extends undefined | FormValidateOrFn<TParentData>, in out TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnBlur extends undefined | FormValidateOrFn<TParentData>, in out TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>, in out TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>, in out TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>> extends FieldLikeMeta<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync>, FormGroupState {
|
|
731
|
+
isFieldsValidating: boolean;
|
|
732
|
+
isFieldsValid: boolean;
|
|
733
|
+
isGroupValid: boolean;
|
|
734
|
+
isValid: boolean;
|
|
735
|
+
canSubmit: boolean;
|
|
736
|
+
}
|
|
737
|
+
/**
|
|
738
|
+
* @public
|
|
739
|
+
*
|
|
740
|
+
* `FormGroupMeta` with all generics widened to `any`.
|
|
741
|
+
*/
|
|
742
|
+
type AnyFormGroupMeta = FormGroupMeta<any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any>;
|
|
743
|
+
interface FormGroupStoreState<in out TParentData, in out TName extends DeepKeys<TParentData>, in out TData extends DeepValue<TParentData, TName>, in out TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnChange extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnChangeAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnBlurAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnSubmit extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnSubmitAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnDynamic extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnDynamicAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TFormOnMount extends undefined | FormValidateOrFn<TParentData>, in out TFormOnChange extends undefined | FormValidateOrFn<TParentData>, in out TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnBlur extends undefined | FormValidateOrFn<TParentData>, in out TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>, in out TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>, in out TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>> {
|
|
744
|
+
/**
|
|
745
|
+
* The current value of the form group.
|
|
746
|
+
*/
|
|
747
|
+
value: TData;
|
|
748
|
+
/**
|
|
749
|
+
* The current metadata of the form group, including aggregated validity,
|
|
750
|
+
* group-level errors, and submission lifecycle.
|
|
751
|
+
*/
|
|
752
|
+
meta: FormGroupMeta<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync>;
|
|
753
|
+
}
|
|
754
|
+
declare class FormGroupApi<in out TParentData, in out TName extends DeepKeys<TParentData>, in out TData extends DeepValue<TParentData, TName>, in out TOnMount extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnChange extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnChangeAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnBlur extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnBlurAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnSubmit extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnSubmitAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnDynamic extends undefined | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnDynamicAsync extends undefined | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TSubmitMeta, in out TFormOnMount extends undefined | FormValidateOrFn<TParentData>, in out TFormOnChange extends undefined | FormValidateOrFn<TParentData>, in out TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnBlur extends undefined | FormValidateOrFn<TParentData>, in out TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>, in out TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>, in out TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>, in out TParentSubmitMeta> implements FormLikeAPI<TParentData, TSubmitMeta>, FieldLikeAPI<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta, FormGroupExtraOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TSubmitMeta, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>> {
|
|
755
|
+
/**
|
|
756
|
+
* A reference to the form API instance.
|
|
757
|
+
*/
|
|
758
|
+
form: FormGroupApiOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TSubmitMeta, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>['form'];
|
|
759
|
+
/**
|
|
760
|
+
* The field name.
|
|
761
|
+
*/
|
|
762
|
+
name: TName;
|
|
763
|
+
/**
|
|
764
|
+
* The field options.
|
|
765
|
+
*/
|
|
766
|
+
options: FormGroupApiOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TSubmitMeta, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>;
|
|
767
|
+
/**
|
|
768
|
+
* The field state store.
|
|
769
|
+
*/
|
|
770
|
+
store: ReadonlyStore<FormGroupStoreState<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync>>;
|
|
771
|
+
/**
|
|
772
|
+
* The current field state.
|
|
773
|
+
*/
|
|
774
|
+
get state(): FormGroupStoreState<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync>;
|
|
775
|
+
/**
|
|
776
|
+
* @private
|
|
777
|
+
*
|
|
778
|
+
* Updates this group's submission lifecycle state on the parent form's
|
|
779
|
+
* `baseStore` (where group state is now persisted), preserving entries
|
|
780
|
+
* for any other mounted groups. After writing, the form's
|
|
781
|
+
* `formGroupMetaDerived` re-derives so this group's `state.meta` picks
|
|
782
|
+
* up the new lifecycle values automatically.
|
|
783
|
+
*/
|
|
784
|
+
private setFormGroupState;
|
|
785
|
+
timeoutIds: {
|
|
786
|
+
validations: Record<ValidationCause, ReturnType<typeof setTimeout> | null>;
|
|
787
|
+
listeners: Record<ListenerCause, ReturnType<typeof setTimeout> | null>;
|
|
788
|
+
formListeners: Record<ListenerCause, ReturnType<typeof setTimeout> | null>;
|
|
789
|
+
};
|
|
790
|
+
/**
|
|
791
|
+
* @private
|
|
792
|
+
*
|
|
793
|
+
* Tracks the set of fully-qualified child field names that this group's
|
|
794
|
+
* validators last set form-source errors on, keyed by `errorMap` key.
|
|
795
|
+
* Used to clear stale group-level field errors on subsequent runs without
|
|
796
|
+
* trampling errors set by the parent form's validators.
|
|
797
|
+
*/
|
|
798
|
+
private _lastDistributedFieldNames;
|
|
799
|
+
private fieldInfo;
|
|
800
|
+
constructor(opts: FormGroupApiOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TSubmitMeta, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>);
|
|
801
|
+
/**
|
|
802
|
+
* Updates the field instance with new options.
|
|
803
|
+
*/
|
|
804
|
+
update: (opts: FormGroupApiOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TSubmitMeta, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>) => void;
|
|
805
|
+
/**
|
|
806
|
+
* @private
|
|
807
|
+
*/
|
|
808
|
+
runValidator<TValue extends TStandardSchemaValidatorValue<TData> & {
|
|
809
|
+
groupApi: AnyFormGroupApi;
|
|
810
|
+
}, TType extends 'validate' | 'validateAsync'>(props: {
|
|
811
|
+
validate: TType extends 'validate' ? FormGroupValidateOrFn<any, any, any> : FormGroupAsyncValidateOrFn<any, any, any>;
|
|
812
|
+
value: TValue;
|
|
813
|
+
type: TType;
|
|
814
|
+
}): unknown;
|
|
815
|
+
mount: () => () => void;
|
|
816
|
+
/**
|
|
817
|
+
* Sets the field value and run the `change` validator.
|
|
818
|
+
*/
|
|
819
|
+
setValue: (updater: Updater<TData>, options?: UpdateMetaOptions) => void;
|
|
820
|
+
getMeta: () => FormGroupMeta<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync>;
|
|
821
|
+
/**
|
|
822
|
+
* Sets the field metadata.
|
|
823
|
+
*/
|
|
824
|
+
setMeta: (updater: Updater<FieldLikeMetaBase<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync>>) => void;
|
|
825
|
+
/**
|
|
826
|
+
* Gets the field information object.
|
|
827
|
+
*/
|
|
828
|
+
getInfo: () => FieldInfo<TParentData>;
|
|
829
|
+
/**
|
|
830
|
+
* @private
|
|
831
|
+
*/
|
|
832
|
+
getRelatedFields: () => AnyFieldApi[];
|
|
833
|
+
/**
|
|
834
|
+
* @private
|
|
835
|
+
*/
|
|
836
|
+
getRelatedFieldMetasDerived: () => (FieldLikeMetaBase<any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any> & FieldLikeMetaDerived<any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any> & {
|
|
837
|
+
name: string;
|
|
838
|
+
})[];
|
|
839
|
+
/**
|
|
840
|
+
* @private
|
|
841
|
+
*
|
|
842
|
+
* Builds a fully-qualified field name from a path that is relative to this
|
|
843
|
+
* group, supporting both dot (`name`, `nested.value`) and bracket
|
|
844
|
+
* (`[0].name`) notation.
|
|
845
|
+
*/
|
|
846
|
+
private buildChildFieldName;
|
|
847
|
+
/**
|
|
848
|
+
* @private
|
|
849
|
+
*
|
|
850
|
+
* Distributes a `{ fields: { ... } }` payload returned by one of this
|
|
851
|
+
* group's own validators onto the corresponding child fields. Tracks
|
|
852
|
+
* which fields have been touched so subsequent runs can clear stale
|
|
853
|
+
* errors without trampling errors set by the parent form's validators.
|
|
854
|
+
*/
|
|
855
|
+
private distributeFieldErrors;
|
|
856
|
+
/**
|
|
857
|
+
* @private
|
|
858
|
+
*/
|
|
859
|
+
validateSync: (cause: ValidationCause, errorFromForm: ValidationErrorMap, opts?: {
|
|
860
|
+
skipRelatedFieldValidation?: boolean;
|
|
861
|
+
}) => {
|
|
862
|
+
hasErrored: boolean;
|
|
863
|
+
};
|
|
864
|
+
/**
|
|
865
|
+
* @private
|
|
866
|
+
*/
|
|
867
|
+
validateAsync: (cause: ValidationCause, formValidationResultPromise: Promise<FieldErrorMapFromValidator<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync>>, opts?: {
|
|
868
|
+
skipRelatedFieldValidation?: boolean;
|
|
869
|
+
}) => Promise<unknown[]>;
|
|
870
|
+
/**
|
|
871
|
+
* Validates all fields according to the FIELD level validators.
|
|
872
|
+
* This will ignore FORM level validators, use form.validate({ValidationCause}) for a complete validation
|
|
873
|
+
*/
|
|
874
|
+
validateAllFields: (cause: ValidationCause) => Promise<unknown[]>;
|
|
875
|
+
validateArrayFieldsStartingFrom: <TField extends DeepKeysOfType<TParentData, any[]>>(field: TField, index: number, cause: ValidationCause) => Promise<unknown[]>;
|
|
876
|
+
validateField: <TField extends DeepKeysOfType<TParentData, any>>(field: TField, cause: ValidationCause) => any[] | Promise<any[]>;
|
|
877
|
+
getFieldValue: <TField extends DeepKeysOfType<TParentData, any>>(field: TField) => DeepValue<TParentData, TField>;
|
|
878
|
+
getFieldMeta: <TField extends DeepKeysOfType<TParentData, any>>(field: TField) => AnyFieldLikeMeta | undefined;
|
|
879
|
+
setFieldMeta: <TField extends DeepKeysOfType<TParentData, any>>(field: TField, updater: Updater<AnyFieldLikeMetaBase>) => void;
|
|
880
|
+
setFieldValue: <TField extends DeepKeysOfType<TParentData, any>>(field: TField, value: any) => void;
|
|
881
|
+
deleteField: <TField extends DeepKeysOfType<TParentData, any>>(field: TField) => void;
|
|
882
|
+
pushFieldValue: <TField extends DeepKeysOfType<TParentData, any[]>>(field: TField, value: any) => void;
|
|
883
|
+
insertFieldValue: <TField extends DeepKeysOfType<TParentData, any[]>>(field: TField, index: number, value: any) => Promise<void>;
|
|
884
|
+
replaceFieldValue: <TField extends DeepKeysOfType<TParentData, any[]>>(field: TField, index: number, value: any) => Promise<void>;
|
|
885
|
+
swapFieldValues: <TField extends DeepKeysOfType<TParentData, any[]>>(field: TField, index1: number, index2: number) => void;
|
|
886
|
+
moveFieldValues: <TField extends DeepKeysOfType<TParentData, any[]>>(field: TField, fromIndex: number, toIndex: number) => void;
|
|
887
|
+
clearFieldValues: <TField extends DeepKeysOfType<TParentData, any[]>>(field: TField) => void;
|
|
888
|
+
resetField: <TField extends DeepKeysOfType<TParentData, any>>(field: TField) => void;
|
|
889
|
+
removeFieldValue: <TField extends DeepKeysOfType<TParentData, any[]>>(field: TField, index: number) => Promise<void>;
|
|
890
|
+
areRelatedFieldsValid: () => boolean;
|
|
891
|
+
/**
|
|
892
|
+
* Validates the form group and all related children.
|
|
893
|
+
*/
|
|
894
|
+
validate: (cause: ValidationCause, opts?: {
|
|
895
|
+
skipFormValidation?: boolean;
|
|
896
|
+
skipRelatedFieldValidation?: boolean;
|
|
897
|
+
}) => ValidationError[] | Promise<ValidationError[]>;
|
|
898
|
+
/**
|
|
899
|
+
* @private
|
|
900
|
+
*/
|
|
901
|
+
triggerOnChangeListener: () => void;
|
|
902
|
+
/**
|
|
903
|
+
* @private
|
|
904
|
+
*/
|
|
905
|
+
triggerOnSubmitListener: () => void;
|
|
906
|
+
handleSubmit(): Promise<void>;
|
|
907
|
+
handleSubmit(submitMeta: TSubmitMeta): Promise<void>;
|
|
908
|
+
/**
|
|
909
|
+
* Handles the form submission, performs validation, and calls the appropriate onSubmit or onSubmitInvalid callbacks.
|
|
910
|
+
*/
|
|
911
|
+
_handleSubmit: (submitMeta?: TSubmitMeta) => Promise<void>;
|
|
912
|
+
}
|
|
913
|
+
//#endregion
|
|
914
|
+
//#region ../../node_modules/.pnpm/@tanstack+form-core@1.33.5/node_modules/@tanstack/form-core/dist/esm/types.d.ts
|
|
915
|
+
type ValidationError = unknown;
|
|
916
|
+
type ValidationSource = 'form' | 'field';
|
|
917
|
+
/**
|
|
918
|
+
* "server" is only intended for SSR/SSG validation and should not execute anything
|
|
919
|
+
* @private
|
|
920
|
+
*/
|
|
921
|
+
type ValidationCause = 'change' | 'blur' | 'submit' | 'mount' | 'server' | 'dynamic';
|
|
922
|
+
/**
|
|
923
|
+
* @private
|
|
924
|
+
*/
|
|
925
|
+
type ListenerCause = 'change' | 'blur' | 'submit' | 'mount';
|
|
926
|
+
/**
|
|
927
|
+
* @private
|
|
928
|
+
*/
|
|
929
|
+
type ValidationErrorMapKeys = `on${Capitalize<ValidationCause>}`;
|
|
930
|
+
/**
|
|
931
|
+
* @private
|
|
932
|
+
*/
|
|
933
|
+
type ValidationErrorMap<TOnMountReturn = unknown, TOnChangeReturn = unknown, TOnChangeAsyncReturn = unknown, TOnBlurReturn = unknown, TOnBlurAsyncReturn = unknown, TOnSubmitReturn = unknown, TOnSubmitAsyncReturn = unknown, TOnDynamicReturn = unknown, TOnDynamicAsyncReturn = unknown, TOnServerReturn = unknown> = {
|
|
934
|
+
onMount?: TOnMountReturn;
|
|
935
|
+
onChange?: TOnChangeReturn | TOnChangeAsyncReturn;
|
|
936
|
+
onBlur?: TOnBlurReturn | TOnBlurAsyncReturn;
|
|
937
|
+
onSubmit?: TOnSubmitReturn | TOnSubmitAsyncReturn;
|
|
938
|
+
onDynamic?: TOnDynamicReturn | TOnDynamicAsyncReturn;
|
|
939
|
+
onServer?: TOnServerReturn;
|
|
940
|
+
};
|
|
941
|
+
/**
|
|
942
|
+
* @private allows tracking the source of the errors in the error map
|
|
943
|
+
*/
|
|
944
|
+
type ValidationErrorMapSource = {
|
|
945
|
+
onMount?: ValidationSource;
|
|
946
|
+
onChange?: ValidationSource;
|
|
947
|
+
onBlur?: ValidationSource;
|
|
948
|
+
onSubmit?: ValidationSource;
|
|
949
|
+
onServer?: ValidationSource;
|
|
950
|
+
onDynamic?: ValidationSource;
|
|
951
|
+
};
|
|
952
|
+
/**
|
|
953
|
+
* @private
|
|
954
|
+
*/
|
|
955
|
+
type FormValidationErrorMap<TFormData = unknown, TOnMountReturn = unknown, TOnChangeReturn = unknown, TOnChangeAsyncReturn = unknown, TOnBlurReturn = unknown, TOnBlurAsyncReturn = unknown, TOnSubmitReturn = unknown, TOnSubmitAsyncReturn = unknown, TOnDynamicReturn = unknown, TOnDynamicAsyncReturn = unknown, TOnServerReturn = unknown> = {
|
|
956
|
+
onMount?: TOnMountReturn | GlobalFormValidationError<TFormData>;
|
|
957
|
+
onChange?: TOnChangeReturn | TOnChangeAsyncReturn | GlobalFormValidationError<TFormData>;
|
|
958
|
+
onBlur?: TOnBlurReturn | TOnBlurAsyncReturn | GlobalFormValidationError<TFormData>;
|
|
959
|
+
onSubmit?: TOnSubmitReturn | TOnSubmitAsyncReturn | GlobalFormValidationError<TFormData>;
|
|
960
|
+
onDynamic?: TOnDynamicReturn | TOnDynamicAsyncReturn | GlobalFormValidationError<TFormData>;
|
|
961
|
+
onServer?: TOnServerReturn;
|
|
962
|
+
};
|
|
963
|
+
/**
|
|
964
|
+
* @private
|
|
965
|
+
*
|
|
966
|
+
* @example
|
|
967
|
+
* ```tsx
|
|
968
|
+
* {
|
|
969
|
+
* form: 'This form contains an error',
|
|
970
|
+
* fields: {
|
|
971
|
+
* age: "Must be 13 or older to register"
|
|
972
|
+
* }
|
|
973
|
+
* }
|
|
974
|
+
* ````
|
|
975
|
+
*/
|
|
976
|
+
type GlobalFormValidationError<TFormData> = {
|
|
977
|
+
form?: ValidationError;
|
|
978
|
+
fields: Partial<Record<DeepKeys<TFormData>, ValidationError>>;
|
|
979
|
+
};
|
|
980
|
+
type ExtractGlobalFormError<TFormError> = TFormError extends GlobalFormValidationError<any> ? TFormError['form'] : TFormError;
|
|
981
|
+
/**
|
|
982
|
+
* @private
|
|
983
|
+
*/
|
|
984
|
+
interface UpdateMetaOptions {
|
|
985
|
+
/**
|
|
986
|
+
* @default false
|
|
987
|
+
*/
|
|
988
|
+
dontUpdateMeta?: boolean;
|
|
989
|
+
/**
|
|
990
|
+
* @default false
|
|
991
|
+
*/
|
|
992
|
+
dontValidate?: boolean;
|
|
993
|
+
/**
|
|
994
|
+
* @default false
|
|
995
|
+
*/
|
|
996
|
+
dontRunListeners?: boolean;
|
|
997
|
+
}
|
|
998
|
+
/**
|
|
999
|
+
* @private
|
|
1000
|
+
*/
|
|
1001
|
+
interface FormLikeAPI<TFormData, TSubmitMeta> {
|
|
1002
|
+
/**
|
|
1003
|
+
* Validates all fields using the correct handlers for a given validation cause.
|
|
1004
|
+
*/
|
|
1005
|
+
validateAllFields: (cause: ValidationCause) => Promise<unknown[]>;
|
|
1006
|
+
/**
|
|
1007
|
+
* Validates the children of a specified array in the form starting from a given index until the end using the correct handlers for a given validation type.
|
|
1008
|
+
*/
|
|
1009
|
+
validateArrayFieldsStartingFrom: <TField extends DeepKeysOfType<TFormData, any[]>>(field: TField, index: number, cause: ValidationCause) => Promise<unknown[]>;
|
|
1010
|
+
/**
|
|
1011
|
+
* Validates a specified field in the form using the correct handlers for a given validation type.
|
|
1012
|
+
*/
|
|
1013
|
+
validateField: <TField extends DeepKeys<TFormData>>(field: TField, cause: ValidationCause) => unknown[] | Promise<unknown[]>;
|
|
1014
|
+
/**
|
|
1015
|
+
* Handles the form submission, performs validation, and calls the appropriate onSubmit or onSubmitInvalid callbacks.
|
|
1016
|
+
*/
|
|
1017
|
+
handleSubmit(): Promise<void>;
|
|
1018
|
+
handleSubmit(submitMeta: TSubmitMeta): Promise<void>;
|
|
1019
|
+
/**
|
|
1020
|
+
* Gets the value of the specified field.
|
|
1021
|
+
*/
|
|
1022
|
+
getFieldValue: <TField extends DeepKeys<TFormData>>(field: TField) => DeepValue<TFormData, TField>;
|
|
1023
|
+
/**
|
|
1024
|
+
* Gets the metadata of the specified field.
|
|
1025
|
+
*/
|
|
1026
|
+
getFieldMeta: <TField extends DeepKeys<TFormData>>(field: TField) => AnyFieldLikeMeta | undefined;
|
|
1027
|
+
/**
|
|
1028
|
+
* Updates the metadata of the specified field.
|
|
1029
|
+
*/
|
|
1030
|
+
setFieldMeta: <TField extends DeepKeys<TFormData>>(field: TField, updater: Updater<AnyFieldLikeMetaBase>) => void;
|
|
1031
|
+
/**
|
|
1032
|
+
* Sets the value of the specified field and optionally updates the touched state.
|
|
1033
|
+
*/
|
|
1034
|
+
setFieldValue: <TField extends DeepKeys<TFormData>>(field: TField, updater: Updater<DeepValue<TFormData, TField>>, opts?: UpdateMetaOptions) => void;
|
|
1035
|
+
/**
|
|
1036
|
+
* Delete the specified field. Also deletes all subfields if there are any.
|
|
1037
|
+
*/
|
|
1038
|
+
deleteField: <TField extends DeepKeys<TFormData>>(field: TField) => void;
|
|
1039
|
+
/**
|
|
1040
|
+
* Pushes a value into an array field.
|
|
1041
|
+
*/
|
|
1042
|
+
pushFieldValue: <TField extends DeepKeysOfType<TFormData, any[]>>(field: TField, value: DeepValue<TFormData, TField> extends any[] ? DeepValue<TFormData, TField>[number] : never, opts?: UpdateMetaOptions) => void;
|
|
1043
|
+
/**
|
|
1044
|
+
* Insert a value into an array field at the specified index.
|
|
1045
|
+
*/
|
|
1046
|
+
insertFieldValue: <TField extends DeepKeysOfType<TFormData, any[]>>(field: TField, index: number, value: DeepValue<TFormData, TField> extends any[] ? DeepValue<TFormData, TField>[number] : never, opts?: UpdateMetaOptions) => Promise<void>;
|
|
1047
|
+
/**
|
|
1048
|
+
* Replaces a value into an array field at the specified index.
|
|
1049
|
+
*/
|
|
1050
|
+
replaceFieldValue: <TField extends DeepKeysOfType<TFormData, any[]>>(field: TField, index: number, value: DeepValue<TFormData, TField> extends any[] ? DeepValue<TFormData, TField>[number] : never, opts?: UpdateMetaOptions) => Promise<void>;
|
|
1051
|
+
/**
|
|
1052
|
+
* Removes a value from an array field at the specified index.
|
|
1053
|
+
*/
|
|
1054
|
+
removeFieldValue: <TField extends DeepKeysOfType<TFormData, any[]>>(field: TField, index: number, opts?: UpdateMetaOptions) => Promise<void>;
|
|
1055
|
+
/**
|
|
1056
|
+
* Swaps the values at the specified indices within an array field.
|
|
1057
|
+
*/
|
|
1058
|
+
swapFieldValues: <TField extends DeepKeysOfType<TFormData, any[]>>(field: TField, index1: number, index2: number, opts?: UpdateMetaOptions) => void;
|
|
1059
|
+
/**
|
|
1060
|
+
* Moves the value at the first specified index to the second specified index within an array field.
|
|
1061
|
+
*/
|
|
1062
|
+
moveFieldValues: <TField extends DeepKeysOfType<TFormData, any[]>>(field: TField, index1: number, index2: number, opts?: UpdateMetaOptions) => void;
|
|
1063
|
+
/**
|
|
1064
|
+
* Clear all values within an array field.
|
|
1065
|
+
*/
|
|
1066
|
+
clearFieldValues: <TField extends DeepKeysOfType<TFormData, any[]>>(field: TField, opts?: UpdateMetaOptions) => void;
|
|
1067
|
+
/**
|
|
1068
|
+
* Resets the field value and meta to default state
|
|
1069
|
+
*/
|
|
1070
|
+
resetField: <TField extends DeepKeys<TFormData>>(field: TField) => void;
|
|
1071
|
+
}
|
|
1072
|
+
type UnwrapFormAsyncValidateOrFnForInner<TValidateOrFn extends undefined | FormAsyncValidateOrFn<any>> = [TValidateOrFn] extends [FormValidateAsyncFn<any>] ? Awaited<ReturnType<TValidateOrFn>> : [TValidateOrFn] extends [StandardSchemaV1<infer TOut, any>] ? StandardBrandedSchemaV1<TOut> : undefined;
|
|
1073
|
+
type UnwrapFieldAsyncValidateOrFn<TName extends string, TValidateOrFn extends undefined | FieldAsyncValidateOrFn<any, any, any> | FormGroupAsyncValidateOrFn<any, any>, TFormValidateOrFn extends undefined | FormAsyncValidateOrFn<any>> = ([TFormValidateOrFn] extends [StandardSchemaV1<any, infer TStandardOut>] ? TName extends keyof TStandardOut ? StandardSchemaV1Issue[] : undefined : undefined) | (UnwrapFormAsyncValidateOrFnForInner<TFormValidateOrFn> extends (infer TFormValidateVal) ? TFormValidateVal extends {
|
|
1074
|
+
__standardSchemaV1: true;
|
|
1075
|
+
} ? [DeepValue<TFormValidateVal, TName>] extends [never] ? undefined : StandardSchemaV1Issue[] : TFormValidateVal extends {
|
|
1076
|
+
fields: any;
|
|
1077
|
+
} ? TName extends keyof TFormValidateVal['fields'] ? TFormValidateVal['fields'][TName] : undefined : undefined : never) | ([TValidateOrFn] extends [FieldValidateAsyncFn<any, any, any>] ? Awaited<ReturnType<TValidateOrFn>> : [TValidateOrFn] extends [StandardSchemaV1<any, any>] ? StandardSchemaV1Issue[] : undefined) | ([TValidateOrFn] extends [FormGroupValidateAsyncFn<any, any, any>] ? Awaited<ReturnType<TValidateOrFn>> : [TValidateOrFn] extends [StandardSchemaV1<any, any>] ? StandardSchemaV1Issue[] : undefined);
|
|
1078
|
+
/**
|
|
1079
|
+
* @private
|
|
1080
|
+
*/
|
|
1081
|
+
type FieldErrorMapFromValidator<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName>, TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChangeAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnBlurAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnSubmitAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>> = Partial<Record<DeepKeys<TParentData>, ValidationErrorMap<TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync>>>;
|
|
1082
|
+
type StandardBrandedSchemaV1<T> = T & {
|
|
1083
|
+
__standardSchemaV1: true;
|
|
1084
|
+
};
|
|
1085
|
+
type UnwrapFormValidateOrFnForInner<TValidateOrFn extends undefined | FormValidateOrFn<any>> = [TValidateOrFn] extends [FormValidateFn<any>] ? ReturnType<TValidateOrFn> : [TValidateOrFn] extends [StandardSchemaV1<infer TOut, any>] ? StandardBrandedSchemaV1<TOut> : undefined;
|
|
1086
|
+
type UnwrapFieldValidateOrFn<TName extends string, TValidateOrFn extends undefined | FieldValidateOrFn<any, any, any> | FormGroupValidateOrFn<any, any, any>, TFormValidateOrFn extends undefined | FormValidateOrFn<any>> = ([TFormValidateOrFn] extends [StandardSchemaV1<any, infer TStandardOut>] ? TName extends keyof TStandardOut ? StandardSchemaV1Issue[] : undefined : undefined) | (UnwrapFormValidateOrFnForInner<TFormValidateOrFn> extends (infer TFormValidateVal) ? TFormValidateVal extends {
|
|
1087
|
+
__standardSchemaV1: true;
|
|
1088
|
+
} ? [DeepValue<TFormValidateVal, TName>] extends [never] ? undefined : StandardSchemaV1Issue[] : TFormValidateVal extends {
|
|
1089
|
+
fields: any;
|
|
1090
|
+
} ? TName extends keyof TFormValidateVal['fields'] ? TFormValidateVal['fields'][TName] : undefined : undefined : never) | ([TValidateOrFn] extends [StandardSchemaV1<any, any>] ? StandardSchemaV1Issue[] : [TValidateOrFn] extends [FieldValidateFn<any, any, any>] ? ReturnType<TValidateOrFn> : undefined) | ([TValidateOrFn] extends [StandardSchemaV1<any, any>] ? StandardSchemaV1Issue[] : [TValidateOrFn] extends [FormGroupValidateFn<any, any, any>] ? ReturnType<TValidateOrFn> : undefined);
|
|
1091
|
+
/**
|
|
1092
|
+
* @private
|
|
1093
|
+
*/
|
|
1094
|
+
type FieldLikeMetaBase<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName>, TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChangeAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnBlurAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnSubmitAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnDynamic extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnDynamicAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TFormOnMount extends undefined | FormValidateOrFn<TParentData>, TFormOnChange extends undefined | FormValidateOrFn<TParentData>, TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnBlur extends undefined | FormValidateOrFn<TParentData>, TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>, TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>, TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>> = {
|
|
1095
|
+
/**
|
|
1096
|
+
* A flag indicating whether the field has been touched.
|
|
1097
|
+
*/
|
|
1098
|
+
isTouched: boolean;
|
|
1099
|
+
/**
|
|
1100
|
+
* A flag indicating whether the field has been blurred.
|
|
1101
|
+
*/
|
|
1102
|
+
isBlurred: boolean;
|
|
1103
|
+
/**
|
|
1104
|
+
* A flag that is `true` if the field's value has been modified by the user. Opposite of `isPristine`.
|
|
1105
|
+
*/
|
|
1106
|
+
isDirty: boolean;
|
|
1107
|
+
/**
|
|
1108
|
+
* A map of errors related to the field value.
|
|
1109
|
+
*/
|
|
1110
|
+
errorMap: ValidationErrorMap<UnwrapFieldValidateOrFn<TName, TOnMount, TFormOnMount>, UnwrapFieldValidateOrFn<TName, TOnChange, TFormOnChange>, UnwrapFieldAsyncValidateOrFn<TName, TOnChangeAsync, TFormOnChangeAsync>, UnwrapFieldValidateOrFn<TName, TOnBlur, TFormOnBlur>, UnwrapFieldAsyncValidateOrFn<TName, TOnBlurAsync, TFormOnBlurAsync>, UnwrapFieldValidateOrFn<TName, TOnSubmit, TFormOnSubmit>, UnwrapFieldAsyncValidateOrFn<TName, TOnSubmitAsync, TFormOnSubmitAsync>, UnwrapFieldValidateOrFn<TName, TOnDynamic, TFormOnDynamic>, UnwrapFieldAsyncValidateOrFn<TName, TOnDynamicAsync, TFormOnDynamicAsync>>;
|
|
1111
|
+
/**
|
|
1112
|
+
* @private allows tracking the source of the errors in the error map
|
|
1113
|
+
*/
|
|
1114
|
+
errorSourceMap: ValidationErrorMapSource;
|
|
1115
|
+
/**
|
|
1116
|
+
* A flag indicating whether the field is currently being validated.
|
|
1117
|
+
*/
|
|
1118
|
+
isValidating: boolean;
|
|
1119
|
+
/**
|
|
1120
|
+
* @private
|
|
1121
|
+
* Counter for tracking active async validations to prevent race conditions
|
|
1122
|
+
* when multiple validations finish at the same time.
|
|
1123
|
+
*
|
|
1124
|
+
* NOTE: This field is intentionally internal (prefixed with `_`) and is not
|
|
1125
|
+
* part of the public API — do not read or rely on it from external code.
|
|
1126
|
+
*/
|
|
1127
|
+
_pendingValidationsCount: number;
|
|
1128
|
+
/**
|
|
1129
|
+
* @private a counter that is incremented every time a structural array
|
|
1130
|
+
* operation (push, insert, remove, swap, move, replace, clear) modifies
|
|
1131
|
+
* the value of an array field. Adapters can subscribe to this to trigger
|
|
1132
|
+
* re-renders for `mode="array"` fields without having to subscribe to the
|
|
1133
|
+
* full field value.
|
|
1134
|
+
*/
|
|
1135
|
+
_arrayVersion: number;
|
|
1136
|
+
};
|
|
1137
|
+
/**
|
|
1138
|
+
* @private
|
|
1139
|
+
*/
|
|
1140
|
+
type AnyFieldLikeMetaBase = FieldLikeMetaBase<any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any>;
|
|
1141
|
+
/**
|
|
1142
|
+
* @private
|
|
1143
|
+
*/
|
|
1144
|
+
type FieldLikeMetaDerived<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName>, TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChangeAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnBlurAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnSubmitAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnDynamic extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnDynamicAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TFormOnMount extends undefined | FormValidateOrFn<TParentData>, TFormOnChange extends undefined | FormValidateOrFn<TParentData>, TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnBlur extends undefined | FormValidateOrFn<TParentData>, TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>, TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>, TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>> = {
|
|
1145
|
+
/**
|
|
1146
|
+
* An array of errors related to the field value.
|
|
1147
|
+
*/
|
|
1148
|
+
errors: Array<UnwrapOneLevelOfArray<UnwrapFieldValidateOrFn<TName, TOnMount, TFormOnMount>> | UnwrapOneLevelOfArray<UnwrapFieldValidateOrFn<TName, TOnChange, TFormOnChange>> | UnwrapOneLevelOfArray<UnwrapFieldAsyncValidateOrFn<TName, TOnChangeAsync, TFormOnChangeAsync>> | UnwrapOneLevelOfArray<UnwrapFieldValidateOrFn<TName, TOnBlur, TFormOnBlur>> | UnwrapOneLevelOfArray<UnwrapFieldAsyncValidateOrFn<TName, TOnBlurAsync, TFormOnBlurAsync>> | UnwrapOneLevelOfArray<UnwrapFieldValidateOrFn<TName, TOnSubmit, TFormOnSubmit>> | UnwrapOneLevelOfArray<UnwrapFieldAsyncValidateOrFn<TName, TOnSubmitAsync, TFormOnSubmitAsync>> | UnwrapOneLevelOfArray<UnwrapFieldValidateOrFn<TName, TOnDynamic, TFormOnDynamic>> | UnwrapOneLevelOfArray<UnwrapFieldAsyncValidateOrFn<TName, TOnDynamicAsync, TFormOnDynamicAsync>>>;
|
|
1149
|
+
/**
|
|
1150
|
+
* A flag that is `true` if the field's value has not been modified by the user. Opposite of `isDirty`.
|
|
1151
|
+
*/
|
|
1152
|
+
isPristine: boolean;
|
|
1153
|
+
/**
|
|
1154
|
+
* A boolean indicating if the field is valid. Evaluates `true` if there are no field errors.
|
|
1155
|
+
*/
|
|
1156
|
+
isValid: boolean;
|
|
1157
|
+
/**
|
|
1158
|
+
* A flag indicating whether the field's current value is the default value
|
|
1159
|
+
*/
|
|
1160
|
+
isDefaultValue: boolean;
|
|
1161
|
+
};
|
|
1162
|
+
/**
|
|
1163
|
+
* @private
|
|
1164
|
+
* An object type representing the metadata of a field in a form.
|
|
1165
|
+
*/
|
|
1166
|
+
type FieldLikeMeta<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName>, TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChangeAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnBlurAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnSubmitAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnDynamic extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnDynamicAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TFormOnMount extends undefined | FormValidateOrFn<TParentData>, TFormOnChange extends undefined | FormValidateOrFn<TParentData>, TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnBlur extends undefined | FormValidateOrFn<TParentData>, TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>, TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>, TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>> = FieldLikeMetaBase<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync> & FieldLikeMetaDerived<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync>;
|
|
1167
|
+
/**
|
|
1168
|
+
* @private
|
|
1169
|
+
*/
|
|
1170
|
+
type AnyFieldLikeMeta = FieldLikeMeta<any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any>;
|
|
1171
|
+
/**
|
|
1172
|
+
* @private
|
|
1173
|
+
* An object type representing the state of a field.
|
|
1174
|
+
*/
|
|
1175
|
+
type FieldLikeState<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName>, TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnChangeAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnBlurAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnSubmitAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TOnDynamic extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, TOnDynamicAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, TFormOnMount extends undefined | FormValidateOrFn<TParentData>, TFormOnChange extends undefined | FormValidateOrFn<TParentData>, TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnBlur extends undefined | FormValidateOrFn<TParentData>, TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>, TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>, TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>, TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>> = {
|
|
1176
|
+
/**
|
|
1177
|
+
* The current value of the field.
|
|
1178
|
+
*/
|
|
1179
|
+
value: TData;
|
|
1180
|
+
/**
|
|
1181
|
+
* The current metadata of the field.
|
|
1182
|
+
*/
|
|
1183
|
+
meta: FieldLikeMeta<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync>;
|
|
1184
|
+
};
|
|
1185
|
+
/**
|
|
1186
|
+
* @private
|
|
1187
|
+
* An object type representing the options for a field in a form.
|
|
1188
|
+
*/
|
|
1189
|
+
interface FieldLikeOptions<TParentData, TName extends DeepKeys<TParentData>, TData extends DeepValue<TParentData, TName>, in out TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnChangeAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnBlurAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnSubmitAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnDynamic extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnDynamicAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>> {
|
|
1190
|
+
/**
|
|
1191
|
+
* The field name. The type will be `DeepKeys<TParentData>` to ensure your name is a deep key of the parent dataset.
|
|
1192
|
+
*/
|
|
1193
|
+
name: TName;
|
|
1194
|
+
/**
|
|
1195
|
+
* An optional default value for the field.
|
|
1196
|
+
*/
|
|
1197
|
+
defaultValue?: NoInfer<TData>;
|
|
1198
|
+
/**
|
|
1199
|
+
* The default time to debounce async validation if there is not a more specific debounce time passed.
|
|
1200
|
+
*/
|
|
1201
|
+
asyncDebounceMs?: number;
|
|
1202
|
+
/**
|
|
1203
|
+
* If `true`, always run async validation, even if there are errors emitted during synchronous validation.
|
|
1204
|
+
*/
|
|
1205
|
+
asyncAlways?: boolean;
|
|
1206
|
+
/**
|
|
1207
|
+
* An optional object with default metadata for the field.
|
|
1208
|
+
*/
|
|
1209
|
+
defaultMeta?: Partial<FieldLikeMeta<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, any, any, any, any, any, any, any, any, any>>;
|
|
1210
|
+
/**
|
|
1211
|
+
* Disable the `flat(1)` operation on `field.errors`. This is useful if you want to keep the error structure as is. Not suggested for most use-cases.
|
|
1212
|
+
*/
|
|
1213
|
+
disableErrorFlat?: boolean;
|
|
1214
|
+
}
|
|
1215
|
+
/**
|
|
1216
|
+
* @private
|
|
1217
|
+
* An object type representing the required options for the FieldApi class.
|
|
1218
|
+
*/
|
|
1219
|
+
interface FieldLikeApiOptions<in out TParentData, in out TName extends DeepKeys<TParentData>, in out TData extends DeepValue<TParentData, TName>, in out TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnChangeAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnBlurAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnSubmitAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnDynamic extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnDynamicAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TFormOnMount extends undefined | FormValidateOrFn<TParentData>, in out TFormOnChange extends undefined | FormValidateOrFn<TParentData>, in out TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnBlur extends undefined | FormValidateOrFn<TParentData>, in out TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>, in out TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>, in out TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>, in out TParentSubmitMeta> extends FieldLikeOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync> {
|
|
1220
|
+
form: FormApi<TParentData, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta>;
|
|
1221
|
+
}
|
|
1222
|
+
/**
|
|
1223
|
+
* @private
|
|
1224
|
+
*/
|
|
1225
|
+
interface FieldLikeAPI<in out TParentData, in out TName extends DeepKeys<TParentData>, in out TData extends DeepValue<TParentData, TName>, in out TOnMount extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnChange extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnChangeAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnBlur extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnBlurAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnSubmit extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnSubmitAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TOnDynamic extends undefined | FieldValidateOrFn<TParentData, TName, TData> | FormGroupValidateOrFn<TParentData, TName, TData>, in out TOnDynamicAsync extends undefined | FieldAsyncValidateOrFn<TParentData, TName, TData> | FormGroupAsyncValidateOrFn<TParentData, TName, TData>, in out TFormOnMount extends undefined | FormValidateOrFn<TParentData>, in out TFormOnChange extends undefined | FormValidateOrFn<TParentData>, in out TFormOnChangeAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnBlur extends undefined | FormValidateOrFn<TParentData>, in out TFormOnBlurAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnSubmit extends undefined | FormValidateOrFn<TParentData>, in out TFormOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnDynamic extends undefined | FormValidateOrFn<TParentData>, in out TFormOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TParentData>, in out TFormOnServer extends undefined | FormAsyncValidateOrFn<TParentData>, in out TParentSubmitMeta, TExtraOptions = {}> {
|
|
1226
|
+
form: AnyFormApi$1;
|
|
1227
|
+
options: FieldLikeApiOptions<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync, TFormOnServer, TParentSubmitMeta> & TExtraOptions;
|
|
1228
|
+
store: ReadonlyStore<FieldLikeState<TParentData, TName, TData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TFormOnMount, TFormOnChange, TFormOnChangeAsync, TFormOnBlur, TFormOnBlurAsync, TFormOnSubmit, TFormOnSubmitAsync, TFormOnDynamic, TFormOnDynamicAsync>>;
|
|
1229
|
+
/**
|
|
1230
|
+
* The field name.
|
|
1231
|
+
*/
|
|
1232
|
+
name: TName;
|
|
1233
|
+
mount: () => () => void;
|
|
1234
|
+
setValue: (updater: Updater<TData>, options?: UpdateMetaOptions) => void;
|
|
1235
|
+
getMeta: () => AnyFieldLikeMeta;
|
|
1236
|
+
setMeta: (updater: Updater<AnyFieldLikeMetaBase>) => void;
|
|
1237
|
+
getInfo: () => FieldInfo<TParentData>;
|
|
1238
|
+
validate: (cause: ValidationCause, opts?: {
|
|
1239
|
+
skipFormValidation?: boolean;
|
|
1240
|
+
skipGroupValidation?: boolean;
|
|
1241
|
+
}) => ValidationError[] | Promise<ValidationError[]>;
|
|
1242
|
+
/**
|
|
1243
|
+
* @private
|
|
1244
|
+
*/
|
|
1245
|
+
triggerOnChangeListener: () => void;
|
|
1246
|
+
/**
|
|
1247
|
+
* @private
|
|
1248
|
+
*/
|
|
1249
|
+
triggerOnSubmitListener: () => void;
|
|
1250
|
+
}
|
|
1251
|
+
/**
|
|
1252
|
+
* @private
|
|
1253
|
+
*/
|
|
1254
|
+
interface FieldInfo<TParentData> {
|
|
1255
|
+
instance: FieldLikeAPI<TParentData, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any, any> | null;
|
|
1256
|
+
validationMetaMap: Record<ValidationErrorMapKeys, ValidationMeta | undefined>;
|
|
1257
|
+
}
|
|
1258
|
+
//#endregion
|
|
1259
|
+
//#region ../../node_modules/.pnpm/@tanstack+form-core@1.33.5/node_modules/@tanstack/form-core/dist/esm/FormApi.d.ts
|
|
1260
|
+
/**
|
|
1261
|
+
* @private
|
|
1262
|
+
*/
|
|
1263
|
+
type FormErrorMapFromValidator<TFormData, TOnMount extends undefined | FormValidateOrFn<TFormData>, TOnChange extends undefined | FormValidateOrFn<TFormData>, TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnBlur extends undefined | FormValidateOrFn<TFormData>, TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnSubmit extends undefined | FormValidateOrFn<TFormData>, TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnDynamic extends undefined | FormValidateOrFn<TFormData>, TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>> = Partial<Record<DeepKeys<TFormData>, ValidationErrorMap<TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync>>>;
|
|
1264
|
+
type FormValidateFn<TFormData> = (props: {
|
|
1265
|
+
value: TFormData;
|
|
1266
|
+
formApi: FormApi<TFormData, any, any, any, any, any, any, any, any, any, any, any>;
|
|
1267
|
+
}) => unknown;
|
|
1268
|
+
/**
|
|
1269
|
+
* @private
|
|
1270
|
+
*/
|
|
1271
|
+
type FormValidateOrFn<TFormData> = FormValidateFn<TFormData> | StandardSchemaV1<TFormData, unknown>;
|
|
1272
|
+
type UnwrapFormValidateOrFn<TValidateOrFn extends undefined | FormValidateOrFn<any>> = [TValidateOrFn] extends [FormValidateFn<any>] ? ExtractGlobalFormError<ReturnType<TValidateOrFn>> : [TValidateOrFn] extends [StandardSchemaV1<any, any>] ? Record<string, StandardSchemaV1Issue[]> : undefined;
|
|
1273
|
+
/**
|
|
1274
|
+
* @private
|
|
1275
|
+
*/
|
|
1276
|
+
type FormValidateAsyncFn<TFormData> = (props: {
|
|
1277
|
+
value: TFormData;
|
|
1278
|
+
formApi: FormApi<TFormData, any, any, any, any, any, any, any, any, any, any, any>;
|
|
1279
|
+
signal: AbortSignal;
|
|
1280
|
+
}) => unknown | Promise<unknown>;
|
|
1281
|
+
/**
|
|
1282
|
+
* @private
|
|
1283
|
+
*/
|
|
1284
|
+
type FormAsyncValidateOrFn<TFormData> = FormValidateAsyncFn<TFormData> | StandardSchemaV1<TFormData, unknown>;
|
|
1285
|
+
type UnwrapFormAsyncValidateOrFn<TValidateOrFn extends undefined | FormAsyncValidateOrFn<any>> = [TValidateOrFn] extends [FormValidateAsyncFn<any>] ? ExtractGlobalFormError<Awaited<ReturnType<TValidateOrFn>>> : [TValidateOrFn] extends [StandardSchemaV1<any, any>] ? Record<string, StandardSchemaV1Issue[]> : undefined;
|
|
1286
|
+
interface FormValidators<TFormData, TOnMount extends undefined | FormValidateOrFn<TFormData>, TOnChange extends undefined | FormValidateOrFn<TFormData>, TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnBlur extends undefined | FormValidateOrFn<TFormData>, TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnSubmit extends undefined | FormValidateOrFn<TFormData>, TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnDynamic extends undefined | FormValidateOrFn<TFormData>, TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>> {
|
|
1287
|
+
/**
|
|
1288
|
+
* Optional function that fires as soon as the component mounts.
|
|
1289
|
+
*/
|
|
1290
|
+
onMount?: RejectPromiseValidator<TOnMount>;
|
|
1291
|
+
/**
|
|
1292
|
+
* Optional function that checks the validity of your data whenever a value changes
|
|
1293
|
+
*/
|
|
1294
|
+
onChange?: RejectPromiseValidator<TOnChange>;
|
|
1295
|
+
/**
|
|
1296
|
+
* Optional onChange asynchronous counterpart to onChange. Useful for more complex validation logic that might involve server requests.
|
|
1297
|
+
*/
|
|
1298
|
+
onChangeAsync?: TOnChangeAsync;
|
|
1299
|
+
/**
|
|
1300
|
+
* The default time in milliseconds that if set to a number larger than 0, will debounce the async validation event by this length of time in milliseconds.
|
|
1301
|
+
*/
|
|
1302
|
+
onChangeAsyncDebounceMs?: number;
|
|
1303
|
+
/**
|
|
1304
|
+
* Optional function that validates the form data when a field loses focus, returns a `FormValidationError`
|
|
1305
|
+
*/
|
|
1306
|
+
onBlur?: RejectPromiseValidator<TOnBlur>;
|
|
1307
|
+
/**
|
|
1308
|
+
* Optional onBlur asynchronous validation method for when a field loses focus returns a ` FormValidationError` or a promise of `Promise<FormValidationError>`
|
|
1309
|
+
*/
|
|
1310
|
+
onBlurAsync?: TOnBlurAsync;
|
|
1311
|
+
/**
|
|
1312
|
+
* The default time in milliseconds that if set to a number larger than 0, will debounce the async validation event by this length of time in milliseconds.
|
|
1313
|
+
*/
|
|
1314
|
+
onBlurAsyncDebounceMs?: number;
|
|
1315
|
+
onSubmit?: RejectPromiseValidator<TOnSubmit>;
|
|
1316
|
+
onSubmitAsync?: TOnSubmitAsync;
|
|
1317
|
+
onDynamic?: RejectPromiseValidator<TOnDynamic>;
|
|
1318
|
+
onDynamicAsync?: TOnDynamicAsync;
|
|
1319
|
+
onDynamicAsyncDebounceMs?: number;
|
|
1320
|
+
}
|
|
1321
|
+
interface FormListenersPropsGroup<TFormData, TOnMount extends undefined | FormValidateOrFn<TFormData>, TOnChange extends undefined | FormValidateOrFn<TFormData>, TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnBlur extends undefined | FormValidateOrFn<TFormData>, TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnSubmit extends undefined | FormValidateOrFn<TFormData>, TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnDynamic extends undefined | FormValidateOrFn<TFormData>, TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>, TSubmitMeta = never> {
|
|
1322
|
+
formApi: FormApi<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>;
|
|
1323
|
+
groupApi: AnyFormGroupApi;
|
|
1324
|
+
}
|
|
1325
|
+
interface FormListenersPropsField<TFormData, TOnMount extends undefined | FormValidateOrFn<TFormData>, TOnChange extends undefined | FormValidateOrFn<TFormData>, TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnBlur extends undefined | FormValidateOrFn<TFormData>, TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnSubmit extends undefined | FormValidateOrFn<TFormData>, TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnDynamic extends undefined | FormValidateOrFn<TFormData>, TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>, TSubmitMeta = never> {
|
|
1326
|
+
formApi: FormApi<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>;
|
|
1327
|
+
fieldApi: AnyFieldApi;
|
|
1328
|
+
}
|
|
1329
|
+
interface FormListeners<TFormData, TOnMount extends undefined | FormValidateOrFn<TFormData>, TOnChange extends undefined | FormValidateOrFn<TFormData>, TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnBlur extends undefined | FormValidateOrFn<TFormData>, TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnSubmit extends undefined | FormValidateOrFn<TFormData>, TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnDynamic extends undefined | FormValidateOrFn<TFormData>, TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>, TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>, TSubmitMeta = never> {
|
|
1330
|
+
onChange?: (props: FormListenersPropsField<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>) => void;
|
|
1331
|
+
onChangeDebounceMs?: number;
|
|
1332
|
+
onChangeGroup?: (props: FormListenersPropsGroup<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>) => void;
|
|
1333
|
+
onChangeGroupDebounceMs?: number;
|
|
1334
|
+
onBlur?: (props: {
|
|
1335
|
+
formApi: FormApi<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>;
|
|
1336
|
+
fieldApi: AnyFieldApi;
|
|
1337
|
+
}) => void;
|
|
1338
|
+
onBlurDebounceMs?: number;
|
|
1339
|
+
onMount?: (props: {
|
|
1340
|
+
formApi: FormApi<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>;
|
|
1341
|
+
}) => void;
|
|
1342
|
+
onSubmit?: (props: {
|
|
1343
|
+
formApi: FormApi<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>;
|
|
1344
|
+
meta: TSubmitMeta;
|
|
1345
|
+
}) => void;
|
|
1346
|
+
onFieldUnmount?: (props: FormListenersPropsField<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>) => void;
|
|
1347
|
+
onGroupUnmount?: (props: FormListenersPropsGroup<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>) => void;
|
|
1348
|
+
}
|
|
1349
|
+
/**
|
|
1350
|
+
* An object representing the base properties of a form, unrelated to any validators
|
|
1351
|
+
*/
|
|
1352
|
+
interface BaseFormOptions<in out TFormData, in out TSubmitMeta = never> {
|
|
1353
|
+
/**
|
|
1354
|
+
* Set initial values for your form.
|
|
1355
|
+
*/
|
|
1356
|
+
defaultValues?: TFormData;
|
|
1357
|
+
/**
|
|
1358
|
+
* onSubmitMeta, the data passed from the handleSubmit handler, to the onSubmit function props
|
|
1359
|
+
*/
|
|
1360
|
+
onSubmitMeta?: TSubmitMeta;
|
|
1361
|
+
}
|
|
1362
|
+
/**
|
|
1363
|
+
* An object representing the options for a form.
|
|
1364
|
+
*/
|
|
1365
|
+
interface FormOptions<in out TFormData, in out TOnMount extends undefined | FormValidateOrFn<TFormData>, in out TOnChange extends undefined | FormValidateOrFn<TFormData>, in out TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>, in out TOnBlur extends undefined | FormValidateOrFn<TFormData>, in out TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>, in out TOnSubmit extends undefined | FormValidateOrFn<TFormData>, in out TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>, in out TOnDynamic extends undefined | FormValidateOrFn<TFormData>, in out TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>, in out TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>, in out TSubmitMeta = never> extends BaseFormOptions<TFormData, TSubmitMeta> {
|
|
1366
|
+
/**
|
|
1367
|
+
* The form name, used for devtools and identification
|
|
1368
|
+
*/
|
|
1369
|
+
formId?: string;
|
|
1370
|
+
/**
|
|
1371
|
+
* The default state for the form.
|
|
1372
|
+
*/
|
|
1373
|
+
defaultState?: Partial<FormState<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer>>;
|
|
1374
|
+
/**
|
|
1375
|
+
* If true, always run async validation, even when sync validation has produced an error. Defaults to undefined.
|
|
1376
|
+
*/
|
|
1377
|
+
asyncAlways?: boolean;
|
|
1378
|
+
/**
|
|
1379
|
+
* Optional time in milliseconds if you want to introduce a delay before firing off an async action.
|
|
1380
|
+
*/
|
|
1381
|
+
asyncDebounceMs?: number;
|
|
1382
|
+
/**
|
|
1383
|
+
* If true, allows the form to be submitted in an invalid state i.e. canSubmit will remain true regardless of validation errors. Defaults to undefined.
|
|
1384
|
+
*/
|
|
1385
|
+
canSubmitWhenInvalid?: boolean;
|
|
1386
|
+
/**
|
|
1387
|
+
* A list of validators to pass to the form
|
|
1388
|
+
*/
|
|
1389
|
+
validators?: FormValidators<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync>;
|
|
1390
|
+
validationLogic?: ValidationLogicFn;
|
|
1391
|
+
/**
|
|
1392
|
+
* form level listeners
|
|
1393
|
+
*/
|
|
1394
|
+
listeners?: FormListeners<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>;
|
|
1395
|
+
/**
|
|
1396
|
+
* A function to be called when the form is submitted, what should happen once the user submits a valid form returns `any` or a promise `Promise<any>`
|
|
1397
|
+
*/
|
|
1398
|
+
onSubmit?: (props: {
|
|
1399
|
+
value: TFormData;
|
|
1400
|
+
formApi: FormApi<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>;
|
|
1401
|
+
meta: TSubmitMeta;
|
|
1402
|
+
}) => any | Promise<any>;
|
|
1403
|
+
/**
|
|
1404
|
+
* Specify an action for scenarios where the user tries to submit an invalid form.
|
|
1405
|
+
*/
|
|
1406
|
+
onSubmitInvalid?: (props: {
|
|
1407
|
+
value: TFormData;
|
|
1408
|
+
formApi: FormApi<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>;
|
|
1409
|
+
meta: TSubmitMeta;
|
|
1410
|
+
}) => void;
|
|
1411
|
+
transform?: (data: unknown) => unknown;
|
|
1412
|
+
}
|
|
1413
|
+
/**
|
|
1414
|
+
* An object representing the validation metadata for a field. Not intended for public usage.
|
|
1415
|
+
*/
|
|
1416
|
+
type ValidationMeta = {
|
|
1417
|
+
/**
|
|
1418
|
+
* An abort controller stored in memory to cancel previous async validation attempts.
|
|
1419
|
+
*/
|
|
1420
|
+
lastAbortController: AbortController;
|
|
1421
|
+
};
|
|
1422
|
+
/**
|
|
1423
|
+
* An object representing the current state of the form.
|
|
1424
|
+
*/
|
|
1425
|
+
type BaseFormState<in out TFormData, in out TOnMount extends undefined | FormValidateOrFn<TFormData>, in out TOnChange extends undefined | FormValidateOrFn<TFormData>, in out TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>, in out TOnBlur extends undefined | FormValidateOrFn<TFormData>, in out TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>, in out TOnSubmit extends undefined | FormValidateOrFn<TFormData>, in out TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>, in out TOnDynamic extends undefined | FormValidateOrFn<TFormData>, in out TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>, in out TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>> = {
|
|
1426
|
+
/**
|
|
1427
|
+
* The current values of the form fields.
|
|
1428
|
+
*/
|
|
1429
|
+
values: TFormData;
|
|
1430
|
+
/**
|
|
1431
|
+
* The error map for the form itself.
|
|
1432
|
+
*/
|
|
1433
|
+
errorMap: ValidationErrorMap<UnwrapFormValidateOrFn<TOnMount>, UnwrapFormValidateOrFn<TOnChange>, UnwrapFormAsyncValidateOrFn<TOnChangeAsync>, UnwrapFormValidateOrFn<TOnBlur>, UnwrapFormAsyncValidateOrFn<TOnBlurAsync>, UnwrapFormValidateOrFn<TOnSubmit>, UnwrapFormAsyncValidateOrFn<TOnSubmitAsync>, UnwrapFormValidateOrFn<TOnDynamic>, UnwrapFormAsyncValidateOrFn<TOnDynamicAsync>, UnwrapFormAsyncValidateOrFn<TOnServer>>;
|
|
1434
|
+
/**
|
|
1435
|
+
* An internal mechanism used for keeping track of validation logic in a form.
|
|
1436
|
+
*/
|
|
1437
|
+
validationMetaMap: Record<ValidationErrorMapKeys, ValidationMeta | undefined>;
|
|
1438
|
+
/**
|
|
1439
|
+
* A record of field metadata for each field in the form, not including the derived properties, like `errors` and such
|
|
1440
|
+
*/
|
|
1441
|
+
fieldMetaBase: Partial<Record<DeepKeys<TFormData>, AnyFieldLikeMetaBase>>;
|
|
1442
|
+
/**
|
|
1443
|
+
* A record of submission lifecycle state for each mounted `FormGroupApi`,
|
|
1444
|
+
* keyed by the group's fully-qualified field name. Stored on the form so
|
|
1445
|
+
* group-level state can be read from `FormApi` without having to walk the
|
|
1446
|
+
* mounted group instances.
|
|
1447
|
+
*/
|
|
1448
|
+
formGroupStateBase: Partial<Record<string, FormGroupState>>;
|
|
1449
|
+
/**
|
|
1450
|
+
* A boolean indicating if the form is currently in the process of being submitted after `handleSubmit` is called.
|
|
1451
|
+
*
|
|
1452
|
+
* Goes back to `false` when submission completes for one of the following reasons:
|
|
1453
|
+
* - the validation step returned errors.
|
|
1454
|
+
* - the `onSubmit` function has completed.
|
|
1455
|
+
*
|
|
1456
|
+
* Note: if you're running async operations in your `onSubmit` function make sure to await them to ensure `isSubmitting` is set to `false` only when the async operation completes.
|
|
1457
|
+
*
|
|
1458
|
+
* This is useful for displaying loading indicators or disabling form inputs during submission.
|
|
1459
|
+
*
|
|
1460
|
+
*/
|
|
1461
|
+
isSubmitting: boolean;
|
|
1462
|
+
/**
|
|
1463
|
+
* A boolean indicating if the `onSubmit` function has completed successfully.
|
|
1464
|
+
*
|
|
1465
|
+
* Goes back to `false` at each new submission attempt.
|
|
1466
|
+
*
|
|
1467
|
+
* Note: you can use isSubmitting to check if the form is currently submitting.
|
|
1468
|
+
*/
|
|
1469
|
+
isSubmitted: boolean;
|
|
1470
|
+
/**
|
|
1471
|
+
* A boolean indicating if the form or any of its fields are currently validating.
|
|
1472
|
+
*/
|
|
1473
|
+
isValidating: boolean;
|
|
1474
|
+
/**
|
|
1475
|
+
* A counter for tracking the number of submission attempts.
|
|
1476
|
+
*/
|
|
1477
|
+
submissionAttempts: number;
|
|
1478
|
+
/**
|
|
1479
|
+
* A boolean indicating if the last submission was successful.
|
|
1480
|
+
*/
|
|
1481
|
+
isSubmitSuccessful: boolean;
|
|
1482
|
+
/**
|
|
1483
|
+
* @private, used to force a re-evaluation of the form state when options change
|
|
1484
|
+
*/
|
|
1485
|
+
_force_re_eval?: boolean;
|
|
1486
|
+
};
|
|
1487
|
+
type DerivedFormState<in out TFormData, in out TOnMount extends undefined | FormValidateOrFn<TFormData>, in out TOnChange extends undefined | FormValidateOrFn<TFormData>, in out TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>, in out TOnBlur extends undefined | FormValidateOrFn<TFormData>, in out TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>, in out TOnSubmit extends undefined | FormValidateOrFn<TFormData>, in out TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>, in out TOnDynamic extends undefined | FormValidateOrFn<TFormData>, in out TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>, in out TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>> = {
|
|
1488
|
+
/**
|
|
1489
|
+
* A boolean indicating if the form is currently validating.
|
|
1490
|
+
*/
|
|
1491
|
+
isFormValidating: boolean;
|
|
1492
|
+
/**
|
|
1493
|
+
* A boolean indicating if the form is valid.
|
|
1494
|
+
*/
|
|
1495
|
+
isFormValid: boolean;
|
|
1496
|
+
/**
|
|
1497
|
+
* The error array for the form itself.
|
|
1498
|
+
*/
|
|
1499
|
+
errors: Array<NonNullable<UnwrapFormValidateOrFn<TOnMount> | UnwrapFormValidateOrFn<TOnChange> | UnwrapFormAsyncValidateOrFn<TOnChangeAsync> | UnwrapFormValidateOrFn<TOnBlur> | UnwrapFormAsyncValidateOrFn<TOnBlurAsync> | UnwrapFormValidateOrFn<TOnSubmit> | UnwrapFormAsyncValidateOrFn<TOnSubmitAsync> | UnwrapFormValidateOrFn<TOnDynamic> | UnwrapFormAsyncValidateOrFn<TOnDynamicAsync> | UnwrapFormAsyncValidateOrFn<TOnServer>>>;
|
|
1500
|
+
/**
|
|
1501
|
+
* A boolean indicating if any of the form fields are currently validating.
|
|
1502
|
+
*/
|
|
1503
|
+
isFieldsValidating: boolean;
|
|
1504
|
+
/**
|
|
1505
|
+
* A boolean indicating if all the form fields are valid. Evaluates `true` if there are no field errors.
|
|
1506
|
+
*/
|
|
1507
|
+
isFieldsValid: boolean;
|
|
1508
|
+
/**
|
|
1509
|
+
* A boolean indicating if any of the form fields have been touched.
|
|
1510
|
+
*/
|
|
1511
|
+
isTouched: boolean;
|
|
1512
|
+
/**
|
|
1513
|
+
* A boolean indicating if any of the form fields have been blurred.
|
|
1514
|
+
*/
|
|
1515
|
+
isBlurred: boolean;
|
|
1516
|
+
/**
|
|
1517
|
+
* A boolean indicating if any of the form's fields' values have been modified by the user. Evaluates `true` if the user have modified at least one of the fields. Opposite of `isPristine`.
|
|
1518
|
+
*/
|
|
1519
|
+
isDirty: boolean;
|
|
1520
|
+
/**
|
|
1521
|
+
* A boolean indicating if none of the form's fields' values have been modified by the user. Evaluates `true` if the user have not modified any of the fields. Opposite of `isDirty`.
|
|
1522
|
+
*/
|
|
1523
|
+
isPristine: boolean;
|
|
1524
|
+
/**
|
|
1525
|
+
* A boolean indicating if all of the form's fields are the same as default values.
|
|
1526
|
+
*/
|
|
1527
|
+
isDefaultValue: boolean;
|
|
1528
|
+
/**
|
|
1529
|
+
* A boolean indicating if the form and all its fields are valid. Evaluates `true` if there are no errors.
|
|
1530
|
+
*/
|
|
1531
|
+
isValid: boolean;
|
|
1532
|
+
/**
|
|
1533
|
+
* A boolean indicating if the form can be submitted based on its current state.
|
|
1534
|
+
*/
|
|
1535
|
+
canSubmit: boolean;
|
|
1536
|
+
/**
|
|
1537
|
+
* A record of field metadata for each field in the form.
|
|
1538
|
+
*/
|
|
1539
|
+
fieldMeta: Partial<Record<DeepKeys<TFormData>, AnyFieldLikeMeta>>;
|
|
1540
|
+
};
|
|
1541
|
+
interface FormState<in out TFormData, in out TOnMount extends undefined | FormValidateOrFn<TFormData>, in out TOnChange extends undefined | FormValidateOrFn<TFormData>, in out TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>, in out TOnBlur extends undefined | FormValidateOrFn<TFormData>, in out TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>, in out TOnSubmit extends undefined | FormValidateOrFn<TFormData>, in out TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>, in out TOnDynamic extends undefined | FormValidateOrFn<TFormData>, in out TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>, in out TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>> extends BaseFormState<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer>, DerivedFormState<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer> {}
|
|
1542
|
+
/**
|
|
1543
|
+
* @public
|
|
1544
|
+
*
|
|
1545
|
+
* A type representing the Form API with all generics set to `any` for convenience.
|
|
1546
|
+
*/
|
|
1547
|
+
type AnyFormApi$1 = FormApi<any, any, any, any, any, any, any, any, any, any, any, any>;
|
|
1548
|
+
interface ValidateOpts<TFormData> {
|
|
1549
|
+
dontUpdateFormErrorMap?: boolean;
|
|
1550
|
+
filterFieldNames?: (fieldName: DeepKeys<TFormData>) => boolean;
|
|
1551
|
+
group?: AnyFormGroupApi;
|
|
1552
|
+
}
|
|
1553
|
+
/**
|
|
1554
|
+
* We cannot use methods and must use arrow functions. Otherwise, our React adapters
|
|
1555
|
+
* will break due to loss of the method when using spread.
|
|
1556
|
+
*/
|
|
1557
|
+
/**
|
|
1558
|
+
* A class representing the Form API. It handles the logic and interactions with the form state.
|
|
1559
|
+
*
|
|
1560
|
+
* Normally, you will not need to create a new `FormApi` instance directly. Instead, you will use a framework
|
|
1561
|
+
* hook/function like `useForm` or `createForm` to create a new instance for you that uses your framework's reactivity model.
|
|
1562
|
+
* However, if you need to create a new instance manually, you can do so by calling the `new FormApi` constructor.
|
|
1563
|
+
*/
|
|
1564
|
+
declare class FormApi<in out TFormData, in out TOnMount extends undefined | FormValidateOrFn<TFormData>, in out TOnChange extends undefined | FormValidateOrFn<TFormData>, in out TOnChangeAsync extends undefined | FormAsyncValidateOrFn<TFormData>, in out TOnBlur extends undefined | FormValidateOrFn<TFormData>, in out TOnBlurAsync extends undefined | FormAsyncValidateOrFn<TFormData>, in out TOnSubmit extends undefined | FormValidateOrFn<TFormData>, in out TOnSubmitAsync extends undefined | FormAsyncValidateOrFn<TFormData>, in out TOnDynamic extends undefined | FormValidateOrFn<TFormData>, in out TOnDynamicAsync extends undefined | FormAsyncValidateOrFn<TFormData>, in out TOnServer extends undefined | FormAsyncValidateOrFn<TFormData>, in out TSubmitMeta = never> implements FormLikeAPI<TFormData, TSubmitMeta> {
|
|
1565
|
+
/**
|
|
1566
|
+
* The options for the form.
|
|
1567
|
+
*/
|
|
1568
|
+
options: FormOptions<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>;
|
|
1569
|
+
baseStore: Store<BaseFormState<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer>>;
|
|
1570
|
+
fieldMetaDerived: Store<FormState<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer>['fieldMeta']>;
|
|
1571
|
+
/**
|
|
1572
|
+
* A derived store of every mounted `FormGroupApi`'s `meta`, keyed by
|
|
1573
|
+
* group name. Mirrors `fieldMetaDerived` for fields: per-group `meta`
|
|
1574
|
+
* is computed once on the form (from `baseStore.formGroupStateBase`,
|
|
1575
|
+
* `fieldMetaDerived`, and the registered `formGroupApis`) so reads
|
|
1576
|
+
* from a `FormGroupApi.store` instance stay minimal.
|
|
1577
|
+
*/
|
|
1578
|
+
formGroupMetaDerived: ReadonlyStore<Record<string, AnyFormGroupMeta>>;
|
|
1579
|
+
store: ReadonlyStore<FormState<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer>>;
|
|
1580
|
+
/**
|
|
1581
|
+
* A record of field information for each field in the form.
|
|
1582
|
+
*/
|
|
1583
|
+
fieldInfo: Partial<Record<DeepKeys<TFormData>, FieldInfo<TFormData>>>;
|
|
1584
|
+
/**
|
|
1585
|
+
* The set of currently-mounted `FormGroupApi` instances belonging to
|
|
1586
|
+
* this form. Used by `FieldApi.validate` to cascade field-level changes
|
|
1587
|
+
* into the validators of any group that encompasses the field.
|
|
1588
|
+
*/
|
|
1589
|
+
formGroupApis: Set<AnyFormGroupApi>;
|
|
1590
|
+
get state(): FormState<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer>;
|
|
1591
|
+
/**
|
|
1592
|
+
* @private
|
|
1593
|
+
*/
|
|
1594
|
+
timeoutIds: {
|
|
1595
|
+
validations: Record<ValidationCause, ReturnType<typeof setTimeout> | null>;
|
|
1596
|
+
listeners: Record<ListenerCause, ReturnType<typeof setTimeout> | null>;
|
|
1597
|
+
formListeners: Record<ListenerCause, ReturnType<typeof setTimeout> | null>;
|
|
1598
|
+
};
|
|
1599
|
+
/**
|
|
1600
|
+
* @private
|
|
1601
|
+
*/
|
|
1602
|
+
_formId: string;
|
|
1603
|
+
/**
|
|
1604
|
+
* @private
|
|
1605
|
+
*/
|
|
1606
|
+
private _devtoolsSubmissionOverride;
|
|
1607
|
+
/**
|
|
1608
|
+
* Constructs a new `FormApi` instance with the given form options.
|
|
1609
|
+
*/
|
|
1610
|
+
constructor(opts?: FormOptions<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>);
|
|
1611
|
+
get formId(): string;
|
|
1612
|
+
/**
|
|
1613
|
+
* @private
|
|
1614
|
+
*/
|
|
1615
|
+
runValidator<TValue extends TStandardSchemaValidatorValue<TFormData> & {
|
|
1616
|
+
formApi: AnyFormApi$1;
|
|
1617
|
+
}, TType extends 'validate' | 'validateAsync'>(props: {
|
|
1618
|
+
validate: TType extends 'validate' ? FormValidateOrFn<TFormData> : FormAsyncValidateOrFn<TFormData>;
|
|
1619
|
+
value: TValue;
|
|
1620
|
+
type: TType;
|
|
1621
|
+
}): unknown;
|
|
1622
|
+
mount: () => () => void;
|
|
1623
|
+
/**
|
|
1624
|
+
* Updates the form options and form state.
|
|
1625
|
+
*/
|
|
1626
|
+
update: (options?: FormOptions<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync, TOnServer, TSubmitMeta>) => void;
|
|
1627
|
+
/**
|
|
1628
|
+
* Resets the form state to the default values.
|
|
1629
|
+
* If values are provided, the form will be reset to those values instead and the default values will be updated.
|
|
1630
|
+
*
|
|
1631
|
+
* @param values - Optional values to reset the form to.
|
|
1632
|
+
* @param opts - Optional options to control the reset behavior.
|
|
1633
|
+
*/
|
|
1634
|
+
reset: (values?: TFormData, opts?: {
|
|
1635
|
+
keepDefaultValues?: boolean;
|
|
1636
|
+
}) => void;
|
|
1637
|
+
/**
|
|
1638
|
+
* Validates all fields according to the FIELD level validators.
|
|
1639
|
+
* This will ignore FORM level validators, use form.validate({ValidationCause}) for a complete validation
|
|
1640
|
+
*/
|
|
1641
|
+
validateAllFields: (cause: ValidationCause) => Promise<unknown[]>;
|
|
1642
|
+
/**
|
|
1643
|
+
* Validates the children of a specified array in the form starting from a given index until the end using the correct handlers for a given validation type.
|
|
1644
|
+
*/
|
|
1645
|
+
validateArrayFieldsStartingFrom: <TField extends DeepKeysOfType<TFormData, any[]>>(field: TField, index: number, cause: ValidationCause) => Promise<unknown[]>;
|
|
1646
|
+
/**
|
|
1647
|
+
* Validates a specified field in the form using the correct handlers for a given validation type.
|
|
1648
|
+
*/
|
|
1649
|
+
validateField: <TField extends DeepKeys<TFormData>>(field: TField, cause: ValidationCause) => any[] | Promise<any[]>;
|
|
1650
|
+
/**
|
|
1651
|
+
* TODO: This code is copied from FieldApi, we should refactor to share
|
|
1652
|
+
* @private
|
|
1653
|
+
*/
|
|
1654
|
+
validateSync: (cause: ValidationCause, validateOpts?: ValidateOpts<TFormData>) => {
|
|
1655
|
+
hasErrored: boolean;
|
|
1656
|
+
fieldsErrorMap: FormErrorMapFromValidator<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync>;
|
|
1657
|
+
};
|
|
1658
|
+
/**
|
|
1659
|
+
* @private
|
|
1660
|
+
*/
|
|
1661
|
+
validateAsync: (cause: ValidationCause, validateOpts?: ValidateOpts<TFormData>) => Promise<FormErrorMapFromValidator<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync>>;
|
|
1662
|
+
/**
|
|
1663
|
+
* @private
|
|
1664
|
+
*/
|
|
1665
|
+
validate: (cause: ValidationCause, validateOpts?: ValidateOpts<TFormData>) => FormErrorMapFromValidator<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync> | Promise<FormErrorMapFromValidator<TFormData, TOnMount, TOnChange, TOnChangeAsync, TOnBlur, TOnBlurAsync, TOnSubmit, TOnSubmitAsync, TOnDynamic, TOnDynamicAsync>>;
|
|
1666
|
+
handleSubmit(): Promise<void>;
|
|
1667
|
+
handleSubmit(submitMeta: TSubmitMeta): Promise<void>;
|
|
1668
|
+
/**
|
|
1669
|
+
* Handles the form submission, performs validation, and calls the appropriate onSubmit or onSubmitInvalid callbacks.
|
|
1670
|
+
*/
|
|
1671
|
+
_handleSubmit: (submitMeta?: TSubmitMeta) => Promise<void>;
|
|
1672
|
+
/**
|
|
1673
|
+
* Gets the value of the specified field.
|
|
1674
|
+
*/
|
|
1675
|
+
getFieldValue: <TField extends DeepKeys<TFormData>>(field: TField) => DeepValue<TFormData, TField>;
|
|
1676
|
+
/**
|
|
1677
|
+
* Gets the metadata of the specified field.
|
|
1678
|
+
*/
|
|
1679
|
+
getFieldMeta: <TField extends DeepKeys<TFormData>>(field: TField) => AnyFieldLikeMeta | undefined;
|
|
1680
|
+
/**
|
|
1681
|
+
* Gets the derived `meta` of the form group registered at the given
|
|
1682
|
+
* name. Mirrors `getFieldMeta` for fields. Returns `undefined` if no
|
|
1683
|
+
* `FormGroupApi` with that name is currently mounted.
|
|
1684
|
+
*/
|
|
1685
|
+
getFormGroupMeta: (name: string) => AnyFormGroupMeta | undefined;
|
|
1686
|
+
/**
|
|
1687
|
+
* Gets the field info of the specified field.
|
|
1688
|
+
*/
|
|
1689
|
+
getFieldInfo: <TField extends DeepKeys<TFormData>>(field: TField) => FieldInfo<TFormData>;
|
|
1690
|
+
/**
|
|
1691
|
+
* Updates the metadata of the specified field.
|
|
1692
|
+
*/
|
|
1693
|
+
setFieldMeta: <TField extends DeepKeys<TFormData>>(field: TField, updater: Updater<AnyFieldLikeMetaBase>) => void;
|
|
1694
|
+
/**
|
|
1695
|
+
* resets every field's meta
|
|
1696
|
+
*/
|
|
1697
|
+
resetFieldMeta: <TField extends DeepKeys<TFormData>>(fieldMeta: Partial<Record<TField, AnyFieldLikeMeta>>) => Partial<Record<TField, AnyFieldLikeMeta>>;
|
|
1698
|
+
/**
|
|
1699
|
+
* Sets the value of the specified field and optionally updates the touched state.
|
|
1700
|
+
*/
|
|
1701
|
+
setFieldValue: <TField extends DeepKeys<TFormData>>(field: TField, updater: Updater<DeepValue<TFormData, TField>>, opts?: UpdateMetaOptions) => void;
|
|
1702
|
+
deleteField: <TField extends DeepKeys<TFormData>>(field: TField) => void;
|
|
1703
|
+
/**
|
|
1704
|
+
* Pushes a value into an array field.
|
|
1705
|
+
*/
|
|
1706
|
+
pushFieldValue: <TField extends DeepKeysOfType<TFormData, any[]>>(field: TField, value: DeepValue<TFormData, TField> extends any[] ? DeepValue<TFormData, TField>[number] : never, options?: UpdateMetaOptions) => void;
|
|
1707
|
+
insertFieldValue: <TField extends DeepKeysOfType<TFormData, any[]>>(field: TField, index: number, value: DeepValue<TFormData, TField> extends any[] ? DeepValue<TFormData, TField>[number] : never, options?: UpdateMetaOptions) => Promise<void>;
|
|
1708
|
+
/**
|
|
1709
|
+
* Replaces a value into an array field at the specified index.
|
|
1710
|
+
*/
|
|
1711
|
+
replaceFieldValue: <TField extends DeepKeysOfType<TFormData, any[]>>(field: TField, index: number, value: DeepValue<TFormData, TField> extends any[] ? DeepValue<TFormData, TField>[number] : never, options?: UpdateMetaOptions) => Promise<void>;
|
|
1712
|
+
/**
|
|
1713
|
+
* Removes a value from an array field at the specified index.
|
|
1714
|
+
*/
|
|
1715
|
+
removeFieldValue: <TField extends DeepKeysOfType<TFormData, any[]>>(field: TField, index: number, options?: UpdateMetaOptions) => Promise<void>;
|
|
1716
|
+
/**
|
|
1717
|
+
* Swaps the values at the specified indices within an array field.
|
|
1718
|
+
*/
|
|
1719
|
+
swapFieldValues: <TField extends DeepKeysOfType<TFormData, any[]>>(field: TField, index1: number, index2: number, options?: UpdateMetaOptions) => void;
|
|
1720
|
+
/**
|
|
1721
|
+
* Moves the value at the first specified index to the second specified index within an array field.
|
|
1722
|
+
*/
|
|
1723
|
+
moveFieldValues: <TField extends DeepKeysOfType<TFormData, any[]>>(field: TField, index1: number, index2: number, options?: UpdateMetaOptions) => void;
|
|
1724
|
+
/**
|
|
1725
|
+
* Clear all values within an array field.
|
|
1726
|
+
*/
|
|
1727
|
+
clearFieldValues: <TField extends DeepKeysOfType<TFormData, any[]>>(field: TField, options?: UpdateMetaOptions) => void;
|
|
1728
|
+
/**
|
|
1729
|
+
* Resets the field value and meta to default state
|
|
1730
|
+
*/
|
|
1731
|
+
resetField: <TField extends DeepKeys<TFormData>>(field: TField) => void;
|
|
1732
|
+
/**
|
|
1733
|
+
* Updates the form's errorMap
|
|
1734
|
+
*/
|
|
1735
|
+
setErrorMap: (errorMap: FormValidationErrorMap<TFormData, UnwrapFormValidateOrFn<TOnMount>, UnwrapFormValidateOrFn<TOnChange>, UnwrapFormAsyncValidateOrFn<TOnChangeAsync>, UnwrapFormValidateOrFn<TOnBlur>, UnwrapFormAsyncValidateOrFn<TOnBlurAsync>, UnwrapFormValidateOrFn<TOnSubmit>, UnwrapFormAsyncValidateOrFn<TOnSubmitAsync>, UnwrapFormValidateOrFn<TOnDynamic>, UnwrapFormAsyncValidateOrFn<TOnDynamicAsync>, UnwrapFormAsyncValidateOrFn<TOnServer>>) => void;
|
|
1736
|
+
/**
|
|
1737
|
+
* Returns form and field level errors
|
|
1738
|
+
*/
|
|
1739
|
+
getAllErrors: () => {
|
|
1740
|
+
form: {
|
|
1741
|
+
errors: Array<NonNullable<UnwrapFormValidateOrFn<TOnMount> | UnwrapFormValidateOrFn<TOnChange> | UnwrapFormAsyncValidateOrFn<TOnChangeAsync> | UnwrapFormValidateOrFn<TOnBlur> | UnwrapFormAsyncValidateOrFn<TOnBlurAsync> | UnwrapFormValidateOrFn<TOnSubmit> | UnwrapFormAsyncValidateOrFn<TOnSubmitAsync> | UnwrapFormValidateOrFn<TOnDynamic> | UnwrapFormAsyncValidateOrFn<TOnDynamicAsync> | UnwrapFormAsyncValidateOrFn<TOnServer>>>;
|
|
1742
|
+
errorMap: ValidationErrorMap<UnwrapFormValidateOrFn<TOnMount>, UnwrapFormValidateOrFn<TOnChange>, UnwrapFormAsyncValidateOrFn<TOnChangeAsync>, UnwrapFormValidateOrFn<TOnBlur>, UnwrapFormAsyncValidateOrFn<TOnBlurAsync>, UnwrapFormValidateOrFn<TOnSubmit>, UnwrapFormAsyncValidateOrFn<TOnSubmitAsync>, UnwrapFormValidateOrFn<TOnDynamic>, UnwrapFormAsyncValidateOrFn<TOnDynamicAsync>, UnwrapFormAsyncValidateOrFn<TOnServer>>;
|
|
1743
|
+
};
|
|
1744
|
+
fields: Record<DeepKeys<TFormData>, {
|
|
1745
|
+
errors: ValidationError[];
|
|
1746
|
+
errorMap: ValidationErrorMap;
|
|
1747
|
+
}>;
|
|
1748
|
+
};
|
|
1749
|
+
/**
|
|
1750
|
+
* Parses the form's values with a given standard schema and returns
|
|
1751
|
+
* issues (if any). This method does NOT set any internal errors.
|
|
1752
|
+
* @param schema The standard schema to parse the form values with.
|
|
1753
|
+
*/
|
|
1754
|
+
parseValuesWithSchema: (schema: StandardSchemaV1<TFormData, unknown>) => {
|
|
1755
|
+
form: Record<string, StandardSchemaV1Issue[]>;
|
|
1756
|
+
fields: Record<string, StandardSchemaV1Issue[]>;
|
|
1757
|
+
} | undefined;
|
|
1758
|
+
/**
|
|
1759
|
+
* Parses the form's values with a given standard schema and returns
|
|
1760
|
+
* issues (if any). This method does NOT set any internal errors.
|
|
1761
|
+
* @param schema The standard schema to parse the form values with.
|
|
1762
|
+
*/
|
|
1763
|
+
parseValuesWithSchemaAsync: (schema: StandardSchemaV1<TFormData, unknown>) => Promise<{
|
|
1764
|
+
form: Record<string, StandardSchemaV1Issue[]>;
|
|
1765
|
+
fields: Record<string, StandardSchemaV1Issue[]>;
|
|
1766
|
+
} | undefined>;
|
|
1767
|
+
}
|
|
1768
|
+
//#endregion
|
|
1769
|
+
//#region ../../node_modules/.pnpm/@tanstack+devtools-event-client@0.4.4/node_modules/@tanstack/devtools-event-client/dist/esm/plugin.d.ts
|
|
1770
|
+
declare global {
|
|
1771
|
+
var __TANSTACK_EVENT_TARGET__: EventTarget | null;
|
|
1772
|
+
}
|
|
1773
|
+
//#endregion
|
|
1774
|
+
//#region src/components/form/index.d.ts
|
|
1775
|
+
/** The seam this family passes the engine through — the members the
|
|
1776
|
+
* components drive, with the engine's field-name generics opened to
|
|
1777
|
+
* `any`. The engine ships no "any form" alias: its loosest, `FormLikeAPI`,
|
|
1778
|
+
* still pins names to `string`, which a concrete form's literal names
|
|
1779
|
+
* cannot satisfy. */
|
|
1780
|
+
interface AnyFormApi {
|
|
1781
|
+
handleSubmit(): Promise<unknown>;
|
|
1782
|
+
setFieldMeta(field: any, updater: (prev: any) => any): void;
|
|
1783
|
+
Field: ComponentType<any>;
|
|
1784
|
+
}
|
|
1785
|
+
/** The form element itself: native submit interception handing the event
|
|
1786
|
+
* to the engine, one grid, one spacing voice. */
|
|
1787
|
+
interface FormProps extends HTMLAttributes<HTMLFormElement> {
|
|
1788
|
+
form: AnyFormApi;
|
|
1789
|
+
}
|
|
1790
|
+
declare function Form({ form, children, ...rest }: FormProps): import("react").JSX.Element;
|
|
1791
|
+
/**
|
|
1792
|
+
* The named slot in the grid: label, control, hint — and the engine's
|
|
1793
|
+
* errors for this name, shown through the same parts the standalone
|
|
1794
|
+
* Field family styles. The children may be a render receiving the live
|
|
1795
|
+
* TanStack field (value, handleChange, handleBlur, full state), so every
|
|
1796
|
+
* capability the engine has is right there where the control is wired.
|
|
1797
|
+
* Without a Form above it degrades to a plain labelled field.
|
|
1798
|
+
*/
|
|
1799
|
+
interface FormFieldProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
|
|
1800
|
+
form?: AnyFormApi;
|
|
1801
|
+
name: string;
|
|
1802
|
+
/** The engine's validator slots for this name (onChange, onBlur, ...). */
|
|
1803
|
+
validators?: any;
|
|
1804
|
+
label?: string;
|
|
1805
|
+
hint?: string;
|
|
1806
|
+
required?: boolean;
|
|
1807
|
+
invalid?: boolean;
|
|
1808
|
+
disabled?: boolean;
|
|
1809
|
+
children?: ReactNode | ((field: any) => ReactNode);
|
|
1810
|
+
}
|
|
1811
|
+
declare function FormField({ form: formProp, name, label, hint, required, invalid, disabled, children, ...rest }: FormFieldProps): import("react").JSX.Element;
|
|
1812
|
+
//#endregion
|
|
1813
|
+
export { useField as a, FieldApi as c, FormProps as i, FormField as n, useForm as o, FormFieldProps as r, FormApi as s, Form as t };
|