remix-validated-form 4.5.0 → 4.5.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/.turbo/turbo-build.log +8 -8
- package/browser/ValidatedForm.js +4 -4
- package/browser/internal/hooks.d.ts +1 -0
- package/browser/internal/hooks.js +1 -0
- package/browser/internal/logic/nestedObjectToPathObject.d.ts +0 -0
- package/browser/internal/logic/nestedObjectToPathObject.js +0 -0
- package/browser/internal/state/arrayUtil.d.ts +6 -0
- package/browser/internal/state/arrayUtil.js +236 -7
- package/browser/internal/state/createFormStore.d.ts +1 -0
- package/browser/internal/state/createFormStore.js +6 -0
- package/browser/internal/state/fieldArray.d.ts +18 -11
- package/browser/internal/state/fieldArray.js +44 -21
- package/browser/unreleased/formStateHooks.d.ts +4 -0
- package/browser/unreleased/formStateHooks.js +4 -1
- package/browser/userFacingFormContext.d.ts +4 -0
- package/browser/userFacingFormContext.js +3 -1
- package/dist/remix-validated-form.cjs.js +2 -2
- package/dist/remix-validated-form.cjs.js.map +1 -1
- package/dist/remix-validated-form.es.js +23 -10
- package/dist/remix-validated-form.es.js.map +1 -1
- package/dist/remix-validated-form.umd.js +2 -2
- package/dist/remix-validated-form.umd.js.map +1 -1
- package/dist/types/internal/hooks.d.ts +1 -0
- package/dist/types/internal/state/createFormStore.d.ts +1 -0
- package/dist/types/unreleased/formStateHooks.d.ts +4 -0
- package/dist/types/userFacingFormContext.d.ts +4 -0
- package/package.json +1 -1
- package/src/ValidatedForm.tsx +5 -4
- package/src/internal/hooks.ts +3 -0
- package/src/internal/state/createFormStore.ts +12 -1
- package/src/unreleased/formStateHooks.ts +8 -0
- package/src/userFacingFormContext.ts +7 -0
- package/src/validation/validation.test.ts +7 -7
@@ -2001,7 +2001,8 @@ const defaultFormState = {
|
|
2001
2001
|
submit: async () => {
|
2002
2002
|
throw new Error("Submit called before form was initialized.");
|
2003
2003
|
},
|
2004
|
-
resetFormElement: noOp
|
2004
|
+
resetFormElement: noOp,
|
2005
|
+
getValues: () => new FormData()
|
2005
2006
|
};
|
2006
2007
|
const createFormState = (formId, set2, get2) => ({
|
2007
2008
|
isHydrated: false,
|
@@ -2081,6 +2082,11 @@ const createFormState = (formId, set2, get2) => ({
|
|
2081
2082
|
invariant(formElement, "Cannot find reference to form. This is probably a bug in remix-validated-form.");
|
2082
2083
|
formElement.submit();
|
2083
2084
|
},
|
2085
|
+
getValues: () => {
|
2086
|
+
const formElement = get2().formElement;
|
2087
|
+
invariant(formElement, "Cannot find reference to form. This is probably a bug in remix-validated-form.");
|
2088
|
+
return new FormData(formElement);
|
2089
|
+
},
|
2084
2090
|
resetFormElement: () => {
|
2085
2091
|
var _a;
|
2086
2092
|
return (_a = get2().formElement) == null ? void 0 : _a.reset();
|
@@ -2224,6 +2230,7 @@ const useFormSubactionProp = (formId) => useFormStore(formId, (state) => {
|
|
2224
2230
|
var _a;
|
2225
2231
|
return (_a = state.formProps) == null ? void 0 : _a.subaction;
|
2226
2232
|
});
|
2233
|
+
const useFormValues = (formId) => useFormStore(formId, (state) => state.getValues);
|
2227
2234
|
const useControlledFieldValue = (context, field) => {
|
2228
2235
|
const value = useControlledFieldStore((state) => {
|
2229
2236
|
var _a;
|
@@ -2537,7 +2544,7 @@ const focusFirstInvalidInput = (fieldErrors, customFocusHandlers, formElement) =
|
|
2537
2544
|
var _a;
|
2538
2545
|
const namesInOrder = [...formElement.elements].map((el) => {
|
2539
2546
|
const input = el instanceof RadioNodeList ? el[0] : el;
|
2540
|
-
if (input instanceof
|
2547
|
+
if (input instanceof HTMLElement && "name" in input)
|
2541
2548
|
return input.name;
|
2542
2549
|
return null;
|
2543
2550
|
}).filter(nonNull).filter((name) => name in fieldErrors);
|
@@ -2559,8 +2566,8 @@ const focusFirstInvalidInput = (fieldErrors, customFocusHandlers, formElement) =
|
|
2559
2566
|
break;
|
2560
2567
|
}
|
2561
2568
|
}
|
2562
|
-
if (elem instanceof
|
2563
|
-
if (elem.type === "hidden") {
|
2569
|
+
if (elem instanceof HTMLElement) {
|
2570
|
+
if (elem instanceof HTMLInputElement && elem.type === "hidden") {
|
2564
2571
|
continue;
|
2565
2572
|
}
|
2566
2573
|
elem.focus();
|
@@ -2719,7 +2726,7 @@ function ValidatedForm(_a) {
|
|
2719
2726
|
if (fetcher)
|
2720
2727
|
fetcher.submit(submitter || e2.currentTarget);
|
2721
2728
|
else
|
2722
|
-
submit(submitter || target, {
|
2729
|
+
submit(submitter || target, { replace });
|
2723
2730
|
}
|
2724
2731
|
};
|
2725
2732
|
return /* @__PURE__ */ React.createElement(Form$1, __spreadProps(__spreadValues({
|
@@ -2840,6 +2847,7 @@ const useFormHelpers = (formId) => {
|
|
2840
2847
|
const setFieldErrors = useSetFieldErrors(formContext.formId);
|
2841
2848
|
const reset = useResetFormElement(formContext.formId);
|
2842
2849
|
const submit = useSubmitForm(formContext.formId);
|
2850
|
+
const getValues = useFormValues(formContext.formId);
|
2843
2851
|
return useMemo(() => ({
|
2844
2852
|
setTouched,
|
2845
2853
|
validateField,
|
@@ -2847,7 +2855,8 @@ const useFormHelpers = (formId) => {
|
|
2847
2855
|
validate,
|
2848
2856
|
clearAllErrors: () => setFieldErrors({}),
|
2849
2857
|
reset,
|
2850
|
-
submit
|
2858
|
+
submit,
|
2859
|
+
getValues
|
2851
2860
|
}), [
|
2852
2861
|
clearError,
|
2853
2862
|
reset,
|
@@ -2855,7 +2864,8 @@ const useFormHelpers = (formId) => {
|
|
2855
2864
|
setTouched,
|
2856
2865
|
submit,
|
2857
2866
|
validate,
|
2858
|
-
validateField
|
2867
|
+
validateField,
|
2868
|
+
getValues
|
2859
2869
|
]);
|
2860
2870
|
};
|
2861
2871
|
const useFormContext = (formId) => {
|
@@ -2868,7 +2878,8 @@ const useFormContext = (formId) => {
|
|
2868
2878
|
clearAllErrors,
|
2869
2879
|
validate,
|
2870
2880
|
reset,
|
2871
|
-
submit
|
2881
|
+
submit,
|
2882
|
+
getValues
|
2872
2883
|
} = useFormHelpers(formId);
|
2873
2884
|
const registerReceiveFocus = useRegisterReceiveFocus(context.formId);
|
2874
2885
|
const clearError = useCallback((...names) => {
|
@@ -2884,7 +2895,8 @@ const useFormContext = (formId) => {
|
|
2884
2895
|
clearAllErrors,
|
2885
2896
|
validate,
|
2886
2897
|
reset,
|
2887
|
-
submit
|
2898
|
+
submit,
|
2899
|
+
getValues
|
2888
2900
|
}), [
|
2889
2901
|
clearAllErrors,
|
2890
2902
|
clearError,
|
@@ -2894,7 +2906,8 @@ const useFormContext = (formId) => {
|
|
2894
2906
|
state,
|
2895
2907
|
submit,
|
2896
2908
|
validate,
|
2897
|
-
validateField
|
2909
|
+
validateField,
|
2910
|
+
getValues
|
2898
2911
|
]);
|
2899
2912
|
};
|
2900
2913
|
export { ValidatedForm, createValidator, setFormDefaults, useControlField, useField, useFormContext, useIsSubmitting, useIsValid, useUpdateControlledField, validationError };
|