@praxisui/table 10.0.0-rc.3 → 10.0.0-rc.5

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,7 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, AfterViewInit, OnDestroy, EventEmitter, ElementRef, Provider, OnInit, OnChanges, DoCheck, DestroyRef, ChangeDetectorRef, NgZone, SimpleChanges, ComponentRef, AfterViewChecked, AfterContentInit, Injector, Type } from '@angular/core';
2
+ import { InjectionToken, AfterViewInit, OnDestroy, EventEmitter, ElementRef, Provider, OnInit, OnChanges, DoCheck, DestroyRef, ChangeDetectorRef, NgZone, SimpleChanges, ComponentRef, AfterViewChecked, AfterContentInit, TemplateRef, Injector, Type } from '@angular/core';
3
3
  import * as _praxisui_core from '@praxisui/core';
4
- import { TableToolbarAppearanceConfig, TableConfig, TableToolbarAppearanceDensity, ToolbarActionEvent, PraxisExportScope, LoggerService, PraxisI18nService, TableToolbarAppearanceVariant, TableToolbarAppearanceShape, TableToolbarAppearanceDivider, TableToolbarTokenName, ToolbarAction as ToolbarAction$1, GlobalConfigService, FilterPresentationConfig, 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, TableDetailListNode, TableDetailCardGridNode, TableDetailCardGridCardNode, TableDetailTimelineNode, JsonLogicDataRecord, TableDetailListItemAction, TableDetailActionBarNode, TableDetailActionBarAction, TableDetailRefNode, TableDetailTemplateRefNode, TableDetailDiagramEmbedNode, TableDetailEmbedAction, RichContentDocument, RichBlockHostCapabilities, GlobalActionRef, PraxisRuntimeGlobalActionEffect, ResourceActionCatalogItem, ResourceSurfaceCatalogItem, ResourceCapabilityOperation, JsonLogicExpression, PraxisPresentationVisualizationKind, PraxisTableCellVisualizationConstraint, GlobalActionCatalogEntry, IconPickerService, SurfaceOpenPayload, GlobalActionField, FieldDefinition, PraxisRuntimeConditionalEffectRule, PraxisJsonLogicService, TableConfigService, SettingsValueProvider as SettingsValueProvider$1, ResourceQuickConnectComponent, AnalyticsSchemaContractService, AnalyticsPresentationResolver, RichPresenterNode, RichComposeNode, ComponentAuthoringManifest, AiCapability, AiCapabilityCategory, AiValueKind, AiCapabilityCatalog } from '@praxisui/core';
4
+ import { TableToolbarAppearanceConfig, TableConfig, TableToolbarAppearanceDensity, ToolbarActionEvent, PraxisExportScope, LoggerService, PraxisI18nService, TableToolbarAppearanceVariant, TableToolbarAppearanceShape, TableToolbarAppearanceDivider, TableToolbarTokenName, ToolbarAction as ToolbarAction$1, GlobalConfigService, FilterPresentationConfig, AsyncConfigStorage, LocalStorageConfigService, ApiUrlEntry, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, DynamicDataRecord, MaterializedResourceIdentity, PraxisQueryFilterExpression, RecordRelatedSurfaceContextPack, PraxisResourceEvent, LoadingState, RestApiLinks, ColumnDefinition, RichBlockNode, ResourceCapabilityDigest, ConnectionStorage, LoadingOrchestrator, GlobalActionService, EnterpriseRuntimeContextService, PraxisLoadingRenderer, PraxisRuntimeComponentObservationEnvelope, TableDetailRichListNode, TableDetailListNode, TableDetailCardGridNode, TableDetailCardGridCardNode, TableDetailTimelineNode, JsonLogicDataRecord, TableDetailListItemAction, TableDetailActionBarNode, TableDetailActionBarAction, TableDetailRefNode, TableDetailTemplateRefNode, TableDetailDiagramEmbedNode, TableDetailEmbedAction, RichContentDocument, RichBlockHostCapabilities, GlobalActionRef, PraxisRuntimeGlobalActionEffect, ResourceActionCatalogItem, ResourceSurfaceCatalogItem, ResourceCapabilityOperation, JsonLogicExpression, PraxisPresentationVisualizationKind, PraxisTableCellVisualizationConstraint, GlobalActionCatalogEntry, IconPickerService, SurfaceOpenPayload, GlobalActionField, FieldDefinition, PraxisRuntimeConditionalEffectRule, PraxisJsonLogicService, TableConfigService, SettingsValueProvider as SettingsValueProvider$1, ResourceQuickConnectComponent, AnalyticsSchemaContractService, AnalyticsPresentationResolver, RichPresenterNode, RichComposeNode, ComponentAuthoringManifest, AiCapability, AiCapabilityCategory, AiValueKind, AiCapabilityCatalog, TableDrawerConfig, PraxisAnalyticalDrawerTab, PraxisPresentationVisualizationConfig, PraxisAnalyticalDrawerSchema, SafeExpressionEvaluator, PraxisComputedFieldsConfig, PraxisComputedFieldDefinition } from '@praxisui/core';
5
+ export { DynamicDataCollection, DynamicDataRecord, DynamicRecordMeta, ResourceLinkItem, ResourceLinks, createDynamicRecord, extractRecordId, isDynamicDataRecord, resolveDataField } from '@praxisui/core';
5
6
  import { ActivatedRoute } from '@angular/router';
6
7
  import { SafeHtml } from '@angular/platform-browser';
7
8
  import { MatTable, MatTableDataSource } from '@angular/material/table';
@@ -51,6 +52,23 @@ interface ActionLike {
51
52
  }
52
53
  declare function getActionId(action: ActionLike): string;
53
54
 
55
+ interface PraxisTableCrossFilterItem {
56
+ id: string;
57
+ field: string;
58
+ label: string;
59
+ value: unknown;
60
+ prefix?: string;
61
+ rawFilter?: Record<string, unknown>;
62
+ }
63
+ interface PraxisTableQueryContextClearEvent {
64
+ field?: string;
65
+ clearedFields?: string[];
66
+ clearedFilter?: PraxisTableCrossFilterItem;
67
+ remainingFilters?: Record<string, unknown>;
68
+ remainingFilterCount?: number;
69
+ tableId?: string;
70
+ source?: 'toolbar-chip';
71
+ }
54
72
  declare const PRAXIS_TABLE_TOOLBAR_APPEARANCE_PRESETS: Record<string, TableToolbarAppearanceConfig>;
55
73
  declare const PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE: InjectionToken<TableToolbarAppearanceConfig>;
56
74
  declare const PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS: InjectionToken<Record<string, TableToolbarAppearanceConfig>>;
