How to add Custom renderer validation errors from json forms ajv errors

Hi,

Is there a way to add errors from custom renderer. I am trying to add an error from custom renderer but its not working. Not sure what is wrong. For an example sake, i created a autocomplete custom renderer and when a specific value is selected “I9Event” then i am adding custom error to existing json form ajv errors. Here i have example example
When i select a value

const AddCustomErrors = (newValue: any) => {
const currentErrors: any = core?.errors;
if (dispatch != undefined) {
if (newValue === “I9Event”) {
dispatch(Actions.updateErrors([…currentErrors, …additionalErrors]));
}
}
};

Could you please let me know how to update/add errors from custom renderer.

Thanks in advance
Vivek

Hi @vivek, the use case is sadly not that well supported at the moment. The approach you describe should work in general, however your errors will be removed again immediately with any data update within JSON Forms.

We have an open issue for this. It could also be solved with middleware support.

To work around this I see three options:

  • Wrap AJV which is handed over to JSON Forms. You can then hand back modified validators to JSON Forms and add your own errors whenever they are invoked.
  • Copy the existing JSONFormsStateProvider and add your own middleware support (which can be a simplified errors-only version of course). Use the modified JSONFormsStateProvider instead of the JsonForms component then.
  • Listen to all data changes in JSON Forms and invoke updateErrors with every data change to re-add your errors.

All of these solutions have some downsides.

We have this issue on our agenda at some point, however first we’ll finish the 3.0 release.