mirror of
https://github.com/strapi/strapi.git
synced 2025-07-12 11:31:38 +00:00
131 lines
3.0 KiB
Markdown
131 lines
3.0 KiB
Markdown
# Plugin Menu library
|
|
|
|
```js
|
|
// ...
|
|
|
|
import PluginLeftMenu from 'components/PluginLeftMenu';
|
|
|
|
// ...
|
|
|
|
const Foo = (props) => {
|
|
const sections = [
|
|
{
|
|
name: 'section 1',
|
|
items: [
|
|
{ icon: 'fa-caret-square-o-right', name: 'link 1'},
|
|
{ icon: 'fa-caret-square-o-right', name: 'link 2'},
|
|
],
|
|
},
|
|
];
|
|
|
|
return (
|
|
<div className={styles.foo}>
|
|
<div className="container-fluid">
|
|
<div className="row">
|
|
<PluginLeftMenu
|
|
sections={sections}
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
export default Foo;
|
|
|
|
// ...
|
|
```
|
|
|
|
## Usage
|
|
|
|
| Property | Type | Required | Description
|
|
:---| :---| :---| :---
|
|
| `addCustomSection` | function | no | Allows to add another section after the initial one. |
|
|
| `basePath` | string | yes | For example the basePath of the route '/plugins/my-plugin/foo/bar' is 'my-plugin/categories' |
|
|
| `renderCustomLink` | function | no | Allows to override the design and the behavior of a link |
|
|
| `sections` | array | yes | Sections of the component menu |
|
|
|
|
## Example
|
|
|
|
```js
|
|
// ...
|
|
|
|
import PluginLeftMenu from 'components/PluginLeftMenu';
|
|
|
|
// ...
|
|
|
|
const addCustomSection = (sectionStyles) => (
|
|
// You have access to the section styles
|
|
<div className={sectionStyles.pluginLeftMenuSection}>
|
|
<p>
|
|
DOCUMENTATION
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
Read more about strapi in our <a href="http://strapi.io/documentation" target="_blank">documentation</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
)
|
|
|
|
const renderAddLink = (props, customLinkStyles) => (
|
|
<li className={customLinkStyles.pluginLeftMenuLink}>
|
|
<div className={`${customLinkStyles.liInnerContainer}`} onClick={this.handleAddLinkClick}>
|
|
<div>
|
|
<i className={`fa ${props.link.icon}`} />
|
|
</div>
|
|
<span>{props.link.name}</span>
|
|
</div>
|
|
</li>
|
|
)
|
|
|
|
const renderCustomLink = (props, linkStyles) => {
|
|
if (props.link.name === 'bar') return this.renderAddLink(props, linkStyles);
|
|
|
|
return (
|
|
<li className={linkStyles.pluginLeftMenuLink}>
|
|
<NavLink className={linkStyles.link} to={`/plugins/my-plugin/foo/${props.link.name}`} activeClassName={linkStyles.linkActive}>
|
|
<div>
|
|
<i className={`fa fa-caret-square-o-right`} />
|
|
</div>
|
|
<div className={styles.contentContainer}>
|
|
<span className={spanStyle}>{props.link.name}</span>
|
|
</div>
|
|
|
|
</NavLink>
|
|
</li>
|
|
);
|
|
}
|
|
|
|
const Foo = (props) => {
|
|
const sections = [
|
|
{
|
|
name: 'section 1',
|
|
items: [
|
|
{ icon: 'fa-caret-square-o-right', name: 'link 1'},
|
|
{ icon: 'fa-caret-square-o-right', name: 'link 2'},
|
|
],
|
|
},
|
|
];
|
|
|
|
return (
|
|
<div className={styles.foo}>
|
|
<div className="container-fluid">
|
|
<div className="row">
|
|
<PluginLeftMenu
|
|
addCustomSection={addCustomSection}
|
|
sections={sections}
|
|
renderCustomLink={renderCustomLink}
|
|
basePath="my-plugins/foo"
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
// ...
|
|
|
|
export default Foo;
|
|
```
|