remoteoss / json-schema-form

https://json-schema-form.vercel.app
MIT License
70 stars 7 forks source link

custom errorMessage by field name doesn't work. #55

Open sandrina-p opened 8 months ago

sandrina-p commented 8 months ago

Given the following JSON Schema, I cannot override its errorMessage using createHeadlessForm()

{
  "properties": {
    "year": {
      "title": "Year",
      "type": "number",
      "presentation": {
        "inputType": "number"
      },
      "x-jsf-errorMessage": {
        "required": "Cannot be empty."
      },
      "minimum": 1900,
      "maximum": 2023
    }
  },
  "required": ["year"]
}

JSF Config:

const { fields } = createHeadlessForm(schemaAbove, {
  customProperties: {
    year: {
      errorMessage: {
        required: "The year is mandatory."
      }
    }
  }
})
sandrina-p commented 8 months ago

This issue might be out of scope for json-schema-form. We are discussing internally the possibility of deprecating customProperties in favor of moving mutations to JSON Schemas outside createHeadlessForm().

So in this case, we'd instead recommend doing this:

import mutate from 'json-schema-form';

const newSchema = mutate(schema, {
  fields: {
    year: {
      "x-jsf-errorMessage": {
        required: "Cannot be empty (custom error)"
      }
    },
  }
});

const form = createHeadlessForm(newSchema)