@@ -86,8 +104,11 @@ declare class PraxisTableToolbar implements AfterViewInit, OnDestroy {
86
104
  evaluationContext: Record<string, any> | null;
87
105
  activeQuickFilterId: string | null;
88
106
  activeDensity: TableToolbarAppearanceDensity | null;
107
+ activeCrossFilters: PraxisTableCrossFilterItem[];
89
108
  /** @internal Used by PraxisTable so toolbar menu decisions materialize through the table runtime. */
90
109
  columnVisibilityController?: (field: string, visible: boolean) => void;
110
+ readonly clearCrossFilter: EventEmitter<PraxisTableCrossFilterItem>;
111
+ readonly clearAllCrossFilters: EventEmitter<void>;
91
112
  toolbarAction: EventEmitter<Pick<ToolbarActionEvent<Record<string, unknown>>, "action" | "actionConfig" | "focusOrigin">>;
92
113
  exportAction: EventEmitter<{
93
114
  format: string;
@@ -152,6 +173,7 @@ declare class PraxisTableToolbar implements AfterViewInit, OnDestroy {
152
173
  filter: Record<string, unknown>;
153
174
  icon?: string;
154
175
  }>;
176
+ private normalizeQuickFilterExpression;
155
177
  shouldShowQuickFilters(): boolean;
156
178
  getQuickFiltersLabel(): string;
157
179
  getQuickFilterLabel(filter: {
@@ -163,6 +185,15 @@ declare class PraxisTableToolbar implements AfterViewInit, OnDestroy {
163
185
  id: string;
164
186
  filter: Record<string, unknown>;
165
187
  }): void;
188
+ hasActiveCrossFilters(): boolean;
189
+ getActiveCrossFilters(): PraxisTableCrossFilterItem[];
190
+ getCrossFiltersAriaLabel(): string;
191
+ getCrossFilterDefaultPrefix(): string;
192
+ getClearCrossFilterAriaLabel(filter: PraxisTableCrossFilterItem): string;
193
+ getClearCrossFilterTooltip(filter: PraxisTableCrossFilterItem): string;
194
+ getClearAllCrossFiltersLabel(): string;
195
+ onClearCrossFilter(filter: PraxisTableCrossFilterItem): void;
196
+ onClearAllCrossFilters(): void;
166
197
  isDensityToggleEnabled(): boolean;
167
198
  getDensityToggleLabel(): string;
168
199
  getDensityOptions(): TableToolbarAppearanceDensity[];
@@ -262,7 +293,7 @@ declare class PraxisTableToolbar implements AfterViewInit, OnDestroy {
262
293
  private sortActions;
263
294
  getExportIcon(format: string): string;
264
295
  static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableToolbar, [null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }]>;
265
- 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>;
296
+ 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; }; "activeCrossFilters": { "alias": "activeCrossFilters"; "required": false; }; "columnVisibilityController": { "alias": "columnVisibilityController"; "required": false; }; }, { "clearCrossFilter": "clearCrossFilter"; "clearAllCrossFilters": "clearAllCrossFilters"; "toolbarAction": "toolbarAction"; "exportAction": "exportAction"; "columnVisibilityToggle": "columnVisibilityToggle"; "quickFilterChange": "quickFilterChange"; "densityChange": "densityChange"; }, never, ["[advancedFilter]", "[toolbar]", "[end-actions]"], true, never>;
266
297
  }
267
298
 
268
299
  type ColumnDataType$1 = 'date' | 'number' | 'currency' | 'percentage' | 'string' | 'boolean' | 'custom';
@@ -1134,6 +1165,43 @@ declare class AnalyticsTableStatsApiService {
1134
1165
  static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableStatsApiService>;
1135
1166
  }
1136
1167
 
