@praxisui/dynamic-fields 9.0.0-beta.40 → 9.0.0-beta.42
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/ai/component-registry.json +2 -2
- package/fesm2022/praxisui-dynamic-fields.mjs +199 -38
- package/package.json +3 -3
- package/src/lib/components/material-async-select/pdx-material-async-select.json-api.md +9 -2
- package/src/lib/components/material-searchable-select/pdx-material-searchable-select.json-api.md +9 -2
- package/types/praxisui-dynamic-fields.d.ts +12 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/dynamic-fields",
|
|
3
|
-
"version": "9.0.0-beta.
|
|
3
|
+
"version": "9.0.0-beta.42",
|
|
4
4
|
"description": "Angular Material-based dynamic form fields for Praxis UI with lazy loading and metadata-driven rendering.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^21.0.0",
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
"@angular/platform-browser": "^21.0.0",
|
|
12
12
|
"@angular/router": "^21.0.0",
|
|
13
13
|
"rxjs": "^7.8.0",
|
|
14
|
-
"@praxisui/core": "^9.0.0-beta.
|
|
15
|
-
"@praxisui/cron-builder": "^9.0.0-beta.
|
|
14
|
+
"@praxisui/core": "^9.0.0-beta.42",
|
|
15
|
+
"@praxisui/cron-builder": "^9.0.0-beta.42"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"libphonenumber-js": "^1.12.41",
|
|
@@ -22,8 +22,8 @@ source_of_truth:
|
|
|
22
22
|
- "projects/praxis-dynamic-fields/src/lib/components/material-async-select/material-async-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:
|
|
@@ -319,6 +319,10 @@ Garantias:
|
|
|
319
319
|
- input de busca e carga incremental estao habilitados no painel.
|
|
320
320
|
- `loadOn` controla a primeira carga (`open`, `init`, `none`).
|
|
321
321
|
- `useCursor` pode trocar estrategia de pagina quando backend suporta cursor.
|
|
322
|
+
- 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.
|
|
323
|
+
- `Carregar mais` so aparece depois de uma primeira pagina remota carregada com sucesso e com proxima pagina disponivel.
|
|
324
|
+
- fontes locais (`selectOptions`/`options`) e `loadOn='none'` antes da primeira carga nao exibem acao de paginacao.
|
|
325
|
+
- em paginacao numerada, o fim usa `totalPages`/`totalElements` quando fornecidos pelo backend; se ausentes, usa `content.length < pageSize` como fallback.
|
|
322
326
|
|
|
323
327
|
Limites:
|
|
324
328
|
|
|
@@ -351,6 +355,7 @@ Precedencia de comportamento:
|
|
|
351
355
|
#### Checklist corporativo
|
|
352
356
|
|
|
353
357
|
- alinhe backend para pesquisa por termo e include de selecionados.
|
|
358
|
+
- retorne `totalPages` e `totalElements` consistentes para evitar chamadas extras de paginacao.
|
|
354
359
|
- padronize `optionLabelKey`/`optionValueKey` entre dominios.
|
|
355
360
|
- defina `dependencyLoadOnChange` conforme UX esperada em cascata.
|
|
356
361
|
- use `maxSelections` quando multi-select exigir limite de negocio.
|
|
@@ -396,6 +401,8 @@ Notas de runtime:
|
|
|
396
401
|
- em remoto generico, `loadOptions` pode usar `includeIds` na pagina 0.
|
|
397
402
|
- em `optionSource`, o filtro envia `includeIds` somente quando `optionSource.includeIds=true`; quando ausente ou `false`, valores selecionados sao reidratados por `/option-sources/{sourceKey}/options/by-ids`.
|
|
398
403
|
- `onSearch` limpa estado local e reinicia pagina para novo termo.
|
|
404
|
+
- `loadMore` nao inicia a primeira carga remota; a primeira pagina respeita `loadOn`, abertura do painel, reload explicito ou mudanca de dependencia.
|
|
405
|
+
- `loadMore` incrementa pagina somente quando ja existe pagina remota carregada e `endReached=false`.
|
|
399
406
|
|
|
400
407
|
Contrato compartilhado completo:
|
|
401
408
|
|
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.
|
|
@@ -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:
|
|
@@ -2603,8 +2603,14 @@ declare class MaterialSearchableSelectComponent extends SimpleBaseSelectComponen
|
|
|
2603
2603
|
private refreshOptions;
|
|
2604
2604
|
protected loadOptions(page?: number, searchTerm?: string, criteria?: Record<string, unknown>): void;
|
|
2605
2605
|
loadNextPage(): void;
|
|
2606
|
+
showLoadMore(): boolean;
|
|
2607
|
+
shouldRenderOpenSentinel(): boolean;
|
|
2608
|
+
private isLastPage;
|
|
2609
|
+
onLoadMorePointerDown(event: Event): void;
|
|
2610
|
+
onLoadMoreInteraction(event: Event): void;
|
|
2606
2611
|
onSearch(term: string): void;
|
|
2607
2612
|
protected registerMatSelect(select: MatSelect): void;
|
|
2613
|
+
private refocusSearchInput;
|
|
2608
2614
|
reload(reset: boolean): void;
|
|
2609
2615
|
protected onDependenciesChanged(): void;
|
|
2610
2616
|
private syncDisabledModeControlState;
|
|
@@ -2730,9 +2736,15 @@ declare class MaterialAsyncSelectComponent extends SimpleBaseSelectComponent {
|
|
|
2730
2736
|
protected refreshLookupQueryState(): void;
|
|
2731
2737
|
private runQuery;
|
|
2732
2738
|
loadMore(): void;
|
|
2739
|
+
showLoadMore(): boolean;
|
|
2740
|
+
shouldRenderOpenSentinel(): boolean;
|
|
2741
|
+
private isLastPage;
|
|
2742
|
+
onLoadMorePointerDown(event: Event): void;
|
|
2743
|
+
onLoadMoreInteraction(event: Event): void;
|
|
2733
2744
|
retry(): void;
|
|
2734
2745
|
handleKey(event: KeyboardEvent): void;
|
|
2735
2746
|
protected registerMatSelect(select: MatSelect): void;
|
|
2747
|
+
private refocusSearchInput;
|
|
2736
2748
|
reload(reset: boolean): void;
|
|
2737
2749
|
protected setupRemoteSelectionHydration(): void;
|
|
2738
2750
|
protected onDependenciesChanged(): void;
|