@lucas-barake/effect-form-react 0.12.0 → 0.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/FormReact.js +128 -75
- package/dist/cjs/FormReact.js.map +1 -1
- package/dist/dts/FormReact.d.ts +41 -31
- package/dist/dts/FormReact.d.ts.map +1 -1
- package/dist/esm/FormReact.js +128 -75
- package/dist/esm/FormReact.js.map +1 -1
- package/package.json +2 -2
- package/src/FormReact.tsx +220 -110
package/dist/cjs/FormReact.js
CHANGED
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.makeField = exports.
|
|
6
|
+
exports.makeField = exports.make = exports.forField = void 0;
|
|
7
7
|
var _jsxRuntime = /*#__PURE__*/require("react/jsx-runtime");
|
|
8
8
|
var _atomReact = /*#__PURE__*/require("@effect-atom/atom-react");
|
|
9
|
+
var Atom = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@effect-atom/atom/Atom"));
|
|
9
10
|
var _effectForm = /*#__PURE__*/require("@lucas-barake/effect-form");
|
|
10
11
|
var _Path = /*#__PURE__*/require("@lucas-barake/effect-form/Path");
|
|
11
12
|
var Cause = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Cause"));
|
|
13
|
+
var Layer = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Layer"));
|
|
12
14
|
var Option = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Option"));
|
|
13
15
|
var ParseResult = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/ParseResult"));
|
|
14
16
|
var Predicate = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("effect/Predicate"));
|
|
@@ -39,20 +41,19 @@ function _interopRequireWildcard(e, t) {
|
|
|
39
41
|
const isFieldBundle = x => Predicate.isTagged(x, "FieldBundle");
|
|
40
42
|
const ArrayItemContext = /*#__PURE__*/(0, _react.createContext)(null);
|
|
41
43
|
const AutoSubmitContext = /*#__PURE__*/(0, _react.createContext)(null);
|
|
42
|
-
const makeFieldComponent = (fieldKey, fieldDef,
|
|
44
|
+
const makeFieldComponent = (fieldKey, fieldDef, errorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, Component) => {
|
|
43
45
|
const FieldComponent = extraProps => {
|
|
44
46
|
const arrayCtx = (0, _react.useContext)(ArrayItemContext);
|
|
45
47
|
const autoSubmitOnBlur = (0, _react.useContext)(AutoSubmitContext);
|
|
46
48
|
const fieldPath = arrayCtx ? `${arrayCtx.parentPath}.${fieldKey}` : fieldKey;
|
|
47
49
|
const {
|
|
48
|
-
|
|
50
|
+
errorAtom,
|
|
49
51
|
touchedAtom,
|
|
50
52
|
valueAtom
|
|
51
53
|
} = React.useMemo(() => getOrCreateFieldAtoms(fieldPath), [fieldPath]);
|
|
52
54
|
const [value, setValue] = (0, _atomReact.useAtom)(valueAtom);
|
|
53
55
|
const [isTouched, setTouched] = (0, _atomReact.useAtom)(touchedAtom);
|
|
54
|
-
const
|
|
55
|
-
const setCrossFieldErrors = (0, _atomReact.useAtomSet)(crossFieldErrorsAtom);
|
|
56
|
+
const storedError = (0, _atomReact.useAtomValue)(errorAtom);
|
|
56
57
|
const submitCount = (0, _atomReact.useAtomValue)(submitCountAtom);
|
|
57
58
|
const validationAtom = React.useMemo(() => getOrCreateValidationAtom(fieldPath, fieldDef.schema), [fieldPath]);
|
|
58
59
|
const validationResult = (0, _atomReact.useAtomValue)(validationAtom);
|
|
@@ -65,12 +66,12 @@ const makeFieldComponent = (fieldKey, fieldDef, crossFieldErrorsAtom, submitCoun
|
|
|
65
66
|
return;
|
|
66
67
|
}
|
|
67
68
|
prevValueRef.current = value;
|
|
68
|
-
const shouldValidate = parsedMode.validation === "onChange" || parsedMode.validation === "onBlur" && isTouched;
|
|
69
|
+
const shouldValidate = parsedMode.validation === "onChange" || parsedMode.validation === "onBlur" && isTouched || parsedMode.validation === "onSubmit" && submitCount > 0;
|
|
69
70
|
if (shouldValidate) {
|
|
70
71
|
validate(value);
|
|
71
72
|
}
|
|
72
|
-
}, [value, isTouched, validate]);
|
|
73
|
-
const
|
|
73
|
+
}, [value, isTouched, submitCount, validate]);
|
|
74
|
+
const livePerFieldError = React.useMemo(() => {
|
|
74
75
|
if (validationResult._tag === "Failure") {
|
|
75
76
|
const parseError = Cause.failureOption(validationResult.cause);
|
|
76
77
|
if (Option.isSome(parseError) && ParseResult.isParseError(parseError.value)) {
|
|
@@ -79,22 +80,25 @@ const makeFieldComponent = (fieldKey, fieldDef, crossFieldErrorsAtom, submitCoun
|
|
|
79
80
|
}
|
|
80
81
|
return Option.none();
|
|
81
82
|
}, [validationResult]);
|
|
82
|
-
const
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
83
|
+
const isValidating = validationResult.waiting;
|
|
84
|
+
const validationError = React.useMemo(() => {
|
|
85
|
+
if (Option.isSome(livePerFieldError)) {
|
|
86
|
+
return livePerFieldError;
|
|
87
|
+
}
|
|
88
|
+
if (Option.isSome(storedError)) {
|
|
89
|
+
// Hide field-sourced errors when validation passes or is pending (async gap).
|
|
90
|
+
// Refinement errors persist until re-submit - they can't be cleared by typing.
|
|
91
|
+
const shouldHideStoredError = storedError.value.source === "field" && (validationResult._tag === "Success" || isValidating);
|
|
92
|
+
if (shouldHideStoredError) {
|
|
93
|
+
return Option.none();
|
|
91
94
|
}
|
|
92
|
-
return
|
|
93
|
-
});
|
|
94
|
-
if (parsedMode.validation === "onChange") {
|
|
95
|
-
validate(newValue);
|
|
95
|
+
return Option.some(storedError.value.message);
|
|
96
96
|
}
|
|
97
|
-
|
|
97
|
+
return Option.none();
|
|
98
|
+
}, [livePerFieldError, storedError, validationResult, isValidating]);
|
|
99
|
+
const onChange = React.useCallback(newValue => {
|
|
100
|
+
setValue(newValue);
|
|
101
|
+
}, [setValue]);
|
|
98
102
|
const onBlur = React.useCallback(() => {
|
|
99
103
|
setTouched(true);
|
|
100
104
|
if (parsedMode.validation === "onBlur") {
|
|
@@ -104,8 +108,7 @@ const makeFieldComponent = (fieldKey, fieldDef, crossFieldErrorsAtom, submitCoun
|
|
|
104
108
|
}, [setTouched, validate, value, autoSubmitOnBlur]);
|
|
105
109
|
const dirtyFields = (0, _atomReact.useAtomValue)(dirtyFieldsAtom);
|
|
106
110
|
const isDirty = React.useMemo(() => (0, _Path.isPathOrParentDirty)(dirtyFields, fieldPath), [dirtyFields, fieldPath]);
|
|
107
|
-
const
|
|
108
|
-
const shouldShowError = isTouched || submitCount > 0;
|
|
111
|
+
const shouldShowError = parsedMode.validation === "onChange" ? isDirty || submitCount > 0 : parsedMode.validation === "onBlur" ? isTouched || submitCount > 0 : submitCount > 0;
|
|
109
112
|
const fieldState = React.useMemo(() => ({
|
|
110
113
|
value,
|
|
111
114
|
onChange,
|
|
@@ -122,7 +125,7 @@ const makeFieldComponent = (fieldKey, fieldDef, crossFieldErrorsAtom, submitCoun
|
|
|
122
125
|
};
|
|
123
126
|
return React.memo(FieldComponent);
|
|
124
127
|
};
|
|
125
|
-
const makeArrayFieldComponent = (fieldKey, def, stateAtom,
|
|
128
|
+
const makeArrayFieldComponent = (fieldKey, def, stateAtom, errorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, operations, componentMap) => {
|
|
126
129
|
const isStructSchema = AST.isTypeLiteral(def.itemSchema.ast);
|
|
127
130
|
const ArrayWrapper = ({
|
|
128
131
|
children
|
|
@@ -200,14 +203,13 @@ const makeArrayFieldComponent = (fieldKey, def, stateAtom, crossFieldErrorsAtom,
|
|
|
200
203
|
};
|
|
201
204
|
const itemDef = _effectForm.Field.makeField(itemKey, itemSchema);
|
|
202
205
|
const itemComponent = componentMap[itemKey];
|
|
203
|
-
itemFieldComponents[itemKey] = makeFieldComponent(itemKey, itemDef,
|
|
206
|
+
itemFieldComponents[itemKey] = makeFieldComponent(itemKey, itemDef, errorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, itemComponent);
|
|
204
207
|
}
|
|
205
208
|
}
|
|
206
209
|
const properties = {
|
|
207
210
|
Item: ItemWrapper,
|
|
208
211
|
...itemFieldComponents
|
|
209
212
|
};
|
|
210
|
-
// Proxy enables <Form.items.Item> and <Form.items.name> syntax
|
|
211
213
|
return new Proxy(ArrayWrapper, {
|
|
212
214
|
get(target, prop) {
|
|
213
215
|
if (prop in properties) {
|
|
@@ -217,49 +219,45 @@ const makeArrayFieldComponent = (fieldKey, def, stateAtom, crossFieldErrorsAtom,
|
|
|
217
219
|
}
|
|
218
220
|
});
|
|
219
221
|
};
|
|
220
|
-
const makeFieldComponents = (fields, stateAtom,
|
|
222
|
+
const makeFieldComponents = (fields, stateAtom, errorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, operations, componentMap) => {
|
|
221
223
|
const components = {};
|
|
222
224
|
for (const [key, def] of Object.entries(fields)) {
|
|
223
225
|
if (_effectForm.Field.isArrayFieldDef(def)) {
|
|
224
226
|
const arrayComponentMap = componentMap[key];
|
|
225
|
-
components[key] = makeArrayFieldComponent(key, def, stateAtom,
|
|
227
|
+
components[key] = makeArrayFieldComponent(key, def, stateAtom, errorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, operations, arrayComponentMap);
|
|
226
228
|
} else if (_effectForm.Field.isFieldDef(def)) {
|
|
227
229
|
const componentOrBundle = componentMap[key];
|
|
228
230
|
const fieldComponent = isFieldBundle(componentOrBundle) ? componentOrBundle.component : componentOrBundle;
|
|
229
|
-
components[key] = makeFieldComponent(key, def,
|
|
231
|
+
components[key] = makeFieldComponent(key, def, errorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, fieldComponent);
|
|
230
232
|
}
|
|
231
233
|
}
|
|
232
234
|
return components;
|
|
233
235
|
};
|
|
234
236
|
/**
|
|
235
|
-
*
|
|
237
|
+
* Creates a React form from a FormBuilder.
|
|
236
238
|
*
|
|
237
239
|
* @example
|
|
238
240
|
* ```tsx
|
|
239
241
|
* import { FormBuilder } from "@lucas-barake/effect-form"
|
|
240
242
|
* import { FormReact } from "@lucas-barake/effect-form-react"
|
|
241
243
|
* import { useAtomValue, useAtomSet } from "@effect-atom/atom-react"
|
|
242
|
-
* import * as Atom from "@effect-atom/atom/Atom"
|
|
243
244
|
* import * as Schema from "effect/Schema"
|
|
244
|
-
* import * as Layer from "effect/Layer"
|
|
245
245
|
*
|
|
246
|
-
* const
|
|
247
|
-
*
|
|
248
|
-
* const loginForm = FormBuilder.empty
|
|
246
|
+
* const loginFormBuilder = FormBuilder.empty
|
|
249
247
|
* .addField("email", Schema.String)
|
|
250
248
|
* .addField("password", Schema.String)
|
|
251
249
|
*
|
|
252
|
-
*
|
|
253
|
-
*
|
|
250
|
+
* // Runtime is optional for forms without service requirements
|
|
251
|
+
* const loginForm = FormReact.make(loginFormBuilder, {
|
|
254
252
|
* fields: { email: TextInput, password: PasswordInput },
|
|
255
|
-
* onSubmit: (
|
|
253
|
+
* onSubmit: (_, { decoded }) => Effect.log(`Login: ${decoded.email}`),
|
|
256
254
|
* })
|
|
257
255
|
*
|
|
258
256
|
* // Subscribe to atoms anywhere in the tree
|
|
259
257
|
* function SubmitButton() {
|
|
260
|
-
* const isDirty = useAtomValue(
|
|
261
|
-
* const submit = useAtomValue(
|
|
262
|
-
* const callSubmit = useAtomSet(
|
|
258
|
+
* const isDirty = useAtomValue(loginForm.isDirty)
|
|
259
|
+
* const submit = useAtomValue(loginForm.submit)
|
|
260
|
+
* const callSubmit = useAtomSet(loginForm.submit)
|
|
263
261
|
* return (
|
|
264
262
|
* <button onClick={() => callSubmit()} disabled={!isDirty || submit.waiting}>
|
|
265
263
|
* {submit.waiting ? "Validating..." : "Login"}
|
|
@@ -267,26 +265,27 @@ const makeFieldComponents = (fields, stateAtom, crossFieldErrorsAtom, submitCoun
|
|
|
267
265
|
* )
|
|
268
266
|
* }
|
|
269
267
|
*
|
|
270
|
-
* function
|
|
268
|
+
* function LoginPage() {
|
|
271
269
|
* return (
|
|
272
|
-
* <
|
|
273
|
-
* <
|
|
274
|
-
* <
|
|
270
|
+
* <loginForm.Initialize defaultValues={{ email: "", password: "" }}>
|
|
271
|
+
* <loginForm.email />
|
|
272
|
+
* <loginForm.password />
|
|
275
273
|
* <SubmitButton />
|
|
276
|
-
* </
|
|
274
|
+
* </loginForm.Initialize>
|
|
277
275
|
* )
|
|
278
276
|
* }
|
|
279
277
|
* ```
|
|
280
278
|
*
|
|
281
279
|
* @category Constructors
|
|
282
280
|
*/
|
|
283
|
-
const
|
|
281
|
+
const make = (self, options) => {
|
|
284
282
|
const {
|
|
285
283
|
fields: components,
|
|
286
284
|
mode,
|
|
287
285
|
onSubmit,
|
|
288
|
-
runtime
|
|
286
|
+
runtime: providedRuntime
|
|
289
287
|
} = options;
|
|
288
|
+
const runtime = providedRuntime ?? Atom.runtime(Layer.empty);
|
|
290
289
|
const parsedMode = _effectForm.Mode.parse(mode);
|
|
291
290
|
const {
|
|
292
291
|
fields
|
|
@@ -298,18 +297,21 @@ const build = (self, options) => {
|
|
|
298
297
|
});
|
|
299
298
|
const {
|
|
300
299
|
combinedSchema,
|
|
301
|
-
crossFieldErrorsAtom,
|
|
302
300
|
dirtyFieldsAtom,
|
|
301
|
+
errorsAtom,
|
|
303
302
|
fieldRefs,
|
|
304
303
|
getFieldAtom,
|
|
305
304
|
getOrCreateFieldAtoms,
|
|
306
305
|
getOrCreateValidationAtom,
|
|
307
306
|
hasChangedSinceSubmitAtom,
|
|
308
307
|
isDirtyAtom,
|
|
308
|
+
keepAliveActiveAtom,
|
|
309
309
|
lastSubmittedValuesAtom,
|
|
310
|
+
mountAtom,
|
|
310
311
|
operations,
|
|
311
312
|
resetAtom,
|
|
312
313
|
revertToLastSubmitAtom,
|
|
314
|
+
rootErrorAtom,
|
|
313
315
|
setValue,
|
|
314
316
|
setValuesAtom,
|
|
315
317
|
stateAtom,
|
|
@@ -327,49 +329,102 @@ const build = (self, options) => {
|
|
|
327
329
|
const callSubmit = (0, _atomReact.useAtomSet)(submitAtom);
|
|
328
330
|
const isInitializedRef = React.useRef(false);
|
|
329
331
|
React.useEffect(() => {
|
|
330
|
-
|
|
332
|
+
const isKeptAlive = registry.get(keepAliveActiveAtom);
|
|
333
|
+
const currentState = registry.get(stateAtom);
|
|
334
|
+
if (!isKeptAlive) {
|
|
335
|
+
setFormState(Option.some(operations.createInitialState(defaultValues)));
|
|
336
|
+
} else if (Option.isNone(currentState)) {
|
|
337
|
+
setFormState(Option.some(operations.createInitialState(defaultValues)));
|
|
338
|
+
}
|
|
331
339
|
isInitializedRef.current = true;
|
|
332
340
|
// eslint-disable-next-line react-hooks/exhaustive-deps -- mount-only
|
|
333
|
-
}, []);
|
|
341
|
+
}, [registry]);
|
|
334
342
|
const debouncedAutoSubmit = (0, _useDebounced.useDebounced)(() => {
|
|
335
343
|
const stateOption = registry.get(stateAtom);
|
|
336
344
|
if (Option.isNone(stateOption)) return;
|
|
337
345
|
callSubmit(undefined);
|
|
338
346
|
}, parsedMode.autoSubmit && parsedMode.validation === "onChange" ? parsedMode.debounce : null);
|
|
347
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
348
|
+
// Auto-Submit Coordination
|
|
349
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
350
|
+
// Two-subscription model to avoid infinite loop:
|
|
351
|
+
// - Stream 1 reacts to value changes (reference equality), triggers or queues submit
|
|
352
|
+
// - Stream 2 reacts to submit completion, flushes queued changes
|
|
353
|
+
//
|
|
354
|
+
// Single subscription to stateAtom cannot distinguish value changes from submit
|
|
355
|
+
// metadata updates (submitCount, lastSubmittedValues).
|
|
356
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
357
|
+
const lastValuesRef = React.useRef(null);
|
|
358
|
+
const pendingChangesRef = React.useRef(false);
|
|
359
|
+
const wasSubmittingRef = React.useRef(false);
|
|
339
360
|
(0, _atomReact.useAtomSubscribe)(stateAtom, React.useCallback(() => {
|
|
340
361
|
if (!isInitializedRef.current) return;
|
|
341
|
-
|
|
362
|
+
const state = registry.get(stateAtom);
|
|
363
|
+
if (Option.isNone(state)) return;
|
|
364
|
+
const currentValues = state.value.values;
|
|
365
|
+
// Reference equality filters out submit metadata changes.
|
|
366
|
+
// Works because setFieldValue creates new values object (immutable update).
|
|
367
|
+
if (currentValues === lastValuesRef.current) return;
|
|
368
|
+
lastValuesRef.current = currentValues;
|
|
369
|
+
if (!parsedMode.autoSubmit || parsedMode.validation !== "onChange") return;
|
|
370
|
+
const submitResult = registry.get(submitAtom);
|
|
371
|
+
if (submitResult.waiting) {
|
|
372
|
+
pendingChangesRef.current = true;
|
|
373
|
+
} else {
|
|
342
374
|
debouncedAutoSubmit();
|
|
343
375
|
}
|
|
376
|
+
}, [debouncedAutoSubmit, registry]), {
|
|
377
|
+
immediate: false
|
|
378
|
+
});
|
|
379
|
+
(0, _atomReact.useAtomSubscribe)(submitAtom, React.useCallback(result => {
|
|
380
|
+
if (!parsedMode.autoSubmit || parsedMode.validation !== "onChange") return;
|
|
381
|
+
const isSubmitting = result.waiting;
|
|
382
|
+
const wasSubmitting = wasSubmittingRef.current;
|
|
383
|
+
wasSubmittingRef.current = isSubmitting;
|
|
384
|
+
// Flush queued changes when submit completes
|
|
385
|
+
if (wasSubmitting && !isSubmitting) {
|
|
386
|
+
if (pendingChangesRef.current) {
|
|
387
|
+
pendingChangesRef.current = false;
|
|
388
|
+
debouncedAutoSubmit();
|
|
389
|
+
}
|
|
390
|
+
}
|
|
344
391
|
}, [debouncedAutoSubmit]), {
|
|
345
392
|
immediate: false
|
|
346
393
|
});
|
|
347
394
|
const onBlurAutoSubmit = React.useCallback(() => {
|
|
348
|
-
if (parsedMode.autoSubmit
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
395
|
+
if (!parsedMode.autoSubmit || parsedMode.validation !== "onBlur") return;
|
|
396
|
+
const stateOption = registry.get(stateAtom);
|
|
397
|
+
if (Option.isNone(stateOption)) return;
|
|
398
|
+
const {
|
|
399
|
+
lastSubmittedValues,
|
|
400
|
+
values
|
|
401
|
+
} = stateOption.value;
|
|
402
|
+
if (Option.isSome(lastSubmittedValues) && values === lastSubmittedValues.value.encoded) return;
|
|
403
|
+
callSubmit(undefined);
|
|
353
404
|
}, [registry, callSubmit]);
|
|
354
405
|
if (Option.isNone(state)) return null;
|
|
355
406
|
return (0, _jsxRuntime.jsx)(AutoSubmitContext.Provider, {
|
|
356
407
|
value: onBlurAutoSubmit,
|
|
357
|
-
children:
|
|
358
|
-
onSubmit: e => {
|
|
359
|
-
e.preventDefault();
|
|
360
|
-
e.stopPropagation();
|
|
361
|
-
},
|
|
362
|
-
children: children
|
|
363
|
-
})
|
|
408
|
+
children: children
|
|
364
409
|
});
|
|
365
410
|
};
|
|
366
|
-
const fieldComponents = makeFieldComponents(fields, stateAtom,
|
|
411
|
+
const fieldComponents = makeFieldComponents(fields, stateAtom, errorsAtom, submitCountAtom, dirtyFieldsAtom, parsedMode, getOrCreateValidationAtom, getOrCreateFieldAtoms, operations, components);
|
|
412
|
+
const KeepAlive = () => {
|
|
413
|
+
const setKeepAliveActive = (0, _atomReact.useAtomSet)(keepAliveActiveAtom);
|
|
414
|
+
React.useLayoutEffect(() => {
|
|
415
|
+
setKeepAliveActive(true);
|
|
416
|
+
return () => setKeepAliveActive(false);
|
|
417
|
+
}, [setKeepAliveActive]);
|
|
418
|
+
(0, _atomReact.useAtomMount)(mountAtom);
|
|
419
|
+
return null;
|
|
420
|
+
};
|
|
367
421
|
return {
|
|
368
422
|
values: valuesAtom,
|
|
369
423
|
isDirty: isDirtyAtom,
|
|
370
424
|
hasChangedSinceSubmit: hasChangedSinceSubmitAtom,
|
|
371
425
|
lastSubmittedValues: lastSubmittedValuesAtom,
|
|
372
426
|
submitCount: submitCountAtom,
|
|
427
|
+
rootError: rootErrorAtom,
|
|
373
428
|
schema: combinedSchema,
|
|
374
429
|
fields: fieldRefs,
|
|
375
430
|
Initialize: InitializeComponent,
|
|
@@ -379,6 +434,8 @@ const build = (self, options) => {
|
|
|
379
434
|
setValues: setValuesAtom,
|
|
380
435
|
setValue,
|
|
381
436
|
getFieldAtom,
|
|
437
|
+
mount: mountAtom,
|
|
438
|
+
KeepAlive,
|
|
382
439
|
...fieldComponents
|
|
383
440
|
};
|
|
384
441
|
};
|
|
@@ -403,7 +460,7 @@ const build = (self, options) => {
|
|
|
403
460
|
*
|
|
404
461
|
* @category Constructors
|
|
405
462
|
*/
|
|
406
|
-
exports.
|
|
463
|
+
exports.make = make;
|
|
407
464
|
const forField = _field => component => component;
|
|
408
465
|
/**
|
|
409
466
|
* Creates a bundled field definition + component for reusable form fields.
|
|
@@ -442,10 +499,10 @@ const forField = _field => component => component;
|
|
|
442
499
|
* ))
|
|
443
500
|
*
|
|
444
501
|
* // Use in form builder
|
|
445
|
-
* const
|
|
502
|
+
* const formBuilder = FormBuilder.empty.addField(NameInput.field)
|
|
446
503
|
*
|
|
447
|
-
* // Use in
|
|
448
|
-
* const
|
|
504
|
+
* // Use in make()
|
|
505
|
+
* const form = FormReact.make(formBuilder, {
|
|
449
506
|
* runtime,
|
|
450
507
|
* fields: { name: NameInput },
|
|
451
508
|
* onSubmit: (_, { decoded }) => Effect.log(decoded.name),
|
|
@@ -458,17 +515,13 @@ exports.forField = forField;
|
|
|
458
515
|
const makeField = options => {
|
|
459
516
|
const field = _effectForm.Field.makeField(options.key, options.schema);
|
|
460
517
|
return component => {
|
|
461
|
-
// DX: Auto-generate a readable component name for DevTools
|
|
462
|
-
// e.g., key "email" -> "<EmailField />"
|
|
463
518
|
if (!component.displayName) {
|
|
464
519
|
const displayName = `${options.key.charAt(0).toUpperCase()}${options.key.slice(1)}Field`;
|
|
465
|
-
// Cast to 'any' because strict TS marks function names as readonly,
|
|
466
|
-
// but React relies on mutation here.
|
|
467
520
|
try {
|
|
468
521
|
;
|
|
469
522
|
component.displayName = displayName;
|
|
470
523
|
} catch {
|
|
471
|
-
// Ignore
|
|
524
|
+
// Ignore - some environments freeze function properties
|
|
472
525
|
}
|
|
473
526
|
}
|
|
474
527
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormReact.js","names":["_atomReact","require","_effectForm","_Path","Cause","_interopRequireWildcard","Option","ParseResult","Predicate","AST","_react","React","_useDebounced","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","isFieldBundle","x","isTagged","ArrayItemContext","createContext","AutoSubmitContext","makeFieldComponent","fieldKey","fieldDef","crossFieldErrorsAtom","submitCountAtom","dirtyFieldsAtom","parsedMode","getOrCreateValidationAtom","getOrCreateFieldAtoms","Component","FieldComponent","extraProps","arrayCtx","useContext","autoSubmitOnBlur","fieldPath","parentPath","crossFieldErrorAtom","touchedAtom","valueAtom","useMemo","value","setValue","useAtom","isTouched","setTouched","crossFieldError","useAtomValue","setCrossFieldErrors","useAtomSet","submitCount","validationAtom","schema","validationResult","validateImmediate","shouldDebounceValidation","validation","debounce","autoSubmit","validate","useDebounced","prevValueRef","useRef","useEffect","current","shouldValidate","perFieldError","_tag","parseError","failureOption","cause","isSome","isParseError","Validation","extractFirstError","none","validationError","onChange","useCallback","newValue","prev","next","Map","errorPath","message","isPathUnderRoot","size","onBlur","dirtyFields","isDirty","isPathOrParentDirty","isValidating","waiting","shouldShowError","fieldState","error","_jsxRuntime","jsx","field","props","memo","makeArrayFieldComponent","def","stateAtom","operations","componentMap","isStructSchema","isTypeLiteral","itemSchema","ast","ArrayWrapper","children","formStateOption","setFormState","formState","getOrThrow","items","getNestedValue","values","append","isNone","some","appendArrayItem","remove","index","removeArrayItem","swap","indexA","indexB","swapArrayItems","move","from","to","moveArrayItem","Fragment","ItemWrapper","itemPath","Provider","itemFieldComponents","prop","propertySignatures","itemKey","name","type","itemDef","Field","makeField","itemComponent","properties","Item","Proxy","target","Reflect","makeFieldComponents","fields","components","key","entries","isArrayFieldDef","arrayComponentMap","isFieldDef","componentOrBundle","fieldComponent","component","build","self","options","mode","onSubmit","runtime","Mode","parse","formAtoms","FormAtoms","make","formBuilder","combinedSchema","fieldRefs","getFieldAtom","hasChangedSinceSubmitAtom","isDirtyAtom","lastSubmittedValuesAtom","resetAtom","revertToLastSubmitAtom","setValuesAtom","submitAtom","valuesAtom","InitializeComponent","defaultValues","registry","RegistryContext","state","callSubmit","isInitializedRef","createInitialState","debouncedAutoSubmit","stateOption","undefined","useAtomSubscribe","immediate","onBlurAutoSubmit","preventDefault","stopPropagation","fieldComponents","hasChangedSinceSubmit","lastSubmittedValues","Initialize","submit","reset","revertToLastSubmit","setValues","exports","forField","_field","displayName","charAt","toUpperCase","slice"],"sources":["../../src/FormReact.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"FormReact.js","names":["_atomReact","require","Atom","_interopRequireWildcard","_effectForm","_Path","Cause","Layer","Option","ParseResult","Predicate","AST","_react","React","_useDebounced","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","isFieldBundle","x","isTagged","ArrayItemContext","createContext","AutoSubmitContext","makeFieldComponent","fieldKey","fieldDef","errorsAtom","submitCountAtom","dirtyFieldsAtom","parsedMode","getOrCreateValidationAtom","getOrCreateFieldAtoms","Component","FieldComponent","extraProps","arrayCtx","useContext","autoSubmitOnBlur","fieldPath","parentPath","errorAtom","touchedAtom","valueAtom","useMemo","value","setValue","useAtom","isTouched","setTouched","storedError","useAtomValue","submitCount","validationAtom","schema","validationResult","validateImmediate","useAtomSet","shouldDebounceValidation","validation","debounce","autoSubmit","validate","useDebounced","prevValueRef","useRef","useEffect","current","shouldValidate","livePerFieldError","_tag","parseError","failureOption","cause","isSome","isParseError","Validation","extractFirstError","none","isValidating","waiting","validationError","shouldHideStoredError","source","some","message","onChange","useCallback","newValue","onBlur","dirtyFields","isDirty","isPathOrParentDirty","shouldShowError","fieldState","error","_jsxRuntime","jsx","field","props","memo","makeArrayFieldComponent","def","stateAtom","operations","componentMap","isStructSchema","isTypeLiteral","itemSchema","ast","ArrayWrapper","children","formStateOption","setFormState","formState","getOrThrow","items","getNestedValue","values","append","prev","isNone","appendArrayItem","remove","index","removeArrayItem","swap","indexA","indexB","swapArrayItems","move","from","to","moveArrayItem","Fragment","ItemWrapper","itemPath","Provider","itemFieldComponents","prop","propertySignatures","itemKey","name","type","itemDef","Field","makeField","itemComponent","properties","Item","Proxy","target","Reflect","makeFieldComponents","fields","components","key","entries","isArrayFieldDef","arrayComponentMap","isFieldDef","componentOrBundle","fieldComponent","component","make","self","options","mode","onSubmit","runtime","providedRuntime","empty","Mode","parse","formAtoms","FormAtoms","formBuilder","combinedSchema","fieldRefs","getFieldAtom","hasChangedSinceSubmitAtom","isDirtyAtom","keepAliveActiveAtom","lastSubmittedValuesAtom","mountAtom","resetAtom","revertToLastSubmitAtom","rootErrorAtom","setValuesAtom","submitAtom","valuesAtom","InitializeComponent","defaultValues","registry","RegistryContext","state","callSubmit","isInitializedRef","isKeptAlive","currentState","createInitialState","debouncedAutoSubmit","stateOption","undefined","lastValuesRef","pendingChangesRef","wasSubmittingRef","useAtomSubscribe","currentValues","submitResult","immediate","result","isSubmitting","wasSubmitting","onBlurAutoSubmit","lastSubmittedValues","encoded","fieldComponents","KeepAlive","setKeepAliveActive","useLayoutEffect","useAtomMount","hasChangedSinceSubmit","rootError","Initialize","submit","reset","revertToLastSubmit","setValues","mount","exports","forField","_field","displayName","charAt","toUpperCase","slice"],"sources":["../../src/FormReact.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/dts/FormReact.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as Atom from "@effect-atom/atom/Atom";
|
|
2
2
|
import { Field, FormAtoms, Mode } from "@lucas-barake/effect-form";
|
|
3
3
|
import type * as FormBuilder from "@lucas-barake/effect-form/FormBuilder";
|
|
4
4
|
import type * as Effect from "effect/Effect";
|
|
@@ -107,6 +107,8 @@ export type BuiltForm<TFields extends Field.FieldsRecord, R, A = void, E = never
|
|
|
107
107
|
readonly setValues: Atom.Writable<void, Field.EncodedFromFields<TFields>>;
|
|
108
108
|
readonly setValue: <S>(field: FormBuilder.FieldRef<S>) => Atom.Writable<void, S | ((prev: S) => S)>;
|
|
109
109
|
readonly getFieldAtom: <S>(field: FormBuilder.FieldRef<S>) => Atom.Atom<Option.Option<S>>;
|
|
110
|
+
readonly mount: Atom.Atom<void>;
|
|
111
|
+
readonly KeepAlive: React.FC;
|
|
110
112
|
} & FieldComponents<TFields, CM>;
|
|
111
113
|
type FieldComponents<TFields extends Field.FieldsRecord, CM extends FieldComponentMap<TFields>> = {
|
|
112
114
|
readonly [K in keyof TFields]: TFields[K] extends Field.FieldDef<any, any> ? React.FC<ExtractExtraProps<CM[K]>> : TFields[K] extends Field.ArrayFieldDef<any, infer S> ? ArrayFieldComponent<S, ExtractArrayItemExtraProps<CM[K], S>> : never;
|
|
@@ -131,34 +133,30 @@ type ArrayFieldComponent<S extends Schema.Schema.Any, ExtraPropsMap> = React.FC<
|
|
|
131
133
|
} ? EP : Record<string, never>>;
|
|
132
134
|
} : unknown);
|
|
133
135
|
/**
|
|
134
|
-
*
|
|
136
|
+
* Creates a React form from a FormBuilder.
|
|
135
137
|
*
|
|
136
138
|
* @example
|
|
137
139
|
* ```tsx
|
|
138
140
|
* import { FormBuilder } from "@lucas-barake/effect-form"
|
|
139
141
|
* import { FormReact } from "@lucas-barake/effect-form-react"
|
|
140
142
|
* import { useAtomValue, useAtomSet } from "@effect-atom/atom-react"
|
|
141
|
-
* import * as Atom from "@effect-atom/atom/Atom"
|
|
142
143
|
* import * as Schema from "effect/Schema"
|
|
143
|
-
* import * as Layer from "effect/Layer"
|
|
144
144
|
*
|
|
145
|
-
* const
|
|
146
|
-
*
|
|
147
|
-
* const loginForm = FormBuilder.empty
|
|
145
|
+
* const loginFormBuilder = FormBuilder.empty
|
|
148
146
|
* .addField("email", Schema.String)
|
|
149
147
|
* .addField("password", Schema.String)
|
|
150
148
|
*
|
|
151
|
-
*
|
|
152
|
-
*
|
|
149
|
+
* // Runtime is optional for forms without service requirements
|
|
150
|
+
* const loginForm = FormReact.make(loginFormBuilder, {
|
|
153
151
|
* fields: { email: TextInput, password: PasswordInput },
|
|
154
|
-
* onSubmit: (
|
|
152
|
+
* onSubmit: (_, { decoded }) => Effect.log(`Login: ${decoded.email}`),
|
|
155
153
|
* })
|
|
156
154
|
*
|
|
157
155
|
* // Subscribe to atoms anywhere in the tree
|
|
158
156
|
* function SubmitButton() {
|
|
159
|
-
* const isDirty = useAtomValue(
|
|
160
|
-
* const submit = useAtomValue(
|
|
161
|
-
* const callSubmit = useAtomSet(
|
|
157
|
+
* const isDirty = useAtomValue(loginForm.isDirty)
|
|
158
|
+
* const submit = useAtomValue(loginForm.submit)
|
|
159
|
+
* const callSubmit = useAtomSet(loginForm.submit)
|
|
162
160
|
* return (
|
|
163
161
|
* <button onClick={() => callSubmit()} disabled={!isDirty || submit.waiting}>
|
|
164
162
|
* {submit.waiting ? "Validating..." : "Login"}
|
|
@@ -166,29 +164,41 @@ type ArrayFieldComponent<S extends Schema.Schema.Any, ExtraPropsMap> = React.FC<
|
|
|
166
164
|
* )
|
|
167
165
|
* }
|
|
168
166
|
*
|
|
169
|
-
* function
|
|
167
|
+
* function LoginPage() {
|
|
170
168
|
* return (
|
|
171
|
-
* <
|
|
172
|
-
* <
|
|
173
|
-
* <
|
|
169
|
+
* <loginForm.Initialize defaultValues={{ email: "", password: "" }}>
|
|
170
|
+
* <loginForm.email />
|
|
171
|
+
* <loginForm.password />
|
|
174
172
|
* <SubmitButton />
|
|
175
|
-
* </
|
|
173
|
+
* </loginForm.Initialize>
|
|
176
174
|
* )
|
|
177
175
|
* }
|
|
178
176
|
* ```
|
|
179
177
|
*
|
|
180
178
|
* @category Constructors
|
|
181
179
|
*/
|
|
182
|
-
export declare const
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
readonly
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
}) =>
|
|
180
|
+
export declare const make: {
|
|
181
|
+
<TFields extends Field.FieldsRecord, A, E, SubmitArgs = void, CM extends FieldComponentMap<TFields> = FieldComponentMap<TFields>>(self: FormBuilder.FormBuilder<TFields, never>, options: {
|
|
182
|
+
readonly runtime?: Atom.AtomRuntime<never, never>;
|
|
183
|
+
readonly fields: CM;
|
|
184
|
+
readonly mode?: SubmitArgs extends void ? Mode.FormMode : Mode.FormModeWithoutAutoSubmit;
|
|
185
|
+
readonly onSubmit: (args: SubmitArgs, ctx: {
|
|
186
|
+
readonly decoded: Field.DecodedFromFields<TFields>;
|
|
187
|
+
readonly encoded: Field.EncodedFromFields<TFields>;
|
|
188
|
+
readonly get: Atom.FnContext;
|
|
189
|
+
}) => A | Effect.Effect<A, E, never>;
|
|
190
|
+
}): BuiltForm<TFields, never, A, E, SubmitArgs, CM>;
|
|
191
|
+
<TFields extends Field.FieldsRecord, R, A, E, SubmitArgs = void, ER = never, CM extends FieldComponentMap<TFields> = FieldComponentMap<TFields>>(self: FormBuilder.FormBuilder<TFields, R>, options: {
|
|
192
|
+
readonly runtime: Atom.AtomRuntime<R, ER>;
|
|
193
|
+
readonly fields: CM;
|
|
194
|
+
readonly mode?: SubmitArgs extends void ? Mode.FormMode : Mode.FormModeWithoutAutoSubmit;
|
|
195
|
+
readonly onSubmit: (args: SubmitArgs, ctx: {
|
|
196
|
+
readonly decoded: Field.DecodedFromFields<TFields>;
|
|
197
|
+
readonly encoded: Field.EncodedFromFields<TFields>;
|
|
198
|
+
readonly get: Atom.FnContext;
|
|
199
|
+
}) => A | Effect.Effect<A, E, R>;
|
|
200
|
+
}): BuiltForm<TFields, R, A, E, SubmitArgs, CM>;
|
|
201
|
+
};
|
|
192
202
|
/**
|
|
193
203
|
* A curried helper that infers the schema type from a field definition.
|
|
194
204
|
* Provides ergonomic type inference when defining field components.
|
|
@@ -248,10 +258,10 @@ export declare const forField: <K extends string, S extends Schema.Schema.Any>(_
|
|
|
248
258
|
* ))
|
|
249
259
|
*
|
|
250
260
|
* // Use in form builder
|
|
251
|
-
* const
|
|
261
|
+
* const formBuilder = FormBuilder.empty.addField(NameInput.field)
|
|
252
262
|
*
|
|
253
|
-
* // Use in
|
|
254
|
-
* const
|
|
263
|
+
* // Use in make()
|
|
264
|
+
* const form = FormReact.make(formBuilder, {
|
|
255
265
|
* runtime,
|
|
256
266
|
* fields: { name: NameInput },
|
|
257
267
|
* onSubmit: (_, { decoded }) => Effect.log(decoded.name),
|