Add option for sorting union members#503
Add option for sorting union members#503pvasek merged 4 commits intostyleguidist:masterfrom pwolfert:pwolfert/sort-unions
Conversation
I'm going to actually leave the enums out of it because they get converted into numbers by default, and sorting them becomes meaningless. In the next commit, I'll change the name of everything to reflect that
|
Added details about how I verified it in Storybook, since I was having trouble verifying it in the examples. |
|
@pvasek, how can I help get this into a release? |
|
@pwolfert as there was no release for a long time and the new version includes a lot of other things as well, I have released a beta version |
|
Thank you, @pvasek! I'll test it out today. Sorry I was out of office. |
|
Putting this here for a record: Since the "resolutions": {
"react-docgen-typescript": "2.3.0-beta.0"
} |
|
It's all working for me, @pvasek. Are there any other contributors since 2.2 who might help test it? |
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
shouldSortUnionsconfiguration option that, when used in combination withshouldExtractValuesFromUnionwill 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