mirror of
				https://github.com/strapi/strapi.git
				synced 2025-10-31 09:56:44 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			136 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			136 lines
		
	
	
		
			3.4 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;
 | |
| ```
 | 