1168
+ /**
1169
+ * Canonical row click event interface emitted by PraxisTable and PraxisCrud.
1170
+ * Provides typed access to the underlying record, row index, original DOM mouse event,
1171
+ * resource identity, and selection/expansion state.
1172
+ */
1173
+ interface RowClickEvent<T = DynamicDataRecord> {
1174
+ row: T;
1175
+ index: number;
1176
+ originalEvent?: MouseEvent;
1177
+ resourceIdentity?: MaterializedResourceIdentity | string | null;
1178
+ selectionState?: {
1179
+ isSelected: boolean;
1180
+ isExpanded: boolean;
1181
+ };
1182
+ }
1183
+ /**
1184
+ * Event payload emitted when a table row is double clicked.
1185
+ */
1186
+ interface RowDoubleClickEvent<T = DynamicDataRecord> {
1187
+ action?: string;
1188
+ row: T;
1189
+ }
1190
+ /**
1191
+ * Event payload emitted when an analytical drawer is opened from a table row.
1192
+ */
1193
+ interface DrawerOpenEvent<T = DynamicDataRecord> {
1194
+ row: T;
1195
+ tabId?: string;
1196
+ }
1197
+ /**
1198
+ * Event payload emitted when row selections change in the table.
1199
+ */
1200
+ interface RowSelectionChangeEvent<T = DynamicDataRecord> {
1201
+ selected: T[];
1202
+ source?: 'row' | 'header' | 'programmatic';
1203
+ }
1204
+
1137
1205
  interface TableAiNavigationDestinationContext {
1138
1206
  id?: string;
1139
1207
  path: string;
@@ -1261,7 +1329,7 @@ type RuntimeRowAction = {
1261
1329
  __praxisDiscoveryPending?: boolean;
1262
1330
  };
1263
1331
  type ExpansionDetailRuntimeStatus = 'idle' | 'loading' | 'ready' | 'error' | 'blocked';
1264
- type ExpansionDetailResolvedSource = 'inline' | 'resource' | 'resourcePath' | 'hypermedia' | 'fallback';
1332
+ type ExpansionDetailResolvedSource = 'inline' | 'resource' | 'resourcePath' | 'hypermedia' | 'fallback' | 'schema';
1265
1333
  type ExpansionDetailViewState = {
1266
1334
  status: ExpansionDetailRuntimeStatus;
1267
1335
  schema: Record<string, unknown> | null;
@@ -1312,6 +1380,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
1312
1380
  private _crudOperationResolver?;
1313
1381
  private readonly runtimeObservationRegistry;
1314
1382
  private readonly detailInlineRenderers;
1383
+ private readonly drawerRegistry;
1315
1384
  private collectionLinks;
1316
1385
  private collectionCapabilities;
1317
1386
  private collectionCapabilitiesRequestHref;
@@ -1338,7 +1407,15 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
1338
1407
  autoOpenSettingsOnOutdated: boolean;
1339
1408
  crudContext: any;
1340
1409
  filterCriteria: Record<string, any>;
1410
+ filterTeleport: boolean;
1411
+ widgetId?: string;
1412
+ filterBarTemplate?: TemplateRef<unknown>;
1413
+ get filterTemplate(): TemplateRef<unknown> | undefined;
1414
+ private readonly widgetEventBus;
1341
1415
  queryContext: PraxisDataQueryContextBridge | null;
1416
+ readonly queryContextClear: EventEmitter<PraxisTableQueryContextClearEvent>;
1417
+ readonly queryContextChange: EventEmitter<PraxisDataQueryContextBridge | null>;
1418
+ activeCrossFilters: PraxisTableCrossFilterItem[];
1342
1419
  aiContext: TableAiContext | null;
1343
1420
  aiAssistantVoiceInputMode: PraxisAssistantVoiceInputMode;
1344
1421
  aiAssistantVoiceLanguage: string;
@@ -1352,10 +1429,10 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
1352
1429
  private advancedFilterMetadataOverridesCacheKey;
1353
1430
  private advancedFilterMetadataOverridesCacheSource?;
1354
1431
  private advancedFilterMetadataOverridesCache?;
1355
- rowClick: EventEmitter<any>;
1432
+ rowClick: EventEmitter<RowClickEvent<DynamicDataRecord>>;
1356
1433
  widgetEvent: EventEmitter<any>;
1357
1434
  resourceEvent: EventEmitter<PraxisResourceEvent<unknown>>;
1358
- rowDoubleClick: EventEmitter<any>;
1435
+ rowDoubleClick: EventEmitter<RowDoubleClickEvent<DynamicDataRecord>>;
1359
1436
  rowExpansionChange: EventEmitter<RowExpansionChangeEvent>;
1360
1437
  rowAction: EventEmitter<any>;
1361
1438
  toolbarAction: EventEmitter<ToolbarActionEvent<any>>;
@@ -1376,6 +1453,12 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
1376
1453
  loadingStateChange: EventEmitter<LoadingState>;
1377
1454
  collectionLinksChange: EventEmitter<RestApiLinks | null>;
1378
1455
  selectionChange: EventEmitter<any>;
1456
+ drawerOpen: EventEmitter<DrawerOpenEvent<DynamicDataRecord>>;
1457
+ drawerClose: EventEmitter<void>;
1458
+ drawerTabChange: EventEmitter<string>;
1459
+ isAnalyticalDrawerOpen: boolean;
1460
+ analyticalDrawerRow: any | null;
1461
+ activeAnalyticalDrawerTabId?: string;
1379
1462
  private latestLoadingState;
1380
1463
  private loadingIndicatorVisible;
1381
1464
  private loadingIndicatorDelayHandle;
@@ -1851,6 +1934,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
1851
1934
  private hasActiveEmptyStateFilters;
1852
1935
  private hasMeaningfulFilterCriteria;
1853
1936
  private hasMeaningfulFilterValue;
1937
+ computeActiveCrossFilters(): PraxisTableCrossFilterItem[];
1938
+ onClearCrossFilter(item: PraxisTableCrossFilterItem): void;
1939
+ onClearAllCrossFilters(): void;
1854
1940
  private resolveNoDataStateConfig;
1855
1941
  private isEmptyStateTone;
1856
1942
  private isEmptyStateVariant;
@@ -1872,6 +1958,14 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
1872
1958
  * race with the configured request.
1873
1959
  */
1874
1960
  private shouldFetchRemoteDataForQueryChanges;
1961
+ /**
1962
+ * Evaluates whether an external TableConfig change actually modifies remote query parameters
1963
+ * (e.g. resourcePath, page size, sorting criteria or data mode).
1964
+ *
1965
+ * Non-query-affecting updates (such as toolbar actions, capabilities resolution, appearance,
1966
+ * density or empty state) MUST NOT trigger a redundant remote data load or cancel in-flight requests.
1967
+ */
1968
+ private shouldRefetchOnConfigChange;
1875
1969
  private isDebug;
1876
1970
  private connectionKey;
1877
1971
  private saveConnection;
@@ -2010,7 +2104,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
2010
2104
  private isExpansionDetailRichListItemActionVisible;
2011
2105
  private evaluateExpansionDetailRichListItemCondition;
2012
2106
  getExpansionDetailRichText(node: any): string;
2013
- getExpansionDetailRichContentContext(row: any, index: number): JsonLogicDataRecord;
2107
+ getExpansionDetailRichContentContext(row: any, index: number, node?: any): JsonLogicDataRecord;
2014
2108
  getExpansionDetailRichContentDocument(node: any): RichContentDocument;
2015
2109
  getExpansionDetailRichContentLayout(node: any): 'block' | 'inline';
2016
2110
  getExpansionDetailRichContentHostCapabilities(row: any): RichBlockHostCapabilities;
@@ -2037,9 +2131,12 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
2037
2131
  private resolveExpansionDetailSchemaForRow;
2038
2132
  private resolveExpansionDetailByMode;
2039
2133
  private resolveExpansionDetailInlineSchema;
2134
+ private resolveExpansionDetailFromSchema;
2135
+ private humanizeFieldName;
2040
2136
  private resolveExpansionDetailFromResource;
2041
2137
  private resolveExpansionDetailFromResourcePath;
2042
2138
  private resolveExpansionDetailFromHypermedia;
2139
+ private isDirectRichContentDocument;
2043
2140
  private normalizeExpansionDetailSchemaCandidate;
2044
2141
  private sanitizeExpansionDetailSchema;
2045
2142
  private sanitizeExpansionDetailNodes;
@@ -2093,6 +2190,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
2093
2190
  private areStringSetsEqual;
2094
2191
  private shouldToggleExpansionOnRowClick;
2095
2192
  private shouldSelectRowOnRowClick;
2193
+ isAnalyticalDrawerEnabled(): boolean;
2194
+ private shouldOpenAnalyticalDrawerOnRowClick;
2195
+ openAnalyticalDrawer(row: any, tabId?: string): void;
2196
+ closeAnalyticalDrawer(): void;
2197
+ onAnalyticalDrawerTabChange(tabId: string): void;
2096
2198
  private getExpansionMotionPreset;
2097
2199
  private getExpansionMotionDurationMs;
2098
2200
  private getExpansionMotionEasingCurve;
@@ -2185,6 +2287,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
2185
2287
  onAdvancedFilterSubmit(criteria: Record<string, any>): void;
2186
2288
  onAdvancedFilterChange(criteria: Record<string, any>): void;
2187
2289
  onAdvancedFilterClear(): void;
2290
+ clearAdvancedFilter(): void;
2188
2291
  onQuickFilterChange(event: {
2189
2292
  id: string;
2190
2293
  filter: Record<string, unknown>;
@@ -2192,7 +2295,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
2192
2295
  }): void;
2193
2296
  private clearQuickFilterRuntimeState;
2194
2297
  private hasEquivalentFilterCriteria;
2195
- private applyAdvancedFilterCriteria;
2298
+ applyAdvancedFilterCriteria(criteria: Record<string, any> | null | undefined, reason?: string): void;
2196
2299
  private setAdvancedFilterCriteria;
2197
2300
  private syncAdvancedFilterValueFromCriteria;
2198
2301
  private deriveRuntimeVisibleAdvancedFilterFields;
@@ -2585,6 +2688,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
2585
2688
  getIconText(row: any, column: ColumnDefinition): string | null;
2586
2689
  getIconRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
2587
2690
  private getIconRawText;
2691
+ /**
2692
+ * Enriquece as linhas com propriedades calculadas declaradas em `computedFields`.
2693
+ * Torna as propriedades virtuais fisicamente acessíveis no objeto da linha (Issue #34).
2694
+ */
2695
+ private enrichRowsWithComputedFields;
2588
2696
  /**
2589
2697
  * Lightweight, controlled evaluator for string/number expressions using row context.
2590
2698
  * Accepts values like '= row.status === "OK" ? "primary" : "warn"'.
@@ -2876,7 +2984,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
2876
2984
  private scheduleRowDiscoveryMarkForCheck;
2877
2985
  ngOnDestroy(): void;
2878
2986
  static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTable, [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }]>;
2879
- static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTable, "praxis-table", never, { "config": { "alias": "config"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; "data": { "alias": "data"; "required": false; }; "tableId": { "alias": "tableId"; "required": true; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "configPersistenceStrategy": { "alias": "configPersistenceStrategy"; "required": false; }; "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "autoDelete": { "alias": "autoDelete"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "crudContext": { "alias": "crudContext"; "required": false; }; "filterCriteria": { "alias": "filterCriteria"; "required": false; }; "queryContext": { "alias": "queryContext"; "required": false; }; "aiContext": { "alias": "aiContext"; "required": false; }; "aiAssistantVoiceInputMode": { "alias": "aiAssistantVoiceInputMode"; "required": false; }; "aiAssistantVoiceLanguage": { "alias": "aiAssistantVoiceLanguage"; "required": false; }; "horizontalScroll": { "alias": "horizontalScroll"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "authoringCapability": { "alias": "authoringCapability"; "required": false; }; "dense": { "alias": "dense"; "required": false; }; }, { "rowClick": "rowClick"; "widgetEvent": "widgetEvent"; "resourceEvent": "resourceEvent"; "rowDoubleClick": "rowDoubleClick"; "rowExpansionChange": "rowExpansionChange"; "rowAction": "rowAction"; "toolbarAction": "toolbarAction"; "bulkAction": "bulkAction"; "exportAction": "exportAction"; "columnReorder": "columnReorder"; "columnReorderAttempt": "columnReorderAttempt"; "columnResize": "columnResize"; "beforeDelete": "beforeDelete"; "afterDelete": "afterDelete"; "deleteError": "deleteError"; "beforeBulkDelete": "beforeBulkDelete"; "afterBulkDelete": "afterBulkDelete"; "bulkDeleteError": "bulkDeleteError"; "schemaStatusChange": "schemaStatusChange"; "configChange": "configChange"; "metadataChange": "metadataChange"; "loadingStateChange": "loadingStateChange"; "collectionLinksChange": "collectionLinksChange"; "selectionChange": "selectionChange"; }, ["toolbar", "projectedFilter"], ["[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]"], true, never>;
2987
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTable, "praxis-table", never, { "config": { "alias": "config"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; "data": { "alias": "data"; "required": false; }; "tableId": { "alias": "tableId"; "required": true; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "configPersistenceStrategy": { "alias": "configPersistenceStrategy"; "required": false; }; "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "autoDelete": { "alias": "autoDelete"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "crudContext": { "alias": "crudContext"; "required": false; }; "filterCriteria": { "alias": "filterCriteria"; "required": false; }; "filterTeleport": { "alias": "filterTeleport"; "required": false; }; "widgetId": { "alias": "widgetId"; "required": false; }; "queryContext": { "alias": "queryContext"; "required": false; }; "aiContext": { "alias": "aiContext"; "required": false; }; "aiAssistantVoiceInputMode": { "alias": "aiAssistantVoiceInputMode"; "required": false; }; "aiAssistantVoiceLanguage": { "alias": "aiAssistantVoiceLanguage"; "required": false; }; "horizontalScroll": { "alias": "horizontalScroll"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "authoringCapability": { "alias": "authoringCapability"; "required": false; }; "dense": { "alias": "dense"; "required": false; }; }, { "queryContextClear": "queryContextClear"; "queryContextChange": "queryContextChange"; "rowClick": "rowClick"; "widgetEvent": "widgetEvent"; "resourceEvent": "resourceEvent"; "rowDoubleClick": "rowDoubleClick"; "rowExpansionChange": "rowExpansionChange"; "rowAction": "rowAction"; "toolbarAction": "toolbarAction"; "bulkAction": "bulkAction"; "exportAction": "exportAction"; "columnReorder": "columnReorder"; "columnReorderAttempt": "columnReorderAttempt"; "columnResize": "columnResize"; "beforeDelete": "beforeDelete"; "afterDelete": "afterDelete"; "deleteError": "deleteError"; "beforeBulkDelete": "beforeBulkDelete"; "afterBulkDelete": "afterBulkDelete"; "bulkDeleteError": "bulkDeleteError"; "schemaStatusChange": "schemaStatusChange"; "configChange": "configChange"; "metadataChange": "metadataChange"; "loadingStateChange": "loadingStateChange"; "collectionLinksChange": "collectionLinksChange"; "selectionChange": "selectionChange"; "drawerOpen": "drawerOpen"; "drawerClose": "drawerClose"; "drawerTabChange": "drawerTabChange"; }, ["toolbar", "projectedFilter"], ["[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]"], true, never>;
2988
+ static ngAcceptInputType_filterTeleport: unknown;
2880
2989
  static ngAcceptInputType_enableCustomization: unknown;
2881
2990
  }
2882
2991
 
@@ -4646,6 +4755,143 @@ declare class PraxisFilterWidgetConfigEditor implements SettingsValueProvider$1,
4646
4755
  static ɵcmp: i0.ɵɵComponentDeclaration<PraxisFilterWidgetConfigEditor, "praxis-filter-widget-config-editor", never, { "widgetKey": { "alias": "widgetKey"; "required": false; }; "inputs": { "alias": "inputs"; "required": false; }; }, {}, never, never, true, never>;
4647
4756
  }
4648
4757
 
4758
+ /**
4759
+ * Interface mínima estrutural para qualquer componente que suporte teleporte de filtros
4760
+ * (ex.: PraxisTable ou PraxisCrudComponent).
4761
+ */
4762
+ interface PraxisFilterTeleportHost {
4763
+ filterTeleport?: boolean;
4764
+ filterTemplate?: TemplateRef<unknown>;
4765
+ filterBarTemplate?: TemplateRef<unknown>;
4766
+ table?: PraxisFilterTeleportHost;
4767
+ }
4768
+ type PraxisFilterOutletTarget = PraxisFilterTeleportHost | TemplateRef<unknown> | null | undefined;
4769
+ /**
4770
+ * Praxis UI Platform — Canonical Filter Outlet Component (Issue #11)
4771
+ *
4772
+ * Renderiza a barra de filtros avançados desacoplada da tabela de dados ou do CRUD,
4773
+ * permitindo acomodá-la em qualquer card, drawer ou cabeçalho superior tático.
4774
+ *
4775
+ * @example
4776
+ * ```html
4777
+ * <div class="filters-card">
4778
+ * <praxis-filter-outlet [target]="heroesCrud" />
4779
+ * </div>
4780
+ *
4781
+ * <praxis-crud #heroesCrud ... />
4782
+ * ```
4783
+ */
4784
+ declare class PraxisFilterOutletComponent implements OnChanges, AfterViewInit, OnDestroy {
4785
+ target: PraxisFilterOutletTarget;
4786
+ private readonly cdr;
4787
+ private previousHost?;
4788
+ get resolvedTemplate(): TemplateRef<unknown> | null;
4789
+ ngOnChanges(changes: SimpleChanges): void;
4790
+ ngAfterViewInit(): void;
4791
+ ngOnDestroy(): void;
4792
+ private attachTeleportTarget;
4793
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisFilterOutletComponent, never>;
4794
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisFilterOutletComponent, "praxis-filter-outlet", never, { "target": { "alias": "target"; "required": false; }; }, {}, never, never, true, never>;
4795
+ }
4796
+ /**
4797
+ * Praxis UI Platform — Canonical Filter Outlet Directive (Issue #11)
4798
+ *
4799
+ * Diretiva estrutural alternativa para teleporte reativo da barra de filtros.
4800
+ *
4801
+ * @example
4802
+ * ```html
4803
+ * <div class="filters-card">
4804
+ * <ng-container *praxisFilterOutlet="heroesCrud"></ng-container>
4805
+ * </div>
4806
+ * ```
4807
+ */
4808
+ declare class PraxisFilterOutletDirective implements OnChanges, AfterViewInit, OnDestroy {
4809
+ target: PraxisFilterOutletTarget;
4810
+ private readonly viewContainer;
4811
+ private readonly cdr;
4812
+ private previousHost?;
4813
+ ngOnChanges(changes: SimpleChanges): void;
4814
+ ngAfterViewInit(): void;
4815
+ ngOnDestroy(): void;
4816
+ private updateView;
4817
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisFilterOutletDirective, never>;
4818
+ static ɵdir: i0.ɵɵDirectiveDeclaration<PraxisFilterOutletDirective, "[praxisFilterOutlet]", never, { "target": { "alias": "praxisFilterOutlet"; "required": false; }; }, {}, never, never, true, never>;
4819
+ }
4820
+
4821
+ interface PraxisScopeBarItem {
4822
+ id: string;
4823
+ label: string;
4824
+ filter?: Record<string, unknown> | string;
4825
+ count?: number | null;
4826
+ icon?: string;
4827
+ tone?: 'default' | 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'ready';
4828
+ isDefault?: boolean;
4829
+ tooltip?: string;
4830
+ }
4831
+ interface PraxisScopeBarConfig {
4832
+ items?: PraxisScopeBarItem[];
4833
+ activeId?: string;
4834
+ showOmnibox?: boolean;
4835
+ omniboxPlaceholder?: string;
4836
+ leadIcon?: string;
4837
+ leadLabel?: string;
4838
+ showClearButton?: boolean;
4839
+ clearLabel?: string;
4840
+ searchField?: string;
4841
+ }
4842
+ declare class PraxisScopeBarComponent implements OnInit {
4843
+ private readonly eventBus;
4844
+ private readonly destroyRef;
4845
+ chipsTrack?: ElementRef<HTMLElement>;
4846
+ private readonly itemsSignal;
4847
+ set items(val: PraxisScopeBarItem[] | undefined);
4848
+ get items(): PraxisScopeBarItem[] | undefined;
4849
+ set activeId(val: string | undefined);
4850
+ get activeId(): string | undefined;
4851
+ readonly activeIdChange: EventEmitter<string>;
4852
+ showOmnibox: boolean;
4853
+ omniboxPlaceholder: string;
4854
+ set omniboxValue(val: string | undefined);
4855
+ get omniboxValue(): string | undefined;
4856
+ readonly omniboxValueChange: EventEmitter<string>;
4857
+ omniboxDebounceMs: number;
4858
+ leadIcon: string;
4859
+ leadLabel?: string;
4860
+ showClearButton: boolean;
4861
+ clearLabel: string;
4862
+ private readonly targetSignal;
4863
+ set target(val: any);
4864
+ get target(): any;
4865
+ targetWidgetId?: string;
4866
+ scopeBarId: string;
4867
+ searchField: string;
4868
+ readonly scopeChange: EventEmitter<PraxisScopeBarItem>;
4869
+ readonly searchChange: EventEmitter<string>;
4870
+ readonly filterCriteriaChange: EventEmitter<Record<string, unknown>>;
4871
+ readonly clear: EventEmitter<void>;
4872
+ private readonly searchSubject$;
4873
+ readonly currentActiveId: i0.WritableSignal<string | null>;
4874
+ readonly currentSearchText: i0.WritableSignal<string>;
4875
+ readonly effectiveItems: i0.Signal<PraxisScopeBarItem[]>;
4876
+ ngOnInit(): void;
4877
+ isItemActive(item: PraxisScopeBarItem): boolean;
4878
+ selectScope(item: PraxisScopeBarItem): void;
4879
+ onSearchInput(event: Event): void;
4880
+ clearSearch(): void;
4881
+ resetFilters(): void;
4882
+ canClear(): boolean;
4883
+ onTrackKeydown(event: KeyboardEvent): void;
4884
+ private dispatchFilters;
4885
+ private applyCriteriaToTarget;
4886
+ private discoverItemsFromTarget;
4887
+ private normalizeFilter;
4888
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisScopeBarComponent, never>;
4889
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisScopeBarComponent, "praxis-scope-bar", never, { "items": { "alias": "items"; "required": false; }; "activeId": { "alias": "activeId"; "required": false; }; "showOmnibox": { "alias": "showOmnibox"; "required": false; }; "omniboxPlaceholder": { "alias": "omniboxPlaceholder"; "required": false; }; "omniboxValue": { "alias": "omniboxValue"; "required": false; }; "omniboxDebounceMs": { "alias": "omniboxDebounceMs"; "required": false; }; "leadIcon": { "alias": "leadIcon"; "required": false; }; "leadLabel": { "alias": "leadLabel"; "required": false; }; "showClearButton": { "alias": "showClearButton"; "required": false; }; "clearLabel": { "alias": "clearLabel"; "required": false; }; "target": { "alias": "target"; "required": false; }; "targetWidgetId": { "alias": "targetWidgetId"; "required": false; }; "scopeBarId": { "alias": "scopeBarId"; "required": false; }; "searchField": { "alias": "searchField"; "required": false; }; }, { "activeIdChange": "activeIdChange"; "omniboxValueChange": "omniboxValueChange"; "scopeChange": "scopeChange"; "searchChange": "searchChange"; "filterCriteriaChange": "filterCriteriaChange"; "clear": "clear"; }, never, never, true, never>;
4890
+ static ngAcceptInputType_showOmnibox: unknown;
4891
+ static ngAcceptInputType_omniboxDebounceMs: unknown;
4892
+ static ngAcceptInputType_showClearButton: unknown;
4893
+ }
4894
+
4649
4895
  declare class DataFormatterComponent implements OnInit, OnChanges {
4650
4896
  private cdr;
4651
4897
  private formattingService;
@@ -5465,5 +5711,134 @@ declare function coerceTableComponentEditPlan(value: unknown): TableComponentEdi
5465
5711
  declare function compileTableComponentEditPlans(plans: TableComponentEditPlan[], currentConfig: TableConfig): TableComponentEditPlanCompileResult;
5466
5712
  declare function compileTableComponentEditPlan(plan: TableComponentEditPlan, currentConfig: TableConfig): TableComponentEditPlanCompileResult;
5467
5713
 
5468
- export { ANALYTICS_TABLE_ROW_KEY_FIELD, AnalyticsTableConfigAdapterService, AnalyticsTableContractService, AnalyticsTableStatsApiService, BOOLEAN_PRESETS, BehaviorConfigEditorComponent, CURRENCY_PRESETS, ColumnsConfigEditorComponent, DATE_PRESETS, DataFormatterComponent, DataFormattingService, FORMULA_TEMPLATES, FilterConfigService, FilterSettingsComponent, FormulaGeneratorService, JsonConfigEditorComponent, MessagesLocalizationEditorComponent, NUMBER_PRESETS, PERCENTAGE_PRESETS, PRAXIS_FILTER_AUTHORING_MANIFEST, PRAXIS_FILTER_COMPONENT_METADATA, PRAXIS_FILTER_VIEW_CONTEXT_SCHEMA_VERSION, PRAXIS_TABLE_AUTHORING_MANIFEST, PRAXIS_TABLE_COMPONENT_METADATA, PRAXIS_TABLE_TOOLBAR_APPEARANCE_PRESETS, PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, PraxisFilter, PraxisFilterWidgetConfigEditor, PraxisTable, PraxisTableConfigEditor, PraxisTableInlineAuthoringEditorComponent, PraxisTableToolbar, PraxisTableWidgetConfigEditor, STRING_PRESETS, TABLE_AI_CAPABILITIES, TABLE_COMPONENT_AI_CAPABILITIES, TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, TABLE_COMPONENT_EDIT_PLAN_KIND, TABLE_COMPONENT_EDIT_PLAN_VERSION, TASK_PRESETS, TableDefaultsProvider, TableRulesEditorComponent, ToolbarActionsEditorComponent, ValueMappingEditorComponent, VisualFormulaBuilderComponent, analyticsComparisonMetricField, buildTableApplyPlan, coerceTableComponentEditPlan, coerceTableComponentEditPlans, compileTableComponentEditPlan, compileTableComponentEditPlans, createTableAuthoringDocument, getActionId, getEnum, getTableCapabilities, getTableComponentEditPlanCapabilities, isTableRendererSupportedByRichContentP0, mapTableRendererToRichContentP0, normalizeTableAuthoringDocument, parseLegacyOrTableDocument, providePraxisFilterMetadata, providePraxisTableMetadata, providePraxisTableToolbarAppearance, serializeTableAuthoringDocument, toCanonicalTableConfig, validateTableAuthoringDocument };
5469
- export type { ActionLike, AnalyticsComparisonMetricValueKind, AnalyticsTableConfigAdapterOptions, AnalyticsTableContractDefinition, AnalyticsTableContractLoadOptions, AnalyticsTableContractLoadResult, AnalyticsTableContractSource, AnalyticsTableRow, AnalyticsTableViewModel, ArithmeticParams, BehaviorConfigChange, BooleanFormatterOptions, BulkAction, Capability$1 as Capability, CapabilityCatalog$1 as CapabilityCatalog, CapabilityCategory$1 as CapabilityCategory, ColumnChange, ColumnDataType$1 as ColumnDataType, ConcatenationParams, ConditionalMappingParams, CurrencyFormatterOptions, DataFormattingOptions, DataMode, DateFormatterOptions, DefaultValueParams, EditorDiagnostic, EditorDocument, FieldSchema, FilterConfig, FilterTag, FormatPreset, FormatterConfig, FormulaDefinition, FormulaParameterSchema, FormulaParams, FormulaTemplate, FormulaType, I18n, JsonEditorEvent, JsonValidationResult, MessagesLocalizationChange, NestedPropertyParams, NumberFormatterOptions, PercentageFormatterOptions, PraxisFilterViewContext, PraxisFilterViewField, PraxisFilterWidgetEditorInputs, PraxisFilterWidgetEditorValue, PraxisTableWidgetEditorInputs, PraxisTableWidgetEditorValue, ResourcePathIntent, RowAction, RowExpansionChangeBase, RowExpansionChangeEvent, RowExpansionReasonCode, RowExpansionTrigger, StringFormatterOptions, TableAiContext, TableAiNavigationContextPack, TableAiNavigationDestinationContext, TableApplyPlan, TableAuthoringDocument, TableBindings, Capability as TableComponentCapability, CapabilityCatalog as TableComponentCapabilityCatalog, CapabilityCategory as TableComponentCapabilityCategory, TableComponentEditChangeKind, TableComponentEditPlan, TableComponentEditPlanCompileResult, ValueKind as TableComponentValueKind, TableConfigPersistenceStrategy, TableHorizontalScroll, TableProjectionContext, TableRichContentP0Node, TableRuntimeContext, TableValidationContext, ToolbarAction, ToolbarActionsChange, ValueKind$1 as ValueKind, ValueMappingPair };
5714
+ declare function isAnalyticalDrawerSchema(schema: unknown): schema is PraxisAnalyticalDrawerSchema;
5715
+ declare function interpolateRelationEndpoint(endpoint: string, row: Record<string, unknown> | null | undefined): {
5716
+ url: string;
5717
+ hasMissingTokens: boolean;
5718
+ };
5719
+ declare class PraxisAnalyticalDrawerComponent implements OnInit, OnChanges, OnDestroy {
5720
+ private _isOpen;
5721
+ private previousActiveElement;
5722
+ handleDocumentEscape(event?: Event): void;
5723
+ set isOpen(value: boolean);
5724
+ get isOpen(): boolean;
5725
+ private _resourcePath?;
5726
+ set resourcePath(value: string | undefined);
5727
+ get resourcePath(): string | undefined;
5728
+ surfaceName: string;
5729
+ private _drawerConfig;
5730
+ set drawerConfig(value: TableDrawerConfig | null);
5731
+ get drawerConfig(): TableDrawerConfig | null;
5732
+ private _row;
5733
+ set row(value: any | null);
5734
+ get row(): any | null;
5735
+ relations: Record<string, unknown>;
5736
+ loadingRelations: boolean;
5737
+ closeDrawer: EventEmitter<void>;
5738
+ tabChange: EventEmitter<string>;
5739
+ relationFetch: EventEmitter<{
5740
+ key: string;
5741
+ endpoint: string;
5742
+ }>;
5743
+ protected readonly activeTabId: i0.WritableSignal<string>;
5744
+ protected readonly customRelations: i0.WritableSignal<Record<string, unknown>>;
5745
+ protected readonly isFetchingRelations: i0.WritableSignal<boolean>;
5746
+ protected readonly resolvedRemoteConfig: i0.WritableSignal<TableDrawerConfig | null>;
5747
+ protected readonly isResolvingSchema: i0.WritableSignal<boolean>;
5748
+ private readonly evaluator;
5749
+ private readonly http;
5750
+ private readonly drawerRegistry;
5751
+ private readonly apiUrl;
5752
+ private readonly sanitizer;
5753
+ private readonly formattingService;
5754
+ private relationSubs;
5755
+ private schemaSub?;
5756
+ private static readonly urlCache;
5757
+ private static readonly schemaCache;
5758
+ private lastFetchedKey;
5759
+ private lastResolvingKey;
5760
+ static clearCache(): void;
5761
+ private resolveUrl;
5762
+ ngOnInit(): void;
5763
+ ngOnChanges(changes: SimpleChanges): void;
5764
+ ngOnDestroy(): void;
5765
+ getEffectiveDrawerConfig(): TableDrawerConfig | null;
5766
+ private mergeTabs;
5767
+ private resolveRemoteDrawerMetadata;
5768
+ protected onClose(): void;
5769
+ protected onBackdropClick(event: MouseEvent): void;
5770
+ protected selectTab(tabId: string): void;
5771
+ private getAnalyticalSchema;
5772
+ protected resolvedTabs: i0.Signal<PraxisAnalyticalDrawerTab[]>;
5773
+ private generateAutoOverviewProperties;
5774
+ private formatPropertyLabel;
5775
+ protected resolvedTitle: i0.Signal<string>;
5776
+ protected resolvedSubtitle: i0.Signal<string>;
5777
+ protected resolvedClassificationPill: i0.Signal<string>;
5778
+ protected resolvedWidth: i0.Signal<string>;
5779
+ protected getDrawerIcon(): string;
5780
+ protected getEvaluationContext(): Record<string, unknown>;
5781
+ protected isCardGridContent(content: unknown): boolean;
5782
+ protected asCardGrid(content: unknown): {
5783
+ columns?: number;
5784
+ cards?: any[];
5785
+ };
5786
+ protected getGridColumnsStyle(columns?: number): string;
5787
+ protected isRichContentDocument(content: unknown): boolean;
5788
+ protected asRichContentDocument(content: unknown): RichContentDocument;
5789
+ protected isPropertyGrid(content: unknown): boolean;
5790
+ protected asPropertyGrid(content: unknown): any[];
5791
+ protected isArray(val: unknown): boolean;
5792
+ protected evaluateAndFormatMetric(item: any): string;
5793
+ protected evaluatePropertyValue(item: any): string;
5794
+ protected renderMicroViz(viz: PraxisPresentationVisualizationConfig | undefined, item: any): SafeHtml;
5795
+ private syncActiveTab;
5796
+ private fetchConfiguredRelations;
5797
+ private cancelRelationRequests;
5798
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisAnalyticalDrawerComponent, never>;
5799
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisAnalyticalDrawerComponent, "praxis-analytical-drawer", never, { "isOpen": { "alias": "isOpen"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; "surfaceName": { "alias": "surfaceName"; "required": false; }; "drawerConfig": { "alias": "drawerConfig"; "required": false; }; "row": { "alias": "row"; "required": false; }; "relations": { "alias": "relations"; "required": false; }; "loadingRelations": { "alias": "loadingRelations"; "required": false; }; }, { "closeDrawer": "closeDrawer"; "tabChange": "tabChange"; "relationFetch": "relationFetch"; }, never, never, true, never>;
5800
+ }
5801
+
5802
+ type AnalyticalDrawerSchemaOrConfig = PraxisAnalyticalDrawerSchema | TableDrawerConfig;
5803
+ declare const PRAXIS_ANALYTICAL_DRAWER_SCHEMAS: InjectionToken<Record<string, AnalyticalDrawerSchemaOrConfig> | Record<string, AnalyticalDrawerSchemaOrConfig>[]>;
5804
+ /**
5805
+ * Registra esquemas de gavetas analíticas por coordenada de recurso (ex.: 'operations/incidentes').
5806
+ * Pode ser chamado no app.config.ts ou em providers de rotas/módulos.
5807
+ */
5808
+ declare function providePraxisAnalyticalDrawerSchemas(schemas: Record<string, AnalyticalDrawerSchemaOrConfig>): Provider;
5809
+ declare class AnalyticalDrawerRegistryService {
5810
+ private readonly registry;
5811
+ constructor();
5812
+ register(resourcePath: string, schema: AnalyticalDrawerSchemaOrConfig): void;
5813
+ registerAll(schemas: Record<string, AnalyticalDrawerSchemaOrConfig>): void;
5814
+ get(resourcePath: string): AnalyticalDrawerSchemaOrConfig | undefined;
5815
+ has(resourcePath: string): boolean;
5816
+ clear(): void;
5817
+ normalizeKey(path: string | undefined | null): string;
5818
+ static ɵfac: i0.ɵɵFactoryDeclaration<AnalyticalDrawerRegistryService, never>;
5819
+ static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticalDrawerRegistryService>;
5820
+ }
5821
+
5822
+ interface ComputedFieldsEvaluationOptions {
5823
+ evaluator?: SafeExpressionEvaluator;
5824
+ formattingService?: {
5825
+ formatValue: (value: any, columnType: any, formatString: string) => any;
5826
+ } | null;
5827
+ }
5828
+ /**
5829
+ * Normaliza a definição de um campo computado (aceita string simples ou objeto estruturado).
5830
+ */
5831
+ declare function normalizeComputedFieldDefinition(raw: PraxisComputedFieldDefinition | string): PraxisComputedFieldDefinition;
5832
+ /**
5833
+ * Formata um valor calculado com suporte a moedas, porcentagens, números e formato compacto corporativo (ex: R$ 3,1M).
5834
+ */
5835
+ declare function formatComputedFieldValue(value: unknown, format?: string, type?: string, formattingService?: ComputedFieldsEvaluationOptions['formattingService']): unknown;
5836
+ /**
5837
+ * Enriquece uma coleção de linhas com as propriedades calculadas declaradas em `computedFieldsConfig`.
5838
+ * Executado durante o pipeline de ingestão de dados, tornando as propriedades computadas
5839
+ * nativamente visíveis para colunas, sorting, filtros, gavetas analíticas e exportação.
5840
+ */
5841
+ declare function applyComputedFieldsToRows<T extends Record<string, any> = Record<string, any>>(rows: T[], computedFieldsConfig?: PraxisComputedFieldsConfig | null, options?: ComputedFieldsEvaluationOptions): T[];
5842
+
5843
+ export { ANALYTICS_TABLE_ROW_KEY_FIELD, AnalyticalDrawerRegistryService, AnalyticsTableConfigAdapterService, AnalyticsTableContractService, AnalyticsTableStatsApiService, BOOLEAN_PRESETS, BehaviorConfigEditorComponent, CURRENCY_PRESETS, ColumnsConfigEditorComponent, DATE_PRESETS, DataFormatterComponent, DataFormattingService, FORMULA_TEMPLATES, FilterConfigService, FilterSettingsComponent, FormulaGeneratorService, JsonConfigEditorComponent, MessagesLocalizationEditorComponent, NUMBER_PRESETS, PERCENTAGE_PRESETS, PRAXIS_ANALYTICAL_DRAWER_SCHEMAS, PRAXIS_FILTER_AUTHORING_MANIFEST, PRAXIS_FILTER_COMPONENT_METADATA, PRAXIS_FILTER_VIEW_CONTEXT_SCHEMA_VERSION, PRAXIS_TABLE_AUTHORING_MANIFEST, PRAXIS_TABLE_COMPONENT_METADATA, PRAXIS_TABLE_TOOLBAR_APPEARANCE_PRESETS, PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, PraxisAnalyticalDrawerComponent, PraxisFilter, PraxisFilterOutletComponent, PraxisFilterOutletDirective, PraxisFilterWidgetConfigEditor, PraxisScopeBarComponent, PraxisTable, PraxisTableConfigEditor, PraxisTableInlineAuthoringEditorComponent, PraxisTableToolbar, PraxisTableWidgetConfigEditor, STRING_PRESETS, TABLE_AI_CAPABILITIES, TABLE_COMPONENT_AI_CAPABILITIES, TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, TABLE_COMPONENT_EDIT_PLAN_KIND, TABLE_COMPONENT_EDIT_PLAN_VERSION, TASK_PRESETS, TableDefaultsProvider, TableRulesEditorComponent, ToolbarActionsEditorComponent, ValueMappingEditorComponent, VisualFormulaBuilderComponent, analyticsComparisonMetricField, applyComputedFieldsToRows, buildTableApplyPlan, coerceTableComponentEditPlan, coerceTableComponentEditPlans, compileTableComponentEditPlan, compileTableComponentEditPlans, createTableAuthoringDocument, formatComputedFieldValue, getActionId, getEnum, getTableCapabilities, getTableComponentEditPlanCapabilities, interpolateRelationEndpoint, isAnalyticalDrawerSchema, isTableRendererSupportedByRichContentP0, mapTableRendererToRichContentP0, normalizeComputedFieldDefinition, normalizeTableAuthoringDocument, parseLegacyOrTableDocument, providePraxisAnalyticalDrawerSchemas, providePraxisFilterMetadata, providePraxisTableMetadata, providePraxisTableToolbarAppearance, serializeTableAuthoringDocument, toCanonicalTableConfig, validateTableAuthoringDocument };
5844
+ export type { ActionLike, AnalyticalDrawerSchemaOrConfig, AnalyticsComparisonMetricValueKind, AnalyticsTableConfigAdapterOptions, AnalyticsTableContractDefinition, AnalyticsTableContractLoadOptions, AnalyticsTableContractLoadResult, AnalyticsTableContractSource, AnalyticsTableRow, AnalyticsTableViewModel, ArithmeticParams, BehaviorConfigChange, BooleanFormatterOptions, BulkAction, Capability$1 as Capability, CapabilityCatalog$1 as CapabilityCatalog, CapabilityCategory$1 as CapabilityCategory, ColumnChange, ColumnDataType$1 as ColumnDataType, ComputedFieldsEvaluationOptions, ConcatenationParams, ConditionalMappingParams, CurrencyFormatterOptions, DataFormattingOptions, DataMode, DateFormatterOptions, DefaultValueParams, DrawerOpenEvent, EditorDiagnostic, EditorDocument, FieldSchema, FilterConfig, FilterTag, FormatPreset, FormatterConfig, FormulaDefinition, FormulaParameterSchema, FormulaParams, FormulaTemplate, FormulaType, I18n, JsonEditorEvent, JsonValidationResult, MessagesLocalizationChange, NestedPropertyParams, NumberFormatterOptions, PercentageFormatterOptions, PraxisFilterOutletTarget, PraxisFilterTeleportHost, PraxisFilterViewContext, PraxisFilterViewField, PraxisFilterWidgetEditorInputs, PraxisFilterWidgetEditorValue, PraxisScopeBarConfig, PraxisScopeBarItem, PraxisTableCrossFilterItem, PraxisTableQueryContextClearEvent, PraxisTableWidgetEditorInputs, PraxisTableWidgetEditorValue, ResourcePathIntent, RowAction, RowClickEvent, RowDoubleClickEvent, RowExpansionChangeBase, RowExpansionChangeEvent, RowExpansionReasonCode, RowExpansionTrigger, RowSelectionChangeEvent, StringFormatterOptions, TableAiContext, TableAiNavigationContextPack, TableAiNavigationDestinationContext, TableApplyPlan, TableAuthoringDocument, TableBindings, Capability as TableComponentCapability, CapabilityCatalog as TableComponentCapabilityCatalog, CapabilityCategory as TableComponentCapabilityCategory, TableComponentEditChangeKind, TableComponentEditPlan, TableComponentEditPlanCompileResult, ValueKind as TableComponentValueKind, TableConfigPersistenceStrategy, TableHorizontalScroll, TableProjectionContext, TableRichContentP0Node, TableRuntimeContext, TableValidationContext, ToolbarAction, ToolbarActionsChange, ValueKind$1 as ValueKind, ValueMappingPair };