@modular-forms/solid
Version:
The modular and type-safe form library for SolidJS
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.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;
}, {});
}