@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 +3 -3
- package/ai/component-registry.json +2 -2
- package/docs/dynamic-fields-field-selection-guide.md +10 -6
- package/docs/dynamic-fields-inline-components-guide.md +3 -3
- package/fesm2022/praxisui-dynamic-fields.mjs +112 -67
- package/package.json +3 -3
- package/src/lib/components/inline-async-select/pdx-inline-async-select.json-api.md +1 -1
- package/src/lib/components/inline-searchable-select/pdx-inline-searchable-select.json-api.md +1 -1
- package/src/lib/components/material-searchable-select/pdx-material-searchable-select.json-api.md +1 -1
- package/types/praxisui-dynamic-fields.d.ts +12 -1
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
|
|
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.
|
|
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-
|
|
3
|
+
"generatedAt": "2026-08-12T04:55:54.550Z",
|
|
4
4
|
"packageName": "@praxisui/dynamic-fields",
|
|
5
|
-
"packageVersion": "9.0.5-rc.
|
|
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
|
-
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
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
|
-
-
|
|
201
|
-
-
|
|
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
|
|
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.
|