Définir le menu de gauche

Présentation

Le menu de gauche permet de naviguer dans les modules de l'application.

Au click sur un menu on peut au choix :

  • naviguer directement sur une page
  • faire apparaître un panneau glissant
    • typiquement pour la recherche rapide

Usage

Pour définir le menu, il faut définir la liste des items avec :

  • un icône
  • un libellé
  • une route ou un handler de click

Exemple

const type = Focus.component.types;
const menuMixin = Focus.components.application.menu.mixin;

const Menu = React.createClass({
    displayName: 'menu',
    mixins: [menuMixin],
    propTypes: {
        type: type('string'),
        links: type('array')
    },
    renderContent() {
        if ('menuLeft' === this.props.type) {
            return this.props.links.map(link => {
                if (!link.img) {
                    return <a href={link.url}>link.title</a>;
                } else {
                    return <a href={link.url}><img src={link.img}/></a>;
                }
            });
        }
        return this.renderLinks();
    }
});


const Wrapper = React.createClass({
    displayName: 'menu-wrapper',
    _handleClick(){
        // Gère le click : ouverture de popin, etc.
    },
    _getItems() {
        return ([
            {
                icon: 'home',
                route: 'home',
                name: 'Accueil',
                onClick: this._handleClick
            },
            {
                icon: 'cog',
                route: 'admin',
                name: 'Admin',
                onClick: this._handleClick
            }
        ]);
    },
    render() {
        return (
            <div>
                <Menu
                    direction='vertical'
                    items={this._getItems()}
                    open={true}
                    position='left'
                    ref='menu'
                    title=''
                    />
            </div>
        );
    }
});

module.exports = Wrapper;

Détail :

  • On définit un composant Menu à partir d'un mixin de menu
  • On définit un composant de Wrapper pour le Menu, dans lequel on définit les items du menu (_getItems)
    • ici il y a deux routes, vers la page d'accueil et la page d'administration