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.
Files changed (33) hide show
  1. package/.turbo/turbo-build.log +8 -8
  2. package/browser/ValidatedForm.js +4 -4
  3. package/browser/internal/hooks.d.ts +1 -0
  4. package/browser/internal/hooks.js +1 -0
  5. package/browser/internal/logic/nestedObjectToPathObject.d.ts +0 -0
  6. package/browser/internal/logic/nestedObjectToPathObject.js +0 -0
  7. package/browser/internal/state/arrayUtil.d.ts +6 -0
  8. package/browser/internal/state/arrayUtil.js +236 -7
  9. package/browser/internal/state/createFormStore.d.ts +1 -0
  10. package/browser/internal/state/createFormStore.js +6 -0
  11. package/browser/internal/state/fieldArray.d.ts +18 -11
  12. package/browser/internal/state/fieldArray.js +44 -21
  13. package/browser/unreleased/formStateHooks.d.ts +4 -0
  14. package/browser/unreleased/formStateHooks.js +4 -1
  15. package/browser/userFacingFormContext.d.ts +4 -0
  16. package/browser/userFacingFormContext.js +3 -1
  17. package/dist/remix-validated-form.cjs.js +2 -2
  18. package/dist/remix-validated-form.cjs.js.map +1 -1
  19. package/dist/remix-validated-form.es.js +23 -10
  20. package/dist/remix-validated-form.es.js.map +1 -1
  21. package/dist/remix-validated-form.umd.js +2 -2
  22. package/dist/remix-validated-form.umd.js.map +1 -1
  23. package/dist/types/internal/hooks.d.ts +1 -0
  24. package/dist/types/internal/state/createFormStore.d.ts +1 -0
  25. package/dist/types/unreleased/formStateHooks.d.ts +4 -0
  26. package/dist/types/userFacingFormContext.d.ts +4 -0
  27. package/package.json +1 -1
  28. package/src/ValidatedForm.tsx +5 -4
  29. package/src/internal/hooks.ts +3 -0
  30. package/src/internal/state/createFormStore.ts +12 -1
  31. package/src/unreleased/formStateHooks.ts +8 -0
  32. package/src/userFacingFormContext.ts +7 -0
  33. 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 HTMLInputElement)
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 HTMLInputElement) {
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, { method, replace });
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 };