@tanstack/form-core 0.0.9 → 0.0.11
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/build/cjs/FieldApi.js +106 -111
- package/build/cjs/FieldApi.js.map +1 -1
- package/build/cjs/FormApi.js +69 -126
- package/build/cjs/FormApi.js.map +1 -1
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js +70 -9
- package/build/cjs/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
- package/build/esm/index.js +243 -251
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +74 -68
- package/build/types/FieldApi.d.ts +19 -13
- package/build/types/FormApi.d.ts +13 -9
- package/build/umd/index.development.js +257 -263
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +2 -2
- package/build/umd/index.production.js.map +1 -1
- package/package.json +2 -2
- package/src/FieldApi.ts +99 -102
- package/src/FormApi.ts +51 -105
package/build/cjs/FormApi.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
14
|
|
|
15
|
+
var _rollupPluginBabelHelpers = require('./_virtual/_rollupPluginBabelHelpers.js');
|
|
15
16
|
var store = require('@tanstack/store');
|
|
16
17
|
var utils = require('./utils.js');
|
|
17
18
|
|
|
@@ -37,14 +38,24 @@ function getDefaultFormState(defaultState) {
|
|
|
37
38
|
|
|
38
39
|
class FormApi {
|
|
39
40
|
// // This carries the context for nested fields
|
|
41
|
+
// Do not use __state directly, as it is not reactive.
|
|
42
|
+
// Please use form.useStore() utility to subscribe to state
|
|
40
43
|
constructor(_opts) {
|
|
41
44
|
var _opts$defaultValues, _opts$defaultState;
|
|
42
45
|
|
|
43
|
-
this
|
|
44
|
-
this.fieldInfo = {};
|
|
45
|
-
this.validationMeta = {};
|
|
46
|
+
_rollupPluginBabelHelpers.defineProperty(this, "options", {});
|
|
46
47
|
|
|
47
|
-
this
|
|
48
|
+
_rollupPluginBabelHelpers.defineProperty(this, "store", void 0);
|
|
49
|
+
|
|
50
|
+
_rollupPluginBabelHelpers.defineProperty(this, "state", void 0);
|
|
51
|
+
|
|
52
|
+
_rollupPluginBabelHelpers.defineProperty(this, "fieldInfo", {});
|
|
53
|
+
|
|
54
|
+
_rollupPluginBabelHelpers.defineProperty(this, "fieldName", void 0);
|
|
55
|
+
|
|
56
|
+
_rollupPluginBabelHelpers.defineProperty(this, "validationMeta", {});
|
|
57
|
+
|
|
58
|
+
_rollupPluginBabelHelpers.defineProperty(this, "update", options => {
|
|
48
59
|
if (!options) return;
|
|
49
60
|
this.store.batch(() => {
|
|
50
61
|
if (options.defaultState && options.defaultState !== this.options.defaultState) {
|
|
@@ -54,17 +65,15 @@ class FormApi {
|
|
|
54
65
|
}
|
|
55
66
|
|
|
56
67
|
if (options.defaultValues !== this.options.defaultValues) {
|
|
57
|
-
this.store.setState(
|
|
58
|
-
values: options.defaultValues
|
|
59
|
-
}));
|
|
68
|
+
this.store.setState(() => getDefaultFormState(options.defaultValues));
|
|
60
69
|
}
|
|
61
70
|
});
|
|
62
71
|
this.options = options;
|
|
63
|
-
};
|
|
72
|
+
});
|
|
64
73
|
|
|
65
|
-
this
|
|
74
|
+
_rollupPluginBabelHelpers.defineProperty(this, "reset", () => this.store.setState(() => getDefaultFormState(this.options.defaultValues)));
|
|
66
75
|
|
|
67
|
-
this
|
|
76
|
+
_rollupPluginBabelHelpers.defineProperty(this, "validateAllFields", async cause => {
|
|
68
77
|
const fieldValidationPromises = [];
|
|
69
78
|
this.store.batch(() => {
|
|
70
79
|
void Object.values(this.fieldInfo).forEach(field => {
|
|
@@ -76,71 +85,15 @@ class FormApi {
|
|
|
76
85
|
isTouched: true
|
|
77
86
|
})); // Validate the field
|
|
78
87
|
|
|
79
|
-
|
|
80
|
-
fieldValidationPromises.push(instance.validate());
|
|
81
|
-
}
|
|
88
|
+
fieldValidationPromises.push(Promise.resolve().then(() => instance.validate(cause)));
|
|
82
89
|
}
|
|
83
90
|
});
|
|
84
91
|
});
|
|
85
92
|
});
|
|
86
93
|
return Promise.all(fieldValidationPromises);
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
this.validateForm = async () => {
|
|
90
|
-
const {
|
|
91
|
-
validate
|
|
92
|
-
} = this.options;
|
|
93
|
-
|
|
94
|
-
if (!validate) {
|
|
95
|
-
return;
|
|
96
|
-
} // Use the formValidationCount for all field instances to
|
|
97
|
-
// track freshness of the validation
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
this.store.setState(prev => ({ ...prev,
|
|
101
|
-
isValidating: true,
|
|
102
|
-
formValidationCount: prev.formValidationCount + 1
|
|
103
|
-
}));
|
|
104
|
-
const formValidationCount = this.state.formValidationCount;
|
|
105
|
-
|
|
106
|
-
const checkLatest = () => formValidationCount === this.state.formValidationCount;
|
|
107
|
-
|
|
108
|
-
if (!this.validationMeta.validationPromise) {
|
|
109
|
-
this.validationMeta.validationPromise = new Promise((resolve, reject) => {
|
|
110
|
-
this.validationMeta.validationResolve = resolve;
|
|
111
|
-
this.validationMeta.validationReject = reject;
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
const doValidation = async () => {
|
|
116
|
-
try {
|
|
117
|
-
const error = await validate(this.state.values, this);
|
|
118
|
-
|
|
119
|
-
if (checkLatest()) {
|
|
120
|
-
var _this$validationMeta$, _this$validationMeta;
|
|
121
|
-
|
|
122
|
-
this.store.setState(prev => ({ ...prev,
|
|
123
|
-
isValidating: false,
|
|
124
|
-
error: error ? typeof error === 'string' ? error : 'Invalid Form Values' : null
|
|
125
|
-
}));
|
|
126
|
-
(_this$validationMeta$ = (_this$validationMeta = this.validationMeta).validationResolve) == null ? void 0 : _this$validationMeta$.call(_this$validationMeta, error);
|
|
127
|
-
}
|
|
128
|
-
} catch (err) {
|
|
129
|
-
if (checkLatest()) {
|
|
130
|
-
var _this$validationMeta$2, _this$validationMeta2;
|
|
131
|
-
|
|
132
|
-
(_this$validationMeta$2 = (_this$validationMeta2 = this.validationMeta).validationReject) == null ? void 0 : _this$validationMeta$2.call(_this$validationMeta2, err);
|
|
133
|
-
}
|
|
134
|
-
} finally {
|
|
135
|
-
delete this.validationMeta.validationPromise;
|
|
136
|
-
}
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
doValidation();
|
|
140
|
-
return this.validationMeta.validationPromise;
|
|
141
|
-
};
|
|
94
|
+
});
|
|
142
95
|
|
|
143
|
-
this
|
|
96
|
+
_rollupPluginBabelHelpers.defineProperty(this, "handleSubmit", async e => {
|
|
144
97
|
e.preventDefault();
|
|
145
98
|
e.stopPropagation(); // Check to see that the form and all fields have been touched
|
|
146
99
|
// If they have not, touch them all and run validation
|
|
@@ -166,32 +119,31 @@ class FormApi {
|
|
|
166
119
|
}; // Validate all fields
|
|
167
120
|
|
|
168
121
|
|
|
169
|
-
await this.validateAllFields(); // Fields are invalid, do not submit
|
|
122
|
+
await this.validateAllFields('submit'); // Fields are invalid, do not submit
|
|
170
123
|
|
|
171
124
|
if (!this.state.isFieldsValid) {
|
|
172
|
-
var _this$options$
|
|
125
|
+
var _this$options$onSubmi, _this$options;
|
|
173
126
|
|
|
174
127
|
done();
|
|
175
|
-
(_this$options$
|
|
128
|
+
(_this$options$onSubmi = (_this$options = this.options).onSubmitInvalid) == null ? void 0 : _this$options$onSubmi.call(_this$options, this.state.values, this);
|
|
176
129
|
return;
|
|
177
130
|
} // Run validation for the form
|
|
131
|
+
// await this.validateForm()
|
|
178
132
|
|
|
179
133
|
|
|
180
|
-
await this.validateForm();
|
|
181
|
-
|
|
182
134
|
if (!this.state.isValid) {
|
|
183
|
-
var _this$options$
|
|
135
|
+
var _this$options$onSubmi2, _this$options2;
|
|
184
136
|
|
|
185
137
|
done();
|
|
186
|
-
(_this$options$
|
|
138
|
+
(_this$options$onSubmi2 = (_this$options2 = this.options).onSubmitInvalid) == null ? void 0 : _this$options$onSubmi2.call(_this$options2, this.state.values, this);
|
|
187
139
|
return;
|
|
188
140
|
}
|
|
189
141
|
|
|
190
142
|
try {
|
|
191
|
-
var _this$options$
|
|
143
|
+
var _this$options$onSubmi3, _this$options3;
|
|
192
144
|
|
|
193
145
|
// Run the submit code
|
|
194
|
-
await ((_this$options$
|
|
146
|
+
await ((_this$options$onSubmi3 = (_this$options3 = this.options).onSubmit) == null ? void 0 : _this$options$onSubmi3.call(_this$options3, this.state.values, this));
|
|
195
147
|
this.store.batch(() => {
|
|
196
148
|
this.store.setState(prev => ({ ...prev,
|
|
197
149
|
isSubmitted: true
|
|
@@ -202,23 +154,23 @@ class FormApi {
|
|
|
202
154
|
done();
|
|
203
155
|
throw err;
|
|
204
156
|
}
|
|
205
|
-
};
|
|
157
|
+
});
|
|
206
158
|
|
|
207
|
-
this
|
|
159
|
+
_rollupPluginBabelHelpers.defineProperty(this, "getFieldValue", field => utils.getBy(this.state.values, field));
|
|
208
160
|
|
|
209
|
-
this
|
|
161
|
+
_rollupPluginBabelHelpers.defineProperty(this, "getFieldMeta", field => {
|
|
210
162
|
return this.state.fieldMeta[field];
|
|
211
|
-
};
|
|
163
|
+
});
|
|
212
164
|
|
|
213
|
-
this
|
|
165
|
+
_rollupPluginBabelHelpers.defineProperty(this, "getFieldInfo", field => {
|
|
214
166
|
var _this$fieldInfo;
|
|
215
167
|
|
|
216
168
|
return (_this$fieldInfo = this.fieldInfo)[field] || (_this$fieldInfo[field] = {
|
|
217
169
|
instances: {}
|
|
218
170
|
});
|
|
219
|
-
};
|
|
171
|
+
});
|
|
220
172
|
|
|
221
|
-
this
|
|
173
|
+
_rollupPluginBabelHelpers.defineProperty(this, "setFieldMeta", (field, updater) => {
|
|
222
174
|
this.store.setState(prev => {
|
|
223
175
|
return { ...prev,
|
|
224
176
|
fieldMeta: { ...prev.fieldMeta,
|
|
@@ -226,85 +178,76 @@ class FormApi {
|
|
|
226
178
|
}
|
|
227
179
|
};
|
|
228
180
|
});
|
|
229
|
-
};
|
|
230
|
-
|
|
231
|
-
this.setFieldValue = (field, updater, opts) => {
|
|
232
|
-
var _opts$touch;
|
|
181
|
+
});
|
|
233
182
|
|
|
234
|
-
|
|
183
|
+
_rollupPluginBabelHelpers.defineProperty(this, "setFieldValue", (field, updater, opts) => {
|
|
184
|
+
const touch = opts == null ? void 0 : opts.touch;
|
|
235
185
|
this.store.batch(() => {
|
|
236
|
-
this.store.setState(prev => {
|
|
237
|
-
return { ...prev,
|
|
238
|
-
values: utils.setBy(prev.values, field, updater)
|
|
239
|
-
};
|
|
240
|
-
});
|
|
241
|
-
|
|
242
186
|
if (touch) {
|
|
243
187
|
this.setFieldMeta(field, prev => ({ ...prev,
|
|
244
188
|
isTouched: true
|
|
245
189
|
}));
|
|
246
190
|
}
|
|
191
|
+
|
|
192
|
+
this.store.setState(prev => {
|
|
193
|
+
return { ...prev,
|
|
194
|
+
values: utils.setBy(prev.values, field, updater)
|
|
195
|
+
};
|
|
196
|
+
});
|
|
247
197
|
});
|
|
248
|
-
};
|
|
198
|
+
});
|
|
249
199
|
|
|
250
|
-
this
|
|
200
|
+
_rollupPluginBabelHelpers.defineProperty(this, "pushFieldValue", (field, value, opts) => {
|
|
251
201
|
return this.setFieldValue(field, prev => [...(Array.isArray(prev) ? prev : []), value], opts);
|
|
252
|
-
};
|
|
202
|
+
});
|
|
253
203
|
|
|
254
|
-
this
|
|
204
|
+
_rollupPluginBabelHelpers.defineProperty(this, "insertFieldValue", (field, index, value, opts) => {
|
|
255
205
|
this.setFieldValue(field, prev => {
|
|
256
|
-
// invariant( // TODO: bring in invariant
|
|
257
|
-
// Array.isArray(prev),
|
|
258
|
-
// `Cannot insert a field value into a non-array field. Check that this field's existing value is an array: ${field}.`
|
|
259
|
-
// )
|
|
260
206
|
return prev.map((d, i) => i === index ? value : d);
|
|
261
207
|
}, opts);
|
|
262
|
-
};
|
|
208
|
+
});
|
|
263
209
|
|
|
264
|
-
this
|
|
210
|
+
_rollupPluginBabelHelpers.defineProperty(this, "removeFieldValue", (field, index, opts) => {
|
|
265
211
|
this.setFieldValue(field, prev => {
|
|
266
|
-
// invariant( // TODO: bring in invariant
|
|
267
|
-
// Array.isArray(prev),
|
|
268
|
-
// `Cannot insert a field value into a non-array field. Check that this field's existing value is an array: ${field}.`
|
|
269
|
-
// )
|
|
270
212
|
return prev.filter((_d, i) => i !== index);
|
|
271
213
|
}, opts);
|
|
272
|
-
};
|
|
214
|
+
});
|
|
273
215
|
|
|
274
|
-
this
|
|
216
|
+
_rollupPluginBabelHelpers.defineProperty(this, "swapFieldValues", (field, index1, index2) => {
|
|
275
217
|
this.setFieldValue(field, prev => {
|
|
276
218
|
const prev1 = prev[index1];
|
|
277
219
|
const prev2 = prev[index2];
|
|
278
220
|
return utils.setBy(utils.setBy(prev, [index1], prev2), [index2], prev1);
|
|
279
221
|
});
|
|
280
|
-
};
|
|
222
|
+
});
|
|
281
223
|
|
|
282
224
|
this.store = new store.Store(getDefaultFormState({ ...(_opts == null ? void 0 : _opts.defaultState),
|
|
283
225
|
values: (_opts$defaultValues = _opts == null ? void 0 : _opts.defaultValues) != null ? _opts$defaultValues : _opts == null ? void 0 : (_opts$defaultState = _opts.defaultState) == null ? void 0 : _opts$defaultState.values,
|
|
284
|
-
isFormValid:
|
|
226
|
+
isFormValid: true
|
|
285
227
|
}), {
|
|
286
|
-
onUpdate:
|
|
287
|
-
|
|
288
|
-
|
|
228
|
+
onUpdate: () => {
|
|
229
|
+
let {
|
|
230
|
+
state
|
|
231
|
+
} = this.store; // Computed state
|
|
232
|
+
|
|
233
|
+
const fieldMetaValues = Object.values(state.fieldMeta);
|
|
289
234
|
const isFieldsValidating = fieldMetaValues.some(field => field == null ? void 0 : field.isValidating);
|
|
290
235
|
const isFieldsValid = !fieldMetaValues.some(field => field == null ? void 0 : field.error);
|
|
291
236
|
const isTouched = fieldMetaValues.some(field => field == null ? void 0 : field.isTouched);
|
|
292
|
-
const isValidating = isFieldsValidating ||
|
|
293
|
-
const isFormValid = !
|
|
237
|
+
const isValidating = isFieldsValidating || state.isFormValidating;
|
|
238
|
+
const isFormValid = !state.formError;
|
|
294
239
|
const isValid = isFieldsValid && isFormValid;
|
|
295
|
-
const canSubmit =
|
|
296
|
-
|
|
240
|
+
const canSubmit = state.submissionAttempts === 0 && !isTouched || !isValidating && !state.isSubmitting && isValid;
|
|
241
|
+
state = { ...state,
|
|
297
242
|
isFieldsValidating,
|
|
298
243
|
isFieldsValid,
|
|
299
244
|
isFormValid,
|
|
300
245
|
isValid,
|
|
301
246
|
canSubmit,
|
|
302
247
|
isTouched
|
|
303
|
-
};
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
this.store.state = next;
|
|
307
|
-
this.state = next;
|
|
248
|
+
};
|
|
249
|
+
this.store.state = state;
|
|
250
|
+
this.state = state;
|
|
308
251
|
}
|
|
309
252
|
});
|
|
310
253
|
this.state = this.store.state;
|
package/build/cjs/FormApi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormApi.js","sources":["../../src/FormApi.ts"],"sourcesContent":["import { Store } from '@tanstack/store'\n//\nimport type { DeepKeys, DeepValue, Updater } from './utils'\nimport { functionalUpdate, getBy, setBy } from './utils'\nimport type { FieldApi, FieldMeta, ValidationCause } from './FieldApi'\n\nexport interface Register {\n // FormSubmitEvent\n}\n\nexport type FormSubmitEvent = Register extends {\n FormSubmitEvent: infer E\n}\n ? E\n : Event\n\nexport type FormOptions<TData> = {\n defaultValues?: TData\n defaultState?: Partial<FormState<TData>>\n onSubmit?: (values: TData, formApi: FormApi<TData>) => void\n onInvalidSubmit?: (values: TData, formApi: FormApi<TData>) => void\n validate?: (values: TData, formApi: FormApi<TData>) => Promise<any>\n defaultValidatePristine?: boolean\n defaultValidateOn?: ValidationCause\n defaultValidateAsyncOn?: ValidationCause\n defaultValidateAsyncDebounceMs?: number\n}\n\nexport type FieldInfo<TFormData> = {\n instances: Record<string, FieldApi<any, TFormData>>\n} & ValidationMeta\n\nexport type ValidationMeta = {\n validationCount?: number\n validationAsyncCount?: number\n validationPromise?: Promise<ValidationError>\n validationResolve?: (error: ValidationError) => void\n validationReject?: (error: unknown) => void\n}\n\nexport type ValidationError = undefined | false | null | string\n\nexport type FormState<TData> = {\n values: TData\n // Form Validation\n isFormValidating: boolean\n formValidationCount: number\n isFormValid: boolean\n formError?: ValidationError\n // Fields\n fieldMeta: Record<DeepKeys<TData>, FieldMeta>\n isFieldsValidating: boolean\n isFieldsValid: boolean\n isSubmitting: boolean\n // General\n isTouched: boolean\n isSubmitted: boolean\n isValidating: boolean\n isValid: boolean\n canSubmit: boolean\n submissionAttempts: number\n}\n\nfunction getDefaultFormState<TData>(\n defaultState: Partial<FormState<TData>>,\n): FormState<TData> {\n return {\n values: {} as any,\n fieldMeta: {} as any,\n canSubmit: true,\n isFieldsValid: false,\n isFieldsValidating: false,\n isFormValid: false,\n isFormValidating: false,\n isSubmitted: false,\n isSubmitting: false,\n isTouched: false,\n isValid: false,\n isValidating: false,\n submissionAttempts: 0,\n formValidationCount: 0,\n ...defaultState,\n }\n}\n\nexport class FormApi<TFormData> {\n // // This carries the context for nested fields\n options: FormOptions<TFormData> = {}\n store!: Store<FormState<TFormData>>\n // Do not use __state directly, as it is not reactive.\n // Please use form.useStore() utility to subscribe to state\n state!: FormState<TFormData>\n fieldInfo: Record<DeepKeys<TFormData>, FieldInfo<TFormData>> = {} as any\n fieldName?: string\n validationMeta: ValidationMeta = {}\n\n constructor(opts?: FormOptions<TFormData>) {\n this.store = new Store<FormState<TFormData>>(\n getDefaultFormState({\n ...opts?.defaultState,\n values: opts?.defaultValues ?? opts?.defaultState?.values,\n isFormValid: !opts?.validate,\n }),\n {\n onUpdate: (next) => {\n // Computed state\n const fieldMetaValues = Object.values(next.fieldMeta) as (\n | FieldMeta\n | undefined\n )[]\n\n const isFieldsValidating = fieldMetaValues.some(\n (field) => field?.isValidating,\n )\n\n const isFieldsValid = !fieldMetaValues.some((field) => field?.error)\n\n const isTouched = fieldMetaValues.some((field) => field?.isTouched)\n\n const isValidating = isFieldsValidating || next.isFormValidating\n const isFormValid = !next.formError\n const isValid = isFieldsValid && isFormValid\n const canSubmit =\n (next.submissionAttempts === 0 && !isTouched) ||\n (!isValidating && !next.isSubmitting && isValid)\n\n next = {\n ...next,\n isFieldsValidating,\n isFieldsValid,\n isFormValid,\n isValid,\n canSubmit,\n isTouched,\n }\n\n // Create a shortcut for the state\n // Write it back to the store\n this.store.state = next\n this.state = next\n },\n },\n )\n\n this.state = this.store.state\n\n this.update(opts || {})\n }\n\n update = (options?: FormOptions<TFormData>) => {\n if (!options) return\n\n this.store.batch(() => {\n if (\n options.defaultState &&\n options.defaultState !== this.options.defaultState\n ) {\n this.store.setState((prev) => ({\n ...prev,\n ...options.defaultState,\n }))\n }\n\n if (options.defaultValues !== this.options.defaultValues) {\n this.store.setState((prev) => ({\n ...prev,\n values: options.defaultValues as TFormData,\n }))\n }\n })\n\n this.options = options\n }\n\n reset = () =>\n this.store.setState(() => getDefaultFormState(this.options.defaultValues!))\n\n validateAllFields = async () => {\n const fieldValidationPromises: Promise<ValidationError>[] = [] as any\n\n this.store.batch(() => {\n void (Object.values(this.fieldInfo) as FieldInfo<any>[]).forEach(\n (field) => {\n Object.values(field.instances).forEach((instance) => {\n // If any fields are not touched\n if (!instance.state.meta.isTouched) {\n // Mark them as touched\n instance.setMeta((prev) => ({ ...prev, isTouched: true }))\n // Validate the field\n if (instance.options.validate) {\n fieldValidationPromises.push(instance.validate())\n }\n }\n })\n },\n )\n })\n\n return Promise.all(fieldValidationPromises)\n }\n\n validateForm = async () => {\n const { validate } = this.options\n\n if (!validate) {\n return\n }\n\n // Use the formValidationCount for all field instances to\n // track freshness of the validation\n this.store.setState((prev) => ({\n ...prev,\n isValidating: true,\n formValidationCount: prev.formValidationCount + 1,\n }))\n\n const formValidationCount = this.state.formValidationCount\n\n const checkLatest = () =>\n formValidationCount === this.state.formValidationCount\n\n if (!this.validationMeta.validationPromise) {\n this.validationMeta.validationPromise = new Promise((resolve, reject) => {\n this.validationMeta.validationResolve = resolve\n this.validationMeta.validationReject = reject\n })\n }\n\n const doValidation = async () => {\n try {\n const error = await validate(this.state.values, this)\n\n if (checkLatest()) {\n this.store.setState((prev) => ({\n ...prev,\n isValidating: false,\n error: error\n ? typeof error === 'string'\n ? error\n : 'Invalid Form Values'\n : null,\n }))\n\n this.validationMeta.validationResolve?.(error)\n }\n } catch (err) {\n if (checkLatest()) {\n this.validationMeta.validationReject?.(err)\n }\n } finally {\n delete this.validationMeta.validationPromise\n }\n }\n\n doValidation()\n\n return this.validationMeta.validationPromise\n }\n\n handleSubmit = async (e: FormSubmitEvent) => {\n e.preventDefault()\n e.stopPropagation()\n\n // Check to see that the form and all fields have been touched\n // If they have not, touch them all and run validation\n // Run form validation\n // Submit the form\n\n this.store.setState((old) => ({\n ...old,\n // Submittion attempts mark the form as not submitted\n isSubmitted: false,\n // Count submission attempts\n submissionAttempts: old.submissionAttempts + 1,\n }))\n\n // Don't let invalid forms submit\n if (!this.state.canSubmit) return\n\n this.store.setState((d) => ({ ...d, isSubmitting: true }))\n\n const done = () => {\n this.store.setState((prev) => ({ ...prev, isSubmitting: false }))\n }\n\n // Validate all fields\n await this.validateAllFields()\n\n // Fields are invalid, do not submit\n if (!this.state.isFieldsValid) {\n done()\n this.options.onInvalidSubmit?.(this.state.values, this)\n return\n }\n\n // Run validation for the form\n await this.validateForm()\n\n if (!this.state.isValid) {\n done()\n this.options.onInvalidSubmit?.(this.state.values, this)\n return\n }\n\n try {\n // Run the submit code\n await this.options.onSubmit?.(this.state.values, this)\n\n this.store.batch(() => {\n this.store.setState((prev) => ({ ...prev, isSubmitted: true }))\n done()\n })\n } catch (err) {\n done()\n throw err\n }\n }\n\n getFieldValue = <TField extends DeepKeys<TFormData>>(\n field: TField,\n ): DeepValue<TFormData, TField> => getBy(this.state.values, field)\n\n getFieldMeta = <TField extends DeepKeys<TFormData>>(\n field: TField,\n ): FieldMeta => {\n return this.state.fieldMeta[field]\n }\n\n getFieldInfo = <TField extends DeepKeys<TFormData>>(field: TField) => {\n return (this.fieldInfo[field] ||= {\n instances: {},\n })\n }\n\n setFieldMeta = <TField extends DeepKeys<TFormData>>(\n field: TField,\n updater: Updater<FieldMeta>,\n ) => {\n this.store.setState((prev) => {\n return {\n ...prev,\n fieldMeta: {\n ...prev.fieldMeta,\n [field]: functionalUpdate(updater, prev.fieldMeta[field]),\n },\n }\n })\n }\n\n setFieldValue = <TField extends DeepKeys<TFormData>>(\n field: TField,\n updater: Updater<DeepValue<TFormData, TField>>,\n opts?: { touch?: boolean },\n ) => {\n const touch = opts?.touch ?? true\n\n this.store.batch(() => {\n this.store.setState((prev) => {\n return {\n ...prev,\n values: setBy(prev.values, field, updater),\n }\n })\n\n if (touch) {\n this.setFieldMeta(field, (prev) => ({\n ...prev,\n isTouched: true,\n }))\n }\n })\n }\n\n pushFieldValue = <TField extends DeepKeys<TFormData>>(\n field: TField,\n value: DeepValue<TFormData, TField>,\n opts?: { touch?: boolean },\n ) => {\n return this.setFieldValue(\n field,\n (prev) => [...(Array.isArray(prev) ? prev : []), value] as any,\n opts,\n )\n }\n\n insertFieldValue = <TField extends DeepKeys<TFormData>>(\n field: TField,\n index: number,\n value: DeepValue<TFormData, TField>,\n opts?: { touch?: boolean },\n ) => {\n this.setFieldValue(\n field,\n (prev) => {\n // invariant( // TODO: bring in invariant\n // Array.isArray(prev),\n // `Cannot insert a field value into a non-array field. Check that this field's existing value is an array: ${field}.`\n // )\n return (prev as DeepValue<TFormData, TField>[]).map((d, i) =>\n i === index ? value : d,\n ) as any\n },\n opts,\n )\n }\n\n removeFieldValue = <TField extends DeepKeys<TFormData>>(\n field: TField,\n index: number,\n opts?: { touch?: boolean },\n ) => {\n this.setFieldValue(\n field,\n (prev) => {\n // invariant( // TODO: bring in invariant\n // Array.isArray(prev),\n // `Cannot insert a field value into a non-array field. Check that this field's existing value is an array: ${field}.`\n // )\n return (prev as DeepValue<TFormData, TField>[]).filter(\n (_d, i) => i !== index,\n ) as any\n },\n opts,\n )\n }\n\n swapFieldValues = <TField extends DeepKeys<TFormData>>(\n field: TField,\n index1: number,\n index2: number,\n ) => {\n this.setFieldValue(field, (prev: any) => {\n const prev1 = prev[index1]!\n const prev2 = prev[index2]!\n return setBy(setBy(prev, [index1], prev2), [index2], prev1)\n })\n }\n}\n"],"names":["getDefaultFormState","defaultState","values","fieldMeta","canSubmit","isFieldsValid","isFieldsValidating","isFormValid","isFormValidating","isSubmitted","isSubmitting","isTouched","isValid","isValidating","submissionAttempts","formValidationCount","FormApi","constructor","opts","options","fieldInfo","validationMeta","update","store","batch","setState","prev","defaultValues","reset","validateAllFields","fieldValidationPromises","Object","forEach","field","instances","instance","state","meta","setMeta","validate","push","Promise","all","validateForm","checkLatest","validationPromise","resolve","reject","validationResolve","validationReject","doValidation","error","err","handleSubmit","e","preventDefault","stopPropagation","old","d","done","onInvalidSubmit","onSubmit","getFieldValue","getBy","getFieldMeta","getFieldInfo","setFieldMeta","updater","functionalUpdate","setFieldValue","touch","setBy","pushFieldValue","value","Array","isArray","insertFieldValue","index","map","i","removeFieldValue","filter","_d","swapFieldValues","index1","index2","prev1","prev2","Store","onUpdate","next","fieldMetaValues","some","formError"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FormApi.js","sources":["../../src/FormApi.ts"],"sourcesContent":["import { Store } from '@tanstack/store'\n//\nimport type { DeepKeys, DeepValue, Updater } from './utils'\nimport { functionalUpdate, getBy, setBy } from './utils'\nimport type { FieldApi, FieldMeta, ValidationCause } from './FieldApi'\n\nexport interface Register {\n // FormSubmitEvent\n}\n\nexport type FormSubmitEvent = Register extends {\n FormSubmitEvent: infer E\n}\n ? E\n : Event\n\nexport type FormOptions<TData> = {\n defaultValues?: TData\n defaultState?: Partial<FormState<TData>>\n asyncDebounceMs?: number\n onMount?: (values: TData, formApi: FormApi<TData>) => ValidationError\n onMountAsync?: (\n values: TData,\n formApi: FormApi<TData>,\n ) => ValidationError | Promise<ValidationError>\n onMountAsyncDebounceMs?: number\n onChange?: (values: TData, formApi: FormApi<TData>) => ValidationError\n onChangeAsync?: (\n values: TData,\n formApi: FormApi<TData>,\n ) => ValidationError | Promise<ValidationError>\n onChangeAsyncDebounceMs?: number\n onBlur?: (values: TData, formApi: FormApi<TData>) => ValidationError\n onBlurAsync?: (\n values: TData,\n formApi: FormApi<TData>,\n ) => ValidationError | Promise<ValidationError>\n onBlurAsyncDebounceMs?: number\n onSubmit?: (values: TData, formApi: FormApi<TData>) => any | Promise<any>\n onSubmitInvalid?: (values: TData, formApi: FormApi<TData>) => void\n}\n\nexport type FieldInfo<TFormData> = {\n instances: Record<string, FieldApi<any, TFormData>>\n} & ValidationMeta\n\nexport type ValidationMeta = {\n validationCount?: number\n validationAsyncCount?: number\n validationPromise?: Promise<ValidationError>\n validationResolve?: (error: ValidationError) => void\n validationReject?: (error: unknown) => void\n}\n\nexport type ValidationError = undefined | false | null | string\n\nexport type FormState<TData> = {\n values: TData\n // Form Validation\n isFormValidating: boolean\n formValidationCount: number\n isFormValid: boolean\n formError?: ValidationError\n // Fields\n fieldMeta: Record<DeepKeys<TData>, FieldMeta>\n isFieldsValidating: boolean\n isFieldsValid: boolean\n isSubmitting: boolean\n // General\n isTouched: boolean\n isSubmitted: boolean\n isValidating: boolean\n isValid: boolean\n canSubmit: boolean\n submissionAttempts: number\n}\n\nfunction getDefaultFormState<TData>(\n defaultState: Partial<FormState<TData>>,\n): FormState<TData> {\n return {\n values: {} as any,\n fieldMeta: {} as any,\n canSubmit: true,\n isFieldsValid: false,\n isFieldsValidating: false,\n isFormValid: false,\n isFormValidating: false,\n isSubmitted: false,\n isSubmitting: false,\n isTouched: false,\n isValid: false,\n isValidating: false,\n submissionAttempts: 0,\n formValidationCount: 0,\n ...defaultState,\n }\n}\n\nexport class FormApi<TFormData> {\n // // This carries the context for nested fields\n options: FormOptions<TFormData> = {}\n store!: Store<FormState<TFormData>>\n // Do not use __state directly, as it is not reactive.\n // Please use form.useStore() utility to subscribe to state\n state!: FormState<TFormData>\n fieldInfo: Record<DeepKeys<TFormData>, FieldInfo<TFormData>> = {} as any\n fieldName?: string\n validationMeta: ValidationMeta = {}\n\n constructor(opts?: FormOptions<TFormData>) {\n this.store = new Store<FormState<TFormData>>(\n getDefaultFormState({\n ...opts?.defaultState,\n values: opts?.defaultValues ?? opts?.defaultState?.values,\n isFormValid: true,\n }),\n {\n onUpdate: () => {\n let { state } = this.store\n // Computed state\n const fieldMetaValues = Object.values(state.fieldMeta) as (\n | FieldMeta\n | undefined\n )[]\n\n const isFieldsValidating = fieldMetaValues.some(\n (field) => field?.isValidating,\n )\n\n const isFieldsValid = !fieldMetaValues.some((field) => field?.error)\n\n const isTouched = fieldMetaValues.some((field) => field?.isTouched)\n\n const isValidating = isFieldsValidating || state.isFormValidating\n const isFormValid = !state.formError\n const isValid = isFieldsValid && isFormValid\n const canSubmit =\n (state.submissionAttempts === 0 && !isTouched) ||\n (!isValidating && !state.isSubmitting && isValid)\n\n state = {\n ...state,\n isFieldsValidating,\n isFieldsValid,\n isFormValid,\n isValid,\n canSubmit,\n isTouched,\n }\n\n this.store.state = state\n this.state = state\n },\n },\n )\n\n this.state = this.store.state\n\n this.update(opts || {})\n }\n\n update = (options?: FormOptions<TFormData>) => {\n if (!options) return\n\n this.store.batch(() => {\n if (\n options.defaultState &&\n options.defaultState !== this.options.defaultState\n ) {\n this.store.setState((prev) => ({\n ...prev,\n ...options.defaultState,\n }))\n }\n\n if (options.defaultValues !== this.options.defaultValues) {\n this.store.setState(() => getDefaultFormState(options.defaultValues!))\n }\n })\n\n this.options = options\n }\n\n reset = () =>\n this.store.setState(() => getDefaultFormState(this.options.defaultValues!))\n\n validateAllFields = async (cause: ValidationCause) => {\n const fieldValidationPromises: Promise<ValidationError>[] = [] as any\n\n this.store.batch(() => {\n void (Object.values(this.fieldInfo) as FieldInfo<any>[]).forEach(\n (field) => {\n Object.values(field.instances).forEach((instance) => {\n // If any fields are not touched\n if (!instance.state.meta.isTouched) {\n // Mark them as touched\n instance.setMeta((prev) => ({ ...prev, isTouched: true }))\n // Validate the field\n fieldValidationPromises.push(\n Promise.resolve().then(() => instance.validate(cause)),\n )\n }\n })\n },\n )\n })\n\n return Promise.all(fieldValidationPromises)\n }\n\n // validateForm = async () => {}\n\n handleSubmit = async (e: FormSubmitEvent) => {\n e.preventDefault()\n e.stopPropagation()\n\n // Check to see that the form and all fields have been touched\n // If they have not, touch them all and run validation\n // Run form validation\n // Submit the form\n\n this.store.setState((old) => ({\n ...old,\n // Submittion attempts mark the form as not submitted\n isSubmitted: false,\n // Count submission attempts\n submissionAttempts: old.submissionAttempts + 1,\n }))\n\n // Don't let invalid forms submit\n if (!this.state.canSubmit) return\n\n this.store.setState((d) => ({ ...d, isSubmitting: true }))\n\n const done = () => {\n this.store.setState((prev) => ({ ...prev, isSubmitting: false }))\n }\n\n // Validate all fields\n await this.validateAllFields('submit')\n\n // Fields are invalid, do not submit\n if (!this.state.isFieldsValid) {\n done()\n this.options.onSubmitInvalid?.(this.state.values, this)\n return\n }\n\n // Run validation for the form\n // await this.validateForm()\n\n if (!this.state.isValid) {\n done()\n this.options.onSubmitInvalid?.(this.state.values, this)\n return\n }\n\n try {\n // Run the submit code\n await this.options.onSubmit?.(this.state.values, this)\n\n this.store.batch(() => {\n this.store.setState((prev) => ({ ...prev, isSubmitted: true }))\n done()\n })\n } catch (err) {\n done()\n throw err\n }\n }\n\n getFieldValue = <TField extends DeepKeys<TFormData>>(\n field: TField,\n ): DeepValue<TFormData, TField> => getBy(this.state.values, field)\n\n getFieldMeta = <TField extends DeepKeys<TFormData>>(\n field: TField,\n ): FieldMeta => {\n return this.state.fieldMeta[field]\n }\n\n getFieldInfo = <TField extends DeepKeys<TFormData>>(field: TField) => {\n return (this.fieldInfo[field] ||= {\n instances: {},\n })\n }\n\n setFieldMeta = <TField extends DeepKeys<TFormData>>(\n field: TField,\n updater: Updater<FieldMeta>,\n ) => {\n this.store.setState((prev) => {\n return {\n ...prev,\n fieldMeta: {\n ...prev.fieldMeta,\n [field]: functionalUpdate(updater, prev.fieldMeta[field]),\n },\n }\n })\n }\n\n setFieldValue = <TField extends DeepKeys<TFormData>>(\n field: TField,\n updater: Updater<DeepValue<TFormData, TField>>,\n opts?: { touch?: boolean },\n ) => {\n const touch = opts?.touch\n\n this.store.batch(() => {\n if (touch) {\n this.setFieldMeta(field, (prev) => ({\n ...prev,\n isTouched: true,\n }))\n }\n\n this.store.setState((prev) => {\n return {\n ...prev,\n values: setBy(prev.values, field, updater),\n }\n })\n })\n }\n\n pushFieldValue = <TField extends DeepKeys<TFormData>>(\n field: TField,\n value: DeepValue<TFormData, TField>,\n opts?: { touch?: boolean },\n ) => {\n return this.setFieldValue(\n field,\n (prev) => [...(Array.isArray(prev) ? prev : []), value] as any,\n opts,\n )\n }\n\n insertFieldValue = <TField extends DeepKeys<TFormData>>(\n field: TField,\n index: number,\n value: DeepValue<TFormData, TField>,\n opts?: { touch?: boolean },\n ) => {\n this.setFieldValue(\n field,\n (prev) => {\n return (prev as DeepValue<TFormData, TField>[]).map((d, i) =>\n i === index ? value : d,\n ) as any\n },\n opts,\n )\n }\n\n removeFieldValue = <TField extends DeepKeys<TFormData>>(\n field: TField,\n index: number,\n opts?: { touch?: boolean },\n ) => {\n this.setFieldValue(\n field,\n (prev) => {\n return (prev as DeepValue<TFormData, TField>[]).filter(\n (_d, i) => i !== index,\n ) as any\n },\n opts,\n )\n }\n\n swapFieldValues = <TField extends DeepKeys<TFormData>>(\n field: TField,\n index1: number,\n index2: number,\n ) => {\n this.setFieldValue(field, (prev: any) => {\n const prev1 = prev[index1]!\n const prev2 = prev[index2]!\n return setBy(setBy(prev, [index1], prev2), [index2], prev1)\n })\n }\n}\n"],"names":["getDefaultFormState","defaultState","values","fieldMeta","canSubmit","isFieldsValid","isFieldsValidating","isFormValid","isFormValidating","isSubmitted","isSubmitting","isTouched","isValid","isValidating","submissionAttempts","formValidationCount","FormApi","constructor","opts","_defineProperty","options","store","batch","setState","prev","defaultValues","cause","fieldValidationPromises","Object","fieldInfo","forEach","field","instances","instance","state","meta","setMeta","push","Promise","resolve","then","validate","all","e","preventDefault","stopPropagation","old","d","done","validateAllFields","onSubmitInvalid","onSubmit","err","getBy","updater","functionalUpdate","touch","setFieldMeta","setBy","value","setFieldValue","Array","isArray","index","map","i","filter","_d","index1","index2","prev1","prev2","Store","onUpdate","fieldMetaValues","some","error","formError","update"],"mappings":"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"}
|
|
@@ -12,20 +12,81 @@
|
|
|
12
12
|
|
|
13
13
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
function _defineProperty(obj, key, value) {
|
|
16
|
+
if (key in obj) {
|
|
17
|
+
Object.defineProperty(obj, key, {
|
|
18
|
+
value: value,
|
|
19
|
+
enumerable: true,
|
|
20
|
+
configurable: true,
|
|
21
|
+
writable: true
|
|
22
|
+
});
|
|
23
|
+
} else {
|
|
24
|
+
obj[key] = value;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return obj;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function _classPrivateFieldGet(receiver, privateMap) {
|
|
31
|
+
var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get");
|
|
32
|
+
|
|
33
|
+
return _classApplyDescriptorGet(receiver, descriptor);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function _classPrivateFieldSet(receiver, privateMap, value) {
|
|
37
|
+
var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set");
|
|
38
|
+
|
|
39
|
+
_classApplyDescriptorSet(receiver, descriptor, value);
|
|
40
|
+
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function _classExtractFieldDescriptor(receiver, privateMap, action) {
|
|
45
|
+
if (!privateMap.has(receiver)) {
|
|
46
|
+
throw new TypeError("attempted to " + action + " private field on non-instance");
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return privateMap.get(receiver);
|
|
50
|
+
}
|
|
16
51
|
|
|
17
|
-
function
|
|
18
|
-
|
|
52
|
+
function _classApplyDescriptorGet(receiver, descriptor) {
|
|
53
|
+
if (descriptor.get) {
|
|
54
|
+
return descriptor.get.call(receiver);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return descriptor.value;
|
|
19
58
|
}
|
|
20
59
|
|
|
21
|
-
function
|
|
22
|
-
if (
|
|
23
|
-
|
|
60
|
+
function _classApplyDescriptorSet(receiver, descriptor, value) {
|
|
61
|
+
if (descriptor.set) {
|
|
62
|
+
descriptor.set.call(receiver, value);
|
|
63
|
+
} else {
|
|
64
|
+
if (!descriptor.writable) {
|
|
65
|
+
throw new TypeError("attempted to set read only private field");
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
descriptor.value = value;
|
|
24
69
|
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function _checkPrivateRedeclaration(obj, privateCollection) {
|
|
73
|
+
if (privateCollection.has(obj)) {
|
|
74
|
+
throw new TypeError("Cannot initialize the same private elements twice on an object");
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function _classPrivateFieldInitSpec(obj, privateMap, value) {
|
|
79
|
+
_checkPrivateRedeclaration(obj, privateMap);
|
|
25
80
|
|
|
26
|
-
|
|
81
|
+
privateMap.set(obj, value);
|
|
27
82
|
}
|
|
28
83
|
|
|
29
|
-
exports.
|
|
30
|
-
exports.
|
|
84
|
+
exports.checkPrivateRedeclaration = _checkPrivateRedeclaration;
|
|
85
|
+
exports.classApplyDescriptorGet = _classApplyDescriptorGet;
|
|
86
|
+
exports.classApplyDescriptorSet = _classApplyDescriptorSet;
|
|
87
|
+
exports.classExtractFieldDescriptor = _classExtractFieldDescriptor;
|
|
88
|
+
exports.classPrivateFieldGet = _classPrivateFieldGet;
|
|
89
|
+
exports.classPrivateFieldInitSpec = _classPrivateFieldInitSpec;
|
|
90
|
+
exports.classPrivateFieldSet = _classPrivateFieldSet;
|
|
91
|
+
exports.defineProperty = _defineProperty;
|
|
31
92
|
//# sourceMappingURL=_rollupPluginBabelHelpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_rollupPluginBabelHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"_rollupPluginBabelHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|