@oondemand/create-central-oon 0.3.11 → 0.3.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/ADVANCED_UX_PATTERNS.md +195 -0
- package/docs/CODEX.md +35 -2
- package/docs/DETAIL_MODAL_AND_RELATED_GRIDS.md +525 -0
- package/docs/FRONTEND_MANIFEST_REFERENCE.md +214 -459
- package/docs/FRONTEND_PATTERNS.md +79 -5
- package/package.json +1 -1
- package/templates/_base/backend/package.json +1 -1
- package/templates/_base/frontend/package.json +1 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# Padrões Frontend
|
|
2
2
|
|
|
3
|
-
O frontend da Central deve ser declarativo. Shell, providers, rotas, menu, datagrid, formulários, documentos e
|
|
3
|
+
O frontend da Central deve ser declarativo. Shell, providers, rotas, menu, datagrid, formulários, documentos, esteiras, modais de detalhe e grids relacionados pertencem ao `@oondemand/oon-core-front`.
|
|
4
4
|
|
|
5
5
|
Para a lista completa de opções do manifesto, use `FRONTEND_MANIFEST_REFERENCE.md`.
|
|
6
|
+
Para UX avançada com abas e itens relacionados, use também `ADVANCED_UX_PATTERNS.md` e `DETAIL_MODAL_AND_RELATED_GRIDS.md`.
|
|
6
7
|
|
|
7
8
|
## Estrutura esperada
|
|
8
9
|
|
|
@@ -34,14 +35,79 @@ Use `central.ui.json` como entrada principal para declarar:
|
|
|
34
35
|
- agrupamentos;
|
|
35
36
|
- layout v2;
|
|
36
37
|
- páginas por blocos;
|
|
37
|
-
- renderers por chave
|
|
38
|
+
- renderers por chave;
|
|
39
|
+
- modais de detalhe;
|
|
40
|
+
- abas;
|
|
41
|
+
- relações;
|
|
42
|
+
- grids relacionados;
|
|
43
|
+
- edição inline;
|
|
44
|
+
- ações por linha.
|
|
38
45
|
|
|
39
46
|
## Manifesto v1 e v2
|
|
40
47
|
|
|
41
48
|
- Manifesto sem `schemaVersion` mantém compatibilidade v1.
|
|
42
|
-
- Manifesto com `schemaVersion: 2` habilita composição por `layout`, `navigation`, `pages` e
|
|
49
|
+
- Manifesto com `schemaVersion: 2` habilita composição por `layout`, `navigation`, `pages`, `blocks`, coleções avançadas e componentes declarativos.
|
|
43
50
|
- Componentes React não devem ser serializados no JSON; use chaves e registre os componentes no `registry` em TypeScript.
|
|
44
51
|
|
|
52
|
+
## Padrão de tela operacional
|
|
53
|
+
|
|
54
|
+
A tela principal de uma coleção operacional deve ser simples:
|
|
55
|
+
|
|
56
|
+
```txt
|
|
57
|
+
Título
|
|
58
|
+
Filtros
|
|
59
|
+
Busca
|
|
60
|
+
Botão novo
|
|
61
|
+
Grid principal
|
|
62
|
+
Ações por linha
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Ela não deve acumular detalhe de filhos, formulários longos ou fluxos complexos abaixo do grid. Use `detailModal` para concentrar a operação do registro.
|
|
66
|
+
|
|
67
|
+
## Padrão de detalhe avançado
|
|
68
|
+
|
|
69
|
+
Quando a operação envolve um registro principal e seus relacionamentos, use:
|
|
70
|
+
|
|
71
|
+
```txt
|
|
72
|
+
CoreDetailModal
|
|
73
|
+
├── Resumo
|
|
74
|
+
├── Dados Principais
|
|
75
|
+
├── RelatedGrid editável
|
|
76
|
+
└── ReadonlyGrid
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Exemplos:
|
|
80
|
+
|
|
81
|
+
- Projeto -> Itens -> Pagamentos
|
|
82
|
+
- Pedido -> Produtos -> Entregas
|
|
83
|
+
- Contrato -> Parcelas -> Documentos
|
|
84
|
+
- Cliente -> Atividades -> Histórico
|
|
85
|
+
|
|
86
|
+
## Formulários agrupados
|
|
87
|
+
|
|
88
|
+
Campos longos devem ser agrupados por sentido de negócio:
|
|
89
|
+
|
|
90
|
+
- Identificação;
|
|
91
|
+
- Evento/Faturamento;
|
|
92
|
+
- Equipe;
|
|
93
|
+
- Regras;
|
|
94
|
+
- Totais;
|
|
95
|
+
- Observações.
|
|
96
|
+
|
|
97
|
+
Prefira `form.groups` em vez de criar uma tela customizada apenas para organizar campos.
|
|
98
|
+
|
|
99
|
+
## Grids relacionados
|
|
100
|
+
|
|
101
|
+
Quando o usuário precisa operar filhos do registro principal, use `relatedGrid`.
|
|
102
|
+
|
|
103
|
+
Regras:
|
|
104
|
+
|
|
105
|
+
- Relação deve usar `foreignKey` + `parentKey`.
|
|
106
|
+
- Edição inline deve ser usada para ajustes rápidos de muitos itens.
|
|
107
|
+
- Ação por linha deve ser declarada como `rowActions`.
|
|
108
|
+
- A regra de negócio da ação fica no backend da Central.
|
|
109
|
+
- O Core deve executar e atualizar a interface.
|
|
110
|
+
|
|
45
111
|
## Regras
|
|
46
112
|
|
|
47
113
|
- Não recrie layout completo se o Core já renderiza.
|
|
@@ -50,6 +116,7 @@ Use `central.ui.json` como entrada principal para declarar:
|
|
|
50
116
|
- Não hardcode endpoints quando a metadata puder fornecer.
|
|
51
117
|
- Não crie variações visuais fora do padrão sem necessidade real.
|
|
52
118
|
- Use overrides pequenos, específicos e documentados.
|
|
119
|
+
- Não crie página React customizada para resolver apenas: filtro, modal, abas, agrupamento de campos, grid relacionado ou ação por linha.
|
|
53
120
|
|
|
54
121
|
## Overrides
|
|
55
122
|
|
|
@@ -60,7 +127,8 @@ Overrides são permitidos para:
|
|
|
60
127
|
- card customizado;
|
|
61
128
|
- cabeçalho customizado;
|
|
62
129
|
- dashboard customizado;
|
|
63
|
-
- integração visual pontual
|
|
130
|
+
- integração visual pontual;
|
|
131
|
+
- aba customizada dentro de `detailModal`.
|
|
64
132
|
|
|
65
133
|
Overrides não devem virar uma reimplementação do Core.
|
|
66
134
|
|
|
@@ -74,4 +142,10 @@ A Central deve manter o padrão OonCore:
|
|
|
74
142
|
- feedback visual;
|
|
75
143
|
- status por badges;
|
|
76
144
|
- ações rastreáveis;
|
|
77
|
-
- responsividade
|
|
145
|
+
- responsividade;
|
|
146
|
+
- edição inline quando melhora a produtividade;
|
|
147
|
+
- detalhe em modal quando o registro possui relações operacionais.
|
|
148
|
+
|
|
149
|
+
## Contrato avançado implementado
|
|
150
|
+
|
|
151
|
+
Para telas mestre-detalhe, declare `detailModal` diretamente na coleção. A aba `form` salva o registro principal, `relatedGrid` busca filhos por `foreignKey=parent[parentKey]` e permite edição inline quando `editable: true` e `editMode: "inline"`, e `readonlyGrid` lista relações sem edição. Use `refresh` nas ações para coordenar recarga de `self`, `parent`, `all` ou abas específicas.
|
package/package.json
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"sync:metadata": "oonCore-front sync:metadata"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@oondemand/oon-core-front": "^0.3.
|
|
13
|
+
"@oondemand/oon-core-front": "^0.3.14",
|
|
14
14
|
"@chakra-ui/react": "^3.13.0",
|
|
15
15
|
"@emotion/react": "^11.14.0",
|
|
16
16
|
"@tanstack/react-query": "^5.65.0",
|