Documentação Front-End - Atomic Design
Este documento descreve a estrutura de componentes do front-end do projeto e-sus utilizando a metodologia Atomic Design para organizar e manter a escalabilidade e reutilização dos componentes.
1 Componente
1.1 Componente: Input model 1
Tipo: Molécula
Descrição:
Componente de campo de entrada de dados que pode ser configurado via props para se adequar a diferentes contextos do projeto.
Props disponíveis:
<colgroup><col></col><col></col><col></col></colgroup> Prop
Tipo
Descrição
label
string
Texto exibido acima do campo como label.
placeholder
string
Texto de sugestão dentro do campo.
icone
string
Ícone exibido à esquerda do campo.
type
string
Tipo de input. Se for
"password"
, o campo se comporta como senha e exibe ícone à direita para mostrar/ocultar o valor.
1.2 Componente: Button model 1
Tipo: Molécula
Descrição:
Componente de Botão que pode ser configurado via props para se adequar a diferentes contextos do projeto.
<colgroup><col></col><col></col><col style="width: 320px;"></col></colgroup> Tipo
Descrição
label
string
Texto exibido no centro do botão.
icone
string
Ícone exibido à esquerda do campo.
disabled
boolean
Variável booleana para desabilitar/habilitar botão
2. Requisições nos componentes
Problema: Atualmente algumas requisições à API estão sendo feitas diretamente dentro de componentes. Isso fere o princípio de separação de responsabilidades do Atomic Design.
Impacto:
- Torna os componentes menos reutilizáveis, já que ficam acoplados a regras de negócio.
- Dificulta testes, manutenção e evolução do projeto.
- Quebra a hierarquia de responsabilidades esperada.
Correção Recomendada:
- Centralizar todas as requisições na Página.
- A Página deve buscar/enviar dados para a API e repassar os resultados via props para o Template e componentes filhos.
- Os componentes (organismos, moléculas e átomos) devem apenas exibir dados recebidos ou disparar eventos que a Página irá tratar.
Componentes Identificados com Requisições:
atoms:
technical-decision-table.vuechange-status-modal.vuebanner-description-MR.vue
moleculas:
form-regulation.vueform-regulation-edit.vueform-patient-edit.vueform-occurrence-edit.vueform-conclusion-edit.vueform-basic-data-edit.vuebanner-description-fleet.vueadmin-users-table.vueadmin-supply-table.vueadmin-occurance-reason-table.vueadmin-mobile-unit-table.vueadmin-health-units-destination.vueadmin-health-unit-table.vueadmin-enquiry-table.vueadmin-health-unit-table.vueadmin-discriminator-table.vueadmin-city-table.vueadmin-health-unit-table.vueadmin-health-unit-table.vueadmin-health-unit-table.vue
organisms:
select-occurrence-team.vueoccurance-confirmation.vuefleet-incident-display.vuebanner-operation.vue
templates:
FleetOccurrence.vue

