@modular-forms/react
Version:
The modular and type-safe form library for React
32 lines (31 loc) • 1.57 kB
JavaScript
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;
}, {});
}