UNPKG

@modular-forms/react

Version:

The modular and type-safe form library for React

32 lines (31 loc) 1.57 kB
import { getFieldArrayStore, getFieldStore, getFilteredNames, getOptions, } from '../utils'; export function getErrors(form, arg2, arg3) { // Get filtered field names to get error from const [fieldNames, fieldArrayNames] = getFilteredNames(form, arg2); // Destructure options and set default values const { shouldActive = true, shouldTouched = false, shouldDirty = false, } = getOptions(arg2, arg3); // If no field or field array name is specified, set listener to be notified // when a new field or field array is added if (typeof arg2 !== 'string' && !Array.isArray(arg2)) { form.internal.fieldNames.value; form.internal.fieldArrayNames.value; // Otherwise if a field array is included, set listener to be notified when // a new field array items is added } else { fieldArrayNames.forEach((fieldArrayName) => getFieldArrayStore(form, fieldArrayName).items.value); } // Create and return object with form errors return [ ...fieldNames.map((name) => [name, getFieldStore(form, name)]), ...fieldArrayNames.map((name) => [name, getFieldArrayStore(form, name)]), ].reduce((formErrors, [name, fieldOrFieldArray]) => { if (fieldOrFieldArray.error.value && (!shouldActive || fieldOrFieldArray.active.value) && (!shouldTouched || fieldOrFieldArray.touched.value) && (!shouldDirty || fieldOrFieldArray.dirty.value)) { formErrors[name] = fieldOrFieldArray.error.value; } return formErrors; }, {}); }