Skip to content

Commit eee760d

Browse files
authored
Merge pull request #963 from robbieaverill/feature/custom-doc-item-generator
Add support for custom sidebar DocItem generators supporting customisation
2 parents 3031168 + ee9790c commit eee760d

File tree

5 files changed

+97
-54
lines changed

5 files changed

+97
-54
lines changed

README.md

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -174,13 +174,15 @@ The `docusaurus-plugin-openapi-docs` plugin can be configured with the following
174174

175175
`sidebarOptions` can be configured with the following options:
176176

177-
| Name | Type | Default | Description |
178-
| -------------------- | --------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
179-
| `groupPathsBy` | `string` | `null` | Organize and group sidebar slice by specified option. Note: Currently, `groupPathsBy` only contains support for grouping by `tag` and `tagGroup`. |
180-
| `categoryLinkSource` | `string` | `null` | Defines what source to use for rendering category link pages when grouping paths by tag. <br/><br/>The supported options are as follows: <br/><br/> `tag`: Sets the category link config type to `generated-index` and uses the tag description as the link config description. <br/><br/>`info`: Sets the category link config type to `doc` and renders the `info` section as the category link (recommended only for multi/micro-spec scenarios). <br/><br/>`none`: Does not create pages for categories, only groups that can be expanded/collapsed. |
181-
| `sidebarCollapsible` | `boolean` | `true` | Whether sidebar categories are collapsible by default. |
182-
| `sidebarCollapsed` | `boolean` | `true` | Whether sidebar categories are collapsed by default. |
183-
| `customProps` | `object` | `null` | Additional props for customizing a sidebar item. |
177+
| Name | Type | Default | Description |
178+
| -------------------- | ---------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
179+
| `groupPathsBy` | `string` | `null` | Organize and group sidebar slice by specified option. Note: Currently, `groupPathsBy` only contains support for grouping by `tag` and `tagGroup`. |
180+
| `categoryLinkSource` | `string` | `null` | Defines what source to use for rendering category link pages when grouping paths by tag. <br/><br/>The supported options are as follows: <br/><br/> `tag`: Sets the category link config type to `generated-index` and uses the tag description as the link config description. <br/><br/>`info`: Sets the category link config type to `doc` and renders the `info` section as the category link (recommended only for multi/micro-spec scenarios). <br/><br/>`none`: Does not create pages for categories, only groups that can be expanded/collapsed. |
181+
| `sidebarCollapsible` | `boolean` | `true` | Whether sidebar categories are collapsible by default. |
182+
| `sidebarCollapsed` | `boolean` | `true` | Whether sidebar categories are collapsed by default. |
183+
| `customProps` | `object` | `null` | Additional props for customizing a sidebar item. |
184+
| `sidebarGenerators` | `object` | `null` | Optional: Customize sidebar rendering with callback functions. |
185+
| `createDocItem` | `function` | `null` | Optional: Returns a `SidebarItemDoc` object, which allows for customisation of sidebar items. For example, add a class name in certain conditions, or add `customProps` to provide custom rendering. See below for a list of supported operations. |
184186

185187
> You may optionally configure a `sidebarOptions`. In doing so, an individual `sidebar.js` slice with the configured options will be generated within the respective `outputDir`.
186188
@@ -207,6 +209,14 @@ The `docusaurus-plugin-openapi-docs` plugin can be configured with the following
207209
| `createTagPageMD` | `function` | `null` | _Optional:_ Returns a string of the raw markdown body for tag pages.<br/><br/>**Function type:** `(pageData: TagPageMetadata) => string` |
208210
| `createSchemaPageMD` | `function` | `null` | _Optional:_ Returns a string of the raw markdown body for schema pages.<br/><br/>**Function type:** `(pageData: SchemaPageMetadata) => string` |
209211

212+
### sidebarGenerators
213+
214+
`sidebarGenerators` can be configured with the following options:
215+
216+
| Name | Type | Default | Description |
217+
| --------------- | ---------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
218+
| `createDocItem` | `function` | `null` | Optional: Returns a `SidebarItemDoc` object containing metadata for a sidebar item.<br/><br/>**Function type** `(item: ApiPageMetadata | SchemaPageMetadata, context: { sidebarOptions: SidebarOptions; basePath: string }) => SidebarItemDoc` |
219+
210220
## CLI Usage
211221

212222
```bash

0 commit comments

Comments
 (0)