Aargh, one of those silly "didn't read far enough in the documentation" -- Storybook DOES easily cover 2 levels of hierarchy, so you can have your main Documentation before your per-Component documentation, and then sorted Documentation sections (but if you need finer grained control than that, you're going to have to work harder.)
Assuming you already have a `export const parameters` object, just add this:
options: {
storySort: {
order: ['Documentation',
['Overview','Design System Workflow'],
'Components'],
},
},
But before I read low enough on the page to see the previous example, I had the "roll your own sort function" on my mind., even for the simpler sort one level of sections version. This was the code I came up with... I kind of like sorting one array by the contents of another:
const knownSectionsForSorting = ['Documentation', 'Components'];
const positionOfContainingSection = (titlePath: string) => {
const section = titlePath.substring(0, titlePath.indexOf('/'));
return knownSectionsForSorting.indexOf(section);
};
export const parameters = {
options: {
storySort: (a, b) => {
// story titles are the "kind" parameter of the second item of the info array
const diffInSection =
positionOfContainingSection(a[1].kind) -
positionOfContainingSection(b[1].kind);
return diffInSection || a[1].kind.localeCompare(b[1].kind);
},
},
};
You'd have to build something like that but more advanced if you need to sort individual files with a subsection of your Documentation section, for example.
And the documentation for doing that is a little light... odd that you have to look at "a[1].kind" to find the Title to sort on...
No comments:
Post a Comment