rjsf-team/react-jsonschema-form

anyOf/oneOf keeping undefined property of old option

Open

#3711 opened on May 31, 2023

View on GitHub
 (1 comment) (2 reactions) (1 assignee)TypeScript (13,175 stars) (2,136 forks)batch import
bughelp wanted

Description

Prerequisites

What theme are you using?

core

Version

5.x

Current Behavior

When editing a field in oneOf/anyOf property and then switching to the other schema, the formData still keeps the old property but as undefined. This causes issues when submitting the form and the schema has set additionalProperties: false. Here is a simple rjsf playground and example schema:

{
  "type": "object",
  "anyOf": [
    {
      "additionalProperties": false,
      "properties": {
        "lorem": {
          "type": "string"
        }
      }
    },
    {
      "additionalProperties": false,
      "properties": {
        "ipsum": {
          "type": "string"
        }
      }
    }
  ]
}

The function sanitizeDataForNewSchema is where the old formData fields are set to undefined. I think a simple solution would be to filter out all undefined fields after all the logic in sanitizeDataForNewSchema is done.

Expected Behavior

When switching to other schema it would clear out any old fields.

Steps To Reproduce

No response

Environment

- OS:
- Node:
- npm:

Anything else?

No response

Contributor guide