@praxisui/table 9.0.66 → 9.0.68-rc.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.
@@ -314,3 +314,27 @@ Para uma nova tabela enterprise:
314
314
  2. use overrides só onde a barra compacta realmente precisa;
315
315
  3. valide payload com backend antes de abrir opções avançadas;
316
316
  4. só então ligue tags, settings editor e variantes inline mais complexas.
317
+
318
+
319
+ ## Ciclo de vida dos editores do filtro
320
+
321
+ Os painéis de preferências e de metadados são vinculados ao `DestroyRef` da origem
322
+ pelo contrato `owner` do Settings Panel. Remover a origem encerra seus painéis e
323
+ as assinaturas de Apply/Save. Um carregamento lazy concluído após a destruição
324
+ do pai não abre um editor filho. O host deve destruir efetivamente o componente
325
+ quando sua origem deixa de existir, em vez de apenas ocultá-lo por CSS.
326
+
327
+ Salvar metadados no editor filho altera o rascunho do pai; a gravação da configuração
328
+ continua pertencendo ao fluxo de Save do filtro. Destruir a origem não inicia Save
329
+ e não implica cancelar requisições de gravação já iniciadas legitimamente.
330
+
331
+
332
+ ### Confirmação de Save nas preferências do filtro
333
+
334
+ O painel aguarda a conclusão do storage antes de fechar. Apply permanece uma
335
+ prévia sem gravação; erros de Save mantêm o rascunho aberto para nova tentativa.
336
+ Conflitos 409/412 não são sobrescritos automaticamente. Alterações feitas durante
337
+ uma requisição também permanecem abertas após a confirmação da versão enviada.
338
+ O cache local de FilterConfigService é atualizado ou removido somente após sucesso
339
+ de Save/Clear. A garantia corresponde ao storage configurado: o adapter local não
340
+ constitui confirmação de gravação no backend.
@@ -348,3 +348,8 @@ Toda documentação de filtro dinâmico precisa citar explicitamente:
348
348
  - quais falhas devolvem `400`.
349
349
 
350
350
  Sem isso, a doc tende a ficar “bonita na UI” e incompleta na integração real.
351
+
352
+
353
+ ## Linguagem editorial das saídas
354
+
355
+ O descritor editorial registrado pelos providers oficiais do filtro e da Table distingue `change` (“Valores do filtro”) de `contextChange` (“Valores e rótulos do filtro”). O primeiro carrega os valores; o segundo inclui `filter`, `labels`, `fieldLabels` e `fields` para apresentação. Os títulos são resolvidos pelo PraxisI18nService (pt-BR/en-US, fallback e override do host), sem alterar nomes de outputs ou payloads. O Page Builder consome essa descrição pelo ComponentMetadataRegistry, preservando identificadores em detalhes técnicos.
@@ -21,3 +21,16 @@ Mudanças iniciais de `queryContext` ou `filterCriteria` não podem antecipar es
21
21
  contrário, a Table envia primeiro uma requisição com defaults do construtor e depois outra com a
22
22
  configuração final, criando custo desnecessário e uma corrida entre respostas. Depois da
23
23
  inicialização, qualquer mudança real nesses inputs continua disparando a atualização remota.
24
+
25
+ ## Finalização assíncrona da primeira projeção local
26
+
27
+ Uma coleção obtida por HTTP real pode ser materializada como `data` local por uma
28
+ surface relacionada. `ngAfterContentInit` pode torná-la utilizável antes de o
29
+ `ngOnInit` assíncrono terminar. A finalização tardia não republica a mesma projeção
30
+ quando contém exatamente os mesmos objetos, na mesma ordem, já exibidos pela tabela.
31
+ Isso evita limpar uma seleção feita enquanto a inicialização ainda terminava.
32
+
33
+ Não se trata de persistência de seleção: novos objetos, outra projeção/ordem ou uma
34
+ atualização explícita continuam passando pela política `persistOnDataUpdate` /
35
+ `persistSelection`. Nenhuma identidade é reconstruída pela posição visual e a
36
+ precedência entre `resourcePath`, `data` e conexão persistida permanece inalterada.
@@ -48,6 +48,19 @@ O documento será considerado completo quando:
48
48
  - [ ] `toCanonicalConfig()` não precisa buscar `advancedFilters.settings` no estado anterior do componente.
49
49
  - [ ] `applyTableConfig()` não depende mais de fallback implícito baseado no estado interno previamente aplicado.
50
50
 
51
+ ### Visibilidade dos filtros em páginas compostas
52
+
53
+ No editor, **Visão geral e comportamento → Filtragem → Exibir filtros na tabela**
54
+ controla `behavior.filtering.advancedFilters.enabled`. Desativar essa preferência
55
+ oculta a barra interna; um widget de filtro conectado continua fornecendo critérios
56
+ à tabela. Os critérios recebidos não dependem de renderizar a barra interna.
57
+
58
+ A normalização de `advancedFilters.settings` pela aba Filtros deve preservar
59
+ `enabled: false` explícito, inclusive ao ler, aplicar e salvar o documento.
60
+ O editor nativo também publica configuração e bindings pelo evento existente
61
+ `tableInputPatch`, para que o Page Builder atualize os inputs persistíveis antes
62
+ de receber a próxima interação de outro widget.
63
+
51
64
  ### 5. Coerções contextuais
52
65
 
53
66
  - [ ] Coerção de `pagination.strategy` e `sorting.strategy` em modo local acontece em `toCanonicalConfig()`, não em `normalizeDocument()`.