JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 185
  • Score
    100M100P100Q81946F
  • License ISC

A multilevel accordion menu, buil on top of react-semantic-ui

Package Exports

  • react-semantic-ui-accordion-menu

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (react-semantic-ui-accordion-menu) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

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

Prop Type Default value Description
tree Array [] A config multidimensional array representing the tree of the nested menu. See the 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

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;