@praxisui/table 9.0.5-rc.2 → 9.0.5-rc.21

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.
@@ -29,7 +29,7 @@ reading_time: 16
29
29
  estimated_setup_time: 35
30
30
  version: "1.0"
31
31
  related_docs:
32
- - "table-overview"
32
+ - "praxis-table-json-api"
33
33
  - "dynamic-filter-payload-contract"
34
34
  - "dynamic-filter-range-filters-guide"
35
35
  - "dynamic-fields-inline-components-guide"
@@ -91,6 +91,21 @@ No Praxis, o filtro dinâmico é uma pipeline de seis etapas:
91
91
  - persistência local do estado do DTO e das preferências de exibição com chaves `filter-dto:<key>` e `filter-config:<key>`;
92
92
  - heurísticas que convertem `controlType` genérico para inline canônico quando a feature pede experiência compacta.
93
93
 
94
+ Na toolbar da tabela, essa responsabilidade é materializada em quatro regiões
95
+ semânticas governadas pela largura do próprio container:
96
+
97
+ - `identity`: identidade e contexto da coleção;
98
+ - `scope`: quick filters mutuamente exclusivos e removíveis;
99
+ - `query`: campos de filtro e atalhos projetados;
100
+ - `commands`: ações de negócio, utilidades e authoring.
101
+
102
+ Dentro de `PraxisFilter`, `query` se divide em `criteria` e
103
+ `query-auxiliary`. A primeira região contém os campos selecionados e sempre
104
+ visíveis. A segunda mantém tags/atalhos e comandos de gerenciamento como um
105
+ cluster único. O reflow move regiões completas e preserva ordem visual, ordem de
106
+ teclado e paridade de comandos; hosts não devem reconstruir essa composição com
107
+ breakpoints locais.
108
+
94
109
  Esse acoplamento existe em `projects/praxis-table/src/lib/components/praxis-filter/praxis-filter.component.ts` e `projects/praxis-table/src/lib/services/filter-config.service.ts`.
95
110
 
96
111
  ### 2. `praxis-dynamic-fields`: superfície dos controles
@@ -153,6 +168,12 @@ O runtime persiste:
153
168
 
154
169
  Isso permite restaurar seleção de campos, preferências visuais e estado operacional do filtro.
155
170
 
171
+ Tags fornecidas por `tags` são presets governados e não pertencem ao conjunto
172
+ editável de atalhos salvos pelo usuário. O runtime permite aplicá-las e removê-las,
173
+ mas não renomeá-las ou excluí-las. O `patch` de cada tag deve usar os nomes e
174
+ shapes canônicos do `FilterDTO`; um campo desconhecido não ganha semântica apenas
175
+ por estar presente no JSON do host.
176
+
156
177
  ### Etapa 4. Emissão de payload
157
178
 
158
179
  No modo avançado, `onAdvancedChange(event)` trabalha sobre `event.formData`. Os eventos `change` e `submit` são o contrato que o host normalmente observa para disparar integração com a API.
@@ -28,7 +28,7 @@ reading_time: 18
28
28
  estimated_setup_time: 45
29
29
  version: "1.0"
30
30
  related_docs:
31
- - "table-overview"
31
+ - "praxis-table-json-api"
32
32
  - "dynamic-filter-architecture-overview"
33
33
  - "dynamic-filter-payload-contract"
34
34
  - "dynamic-filter-editor-settings-guide"
@@ -125,6 +125,44 @@ e emite o novo payload para evitar filtro invisível. Use `alwaysVisibleFields`
125
125
  apenas para campos realmente fixos, porque eles não entram nessa remoção rápida
126
126
  do usuário.
127
127
 
128
+ #### Preservar a hierarquia da consulta na toolbar
129
+
130
+ O host declara a semântica, mas não posiciona controles com CSS próprio. O
131
+ `praxis-filter` organiza a consulta em duas regiões internas:
132
+
133
+ - **critérios**: campos sempre visíveis e campos adicionados por
134
+ `selectedFieldIds`;
135
+ - **auxiliar**: atalhos salvos/tags e comandos de gerenciamento, como adicionar
136
+ filtros, limpar critérios e abrir o formulário avançado.
137
+
138
+ Em containers largos, as duas regiões podem compartilhar a mesma faixa. Quando
139
+ o espaço diminui, a região auxiliar desce como um bloco completo; atalhos e
140
+ comandos não devem se espalhar por linhas diferentes nem comprimir campos de
141
+ data, intervalo ou lookup abaixo da largura utilizável. Em containers estreitos,
142
+ os critérios passam para uma coluna e o cluster auxiliar pode quebrar
143
+ internamente, preservando a ordem de leitura e de teclado.
144
+
145
+ Essa adaptação usa a largura do container da tabela, não apenas a viewport. Por
146
+ isso, o mesmo contrato continua válido dentro de páginas, cards, drawers e split
147
+ panes. Não crie breakpoints no host nem projete atalhos dentro da região de
148
+ campos: use os inputs e slots públicos, e deixe o runtime materializar a
149
+ geometria. Valide pelo menos os estados sem valor, preenchido, foco, erro e
150
+ disabled em tema claro/escuro, zoom de 200% e labels localizados longos.
151
+
152
+ Atalhos declarados em `tags` devem usar exatamente as chaves e os shapes do DTO
153
+ de filtro descoberto. Um atalho de faixa salarial, por exemplo, deve escrever o
154
+ mesmo campo de intervalo materializado pelo controle inline; criar um alias
155
+ apenas no host produz critério invisível. Tags predefinidas são somente leitura
156
+ quanto a renomear e excluir, mas continuam acionáveis e removíveis pelo operador.
157
+ O host deve observar `submit` quando atalhos precisam disparar consulta imediata;
158
+ `change` permanece a cadência de edição dos campos.
159
+
160
+ Controles projetados no slot `[toolbar]` recebem orçamento limitado e podem
161
+ quebrar dentro do cluster de consulta. Eles devem aceitar redução de largura e
162
+ não podem impor `min-width` maior que o slot. Se a operação precisar manter
163
+ largura intrínseca rígida, materialize-a como ação governada/overflow em vez de
164
+ forçar geometria local.
165
+
128
166
  #### Padronizar `materialDesign` dos campos de filtro
129
167
 
130
168
  O `praxis-filter` normaliza a metadata efetiva de filtros com uma politica