UNPKG

react-semantic-ui-accordion-menu

Version:
119 lines (95 loc) 3.63 kB
# React Semantic UI Accordion Menu An accordion menu built on top of react-semantic-ui package and react-dom **Appearance** ![Recordit GIF](http://g.recordit.co/qheemZXedT.gif) --- ## Installation **npm** ```bash npm i react-semantic-ui-accordion-menu styled-components --save ``` **yarn** ```bash yarn add react-semantic-ui-accordion-menu styled-components ``` --- ### Props | Prop | Type | Default value | Description | | --- | --- | --- | --- | | `tree`| _Array_ | `[]` | A config multidimensional array representing the tree of the nested menu. See the [example](#Example) for reference | | `fontSize`| _Number_ | 13 | Font size in px | `width`| _String_ | 100% | Menu width | `submenuBackgroundColor` | _String_ | #ffffff | Hex/RGB/RGBA background color for submenus | | `submenuFontColor` | _String_ | #000000 | Hex/RGB/RGBA background color for submenu fonts | `activeColor` | _String_ | #266bc0| Hex/RGB/RGBA background color for active links | `firstLevelBackgroundColor` | _String_ | #003178| Hex/RGB/RGBA background color for first leve items ___ ## Example ```javascript import React, { Component } from 'react'; import { BrowserRouter as Router, Route, NavLink } from "react-router-dom"; import './App.css'; import 'semantic-ui-css/semantic.min.css' import Menu from 'react-semantic-ui-accordion-menu'; import { Icon } from 'semantic-ui-react'; const config = [ // Wen no "content" or "section" are provided provide a NavLink into the title property { id: "section-2", title: <NavLink exact to="/"><Icon name="home" />Home</NavLink>, content: null, }, // When sections are provided, subaccordions will be generated { id: "section-1", title: [<Icon key="sitemap" name="sitemap" />,"Section 1"], sections: [ { id: "section-1.1", title: [<Icon key="archive" name="archive" />,"Section 1.1"], // When a icon is needed in title, pass it as a fragment content: [<NavLink key="about" exact to="/about/"><Icon name="file alternate" />About</NavLink>, <NavLink key="test" exact to="/test/"><Icon name="folder open" />Test</NavLink>], // Multiple links in content could be also passed in as frament }, { id: "section-1.2", title: [<Icon key="calculator" name="calculator" />, "Section 1.2"], // When a icon is needed in title, pass it as a fragment sections: [ { id: "section-1.2.1", title: [<Icon key="camera" name="camera" />, "Section 1.2.1"], content: <NavLink exact to="/users/"><Icon name="users" />Users</NavLink>, } ] }, ] }, ]; const Index = () => <h2>Home</h2>; const About = () => <h2>About</h2>; const Users = () => <h2>Users</h2>; const Test = () => <h2>Test</h2>; class App extends Component { render() { return ( <div className="App" style={{ paddingLeft: 215 }}> <Router> <div className="sidebar" style={{ position: 'fixed', left: 0, top: 0, bottom: 0, width: 200, borderRight: '1px solid #ccc', backgroundColor: '#002657' }}> <Menu tree={config} submenuBackgroundColor='#002657' submenuFontColor='#ffffff' separatorColor='rgba(255,255,255,.1)' /> </div> <div className="content"> <Route path="/" exact component={Index} /> <Route path="/about/" component={About} /> <Route path="/users/" component={Users} /> <Route path="/test/" component={Test} /> </div> </Router> </div> ); } } export default App; ```