remix-validated-form
Version:
Form component and utils for easy form validation in remix
14 lines (13 loc) • 706 B
JavaScript
import { atom } from "jotai";
import { atomFamily } from "jotai/utils";
import lodashGet from "lodash/get";
import { fieldErrorsAtom, formPropsAtom, hasBeenSubmittedAtom, touchedFieldsAtom, } from "./state";
import { controlledFieldsAtom } from "./state/controlledFields";
export const resetAtom = atomFamily((formId) => atom(null, (get, set) => {
set(fieldErrorsAtom(formId), {});
set(touchedFieldsAtom(formId), {});
set(hasBeenSubmittedAtom(formId), false);
const { defaultValues } = get(formPropsAtom(formId));
const controlledFields = get(controlledFieldsAtom(formId));
Object.entries(controlledFields).forEach(([name, atom]) => set(atom, lodashGet(defaultValues, name)));
}));