Open
Description
Prerequisites
- I have searched the existing issuesI understand that providing a SSCCE example is tremendously useful to the maintainers.I have read the documentationIdeally, I'm providing a sample JSFiddle, Codesandbox.io or preferably a shared playground link demonstrating the issue.
What theme are you using?
mui
Version
5.9.0
Current Behavior
For an object type, default values are seemingly assumed to map to "properties" rather than "additionalProperties," or at the very least, mapping them to "additionalProperties" does not seem to work as expected. Take the following JSONSchema
example:
{
"title": "Test Defaults",
"default": {
"test-key": "test-value"
},
"description": "A simple form with additional properties example.",
"type": "object",
"additionalProperties": {
"type": "string"
}
}
As the linked playground shows, when the form renders, it does render with an entry matching the "test-key" entry in the default. However, the following issues are present:
- It is not possible to delete the entry (despite it being an "additional" property)
- Changing the key and blurring results in additional rows being generated
- The initial key remains in formData but does not appear in the form anymore
Expected Behavior
Any object key specified within the default object should be understood to be an "additional" property if it does not match some property specified in "properties". Thus, the following conditions would hold:
- The entry would appear as it currently does
- The entry could be deleted
- The entry could have its key changed with no side effects e.g. generating additional rows
Steps To Reproduce
- View the shared playground here.
- Attempt to delete the defaulted row and observe that it is not possible
- Change "test-key" to "test-key2" and blur; observe the newly created row
Environment
Shared playground
Anything else?
No response
Activity
heath-freenome commentedon Jul 14, 2023
@dd12440 Wow! great bug find. Given how little time us few maintainers get to spend on the project (we volunteer a few hours a week generally), we could really use some help fixing this. Is this something you can help us with?
dd12440 commentedon Aug 29, 2023
@heath-freenome, I'm going to plan to try to find time to prioritize this. With that said, if anyone else is experiencing this issue and is motivated to address it, then there will be no complaints from me.
heath-freenome commentedon Aug 29, 2023
@dd12440 that would be awesome
HanJaeJoon commentedon Apr 26, 2024
react-jsonschema-form/packages/utils/src/schema/getDefaultFormState.ts
Lines 472 to 474 in ef5afed
When the above code called immediately after changing the form, the
formData
value come as{ test-key1: 'test-value' }
.But default value (
{ "test-key": "test-value" }
) is still indefaults
.The result of merging the two values (
formData
anddefaults
) is{test-key: 'test-value', test-key1: 'test-value'}
.fix rjsf-team#3759
Piotr-Debicki commentedon Jun 7, 2024
Any update on this? I just ran into the same issue. Looks like onChange is regenerating the defaults and merging them every time something changes (edit/remove). Is that expected behavior?
dd12440 commentedon Jun 7, 2024
My only update here is that I have not and (unfortunately) do not expect to be able to work on this in the foreseeable future. If someone else has time, this would certainly be a major improvement to the library.