@praxisui/dynamic-fields 9.0.5-rc.2 → 9.0.5-rc.4

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 CHANGED
@@ -178,11 +178,11 @@ Inline filter support has its own runtime and discovery contract. Use the offici
178
178
 
179
179
  ## Collection Selection Overlay
180
180
 
181
- Select controls that need search, pagination or panel actions use the public `PdxCollectionOverlayComponent` and `PdxCollectionSearchComponent` primitives. The trigger remains a single accessible combobox control; search, listbox options and footer actions are sibling regions inside the connected CDK overlay. No input, button, status row or footer action may be projected as option content inside `mat-select`.
181
+ Select controls that need search, pagination or panel actions use the public `PdxCollectionOverlayComponent` and `PdxCollectionSearchComponent` primitives. Direct consumers may provide `panelId` when they need a stable dialog id; otherwise the primitive generates a unique id. The combobox `aria-controls` references the dialog ID while the options region keeps its own listbox ID. The trigger remains a single accessible combobox control with `aria-haspopup="dialog"`; the connected non-modal dialog contains search, listbox options and footer actions as sibling regions. No input, button, status row or footer action may be projected as option content inside `mat-select`.
182
182
 
183
- The overlay is attached only while open, prefers the space below the trigger, falls back above it, constrains itself to the viewport and owns scrolling in the options region. Closing by selection, `Escape`, outside click or detach restores the trigger/focus contract implemented by each control. Footer actions exist only while the overlay is attached and never participate in option keyboard navigation.
183
+ The overlay is attached only while open, prefers the space below the trigger, falls back above it, constrains itself to the viewport and owns scrolling in the options region. While open, `Tab` and `Shift+Tab` cycle through the dialog controls without dismissing the collection or moving focus behind it. Selection, `Escape` and outside click are explicit close paths and restore focus to the trigger; detach does not steal focus from the next surface. Footer actions exist only while the overlay is attached and never participate in option keyboard navigation.
184
184
 
185
- Collection search styling is shared with `@praxisui/table` through the Core `--praxis-collection-search-*` contract. In particular, `--praxis-collection-search-radius` supports square (`0`), intermediate (for example `8px`) and pill (`999px`) themes without component-specific aliases.
185
+ Collection search styling is shared with `@praxisui/table` through the Core `--praxis-collection-search-*` contract. In particular, `--praxis-collection-search-radius` supports square (`0`), intermediate (for example `8px`) and pill (`999px`) themes without component-specific aliases. The popup surface resolves from `--pdx-inline-panel-surface`, then the governed Praxis/Material surface chain, with an opaque final fallback; this prevents host token gaps from making options transparent. Narrow hosts may govern the default `22rem` popup limit through `--praxis-collection-overlay-narrow-max-height`.
186
186
 
187
187
  ## AI Authoring
188
188
 
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-08-11T20:12:18.507Z",
3
+ "generatedAt": "2026-08-12T04:55:54.550Z",
4
4
  "packageName": "@praxisui/dynamic-fields",
5
- "packageVersion": "9.0.5-rc.2",
5
+ "packageVersion": "9.0.5-rc.4",
6
6
  "sourceRegistry": "praxis-component-registry-ingestion",
7
7
  "sourceRegistryVersion": "1.0.0",
8
8
  "componentCount": 76,
@@ -274,6 +274,9 @@ Use `rich-content` quando:
274
274
  `MatSelect` implementa um combobox cujo painel e um listbox gerenciado pelo CDK.
275
275
  Por isso, o conteudo projetado em `mat-select` deve se limitar a opcoes,
276
276
  optgroups e elementos estritamente apresentacionais suportados pelo controle.
277
+ Quando a colecao exige busca, status e acoes, use o overlay compartilhado: o
278
+ trigger declara `aria-haspopup="dialog"`, o dialog conectado governa o foco e a
279
+ regiao de resultados preserva `role="listbox"`.
277
280
 
278
281
  Regras obrigatorias:
279
282
 
@@ -285,12 +288,13 @@ Regras obrigatorias:
285
288
  apresentacional; acoes interativas ficam fora do trigger;
286
289
  - nao use `ElementRef`, `DOCUMENT`, `append`, `insertBefore` ou placeholders
287
290
  para transportar uma view Angular entre a arvore declarada e o overlay;
