@praxisui/table 9.0.4-rc.8 → 9.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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-Cf63AwZs.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-Cf63AwZs.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-Cf63AwZs.mjs';
package/package.json CHANGED
@@ -1,24 +1,24 @@
1
1
  {
2
2
  "name": "@praxisui/table",
3
- "version": "9.0.4-rc.8",
3
+ "version": "9.0.4",
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.8",
10
- "@praxisui/core": "^9.0.4-rc.8",
11
- "@praxisui/dynamic-fields": "^9.0.4-rc.8",
12
- "@praxisui/dynamic-form": "^9.0.4-rc.8",
13
- "@praxisui/metadata-editor": "^9.0.4-rc.8",
14
- "@praxisui/rich-content": "^9.0.4-rc.8",
15
- "@praxisui/settings-panel": "^9.0.4-rc.8",
16
- "@praxisui/table-rule-builder": "^9.0.4-rc.8",
9
+ "@praxisui/ai": "^9.0.4",
10
+ "@praxisui/core": "^9.0.4",
11
+ "@praxisui/dynamic-fields": "^9.0.4",
12
+ "@praxisui/dynamic-form": "^9.0.4",
13
+ "@praxisui/metadata-editor": "^9.0.4",
14
+ "@praxisui/rich-content": "^9.0.4",
15
+ "@praxisui/settings-panel": "^9.0.4",
16
+ "@praxisui/table-rule-builder": "^9.0.4",
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.8",
21
+ "@praxisui/dialog": "^9.0.4",
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;
@@ -1148,6 +1201,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1148
1201
  private route?;
1149
1202
  private logger?;
1150
1203
  private analyticsStatsApi?;
1204
+ activeRowOverflowMenuTrigger?: MatMenuTrigger;
1205
+ private activeRowOverflowMenuTriggerElement?;
1206
+ private openingRowActions;
1151
1207
  private static readonly CELL_ANIMATION_CHANGE_CACHE_LIMIT;
1152
1208
  private static readonly AI_SELECTION_ROW_LIMIT;
1153
1209
  private static readonly AI_SELECTION_ID_LIMIT;
@@ -1193,6 +1249,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1193
1249
  aiAssistantVoiceInputMode: PraxisAssistantVoiceInputMode;
1194
1250
  aiAssistantVoiceLanguage: string;
1195
1251
  advancedFilterValue: Record<string, any>;
1252
+ activeQuickFilterId: string | null;
1253
+ private quickFilterBaseCriteria;
1254
+ private activeQuickFilterCriteria;
1196
1255
  advancedFilterRuntimeVisibleFields: string[];
1197
1256
  private advancedFilterAlwaysVisibleCacheKey;
1198
1257
  private advancedFilterAlwaysVisibleCache?;
@@ -1227,6 +1286,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1227
1286
  paginator: MatPaginator;
1228
1287
  sort: MatSort;
1229
1288
  materialTable?: MatTable<any>;
1289
+ scrollViewport?: ElementRef<HTMLElement>;
1230
1290
  internalFilter?: PraxisFilter;
1231
1291
  toolbar: PraxisTableToolbar;
1232
1292
  projectedFilter: any;
@@ -1249,6 +1309,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1249
1309
  columnReorderVisualStatusMessage: string;
1250
1310
  exportBusy: boolean;
1251
1311
  exportStatusMessage: string;
1312
+ hasHorizontalOverflow: boolean;
1313
+ canScrollHorizontallyLeft: boolean;
1314
+ canScrollHorizontallyRight: boolean;
1252
1315
  private columnReorderStatusTimer;
1253
1316
  private columnReorderVisualStatusTimer;
1254
1317
  private columnReorderUndoSubscription;
@@ -1305,6 +1368,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1305
1368
  private readonly paginatorIntl;
1306
1369
  private readonly schemaNormalizer;
1307
1370
  private schemaFieldsSnapshot;
1371
+ private schemaColumnFieldsSnapshot;
1308
1372
  private filterSchemaFieldsSnapshot;
1309
1373
  private runtimeSchemaMeta;
1310
1374
  schemaError: boolean;
@@ -1318,6 +1382,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1318
1382
  shouldShowToolbarBottomPlacement(): boolean;
1319
1383
  shouldRenderFooterToolbar(): boolean;
1320
1384
  hasTopToolbarStack(): boolean;
1385
+ hasBottomTableStack(): boolean;
1321
1386
  shouldShowFooterToolbarMain(): boolean;
1322
1387
  shouldShowFooterToolbarEndActions(): boolean;
1323
1388
  getToolbarActionsPosition(): 'top' | 'bottom' | 'both';
@@ -1331,6 +1396,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1331
1396
  shouldShowToolbarActionsTop(): boolean;
1332
1397
  shouldShowToolbarActionsBottom(): boolean;
1333
1398
  getToolbarActionsBackgroundColor(): string | null;
1399
+ private hasToolbarUtilityActions;
1334
1400
  getToolbarLayoutHeightPx(): number | null;
1335
1401
  getToolbarLayoutHeightCssVar(): string | null;
1336
1402
  getToolbarLayoutHeightHostStyle(): string | null;
@@ -1353,6 +1419,17 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1353
1419
  private shouldApplyResponsiveHorizontalScrollGlobally;
1354
1420
  private isWithinResponsiveMobileBreakpoint;
1355
1421
  private refreshResponsiveHorizontalScroll;
1422
+ onHorizontalViewportScroll(event: Event): void;
1423
+ private refreshHorizontalOverflowState;
1424
+ private scheduleHorizontalOverflowRefresh;
1425
+ /**
1426
+ * Materializes the existing responsive contract as a labelled record card on
1427
+ * narrow screens. Virtual rows intentionally keep the scroll-table path:
1428
+ * their fixed item height cannot safely represent a variable-height card.
1429
+ */
1430
+ isMobileCardModeActive(): boolean;
1431
+ getMobileCardColumnOrder(column: ColumnDefinition): number;
1432
+ getMobileCardActionsOrder(): number;
1356
1433
  private scheduleResponsiveHorizontalScrollRefresh;
1357
1434
  private cancelResponsiveHorizontalScrollRefresh;
1358
1435
  hasBottomPaginator(): boolean;
@@ -1369,10 +1446,12 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1369
1446
  shouldShowEmptyState(): boolean;
1370
1447
  shouldShowNoDataState(): boolean;
1371
1448
  shouldShowLoadingSurface(): boolean;
1449
+ shouldShowRefreshingState(): boolean;
1372
1450
  getLoadingSurfaceMessage(): string;
1373
1451
  getNoDataStateTitle(): string;
1374
1452
  getNoDataStateDescription(): string | undefined;
1375
1453
  getTableSettingsLabel(): string;
1454
+ getScrollViewportAriaLabel(): string;
1376
1455
  getTableErrorTitle(): string;
1377
1456
  getTableErrorMessage(): string;
1378
1457
  getTableErrorRetryLabel(): string;
@@ -1418,7 +1497,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1418
1497
  private hostDeclaredAppearanceDensity;
1419
1498
  private hostDeclaredAppearanceSpacing;
1420
1499
  private hostDeclaredAppearanceTypography;
1421
- private resolveAppearanceDensity;
1500
+ resolveAppearanceDensity(): 'compact' | 'comfortable' | 'spacious';
1422
1501
  get hostDensityCompactClass(): boolean;
1423
1502
  get hostDensityComfortableClass(): boolean;
1424
1503
  get hostDensitySpaciousClass(): boolean;
@@ -1460,6 +1539,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1460
1539
  private computedExpressionEvaluator;
1461
1540
  private resizeObserver;
1462
1541
  private resizeObserverRefreshFrameId;
1542
+ private horizontalOverflowRefreshFrameId;
1463
1543
  private removeViewportChangeListeners;
1464
1544
  private conditionalSurfaceObserver;
1465
1545
  private conditionalSurfaceFrameId;
@@ -1618,7 +1698,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1618
1698
  private resolveAiAssistantIcon;
1619
1699
  private emitLoadingState;
1620
1700
  private hasResolvedRemoteDataLoad;
1621
- private isTableDataLoading;
1701
+ isTableDataLoading(): boolean;
1622
1702
  private getRenderedRowCount;
1623
1703
  private hasActiveDataFilters;
1624
1704
  private hasActiveEmptyStateFilters;
@@ -1840,9 +1920,14 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1840
1920
  private applyExpansionCollapsePolicy;
1841
1921
  onRowDoubleClicked(row: any, index: number): void;
1842
1922
  onRowAction(action: string, row: any, event: RowActionTriggerEvent, runtimeOptions?: RowActionRuntimeOptions): void;
1923
+ onOverflowRowAction(action: string, row: any, event: RowActionTriggerEvent, runtimeOptions?: RowActionRuntimeOptions): void;
1924
+ setActiveRowOverflowMenuTrigger(trigger: MatMenuTrigger, origin?: unknown): void;
1843
1925
  private resolveRowActionRuntimeOptions;
1844
1926
  private emitRowActionEvent;
1845
1927
  private showConfirmDialog;
1928
+ isRowActionOpening(action: string | RuntimeRowAction, row: any): boolean;
1929
+ private dispatchRowActionWithOpening;
1930
+ private getOpeningRowActions;
1846
1931
  private executeDeleteAction;
1847
1932
  private dispatchRowAction;
1848
1933
  private groundRowActionConfigForDispatch;
@@ -1867,10 +1952,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1867
1952
  private resolveBulkValidationMessage;
1868
1953
  private hasValidBulkSelectionCount;
1869
1954
  private showBulkConfirmDialog;
1870
- onToolbarAction(event: {
1871
- action: string;
1872
- actionConfig?: ToolbarAction$1;
1873
- }): Promise<void>;
1955
+ onToolbarAction(event: Pick<ToolbarActionEvent<any>, 'action' | 'actionConfig' | 'focusOrigin'>): Promise<void>;
1956
+ getFocusRestoreScope(placement: 'header' | 'footer' | 'row'): string;
1957
+ getRowActionFocusOriginKey(row: any): string;
1874
1958
  private hasValidToolbarTargetSelection;
1875
1959
  private tryHandleCollectionWorkflowToolbarAction;
1876
1960
  private openCollectionWorkflowAction;
@@ -1914,6 +1998,13 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1914
1998
  onAdvancedFilterSubmit(criteria: Record<string, any>): void;
1915
1999
  onAdvancedFilterChange(criteria: Record<string, any>): void;
1916
2000
  onAdvancedFilterClear(): void;
2001
+ onQuickFilterChange(event: {
2002
+ id: string;
2003
+ filter: Record<string, unknown>;
2004
+ active: boolean;
2005
+ }): void;
2006
+ private clearQuickFilterRuntimeState;
2007
+ private hasEquivalentFilterCriteria;
1917
2008
  private applyAdvancedFilterCriteria;
1918
2009
  private setAdvancedFilterCriteria;
1919
2010
  private syncAdvancedFilterValueFromCriteria;
@@ -1929,6 +2020,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1929
2020
  private showResetSuccessFeedback;
1930
2021
  readonly toolbarColumnVisibilityController: (field: string, visible: boolean) => void;
1931
2022
  toggleColumnVisibility(field: string, visible: boolean): void;
2023
+ onDensityChange(density: TableToolbarAppearanceDensity): void;
1932
2024
  isCustomizationAvailable(): boolean;
1933
2025
  private isAuthoringAssistantAvailable;
1934
2026
  openTableSettings(): void;
@@ -2038,6 +2130,23 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
2038
2130
  private loadOrVerifyRemoteSchema;
2039
2131
  private loadFilterSchemaSnapshot;
2040
2132
  private convertFieldToColumn;
2133
+ private usesSchemaColumnProjection;
2134
+ /**
2135
+ * Materializa a projeção efetiva sem promover o JSON da página a fonte de
2136
+ * verdade estrutural. Overrides desconhecidos não criam colunas e `field`
2137
+ * nunca pode ser substituído pelo consumidor.
2138
+ */
2139
+ private projectSchemaColumns;
2140
+ /**
2141
+ * Converte a configuração materializada usada pelo renderer de volta ao
2142
+ * contrato compacto e persistível. O schema continua sendo a fonte
2143
+ * estrutural; somente ordem/allowlist, diferenças editoriais e colunas sem
2144
+ * correspondente canônico são serializadas.
2145
+ */
2146
+ private toPortableTableConfig;
2147
+ private diffPortableColumnDefinition;
2148
+ private toPortableColumnDefinition;
2149
+ private arePortableValuesEqual;
2041
2150
  private applySchemaFieldPresentationsToExistingColumns;
2042
2151
  private applySchemaFieldPresentation;
2043
2152
  private applySchemaSemanticCellPresentation;
@@ -4289,7 +4398,7 @@ declare function serializeTableAuthoringDocument(doc: TableAuthoringDocument): u
4289
4398
  * Manifesto de authoring canônico para o componente praxis-table.
4290
4399
  * Este arquivo define o contrato executável para que agentes de IA editem tabelas.
4291
4400
  *
4292
- * @version 2.2.2
4401
+ * @version 2.2.3
4293
4402
  * @status COMPLIANT - Alinhado com o contrato v2 e TableConfig canônico.
4294
4403
  */
4295
4404
  declare const PRAXIS_TABLE_AUTHORING_MANIFEST: ComponentAuthoringManifest;