@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/package.json CHANGED
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "name": "@praxisui/list",
3
- "version": "8.0.0-beta.99",
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": "^8.0.0-beta.99",
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": "^8.0.0-beta.99",
14
- "@praxisui/core": "^8.0.0-beta.99",
15
- "@praxisui/rich-content": "^8.0.0-beta.99",
16
- "@praxisui/settings-panel": "^8.0.0-beta.99"
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-03-19"
34
- last_updated: "2026-03-19"
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 apenas quando faltantes e sem sobrescrever contrato explícito.
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 persistência e emite warning deduplicado.
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 | warning + disable persistence | `praxis-list:missing-list-id` | Lista continua funcional sem restore/save. |
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 ocorre em dev mode (`LoggerService.warnOnce`).
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
 
@@ -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, AfterViewInit, Provider } from '@angular/core';
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 warnedMissingId;
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 (primary/secondary/trailing) from field names.
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 Portuguese labels, then common English names.
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)";