@modular-forms/solid
Version:
The modular and type-safe form library for SolidJS
35 lines (34 loc) • 1.16 kB
JavaScript
import { untrack } from 'solid-js';
import { getFieldArrayStore } from './getFieldArrayStore';
import { getFieldStore } from './getFieldStore';
/**
* Sets an error response if a form error was not set at any field or field
* array.
*
* @param form The form of the errors.
* @param formErrors The form errors.
* @param options The error options.
*/
export function setErrorResponse(form, formErrors, { shouldActive = true }) {
// Combine errors that were not set for any field or field array into one
// general form error response message
const message = Object.entries(formErrors)
.reduce((errors, [name, error]) => {
if ([
getFieldStore(form, name),
getFieldArrayStore(form, name),
].every((fieldOrFieldArray) => !fieldOrFieldArray ||
(shouldActive && !untrack(fieldOrFieldArray.active.get)))) {
errors.push(error);
}
return errors;
}, [])
.join(' ');
// If there is a error message, set it as form response
if (message) {
form.internal.response.set({
status: 'error',
message,
});
}
}