Chore(docs): Add composable structure section and component descriptions to documentation
Describe the issue. What is the expected and unexpected behavior? Consider adding a "General intended structure" section to documentation for more compassable components, and add descriptions for sub-components in the "Props" section to provide more details on their use-cases.
For sub-component descriptions, we should consider ensuring that any sub-components used in examples/exported for consumer use are added to the "Props" section. For example, Application Launcher has examples using ApplicationLauncherSeparator, but that is not included in the props section of the component page. Note: this will cause an issue for sub-components that do not export a props interface, as an empty table will be rendered to that section of the component page.
Additionally, we should align on when to include other components on a page's "Props" section. The Login Page component, for example, uses List and ListItem in some examples, but does not include the props table for them. The Alert Group component on the other hand includes the Alert props table.
e.g. General intended structure File upload - multiple is designed in a composable manner to maximize flexibility. The general intended component relationships are arranged similarly to:
See #7603 for working examples
Is this a bug or enhancement? If this issue is a bug, is this issue blocking you or is there a work-around? enhancement
Needs only sub-component descriptions:
- [ ] #7973
- [ ] #7978
- [ ] Search input (doesn't have sub-components, but descriptions on the items in its "Props" section could be useful)
- [ ] Slider (doesn't have sub-components, but descriptions on the items in its "Props" section could be useful)
- [ ] Tree view
- [ ] Wizard
Needs both "composable structure" and sub-component descriptions:
- [ ] Accordion
- [ ] Action list
- [ ] Alert group (currently the alert group page includes Alert specific components in the "Props" section)
- [ ] Application launcher (partially composable)
- [ ] Breadcrumb
- [ ] Card
- [ ] Clipboard copy (currently the component page includes ClipboardCopyButton in the "Props" section, but the component isn't used in any examples. If we want to keep this, it may be worth considering whether any other sub-components should be exposed on all components)
- [ ] Chip group (currently the chip group page includes the Chip component in the "Props" section)
- [ ] Code block
- [ ] Context selector
- [ ] Data list
- [ ] Description list
- [ ] Drag and drop (wait for Nicole to provide feedback)
- [ ] Drawer
- [ ] Dropdown (partially composable)
- [x] #7692
- [ ] Empty state
- [ ] Form
- [ ] Form select
- [ ] Helper text
- [ ] Hint
- [ ] Input group
- [ ] Jump links
- [ ] Label group (currently the label group page includes the Label component in its "Props" section)
- [ ] List
- [ ] Login page
- [ ] Masthead
- [ ] Menu
- [x] #7691
- [ ] Navigation
- [ ] Notification drawer
- [ ] Options menu (partially composable)
- [ ] Overflow menu
- [ ] Page
- [ ] Panel
- [ ] Progress stepper
- [ ] Select (partially composable)
- [ ] Sidebar
- [ ] Simple list
- [ ] Table Composable (because of the different variants of a table, the structure section may need to be split up to several different ones)
- [ ] Table Legacy (could arguably only require sub-component descriptions, but since examples show the
TableHeaderinside ofTableit might be good to include some sort of "intended structure" section/mention) - [ ] Tabs
- [ ] Text
- [ ] Text input group
- [ ] Toggle group
- [ ] Toolbar
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.
Depending on implementation of this idea (one suggestion could be a new tab in components along with React, React Demos, etc, though that might depend on whether that clutters things too much), this could also be a good opportunity to give a quick explanation for composable components. For example, "MultipleFileUploadMain is for ABC/should be used for Scenario D, MultipleFileUploadStatus is for XYZ ..." and so on.
+1 @thatblindgeye I think that combining this with a general approach that better details the different sub-components within a composable component could make PatternFly a lot more approachable.
We have an example which includes something like this. Maybe more examples or doc pages could include sections like this? https://www.patternfly.org/v4/components/dual-list-selector#composable-dual-list-selector