@praxisui/list 8.0.0-beta.99 → 9.0.0-beta.0
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 +1 -1
- package/fesm2022/praxisui-list.mjs +181 -37
- package/package.json +6 -6
- package/src/lib/praxis-list.json-api.md +14 -7
- package/types/praxisui-list.d.ts +20 -6
package/package.json
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/list",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "9.0.0-beta.0",
|
|
4
4
|
"description": "List components and helpers for Praxis UI.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^21.0.0",
|
|
7
7
|
"@angular/core": "^21.0.0",
|
|
8
8
|
"@angular/material": "^21.0.0",
|
|
9
|
-
"@praxisui/dynamic-fields": "^
|
|
9
|
+
"@praxisui/dynamic-fields": "^9.0.0-beta.0",
|
|
10
10
|
"rxjs": ">=7 <9",
|
|
11
11
|
"@angular/forms": "^21.0.0",
|
|
12
12
|
"@angular/router": "^21.0.0",
|
|
13
|
-
"@praxisui/ai": "^
|
|
14
|
-
"@praxisui/core": "^
|
|
15
|
-
"@praxisui/rich-content": "^
|
|
16
|
-
"@praxisui/settings-panel": "^
|
|
13
|
+
"@praxisui/ai": "^9.0.0-beta.0",
|
|
14
|
+
"@praxisui/core": "^9.0.0-beta.0",
|
|
15
|
+
"@praxisui/rich-content": "^9.0.0-beta.0",
|
|
16
|
+
"@praxisui/settings-panel": "^9.0.0-beta.0"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"tslib": "^2.3.0",
|
|
@@ -30,8 +30,8 @@ source_of_truth:
|
|
|
30
30
|
- "projects/praxis-list/src/lib/ai/list-ai.adapter.ts"
|
|
31
31
|
- "projects/praxis-list/src/lib/ai/list-ai-capabilities.ts"
|
|
32
32
|
- "projects/praxis-list/src/lib/ai/list-context-pack.ts"
|
|
33
|
-
source_of_truth_last_verified: "2026-
|
|
34
|
-
last_updated: "2026-
|
|
33
|
+
source_of_truth_last_verified: "2026-06-14"
|
|
34
|
+
last_updated: "2026-06-14"
|
|
35
35
|
toc: true
|
|
36
36
|
sidebar: true
|
|
37
37
|
tags:
|
|
@@ -245,13 +245,13 @@ config explícita -> config persistida por chave -> config corrente em memória
|
|
|
245
245
|
- `applyAuthoringPayload()` faz parse, validação, apply plan e executor runtime sem recriar componente.
|
|
246
246
|
- `buildListApplyPlan(...)` também carrega a decisão explícita de inferência de schema; o host só executa essa etapa fina sem inferir a partir de estado runtime arbitrário.
|
|
247
247
|
- `setupSelectionBinding()` adapta shape de seleção para retorno declarativo.
|
|
248
|
-
- `executeSchemaInferenceForPlan()` infere templates
|
|
248
|
+
- `executeSchemaInferenceForPlan()` infere templates quando faltantes ou quando slots de demonstracao nao estao aterrados nos campos publicados pelo schema do recurso.
|
|
249
249
|
|
|
250
250
|
### Precedence rules
|
|
251
251
|
|
|
252
252
|
- config externa mais recente tem precedência sobre hidratação tardia de storage.
|
|
253
253
|
- editor `saved` persiste e reaplica; `applied` reaplica sem persistir obrigatoriamente.
|
|
254
|
-
- quando `listId` ausente, runtime segue sem
|
|
254
|
+
- quando `listId` ausente, runtime segue sem persistencia e sem warning operacional; a lista continua renderizando e editando normalmente.
|
|
255
255
|
|
|
256
256
|
## Validation and error semantics
|
|
257
257
|
|
|
@@ -259,7 +259,7 @@ config explícita -> config persistida por chave -> config corrente em memória
|
|
|
259
259
|
|
|
260
260
|
| Path/Rule | Validation phase | Behavior on fail | Error code / warning | Notes |
|
|
261
261
|
| ---------------------------------- | ----------------------- | ----------------------------- | ---------------------------------------- | ------------------------------------------------ |
|
|
262
|
-
| `listId` para persistência | init/runtime |
|
|
262
|
+
| `listId` para persistência | init/runtime | disable persistence silently | n/a | Lista continua funcional sem restore/save. |
|
|
263
263
|
| Json Logic `showIf` inválido | runtime evaluate | warning + fallback false | `praxis-list:invalid-show-if` | Evita render incorreto por condição malformada. |
|
|
264
264
|
| `GlobalActionService` indisponível | runtime action dispatch | warning + skip comando global | `praxis-list:global-command-unavailable` | Não interrompe ações locais/emissão de eventos. |
|
|
265
265
|
| inferência de schema falha | startup/runtime | ignore error | n/a | Mantém configuração original sem inferência. |
|
|
@@ -443,6 +443,7 @@ Regras operacionais:
|
|
|
443
443
|
- Em erro no `/filter`, faz fallback para `getAll()` com warning deduplicado.
|
|
444
444
|
- Busca (`ui.showSearch`) aplica debounce de `300ms` e exige `ui.searchField`.
|
|
445
445
|
- Controles de pagina/sort/search no template aparecem apenas quando `dataSource.resourcePath` esta definido.
|
|
446
|
+
- Quando nao ha `dataSource.data` nem `dataSource.resourcePath`, o runtime renderiza um empty state operacional orientando a conexao da lista a um recurso.
|
|
446
447
|
|
|
447
448
|
Matriz de decisao (runtime atual):
|
|
448
449
|
|
|
@@ -469,7 +470,7 @@ Regra critica de autoria:
|
|
|
469
470
|
Sem `listId` valido:
|
|
470
471
|
|
|
471
472
|
- persistencia e ignorada;
|
|
472
|
-
- warning
|
|
473
|
+
- nao ha warning; hosts de authoring dinamico podem renderizar e editar sem identidade persistente.
|
|
473
474
|
|
|
474
475
|
#### PraxisListConfig top-level
|
|
475
476
|
|
|
@@ -612,7 +613,13 @@ Slots suportados:
|
|
|
612
613
|
|
|
613
614
|
Tipos funcionais no runtime:
|
|
614
615
|
|
|
615
|
-
- `text`, `icon`, `image`, `chip`, `rating`, `currency`, `date`, `html`.
|
|
616
|
+
- `text`, `icon`, `image`, `chip`, `rating`, `currency`, `date`, `html`, `metric`, `compose`, `component`.
|
|
617
|
+
|
|
618
|
+
Inferencia opcional:
|
|
619
|
+
|
|
620
|
+
- Quando `dataSource.resourcePath` existe, `GenericCrudService.getSchema()` retorna campos e o runtime pode inferir uma materializacao inicial sem alterar o contrato canonico.
|
|
621
|
+
- A inferencia prioriza identidade (`nomeCompleto/name`), avatar (`foto/avatar/photo/image`), contato (`telefone/email` ou `cpf/email`), agrupamento organizacional (`departamento/area/time`) e status (`status/ativo`) usando os slots existentes.
|
|
622
|
+
- Slots de demonstracao que referenciam campos ausentes no schema do recurso sao descartados antes da inferencia. Campos tecnicos ou numericos como `id`, `idade`, `age`, `ativo/status` nao sao promovidos para `meta` por inferencia.
|
|
616
623
|
|
|
617
624
|
Tipo declarado sem renderer dedicado:
|
|
618
625
|
|
package/types/praxisui-list.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as rxjs from 'rxjs';
|
|
2
2
|
import { BehaviorSubject, Observable } from 'rxjs';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { OnInit, OnChanges, OnDestroy, EventEmitter, SimpleChanges, ChangeDetectorRef, DoCheck,
|
|
4
|
+
import { OnInit, OnChanges, AfterViewInit, OnDestroy, EventEmitter, SimpleChanges, ChangeDetectorRef, DoCheck, Provider } from '@angular/core';
|
|
5
5
|
import { MatSelectionListChange } from '@angular/material/list';
|
|
6
6
|
import { MatPaginatorSelectConfig, PageEvent } from '@angular/material/paginator';
|
|
7
7
|
import { FormGroup, FormControl } from '@angular/forms';
|
|
@@ -457,7 +457,7 @@ interface ListCardDetailSlotViewModel {
|
|
|
457
457
|
label: string;
|
|
458
458
|
node: Record<string, any>;
|
|
459
459
|
}
|
|
460
|
-
declare class PraxisList implements OnInit, OnChanges, OnDestroy {
|
|
460
|
+
declare class PraxisList implements OnInit, OnChanges, AfterViewInit, OnDestroy {
|
|
461
461
|
private static nextSkinScopeId;
|
|
462
462
|
private customizationEnabled;
|
|
463
463
|
private readonly hostLocale;
|
|
@@ -526,7 +526,7 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
|
|
|
526
526
|
private readonly route;
|
|
527
527
|
private readonly globalActions;
|
|
528
528
|
private readonly dialog;
|
|
529
|
-
private
|
|
529
|
+
private hasViewInitialized;
|
|
530
530
|
private hasHydratedPersistence;
|
|
531
531
|
private hydratedPersistenceKey;
|
|
532
532
|
private hydratingPersistenceKey;
|
|
@@ -542,7 +542,9 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
|
|
|
542
542
|
exportStatusMessage: string;
|
|
543
543
|
private readonly listRuleContextOptions;
|
|
544
544
|
ngOnInit(): void;
|
|
545
|
+
ngAfterViewInit(): void;
|
|
545
546
|
ngOnChanges(changes: SimpleChanges): void;
|
|
547
|
+
private hasListIdentityInput;
|
|
546
548
|
ngOnDestroy(): void;
|
|
547
549
|
private applyPersistence;
|
|
548
550
|
private initializeDataStreams;
|
|
@@ -663,6 +665,7 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
|
|
|
663
665
|
expandToggleAriaLabel(item: any, index: number): string;
|
|
664
666
|
expansionRegionAriaLabel(item: any): string;
|
|
665
667
|
emptyStateLabel(): string;
|
|
668
|
+
isResourceConnectionMissing(): boolean;
|
|
666
669
|
onActionClick(ev: MouseEvent, actionId: string, item: any, index: number): Promise<void>;
|
|
667
670
|
private resolveActionPayload;
|
|
668
671
|
private resolveTemplate;
|
|
@@ -745,7 +748,6 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
|
|
|
745
748
|
private executeListEditorApplyPlan;
|
|
746
749
|
private storageKey;
|
|
747
750
|
private componentKeyId;
|
|
748
|
-
private warnMissingId;
|
|
749
751
|
private readonly crud;
|
|
750
752
|
private executeSchemaInferenceForPlan;
|
|
751
753
|
private evalSlot;
|
|
@@ -1579,9 +1581,9 @@ declare function buildListApplyPlan(doc: ListAuthoringDocument, runtime?: ListRu
|
|
|
1579
1581
|
declare function serializeListAuthoringDocument(doc: ListAuthoringDocument): unknown;
|
|
1580
1582
|
|
|
1581
1583
|
/**
|
|
1582
|
-
* Infer templating slots
|
|
1584
|
+
* Infer templating slots from field names already exposed by the canonical schema.
|
|
1583
1585
|
* - Does not override existing primary if already defined.
|
|
1584
|
-
* - Heuristics prioritize
|
|
1586
|
+
* - Heuristics prioritize common corporate/person records without creating a domain-specific preset.
|
|
1585
1587
|
*/
|
|
1586
1588
|
declare function inferTemplatingFromSchema(cfg: PraxisListConfig, fieldNames: string[]): PraxisListConfig;
|
|
1587
1589
|
|
|
@@ -1986,6 +1988,7 @@ declare const PRAXIS_LIST_EN_US: {
|
|
|
1986
1988
|
readonly collapseDetails: "Collapse details";
|
|
1987
1989
|
readonly itemDetails: "Item details";
|
|
1988
1990
|
readonly emptyState: "No items available";
|
|
1991
|
+
readonly emptyStateConnectResource: "Connect this list to a resource to load items.";
|
|
1989
1992
|
readonly 'pagination.itemsPerPage': "Items per page:";
|
|
1990
1993
|
readonly 'pagination.nextPage': "Next page";
|
|
1991
1994
|
readonly 'pagination.previousPage': "Previous page";
|
|
@@ -2003,6 +2006,11 @@ declare const PRAXIS_LIST_EN_US: {
|
|
|
2003
2006
|
readonly 'Assistant-applied adjustments replace the entire configuration object.': "Assistant-applied adjustments replace the entire configuration object.";
|
|
2004
2007
|
readonly 'applyConfigFromAdapter does not perform a deep merge. Make sure the adapter sends the full config.': "applyConfigFromAdapter does not perform a deep merge. Make sure the adapter sends the full config.";
|
|
2005
2008
|
readonly 'Resource (API)': "Resource (API)";
|
|
2009
|
+
readonly 'List resource': "List resource";
|
|
2010
|
+
readonly 'Select resource': "Select resource";
|
|
2011
|
+
readonly 'Hide resource selector': "Hide selector";
|
|
2012
|
+
readonly 'Select resource from catalog': "Select resource from catalog";
|
|
2013
|
+
readonly 'Select list resource': "Select list resource";
|
|
2006
2014
|
readonly 'e.g.: users': "e.g.: users";
|
|
2007
2015
|
readonly 'Resource endpoint (resourcePath).': "Resource endpoint (resourcePath).";
|
|
2008
2016
|
readonly 'Query (JSON)': "Query (JSON)";
|
|
@@ -2221,6 +2229,7 @@ declare const PRAXIS_LIST_PT_BR: {
|
|
|
2221
2229
|
readonly collapseDetails: "Recolher detalhes";
|
|
2222
2230
|
readonly itemDetails: "Detalhes do item";
|
|
2223
2231
|
readonly emptyState: "Nenhum item disponível";
|
|
2232
|
+
readonly emptyStateConnectResource: "Conecte a lista a um recurso para carregar os itens.";
|
|
2224
2233
|
readonly 'pagination.itemsPerPage': "Itens por página:";
|
|
2225
2234
|
readonly 'pagination.nextPage': "Próxima página";
|
|
2226
2235
|
readonly 'pagination.previousPage': "Página anterior";
|
|
@@ -2238,6 +2247,11 @@ declare const PRAXIS_LIST_PT_BR: {
|
|
|
2238
2247
|
readonly 'Assistant-applied adjustments replace the entire configuration object.': "Observação: ajustes aplicados pelo assistente substituem o objeto de configuração inteiro.";
|
|
2239
2248
|
readonly 'applyConfigFromAdapter does not perform a deep merge. Make sure the adapter sends the full config.': "O applyConfigFromAdapter não faz merge profundo. Garanta que o adapter envie a configuração completa.";
|
|
2240
2249
|
readonly 'Resource (API)': "Recurso (API)";
|
|
2250
|
+
readonly 'List resource': "Recurso da lista";
|
|
2251
|
+
readonly 'Select resource': "Selecionar recurso";
|
|
2252
|
+
readonly 'Hide resource selector': "Ocultar seletor";
|
|
2253
|
+
readonly 'Select resource from catalog': "Selecionar recurso pelo catálogo";
|
|
2254
|
+
readonly 'Select list resource': "Selecionar recurso da lista";
|
|
2241
2255
|
readonly 'e.g.: users': "ex.: usuários (users)";
|
|
2242
2256
|
readonly 'Resource endpoint (resourcePath).': "Endpoint do recurso (resourcePath).";
|
|
2243
2257
|
readonly 'Query (JSON)': "Consulta (JSON)";
|