288
- - preserve o fluxo nativo de teclado. Um helper visual nao deve interceptar
289
- `Tab`, `Shift+Tab` ou `Escape` para simular um composite control.
290
- - um controle declarado como irmao pertence ao fluxo da pagina; ele nao deve
291
- ser apresentado como footer do overlay. Para busca/paginacao remota rica,
292
- prefira o dialog/drawer de `entityLookup`, um autocomplete/composite overlay
293
- proprio ou carregamento automatico nao interativo.
291
+ - no dialog de colecao, `Tab` e `Shift+Tab` permanecem contidos entre busca,
292
+ opcoes e acoes; `Escape`, selecao e clique externo sao saidas explicitas e
293
+ restauram o foco no trigger;
294
+ - um controle declarado como irmao fora do overlay pertence ao fluxo da pagina;
295
+ busca e paginacao remota ricas devem ser regioes declarativas do dialog de
296
+ colecao compartilhado ou, em jornadas de lookup completas, do dialog/drawer
297
+ governado de `entityLookup`.
294
298
  - em `entityLookup`, `searchable=true` materializa uma acao acessivel no sufixo
295
299
  do campo que abre o dialogo governado. `dialog` customiza essa superficie e
296
300
  `dialog.enabled=false` e o opt-out explicito; a acao nunca vira uma
@@ -197,8 +197,8 @@ Compatibilidade de mapeamento no `praxis-filter`:
197
197
 
198
198
  Observação técnica importante:
199
199
 
200
- - No `mat-select`, o `mat-select-trigger` customizado não é renderizado quando o campo está vazio.
201
- - Por isso, o estado `empty` do `inlineSelect` e do `inlineSearchableSelect` deve ser estilizado no branch de placeholder do Material (`.mat-mdc-select-placeholder`) para manter o visual de badge/pill.
200
+ - `inlineSelect` e `inlineSearchableSelect` usam um botão-combobox estável; o pill vazio e preenchido pertence ao mesmo trigger, sem depender do placeholder interno de `mat-select`.
201
+ - Busca, lista e rodapé são regiões irmãs no dialog de coleção conectado. A superfície, borda, raio, elevação, scrolling e camada pertencem ao overlay compartilhado, não ao `overlay-pane` de cada consumidor.
202
202
 
203
203
  Regra de curadoria enterprise:
204
204
 
@@ -410,7 +410,7 @@ O vocabulário público de `inlineOverlay.applyMode` é `auto | explicit`. Compo
410
410
  `Limpar` não é sinônimo de `Cancelar`: no trigger/pill, limpa diretamente o valor aplicado; dentro de um painel `explicit`, deve limpar o rascunho e só virar valor final quando o usuário acionar `Aplicar`, salvo contrato específico documentado pelo componente.
411
411
 
412
412
  `inlineSelect` usa o mesmo envelope de min/max por densidade/viewport (pill vazio e preenchido), mantendo largura por conteúdo para o texto selecionado.
413
- `inlineMultiSelect` também usa o envelope adaptativo e, com `inlineOverlay.applyMode: "explicit"`, mantém seleção, remoção e limpeza do painel em rascunho até `Aplicar`; `Cancelar`, `Esc` ou fechamento externo restauram a seleção confirmada anterior. Labels, aria, `appearance` e `colorRole` das ações do rodapé devem vir de `inlineOverlay.actions.*`. O `inlineSelect` single ainda comita no clique por herdar o comportamento nativo do `mat-select`; confirmação explícita ali exige uma superfície de painel própria para não fechar ao selecionar.
413
+ `inlineMultiSelect` também usa o envelope adaptativo e, com `inlineOverlay.applyMode: "explicit"`, mantém seleção, remoção e limpeza do painel em rascunho até `Aplicar`; `Cancelar`, `Esc` ou fechamento externo restauram a seleção confirmada anterior. Labels, aria, `appearance` e `colorRole` das ações do rodapé devem vir de `inlineOverlay.actions.*`. O `inlineSelect` single comita quando uma opção do listbox é ativada e fecha pelo contrato explícito do overlay compartilhado; uma futura confirmação explícita deve reutilizar o mesmo estado de rascunho governado, sem reintroduzir semântica de `mat-select`.
414
414
  `inlineAsyncSelect` segue o mesmo envelope adaptativo de largura e mantém label como placeholder visual quando vazio.
415
415
  `inlineAutocomplete` também usa auto-width por conteúdo (valor/label), mantendo foco no shape pill e clear alinhado.
416
416
  `inlineNumber` segue o mesmo envelope adaptativo de largura, usando valor numérico atual ou label como fallback quando vazio.