Skip to content

Default value not prefilled when object with if/then is wrapped to another object #4222

@rap1ds

Description

@rap1ds

Prerequisites

  • I have searched the existing issues
    I understand that providing a SSCCE example is tremendously useful to the maintainers.
    I have read the documentation
    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

  1. Open this Playground example
  2. 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

  1. Open this Playground example which is the exact same schema as above but it's wrapped in a wrappingObject.
  2. 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: #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

Activity

added
needs triageInitial label given, to be assigned correct labels and assigned
on Jun 17, 2024
nickgros

nickgros commented on Jun 21, 2024

@nickgros
Contributor

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.

added
if-then-elseIssues related to handling JSON Schema if/then/else
and removed
needs triageInitial label given, to be assigned correct labels and assigned
on Jun 21, 2024
rap1ds

rap1ds commented on Jun 28, 2024

@rap1ds
Author

Thanks for the workaround! The workaround seems to work fine when the "allOf defaults behaviour" is set to "Populate defaults with allOf"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @rap1ds@nickgros

        Issue actions

          Default value not prefilled when object with if/then is wrapped to another object · Issue #4222 · rjsf-team/react-jsonschema-form