@praxisui/dynamic-fields 9.0.0-beta.80 → 9.0.0-beta.82
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/ai/component-registry.json +2 -2
- package/fesm2022/praxisui-dynamic-fields.mjs +657 -355
- package/package.json +3 -3
- package/src/lib/components/inline-async-select/pdx-inline-async-select.json-api.md +6 -2
- package/src/lib/components/inline-entity-lookup/pdx-inline-entity-lookup.json-api.md +26 -9
- package/src/lib/components/inline-searchable-select/pdx-inline-searchable-select.json-api.md +6 -1
- package/src/lib/components/material-async-select/pdx-material-async-select.json-api.md +11 -5
- package/src/lib/components/material-searchable-select/pdx-material-searchable-select.json-api.md +6 -2
- package/types/praxisui-dynamic-fields.d.ts +16 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/dynamic-fields",
|
|
3
|
-
"version": "9.0.0-beta.
|
|
3
|
+
"version": "9.0.0-beta.82",
|
|
4
4
|
"description": "Angular Material-based dynamic form fields for Praxis UI with lazy loading and metadata-driven rendering.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^21.0.0",
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
"@angular/platform-browser": "^21.0.0",
|
|
12
12
|
"@angular/router": "^21.0.0",
|
|
13
13
|
"rxjs": "^7.8.0",
|
|
14
|
-
"@praxisui/core": "^9.0.0-beta.
|
|
15
|
-
"@praxisui/cron-builder": "^9.0.0-beta.
|
|
14
|
+
"@praxisui/core": "^9.0.0-beta.82",
|
|
15
|
+
"@praxisui/cron-builder": "^9.0.0-beta.82"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"libphonenumber-js": "^1.12.41",
|
|
@@ -311,7 +311,7 @@ Resumo de composicao deste componente:
|
|
|
311
311
|
|
|
312
312
|
### 4. Mapeamento de Comportamento
|
|
313
313
|
- Trigger em pill + badge de quantidade quando multiplo.
|
|
314
|
-
- Painel com busca em tempo real (termControl) e
|
|
314
|
+
- Painel com busca em tempo real (`termControl`) e rodape compartilhado: o rodape e materializado como irmao do `listbox` no overlay, nunca como opcao. `Carregar mais` e um botao real de largura total e alvo minimo de 44 px; durante a paginacao ele permanece visivel, ocupado e desabilitado. `Tab` transfere o foco da busca para a primeira acao habilitada; `Fim de lista` e um status, fora da semantica de opcoes.
|
|
315
315
|
- Se `resourcePath` ausente, busca opera sobre snapshot local.
|
|
316
316
|
|
|
317
317
|
### 5. Exemplo Minimo (JSON + Uso)
|
|
@@ -416,7 +416,11 @@ Correcao: ajustar limites em `inlineAutoSize`.
|
|
|
416
416
|
|
|
417
417
|
| Token/Class | Scope | Purpose | Notes |
|
|
418
418
|
| --- | --- | --- | --- |
|
|
419
|
-
| `
|
|
419
|
+
| `--pdx-select-panel-actions-surface` / `--pdx-select-panel-actions-on-surface` / `--pdx-select-panel-actions-muted` | overlay footer | Superficie, texto principal e texto secundario | Definir na classe de tema que alcanca o CDK Overlay. Tokens inline e `--pdx-overlay-*` continuam como fallbacks compativeis. |
|
|
420
|
+
| `--pdx-select-panel-actions-outline` / `--pdx-select-panel-actions-accent` | overlay footer | Separador, bordas e cor de acao/foco | Fallbacks Material: divider/outline e primary. |
|
|
421
|
+
| `--pdx-select-panel-action-hover-surface` / `--pdx-select-panel-action-focus-ring` | overlay footer | Estados hover e foco visivel | O host deve preservar contraste AA em temas claro e escuro. |
|
|
422
|
+
| `--pdx-select-panel-load-more-surface` / `--pdx-select-panel-load-more-outline` | overlay footer | Tratamento do botao `Carregar mais` | Permite distinguir a acao sem acoplamento a internals MDC. |
|
|
423
|
+
| `--pdx-select-panel-actions-gap` / `--pdx-select-panel-actions-padding` / `--pdx-select-panel-action-min-height` / `--pdx-select-panel-action-padding` / `--pdx-select-panel-action-radius` / `--pdx-select-panel-action-disabled-opacity` | overlay footer | Densidade, geometria e estado desabilitado | Altura default de 44 px preserva alvo corporativo acessivel. |
|
|
420
424
|
|
|
421
425
|
## Examples (obrigatorio)
|
|
422
426
|
|
|
@@ -324,7 +324,7 @@ Use quando precisar:
|
|
|
324
324
|
| `metadata.optionSource.detail.surfaceId` | `string` | Ativo | Id da surface item-level preferida para o detalhe. Quando ausente, o runtime escolhe `detail`, `view` ou a primeira surface item-level de leitura disponivel. |
|
|
325
325
|
| `metadata.optionSource.detail.presentation` | `"drawer" | "modal"` | Ativo | Apresentacao desejada para `surface.open`. Default vem do preset/host de surface. |
|
|
326
326
|
| `metadata.optionSource.detail.preferredWidget` / `metadata.optionSource.detail.mode` | `string` | Documental | Hints semanticos para autoria/discovery. A materializacao final vem da surface descoberta e do `ResourceSurfaceOpenAdapterService`. |
|
|
327
|
-
| `metadata.optionSource.detail.hrefTemplate` / `metadata.optionSource.detail.routeTemplate` | `string` | Legado | Fallback
|
|
327
|
+
| `metadata.optionSource.detail.hrefTemplate` / `metadata.optionSource.detail.routeTemplate` | `string` | Legado | Fallback quando nao houver surface governada. Quando ambos existem, `routeTemplate` tem precedencia por representar a rota navegavel do host. `hrefTemplate` que aponta para `/api/**` e tratado como evidencia de recurso, nao como destino de UX, e nao habilita a acao Detalhe isoladamente. |
|
|
328
328
|
| `metadata.optionSource.display.preset` | `"compact" | "rich" | "directory" | "status" | "reference" | "hierarchical"` | Ativo | Define a intencao visual canonica. `directory` e recomendado para pessoas/equipes; `reference` para codigo + descricao; `status` para entidades com estado operacional forte. |
|
|
329
329
|
| `metadata.optionSource.display.usage` | `"form" | "filter" | "table-cell" | "dashboard" | "wizard" | "review"` | Ativo | Indica onde a option-source costuma aparecer. O runtime pode ajustar densidade e acoes sem duplicar regra por host. |
|
|
330
330
|
| `metadata.optionSource.display.density` | `"compact" | "comfortable" | "rich"` | Ativo | Densidade preferencial. Campos de formulario usam `comfortable`; filtros inline e celulas de tabela tendem a `compact`; revisoes podem usar `rich`. |
|
|
@@ -341,11 +341,11 @@ Use quando precisar:
|
|
|
341
341
|
| `metadata.showAvatar` | `boolean` | Ativo | Controla exibicao de avatar por iniciais. Default: `true`. |
|
|
342
342
|
| `metadata.showBadges` | `boolean` | Ativo | Controla exibicao de badges auxiliares vindos de `badges`, `tags`, `riskLevel`, `homologationStatus` ou `badgeKeys`. Default: `true`. |
|
|
343
343
|
| `metadata.showDisabledReason` | `boolean` | Ativo | Controla exibicao do motivo de bloqueio quando `selectable=false`. Default: `true`. |
|
|
344
|
-
| `metadata.showResultCount` | `boolean` | Ativo | Controla contador de resultados no painel de busca. Quando
|
|
344
|
+
| `metadata.showResultCount` | `boolean` | Ativo | Controla contador de resultados no painel de busca. Quando `totalElements` remoto for maior que os itens carregados, mostra `carregados de total` para deixar claro que a lista visivel ainda e uma pagina parcial; em fontes locais/cursor, mostra o total carregado. Default: `true`. |
|
|
345
345
|
| `metadata.statusToneMap` | `Record<string, "success" | "warning" | "danger" | "neutral">` | Ativo | Permite mapear status de dominio para tom visual governado. |
|
|
346
346
|
| `metadata.badgeKeys` | `string[]` | Ativo | Chaves adicionais lidas do valor de entidade para compor badges auxiliares. |
|
|
347
347
|
| `metadata.maxVisibleBadges` | `number` | Ativo | Limita quantidade de badges auxiliares exibidos. Default: `3`. |
|
|
348
|
-
| `metadata.actions.showDetail` | `boolean` | Ativo | Controla acao de detalhe quando houver surface canonica ou
|
|
348
|
+
| `metadata.actions.showDetail` | `boolean` | Ativo | Controla acao de detalhe quando houver surface canonica, `detailRoute` navegavel ou `detailHref` nao-API. `detailHref` de API nao abre nova aba para evitar link morto em hosts corporativos. Default: `true`. |
|
|
349
349
|
| `metadata.actions.showChange` | `boolean` | Ativo | Controla acao de troca no cartao selecionado. Default: `true`. |
|
|
350
350
|
| `metadata.actions.showCopyCode` | `boolean` | Ativo | Controla acao de copiar codigo/id. Default: `true`. |
|
|
351
351
|
| `metadata.actions.showClear` | `boolean` | Ativo | Controla acao de limpar em conjunto com `clearButton`/clearable herdado. |
|
|
@@ -368,7 +368,9 @@ Resumo de composicao deste componente:
|
|
|
368
368
|
- Com `metadata.optionSource.resourcePath`, busca emite termo no pipeline remoto de option-source; sem endpoint, filtra local.
|
|
369
369
|
- Em uso standalone de shell/topbar autenticado, o componente aceita `FormControl` externo com `initialMetadata` estático e `options` locais. Um valor inicial já selecionado no controle deve materializar o texto da opção local sem bloquear a montagem da rota nem realimentar change detection quando a metadata recebida for semanticamente equivalente.
|
|
370
370
|
- `metadata.resourcePath` continua aceito como configuracao operacional herdada, mas nao substitui a semantica canonica de entidade publicada em `metadata.optionSource`.
|
|
371
|
-
-
|
|
371
|
+
- As acoes de painel ficam em um rodape materializado como irmao do `listbox` no overlay: `Limpar selecao` e uma acao secundaria alinhada ao inicio; `Carregar mais` e uma acao de largura total, com alvo minimo de 44 px, estado ocupado e foco visivel. `Tab` transfere o foco da busca para a primeira acao habilitada. Nenhuma delas participa da navegacao semantica de opcoes.
|
|
372
|
+
- A reidratacao por IDs preserva o valor selecionado, mas nao conta como carga da pagina zero. No primeiro `open`, o runtime consulta a pagina zero antes de habilitar `Carregar mais`; o contador remoto e a lista visivel permanecem coerentes.
|
|
373
|
+
- Durante busca digitada, a lista visivel mostra apenas resultados retornados pela pagina remota filtrada. O selecionado reidratado por ID nao e injetado como falso resultado, embora continue preservado para display fechado e reabertura sem termo.
|
|
372
374
|
- `OptionDTO.extra.selectable === false` desabilita a opcao e permite exibir `disabledReason` sem remover a entidade da lista ou da reidratacao.
|
|
373
375
|
|
|
374
376
|
### 5. Exemplo Minimo (JSON + Uso)
|
|
@@ -378,7 +380,7 @@ Resumo de composicao deste componente:
|
|
|
378
380
|
"metadata": {
|
|
379
381
|
"name": "employee",
|
|
380
382
|
"label": "Funcionario",
|
|
381
|
-
"controlType": "
|
|
383
|
+
"controlType": "inlineEntityLookup",
|
|
382
384
|
"lookupIdKey": "employeeId",
|
|
383
385
|
"lookupLabelKey": "fullName",
|
|
384
386
|
"selectOptions": [
|
|
@@ -409,7 +411,7 @@ Uso: lookup simples em lista local.
|
|
|
409
411
|
"statusPropertyPath": "status",
|
|
410
412
|
"detail": {
|
|
411
413
|
"kind": "surface",
|
|
412
|
-
"surfaceId": "
|
|
414
|
+
"surfaceId": "detail",
|
|
413
415
|
"presentation": "drawer",
|
|
414
416
|
"preferredWidget": "praxis-dynamic-form",
|
|
415
417
|
"mode": "view"
|
|
@@ -507,7 +509,22 @@ Correcao: ajustar `inlineAutoSize.minWidth/maxWidth`.
|
|
|
507
509
|
|
|
508
510
|
| Token/Class | Scope | Purpose | Notes |
|
|
509
511
|
| --- | --- | --- | --- |
|
|
510
|
-
|
|
|
512
|
+
| `.pdx-entity-lookup-rich` | trigger | Ativa a geometria de campo corporativo | Preserva label Material, subscript e zona de seta com altura integral. |
|
|
513
|
+
| `.pdx-select-panel-actions` | overlay footer | Agrupa acoes auxiliares fora da lista de opcoes | Primitiva interna compartilhada pela familia de selects; nao deve ser transformada em `mat-option`. |
|
|
514
|
+
| `.pdx-select-panel-action.is-clear` | overlay footer | Limpa a selecao atual | Acao secundaria alinhada ao inicio, alvo minimo de 44 px e foco visivel. |
|
|
515
|
+
| `.pdx-select-panel-action.is-load-more` | overlay footer | Solicita a proxima pagina | Acao de largura total com estados normal, hover, focus e loading/disabled. |
|
|
516
|
+
| `.pdx-select-panel-end` | overlay footer | Comunica fim da paginacao | Estado informativo com `role="status"`; nao e interativo. |
|
|
517
|
+
| `--pdx-inline-panel-surface` / `--pdx-inline-panel-surface-raised` | overlay | Superficie base e superficie de estado/selecionado | Definir globalmente no escopo de tema do host, pois o painel vive no CDK Overlay. Fallbacks: `--md-sys-color-surface-container-highest/high`. |
|
|
518
|
+
| `--pdx-inline-panel-on-surface` / `--pdx-inline-panel-on-surface-muted` | overlay | Texto principal e texto auxiliar | Devem manter contraste nos temas claro e escuro. Fallbacks: `--md-sys-color-on-surface/-variant`. |
|
|
519
|
+
| `--pdx-inline-panel-outline` | overlay | Borda e separadores do painel | Fallback: `--md-sys-color-outline-variant`. |
|
|
520
|
+
| `--pdx-entity-lookup-avatar-size` / `--pdx-entity-lookup-avatar-large-size` / `--pdx-entity-lookup-avatar-compact-size` / `--pdx-entity-lookup-avatar-radius` | trigger/panel | Geometria dos avatares por iniciais | Permite ajustar densidade corporativa sem colar icone/texto ou quebrar alinhamento vertical do select. |
|
|
521
|
+
| `--pdx-entity-lookup-avatar-surface` / `--pdx-entity-lookup-avatar-text` | trigger/panel | Cor de avatar por iniciais | Fallbacks usam primary Material com `color-mix`; hosts podem calibrar claro/escuro por tema. |
|
|
522
|
+
| `--pdx-entity-lookup-selected-compact-padding` / `--pdx-entity-lookup-selected-compact-inline-start` | trigger | Respiro do valor selecionado compacto | Deve manter o avatar afastado da borda esquerda, preservar a zona de seta alinhada ao select Material e respeitar o `inline-size` do container em drawers estreitos. |
|
|
523
|
+
| `--pdx-entity-lookup-success-surface` / `--pdx-entity-lookup-success-text` / `--pdx-entity-lookup-warning-surface` / `--pdx-entity-lookup-warning-text` / `--pdx-entity-lookup-warning-outline` / `--pdx-entity-lookup-danger-surface` / `--pdx-entity-lookup-danger-text` / `--pdx-entity-lookup-danger-outline` | trigger/panel | Tons de status, badges e notas de bloqueio/legado | Fallbacks derivam de tokens Material (`primary`, `tertiary`, `error`) para funcionar em temas claro e escuro; hosts regulados podem substituir todos os tons. |
|
|
524
|
+
| `--pdx-select-panel-actions-surface` / `--pdx-select-panel-actions-on-surface` / `--pdx-select-panel-actions-muted` | overlay footer | Superficie, texto principal e texto secundario do rodape | Contrato canonico; os tokens inline acima sao preservados como fallback e transferidos quando definidos no painel. |
|
|
525
|
+
| `--pdx-select-panel-actions-outline` / `--pdx-select-panel-actions-accent` | overlay footer | Separador, bordas e cor de acao/foco | Fallbacks Material: divider/outline e primary. |
|
|
526
|
+
| `--pdx-select-panel-action-hover-surface` / `--pdx-select-panel-action-focus-ring` / `--pdx-select-panel-load-more-surface` / `--pdx-select-panel-load-more-outline` | overlay footer | Estados interativos de limpar/carregar mais | Customizar na classe de tema que alcanca o CDK Overlay e validar contraste claro/escuro. |
|
|
527
|
+
| `--pdx-select-panel-actions-gap` / `--pdx-select-panel-actions-padding` / `--pdx-select-panel-action-min-height` / `--pdx-select-panel-action-padding` / `--pdx-select-panel-action-radius` / `--pdx-select-panel-action-disabled-opacity` | overlay footer | Densidade, geometria e estado desabilitado | Altura default de 44 px preserva alvo corporativo acessivel. |
|
|
511
528
|
|
|
512
529
|
## Examples (obrigatorio)
|
|
513
530
|
|
|
@@ -526,7 +543,7 @@ Correcao: ajustar `inlineAutoSize.minWidth/maxWidth`.
|
|
|
526
543
|
"metadata": {
|
|
527
544
|
"name": "employee",
|
|
528
545
|
"label": "Funcionario",
|
|
529
|
-
"controlType": "
|
|
546
|
+
"controlType": "inlineEntityLookup",
|
|
530
547
|
"lookupIdKey": "employeeId",
|
|
531
548
|
"lookupLabelKey": "fullName",
|
|
532
549
|
"selectOptions": [
|
|
@@ -549,7 +566,7 @@ Correcao: ajustar `inlineAutoSize.minWidth/maxWidth`.
|
|
|
549
566
|
"metadata": {
|
|
550
567
|
"name": "costCenterOwner",
|
|
551
568
|
"label": "Responsavel",
|
|
552
|
-
"controlType": "
|
|
569
|
+
"controlType": "inlineEntityLookup",
|
|
553
570
|
"resourcePath": "employees/options",
|
|
554
571
|
"lookupIdKey": "matricula",
|
|
555
572
|
"lookupLabelKey": "nome",
|
package/src/lib/components/inline-searchable-select/pdx-inline-searchable-select.json-api.md
CHANGED
|
@@ -308,6 +308,7 @@ Resumo de composicao deste componente:
|
|
|
308
308
|
- `Extensao de runtime`: `searchPlaceholder` e `inlineAutoSize.*`.
|
|
309
309
|
|
|
310
310
|
### 4. Mapeamento de Comportamento
|
|
311
|
+
- A paginacao usa o rodape compartilhado da familia de selects, materializado como irmao do `listbox` no overlay: botao `Carregar mais` com alvo minimo de 44 px, estado ocupado sem salto de layout e acesso por `Tab` a partir da busca. A acao nao participa da semantica de opcoes.
|
|
311
312
|
- Trigger exibe label e, em modo multiplo, badge de quantidade.
|
|
312
313
|
- Painel contem input de busca e estados de loading/fim de lista.
|
|
313
314
|
- Quando sem `resourcePath`, usa filtragem local da lista estatica.
|
|
@@ -418,7 +419,11 @@ Correcao: quick-clear respeita estados readonly/disabled/presentation.
|
|
|
418
419
|
|
|
419
420
|
| Token/Class | Scope | Purpose | Notes |
|
|
420
421
|
| --- | --- | --- | --- |
|
|
421
|
-
| `
|
|
422
|
+
| `--pdx-select-panel-actions-surface` / `--pdx-select-panel-actions-on-surface` / `--pdx-select-panel-actions-muted` | overlay footer | Superficie, texto principal e texto secundario | Definir na classe de tema que alcanca o CDK Overlay. Tokens inline e `--pdx-overlay-*` continuam como fallbacks compativeis. |
|
|
423
|
+
| `--pdx-select-panel-actions-outline` / `--pdx-select-panel-actions-accent` | overlay footer | Separador, bordas e cor de acao/foco | Fallbacks Material: divider/outline e primary. |
|
|
424
|
+
| `--pdx-select-panel-action-hover-surface` / `--pdx-select-panel-action-focus-ring` | overlay footer | Estados hover e foco visivel | O host deve preservar contraste AA em temas claro e escuro. |
|
|
425
|
+
| `--pdx-select-panel-load-more-surface` / `--pdx-select-panel-load-more-outline` | overlay footer | Tratamento do botao `Carregar mais` | Permite distinguir a acao sem acoplamento a internals MDC. |
|
|
426
|
+
| `--pdx-select-panel-actions-gap` / `--pdx-select-panel-actions-padding` / `--pdx-select-panel-action-min-height` / `--pdx-select-panel-action-padding` / `--pdx-select-panel-action-radius` / `--pdx-select-panel-action-disabled-opacity` | overlay footer | Densidade, geometria e estado desabilitado | Altura default de 44 px preserva alvo corporativo acessivel. |
|
|
422
427
|
|
|
423
428
|
## Examples (obrigatorio)
|
|
424
429
|
|
|
@@ -318,9 +318,10 @@ Garantias:
|
|
|
318
318
|
|
|
319
319
|
- input de busca e carga incremental estao habilitados no painel.
|
|
320
320
|
- `loadOn` controla a primeira carga (`open`, `init`, `none`).
|
|
321
|
+
- Uma falha na carga inicial nao marca o campo como carregado: com `loadOn='open'`, reabrir o painel tenta novamente; somente uma resposta processada com sucesso conclui a carga inicial.
|
|
321
322
|
- `useCursor` pode trocar estrategia de pagina quando backend suporta cursor.
|
|
322
323
|
- Com `resourcePath` e `loadOn='open'`, o painel abre mesmo antes da primeira pagina remota para disparar a carga inicial; a opcao sentinela usada para isso e interna, invisivel e nao compoe contrato visual publico.
|
|
323
|
-
- `Carregar mais` so aparece depois de uma primeira pagina remota carregada com sucesso e com proxima pagina disponivel.
|
|
324
|
+
- `Carregar mais` so aparece depois de uma primeira pagina remota carregada com sucesso e com proxima pagina disponivel; durante a paginacao permanece visivel, ocupado e desabilitado para evitar requisicoes duplicadas e salto de layout. A acao usa o rodape compartilhado, materializado como irmao do `listbox` no overlay, tem alvo minimo de 44 px, recebe foco por `Tab` a partir da busca e nao participa da semantica de opcoes.
|
|
324
325
|
- fontes locais (`selectOptions`/`options`) e `loadOn='none'` antes da primeira carga nao exibem acao de paginacao.
|
|
325
326
|
- em paginacao numerada, o fim usa `totalPages`/`totalElements` quando fornecidos pelo backend; se ausentes, usa `content.length < pageSize` como fallback.
|
|
326
327
|
|
|
@@ -399,7 +400,8 @@ Precedencia de comportamento:
|
|
|
399
400
|
Notas de runtime:
|
|
400
401
|
|
|
401
402
|
- em remoto generico, `loadOptions` pode usar `includeIds` na pagina 0.
|
|
402
|
-
- em `optionSource`, o filtro envia `includeIds` somente quando `optionSource.includeIds=true
|
|
403
|
+
- em `optionSource`, o filtro envia `includeIds` somente quando `optionSource.includeIds=true` e nao ha termo de busca ativo; quando ausente, `false` ou durante busca digitada, valores selecionados sao reidratados por `/option-sources/{sourceKey}/options/by-ids`.
|
|
404
|
+
- durante busca digitada, a lista visivel usa apenas os itens da pagina remota filtrada. Opcoes reidratadas por ID preservam o display fechado, mas nao podem substituir ou inflar o resultado da busca.
|
|
403
405
|
- em `optionSource`, dependencias declaradas por `dependsOn` e `dependencyFilterMap` sao materializadas como filtros estruturados `equals` no envelope canonico de opcoes.
|
|
404
406
|
- `onSearch` limpa estado local e reinicia pagina para novo termo.
|
|
405
407
|
- `loadMore` nao inicia a primeira carga remota; a primeira pagina respeita `loadOn`, abertura do painel, reload explicito ou mudanca de dependencia.
|
|
@@ -425,8 +427,8 @@ Correcao: revise `loadOn`, `resourcePath` e permissao de endpoint.
|
|
|
425
427
|
3. Filtro remoto usa campo errado.
|
|
426
428
|
Correcao: alinhe `optionLabelKey` e `optionValueKey` ao payload real.
|
|
427
429
|
|
|
428
|
-
4. Item selecionado
|
|
429
|
-
Correcao:
|
|
430
|
+
4. Item selecionado aparece como unico resultado de uma busca que deveria retornar outro item.
|
|
431
|
+
Correcao: durante busca, nao envie `includeIds` nem force `ensureVisible` do selecionado; a lista deve refletir a pagina remota filtrada. O selecionado continua preservado pela reidratacao `/by-ids` para display fechado e reabertura sem termo.
|
|
430
432
|
|
|
431
433
|
5. Cascata nao atualiza automaticamente.
|
|
432
434
|
Correcao: use `dependencyLoadOnChange='immediate'` ou dispare recarga no host.
|
|
@@ -468,7 +470,11 @@ Correcao: use `dependencyLoadOnChange='immediate'` ou dispare recarga no host.
|
|
|
468
470
|
|
|
469
471
|
| Token/Class | Scope | Purpose | Notes |
|
|
470
472
|
| --- | --- | --- | --- |
|
|
471
|
-
| `
|
|
473
|
+
| `--pdx-select-panel-actions-surface` / `--pdx-select-panel-actions-on-surface` / `--pdx-select-panel-actions-muted` | overlay footer | Superficie, texto principal e texto secundario | Definir na classe de tema que alcanca o CDK Overlay. Tokens `--pdx-overlay-*` e inline continuam como fallbacks compativeis. |
|
|
474
|
+
| `--pdx-select-panel-actions-outline` / `--pdx-select-panel-actions-accent` | overlay footer | Separador, bordas e cor de acao/foco | Fallbacks Material: divider/outline e primary. |
|
|
475
|
+
| `--pdx-select-panel-action-hover-surface` / `--pdx-select-panel-action-focus-ring` | overlay footer | Estados hover e foco visivel | O host deve preservar contraste AA em temas claro e escuro. |
|
|
476
|
+
| `--pdx-select-panel-load-more-surface` / `--pdx-select-panel-load-more-outline` | overlay footer | Tratamento do botao `Carregar mais` | Permite distinguir a acao sem acoplamento a internals MDC. |
|
|
477
|
+
| `--pdx-select-panel-actions-gap` / `--pdx-select-panel-actions-padding` / `--pdx-select-panel-action-min-height` / `--pdx-select-panel-action-padding` / `--pdx-select-panel-action-radius` / `--pdx-select-panel-action-disabled-opacity` | overlay footer | Densidade, geometria e estado desabilitado | Altura default de 44 px preserva alvo corporativo acessivel. |
|
|
472
478
|
|
|
473
479
|
## Examples (obrigatorio)
|
|
474
480
|
|
package/src/lib/components/material-searchable-select/pdx-material-searchable-select.json-api.md
CHANGED
|
@@ -348,7 +348,7 @@ Precedencia de comportamento:
|
|
|
348
348
|
3. `optionSource` ativa consulta remota pelo endpoint canonico `/option-sources/{key}/options/filter`.
|
|
349
349
|
4. `resourcePath` ativa consulta remota paginada legada com termo de busca.
|
|
350
350
|
5. Com `resourcePath` e `loadOn='open'`, o painel abre mesmo antes da primeira pagina remota para disparar a carga inicial; a opcao sentinela usada para isso e interna, invisivel e nao compoe contrato visual publico.
|
|
351
|
-
6. `Carregar mais` so aparece depois de uma primeira pagina remota carregada com sucesso e com proxima pagina disponivel.
|
|
351
|
+
6. `Carregar mais` so aparece depois de uma primeira pagina remota carregada com sucesso e com proxima pagina disponivel; durante a paginacao permanece visivel, ocupado e desabilitado para evitar requisicoes duplicadas e salto de layout. A acao usa o rodape compartilhado, materializado como irmao do `listbox` no overlay, tem alvo minimo de 44 px, recebe foco por `Tab` a partir da busca e nao participa da semantica de opcoes.
|
|
352
352
|
7. fontes locais (`selectOptions`/`options`) e `loadOn='none'` antes da primeira carga nao exibem acao de paginacao.
|
|
353
353
|
|
|
354
354
|
#### Status model
|
|
@@ -478,7 +478,11 @@ Correcao: use `dependencyLoadOnChange='immediate'` ou dispare recarga no host.
|
|
|
478
478
|
|
|
479
479
|
| Token/Class | Scope | Purpose | Notes |
|
|
480
480
|
| --- | --- | --- | --- |
|
|
481
|
-
| `
|
|
481
|
+
| `--pdx-select-panel-actions-surface` / `--pdx-select-panel-actions-on-surface` / `--pdx-select-panel-actions-muted` | overlay footer | Superficie, texto principal e texto secundario | Definir na classe de tema que alcanca o CDK Overlay. Tokens `--pdx-overlay-*` e inline continuam como fallbacks compativeis. |
|
|
482
|
+
| `--pdx-select-panel-actions-outline` / `--pdx-select-panel-actions-accent` | overlay footer | Separador, bordas e cor de acao/foco | Fallbacks Material: divider/outline e primary. |
|
|
483
|
+
| `--pdx-select-panel-action-hover-surface` / `--pdx-select-panel-action-focus-ring` | overlay footer | Estados hover e foco visivel | O host deve preservar contraste AA em temas claro e escuro. |
|
|
484
|
+
| `--pdx-select-panel-load-more-surface` / `--pdx-select-panel-load-more-outline` | overlay footer | Tratamento do botao `Carregar mais` | Permite distinguir a acao sem acoplamento a internals MDC. |
|
|
485
|
+
| `--pdx-select-panel-actions-gap` / `--pdx-select-panel-actions-padding` / `--pdx-select-panel-action-min-height` / `--pdx-select-panel-action-padding` / `--pdx-select-panel-action-radius` / `--pdx-select-panel-action-disabled-opacity` | overlay footer | Densidade, geometria e estado desabilitado | Altura default de 44 px preserva alvo corporativo acessivel. |
|
|
482
486
|
|
|
483
487
|
## Examples (obrigatorio)
|
|
484
488
|
|
|
@@ -1189,6 +1189,7 @@ declare abstract class SimpleBaseSelectComponent<T = any> extends SimpleBaseInpu
|
|
|
1189
1189
|
loadingOptionsLabel(): string;
|
|
1190
1190
|
loadMoreOptionsLabel(): string;
|
|
1191
1191
|
endOfOptionsLabel(): string;
|
|
1192
|
+
selectPanelActionsAriaLabel(): string;
|
|
1192
1193
|
noOptionsAvailableLabel(): string;
|
|
1193
1194
|
loadingOptionsAriaLabel(): string;
|
|
1194
1195
|
/**
|
|
@@ -1295,6 +1296,9 @@ declare abstract class SimpleBaseSelectComponent<T = any> extends SimpleBaseInpu
|
|
|
1295
1296
|
protected optionSourceByIdsOptions(): {
|
|
1296
1297
|
filter?: Record<string, unknown>;
|
|
1297
1298
|
} | undefined;
|
|
1299
|
+
/** Keeps every request aligned with the dependency values currently bound to the form. */
|
|
1300
|
+
protected synchronizeDependencyCriteriaFromControls(): void;
|
|
1301
|
+
private applyDependencyValues;
|
|
1298
1302
|
private getByPath;
|
|
1299
1303
|
private setByPath;
|
|
1300
1304
|
private unsetByPath;
|
|
@@ -1315,6 +1319,7 @@ declare class OptionStore<ID = string | number> {
|
|
|
1315
1319
|
ensureVisible(ids: ID[]): void;
|
|
1316
1320
|
clearPages(): void;
|
|
1317
1321
|
get items(): OptionDTO<ID>[];
|
|
1322
|
+
get pageItems(): OptionDTO<ID>[];
|
|
1318
1323
|
}
|
|
1319
1324
|
|
|
1320
1325
|
declare const PRAXIS_DYNAMIC_FIELDS_PT_BR: PraxisI18nDictionary;
|
|
@@ -2620,9 +2625,9 @@ declare class MaterialSearchableSelectComponent extends SimpleBaseSelectComponen
|
|
|
2620
2625
|
protected loadOptions(page?: number, searchTerm?: string, criteria?: Record<string, unknown>): void;
|
|
2621
2626
|
loadNextPage(): void;
|
|
2622
2627
|
showLoadMore(): boolean;
|
|
2628
|
+
onPanelSearchKeydown(event: KeyboardEvent): void;
|
|
2623
2629
|
shouldRenderOpenSentinel(): boolean;
|
|
2624
2630
|
private isLastPage;
|
|
2625
|
-
onLoadMorePointerDown(event: Event): void;
|
|
2626
2631
|
onLoadMoreInteraction(event: Event): void;
|
|
2627
2632
|
onSearch(term: string): void;
|
|
2628
2633
|
protected registerMatSelect(select: MatSelect): void;
|
|
@@ -2655,6 +2660,7 @@ declare class InlineSearchableSelectComponent extends MaterialSearchableSelectCo
|
|
|
2655
2660
|
onSearchInput(term: string): void;
|
|
2656
2661
|
onSearchInputEvent(event: Event): void;
|
|
2657
2662
|
showLoadMore(): boolean;
|
|
2663
|
+
onPanelSearchKeydown(event: KeyboardEvent): void;
|
|
2658
2664
|
showEndReachedMessage(): boolean;
|
|
2659
2665
|
onLoadMoreClick(event: MouseEvent): void;
|
|
2660
2666
|
placeholderText(): string;
|
|
@@ -2732,9 +2738,11 @@ declare class MaterialAsyncSelectComponent extends SimpleBaseSelectComponent {
|
|
|
2732
2738
|
searchInputAriaLabel(): string;
|
|
2733
2739
|
ngOnInit(): void;
|
|
2734
2740
|
onOpened(opened: boolean): void;
|
|
2741
|
+
protected hasCompletedInitialLoad(): boolean;
|
|
2735
2742
|
private getSelectedIds;
|
|
2736
2743
|
private preloadSelected;
|
|
2737
2744
|
private refreshOptions;
|
|
2745
|
+
private hasSearchTerm;
|
|
2738
2746
|
protected currentLookupFiltering(): LookupFilteringMetadata | null;
|
|
2739
2747
|
lookupSortOptions(): LookupSortOptionMetadata[];
|
|
2740
2748
|
lookupFilterDefinitions(): LookupFilterDefinitionMetadata[];
|
|
@@ -2755,7 +2763,6 @@ declare class MaterialAsyncSelectComponent extends SimpleBaseSelectComponent {
|
|
|
2755
2763
|
showLoadMore(): boolean;
|
|
2756
2764
|
shouldRenderOpenSentinel(): boolean;
|
|
2757
2765
|
private isLastPage;
|
|
2758
|
-
onLoadMorePointerDown(event: Event): void;
|
|
2759
2766
|
onLoadMoreInteraction(event: Event): void;
|
|
2760
2767
|
retry(): void;
|
|
2761
2768
|
handleKey(event: KeyboardEvent): void;
|
|
@@ -2822,6 +2829,7 @@ declare class InlineAsyncSelectComponent extends MaterialAsyncSelectComponent {
|
|
|
2822
2829
|
onSearchInputEvent(event: Event): void;
|
|
2823
2830
|
onSearchInput(term: string): void;
|
|
2824
2831
|
showLoadMore(): boolean;
|
|
2832
|
+
onPanelSearchKeydown(event: KeyboardEvent): void;
|
|
2825
2833
|
showEndReachedMessage(): boolean;
|
|
2826
2834
|
onLoadMoreClick(event: MouseEvent): void;
|
|
2827
2835
|
placeholderText(): string;
|
|
@@ -2922,6 +2930,7 @@ declare class InlineEntityLookupComponent extends MaterialAsyncSelectComponent {
|
|
|
2922
2930
|
setSelectMetadata(metadata: EntityLookupMetadata): void;
|
|
2923
2931
|
protected setMetadata(metadata: MaterialSelectMetadata): void;
|
|
2924
2932
|
onComponentInit(): void;
|
|
2933
|
+
onLookupHostClick(event: MouseEvent): void;
|
|
2925
2934
|
onViewportResize(): void;
|
|
2926
2935
|
errorStateMatcher(): _angular_material_core.ErrorStateMatcher;
|
|
2927
2936
|
protected getSpecificCssClasses(): string[];
|
|
@@ -2983,6 +2992,8 @@ declare class InlineEntityLookupComponent extends MaterialAsyncSelectComponent {
|
|
|
2983
2992
|
selectionLimitReachedText(maxSelections: number | null | undefined): string;
|
|
2984
2993
|
onDetailAction(event: MouseEvent, item: EntityLookupViewModel): void;
|
|
2985
2994
|
private openDetailSurface;
|
|
2995
|
+
private hasNavigableDetailHref;
|
|
2996
|
+
private navigableDetailHref;
|
|
2986
2997
|
private tryOpenGovernedDetailSurface;
|
|
2987
2998
|
private itemSurfacesHref;
|
|
2988
2999
|
private selectDetailSurface;
|
|
@@ -2996,6 +3007,8 @@ declare class InlineEntityLookupComponent extends MaterialAsyncSelectComponent {
|
|
|
2996
3007
|
optionSecondaryText(option: LookupOption): string;
|
|
2997
3008
|
protected resolveRemoteOptionValue(option: OptionDTO<string | number>): EntityLookupResult<string | number>;
|
|
2998
3009
|
resetOptionText(): string;
|
|
3010
|
+
fieldLabel(): string;
|
|
3011
|
+
panelActionsAriaLabel(): string;
|
|
2999
3012
|
showQuickClear(): boolean;
|
|
3000
3013
|
onResetOptionClick(event: MouseEvent): void;
|
|
3001
3014
|
onTriggerIconMouseDown(event: MouseEvent): void;
|
|
@@ -3068,6 +3081,7 @@ declare class InlineEntityLookupComponent extends MaterialAsyncSelectComponent {
|
|
|
3068
3081
|
private humanizeLookupDependencyField;
|
|
3069
3082
|
private lookupFilterValueText;
|
|
3070
3083
|
inlineTooltipText(): string;
|
|
3084
|
+
inlineTooltipDisabled(): boolean;
|
|
3071
3085
|
private resolveLookupText;
|
|
3072
3086
|
private lookupViewFromValue;
|
|
3073
3087
|
private findKnownLookupOption;
|