Add option for sorting union members #503
Merged
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.
Background
I have a problem in Storybook docs where the order of union members is unpredictable. As far as I can tell, it's deterministic, but I just can't determine what it will be from build to build. A single commit of our code is consistent, but unrelated changes to our codebase can end up changing the order in which strings in a union are printed out in our prop tables. This is more than an annoyance because I have regression tests around the content of the documentation, and I can't lock onto it with a snapshot if the order keeps changing; it gives me false negatives all the time.
Summary of changes
I've added a
shouldSortUnions
configuration option that, when used in combination withshouldExtractValuesFromUnion
will make sure the members are sorted in a consistent way (string sort order).Fixes #302
Verification
I wrote unit tests, but I was unable to get the examples running due to some outdated dependencies. I did verify my changes in Storybook, however. See the screenshots below. In order to set the correct options for this library from the Storybook config, I had to extend the defaults like this:
(See also storybookjs/storybook#26496 and specifically this comment.)
Before
After