Skip to content

Conversation

ericsoderberghp
Copy link
Contributor

What does this PR do?

In Select, previously if the caller provided options as an array of objects but did not pass a labelKey or valueKey this crashed the browser due to attempting to render a javascript object.

This change makes Select more resilient to this scenario by using labelKey if valueKey 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

@ericsoderberghp ericsoderberghp merged commit 172790f into master Aug 25, 2022
@ericsoderberghp ericsoderberghp deleted the fix/select-objects-no-keys branch August 25, 2022 05:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants