@praxisui/dynamic-fields 9.0.0-beta.8 → 9.0.0-beta.80
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 +10 -2
- package/ai/component-registry.json +273462 -0
- package/docs/date-range-rust-host-integration.md +474 -0
- package/docs/dynamic-fields-field-catalog.md +3 -4
- package/docs/dynamic-fields-field-selection-guide.md +27 -3
- package/docs/dynamic-fields-inline-components-guide.md +30 -7
- package/docs/dynamic-fields-inline-filter-catalog.md +18 -1
- package/docs/dynamic-fields-inline-filter-runtime-contract.md +11 -0
- package/fesm2022/praxisui-dynamic-fields.mjs +2776 -983
- package/package.json +8 -4
- package/src/lib/base/pdx-base-input-runtime-contract.json-api.md +16 -0
- package/src/lib/components/field-shell/praxis-field-shell.json-api.md +33 -3
- package/src/lib/components/inline-date/pdx-inline-date.json-api.md +1 -1
- package/src/lib/components/inline-date-range/pdx-inline-date-range.json-api.md +30 -9
- package/src/lib/components/inline-entity-lookup/pdx-inline-entity-lookup.json-api.md +1 -0
- package/src/lib/components/inline-number/pdx-inline-number.json-api.md +1 -0
- package/src/lib/components/inline-rating/pdx-inline-rating.json-api.md +2 -0
- package/src/lib/components/inline-relative-period/pdx-inline-relative-period.json-api.md +2 -2
- package/src/lib/components/inline-time-range/pdx-inline-time-range.json-api.md +2 -2
- package/src/lib/components/material-async-select/pdx-material-async-select.json-api.md +13 -4
- package/src/lib/components/material-checkbox-group/pdx-material-checkbox-group.json-api.md +5 -3
- package/src/lib/components/material-date-range/pdx-material-date-range.json-api.md +20 -2
- package/src/lib/components/material-file-upload/pdx-material-file-upload.json-api.md +58 -27
- package/src/lib/components/material-searchable-select/pdx-material-searchable-select.json-api.md +10 -3
- package/src/lib/components/material-textarea/pdx-material-textarea.json-api.md +1 -1
- package/types/praxisui-dynamic-fields.d.ts +160 -11
|
@@ -21,8 +21,8 @@ source_of_truth:
|
|
|
21
21
|
- "projects/praxis-dynamic-fields/src/lib/components/material-file-upload/material-file-upload.metadata.ts"
|
|
22
22
|
- "projects/praxis-dynamic-fields/src/lib/components/material-file-upload/material-file-upload.component.ts"
|
|
23
23
|
- "projects/praxis-dynamic-fields/src/lib/base/simple-base-input.component.ts"
|
|
24
|
-
source_of_truth_last_verified: "2026-
|
|
25
|
-
last_updated: "2026-
|
|
24
|
+
source_of_truth_last_verified: "2026-06-24"
|
|
25
|
+
last_updated: "2026-06-24"
|
|
26
26
|
toc: true
|
|
27
27
|
sidebar: true
|
|
28
28
|
tags:
|
|
@@ -149,10 +149,14 @@ Nao ha paths experimentais confirmados no contrato publico desta revisao.
|
|
|
149
149
|
| `metadata.hint` | string | false | n/a | component-defined | Partial; verify per source_of_truth. |
|
|
150
150
|
| `metadata.placeholder` | string | false | n/a | component-defined | Partial; verify per source_of_truth. |
|
|
151
151
|
| `metadata.validators.*` | object | false | n/a | component-defined | Partial; verify per source_of_truth. |
|
|
152
|
-
| `metadata.accept` | string | false | n/a |
|
|
153
|
-
| `metadata.multiple` | boolean | false |
|
|
154
|
-
| `metadata.maxFileSize` | number | false | n/a |
|
|
152
|
+
| `metadata.accept` | string | false | n/a | comma-separated extensions or MIME patterns | Active; applied to native input and local file validation. |
|
|
153
|
+
| `metadata.multiple` | boolean | false | `false` | boolean | Active; selected value is `File[]` when true and `File | null` otherwise. |
|
|
154
|
+
| `metadata.maxFileSize` | number | false | n/a | positive byte count | Active; rejects selected files above the configured limit. |
|
|
155
|
+
| `metadata.maxFiles` | number | false | n/a | positive integer | Active; rejects selections above the configured number of files. |
|
|
155
156
|
| `metadata.allowedTypes` | string[] | false | n/a | component-defined | Partial; verify per source_of_truth. |
|
|
157
|
+
| `metadata.imagePreview` | boolean | false | `false` | boolean | Active; renders local image preview for selected image files. |
|
|
158
|
+
| `metadata.preview` | string | false | n/a | `image` | Active; `image` is an alias for local image preview. |
|
|
159
|
+
| `metadata.previewAlt` | string | false | localized fallback | component-defined | Active; accessible alt text for the local preview image. |
|
|
156
160
|
|
|
157
161
|
### Input bindings (inbound data)
|
|
158
162
|
|
|
@@ -268,12 +272,13 @@ Em conflito entre alias legado e path canonico, priorizar path canonico e regist
|
|
|
268
272
|
### Preserved technical reference (normalized from previous revision)
|
|
269
273
|
|
|
270
274
|
### 1. Visao Geral e Quando Usar
|
|
271
|
-
`pdx-material-file-upload` e um upload basico
|
|
275
|
+
`pdx-material-file-upload` e um upload basico de campo com `<input type="file">`, integracao CVA, validacao local de tipo/tamanho e preview local de imagem.
|
|
272
276
|
|
|
273
277
|
Use quando precisar:
|
|
274
278
|
- prototipar upload rapido no form;
|
|
275
|
-
- capturar um
|
|
276
|
-
-
|
|
279
|
+
- capturar um arquivo selecionado ou uma lista curta de arquivos;
|
|
280
|
+
- mostrar preview local para fluxos de foto/avatar antes da persistencia;
|
|
281
|
+
- delegar persistencia, presign, progresso, conflito e storage governado para a camada canonica de upload.
|
|
277
282
|
|
|
278
283
|
### 2. API do Componente (Inputs/Outputs)
|
|
279
284
|
| Propriedade | Tipo | Padrao | Obrigatorio | Comportamento |
|
|
@@ -283,7 +288,7 @@ Use quando precisar:
|
|
|
283
288
|
| `disabledMode` | `boolean` | `false` | Nao | Sobrescreve disabled no host. |
|
|
284
289
|
| `visible` | `boolean` | `true` | Nao | Controla exibicao no host. |
|
|
285
290
|
| `presentationMode` | `boolean` | `false` | Nao | Modo apresentacao sem edicao. |
|
|
286
|
-
| `valueChange` | `File \| null` | - | Output base input | Arquivo selecionado no input. |
|
|
291
|
+
| `valueChange` | `File \| File[] \| null` | - | Output base input | Arquivo selecionado no input; quando `multiple=true`, emite array. |
|
|
287
292
|
|
|
288
293
|
### 3. Matriz de Cobertura JSON (Completa)
|
|
289
294
|
#### 3.1 Campos especificos do componente
|
|
@@ -294,25 +299,29 @@ Use quando precisar:
|
|
|
294
299
|
| `metadata.hint` | `string` | Ativo | Mensagem de apoio quando sem erro. |
|
|
295
300
|
| `metadata.placeholder` | `string` | Parcial | `setFileUploadMetadata` remove placeholder do estado efetivo. |
|
|
296
301
|
| `metadata.validators.*` | `object` | Parcial | Validacoes basicas do `SimpleBaseInput` podem atuar no control, sem parser de arquivo dedicado. |
|
|
297
|
-
| `metadata.accept` | `string` |
|
|
298
|
-
| `metadata.multiple` | `boolean` |
|
|
299
|
-
| `metadata.maxFileSize` | `number` |
|
|
302
|
+
| `metadata.accept` | `string` | Ativo | Aplicado ao atributo `accept` e validado localmente por extensao/MIME antes de atualizar o control. |
|
|
303
|
+
| `metadata.multiple` | `boolean` | Ativo | Permite selecionar varios arquivos e atualiza o valor como `File[]`. |
|
|
304
|
+
| `metadata.maxFileSize` | `number` | Ativo | Rejeita arquivos acima do limite em bytes antes de atualizar o control. |
|
|
305
|
+
| `metadata.maxFiles` | `number` | Ativo | Rejeita selecoes acima da quantidade maxima configurada. |
|
|
300
306
|
| `metadata.allowedTypes` | `string[]` | Declared-only | Nao ha filtro dedicado por tipo no componente atual. |
|
|
307
|
+
| `metadata.imagePreview` | `boolean` | Ativo | Mostra preview local para o primeiro arquivo de imagem selecionado. |
|
|
308
|
+
| `metadata.preview` | `'image'` | Ativo | Alias declarativo para habilitar preview local de imagem. |
|
|
309
|
+
| `metadata.previewAlt` | `string` | Ativo | Texto alternativo do preview local. |
|
|
301
310
|
|
|
302
311
|
#### 3.2 Campos herdados compartilhados (exaustivo)
|
|
303
312
|
Contrato compartilhado de input base:
|
|
304
313
|
- [pdx-base-input-runtime-contract.json-api.md](projects/praxis-dynamic-fields/src/lib/base/pdx-base-input-runtime-contract.json-api.md)
|
|
305
314
|
|
|
306
315
|
Resumo de composicao deste componente:
|
|
307
|
-
- `Ativo`: fluxo basico de selecao de
|
|
316
|
+
- `Ativo`: fluxo basico de selecao, bind no control, preview local de imagem e validacao local de tipo/tamanho/quantidade.
|
|
308
317
|
- `Parcial`: placeholder e validacoes genericas do base.
|
|
309
|
-
- `Declared-only`:
|
|
318
|
+
- `Declared-only`: politica avancada por `allowedTypes`.
|
|
310
319
|
|
|
311
320
|
### 4. Mapeamento de Comportamento
|
|
312
|
-
- Selecao: ao `change`,
|
|
313
|
-
- Valor:
|
|
314
|
-
- Renderizacao: label
|
|
315
|
-
-
|
|
321
|
+
- Selecao: ao `change`, valida arquivos e grava `File` ou `File[]` no control.
|
|
322
|
+
- Valor: `File | null` quando `multiple` esta ausente/falso; `File[]` quando `multiple=true`.
|
|
323
|
+
- Renderizacao: label, input file, resumo da selecao, preview local de imagem, erro/hint e acao de limpar.
|
|
324
|
+
- Persistencia corporativa: fora deste componente. Use `@praxisui/files-upload` para presign, progresso, conflito, retry e storage governado.
|
|
316
325
|
|
|
317
326
|
### 5. Exemplo Minimo (JSON + Uso)
|
|
318
327
|
```json
|
|
@@ -345,12 +354,30 @@ Uso: captura um arquivo unico para envio posterior.
|
|
|
345
354
|
```
|
|
346
355
|
Uso: etapa inicial de upload, deixando validacoes profundas para API backend.
|
|
347
356
|
|
|
357
|
+
### 6.1 Exemplo para troca de avatar (JSON + Uso)
|
|
358
|
+
```json
|
|
359
|
+
{
|
|
360
|
+
"componentId": "pdx-material-file-upload",
|
|
361
|
+
"metadata": {
|
|
362
|
+
"name": "profileImageFile",
|
|
363
|
+
"label": "Foto de perfil",
|
|
364
|
+
"controlType": "upload",
|
|
365
|
+
"accept": "image/*",
|
|
366
|
+
"maxFileSize": 4194304,
|
|
367
|
+
"maxFiles": 1,
|
|
368
|
+
"imagePreview": true,
|
|
369
|
+
"hint": "Escolha uma imagem para revisar antes de salvar a foto do perfil."
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
```
|
|
373
|
+
Uso: combine este campo com `pdx-material-avatar` para preview/display e com a capability canonica de persistencia de arquivo para publicar a URL final consumida pelo avatar.
|
|
374
|
+
|
|
348
375
|
### 7. Troubleshooting e Armadilhas Comuns
|
|
349
|
-
1. Esperar
|
|
350
|
-
Correcao: componente
|
|
376
|
+
1. Esperar persistencia automatica.
|
|
377
|
+
Correcao: este componente escolhe e valida localmente; persistencia pertence ao host ou a `@praxisui/files-upload`.
|
|
351
378
|
|
|
352
|
-
2. Esperar
|
|
353
|
-
Correcao: nao
|
|
379
|
+
2. Esperar crop/zoom.
|
|
380
|
+
Correcao: preview local nao e editor de imagem. Crop deve nascer em contrato proprio de avatar/image authoring.
|
|
354
381
|
|
|
355
382
|
3. Placeholder nao aparece.
|
|
356
383
|
Correcao: `setFileUploadMetadata` remove placeholder explicitamente.
|
|
@@ -358,8 +385,8 @@ Correcao: `setFileUploadMetadata` remove placeholder explicitamente.
|
|
|
358
385
|
4. Arquivo nao persiste no payload final.
|
|
359
386
|
Correcao: verificar serializacao de `File` no host e estrategia de envio multipart.
|
|
360
387
|
|
|
361
|
-
5. Necessidade de
|
|
362
|
-
Correcao:
|
|
388
|
+
5. Necessidade de progresso/chunk/presign.
|
|
389
|
+
Correcao: usar `@praxisui/files-upload`, que e a fronteira canonica de upload operacional.
|
|
363
390
|
|
|
364
391
|
### 8. Cross-links
|
|
365
392
|
- `projects/praxis-dynamic-fields/src/lib/base/pdx-base-input-runtime-contract.json-api.md`
|
|
@@ -388,10 +415,14 @@ Correcao: esse renderer e baseline; implementar camada avancada para cenarios en
|
|
|
388
415
|
| `metadata.hint` | string | false | n/a | Partial | See Detailed API reference. |
|
|
389
416
|
| `metadata.placeholder` | string | false | n/a | Partial | See Detailed API reference. |
|
|
390
417
|
| `metadata.validators.*` | object | false | n/a | Partial | See Detailed API reference. |
|
|
391
|
-
| `metadata.accept` | string | false | n/a |
|
|
392
|
-
| `metadata.multiple` | boolean | false |
|
|
393
|
-
| `metadata.maxFileSize` | number | false | n/a |
|
|
418
|
+
| `metadata.accept` | string | false | n/a | Active | Applied to native input and local type validation. |
|
|
419
|
+
| `metadata.multiple` | boolean | false | `false` | Active | Emits `File[]` when true. |
|
|
420
|
+
| `metadata.maxFileSize` | number | false | n/a | Active | Rejects files above the byte limit. |
|
|
421
|
+
| `metadata.maxFiles` | number | false | n/a | Active | Rejects selections above the configured number of files. |
|
|
394
422
|
| `metadata.allowedTypes` | string[] | false | n/a | Partial | See Detailed API reference. |
|
|
423
|
+
| `metadata.imagePreview` | boolean | false | `false` | Active | Enables local image preview. |
|
|
424
|
+
| `metadata.preview` | string | false | n/a | Active | `image` enables local image preview. |
|
|
425
|
+
| `metadata.previewAlt` | string | false | localized fallback | Active | Accessible alt text for preview image. |
|
|
395
426
|
|
|
396
427
|
## Events reference (obrigatorio)
|
|
397
428
|
|
package/src/lib/components/material-searchable-select/pdx-material-searchable-select.json-api.md
CHANGED
|
@@ -22,8 +22,8 @@ source_of_truth:
|
|
|
22
22
|
- "projects/praxis-dynamic-fields/src/lib/components/material-searchable-select/material-searchable-select.component.ts"
|
|
23
23
|
- "projects/praxis-dynamic-fields/src/lib/base/simple-base-select.component.ts"
|
|
24
24
|
- "projects/praxis-core/src/lib/models/material-field-metadata.interface.ts"
|
|
25
|
-
source_of_truth_last_verified: "2026-
|
|
26
|
-
last_updated: "2026-
|
|
25
|
+
source_of_truth_last_verified: "2026-07-06"
|
|
26
|
+
last_updated: "2026-07-06"
|
|
27
27
|
toc: true
|
|
28
28
|
sidebar: true
|
|
29
29
|
tags:
|
|
@@ -347,6 +347,9 @@ Precedencia de comportamento:
|
|
|
347
347
|
2. `options` atua como alias legado quando `selectOptions` nao e enviado.
|
|
348
348
|
3. `optionSource` ativa consulta remota pelo endpoint canonico `/option-sources/{key}/options/filter`.
|
|
349
349
|
4. `resourcePath` ativa consulta remota paginada legada com termo de busca.
|
|
350
|
+
5. Com `resourcePath` e `loadOn='open'`, o painel abre mesmo antes da primeira pagina remota para disparar a carga inicial; a opcao sentinela usada para isso e interna, invisivel e nao compoe contrato visual publico.
|
|
351
|
+
6. `Carregar mais` so aparece depois de uma primeira pagina remota carregada com sucesso e com proxima pagina disponivel.
|
|
352
|
+
7. fontes locais (`selectOptions`/`options`) e `loadOn='none'` antes da primeira carga nao exibem acao de paginacao.
|
|
350
353
|
|
|
351
354
|
#### Status model
|
|
352
355
|
|
|
@@ -357,6 +360,7 @@ Precedencia de comportamento:
|
|
|
357
360
|
#### Checklist corporativo
|
|
358
361
|
|
|
359
362
|
- alinhe backend para pesquisa por termo e include de selecionados.
|
|
363
|
+
- retorne `totalPages` e `totalElements` consistentes para evitar chamadas extras de paginacao.
|
|
360
364
|
- para lookups metadata-driven, publique `optionSource.dependsOn` e `optionSource.dependencyFilterMap` no schema canonico.
|
|
361
365
|
- padronize `optionLabelKey`/`optionValueKey` entre dominios.
|
|
362
366
|
- defina `dependencyLoadOnChange` conforme UX esperada em cascata.
|
|
@@ -393,7 +397,7 @@ Precedencia de comportamento:
|
|
|
393
397
|
| `metadata.resourcePath` | `string` | Active | Ativa carga remota de opcoes. |
|
|
394
398
|
| `metadata.optionSource` | `OptionSourceMetadata` | Active | Ativa endpoint canonico de option-source e busca pelo parametro `search`. |
|
|
395
399
|
| `metadata.optionSource.dependsOn` | `string[]` | Active | Fonte canonica backend/editor para cascata; o mapper deriva `dependencyFields`. |
|
|
396
|
-
| `metadata.optionSource.dependencyFilterMap` | `Record<string, string>` | Active | Mapeia campo dependente para chave de filtro enviada ao backend. |
|
|
400
|
+
| `metadata.optionSource.dependencyFilterMap` | `Record<string, string>` | Active | Mapeia campo dependente para chave de filtro estruturado enviada ao backend. |
|
|
397
401
|
| `metadata.filterCriteria` | `Record<string, any>` | Active | Filtros base para consulta remota. |
|
|
398
402
|
| `metadata.optionLabelKey` | `string` | Active | Chave de label no payload remoto. |
|
|
399
403
|
| `metadata.optionValueKey` | `string` | Active | Chave de value no payload remoto. |
|
|
@@ -406,6 +410,9 @@ Notas de runtime:
|
|
|
406
410
|
- em remoto, `loadOptions` usa filtro com include de selecionados na pagina 0.
|
|
407
411
|
- com `optionSource`, `loadOptions` chama `filterOptionSourceOptions` e envia termo de busca como `search`, nao como campo de filtro textual.
|
|
408
412
|
- `onSearch` limpa estado local e reinicia pagina para novo termo.
|
|
413
|
+
- `loadNextPage` nao inicia a primeira carga remota; a primeira pagina respeita `loadOn`, abertura do painel, reload explicito ou mudanca de dependencia.
|
|
414
|
+
- `loadNextPage` incrementa pagina somente quando ja existe pagina remota carregada e `endReached=false`.
|
|
415
|
+
- em paginacao numerada, `endReached` usa `totalPages`/`totalElements` quando fornecidos pelo backend; se ausentes, usa `content.length < pageSize` como fallback.
|
|
409
416
|
- estados governados bloqueiam busca, abertura, selecao, reload, clear e `loadNextPage`.
|
|
410
417
|
|
|
411
418
|
Contrato compartilhado completo:
|
|
@@ -336,7 +336,7 @@ Resumo de composicao deste componente:
|
|
|
336
336
|
- Ordenacao: nao se aplica.
|
|
337
337
|
- Selecao: texto multiline livre (respeitando regras de validacao).
|
|
338
338
|
- Eventos: usa outputs herdados e processa eventos locais de teclado/paste/cut para UX avancada.
|
|
339
|
-
- Renderizacao: `mat-form-field` + `<textarea matInput>` com autosize opcional, clear button opcional e
|
|
339
|
+
- Renderizacao: `mat-form-field` + `<textarea matInput>` com autosize opcional, clear button opcional e ajuda de campo pelo contrato herdado (`helpDisplay='inline'|'popover'|'hidden'|'auto'`).
|
|
340
340
|
|
|
341
341
|
### 5. Exemplo Minimo (JSON + Uso)
|
|
342
342
|
```json
|