-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
When type
is an array, child id schema is lost
#2044
Comments
Vestride
changed the title
When
When Sep 11, 2020
type
is an array, id schema is losttype
is an array, child id schema is lost
Hmmm, This is still happening in 5.5.0 |
heath-freenome
added a commit
to heath-freenome/react-jsonschema-form
that referenced
this issue
Apr 11, 2023
Fixes rjsf-team#3512 by updating the `getFirstMatchingOption()` and `getClosestMatchingOption()` to take an optional discriminator property to use for drilling into one-of Objects to simplify selection detection Fixes rjsf-team#2044 Fixing the `toIdSchema()` generation to use the `getSchemaType()` function rather than just using `schema.type` - In `@rjsf/utils`, updated the `SchemaUtilsType`, its associated class implementation and several functions to fix both bug as follows: - Updated `SchemaUtilsType` to add an optional `discriminatorField?: string` parameter to the `get(First|Closest|)MatchingOption()` functions - Updated `createSchemaUtils()` to take the new `discriminatorField` parameter and forward it onto the underlying function `get(First|Closest|)MatchingOption() implementations - Updated the `getClosestMatchingOption()` and `getFirstMatchingOption()` to pass the new `discriminatorField` to the `getMatchingOption()` function - Updated `getMatchingOption()` to use `discriminatorField` when it is present in the `options` object properties to drill into the object to detect if that one field is valid - Also updated the `toIdSchemaInternal()` function to use `getSchemaType(schema) === 'object'` rather than `schema.type === 'object'` to get the proper pathing for ids - In `@rjsf/core`, updated the `MultiSchemaField`, to get the `discriminator.propertyName` value for a `anyOf/oneOf` object and pass it into `getClosestMatchingOption()` - Updated the `oneOf` and `anyOf` tests to verify the `discriminator` property works - Also updated the `oneOf` and `form` tests to update the few ids that were fixed by the `toIdSchema()` fix - Moved a test that was once just in the `bootstrap-4` theme related to `additionalProperties` being defined as true for a non-object type schema - In the other themes, updated the snapshots to include the new test that was moved from `bootstrap-4` into the `objectTests` - Updated `bootstrap-4` to delete the `AdditionalProperties.test.tsx` and its associated snapshot since it was moved to `core` - Updated the `utility-functions` documentation to add the new `discriminatorField` prop to the `get(First|Closest|)MatchingOption()` functions - Updated the `CHANGELOG.md` file accordingly
8 tasks
heath-freenome
added a commit
to heath-freenome/react-jsonschema-form
that referenced
this issue
Apr 11, 2023
Fixes rjsf-team#3512 by updating the `getFirstMatchingOption()` and `getClosestMatchingOption()` to take an optional discriminator property to use for drilling into one-of Objects to simplify selection detection Fixes rjsf-team#2044 Fixing the `toIdSchema()` generation to use the `getSchemaType()` function rather than just using `schema.type` - In `@rjsf/utils`, updated the `SchemaUtilsType`, its associated class implementation and several functions to fix both bug as follows: - Updated `SchemaUtilsType` to add an optional `discriminatorField?: string` parameter to the `get(First|Closest|)MatchingOption()` functions - Updated `createSchemaUtils()` to take the new `discriminatorField` parameter and forward it onto the underlying function `get(First|Closest|)MatchingOption() implementations - Updated the `getClosestMatchingOption()` and `getFirstMatchingOption()` to pass the new `discriminatorField` to the `getMatchingOption()` function - Updated `getMatchingOption()` to use `discriminatorField` when it is present in the `options` object properties to drill into the object to detect if that one field is valid - Also updated the `toIdSchemaInternal()` function to use `getSchemaType(schema) === 'object'` rather than `schema.type === 'object'` to get the proper pathing for ids - In `@rjsf/core`, updated the `MultiSchemaField`, to get the `discriminator.propertyName` value for a `anyOf/oneOf` object and pass it into `getClosestMatchingOption()` - Updated the `oneOf` and `anyOf` tests to verify the `discriminator` property works - Also updated the `oneOf` and `form` tests to update the few ids that were fixed by the `toIdSchema()` fix - Moved a test that was once just in the `bootstrap-4` theme related to `additionalProperties` being defined as true for a non-object type schema - In the other themes, updated the snapshots to include the new test that was moved from `bootstrap-4` into the `objectTests` - Updated `bootstrap-4` to delete the `AdditionalProperties.test.tsx` and its associated snapshot since it was moved to `core` - Updated the `utility-functions` documentation to add the new `discriminatorField` prop to the `get(First|Closest|)MatchingOption()` functions - Updated the `CHANGELOG.md` file accordingly
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Prerequisites
Playground link. Notice both "People" and "names" have the same
id
attribute in the DOM.Description
If a parent schema has
"type": ["object", "null"]
, theidSchema
passed to the child<SchemaField>
is an empty object{}
. Duplicateid
attributes now exist.Steps to Reproduce
Schema:
If
"type"
is changed to"object"
, the issue does not occur. The issue also happens when thenames
property is an object with a title instead of an array.Expected behavior
The
names
title should not have the same id (root__title
) as thePeople
title.Actual behavior
The
names
title has the same id (root__title
) as thePeople
title.Version
2.3.0
Changing this line to use
getSchemaType
"fixed" the issue for me locally, but one of the tests fails with that change.react-jsonschema-form/packages/core/src/utils.js
Line 1002 in af98427
The text was updated successfully, but these errors were encountered: