UNPKG

@modular-forms/solid

Version:

The modular and type-safe form library for SolidJS

38 lines (37 loc) 1.24 kB
import { batch, untrack } from 'solid-js'; import { getFieldAndArrayStores } from './getFieldAndArrayStores'; /** * Updates the touched, dirty and invalid state of the form. * * @param form The store of the form. */ export function updateFormState(form) { // Create state variables let touched = false, dirty = false, invalid = false; // Check each field and field array and update state if necessary untrack(() => { for (const fieldOrFieldArray of getFieldAndArrayStores(form)) { if (fieldOrFieldArray.active.get()) { if (fieldOrFieldArray.touched.get()) { touched = true; } if (fieldOrFieldArray.dirty.get()) { dirty = true; } if (fieldOrFieldArray.error.get()) { invalid = true; } } // Break loop if all state values are "true" if (touched && dirty && invalid) { break; } } }); // Update state of form batch(() => { form.internal.touched.set(touched); form.internal.dirty.set(dirty); form.internal.invalid.set(invalid); }); }