@praxisui/table 9.0.4-rc.9 → 9.0.5-rc.1

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.
@@ -1,6 +1,6 @@
1
1
  import { Observable, firstValueFrom } from 'rxjs';
2
2
  import { withAuthoringScopePolicy } from '@praxisui/ai';
3
- import { ad as setTableActionGlobalActionRef } from './praxisui-table-praxisui-table-yvAGe6_R.mjs';
3
+ import { ad as setTableActionGlobalActionRef } from './praxisui-table-praxisui-table-JEy1jghM.mjs';
4
4
 
5
5
  class TableAgenticAuthoringTurnFlow {
6
6
  adapter;
@@ -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 { I as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, l as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, Z as coerceTableComponentEditPlans, $ as compileTableComponentEditPlans, L as TASK_PRESETS, a4 as getTableComponentEditPlanCapabilities, E as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, y as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, G as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, K as TABLE_COMPONENT_EDIT_PLAN_VERSION, z as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, H as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-yvAGe6_R.mjs';
4
+ import { I as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, l as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, Z as coerceTableComponentEditPlans, $ as compileTableComponentEditPlans, L as TASK_PRESETS, a4 as getTableComponentEditPlanCapabilities, E as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, y as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, G as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, K as TABLE_COMPONENT_EDIT_PLAN_VERSION, z as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, H as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-JEy1jghM.mjs';
5
5
 
6
6
  const TABLE_ROW_EXPRESSION_CONTEXT_OPTION = {
7
7
  mode: 'expression',
@@ -1 +1 @@
1
- export { A as ANALYTICS_TABLE_ROW_KEY_FIELD, a as AnalyticsTableConfigAdapterService, b as AnalyticsTableContractService, c as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, d as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, e as ColumnsConfigEditorComponent, D as DATE_PRESETS, f as DataFormatterComponent, g as DataFormattingService, F as FORMULA_TEMPLATES, h as FilterConfigService, i as FilterSettingsComponent, j as FormulaGeneratorService, J as JsonConfigEditorComponent, M as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, P as PERCENTAGE_PRESETS, k as PRAXIS_FILTER_COMPONENT_METADATA, l as PRAXIS_TABLE_AUTHORING_MANIFEST, m as PRAXIS_TABLE_COMPONENT_METADATA, n as PRAXIS_TABLE_TOOLBAR_APPEARANCE_PRESETS, o as PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, p as PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, q as PraxisFilter, r as PraxisFilterWidgetConfigEditor, s as PraxisTable, t as PraxisTableConfigEditor, u as PraxisTableInlineAuthoringEditorComponent, v as PraxisTableToolbar, w as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, x as TABLE_COMPONENT_AI_CAPABILITIES, y as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, z as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, E as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, G as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, H as TABLE_COMPONENT_EDIT_PLAN_KIND, K as TABLE_COMPONENT_EDIT_PLAN_VERSION, L as TASK_PRESETS, O as TableDefaultsProvider, Q as TableRulesEditorComponent, R as ToolbarActionsEditorComponent, V as ValueMappingEditorComponent, U as VisualFormulaBuilderComponent, W as analyticsComparisonMetricField, X as buildTableApplyPlan, Y as coerceTableComponentEditPlan, Z as coerceTableComponentEditPlans, _ as compileTableComponentEditPlan, $ as compileTableComponentEditPlans, a0 as createTableAuthoringDocument, a1 as getActionId, a2 as getEnum, a3 as getTableCapabilities, a4 as getTableComponentEditPlanCapabilities, a5 as isTableRendererSupportedByRichContentP0, a6 as mapTableRendererToRichContentP0, a7 as normalizeTableAuthoringDocument, a8 as parseLegacyOrTableDocument, a9 as providePraxisFilterMetadata, aa as providePraxisTableMetadata, ab as providePraxisTableToolbarAppearance, ac as serializeTableAuthoringDocument, ae as toCanonicalTableConfig, af as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-yvAGe6_R.mjs';
1
+ export { A as ANALYTICS_TABLE_ROW_KEY_FIELD, a as AnalyticsTableConfigAdapterService, b as AnalyticsTableContractService, c as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, d as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, e as ColumnsConfigEditorComponent, D as DATE_PRESETS, f as DataFormatterComponent, g as DataFormattingService, F as FORMULA_TEMPLATES, h as FilterConfigService, i as FilterSettingsComponent, j as FormulaGeneratorService, J as JsonConfigEditorComponent, M as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, P as PERCENTAGE_PRESETS, k as PRAXIS_FILTER_COMPONENT_METADATA, l as PRAXIS_TABLE_AUTHORING_MANIFEST, m as PRAXIS_TABLE_COMPONENT_METADATA, n as PRAXIS_TABLE_TOOLBAR_APPEARANCE_PRESETS, o as PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, p as PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, q as PraxisFilter, r as PraxisFilterWidgetConfigEditor, s as PraxisTable, t as PraxisTableConfigEditor, u as PraxisTableInlineAuthoringEditorComponent, v as PraxisTableToolbar, w as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, x as TABLE_COMPONENT_AI_CAPABILITIES, y as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, z as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, E as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, G as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, H as TABLE_COMPONENT_EDIT_PLAN_KIND, K as TABLE_COMPONENT_EDIT_PLAN_VERSION, L as TASK_PRESETS, O as TableDefaultsProvider, Q as TableRulesEditorComponent, R as ToolbarActionsEditorComponent, V as ValueMappingEditorComponent, U as VisualFormulaBuilderComponent, W as analyticsComparisonMetricField, X as buildTableApplyPlan, Y as coerceTableComponentEditPlan, Z as coerceTableComponentEditPlans, _ as compileTableComponentEditPlan, $ as compileTableComponentEditPlans, a0 as createTableAuthoringDocument, a1 as getActionId, a2 as getEnum, a3 as getTableCapabilities, a4 as getTableComponentEditPlanCapabilities, a5 as isTableRendererSupportedByRichContentP0, a6 as mapTableRendererToRichContentP0, a7 as normalizeTableAuthoringDocument, a8 as parseLegacyOrTableDocument, a9 as providePraxisFilterMetadata, aa as providePraxisTableMetadata, ab as providePraxisTableToolbarAppearance, ac as serializeTableAuthoringDocument, ae as toCanonicalTableConfig, af as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-JEy1jghM.mjs';
package/package.json CHANGED
@@ -1,24 +1,24 @@
1
1
  {
2
2
  "name": "@praxisui/table",
3
- "version": "9.0.4-rc.9",
3
+ "version": "9.0.5-rc.1",
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
8
  "@angular/platform-browser": "^21.0.0",
9
- "@praxisui/ai": "^9.0.4-rc.9",
10
- "@praxisui/core": "^9.0.4-rc.9",
11
- "@praxisui/dynamic-fields": "^9.0.4-rc.9",
12
- "@praxisui/dynamic-form": "^9.0.4-rc.9",
13
- "@praxisui/metadata-editor": "^9.0.4-rc.9",
14
- "@praxisui/rich-content": "^9.0.4-rc.9",
15
- "@praxisui/settings-panel": "^9.0.4-rc.9",
16
- "@praxisui/table-rule-builder": "^9.0.4-rc.9",
9
+ "@praxisui/ai": "^9.0.5-rc.1",
10
+ "@praxisui/core": "^9.0.5-rc.1",
11
+ "@praxisui/dynamic-fields": "^9.0.5-rc.1",
12
+ "@praxisui/dynamic-form": "^9.0.5-rc.1",
13
+ "@praxisui/metadata-editor": "^9.0.5-rc.1",
14
+ "@praxisui/rich-content": "^9.0.5-rc.1",
15
+ "@praxisui/settings-panel": "^9.0.5-rc.1",
16
+ "@praxisui/table-rule-builder": "^9.0.5-rc.1",
17
17
  "@angular/cdk": "^21.0.0",
18
18
  "@angular/forms": "^21.0.0",
19
19
  "@angular/material": "^21.0.0",
20
20
  "@angular/router": "^21.0.0",
21
- "@praxisui/dialog": "^9.0.4-rc.9",
21
+ "@praxisui/dialog": "^9.0.5-rc.1",
22
22
  "rxjs": "~7.8.0"
23
23
  },
24
24
  "dependencies": {
@@ -109,6 +109,14 @@ Este documento e a referencia canonica da API JSON de praxis-table.
109
109
  > [!WARNING]
110
110
  > **Segurança Corporativa em Cenários Corporativos**: A visibilidade de colunas via dropdown da toolbar é um recurso estritamente visual (layout de apresentação do lado do cliente). A ocultação de colunas **não** protege o dado sensível da transmissão de rede nem de inspeção técnica. Se determinados campos (ex: salários, senhas ou tokens) forem confidenciais para o nível de permissão do usuário atual, a restrição de dados deve ser realizada obrigatoriamente no lado do servidor (através da filtragem de propriedades nas APIs de CRUD e consulta), e nunca por meio de ocultação puramente visual na tabela.
111
111
 
112
+ ## Quick filters and density
113
+
114
+ - `config.toolbar.filters.quickFilters[]` materializa filtros rápidos alternáveis na toolbar. Cada item declara `id`, `label`, `filter` e `icon` opcional.
115
+ - O filtro rápido é combinado com os critérios já ativos. Ao desativá-lo, a tabela restaura os critérios anteriores sem perder o contexto do operador.
116
+ - Aplicar ou limpar o formulário de filtros avançados encerra o estado visual do filtro rápido para evitar dois controles aparentarem governar critérios divergentes.
117
+ - `config.toolbar.densityToggle.enabled` materializa o seletor de densidade. `values` pode restringir as opções entre `compact`, `comfortable` e `spacious`.
118
+ - A alteração de densidade atualiza `config.appearance.density` e emite `configChange`, permitindo ao host decidir se a preferência será apenas transitória ou persistida.
119
+
112
120
  ## Rich content convergence
113
121
 
114
122
  - `mapTableRendererToRichContentP0(...)` e a ponte publica e restrita entre a taxonomia atual de cell renderers do `praxis-table` e o vocabulario compartilhado `1.0` de rich content em `@praxisui/core`.
@@ -906,10 +914,50 @@ Antes de plugar a tabela em uma aplicação, valide estes pontos:
906
914
  ### Top-level contract
907
915
 
908
916
  O contrato principal e `TableConfig` (alias de `TableConfigV2`) com extensoes de runtime aceitas no JSON:
909
- - Base tipada: `meta`, `columns`, `behavior`, `appearance`, `toolbar`, `actions`, `export`, `messages`, `localization`.
917
+ - Base tipada: `meta`, `columns`, `columnProjection`, `behavior`, `appearance`, `toolbar`, `actions`, `export`, `messages`, `localization`.
910
918
  - Extensoes fora do tipo estrito: `dialogs.confirm.delete`, `rowConditionalRenderers[]`, aliases legados de `behavior.virtualScroll.*` e chaves legadas de header em `actions.row.*`.
911
919
  - Artefatos auxiliares fora do `TableConfig`: `crud-overrides:<componentKeyId>` e o envelope autorado `TableAuthoringDocument`, que carrega `bindings.resourcePath` e `bindings.horizontalScroll`. A chave operacional da linha pertence ao `TableConfig` em `config.meta.idField`.
912
920
 
921
+ #### Projeção governada de colunas
922
+
923
+ Quando `columnProjection.source = "schema"`, a lista estrutural de colunas é
924
+ materializada a partir de `/schemas/filtered`; a página declara apenas diferenças
925
+ em `columnProjection.overrides`, indexadas pelo nome canônico do campo:
926
+
927
+ ```json
928
+ {
929
+ "columns": [],
930
+ "columnProjection": {
931
+ "source": "schema",
932
+ "include": ["competencia", "salarioBruto", "salarioLiquido"],
933
+ "overrides": {
934
+ "salarioLiquido": {
935
+ "sticky": "end",
936
+ "width": "160px"
937
+ }
938
+ }
939
+ }
940
+ }
941
+ ```
942
+
943
+ O runtime reaplica os overrides após bootstrap e atualização do schema. Uma chave
944
+ desconhecida não cria coluna, e `field` não pode ser alterado pelo override. Este
945
+ contrato não cria “defaults da surface” paralelos: tipo, visibilidade, ordem e
946
+ apresentação continuam pertencendo ao schema canônico; a página conserva apenas
947
+ as decisões editoriais específicas da experiência.
948
+
949
+ Durante a renderização, `columns` contém a materialização completa somente em
950
+ memória. Ao salvar, aplicar ou emitir `configChange`, o runtime compacta essa
951
+ materialização novamente: a ordem e os campos canônicos formam `include`, as
952
+ diferenças formam `overrides` e colunas computadas/client-owned sem equivalente
953
+ no schema formam `additions`. Uma `addition` cujo `field` colida com o schema é
954
+ ignorada; ela não pode sombrear a identidade canônica.
955
+
956
+ `include` é uma allowlist ordenada. Em recursos financeiros, pessoais ou
957
+ regulados, ela deve ser preferida para impedir que um novo campo do schema passe
958
+ a integrar a experiência sem decisão editorial explícita. A ausência de
959
+ `include` significa “todos os campos que o backend marcou como visíveis”.
960
+
913
961
  ### Coverage matrix
914
962
 
915
963
  Resumo de cobertura por bloco:
@@ -1028,6 +1076,13 @@ A superficie usa `horizontalScroll` com classes:
1028
1076
  - `scroll-wrap`
1029
1077
  - `scroll-none`
1030
1078
 
1079
+ Em `scroll-auto`, o viewport e uma regiao focalizavel por teclado para que o scroll horizontal continue acessivel sem mouse, inclusive no Safari. O nome acessivel usa `accessibility.ariaLabels.scrollViewport`, depois `toolbar.title` e, por fim, o fallback localizado do runtime. `scroll-wrap` e `scroll-none` nao introduzem uma parada de tabulacao adicional.
1080
+
1081
+ #### Mobile card mode
1082
+ `appearance.responsive.mobile.cardMode: true` materializa cada linha **não virtualizada** como um card rotulado quando o viewport entra em `appearance.responsive.breakpoints.mobile`. A tabela continua sendo a fonte semântica e todos os campos permanecem no DOM; cada valor recebe o respectivo cabeçalho como rótulo visual.
1083
+
1084
+ `appearance.responsive.mobile.priorityColumns` é uma lista ordenada de `field`s que aparecem primeiro no card. Campos não prioritários continuam disponíveis abaixo deles; o runtime não oculta dados silenciosamente. Tabelas virtualizadas mantêm o modo de rolagem horizontal, pois um card pode ter altura variável.
1085
+
1031
1086
  #### Row/cell conditional styling
1032
1087
  - `rowConditionalStyles` aplica classes/estilo por linha.
1033
1088
  - `columns[].conditionalStyles` aplica por celula.
@@ -1228,6 +1283,8 @@ A superficie usa `horizontalScroll` com classes:
1228
1283
  | `toolbar.appearance.tokens.identityIconSize` | `string` | No | `28px` | Active | Tamanho do container do icone da identidade. |
1229
1284
  | `toolbar.appearance.tokens.identityIconRadius` | `string` | No | `8px` | Active | Raio do container do icone da identidade. |
1230
1285
  | `toolbar.columnsVisibility` | `object` | No | habilitado se a toolbar estiver ativa | Active | Controle rápido de visibilidade de colunas no toolbar (dropdown). |
1286
+ | `toolbar.filters.quickFilters[]` | `ToolbarFilterConfig[]` | No | `[]` | Active | Filtros rápidos governados, combinados com os critérios ativos e alternáveis pela toolbar. |
1287
+ | `toolbar.densityToggle` | `object` | No | desabilitado | Active | Seletor governado de densidade com opções `compact`, `comfortable` e `spacious`. |
1231
1288
  | `messages` | `TableMessagesConfig` | No | defaults internos | Partial | Overrides de i18n e mensagens operacionais. |
1232
1289
  | `data` | `TableDataConfig` | No | modo local/remoto autodetectado | Partial | Integra origem local ou remota conforme `resourcePath`/inputs. |
1233
1290
 
@@ -1,5 +1,5 @@
1
1
  import * as _praxisui_core from '@praxisui/core';
2
- import { TableToolbarAppearanceConfig, TableConfig, ToolbarActionEvent, PraxisExportScope, LoggerService, PraxisI18nService, TableToolbarAppearanceVariant, TableToolbarAppearanceDensity, TableToolbarAppearanceShape, TableToolbarAppearanceDivider, TableToolbarTokenName, ToolbarAction as ToolbarAction$1, GlobalConfigService, AsyncConfigStorage, LocalStorageConfigService, ApiUrlEntry, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, PraxisQueryFilterExpression, RecordRelatedSurfaceContextPack, PraxisResourceEvent, LoadingState, RestApiLinks, ColumnDefinition, RichBlockNode, ResourceCapabilityDigest, ConnectionStorage, LoadingOrchestrator, GlobalActionService, EnterpriseRuntimeContextService, PraxisLoadingRenderer, PraxisRuntimeComponentObservationEnvelope, TableDetailRichListNode, TableDetailCardGridNode, TableDetailCardGridCardNode, TableDetailTimelineNode, JsonLogicDataRecord, TableDetailListItemAction, TableDetailActionBarNode, TableDetailActionBarAction, TableDetailRefNode, TableDetailTemplateRefNode, TableDetailDiagramEmbedNode, TableDetailEmbedAction, GlobalActionRef, PraxisRuntimeGlobalActionEffect, ResourceActionCatalogItem, ResourceSurfaceCatalogItem, ResourceCapabilityOperation, JsonLogicExpression, PraxisPresentationVisualizationKind, PraxisTableCellVisualizationConstraint, GlobalActionCatalogEntry, IconPickerService, SurfaceOpenPayload, GlobalActionField, FieldDefinition, PraxisRuntimeConditionalEffectRule, PraxisJsonLogicService, TableConfigService, SettingsValueProvider as SettingsValueProvider$1, AnalyticsSchemaContractService, AnalyticsPresentationResolver, RichPresenterNode, RichComposeNode, ComponentAuthoringManifest, AiCapability, AiCapabilityCategory, AiValueKind, AiCapabilityCatalog } from '@praxisui/core';
2
+ import { TableToolbarAppearanceConfig, TableConfig, TableToolbarAppearanceDensity, ToolbarActionEvent, PraxisExportScope, LoggerService, PraxisI18nService, TableToolbarAppearanceVariant, TableToolbarAppearanceShape, TableToolbarAppearanceDivider, TableToolbarTokenName, ToolbarAction as ToolbarAction$1, GlobalConfigService, AsyncConfigStorage, LocalStorageConfigService, ApiUrlEntry, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, PraxisQueryFilterExpression, RecordRelatedSurfaceContextPack, PraxisResourceEvent, LoadingState, RestApiLinks, ColumnDefinition, RichBlockNode, ResourceCapabilityDigest, ConnectionStorage, LoadingOrchestrator, GlobalActionService, EnterpriseRuntimeContextService, PraxisLoadingRenderer, PraxisRuntimeComponentObservationEnvelope, TableDetailRichListNode, TableDetailCardGridNode, TableDetailCardGridCardNode, TableDetailTimelineNode, JsonLogicDataRecord, TableDetailListItemAction, TableDetailActionBarNode, TableDetailActionBarAction, TableDetailRefNode, TableDetailTemplateRefNode, TableDetailDiagramEmbedNode, TableDetailEmbedAction, GlobalActionRef, PraxisRuntimeGlobalActionEffect, ResourceActionCatalogItem, ResourceSurfaceCatalogItem, ResourceCapabilityOperation, JsonLogicExpression, PraxisPresentationVisualizationKind, PraxisTableCellVisualizationConstraint, GlobalActionCatalogEntry, IconPickerService, SurfaceOpenPayload, GlobalActionField, FieldDefinition, PraxisRuntimeConditionalEffectRule, PraxisJsonLogicService, TableConfigService, SettingsValueProvider as SettingsValueProvider$1, AnalyticsSchemaContractService, AnalyticsPresentationResolver, RichPresenterNode, RichComposeNode, ComponentAuthoringManifest, AiCapability, AiCapabilityCategory, AiValueKind, AiCapabilityCatalog } from '@praxisui/core';
3
3
  import * as i0 from '@angular/core';
4
4
  import { InjectionToken, OnDestroy, EventEmitter, ElementRef, Provider, OnInit, OnChanges, AfterViewInit, DoCheck, DestroyRef, ChangeDetectorRef, NgZone, SimpleChanges, ComponentRef, AfterContentInit, Injector, Type } from '@angular/core';
5
5
  import { ActivatedRoute } from '@angular/router';
@@ -8,6 +8,7 @@ import { MatTable, MatTableDataSource } from '@angular/material/table';
8
8
  import * as _angular_material_paginator from '@angular/material/paginator';
9
9
  import { MatPaginatorSelectConfig, MatPaginator, PageEvent } from '@angular/material/paginator';
10
10
  import { MatSort, Sort } from '@angular/material/sort';
11
+ import { MatMenuTrigger } from '@angular/material/menu';
11
12
  import { MatSnackBar } from '@angular/material/snack-bar';
12
13
  import { SelectionModel } from '@angular/cdk/collections';
13
14
  import { CdkDragDrop, CdkDragEnd, CdkDrag, CdkDropList } from '@angular/cdk/drag-drop';
@@ -15,7 +16,7 @@ import { BehaviorSubject, Subscription, Observable } from 'rxjs';
15
16
  import { SettingsPanelService, SettingsValueProvider } from '@praxisui/settings-panel';
16
17
  import { FormGroup, FormControl, FormBuilder } from '@angular/forms';
17
18
  import { MatDialog } from '@angular/material/dialog';
18
- import { BaseDynamicFieldComponent } from '@praxisui/dynamic-fields';
19
+ import { PdxCollectionSearchComponent, BaseDynamicFieldComponent } from '@praxisui/dynamic-fields';
19
20
  import { CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';
20
21
  import { PraxisDialog } from '@praxisui/dialog';
21
22
  import { PraxisAssistantVoiceInputMode, PraxisAssistantTurnViewState, PraxisAssistantShellLayout, PraxisAssistantShellLabels, PraxisAssistantSessionSnapshot, PraxisAssistantShellQuickReply, PraxisAssistantRecommendedIntent, PraxisAssistantShellMessage } from '@praxisui/ai';
@@ -46,19 +47,26 @@ declare class PraxisTableToolbar implements OnDestroy {
46
47
  private i18n?;
47
48
  private defaultAppearance?;
48
49
  private tokenPresets?;
50
+ activeOverflowMenuTrigger?: MatMenuTrigger;
51
+ private activeOverflowMenuTriggerElement?;
49
52
  config?: TableConfig;
50
53
  appearance?: TableToolbarAppearanceConfig | null;
51
54
  backgroundColor: string | null;
52
55
  placement: 'header' | 'footer';
56
+ /** Stable runtime scope used only to recover focus after a host re-renders. */
57
+ focusScope: string;
53
58
  showMain: boolean;
54
59
  showActionsGroup: boolean;
55
60
  showEndActions: boolean;
56
61
  showMobileActions: boolean;
57
62
  exportBusy: boolean;
63
+ exportStatusMessage: string;
58
64
  evaluationContext: Record<string, any> | null;
65
+ activeQuickFilterId: string | null;
66
+ activeDensity: TableToolbarAppearanceDensity | null;
59
67
  /** @internal Used by PraxisTable so toolbar menu decisions materialize through the table runtime. */
60
68
  columnVisibilityController?: (field: string, visible: boolean) => void;
61
- toolbarAction: EventEmitter<Pick<ToolbarActionEvent<Record<string, unknown>>, "action" | "actionConfig">>;
69
+ toolbarAction: EventEmitter<Pick<ToolbarActionEvent<Record<string, unknown>>, "action" | "actionConfig" | "focusOrigin">>;
62
70
  exportAction: EventEmitter<{
63
71
  format: string;
64
72
  scope?: PraxisExportScope;
@@ -68,6 +76,12 @@ declare class PraxisTableToolbar implements OnDestroy {
68
76
  field: string;
69
77
  visible: boolean;
70
78
  }>;
79
+ quickFilterChange: EventEmitter<{
80
+ id: string;
81
+ filter: Record<string, unknown>;
82
+ active: boolean;
83
+ }>;
84
+ densityChange: EventEmitter<TableToolbarAppearanceDensity>;
71
85
  readonly getActionId: typeof getActionId;
72
86
  private readonly jsonLogic;
73
87
  private readonly validToolbarActionTypes;
@@ -100,12 +114,37 @@ declare class PraxisTableToolbar implements OnDestroy {
100
114
  getExportFormatTooltip(format: unknown): string;
101
115
  getExportFormatAriaLabel(format: unknown): string;
102
116
  getMoreActionsLabel(): string;
117
+ getFocusOriginKey(part: string): string;
103
118
  emitExportAction(event: Event, format: string): void;
104
119
  emitVisibleExcelExportAction(event: Event): void;
105
120
  isExcelExportFormat(format: unknown): boolean;
106
121
  isVisibleExcelExportEnabled(format: unknown): boolean;
107
122
  private normalizeExportFormat;
108
123
  getColumnsVisibilityLabel(): string;
124
+ getQuickFilters(): Array<{
125
+ id: string;
126
+ label: string;
127
+ filter: Record<string, unknown>;
128
+ icon?: string;
129
+ }>;
130
+ shouldShowQuickFilters(): boolean;
131
+ getQuickFiltersLabel(): string;
132
+ getQuickFilterLabel(filter: {
133
+ label: unknown;
134
+ id: string;
135
+ }): string;
136
+ isQuickFilterActive(id: string): boolean;
137
+ emitQuickFilterChange(event: Event, filter: {
138
+ id: string;
139
+ filter: Record<string, unknown>;
140
+ }): void;
141
+ isDensityToggleEnabled(): boolean;
142
+ getDensityToggleLabel(): string;
143
+ getDensityOptions(): TableToolbarAppearanceDensity[];
144
+ isDensityActive(density: TableToolbarAppearanceDensity): boolean;
145
+ getDensityLabel(density: TableToolbarAppearanceDensity): string;
146
+ getDensityIcon(density: TableToolbarAppearanceDensity): string;
147
+ emitDensityChange(event: Event, density: TableToolbarAppearanceDensity): void;
109
148
  getColumnsVisibilityIcon(): string;
110
149
  isColumnsVisibilityEnabled(): boolean;
111
150
  getVisibleColumnsCount(): number;
@@ -130,7 +169,9 @@ declare class PraxisTableToolbar implements OnDestroy {
130
169
  private cloneForEmit;
131
170
  private getLogger;
132
171
  private warnLog;
133
- emitToolbarAction(event: Event, action: string, actionConfig?: ToolbarAction$1): void;
172
+ emitToolbarAction(event: Event, action: string, actionConfig?: ToolbarAction$1, focusOrigin?: HTMLElement): void;
173
+ setActiveOverflowMenuTrigger(trigger: MatMenuTrigger, origin?: unknown): void;
174
+ emitOverflowToolbarAction(event: Event, action: string, actionConfig?: ToolbarAction$1): void;
134
175
  getStartActions(): any[];
135
176
  getNonStartActions(): any[];
136
177
  getOverflowActions(): any[];
@@ -182,7 +223,7 @@ declare class PraxisTableToolbar implements OnDestroy {
182
223
  private sortActions;
183
224
  getExportIcon(format: string): string;
184
225
  static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableToolbar, [null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }]>;
185
- static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableToolbar, "praxis-table-toolbar", never, { "config": { "alias": "config"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "showMain": { "alias": "showMain"; "required": false; }; "showActionsGroup": { "alias": "showActionsGroup"; "required": false; }; "showEndActions": { "alias": "showEndActions"; "required": false; }; "showMobileActions": { "alias": "showMobileActions"; "required": false; }; "exportBusy": { "alias": "exportBusy"; "required": false; }; "evaluationContext": { "alias": "evaluationContext"; "required": false; }; "columnVisibilityController": { "alias": "columnVisibilityController"; "required": false; }; }, { "toolbarAction": "toolbarAction"; "exportAction": "exportAction"; "columnVisibilityToggle": "columnVisibilityToggle"; }, never, ["[advancedFilter]", "[toolbar]", "[end-actions]"], true, never>;
226
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableToolbar, "praxis-table-toolbar", never, { "config": { "alias": "config"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "focusScope": { "alias": "focusScope"; "required": false; }; "showMain": { "alias": "showMain"; "required": false; }; "showActionsGroup": { "alias": "showActionsGroup"; "required": false; }; "showEndActions": { "alias": "showEndActions"; "required": false; }; "showMobileActions": { "alias": "showMobileActions"; "required": false; }; "exportBusy": { "alias": "exportBusy"; "required": false; }; "exportStatusMessage": { "alias": "exportStatusMessage"; "required": false; }; "evaluationContext": { "alias": "evaluationContext"; "required": false; }; "activeQuickFilterId": { "alias": "activeQuickFilterId"; "required": false; }; "activeDensity": { "alias": "activeDensity"; "required": false; }; "columnVisibilityController": { "alias": "columnVisibilityController"; "required": false; }; }, { "toolbarAction": "toolbarAction"; "exportAction": "exportAction"; "columnVisibilityToggle": "columnVisibilityToggle"; "quickFilterChange": "quickFilterChange"; "densityChange": "densityChange"; }, never, ["[advancedFilter]", "[toolbar]", "[end-actions]"], true, never>;
186
227
  }
187
228
 
188
229
  type ColumnDataType$1 = 'date' | 'number' | 'currency' | 'percentage' | 'string' | 'boolean' | 'custom';
@@ -344,6 +385,12 @@ type FilterConfig = {
344
385
  mode?: 'filter';
345
386
  changeDebounceMs?: number;
346
387
  allowSaveTags?: boolean;
388
+ /** Governed shortcuts shipped with the table config; user shortcuts remain persisted separately. */
389
+ tags?: Array<{
390
+ id: string;
391
+ label: string;
392
+ patch: Record<string, any>;
393
+ }>;
347
394
  placeBooleansInActions?: boolean;
348
395
  showToggleLabels?: boolean;
349
396
  alwaysMinWidth?: number;
@@ -480,6 +527,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
480
527
  private settingsPanel;
481
528
  private snackBar;
482
529
  private dialog;
530
+ private praxisDialog;
483
531
  private cdr;
484
532
  private ngZone;
485
533
  private dynamicForm;
@@ -488,6 +536,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
488
536
  private route?;
489
537
  private logger?;
490
538
  addManagerOrigin?: ElementRef<HTMLButtonElement>;
539
+ addManagerSearch?: PdxCollectionSearchComponent;
491
540
  resourcePath: string;
492
541
  /** Resolved API entry carried by detached hosts when route-scoped API_URL is not inherited. */
493
542
  apiUrlEntry?: ApiUrlEntry | null;
@@ -663,6 +712,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
663
712
  readonly addManagerDescriptionId: string;
664
713
  readonly addOverlayPositions: ConnectedPosition[];
665
714
  private applySchemaQueued;
715
+ private shortcutPromptOpen;
666
716
  private fallbackLogger?;
667
717
  private fallbackLoggerEnvironment;
668
718
  private isViewInitialized;
@@ -696,7 +746,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
696
746
  private filterSchemaIgnoreKey;
697
747
  private filterSchemaSnoozeKey;
698
748
  private filterSchemaNotifiedKey;
699
- constructor(crud: GenericCrudService<any>, configStorage: AsyncConfigStorage, destroyRef: DestroyRef, filterConfig: FilterConfigService, settingsPanel: SettingsPanelService, snackBar: MatSnackBar, dialog: MatDialog, cdr: ChangeDetectorRef, ngZone: NgZone, dynamicForm: DynamicFormService, schemaNormalizer: SchemaNormalizerService, componentKeys: ComponentKeyService, route?: ActivatedRoute | undefined, logger?: LoggerService | undefined);
749
+ constructor(crud: GenericCrudService<any>, configStorage: AsyncConfigStorage, destroyRef: DestroyRef, filterConfig: FilterConfigService, settingsPanel: SettingsPanelService, snackBar: MatSnackBar, dialog: MatDialog, praxisDialog: PraxisDialog, cdr: ChangeDetectorRef, ngZone: NgZone, dynamicForm: DynamicFormService, schemaNormalizer: SchemaNormalizerService, componentKeys: ComponentKeyService, route?: ActivatedRoute | undefined, logger?: LoggerService | undefined);
700
750
  private readonly global;
701
751
  private resolveRuntimeEnvironment;
702
752
  private getLogger;
@@ -871,6 +921,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
871
921
  saveCurrentAsTag(): void;
872
922
  /** Persistência centralizada de atalho a partir de um DTO explícito */
873
923
  private saveAsShortcutFromDto;
924
+ private requestShortcutLabel;
874
925
  getAdvancedAriaLabel(): string;
875
926
  getAdvancedTooltip(): string;
876
927
  getSettingsAriaLabel(): string;
@@ -928,7 +979,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
928
979
  onGlobalKeydown(event: KeyboardEvent): void;
929
980
  private isEditableElement;
930
981
  private focusQuick;
931
- static ɵfac: i0.ɵɵFactoryDeclaration<PraxisFilter, [null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }, { optional: true; }]>;
982
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisFilter, [null, null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }, { optional: true; }]>;
932
983
  static ɵcmp: i0.ɵɵComponentDeclaration<PraxisFilter, "praxis-filter", never, { "resourcePath": { "alias": "resourcePath"; "required": true; }; "apiUrlEntry": { "alias": "apiUrlEntry"; "required": false; }; "fieldMetadata": { "alias": "fieldMetadata"; "required": false; }; "filterId": { "alias": "filterId"; "required": false; }; "formId": { "alias": "formId"; "required": false; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "value": { "alias": "value"; "required": false; }; "alwaysVisibleFields": { "alias": "alwaysVisibleFields"; "required": false; }; "alwaysVisibleFieldMetadataOverrides": { "alias": "alwaysVisibleFieldMetadataOverrides"; "required": false; }; "selectedFieldIds": { "alias": "selectedFieldIds"; "required": false; }; "tags": { "alias": "tags"; "required": false; }; "allowSaveTags": { "alias": "allowSaveTags"; "required": false; }; "persistenceKey": { "alias": "persistenceKey"; "required": false; }; "disablePersistence": { "alias": "disablePersistence"; "required": false; }; "i18n": { "alias": "i18n"; "required": false; }; "changeDebounceMs": { "alias": "changeDebounceMs"; "required": false; }; "showFilterSettings": { "alias": "showFilterSettings"; "required": false; }; "showAdvancedButton": { "alias": "showAdvancedButton"; "required": false; }; "showAddButton": { "alias": "showAddButton"; "required": false; }; "showClearButton": { "alias": "showClearButton"; "required": false; }; "showSearchButton": { "alias": "showSearchButton"; "required": false; }; "confirmTagDelete": { "alias": "confirmTagDelete"; "required": false; }; "placeBooleansInActions": { "alias": "placeBooleansInActions"; "required": false; }; "showToggleLabels": { "alias": "showToggleLabels"; "required": false; }; "useInlineSelectVariant": { "alias": "useInlineSelectVariant"; "required": false; }; "useInlineSearchableSelectVariant": { "alias": "useInlineSearchableSelectVariant"; "required": false; }; "useInlineMultiSelectVariant": { "alias": "useInlineMultiSelectVariant"; "required": false; }; "useInlineInputVariant": { "alias": "useInlineInputVariant"; "required": false; }; "useInlineToggleVariant": { "alias": "useInlineToggleVariant"; "required": false; }; "useInlineRangeVariant": { "alias": "useInlineRangeVariant"; "required": false; }; "useInlineDateVariant": { "alias": "useInlineDateVariant"; "required": false; }; "useInlineDateRangeVariant": { "alias": "useInlineDateRangeVariant"; "required": false; }; "useInlineTimeVariant": { "alias": "useInlineTimeVariant"; "required": false; }; "useInlineTimeRangeVariant": { "alias": "useInlineTimeRangeVariant"; "required": false; }; "useInlineTreeSelectVariant": { "alias": "useInlineTreeSelectVariant"; "required": false; }; "alwaysMinWidth": { "alias": "alwaysMinWidth"; "required": false; }; "alwaysColsMd": { "alias": "alwaysColsMd"; "required": false; }; "alwaysColsLg": { "alias": "alwaysColsLg"; "required": false; }; "tagColor": { "alias": "tagColor"; "required": false; }; "tagVariant": { "alias": "tagVariant"; "required": false; }; "tagButtonColor": { "alias": "tagButtonColor"; "required": false; }; "actionsButtonColor": { "alias": "actionsButtonColor"; "required": false; }; "actionsVariant": { "alias": "actionsVariant"; "required": false; }; "overlayVariant": { "alias": "overlayVariant"; "required": false; }; "overlayBackdrop": { "alias": "overlayBackdrop"; "required": false; }; "advancedOpenMode": { "alias": "advancedOpenMode"; "required": false; }; "advancedClearButtonsEnabled": { "alias": "advancedClearButtonsEnabled"; "required": false; }; }, { "submit": "submit"; "change": "change"; "clear": "clear"; "modeChange": "modeChange"; "requestSearch": "requestSearch"; "tagsChange": "tagsChange"; "selectedFieldIdsChange": "selectedFieldIdsChange"; "metaChanged": "metaChanged"; "schemaStatusChange": "schemaStatusChange"; }, never, never, true, never>;
933
984
  }
934
985
 
@@ -1093,6 +1144,8 @@ type RowExpansionChangeEvent = (RowExpansionChangeBase & {
1093
1144
  type RowActionRuntimeOptions = {
1094
1145
  payload?: any;
1095
1146
  actionConfig?: any;
1147
+ /** Runtime-only focus origin. It must never be persisted or sent to an API. */
1148
+ focusOrigin?: HTMLElement;
1096
1149
  };
1097
1150
  type RowActionTriggerEvent = {
1098
1151
  target?: EventTarget | null;
@@ -1113,6 +1166,7 @@ type RuntimeRowAction = {
1113
1166
  __praxisDiscoveredSurface?: ResourceSurfaceCatalogItem;
1114
1167
  __praxisCrudOperation?: ResourceCapabilityOperation;
1115
1168
  __praxisCapabilityDenied?: boolean;
1169
+ __praxisDiscoveryPending?: boolean;
1116
1170
  };
1117
1171
  type ExpansionDetailRuntimeStatus = 'idle' | 'loading' | 'ready' | 'error' | 'blocked';
1118
1172
  type ExpansionDetailResolvedSource = 'inline' | 'resource' | 'resourcePath' | 'hypermedia' | 'fallback';
@@ -1148,6 +1202,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1148
1202
  private route?;
1149
1203
  private logger?;
1150
1204
  private analyticsStatsApi?;
1205
+ activeRowOverflowMenuTrigger?: MatMenuTrigger;
1206
+ private activeRowOverflowMenuTriggerElement?;
1207
+ private openingRowActions;
1151
1208
  private static readonly CELL_ANIMATION_CHANGE_CACHE_LIMIT;
1152
1209
  private static readonly AI_SELECTION_ROW_LIMIT;
1153
1210
  private static readonly AI_SELECTION_ID_LIMIT;
@@ -1193,6 +1250,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1193
1250
  aiAssistantVoiceInputMode: PraxisAssistantVoiceInputMode;
1194
1251
  aiAssistantVoiceLanguage: string;
1195
1252
  advancedFilterValue: Record<string, any>;
1253
+ activeQuickFilterId: string | null;
1254
+ private quickFilterBaseCriteria;
1255
+ private activeQuickFilterCriteria;
1196
1256
  advancedFilterRuntimeVisibleFields: string[];
1197
1257
  private advancedFilterAlwaysVisibleCacheKey;
1198
1258
  private advancedFilterAlwaysVisibleCache?;
@@ -1227,6 +1287,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1227
1287
  paginator: MatPaginator;
1228
1288
  sort: MatSort;
1229
1289
  materialTable?: MatTable<any>;
1290
+ scrollViewport?: ElementRef<HTMLElement>;
1230
1291
  internalFilter?: PraxisFilter;
1231
1292
  toolbar: PraxisTableToolbar;
1232
1293
  projectedFilter: any;
@@ -1249,6 +1310,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1249
1310
  columnReorderVisualStatusMessage: string;
1250
1311
  exportBusy: boolean;
1251
1312
  exportStatusMessage: string;
1313
+ hasHorizontalOverflow: boolean;
1314
+ canScrollHorizontallyLeft: boolean;
1315
+ canScrollHorizontallyRight: boolean;
1252
1316
  private columnReorderStatusTimer;
1253
1317
  private columnReorderVisualStatusTimer;
1254
1318
  private columnReorderUndoSubscription;
@@ -1305,6 +1369,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1305
1369
  private readonly paginatorIntl;
1306
1370
  private readonly schemaNormalizer;
1307
1371
  private schemaFieldsSnapshot;
1372
+ private schemaColumnFieldsSnapshot;
1308
1373
  private filterSchemaFieldsSnapshot;
1309
1374
  private runtimeSchemaMeta;
1310
1375
  schemaError: boolean;
@@ -1318,6 +1383,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1318
1383
  shouldShowToolbarBottomPlacement(): boolean;
1319
1384
  shouldRenderFooterToolbar(): boolean;
1320
1385
  hasTopToolbarStack(): boolean;
1386
+ hasBottomTableStack(): boolean;
1321
1387
  shouldShowFooterToolbarMain(): boolean;
1322
1388
  shouldShowFooterToolbarEndActions(): boolean;
1323
1389
  getToolbarActionsPosition(): 'top' | 'bottom' | 'both';
@@ -1331,6 +1397,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1331
1397
  shouldShowToolbarActionsTop(): boolean;
1332
1398
  shouldShowToolbarActionsBottom(): boolean;
1333
1399
  getToolbarActionsBackgroundColor(): string | null;
1400
+ private hasToolbarUtilityActions;
1334
1401
  getToolbarLayoutHeightPx(): number | null;
1335
1402
  getToolbarLayoutHeightCssVar(): string | null;
1336
1403
  getToolbarLayoutHeightHostStyle(): string | null;
@@ -1353,6 +1420,17 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1353
1420
  private shouldApplyResponsiveHorizontalScrollGlobally;
1354
1421
  private isWithinResponsiveMobileBreakpoint;
1355
1422
  private refreshResponsiveHorizontalScroll;
1423
+ onHorizontalViewportScroll(event: Event): void;
1424
+ private refreshHorizontalOverflowState;
1425
+ private scheduleHorizontalOverflowRefresh;
1426
+ /**
1427
+ * Materializes the existing responsive contract as a labelled record card on
1428
+ * narrow screens. Virtual rows intentionally keep the scroll-table path:
1429
+ * their fixed item height cannot safely represent a variable-height card.
1430
+ */
1431
+ isMobileCardModeActive(): boolean;
1432
+ getMobileCardColumnOrder(column: ColumnDefinition): number;
1433
+ getMobileCardActionsOrder(): number;
1356
1434
  private scheduleResponsiveHorizontalScrollRefresh;
1357
1435
  private cancelResponsiveHorizontalScrollRefresh;
1358
1436
  hasBottomPaginator(): boolean;
@@ -1369,10 +1447,12 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1369
1447
  shouldShowEmptyState(): boolean;
1370
1448
  shouldShowNoDataState(): boolean;
1371
1449
  shouldShowLoadingSurface(): boolean;
1450
+ shouldShowRefreshingState(): boolean;
1372
1451
  getLoadingSurfaceMessage(): string;
1373
1452
  getNoDataStateTitle(): string;
1374
1453
  getNoDataStateDescription(): string | undefined;
1375
1454
  getTableSettingsLabel(): string;
1455
+ getScrollViewportAriaLabel(): string;
1376
1456
  getTableErrorTitle(): string;
1377
1457
  getTableErrorMessage(): string;
1378
1458
  getTableErrorRetryLabel(): string;
@@ -1418,7 +1498,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1418
1498
  private hostDeclaredAppearanceDensity;
1419
1499
  private hostDeclaredAppearanceSpacing;
1420
1500
  private hostDeclaredAppearanceTypography;
1421
- private resolveAppearanceDensity;
1501
+ resolveAppearanceDensity(): 'compact' | 'comfortable' | 'spacious';
1422
1502
  get hostDensityCompactClass(): boolean;
1423
1503
  get hostDensityComfortableClass(): boolean;
1424
1504
  get hostDensitySpaciousClass(): boolean;
@@ -1460,6 +1540,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1460
1540
  private computedExpressionEvaluator;
1461
1541
  private resizeObserver;
1462
1542
  private resizeObserverRefreshFrameId;
1543
+ private horizontalOverflowRefreshFrameId;
1463
1544
  private removeViewportChangeListeners;
1464
1545
  private conditionalSurfaceObserver;
1465
1546
  private conditionalSurfaceFrameId;
@@ -1618,7 +1699,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1618
1699
  private resolveAiAssistantIcon;
1619
1700
  private emitLoadingState;
1620
1701
  private hasResolvedRemoteDataLoad;
1621
- private isTableDataLoading;
1702
+ isTableDataLoading(): boolean;
1622
1703
  private getRenderedRowCount;
1623
1704
  private hasActiveDataFilters;
1624
1705
  private hasActiveEmptyStateFilters;
@@ -1840,12 +1921,18 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1840
1921
  private applyExpansionCollapsePolicy;
1841
1922
  onRowDoubleClicked(row: any, index: number): void;
1842
1923
  onRowAction(action: string, row: any, event: RowActionTriggerEvent, runtimeOptions?: RowActionRuntimeOptions): void;
1924
+ onOverflowRowAction(action: string, row: any, event: RowActionTriggerEvent, runtimeOptions?: RowActionRuntimeOptions): void;
1925
+ setActiveRowOverflowMenuTrigger(trigger: MatMenuTrigger, origin?: unknown): void;
1843
1926
  private resolveRowActionRuntimeOptions;
1844
1927
  private emitRowActionEvent;
1845
1928
  private showConfirmDialog;
1929
+ isRowActionOpening(action: string | RuntimeRowAction, row: any): boolean;
1930
+ private dispatchRowActionWithOpening;
1931
+ private getOpeningRowActions;
1846
1932
  private executeDeleteAction;
1847
1933
  private dispatchRowAction;
1848
1934
  private groundRowActionConfigForDispatch;
1935
+ private getUnavailableGroundedRowActionMessage;
1849
1936
  private isResourceActionCatalogItem;
1850
1937
  private openResourceWorkflowAction;
1851
1938
  private applyWorkflowActionRefresh;
@@ -1867,10 +1954,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1867
1954
  private resolveBulkValidationMessage;
1868
1955
  private hasValidBulkSelectionCount;
1869
1956
  private showBulkConfirmDialog;
1870
- onToolbarAction(event: {
1871
- action: string;
1872
- actionConfig?: ToolbarAction$1;
1873
- }): Promise<void>;
1957
+ onToolbarAction(event: Pick<ToolbarActionEvent<any>, 'action' | 'actionConfig' | 'focusOrigin'>): Promise<void>;
1958
+ getFocusRestoreScope(placement: 'header' | 'footer' | 'row'): string;
1959
+ getRowActionFocusOriginKey(row: any): string;
1874
1960
  private hasValidToolbarTargetSelection;
1875
1961
  private tryHandleCollectionWorkflowToolbarAction;
1876
1962
  private openCollectionWorkflowAction;
@@ -1914,6 +2000,13 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1914
2000
  onAdvancedFilterSubmit(criteria: Record<string, any>): void;
1915
2001
  onAdvancedFilterChange(criteria: Record<string, any>): void;
1916
2002
  onAdvancedFilterClear(): void;
2003
+ onQuickFilterChange(event: {
2004
+ id: string;
2005
+ filter: Record<string, unknown>;
2006
+ active: boolean;
2007
+ }): void;
2008
+ private clearQuickFilterRuntimeState;
2009
+ private hasEquivalentFilterCriteria;
1917
2010
  private applyAdvancedFilterCriteria;
1918
2011
  private setAdvancedFilterCriteria;
1919
2012
  private syncAdvancedFilterValueFromCriteria;
@@ -1929,6 +2022,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1929
2022
  private showResetSuccessFeedback;
1930
2023
  readonly toolbarColumnVisibilityController: (field: string, visible: boolean) => void;
1931
2024
  toggleColumnVisibility(field: string, visible: boolean): void;
2025
+ onDensityChange(density: TableToolbarAppearanceDensity): void;
1932
2026
  isCustomizationAvailable(): boolean;
1933
2027
  private isAuthoringAssistantAvailable;
1934
2028
  openTableSettings(): void;
@@ -2038,6 +2132,23 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
2038
2132
  private loadOrVerifyRemoteSchema;
2039
2133
  private loadFilterSchemaSnapshot;
2040
2134
  private convertFieldToColumn;
2135
+ private usesSchemaColumnProjection;
2136
+ /**
2137
+ * Materializa a projeção efetiva sem promover o JSON da página a fonte de
2138
+ * verdade estrutural. Overrides desconhecidos não criam colunas e `field`
2139
+ * nunca pode ser substituído pelo consumidor.
2140
+ */
2141
+ private projectSchemaColumns;
2142
+ /**
2143
+ * Converte a configuração materializada usada pelo renderer de volta ao
2144
+ * contrato compacto e persistível. O schema continua sendo a fonte
2145
+ * estrutural; somente ordem/allowlist, diferenças editoriais e colunas sem
2146
+ * correspondente canônico são serializadas.
2147
+ */
2148
+ private toPortableTableConfig;
2149
+ private diffPortableColumnDefinition;
2150
+ private toPortableColumnDefinition;
2151
+ private arePortableValuesEqual;
2041
2152
  private applySchemaFieldPresentationsToExistingColumns;
2042
2153
  private applySchemaFieldPresentation;
2043
2154
  private applySchemaSemanticCellPresentation;
@@ -2505,11 +2616,15 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
2505
2616
  private buildResolvedRowActions;
2506
2617
  private splitVisibleRowActionsFromVisible;
2507
2618
  private decorateConfiguredRowAction;
2619
+ private isConfiguredRowActionDiscoveryIndependent;
2620
+ private isRowDiscoveryStatusUnresolved;
2621
+ private buildPendingConfiguredRowAction;
2508
2622
  private getDiscoveredRowWorkflowActions;
2509
2623
  private getDiscoveredRowCrudActionsFromSnapshot;
2510
2624
  private buildDiscoveredRowCrudAction;
2511
2625
  private getDiscoveredRowSurfaceActionsFromSnapshot;
2512
2626
  private getDiscoveredRowWorkflowActionsFromCatalog;
2627
+ private getDiscoveredRowWorkflowActionsFromItems;
2513
2628
  private resolveRowCrudCapabilityOperation;
2514
2629
  private createSyntheticCrudCapabilityOperation;
2515
2630
  private supportsRowCrudAction;
@@ -2541,6 +2656,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
2541
2656
  isWorkflowRowAction(action: RuntimeRowAction | any): boolean;
2542
2657
  isBlockedWorkflowRowAction(action: RuntimeRowAction | any, row: any): boolean;
2543
2658
  getActionTooltip(action: RuntimeRowAction | any, row: any): string | null;
2659
+ getActionAriaDescription(action: RuntimeRowAction | any, row: any): string | null;
2544
2660
  getRowMenuTooltip(row: any): string;
2545
2661
  getRowMenuButtonColor(): any;
2546
2662
  getCanonicalIconActionColor(color: unknown): string | null;
@@ -4289,7 +4405,7 @@ declare function serializeTableAuthoringDocument(doc: TableAuthoringDocument): u
4289
4405
  * Manifesto de authoring canônico para o componente praxis-table.
4290
4406
  * Este arquivo define o contrato executável para que agentes de IA editem tabelas.
4291
4407
  *
4292
- * @version 2.2.2
4408
+ * @version 2.2.3
4293
4409
  * @status COMPLIANT - Alinhado com o contrato v2 e TableConfig canônico.
4294
4410
  */
4295
4411
  declare const PRAXIS_TABLE_AUTHORING_MANIFEST: ComponentAuthoringManifest;