@dnaz/core-react-components v1.3.4
Core React Components
Descrição
Biblioteca criada para disponibilizar componentes React para serem reaproveitados entres os módulos do Core.
O principal componente que motivou a criação desta biblioteca foi a barra superior do Core - TopBar, pois todos o módulos precisam ter a barra superior com a mesma identidade e funcionalidades do Core. Além disso, a manutenção era sempre muito custosa considerando que cada módulo tinha a sua própria implementação.
Primeiros passos
Adicione a biblioteca às dependências do seu projeto:
yarn add @dnaz/core-react-componentsAdicione as fontes e css
Latoematerial-iconsno projeto:
Adicione as tags
<link>para os css com as fontes adicionadas ao index.html. Não esqueça de ajustar o caminho para as pastas de acordo com a estrutura do seu projeto.<!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="utf-8" /> <title>Core - Módulo</title> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="theme-color" content="#000000" /> <meta name="description" content="Módulo XYZ do Core" /> <link rel="manifest" href="%PUBLIC_URL%/manifest.json" /> <link id="icons-font" rel="stylesheet" href="%PUBLIC_URL%/fonts/material-icons/style-material.css" /> <link id="text-font" rel="stylesheet" href="%PUBLIC_URL%/fonts/lato/style-lato.css" /> </head> <body> <noscript>You need to enable JavaScript to run this app.</noscript> <div id="root"></div> </body> </html>
Como usar o componente de TopBar
- Importe o componente:
import { TopBar } from "@dnaz/core-react-components"; - Utilize o componente na aplicação:
<TopBar coreAppUrl="http://<endereço-do-front-end-do-core>" onLogout={signOut} onMenuClick={() => { setShowPanelManu(!showPanelMenu); }} verificationUrl="http://<endereço-do-back-end-do-core>/auth/verify" verificationInterval={600} // intervalo de 10 min onVerificationFail={handleVerificationFailure} showMenuIcon // onHelpClick={() => Callback ()} // Função que habilita o botão de ajuda na Topbar // onPdfClick={() => Callback ()} // Função que habilita o botão de pdf na Topbar // contentRight={<span>Conteúdo extra</span>} // userInfo={user} // modulesList={modules} /> - Confira o resultado:

No ambiente de produção os front-ends dos módulos são mapeados pelo NGINX, portanto o localstorage é compartilhado. Deste modo, a TopBar acessará diretamente o storage e irá carregar a lista de módulos (modulesList) que o usuário tem acesso, além das demais informações do usuário (userInfo).
Ao fazer login no Core e acessar o módulo, a barra exibirá corretamente as informações que precisa, caso o módulo tenha sido cadastrado no Core, apontando para a rota mapeada no NGINX.
Caso seja necessário controlar as informações exibidas tanto para o usuário autenticado ou para a listagem de módulos, deve-se utilizar as propriedades userInfo e modulesList. Mas tenha em mente que deste modo as informações da propriedade que estiver sendo utilizada não serão mais carregadas a partir do storage.

