@praxisui/table 8.0.0-beta.104 → 8.0.0-beta.105
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/fesm2022/{praxisui-table-praxisui-table-BV50-u0I.mjs → praxisui-table-praxisui-table-CunEk0vb.mjs} +1667 -457
- package/fesm2022/{praxisui-table-table-ai.adapter-BsUGcbAY.mjs → praxisui-table-table-ai.adapter-BvaMq2CS.mjs} +1 -1
- package/fesm2022/praxisui-table.mjs +1 -1
- package/package.json +10 -10
- package/src/lib/praxis-table.json-api.md +152 -139
- package/types/praxisui-table.d.ts +85 -19
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { firstValueFrom } from 'rxjs';
|
|
2
2
|
import { BaseAiAdapter, sanitizePraxisAssistantText, createComponentAuthoringContext } from '@praxisui/ai';
|
|
3
3
|
import { PRAXIS_GLOBAL_ACTION_CATALOG, deepMerge } from '@praxisui/core';
|
|
4
|
-
import { G as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, k as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, W as coerceTableComponentEditPlans, Y as compileTableComponentEditPlans, I as TASK_PRESETS, a1 as getTableComponentEditPlanCapabilities, y as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, w as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, z as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, H as TABLE_COMPONENT_EDIT_PLAN_VERSION, x as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, E as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-
|
|
4
|
+
import { G as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, k as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, W as coerceTableComponentEditPlans, Y as compileTableComponentEditPlans, I as TASK_PRESETS, a1 as getTableComponentEditPlanCapabilities, y as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, w as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, z as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, H as TABLE_COMPONENT_EDIT_PLAN_VERSION, x as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, E as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-CunEk0vb.mjs';
|
|
5
5
|
|
|
6
6
|
const TABLE_COMPONENT_CONTEXT_PACK = {
|
|
7
7
|
version: 'v1',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { A as AnalyticsTableConfigAdapterService, a as AnalyticsTableContractService, b as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, c as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, d as ColumnsConfigEditorComponent, D as DATE_PRESETS, e as DataFormatterComponent, f as DataFormattingService, F as FORMULA_TEMPLATES, g as FilterConfigService, h as FilterSettingsComponent, i as FormulaGeneratorService, J as JsonConfigEditorComponent, M as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, P as PERCENTAGE_PRESETS, j as PRAXIS_FILTER_COMPONENT_METADATA, k as PRAXIS_TABLE_AUTHORING_MANIFEST, l as PRAXIS_TABLE_COMPONENT_METADATA, m as PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, n as PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, o as PraxisFilter, p as PraxisFilterWidgetConfigEditor, q as PraxisTable, r as PraxisTableConfigEditor, s as PraxisTableInlineAuthoringEditorComponent, t as PraxisTableToolbar, u as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, v as TABLE_COMPONENT_AI_CAPABILITIES, w as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, x as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, y as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, z as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, E as TABLE_COMPONENT_EDIT_PLAN_KIND, H as TABLE_COMPONENT_EDIT_PLAN_VERSION, I as TASK_PRESETS, K as TableDefaultsProvider, L as TableRulesEditorComponent, O as ToolbarActionsEditorComponent, V as ValueMappingEditorComponent, Q as VisualFormulaBuilderComponent, R as buildTableApplyPlan, U as coerceTableComponentEditPlan, W as coerceTableComponentEditPlans, X as compileTableComponentEditPlan, Y as compileTableComponentEditPlans, Z as createTableAuthoringDocument, _ as getActionId, $ as getEnum, a0 as getTableCapabilities, a1 as getTableComponentEditPlanCapabilities, a2 as isTableRendererSupportedByRichContentP0, a3 as mapTableRendererToRichContentP0, a4 as normalizeTableAuthoringDocument, a5 as parseLegacyOrTableDocument, a6 as providePraxisFilterMetadata, a7 as providePraxisTableMetadata, a8 as providePraxisTableToolbarAppearance, a9 as serializeTableAuthoringDocument, aa as toCanonicalTableConfig, ab as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-
|
|
1
|
+
export { A as AnalyticsTableConfigAdapterService, a as AnalyticsTableContractService, b as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, c as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, d as ColumnsConfigEditorComponent, D as DATE_PRESETS, e as DataFormatterComponent, f as DataFormattingService, F as FORMULA_TEMPLATES, g as FilterConfigService, h as FilterSettingsComponent, i as FormulaGeneratorService, J as JsonConfigEditorComponent, M as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, P as PERCENTAGE_PRESETS, j as PRAXIS_FILTER_COMPONENT_METADATA, k as PRAXIS_TABLE_AUTHORING_MANIFEST, l as PRAXIS_TABLE_COMPONENT_METADATA, m as PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, n as PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, o as PraxisFilter, p as PraxisFilterWidgetConfigEditor, q as PraxisTable, r as PraxisTableConfigEditor, s as PraxisTableInlineAuthoringEditorComponent, t as PraxisTableToolbar, u as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, v as TABLE_COMPONENT_AI_CAPABILITIES, w as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, x as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, y as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, z as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, E as TABLE_COMPONENT_EDIT_PLAN_KIND, H as TABLE_COMPONENT_EDIT_PLAN_VERSION, I as TASK_PRESETS, K as TableDefaultsProvider, L as TableRulesEditorComponent, O as ToolbarActionsEditorComponent, V as ValueMappingEditorComponent, Q as VisualFormulaBuilderComponent, R as buildTableApplyPlan, U as coerceTableComponentEditPlan, W as coerceTableComponentEditPlans, X as compileTableComponentEditPlan, Y as compileTableComponentEditPlans, Z as createTableAuthoringDocument, _ as getActionId, $ as getEnum, a0 as getTableCapabilities, a1 as getTableComponentEditPlanCapabilities, a2 as isTableRendererSupportedByRichContentP0, a3 as mapTableRendererToRichContentP0, a4 as normalizeTableAuthoringDocument, a5 as parseLegacyOrTableDocument, a6 as providePraxisFilterMetadata, a7 as providePraxisTableMetadata, a8 as providePraxisTableToolbarAppearance, a9 as serializeTableAuthoringDocument, aa as toCanonicalTableConfig, ab as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-CunEk0vb.mjs';
|
package/package.json
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/table",
|
|
3
|
-
"version": "8.0.0-beta.
|
|
3
|
+
"version": "8.0.0-beta.105",
|
|
4
4
|
"description": "Advanced data table for Angular (Praxis UI) with editing, filtering, sorting, virtualization, and settings panel integration.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^21.0.0",
|
|
7
7
|
"@angular/core": "^21.0.0",
|
|
8
|
-
"@praxisui/ai": "^8.0.0-beta.
|
|
9
|
-
"@praxisui/core": "^8.0.0-beta.
|
|
10
|
-
"@praxisui/dynamic-fields": "^8.0.0-beta.
|
|
11
|
-
"@praxisui/dynamic-form": "^8.0.0-beta.
|
|
12
|
-
"@praxisui/metadata-editor": "^8.0.0-beta.
|
|
13
|
-
"@praxisui/rich-content": "^8.0.0-beta.
|
|
14
|
-
"@praxisui/settings-panel": "^8.0.0-beta.
|
|
15
|
-
"@praxisui/table-rule-builder": "^8.0.0-beta.
|
|
8
|
+
"@praxisui/ai": "^8.0.0-beta.105",
|
|
9
|
+
"@praxisui/core": "^8.0.0-beta.105",
|
|
10
|
+
"@praxisui/dynamic-fields": "^8.0.0-beta.105",
|
|
11
|
+
"@praxisui/dynamic-form": "^8.0.0-beta.105",
|
|
12
|
+
"@praxisui/metadata-editor": "^8.0.0-beta.105",
|
|
13
|
+
"@praxisui/rich-content": "^8.0.0-beta.105",
|
|
14
|
+
"@praxisui/settings-panel": "^8.0.0-beta.105",
|
|
15
|
+
"@praxisui/table-rule-builder": "^8.0.0-beta.105",
|
|
16
16
|
"@angular/cdk": "^21.0.0",
|
|
17
17
|
"@angular/forms": "^21.0.0",
|
|
18
18
|
"@angular/material": "^21.0.0",
|
|
19
19
|
"@angular/router": "^21.0.0",
|
|
20
|
-
"@praxisui/dialog": "^8.0.0-beta.
|
|
20
|
+
"@praxisui/dialog": "^8.0.0-beta.105",
|
|
21
21
|
"rxjs": "~7.8.0"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
@@ -96,7 +96,7 @@ Este documento e a referencia canonica da API JSON de praxis-table.
|
|
|
96
96
|
|
|
97
97
|
- `config.toolbar.columnsVisibility.enabled` controla a exibição do botão de visibilidade de colunas na barra de ferramentas.
|
|
98
98
|
- Por padrão, o botão de visibilidade rápida de colunas estará habilitado caso a toolbar esteja visível.
|
|
99
|
-
- **Guardrail de UX**: O último
|
|
99
|
+
- **Guardrail de UX**: O último controle ativo no dropdown de colunas é automaticamente desabilitado quando apenas 1 coluna permanece visível, para impedir que o usuário oculte todas as colunas de dados da tabela.
|
|
100
100
|
- A desativação rápida de colunas reflete instantaneamente no layout visual (`displayedColumns`) e emite o evento `configChange`.
|
|
101
101
|
|
|
102
102
|
> [!WARNING]
|
|
@@ -341,7 +341,7 @@ Este arquivo foi adaptado para o padrao canonico atual sem remover conteudo tecn
|
|
|
341
341
|
- O bloco `toolbar` continua parte do contrato público principal.
|
|
342
342
|
- Use `toolbar.actions[]` para quick actions e `toolbar.search` para busca quando o host não injeta shell própria.
|
|
343
343
|
- Use `toolbar.appearance` para personalizar o chrome da toolbar por contrato governado. O runtime materializa `variant`, `density`, `shape`, `divider` e `tokens` como classes e CSS custom properties públicas; o host pode trocar aparência sem redefinir intenção, capability ou roteamento.
|
|
344
|
-
- Tokens públicos suportados em `toolbar.appearance.tokens`: `bg`, `fg`, `borderColor`, `borderWidth`, `radius`, `shadow`, `paddingBlock`, `paddingInline`, `minHeight`, `gap`, `actionsGap`, `dividerColor`, `actionSize`, `actionRadius`, `actionBg`, `actionFg`, `actionHoverBg`, `actionActiveBg`, `actionFocusRing`, `aiAccentColor` e `
|
|
344
|
+
- Tokens públicos suportados em `toolbar.appearance.tokens`: `bg`, `fg`, `borderColor`, `borderWidth`, `radius`, `shadow`, `paddingBlock`, `paddingInline`, `minHeight`, `gap`, `actionsGap`, `dividerColor`, `actionSize`, `actionRadius`, `actionBg`, `actionFg`, `actionHoverBg`, `actionActiveBg`, `actionFocusRing`, `aiAccentColor`, `statusFg`, `titleFg`, `subtitleFg`, `iconFg`, `titleFontSize`, `subtitleFontSize`, `titleFontWeight`, `identityGap`, `identityFilterGap`, `identityMinHeight`, `identityMarginBottom`, `identityIconSize` e `identityIconRadius`.
|
|
345
345
|
- Para localizar paths específicos de toolbar, complemente a leitura com o `Appendix: JSON path index`.
|
|
346
346
|
|
|
347
347
|
### Messages contract
|
|
@@ -359,6 +359,7 @@ Este arquivo foi adaptado para o padrao canonico atual sem remover conteudo tecn
|
|
|
359
359
|
| `data` | `any[] \| null` | No | component-input | `dataSource.data = data` | Ativa caminho de dados locais. |
|
|
360
360
|
| `tableId` | `string` | Yes | component-input | trim + component key builder | Necessário para persistência/configuração por instância. |
|
|
361
361
|
| `componentInstanceId` | `string \| undefined` | No | component-input | component key scoping | Isola preferências por instância em mesma rota. |
|
|
362
|
+
| `configPersistenceStrategy` | `'local-first' \| 'input-first' \| 'volatile'` | No | component-input | default `local-first` | Controla a hidratação de preferências persistidas. `volatile` renderiza apenas por inputs/runtime e não consulta nem grava `ASYNC_CONFIG_STORAGE`, útil para surfaces executivas efêmeras abertas por `surface.open`. |
|
|
362
363
|
| `title` | `string` | No | component-input | host-surface passthrough | Título opcional consumido por superfícies auxiliares, quick connect e contextos host. |
|
|
363
364
|
| `subtitle` | `string` | No | component-input | host-surface passthrough | Subtítulo opcional para contexto operacional do host. |
|
|
364
365
|
| `icon` | `string` | No | component-input | host-surface passthrough | Ícone opcional usado em affordances auxiliares do runtime. |
|
|
@@ -434,7 +435,7 @@ degraded filter.
|
|
|
434
435
|
|
|
435
436
|
| Channel | Direction | Contract | Failure mode | Notes |
|
|
436
437
|
| --- | --- | --- | --- | --- |
|
|
437
|
-
| `ASYNC_CONFIG_STORAGE` | bidirectional | `loadConfig/saveConfig/clearConfig` | fail-open | Persistência de config e inputs por `tableId`/instância
|
|
438
|
+
| `ASYNC_CONFIG_STORAGE` | bidirectional | `loadConfig/saveConfig/clearConfig` | fail-open | Persistência de config e inputs por `tableId`/instância; não é acessado quando `configPersistenceStrategy='volatile'`. |
|
|
438
439
|
| `CONNECTION_STORAGE` | bidirectional | `loadConnection/saveConnection` | fail-open | Persistência de `resourcePath` para quick-connect. |
|
|
439
440
|
| `SettingsPanelService` | bidirectional | `open(...).applied$/saved$` | fail-open | Canal de edição em runtime (quick connect/editor). |
|
|
440
441
|
| `Global resolver: PAX_EXPANSION_DETAIL_RESOURCE_RESOLVER` | outbound call | function contract | fail-closed | Resolução externa de detail schema por `resource`. |
|
|
@@ -559,81 +560,79 @@ Referencia canonica da API JSON do `praxis-table`.
|
|
|
559
560
|
- **Deprecated**
|
|
560
561
|
|
|
561
562
|
### Overview
|
|
562
|
-
`praxis-table`
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
563
|
+
`praxis-table` é uma superfície operacional para dados corporativos. Com uma
|
|
564
|
+
declaração pequena, a aplicação consegue exibir dados reais, paginação, colunas,
|
|
565
|
+
filtros, ações, mensagens e regras visuais sem reconstruir a tela a cada novo
|
|
566
|
+
cenário. A primeira renderização pode nascer do recurso publicado pelo backend;
|
|
567
|
+
os refinamentos podem vir da aplicação, do editor visual ou das preferências
|
|
568
|
+
persistidas.
|
|
569
|
+
|
|
570
|
+
Em arquiteturas tradicionais, cada variação de colunas, ações e filtros costuma
|
|
571
|
+
virar uma nova camada de HTML, estado e condicionais. Aqui, a estratégia é
|
|
572
|
+
inverter esse custo: a mudança entra em uma configuração governada. Quando o
|
|
573
|
+
requisito muda, a experiência evolui sem transformar cada ajuste em uma nova
|
|
574
|
+
implementação de tabela.
|
|
574
575
|
|
|
575
576
|
Conceitos-chave:
|
|
576
577
|
|
|
577
|
-
-
|
|
578
|
-
-
|
|
579
|
-
-
|
|
580
|
-
|
|
581
|
-
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
-
|
|
592
|
-
-
|
|
593
|
-
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
- **
|
|
607
|
-
- **
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
578
|
+
- Uma declaração publicada define estrutura, dados e experiência.
|
|
579
|
+
- O backend pode descrever o recurso para que a tabela derive a primeira leitura.
|
|
580
|
+
- Dados, apresentação e interação ficam separados, mas evoluem no mesmo contrato.
|
|
581
|
+
- Regras condicionais governam estilos, visibilidade e renderização sem espalhar decisões pelo template.
|
|
582
|
+
- Fluxos remotos ou locais preservam paginação, ordenação e filtros de forma previsível.
|
|
583
|
+
|
|
584
|
+
#### Por que este componente é diferente
|
|
585
|
+
O valor da Table aparece quando a tela deixa de ser um template isolado e passa
|
|
586
|
+
a ser uma superfície governada por contrato. Em tabelas convencionais, cada
|
|
587
|
+
mudança de coluna, filtro, ação ou visual pede código e template; aqui, essas
|
|
588
|
+
mudanças entram em uma configuração declarativa e o componente responde de forma consistente:
|
|
589
|
+
|
|
590
|
+
- A configuração da tabela governa visual, dados e regras sem espalhar decisões pelo template.
|
|
591
|
+
- Dados remotos e dados locais têm estratégias próprias, com impacto claro na experiência.
|
|
592
|
+
- O editor visual convive com a tabela renderizada para permitir autoria governada.
|
|
593
|
+
- Regras condicionais cobrem destaque visual, renderização e comportamento sem duplicar tela.
|
|
594
|
+
- Identidade estável permite persistir preferências e reconciliar instâncias com segurança.
|
|
595
|
+
|
|
596
|
+
O resultado é um componente "plataforma": cada bloco do contrato vira um módulo
|
|
597
|
+
do componente, e as interações entre esses módulos permitem evoluir experiências
|
|
598
|
+
corporativas sem transformar cada nova regra em uma nova implementação de tela.
|
|
599
|
+
|
|
600
|
+
#### Valor em uma leitura rápida
|
|
601
|
+
Uma tabela que vira plataforma. `praxis-table` transforma decisões declarativas
|
|
602
|
+
em experiência: colunas, ações, filtros, mensagens e regras vivem no mesmo
|
|
603
|
+
contrato operacional, pronto para dados remotos ou locais, sem retrabalho de
|
|
604
|
+
template.
|
|
605
|
+
|
|
606
|
+
- **Entrega rápida**: ajuste comportamento e visual por configuração governada.
|
|
607
|
+
- **Padrão de UX**: regras, ações e mensagens consistentes entre telas.
|
|
608
|
+
- **Escalável**: regras e comandos estruturados permitem crescer a complexidade sem criar forks de tela.
|
|
609
|
+
|
|
610
|
+
#### Menos código de tela, mais contrato
|
|
611
|
+
Uma tabela que vira plataforma. Em vez de programar cada capacidade de tabela
|
|
612
|
+
do zero, você ativa recursos nativos via contrato:
|
|
613
|
+
|
|
614
|
+
- **Iteração sem código de tela**: adicionar botões, trocar densidade, ajustar
|
|
615
|
+
colunas, filtros e diálogos por configuração governada.
|
|
616
|
+
- **Lógica desacoplada**: destaque de linha, visibilidade de ação
|
|
617
|
+
e variação visual ficam em regras condicionais, não em `*ngIf` espalhado.
|
|
618
|
+
- **Ecossistema embutido**: paginação remota, virtual scroll, reorder de colunas,
|
|
619
|
+
exportação e `praxis-filter` avançado como capacidades prontas.
|
|
620
|
+
- **Eventos estruturados**: ações de linha, lote, toolbar, exportação e reordenação
|
|
621
|
+
entregam intenções claras para a aplicação.
|
|
622
|
+
- **Governança de estado**: identidade estável organiza persistência,
|
|
623
|
+
reconciliação e isolamento de instância.
|
|
624
|
+
|
|
625
|
+
#### Receitas de impacto
|
|
626
|
+
As receitas abaixo mostram capacidades que normalmente exigiriam código de tela,
|
|
627
|
+
mas que a Table materializa a partir do contrato. Elas funcionam como portas de
|
|
628
|
+
entrada para o leitor entender o valor antes de mergulhar na matriz completa da
|
|
629
|
+
API.
|
|
629
630
|
|
|
630
631
|
1. **Dashboard financeiro**: prova `computed` + densidade + regra visual.
|
|
631
632
|
2. **Micro-layout compose (CRM)**: prova poder de layout sem componente custom.
|
|
632
|
-
3. **Backoffice seguro**: prova bulk com travas de
|
|
633
|
+
3. **Backoffice seguro**: prova bulk com travas de negócio e confirmação.
|
|
633
634
|
4. **Rastreador de SLA**: prova de regra temporal em JSON Logic + alerta visual declarativo.
|
|
634
635
|
|
|
635
|
-
Snippets curtos (prontos para cards de overview):
|
|
636
|
-
|
|
637
636
|
**Receita 1 - Dashboard Financeiro**
|
|
638
637
|
```json
|
|
639
638
|
{
|
|
@@ -679,7 +678,7 @@ Snippets curtos (prontos para cards de overview):
|
|
|
679
678
|
}
|
|
680
679
|
```
|
|
681
680
|
|
|
682
|
-
**Receita 3 - Backoffice Seguro (
|
|
681
|
+
**Receita 3 - Backoffice Seguro (ações em lote)**
|
|
683
682
|
```json
|
|
684
683
|
{
|
|
685
684
|
"actions": {
|
|
@@ -720,10 +719,10 @@ Snippets curtos (prontos para cards de overview):
|
|
|
720
719
|
|
|
721
720
|
### Internal route global action
|
|
722
721
|
|
|
723
|
-
|
|
722
|
+
Configurações novas devem persistir a integração em `effects[].globalAction`. O runtime e os validadores também
|
|
724
723
|
leem `globalAction` plano para documentos existentes, mas editores e AI manifest devem tratar esse campo como
|
|
725
724
|
compatibilidade. O adapter da Table preserva `payload`/`payloadExpr` ao reabrir e re-selecionar a mesma `actionId`,
|
|
726
|
-
e limpa payloads ao trocar de global action para evitar
|
|
725
|
+
e limpa payloads ao trocar de global action para evitar semântica cruzada.
|
|
727
726
|
|
|
728
727
|
```json
|
|
729
728
|
{
|
|
@@ -779,106 +778,104 @@ e limpa payloads ao trocar de global action para evitar semantica cruzada.
|
|
|
779
778
|
{ "!==": [{ "var": "status" }, "RESOLVIDO"] }
|
|
780
779
|
]
|
|
781
780
|
},
|
|
782
|
-
"tooltip": { "text": "SLA violado:
|
|
781
|
+
"tooltip": { "text": "SLA violado: ação imediata necessária", "position": "top" },
|
|
783
782
|
"animation": { "preset": "warning-attention", "repeat": 3 }
|
|
784
783
|
}
|
|
785
784
|
]
|
|
786
785
|
}
|
|
787
786
|
```
|
|
788
787
|
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
788
|
+
Essas quatro receitas cobrem o primeiro impacto. Cenários mais longos, como
|
|
789
|
+
filtros avançados, logs massivos e overrides CRUD, pertencem à trilha de exemplos
|
|
790
|
+
completos para não diluir a tese principal do runtime.
|
|
792
791
|
|
|
793
792
|
#### Dominando a cauda longa das interfaces
|
|
794
|
-
Em sistemas corporativos e
|
|
795
|
-
raramente
|
|
796
|
-
requisitos de UI:
|
|
797
|
-
|
|
793
|
+
Em sistemas corporativos e aplicações complexas, o esforço de engenharia
|
|
794
|
+
raramente está nos fluxos principais. O custo aparece na cauda longa dos
|
|
795
|
+
requisitos de UI: variações de regras condicionais, formatações específicas,
|
|
796
|
+
mensagens baseadas em estado e permissões de ação que mudam por linha, perfil
|
|
797
|
+
ou contexto operacional.
|
|
798
798
|
|
|
799
799
|
`praxis-table` foi desenhado para reduzir drasticamente esse custo de
|
|
800
|
-
|
|
801
|
-
move
|
|
802
|
-
|
|
803
|
-
|
|
800
|
+
manutenção. Em vez de espalhar condicionais pelo código da tela, o componente
|
|
801
|
+
move essas decisões para uma configuração governada. Quem define a experiência
|
|
802
|
+
ganha controle fino sobre leitura visual, ações, filtros e mensagens, com mais
|
|
803
|
+
autonomia para produto e menos acoplamento no frontend.
|
|
804
804
|
|
|
805
|
-
Impacto
|
|
805
|
+
Impacto prático:
|
|
806
806
|
|
|
807
|
-
- Menos
|
|
808
|
-
- Mais autonomia para evoluir UX por
|
|
809
|
-
- Menor risco de
|
|
807
|
+
- Menos ramificação de código no frontend.
|
|
808
|
+
- Mais autonomia para evoluir UX por configuração.
|
|
809
|
+
- Menor risco de regressão ao escalar regras condicionais.
|
|
810
810
|
|
|
811
|
-
#### Mapa de contrato e
|
|
812
|
-
O contrato governa 6
|
|
811
|
+
#### Mapa de contrato e superfícies
|
|
812
|
+
O contrato governa 6 áreas principais:
|
|
813
813
|
|
|
814
|
-
|
|
|
814
|
+
| Área | O que governa | Impacto na experiência |
|
|
815
815
|
| --- | --- | --- |
|
|
816
|
-
|
|
|
817
|
-
| Dados e
|
|
818
|
-
| Regras condicionais |
|
|
819
|
-
|
|
|
820
|
-
|
|
|
821
|
-
| Eventos de
|
|
816
|
+
| Estrutura e leitura | Colunas, aparência, comportamento, mensagens e localização | Define densidade, textos, ordenação e comportamento base da tabela. |
|
|
817
|
+
| Dados e operação | Recurso remoto, dados locais, paginação, filtros e ordenação | Decide como a tabela busca, pagina, filtra e apresenta os registros. |
|
|
818
|
+
| Regras condicionais | Regras de destaque, visibilidade e variação visual | Transforma estado operacional em sinais visuais consistentes. |
|
|
819
|
+
| Ações e jornada | Toolbar, ações de linha, ações em lote, diálogos e exportação | Materializa comandos e confirmações sem duplicar fluxo em cada tela. |
|
|
820
|
+
| Integração externa | Identidade da instância, preferências e reconciliação | Preserva persistência e isolamento entre telas, usuários e contextos. |
|
|
821
|
+
| Eventos de saída | Intenções estruturadas do usuário | Entrega comandos claros para a aplicação executar navegação, auditoria e regra de negócio. |
|
|
822
822
|
|
|
823
|
-
A API detalha cada
|
|
824
|
-
|
|
823
|
+
A API detalha cada área e explicita onde o comportamento está ativo, parcial,
|
|
824
|
+
declarado ou dependente de schema.
|
|
825
825
|
|
|
826
826
|
#### Arquitetura orientada a contrato (como funciona)
|
|
827
|
-
O componente separa estritamente dados,
|
|
828
|
-
dois eixos principais: motor interno da tabela e
|
|
827
|
+
O componente separa estritamente dados, apresentação e interação, operando em
|
|
828
|
+
dois eixos principais: motor interno da tabela e integrações externas.
|
|
829
829
|
|
|
830
|
-
Fluxo simplificado de
|
|
830
|
+
Fluxo simplificado de execução:
|
|
831
831
|
|
|
832
|
-
1. **
|
|
833
|
-
|
|
834
|
-
2. **Montagem da
|
|
835
|
-
comportamentos visuais definidos
|
|
832
|
+
1. **Interpretação da configuração**: resolve se a tabela usará dados remotos,
|
|
833
|
+
dados locais ou estado vazio.
|
|
834
|
+
2. **Montagem da superfície**: renderiza colunas, toolbar, filtros e
|
|
835
|
+
comportamentos visuais definidos pela configuração.
|
|
836
836
|
3. **Pipeline de dados + motor de regras**:
|
|
837
|
-
- remoto:
|
|
838
|
-
- local: aplica
|
|
839
|
-
- regras:
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
`toolbarAction`, etc.) para que a aplicacao hospedeira reaja as intencoes do usuario.
|
|
837
|
+
- remoto: consulta a operação publicada pelo backend;
|
|
838
|
+
- local: aplica paginação, ordenação e filtros no conjunto recebido;
|
|
839
|
+
- regras: avalia destaque visual, visibilidade de ações e variações por linha.
|
|
840
|
+
4. **Ciclo de eventos**: emite ações estruturadas para que a aplicação reaja às
|
|
841
|
+
intenções do usuário.
|
|
843
842
|
|
|
844
|
-
####
|
|
845
|
-
`praxis-table`
|
|
846
|
-
|
|
843
|
+
#### Integração com ecossistema Praxis (frontend e backend)
|
|
844
|
+
`praxis-table` compõe o ecossistema Praxis de ponta a ponta. O mapa de
|
|
845
|
+
integração cobre frontend, contratos e backend.
|
|
847
846
|
|
|
848
847
|
Frontend (UI):
|
|
849
848
|
|
|
850
|
-
| Componente | Papel na
|
|
849
|
+
| Componente | Papel na experiência | Como se conecta |
|
|
851
850
|
| --- | --- | --- |
|
|
852
|
-
| `praxis-table-toolbar` | Barra superior/inferior com
|
|
853
|
-
| `praxis-filter` | Filtro
|
|
854
|
-
| `praxis-empty-state-card` | Estado inicial quando
|
|
855
|
-
| `PraxisAiAssistantShellComponent` | Copiloto semântico opcional nos slots de toolbar | habilitado pelo runtime com turn orchestration e contexto seguro; ao minimizar, a
|
|
856
|
-
| Angular Material + CDK | Base de tabela, menus,
|
|
851
|
+
| `praxis-table-toolbar` | Barra superior/inferior com ações, bulk e export | `toolbar`, `actions`, `export`, `behavior.filtering.*` |
|
|
852
|
+
| `praxis-filter` | Filtro avançado acoplado à toolbar | `behavior.filtering.advancedFilters.*`, `behavior.filtering.debounceTime`, `resourcePath` |
|
|
853
|
+
| `praxis-empty-state-card` | Estado inicial quando não há conexão remota | exibido quando não há `resourcePath` válido |
|
|
854
|
+
| `PraxisAiAssistantShellComponent` | Copiloto semântico opcional nos slots de toolbar | habilitado pelo runtime com turn orchestration e contexto seguro; ao minimizar, a sessão fica no registry com `presence: "origin-anchor"` e o affordance volta ao gatilho da tabela (não exposto no JSON) |
|
|
855
|
+
| Angular Material + CDK | Base de tabela, menus, seleção e virtual scroll | `behavior.pagination.*`, `behavior.selection.*`, `behavior.virtualization.*`, `appearance.spacing.*` |
|
|
857
856
|
|
|
858
857
|
Backend e contratos:
|
|
859
858
|
|
|
860
|
-
| Componente | Papel na
|
|
859
|
+
| Componente | Papel na experiência | Como se conecta |
|
|
861
860
|
| --- | --- | --- |
|
|
862
|
-
| `praxis-metadata-starter` | Publica OpenAPI + `x-ui` e o endpoint `GET /schemas/filtered` | A tabela deriva colunas, filtros e
|
|
861
|
+
| `praxis-metadata-starter` | Publica OpenAPI + `x-ui` e o endpoint `GET /schemas/filtered` | A tabela deriva colunas, filtros e validações a partir do contrato |
|
|
863
862
|
| `praxis-api-quickstart` | Exemplo pronto com recursos, filtros e CRUD padronizados | Demonstra o fluxo completo com `resourcePath` apontando para a API |
|
|
864
863
|
|
|
865
|
-
No modo de
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
`messages-localization-editor`, etc.) para compor o JSON com consistencia e evitar
|
|
870
|
-
divergencia entre UI e contrato.
|
|
864
|
+
No modo de edição, quando a aplicação habilita customização, a tabela exibe o
|
|
865
|
+
editor visual para ajustar colunas, comportamento, aparência e regras sem editar
|
|
866
|
+
código de tela. Esse editor compõe a configuração com consistência e evita
|
|
867
|
+
divergência entre o que o usuário authora e o que a tabela renderiza.
|
|
871
868
|
|
|
872
|
-
#### Checklist de
|
|
873
|
-
Antes de plugar a tabela em
|
|
869
|
+
#### Checklist de integração (pre-flight)
|
|
870
|
+
Antes de plugar a tabela em uma aplicação, valide estes pontos:
|
|
874
871
|
|
|
875
|
-
-
|
|
876
|
-
-
|
|
877
|
-
-
|
|
878
|
-
-
|
|
879
|
-
- Regras condicionais
|
|
880
|
-
-
|
|
881
|
-
|
|
872
|
+
- A instância tem identidade estável para persistir preferências sem colisão.
|
|
873
|
+
- O modo de dados está decidido: recurso remoto ou conjunto local informado pela aplicação.
|
|
874
|
+
- As colunas descrevem o conjunto de dados real e usam apresentação coerente.
|
|
875
|
+
- Ações de linha, lote e toolbar estão alinhadas com os comandos da aplicação.
|
|
876
|
+
- Regras condicionais têm fonte clara e não ficam espalhadas pelo template.
|
|
877
|
+
- Aparência, mensagens e localização foram revisadas para evitar inconsistências
|
|
878
|
+
entre padrões globais e comportamento esperado.
|
|
882
879
|
|
|
883
880
|
### Top-level contract
|
|
884
881
|
|
|
@@ -1170,7 +1167,23 @@ A superficie usa `horizontalScroll` com classes:
|
|
|
1170
1167
|
| `columns[]` | `TableColumnConfig[]` | Yes | `[]` | Active | Definicao de colunas, renderers e regras de exibicao. |
|
|
1171
1168
|
| `behavior` | `TableBehaviorConfig` | No | defaults do runtime | Partial | Inclui paginacao, filtro, selecao e expansao por blocos. |
|
|
1172
1169
|
| `toolbar.actions[]` | `ToolbarActionConfig[]` | No | `[]` | Partial | Acoes de toolbar com roteamento para `toolbarAction` e `bulkAction`. |
|
|
1170
|
+
| `toolbar.title` | `string` | No | `undefined` | Active | Titulo renderizado na regiao de identidade da toolbar principal, antes de filtros e acoes. |
|
|
1171
|
+
| `toolbar.subtitle` | `string` | No | `undefined` | Active | Texto auxiliar renderizado abaixo do titulo quando houver espaco. |
|
|
1172
|
+
| `toolbar.icon` | `string` | No | `undefined` | Active | Icone semantico renderizado junto ao titulo da toolbar via `PraxisIconDirective`. |
|
|
1173
|
+
| `toolbar.textAlign` | `'start' \| 'center' \| 'end'` | No | `'start'` | Active | Alinhamento textual do bloco de identidade da toolbar. |
|
|
1173
1174
|
| `toolbar.appearance` | `TableToolbarAppearanceConfig` | No | fallback M3 | Active | Chrome visual governado da toolbar; tokens viram `--p-table-toolbar-*` no runtime. |
|
|
1175
|
+
| `toolbar.appearance.tokens.titleFg` | `string` | No | fallback M3 | Active | Cor do titulo na identidade da toolbar; use tokens semanticos do host para suportar tema claro/escuro. |
|
|
1176
|
+
| `toolbar.appearance.tokens.subtitleFg` | `string` | No | fallback M3 | Active | Cor do subtitulo na identidade da toolbar. |
|
|
1177
|
+
| `toolbar.appearance.tokens.iconFg` | `string` | No | fallback M3 | Active | Cor do icone da identidade; o fundo tonal e derivado dessa cor para manter contraste suave. |
|
|
1178
|
+
| `toolbar.appearance.tokens.titleFontSize` | `string` | No | `14px` | Active | Tamanho tipografico do titulo da identidade. |
|
|
1179
|
+
| `toolbar.appearance.tokens.subtitleFontSize` | `string` | No | `11.5px` | Active | Tamanho tipografico do subtitulo da identidade. |
|
|
1180
|
+
| `toolbar.appearance.tokens.titleFontWeight` | `string` | No | `700` | Active | Peso tipografico do titulo da identidade. |
|
|
1181
|
+
| `toolbar.appearance.tokens.identityGap` | `string` | No | `8px` | Active | Espaco entre icone e copy da identidade da toolbar. |
|
|
1182
|
+
| `toolbar.appearance.tokens.identityFilterGap` | `string` | No | `8px` | Active | Respiro vertical entre identidade e filtros/controles quando a identidade ocupa linha propria. |
|
|
1183
|
+
| `toolbar.appearance.tokens.identityMinHeight` | `string` | No | `30px` | Active | Altura minima do bloco de identidade da toolbar. |
|
|
1184
|
+
| `toolbar.appearance.tokens.identityMarginBottom` | `string` | No | `2px` | Active | Espacamento inferior complementar da identidade da toolbar. |
|
|
1185
|
+
| `toolbar.appearance.tokens.identityIconSize` | `string` | No | `28px` | Active | Tamanho do container do icone da identidade. |
|
|
1186
|
+
| `toolbar.appearance.tokens.identityIconRadius` | `string` | No | `8px` | Active | Raio do container do icone da identidade. |
|
|
1174
1187
|
| `toolbar.columnsVisibility` | `object` | No | habilitado se a toolbar estiver ativa | Active | Controle rápido de visibilidade de colunas no toolbar (dropdown). |
|
|
1175
1188
|
| `messages` | `TableMessagesConfig` | No | defaults internos | Partial | Overrides de i18n e mensagens operacionais. |
|
|
1176
1189
|
| `data` | `TableDataConfig` | No | modo local/remoto autodetectado | Partial | Integra origem local ou remota conforme `resourcePath`/inputs. |
|