UNPKG

@eureca/eureca-ui

Version:

UI component library of Eureca's user and admin apps

148 lines (128 loc) 4.26 kB
import { Meta, Story, Preview, Title, Subtitle, Description, Props, } from '@storybook/addon-docs/blocks'; import { withKnobs } from '@storybook/addon-knobs'; import { ThemeProvider } from '@material-ui/core'; import MuiTheme from '../../../theme/mui'; import { Flex } from '../../Flex'; import { DrawerMenu } from '../'; import { BasicDrawer } from './drawer.stories.js'; <Meta title='Originals/Drawer' component={DrawerMenu} decorators={[withKnobs]}/> <Title>Drawer Menu</Title> <Description> Drawer menu dos aplicativos Eureca. </Description> <Preview> <Story name="Basic Drawer Menu"> <BasicDrawer /> </Story> </Preview> <Subtitle>Props</Subtitle> | Nome | Descrição | Default | |:-------:|:-------------------------------:|:-----------:| | list | Json com os itens a serem exibidos no menu <br /> object | {} | | current | Id do item atualmente selecionado <br /> string | '' | | isOpen | Variável que determina se o drawer está aberto ou não <br /> bool | false | | user | Objeto do usuário a ser passado para o menu <br /> object \| object | null | | linkComponent | Componente de link a ser usado em cada item do menu, como por exemplo o Link do NextJs <br /> object \| object | null | | onCLose | Função chamada ao se fechar o drawer <br /> func | - | | onLogout | Função disparada ao se clicar em logout <br /> func | - | | onClickItem | Função disparada ao se clicar em um item. Retorna uma string com item e subitem (se houver) com um '.' de separação. Ex: "oportunidades.edicao" <br /> func | - | | onClickUser | Função disparada ao se clicar no usuário. Retorna o objeto do usuário <br /> func | - | | windowSize | Tamanho da tela passado ao drawer. Deve ser um objeto com as chaves width e height e medidas em pixels. <br /> object | - | <Subtitle>Formato de dados do usuário</Subtitle> ```jsx { id: 3, name: 'Usuário Eureca', avatar: Logo, } ``` <Subtitle>Formato do JSON de Itens</Subtitle> > O arquivo de itens é um JSON com chaves 'top' para os itens superiores e 'bottom' para os itens inferiores, logo acima do usuário. ```jsx import React from 'react'; import { FiUsers, FiBriefcase, FiBox } from 'react-icons/fi'; import { BsTable, BsQuestionCircle } from 'react-icons/bs'; export default { top: [ { id: 'opportunities', icon: <BsTable />, text: 'Oportunidades', href: '/oportunidades', subCategories: [ { text: 'Edição', id: 'edit', href: '/oportunidades/edicao' }, { text: 'Gestão do Candidato', id: 'user-management', href: '/oportunidades/gestao-do-candidato', }, { text: 'Avaliação', id: 'evaluation', href: '/oportunidades/avaliacao' }, { text: 'Estatísticas', id: 'stats', href: '/oportunidades/estatisticas' }, ], }, { id: 'candidates', icon: <FiUsers />, text: 'Candidatos', href: '/candidatos', subCategories: [], }, { id: 'clients', icon: <FiBriefcase />, text: 'Clientes', href: '/clientes', subCategories: [ { text: 'Edição', id: 'edit', href: '/clientes/edicao' }, { text: 'Gestão das Oportunidades', id: 'opportunity-management', href: '/clientes/gestao-de-oportunidades', }, { text: 'Fit Cultural', id: 'fit-cultural', href: '/clientes/fit-cultural' }, { text: 'Estatísticas', id: 'stats', href: '/clientes/estatisticas' }, ], }, { id: 'partners', icon: <FiBox />, text: 'Parceiros', href: '/parceiros', subCategories: [], }, ], bottom: [ { id: 'help', icon: <BsQuestionCircle />, text: 'Suporte', href: '/suporte', subCategories: [], }, ], }; ``` <Subtitle>Exemplo de Aplicação</Subtitle> ```jsx <DrawerMenu list={AdminList} isOpen={isOpen} current={current} user={user} onClickItem={item => console.log('Item Clicked: ', item)} onClose={() => setIsOpen(!isOpen)} onLogout={() => console.log('Logout Clicked')} onClickUser={user => console.log('User Clicked', user)} linkComponent={Link} windowSize={{ width: 1920, height: 1080}} /> ```