Changed Select to fix an issue when options are objects and no labelKey or valueKey is provided #6299
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What does this PR do?
In Select, previously if the caller provided
options
as an array of objects but did not pass alabelKey
orvalueKey
this crashed the browser due to attempting to render a javascript object.This change makes Select more resilient to this scenario by using
labelKey
ifvalueKey
isn't provided and vice versa and using the first key otherwise.Where should the reviewer start?
utils.js
What testing has been done on this PR?
Manually changed the Object Options story to have neither or only one of the *key properties.
Also, added a new unit test for this scenario and validated that it failed without the change but passed with it.
How should this be manually tested?
See above ^
Do Jest tests follow these best practices?
Preserved existing Select test patterns.
Any background context you want to provide?
This was uncovered via users of grommet-designer where they would pass the array of objects for
options
but hadn't set either of the *key properties yet. Crashing the browser meant they couldn't proceed.Do the grommet docs need to be updated?
no
Should this PR be mentioned in the release notes?
yes
Is this change backwards compatible or is it a breaking change?
backwards compatible