1.2.4 • Published 4 years ago

react-semantic-ui-accordion-menu v1.2.4

Weekly downloads
41
License
ISC
Repository
github
Last release
4 years ago

React Semantic UI Accordion Menu

An accordion menu built on top of react-semantic-ui package and react-dom

Appearance

Recordit GIF


Installation

npm

npm i react-semantic-ui-accordion-menu styled-components --save

yarn

yarn add react-semantic-ui-accordion-menu styled-components

Props

PropTypeDefault valueDescription
treeArray[]A config multidimensional array representing the tree of the nested menu. See the example for reference
fontSizeNumber13Font size in px
widthString100%Menu width
submenuBackgroundColorString#ffffffHex/RGB/RGBA background color for submenus
submenuFontColorString#000000Hex/RGB/RGBA background color for submenu fonts
activeColorString#266bc0Hex/RGB/RGBA background color for active links
firstLevelBackgroundColorString#003178Hex/RGB/RGBA background color for first leve items

Example

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;
1.2.4

4 years ago

1.2.3

4 years ago

1.2.2

4 years ago

1.2.1

5 years ago

1.2.0

5 years ago

1.1.0

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago