@praxisui/crud 3.0.0-beta.1 → 3.0.0-beta.2
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/README.md +111 -0
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -114,6 +114,117 @@ Checklist rapido para PR:
|
|
|
114
114
|
- preferir memoizacao por ciclo de vida/signal
|
|
115
115
|
- manter `trackBy` em listas dinamicas
|
|
116
116
|
|
|
117
|
+
## Fluxo CRUD
|
|
118
|
+
|
|
119
|
+
O `@praxisui/crud` nao e apenas um wrapper visual. Ele funciona como shell canonico de CRUD da plataforma:
|
|
120
|
+
|
|
121
|
+
- compoe `praxis-table` como superficie de listagem
|
|
122
|
+
- sintetiza `crudContext` estavel para a tabela
|
|
123
|
+
- delega abertura de `create/view/edit` ao `CrudLauncherService`
|
|
124
|
+
- resolve `route`, `modal` ou `drawer` por precedencia governada
|
|
125
|
+
- propaga `afterOpen`, `afterClose`, `afterSave` e `afterDelete`
|
|
126
|
+
- faz `refetch()` da tabela quando save/delete concluem com sucesso
|
|
127
|
+
|
|
128
|
+
### Versao Pedagogica de Alto Nivel
|
|
129
|
+
|
|
130
|
+
Esta e a leitura adequada para documentacao publica e landing pages.
|
|
131
|
+
|
|
132
|
+
```mermaid
|
|
133
|
+
sequenceDiagram
|
|
134
|
+
participant Usuario as Usuario
|
|
135
|
+
participant Crud as praxis-crud
|
|
136
|
+
participant Tabela as praxis-table
|
|
137
|
+
participant Launcher as CrudLauncherService
|
|
138
|
+
participant Host as Host / Router / Dialog / Drawer
|
|
139
|
+
participant Form as Praxis Dynamic Form
|
|
140
|
+
|
|
141
|
+
Usuario->>Tabela: clica em criar, visualizar ou editar
|
|
142
|
+
Tabela-->>Crud: emite rowAction ou toolbarAction
|
|
143
|
+
Crud->>Launcher: resolve a acao e o modo de abertura
|
|
144
|
+
Launcher->>Host: abre por rota, modal ou gaveta
|
|
145
|
+
Host->>Form: renderiza o formulario do recurso
|
|
146
|
+
Form-->>Crud: retorna save, delete ou close
|
|
147
|
+
Crud->>Tabela: refetch() quando save/delete concluem
|
|
148
|
+
Crud-->>Usuario: fluxo volta para a lista atualizada
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Leitura pedagogica:
|
|
152
|
+
|
|
153
|
+
1. **A tabela dispara a intencao CRUD**.
|
|
154
|
+
2. **O shell `praxis-crud` governa o fluxo**, nao o app consumidor.
|
|
155
|
+
3. **O launcher decide como abrir o formulario**.
|
|
156
|
+
4. **A lista e atualizada automaticamente apos save/delete**.
|
|
157
|
+
|
|
158
|
+
### Versao Detalhada e Fiel ao Runtime Atual
|
|
159
|
+
|
|
160
|
+
Esta versao documenta a implementacao atual da lib.
|
|
161
|
+
|
|
162
|
+
```mermaid
|
|
163
|
+
sequenceDiagram
|
|
164
|
+
participant Host as Host / metadata
|
|
165
|
+
participant Crud as PraxisCrudComponent
|
|
166
|
+
participant Tabela as PraxisTable
|
|
167
|
+
participant Launcher as CrudLauncherService
|
|
168
|
+
participant Storage as AsyncConfigStorage
|
|
169
|
+
participant Router as Angular Router
|
|
170
|
+
participant Dialog as DialogService
|
|
171
|
+
participant Drawer as CRUD_DRAWER_ADAPTER
|
|
172
|
+
participant FormHost as DynamicFormDialogHost
|
|
173
|
+
participant Form as PraxisDynamicForm
|
|
174
|
+
|
|
175
|
+
Host->>Crud: fornece metadata + crudId
|
|
176
|
+
Crud->>Crud: assertCrudMetadata(allowDeferredActionBindings=true)
|
|
177
|
+
Crud->>Crud: buildEffectiveTableConfig()
|
|
178
|
+
Crud->>Crud: buildTableCrudContext()
|
|
179
|
+
Crud->>Tabela: renderiza table + crudContext
|
|
180
|
+
|
|
181
|
+
alt acao na toolbar
|
|
182
|
+
Tabela-->>Crud: toolbarAction(action)
|
|
183
|
+
else acao na linha
|
|
184
|
+
Tabela-->>Crud: rowAction(action, row)
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
Crud->>Crud: onAction(action, row)
|
|
188
|
+
Crud->>Launcher: launch(actionMeta, row, metadata, componentKeyId)
|
|
189
|
+
Launcher->>Storage: load crud-overrides:<componentKeyId>
|
|
190
|
+
Launcher->>Launcher: mergeCrudOverrides()
|
|
191
|
+
Launcher->>Launcher: resolveOpenMode()
|
|
192
|
+
|
|
193
|
+
alt route
|
|
194
|
+
Launcher->>Router: navigateByUrl(route + query params)
|
|
195
|
+
else drawer
|
|
196
|
+
Launcher->>Drawer: open({ action, metadata, inputs })
|
|
197
|
+
else modal
|
|
198
|
+
Launcher->>Dialog: openAsync(DynamicFormDialogHost)
|
|
199
|
+
Dialog->>FormHost: injeta action + metadata + inputs
|
|
200
|
+
FormHost->>FormHost: resolve resourcePath, idField, resourceId, mode
|
|
201
|
+
FormHost->>Form: renderiza PraxisDynamicForm
|
|
202
|
+
Form-->>FormHost: formSubmit / formCancel
|
|
203
|
+
FormHost-->>Crud: DialogRef.afterClosed()
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
Crud-->>Host: afterOpen(mode, action)
|
|
207
|
+
|
|
208
|
+
alt save
|
|
209
|
+
Crud-->>Host: afterSave(id, data)
|
|
210
|
+
Crud->>Tabela: refetch()
|
|
211
|
+
else delete
|
|
212
|
+
Crud-->>Host: afterDelete(id)
|
|
213
|
+
Crud->>Tabela: refetch()
|
|
214
|
+
else close
|
|
215
|
+
Crud-->>Host: afterClose()
|
|
216
|
+
end
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### Pontos-Chave do Runtime
|
|
220
|
+
|
|
221
|
+
1. **`crudContext` precisa ser estavel**: o componente nao usa getter dinamico no template; ele memoiza o contexto quando o metadata muda.
|
|
222
|
+
2. **`PraxisCrudComponent` pode completar a UX da tabela**: ele injeta automaticamente toolbar add e row actions quando o metadata declara acoes e o host nao configurou a tabela explicitamente.
|
|
223
|
+
3. **A validacao estrutural do metadata e estrita, mas aceita bindings diferidos**: `route` e `formId` podem ser completados por overrides persistidos imediatamente antes da abertura.
|
|
224
|
+
4. **O `CrudLauncherService` e a fonte de verdade para `openMode`**: ele mescla overrides persistidos, defaults do metadata e GlobalConfig antes de decidir `route`, `modal` ou `drawer`.
|
|
225
|
+
5. **Modal e drawer nao sao equivalentes internamente**: o ramo modal usa `DynamicFormDialogHostComponent`; o ramo drawer depende do adapter provido pelo host.
|
|
226
|
+
6. **Save e delete geram refetch automatico da lista**: esse side effect faz parte do contrato atual do shell CRUD.
|
|
227
|
+
|
|
117
228
|
## Documentacao Tecnica da Lib
|
|
118
229
|
|
|
119
230
|
- `projects/praxis-crud/docs/host-crud-runtime-and-openmode.md`
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/crud",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.2",
|
|
4
4
|
"description": "CRUD building blocks for Praxis UI: integrates dynamic forms and tables with unified configuration and services.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^20.1.0",
|
|
7
7
|
"@angular/core": "^20.1.0",
|
|
8
|
-
"@praxisui/dynamic-form": "^3.0.0-beta.
|
|
9
|
-
"@praxisui/table": "^3.0.0-beta.
|
|
10
|
-
"@praxisui/core": "^3.0.0-beta.
|
|
11
|
-
"@praxisui/dynamic-fields": "^3.0.0-beta.
|
|
12
|
-
"@praxisui/settings-panel": "^3.0.0-beta.
|
|
8
|
+
"@praxisui/dynamic-form": "^3.0.0-beta.2",
|
|
9
|
+
"@praxisui/table": "^3.0.0-beta.2",
|
|
10
|
+
"@praxisui/core": "^3.0.0-beta.2",
|
|
11
|
+
"@praxisui/dynamic-fields": "^3.0.0-beta.2",
|
|
12
|
+
"@praxisui/settings-panel": "^3.0.0-beta.2"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"tslib": "^2.3.0"
|