react-jsonschema-form
react-jsonschema-form copied to clipboard
Default value not prefilled when object with if/then is wrapped to another object
Prerequisites
- [X] I have searched the existing issues
- [X] I understand that providing a SSCCE example is tremendously useful to the maintainers.
- [X] I have read the documentation
- [X] Ideally, I'm providing a sample JSFiddle, Codesandbox.io or preferably a shared playground link demonstrating the issue.
What theme are you using?
core
Version
5.x (current Playground version)
Current Behavior
I have a schema with type: object and if/then conditionally adding a new property with a default value. This works as expected. But if I wrap the whole schema in a wrapping object, the default value prefilling no longer works.
Expected Behavior
- Open this Playground example
- Click "checkbox"
Expected: A required field "foo" appears with default value "foo default value"
Actual: A required field "foo" appears with default value "foo default value"
I would expect that the same default behaviour happens even if the object is wrapped in another object.
Steps To Reproduce
- Open this Playground example which is the exact same schema as above but it's wrapped in a
wrappingObject. - Click "checkbox"
Expected: A required field "foo" appears with default value "foo default value"
Actual: A required field "foo" appears with NO default value.
Environment
- Mac
- Google Chrome Version 125.0.6422.142 (Official Build) (arm64)
- Playground
Anything else?
Playground options
Playground has multiple options that control default behaviour:
- Populate minItems in arrays
- allOf defaults behaviour
- Object fields default behavior
I tried changing all these settings but none of them didn't solve the issue.
Duplicate?
Here's another open issue that looks very similar: https://github.com/rjsf-team/react-jsonschema-form/issues/3599
It's similar because in #3599 the default behaviour seems to be first as expected, but when wrapped in an object, default prefilling is not working anymore. It's different in a sense that #3599 is about allOf but this bug is about if/then/else.
Feel free to close this one if you think this is duplicate of #3599
This is definitely a bug and we would appreciate a pull request to fix it. I just closed #3599 because I think that was fixed in #3969.
Interestingly, if you wrap if/then/else in allOf, it works. So that may be a useful workaround for you. See this playground link.
Thanks for the workaround! The workaround seems to work fine when the "allOf defaults behaviour" is set to "Populate defaults with allOf"