UNPKG

@modular-forms/solid

Version:

The modular and type-safe form library for SolidJS

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.get(); form.internal.fieldArrayNames.get(); // 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.get()); } // 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.get() && (!shouldActive || fieldOrFieldArray.active.get()) && (!shouldTouched || fieldOrFieldArray.touched.get()) && (!shouldDirty || fieldOrFieldArray.dirty.get())) { formErrors[name] = fieldOrFieldArray.error.get(); } return formErrors; }, {}); }