Além disso, a Topbar também identifica o módulo que está sendo acessado a partir do path atual. Neste caso é feita uma comparação com os paths cadastrados na lista de módulos.
Propriedades
| Nome | Tipo | Valor padrão | Descrição |
|---|---|---|---|
| showMenuIcon? | boolean | false | Exibir o ícone de menu, normalmente usado para colapsar uma barra lateral |
| coreAppUrl | string | Endereço para redirecionar quando o usuário clicar no botão de home (logo do Core) | |
| verificationUrl? | string | undefined | Endereço para fazer a verificação periódica do token do Core (para validar a sessão). Caso undefined desabilita a verificação periódica |
| verificationInterval | number | 600 | Intervalo de tempo entre as verificações periódicas do token do Core. |
| contentRight? | ReactNode | undefined | Adicionar conteúdos específicos do módulo a direita da topbar |
| userInfo? | UserInfo | undefined | Personalizar os dados que serão exibidos referentes ao usuário autenticado. Caso não seja especificado irá carregar as informações a partir do storage. |
| modulesList? | Modules[] | undefined | Personalizar os itens que serão exibidos no dropdown de seleção de módulos. Caso não seja especificado irá carregar as informações a partir do storage. |
Eventos
| Nome | Parâmetro | Descrição |
|---|---|---|
| onMenuClick? | () | Callback para chamar quando o botão de menu (hamburger icon) for clicado. |
| onLogout | () | Callback para chamar quando o botão de logout for clicado |
| onVerificationFail | (Error) | Callback para chamar quando uma verificação periódica do token falhar |
| onHelpClick? | () | Callback para chamar quando o botão de ajuda for clicado, caso não passe a callback, o botão de ajuda não irá aparecer na topbar. |
| onPdfClick? | () | Callback para chamar quando o botão de pdf for clicado, caso não passe a callback, o botão de pdf não irá aparecer na topbar. |
Como usar o componente de Breadcrumbs
- Importe o componente:
import { Breadcrumb } from "@dnaz/core-react-components"; - Utilize o componente na aplicação:
<Breadcrumb levels={[ { namePage: "Home", link: "/" }, { namePage: "Módulo", link: "/modulo" }, { namePage: "Processo", link: "/modulo/processo" }, { namePage: "Cadastro de Processo", link: "/modulo/processo/form" }, ]} /> Confira o resultado:

Propriedades
| Nome | Tipo | Valor padrão | Descrição |
|---|---|---|---|
| levels | array | Lista de níveis de navegação a serem exibidos no breadcrumb. Cada item possui um nome (namePage) e opcionalmente um link para redirecionar o usuário |
Como usar o componente de ModuleIcon
- Importe o componente:
import { ModuleIcon } from "@dnaz/core-react-components"; - Utilize o componente na aplicação:
(...) <ModuleIcon icon={"person"} size={48} borderRadius={"25%"} color={"#fcfcfc"} backgroundColor={"#c43f63"} /> Confira o resultado:

Propriedades
| Nome | Tipo | Valor padrão | Descrição |
|---|---|---|---|
| icon | string | Nome do ícone da font material-icons que será usado | |
| size? | number | 24 | Tamanho em pixels do ícone com fundo que será renderizado |
| color? | string | "#F9FBFD" | Cor do ícone |
| backgroundColor? | string | "#DC0032" | Cor de fundo do ícone |
| borderRadius? | string | "33%" | Raio da borda para fazer o arredondamento do fundo do ícone |
Colaborando
A biblioteca está publicada no npm na organização dnaz com o nome core-react-components. Para publicar alterações é necessário:
- Fazer login no npm usando uma conta que faça parte da organização
dnaz:npm login Gerar uma nova versão (no
package.json):{ "name": "@dnaz/core-react-components", "version": "1.0.13", "description": "", (...) }Fazer o build da biblioteca:
yarn build- Publicar a biblioteca:
npm publish --access public
Extra: Fluxo alternativo. Faça login no npm conforme o passo 1, execute o comando yarn publish e informe a versão que será publicada. O script prepublish irá buildar a biblioteca antes de publicá-la.
Ao final do yarn publish será gerado um commit com a versão alterada no package.json e uma tag no git para marcar o ponto da publicação.
Após publicar uma alteração na biblioteca lembre de atualizar a versão da dependência do @dnaz/core-react-components no projeto para que as alterações tenham efeito.
Desenvolvimento
Para alterar a biblioteca localmente você pode seguir os seguintes passos:
- Fazer o clone do repositório (no nível de fora do projeto que irá utilizar)
- No diretório da biblioteca instale as dependências e faça o build.
Para não precisar ficar fazendo build toda hora, você pode usar o comandoyarn yarn buildyarn watch. - No
package.jsondo projeto que irá usar a biblioteca adicione ou altere a dependência da seguinte forma:{ //(...) "dependencies": { "@dnaz/core-react-components": "link:..\\core-react-components\\" } } - Instale as dependências do projeto (
yarn) e suba a aplicação do projeto com a biblioteca.
Suporte
Para solicitar ajuda ou a criação de novos componentes para a biblioteca crie uma issue no gitlab e entre em contato com o P&D.
Roadmap
- Melhorias na topbar
- Componente de barra lateral
- Componente de modal
- Componentes de formulário
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago