@praxisui/table 8.0.0-beta.2 → 8.0.0-beta.21

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.
Files changed (38) hide show
  1. package/README.md +150 -8
  2. package/docs/DSL-Extensions-Guide.md +23 -0
  3. package/docs/adr/2026-03-dynamic-filter-cross-lib-coupling.md +107 -0
  4. package/docs/adr/2026-03-filter-drawer-adapter-light-entrypoint.md +105 -0
  5. package/docs/adr/2026-03-table-editor-idfield-decision.md +85 -0
  6. package/docs/column-resize-reorder-implementation-plan.md +338 -0
  7. package/docs/column-resize-reorder-review-prompt.md +34 -0
  8. package/docs/dynamic-filter-architecture-overview.md +207 -0
  9. package/docs/dynamic-filter-backend-contract-cheatsheet.md +167 -0
  10. package/docs/dynamic-filter-editor-settings-guide.md +229 -0
  11. package/docs/dynamic-filter-host-integration-guide.md +217 -0
  12. package/docs/dynamic-filter-payload-contract.md +331 -0
  13. package/docs/dynamic-filter-range-filters-guide.md +289 -0
  14. package/docs/dynamic-filter-troubleshooting-guide.md +220 -0
  15. package/docs/dynamic-inline-filter-catalog.md +147 -0
  16. package/docs/e2e-column-drag-playwright.md +62 -0
  17. package/docs/expandable-rows-enterprise-big-leagues-plan.md +1080 -0
  18. package/docs/json-logic-operators-and-helpers.md +57 -0
  19. package/docs/local-data-mode-precedence.md +12 -0
  20. package/docs/local-data-pre-implementation-baseline.md +22 -0
  21. package/docs/local-data-preimplementation-go-no-go.md +39 -0
  22. package/docs/local-data-support-implementation-plan.md +524 -0
  23. package/docs/local-data-support-pr-package.md +66 -0
  24. package/docs/localization-persistence-merge.md +22 -0
  25. package/docs/performance-hardening-v2-implementation-plan.md +479 -0
  26. package/docs/playground-scenario-curation-plan.md +482 -0
  27. package/docs/playground-scenario-second-opinion-prompt.md +121 -0
  28. package/docs/playground-scenario-second-opinion-review.md +234 -0
  29. package/docs/release-notes-p1-hardening.md +76 -0
  30. package/docs/table-authoring-document-completeness-checklist.md +120 -0
  31. package/docs/table-editor-capability-review-prompt.md +349 -0
  32. package/docs/visual-rules-editor-transition.md +29 -0
  33. package/fesm2022/{praxisui-table-table-agentic-authoring-turn-flow-tu7jtTwV.mjs → praxisui-table-table-agentic-authoring-turn-flow-DRuE55Mi.mjs} +100 -0
  34. package/fesm2022/{praxisui-table-table-ai.adapter-DxjDaQqy.mjs → praxisui-table-table-ai.adapter-fS74fZ7o.mjs} +14 -5
  35. package/fesm2022/praxisui-table.mjs +5317 -736
  36. package/index.d.ts +325 -106
  37. package/package.json +15 -9
  38. package/src/lib/praxis-table.json-api.md +1325 -0
package/index.d.ts CHANGED
@@ -10,16 +10,15 @@ import { CdkDragDrop, CdkDragEnd, CdkDrag, CdkDropList } from '@angular/cdk/drag
10
10
  import { BehaviorSubject, Subscription, Observable } from 'rxjs';
11
11
  import { SettingsPanelService, SettingsValueProvider } from '@praxisui/settings-panel';
12
12
  import * as _praxisui_core from '@praxisui/core';
13
- import { TableConfig, LoggerService, PraxisI18nService, GlobalConfigService, AsyncConfigStorage, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, LoadingState, RestApiLinks, ColumnDefinition, RichBlockNode, ConnectionStorage, ResourceDiscoveryService, LoadingOrchestrator, PraxisLoadingRenderer, TableDetailRichListNode, TableDetailCardGridNode, TableDetailCardGridCardNode, TableDetailTimelineNode, JsonLogicDataRecord, TableDetailListItemAction, TableDetailActionBarNode, TableDetailActionBarAction, TableDetailRefNode, TableDetailTemplateRefNode, TableDetailDiagramEmbedNode, TableDetailEmbedAction, ResourceActionCatalogItem, JsonLogicExpression, GlobalActionSpec, IconPickerService, SurfaceOpenPayload, GlobalActionField, FieldDefinition, PraxisJsonLogicService, TableConfigService, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, AnalyticsSchemaContractService, AnalyticsPresentationResolver, RichPresenterNode, RichComposeNode, AiCapabilityCategory, AiValueKind, AiCapability, AiCapabilityCatalog } from '@praxisui/core';
13
+ import { TableConfig, LoggerService, PraxisI18nService, GlobalConfigService, AsyncConfigStorage, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, LoadingState, RestApiLinks, ColumnDefinition, RichBlockNode, ConnectionStorage, ResourceDiscoveryService, LoadingOrchestrator, GlobalActionService, PraxisLoadingRenderer, TableDetailRichListNode, TableDetailCardGridNode, TableDetailCardGridCardNode, TableDetailTimelineNode, JsonLogicDataRecord, TableDetailListItemAction, TableDetailActionBarNode, TableDetailActionBarAction, TableDetailRefNode, TableDetailTemplateRefNode, TableDetailDiagramEmbedNode, TableDetailEmbedAction, GlobalActionRef, PraxisRuntimeGlobalActionEffect, ResourceActionCatalogItem, ResourceSurfaceCatalogItem, JsonLogicExpression, GlobalActionCatalogEntry, IconPickerService, SurfaceOpenPayload, GlobalActionField, FieldDefinition, PraxisRuntimeConditionalEffectRule, PraxisJsonLogicService, TableConfigService, SettingsValueProvider as SettingsValueProvider$1, AnalyticsSchemaContractService, AnalyticsPresentationResolver, RichPresenterNode, RichComposeNode, ComponentAuthoringManifest, AiCapabilityCategory, AiValueKind, AiCapability, AiCapabilityCatalog } from '@praxisui/core';
14
14
  import { FormGroup, FormControl, FormBuilder } from '@angular/forms';
15
15
  import { MatDialog } from '@angular/material/dialog';
16
16
  import { CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';
17
17
  import { PraxisDialog } from '@praxisui/dialog';
18
- import { PraxisAssistantTurnViewState, PraxisAssistantShellLayout, PraxisAssistantShellLabels, PraxisAssistantShellQuickReply, PraxisAssistantShellMessage } from '@praxisui/ai';
18
+ import { PraxisAssistantTurnViewState, PraxisAssistantShellLayout, PraxisAssistantShellLabels, PraxisAssistantSessionSnapshot, PraxisAssistantShellQuickReply, PraxisAssistantShellMessage } from '@praxisui/ai';
19
+ import { HttpClient } from '@angular/common/http';
19
20
  import { MatTabChangeEvent } from '@angular/material/tabs';
20
- import * as _praxisui_table_rule_builder from '@praxisui/table-rule-builder';
21
21
  import { RuleEffectDefinition } from '@praxisui/table-rule-builder';
22
- import { HttpClient } from '@angular/common/http';
23
22
  import * as _angular_material_paginator_d_Zo1cMMo4 from '@angular/material/paginator.d-Zo1cMMo4';
24
23
  import { MatCheckboxChange } from '@angular/material/checkbox';
25
24
 
@@ -46,11 +45,15 @@ declare class PraxisTableToolbar implements OnDestroy {
46
45
  showActionsGroup: boolean;
47
46
  showEndActions: boolean;
48
47
  showMobileActions: boolean;
48
+ exportBusy: boolean;
49
49
  evaluationContext: Record<string, any> | null;
50
50
  toolbarAction: EventEmitter<{
51
51
  action: string;
52
52
  actionConfig?: any;
53
53
  }>;
54
+ exportAction: EventEmitter<{
55
+ format: string;
56
+ }>;
54
57
  readonly getActionId: typeof getActionId;
55
58
  private readonly jsonLogic;
56
59
  private readonly validToolbarActionTypes;
@@ -65,6 +68,7 @@ declare class PraxisTableToolbar implements OnDestroy {
65
68
  constructor(hostRef?: ElementRef<HTMLElement> | null, logger?: LoggerService | undefined, i18n?: PraxisI18nService | undefined);
66
69
  getExportDataLabel(): string;
67
70
  getMoreActionsLabel(): string;
71
+ emitExportAction(event: Event, format: string): void;
68
72
  private tx;
69
73
  ngOnDestroy(): void;
70
74
  private getNestedPropertyValue;
@@ -112,7 +116,7 @@ declare class PraxisTableToolbar implements OnDestroy {
112
116
  private sortActions;
113
117
  getExportIcon(format: string): string;
114
118
  static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableToolbar, [null, { optional: true; }, { optional: true; }]>;
115
- static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableToolbar, "praxis-table-toolbar", never, { "config": { "alias": "config"; "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; }; "evaluationContext": { "alias": "evaluationContext"; "required": false; }; }, { "toolbarAction": "toolbarAction"; }, never, ["[advancedFilter]", "[toolbar]", "[end-actions]"], true, never>;
119
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableToolbar, "praxis-table-toolbar", never, { "config": { "alias": "config"; "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; }; }, { "toolbarAction": "toolbarAction"; "exportAction": "exportAction"; }, never, ["[advancedFilter]", "[toolbar]", "[end-actions]"], true, never>;
116
120
  }
117
121
 
118
122
  type ColumnDataType$1 = 'date' | 'number' | 'currency' | 'percentage' | 'string' | 'boolean' | 'custom';
@@ -739,6 +743,9 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
739
743
  private persistTags;
740
744
  private cleanFilterPayload;
741
745
  private upsertDtoValue;
746
+ private normalizeFilterFieldValue;
747
+ private getFilterFieldMetaByName;
748
+ private isEntityLookupFilterField;
742
749
  private isEffectivelyEmptyFilterValue;
743
750
  private syncFormsToDto;
744
751
  private updateDisplayedTags;
@@ -754,6 +761,49 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
754
761
  declare const PRAXIS_FILTER_COMPONENT_METADATA: ComponentDocMeta;
755
762
  declare function providePraxisFilterMetadata(): Provider;
756
763
 
764
+ type AnalyticsTableRow = Record<string, string | number | boolean | null>;
765
+ type AnalyticsTableContractSource = 'remote' | 'fallback';
766
+ interface AnalyticsTableViewModel {
767
+ config: TableConfig;
768
+ data: AnalyticsTableRow[];
769
+ }
770
+ interface AnalyticsTableContractDefinition<TKey extends string = string> {
771
+ key: TKey;
772
+ projectionId: string;
773
+ path: string;
774
+ title: PraxisTextValue;
775
+ subtitle?: PraxisTextValue;
776
+ fallbackProjection: PraxisAnalyticsProjection;
777
+ fallbackRows?: AnalyticsTableRow[];
778
+ }
779
+ interface AnalyticsTableContractLoadOptions<TKey extends string = string> {
780
+ cacheNamespace?: string;
781
+ queryContexts?: Partial<Record<TKey, PraxisDataQueryContext | null>>;
782
+ }
783
+ interface AnalyticsTableContractLoadResult<TKey extends string = string> {
784
+ views: Record<TKey, AnalyticsTableViewModel>;
785
+ sources: Record<TKey, AnalyticsTableContractSource>;
786
+ errors: Partial<Record<TKey, string>>;
787
+ }
788
+
789
+ declare class AnalyticsTableStatsApiService {
790
+ private readonly http;
791
+ private readonly apiUrl;
792
+ private readonly statsBuilder;
793
+ constructor(http: HttpClient, apiUrl: ApiUrlConfig);
794
+ execute(projection: PraxisAnalyticsProjection, queryContext?: PraxisDataQueryContext | null): Promise<AnalyticsTableRow[]>;
795
+ private toTableRows;
796
+ private resolveTimeSeriesCategory;
797
+ private resolveBucketCategory;
798
+ private projectMetricValues;
799
+ private resolveMetricValue;
800
+ private buildStatsUrl;
801
+ private applyQueryContext;
802
+ private normalizeError;
803
+ static ɵfac: i0.ɵɵFactoryDeclaration<AnalyticsTableStatsApiService, never>;
804
+ static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableStatsApiService>;
805
+ }
806
+
757
807
  type SchemaFieldHint = {
758
808
  name: string;
759
809
  label?: string;
@@ -835,6 +885,8 @@ type RowActionRuntimeOptions = {
835
885
  type RuntimeRowAction = {
836
886
  id: string;
837
887
  action: string;
888
+ globalAction?: GlobalActionRef;
889
+ effects?: PraxisRuntimeGlobalActionEffect[];
838
890
  label?: string;
839
891
  icon?: string;
840
892
  color?: string;
@@ -842,6 +894,7 @@ type RuntimeRowAction = {
842
894
  disabled?: boolean;
843
895
  overflow?: boolean;
844
896
  __praxisDiscoveredAction?: ResourceActionCatalogItem;
897
+ __praxisDiscoveredSurface?: ResourceSurfaceCatalogItem;
845
898
  __praxisCapabilityDenied?: boolean;
846
899
  };
847
900
  type ExpansionDetailRuntimeStatus = 'idle' | 'loading' | 'ready' | 'error' | 'blocked';
@@ -868,9 +921,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
868
921
  private resourceDiscovery;
869
922
  private componentKeys;
870
923
  private loadingOrchestrator;
924
+ private globalActions;
871
925
  private loadingRenderer?;
872
926
  private route?;
873
927
  private logger?;
928
+ private analyticsStatsApi?;
874
929
  private static readonly CELL_ANIMATION_CHANGE_CACHE_LIMIT;
875
930
  private static readonly ROW_DISCOVERY_SUCCESS_CACHE_TTL_MS;
876
931
  private static readonly ROW_DISCOVERY_ERROR_CACHE_TTL_MS;
@@ -900,6 +955,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
900
955
  rowAction: EventEmitter<any>;
901
956
  toolbarAction: EventEmitter<any>;
902
957
  bulkAction: EventEmitter<any>;
958
+ exportAction: EventEmitter<any>;
903
959
  columnReorder: EventEmitter<any>;
904
960
  columnReorderAttempt: EventEmitter<any>;
905
961
  beforeDelete: EventEmitter<any>;
@@ -937,6 +993,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
937
993
  readonly isExpansionDetailRow: (index: number, row: any) => boolean;
938
994
  columnReorderStatusMessage: string;
939
995
  columnReorderVisualStatusMessage: string;
996
+ exportBusy: boolean;
997
+ exportStatusMessage: string;
940
998
  private columnReorderStatusTimer;
941
999
  private columnReorderVisualStatusTimer;
942
1000
  private columnReorderUndoSubscription;
@@ -949,6 +1007,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
949
1007
  private lastResolvedDataMode;
950
1008
  private localFilterFieldMetadataCache;
951
1009
  private localFilterFieldMetadataCacheKey;
1010
+ private analyticsLoadSequence;
952
1011
  private uncontrolledExpandedRowKeys;
953
1012
  private readonly expansionOpaqueRefCacheLimit;
954
1013
  private expansionOpaqueRefByRowKey;
@@ -976,6 +1035,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
976
1035
  private rowDiscoveryMarkForCheckScheduled;
977
1036
  private lastRowDiscoveryScopeKey;
978
1037
  private readonly i18n;
1038
+ private readonly collectionExport;
979
1039
  private readonly paginatorIntl;
980
1040
  private schemaFieldsSnapshot;
981
1041
  private runtimeSchemaMeta;
@@ -1025,6 +1085,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1025
1085
  hasBottomPaginator(): boolean;
1026
1086
  hasExplicitResourcePath(): boolean;
1027
1087
  hasLocalDataInput(): boolean;
1088
+ hasAnalyticsProjectionInput(): boolean;
1028
1089
  getDataMode(): DataMode;
1029
1090
  isRemoteMode(): boolean;
1030
1091
  isLocalMode(): boolean;
@@ -1081,7 +1142,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1081
1142
  private aiAssistantController;
1082
1143
  private aiAssistantStateSubscription;
1083
1144
  private readonly aiApi;
1145
+ private readonly assistantSessions;
1084
1146
  private readonly aiTurnOrchestrator;
1147
+ private readonly aiAssistantSessionEffect;
1085
1148
  private computedContextCache;
1086
1149
  private computedFieldNames;
1087
1150
  private readonly jsonLogic;
@@ -1130,19 +1193,32 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1130
1193
  private ensureConfigDefaults;
1131
1194
  private setShowToolbar;
1132
1195
  private shouldExposeToolbar;
1133
- constructor(cdr: ChangeDetectorRef, settingsPanel: SettingsPanelService, crudService: GenericCrudService<any, any>, tableDefaultsProvider: TableDefaultsProvider, filterConfig: FilterConfigService, formattingService: DataFormattingService, pxDialog: PraxisDialog, snackBar: MatSnackBar, asyncConfigStorage: AsyncConfigStorage, connectionStorage: ConnectionStorage, hostRef: ElementRef<HTMLElement>, global: GlobalConfigService, resourceDiscovery: ResourceDiscoveryService, componentKeys: ComponentKeyService, loadingOrchestrator: LoadingOrchestrator, loadingRenderer?: PraxisLoadingRenderer | undefined, route?: ActivatedRoute | undefined, logger?: LoggerService | undefined);
1196
+ constructor(cdr: ChangeDetectorRef, settingsPanel: SettingsPanelService, crudService: GenericCrudService<any, any>, tableDefaultsProvider: TableDefaultsProvider, filterConfig: FilterConfigService, formattingService: DataFormattingService, pxDialog: PraxisDialog, snackBar: MatSnackBar, asyncConfigStorage: AsyncConfigStorage, connectionStorage: ConnectionStorage, hostRef: ElementRef<HTMLElement>, global: GlobalConfigService, resourceDiscovery: ResourceDiscoveryService, componentKeys: ComponentKeyService, loadingOrchestrator: LoadingOrchestrator, globalActions: GlobalActionService, loadingRenderer?: PraxisLoadingRenderer | undefined, route?: ActivatedRoute | undefined, logger?: LoggerService | undefined, analyticsStatsApi?: AnalyticsTableStatsApiService | undefined);
1134
1197
  private ensureAiAdapterLoaded;
1135
1198
  openAiAssistant(): void;
1199
+ aiAssistantTriggerTestId(position: string): string;
1200
+ openAiAssistantFromSession(session: PraxisAssistantSessionSnapshot): void;
1136
1201
  closeAiAssistant(): void;
1137
1202
  onAiAssistantPromptChange(prompt: string): void;
1138
1203
  onAiAssistantSubmit(prompt: string): void;
1139
1204
  onAiAssistantApply(): void;
1205
+ onAiAssistantRetry(): void;
1206
+ onAiAssistantCancel(): void;
1140
1207
  onAiAssistantQuickReply(reply: PraxisAssistantShellQuickReply): void;
1141
1208
  onAiAssistantEditMessage(message: PraxisAssistantShellMessage): void;
1142
1209
  onAiAssistantResendMessage(message: PraxisAssistantShellMessage): void;
1143
1210
  onAiAssistantLayoutChange(layout: PraxisAssistantShellLayout): void;
1144
1211
  private initializeAiAssistantController;
1145
1212
  private buildAiAssistantContextItems;
1213
+ private buildAiAssistantContextSnapshot;
1214
+ private syncAiAssistantSession;
1215
+ private hasAiAssistantSessionState;
1216
+ private resolveAiAssistantSessionId;
1217
+ private resolveAiAssistantOwnerId;
1218
+ private resolveAiAssistantRouteKey;
1219
+ private resolveAiAssistantSummary;
1220
+ private resolveAiAssistantBadge;
1221
+ private resolveAiAssistantIcon;
1146
1222
  private emitLoadingState;
1147
1223
  private hasResolvedRemoteDataLoad;
1148
1224
  private isTableDataLoading;
@@ -1360,19 +1436,49 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1360
1436
  private emitRowActionEvent;
1361
1437
  private showConfirmDialog;
1362
1438
  private executeDeleteAction;
1439
+ private dispatchRowAction;
1363
1440
  private cloneForEmit;
1364
1441
  private interpolateActionMessageTemplate;
1365
1442
  private buildActionFeedbackContext;
1366
1443
  private resolveActionFeedbackMessage;
1367
1444
  private showActionFeedbackMessage;
1368
1445
  private emitEventWithActionFeedback;
1446
+ private executeConfiguredGlobalAction;
1447
+ private resolveConfiguredGlobalActionRef;
1448
+ private resolveActionGlobalActionRef;
1449
+ private resolveGlobalActionPayload;
1450
+ private buildGlobalActionTemplateContext;
1451
+ private resolveGlobalActionTemplateValue;
1452
+ private isDeferredTemplateExpressionKey;
1453
+ private interpolateGlobalActionTemplate;
1454
+ private shouldEmitLocalForGlobalAction;
1369
1455
  private resolveBulkValidationMessage;
1370
1456
  private hasValidBulkSelectionCount;
1371
1457
  private showBulkConfirmDialog;
1372
1458
  onToolbarAction(event: {
1373
1459
  action: string;
1374
1460
  actionConfig?: any;
1375
- }): void;
1461
+ }): Promise<void>;
1462
+ private resolveBulkExportFormat;
1463
+ private isBulkExportActionKey;
1464
+ private normalizeExportFormat;
1465
+ private isExportFormatEnabled;
1466
+ private getFirstEnabledExportFormat;
1467
+ onExportAction(event: {
1468
+ format: string;
1469
+ }): Promise<void>;
1470
+ private shouldBlockSelectedExportWithoutSelection;
1471
+ private buildTableExportRequest;
1472
+ private resolveEffectiveExportScope;
1473
+ private resolveTableExportLoadedItems;
1474
+ private computeLocalExportRows;
1475
+ private buildTableExportFields;
1476
+ private downloadExportResult;
1477
+ private triggerExportDownload;
1478
+ private resolveExportFileName;
1479
+ private getExportFileExtension;
1480
+ private getExportMimeType;
1481
+ private showExportFeedback;
1376
1482
  onAdvancedFilterSubmit(criteria: Record<string, any>): void;
1377
1483
  onAdvancedFilterChange(criteria: Record<string, any>): void;
1378
1484
  onAdvancedFilterClear(): void;
@@ -1507,6 +1613,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1507
1613
  private pruneRowDiscoveryCaches;
1508
1614
  private pruneRowDiscoveryCache;
1509
1615
  private fetchData;
1616
+ private resolveAnalyticsProjection;
1617
+ private fetchAnalyticsProjectionData;
1510
1618
  private getEffectiveFilterCriteria;
1511
1619
  retryData(): void;
1512
1620
  reloadSchema(): void;
@@ -1519,9 +1627,26 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1519
1627
  * 3. format (data formatting like dates, numbers, currency)
1520
1628
  */
1521
1629
  getCellValue(rowData: any, column: ColumnDefinition): any;
1630
+ private normalizeReadonlyEntityLookupCellValue;
1631
+ private toEntityLookupDisplayToken;
1632
+ private isEntityLookupDisplayCandidate;
1633
+ private toEntityLookupDisplayPrimitive;
1522
1634
  private resolveImplicitFormat;
1523
1635
  getCellClasses(rowData: any, column: ColumnDefinition): string[] | undefined;
1524
1636
  getCellNgStyle(rowData: any, column: ColumnDefinition): Record<string, string> | undefined;
1637
+ private normalizeConditionalStyleRules;
1638
+ private normalizeConditionalStyleRecord;
1639
+ private normalizeConditionalStyleEffects;
1640
+ private hasConditionalStyleEffectPayload;
1641
+ private resolveConditionalStyleClasses;
1642
+ private resolveConditionalStyleObject;
1643
+ private compileConditionalStyleEffect;
1644
+ private normalizeConditionalRendererRules;
1645
+ private normalizeObjectRecord;
1646
+ private buildColumnRendererOverrideFromEffects;
1647
+ private buildColumnRendererFromEffect;
1648
+ private resolveRuleAnimationFromEffects;
1649
+ private resolveRowTooltipFromEffects;
1525
1650
  private resetComputedContextCache;
1526
1651
  private ensureEffectiveCellRenderCache;
1527
1652
  private ensureCellAnimationPreviousValuesByRowId;
@@ -1533,6 +1658,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1533
1658
  private buildComputedSignature;
1534
1659
  private stringifyDependencyValue;
1535
1660
  private buildComputedValueMap;
1661
+ private collectComputedColumns;
1662
+ private evaluateCanonicalComputedColumns;
1663
+ private collectComputedExpressionDependencies;
1664
+ private collectJsonLogicVarDependencies;
1665
+ private resolveJsonLogicVarPath;
1536
1666
  private buildEvaluationContext;
1537
1667
  private getJsonLogicEvaluationOptions;
1538
1668
  private resolveJsonLogicUserTimeZone;
@@ -1769,6 +1899,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1769
1899
  private reconcileSelectionAfterDataChange;
1770
1900
  private getComparableRowIdentity;
1771
1901
  getIdField(): string;
1902
+ private resolveConfigMetaIdField;
1772
1903
  private syncRuntimeSchemaMetaFromConfig;
1773
1904
  private getEffectiveMetadataSnapshot;
1774
1905
  getActionId(action: any): string;
@@ -1811,11 +1942,19 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1811
1942
  private splitVisibleRowActionsFromVisible;
1812
1943
  private decorateConfiguredRowAction;
1813
1944
  private getDiscoveredRowWorkflowActions;
1945
+ private getDiscoveredRowSurfaceActionsFromSnapshot;
1814
1946
  private getDiscoveredRowWorkflowActionsFromCatalog;
1815
1947
  private supportsRowCrudAction;
1816
1948
  private isCapabilityManagedCrudRowAction;
1817
1949
  private findItemWorkflowAction;
1950
+ private findItemSurface;
1951
+ private isRowSurfaceAction;
1952
+ private isWritableRowSurface;
1953
+ private isReadableRowSurface;
1954
+ private getDiscoveredSurfaceIcon;
1955
+ private getDiscoveredSurfaceColor;
1818
1956
  private getUnavailableWorkflowMessage;
1957
+ private getUnavailableSurfaceMessage;
1819
1958
  private normalizeActionId;
1820
1959
  private isActionVisible;
1821
1960
  trackAction(index: number, item: any): any;
@@ -1829,8 +1968,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1829
1968
  getRowMenuIcon(): string;
1830
1969
  private scheduleRowDiscoveryMarkForCheck;
1831
1970
  ngOnDestroy(): void;
1832
- static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTable, [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; }]>;
1833
- 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; }; "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; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "dense": { "alias": "dense"; "required": false; }; }, { "rowClick": "rowClick"; "rowDoubleClick": "rowDoubleClick"; "rowExpansionChange": "rowExpansionChange"; "rowAction": "rowAction"; "toolbarAction": "toolbarAction"; "bulkAction": "bulkAction"; "columnReorder": "columnReorder"; "columnReorderAttempt": "columnReorderAttempt"; "beforeDelete": "beforeDelete"; "afterDelete": "afterDelete"; "deleteError": "deleteError"; "beforeBulkDelete": "beforeBulkDelete"; "afterBulkDelete": "afterBulkDelete"; "bulkDeleteError": "bulkDeleteError"; "schemaStatusChange": "schemaStatusChange"; "metadataChange": "metadataChange"; "loadingStateChange": "loadingStateChange"; "collectionLinksChange": "collectionLinksChange"; "selectionChange": "selectionChange"; }, ["toolbar", "projectedFilter"], ["[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]"], true, never>;
1971
+ 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; }]>;
1972
+ 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; }; "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; }; "horizontalScroll": { "alias": "horizontalScroll"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "dense": { "alias": "dense"; "required": false; }; }, { "rowClick": "rowClick"; "rowDoubleClick": "rowDoubleClick"; "rowExpansionChange": "rowExpansionChange"; "rowAction": "rowAction"; "toolbarAction": "toolbarAction"; "bulkAction": "bulkAction"; "exportAction": "exportAction"; "columnReorder": "columnReorder"; "columnReorderAttempt": "columnReorderAttempt"; "beforeDelete": "beforeDelete"; "afterDelete": "afterDelete"; "deleteError": "deleteError"; "beforeBulkDelete": "beforeBulkDelete"; "afterBulkDelete": "afterBulkDelete"; "bulkDeleteError": "bulkDeleteError"; "schemaStatusChange": "schemaStatusChange"; "metadataChange": "metadataChange"; "loadingStateChange": "loadingStateChange"; "collectionLinksChange": "collectionLinksChange"; "selectionChange": "selectionChange"; }, ["toolbar", "projectedFilter"], ["[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]"], true, never>;
1834
1973
  static ngAcceptInputType_enableCustomization: unknown;
1835
1974
  }
1836
1975
 
@@ -1843,7 +1982,6 @@ interface EditorDocument<TConfig, TBindings = unknown> {
1843
1982
  type TableHorizontalScroll = 'auto' | 'wrap' | 'none';
1844
1983
  interface TableBindings {
1845
1984
  resourcePath?: string | null;
1846
- idField?: string;
1847
1985
  horizontalScroll?: TableHorizontalScroll;
1848
1986
  }
1849
1987
  interface TableAuthoringDocument extends EditorDocument<TableConfig, TableBindings> {
@@ -1900,7 +2038,6 @@ interface TableApplyPlan {
1900
2038
  };
1901
2039
  diff?: {
1902
2040
  resourcePathChanged?: boolean;
1903
- idFieldChanged?: boolean;
1904
2041
  horizontalScrollChanged?: boolean;
1905
2042
  requiresDataRefresh?: boolean;
1906
2043
  };
@@ -2373,6 +2510,8 @@ interface ToolbarAction {
2373
2510
  /** Material button appearance: filled (flat), outlined (stroked), elevated (raised), text, tonal */
2374
2511
  appearance?: 'filled' | 'outlined' | 'elevated' | 'text' | 'tonal';
2375
2512
  action: string;
2513
+ globalAction?: GlobalActionRef;
2514
+ effects?: PraxisRuntimeGlobalActionEffect[];
2376
2515
  position: 'start' | 'end';
2377
2516
  order?: number;
2378
2517
  disabled?: boolean;
@@ -2380,7 +2519,7 @@ interface ToolbarAction {
2380
2519
  shortcut?: string;
2381
2520
  shortcutScope?: 'toolbar' | 'global';
2382
2521
  tooltip?: string;
2383
- visibleWhen?: string;
2522
+ visibleWhen?: JsonLogicExpression | null;
2384
2523
  children?: ToolbarAction[];
2385
2524
  }
2386
2525
  interface RowAction {
@@ -2388,11 +2527,15 @@ interface RowAction {
2388
2527
  label: string;
2389
2528
  icon: string;
2390
2529
  action: string;
2530
+ globalAction?: GlobalActionRef;
2531
+ effects?: PraxisRuntimeGlobalActionEffect[];
2391
2532
  color?: 'primary' | 'accent' | 'warn';
2392
2533
  tooltip?: string;
2393
2534
  requiresConfirmation?: boolean;
2394
2535
  autoDelete?: boolean;
2395
2536
  separator?: boolean;
2537
+ visibleWhen?: JsonLogicExpression | null;
2538
+ disabledWhen?: JsonLogicExpression | null;
2396
2539
  conditional?: string;
2397
2540
  }
2398
2541
  interface BulkAction {
@@ -2400,6 +2543,8 @@ interface BulkAction {
2400
2543
  label: string;
2401
2544
  icon: string;
2402
2545
  action: string;
2546
+ globalAction?: GlobalActionRef;
2547
+ effects?: PraxisRuntimeGlobalActionEffect[];
2403
2548
  color?: 'primary' | 'accent' | 'warn';
2404
2549
  tooltip?: string;
2405
2550
  requiresConfirmation?: boolean;
@@ -2413,6 +2558,25 @@ interface ToolbarActionsChange {
2413
2558
  value: any;
2414
2559
  fullConfig: TableConfig;
2415
2560
  }
2561
+ type GlobalActionCatalogOption = GlobalActionCatalogEntry & {
2562
+ param?: {
2563
+ required?: boolean;
2564
+ label?: string;
2565
+ placeholder?: string;
2566
+ hint?: string;
2567
+ };
2568
+ };
2569
+ type EditableTableAction = {
2570
+ id?: string;
2571
+ label?: string;
2572
+ action?: string;
2573
+ globalAction?: GlobalActionRef;
2574
+ effects?: PraxisRuntimeGlobalActionEffect[];
2575
+ position?: string;
2576
+ appearance?: string;
2577
+ visibleWhen?: JsonLogicExpression | null;
2578
+ disabledWhen?: JsonLogicExpression | null;
2579
+ };
2416
2580
  type ToolbarShortcutScope = 'toolbar' | 'global';
2417
2581
  interface InternalActionSpec {
2418
2582
  id: string;
@@ -2433,14 +2597,14 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
2433
2597
  editingToolbarActionIndex: number | null;
2434
2598
  editingRowActionIndex: number | null;
2435
2599
  editingBulkActionIndex: number | null;
2436
- readonly globalActionCatalog: GlobalActionSpec[];
2600
+ private readonly i18n;
2601
+ readonly globalActionCatalog: GlobalActionCatalogOption[];
2437
2602
  get internalActionCatalog(): InternalActionSpec[];
2438
2603
  readonly customActionValue = "__custom__";
2439
2604
  readonly validShortcutScopes: ToolbarShortcutScope[];
2440
2605
  private readonly actionFieldDrafts;
2441
2606
  private readonly actionFieldErrors;
2442
2607
  private readonly warnedInvalidShortcutScopes;
2443
- private readonly i18n;
2444
2608
  private destroy$;
2445
2609
  constructor(fb: FormBuilder, iconPicker: IconPickerService);
2446
2610
  tx(key: string, fallback: string): string;
@@ -2469,56 +2633,37 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
2469
2633
  private removeAddToolbarAction;
2470
2634
  private syncAddFormFromActions;
2471
2635
  private updateConfig;
2472
- getActionSelectValue(value?: string): string;
2473
- getActionParam(value?: string): string;
2474
- getActionCustomValue(value?: string): string;
2636
+ getActionSelectValue(action?: EditableTableAction): string;
2637
+ getActionParam(action?: EditableTableAction): string;
2638
+ isRequiredGlobalActionParamMissing(action: EditableTableAction, spec: GlobalActionCatalogOption): boolean;
2639
+ getActionCustomValue(action?: EditableTableAction): string;
2475
2640
  isInternalAction(value?: string): boolean;
2476
- getActionSpecById(id: string): GlobalActionSpec | undefined;
2477
- onActionSelectChange(action: {
2478
- action?: string;
2479
- }, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2480
- onActionParamChange(action: {
2481
- action?: string;
2482
- }, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2483
- onActionCustomChange(action: {
2484
- action?: string;
2485
- }, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2641
+ getActionSpecById(id: string): GlobalActionCatalogOption | undefined;
2642
+ onActionSelectChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2643
+ onActionParamChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2644
+ onActionCustomChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2645
+ getCanonicalGlobalActionRef(action?: EditableTableAction): GlobalActionRef | undefined;
2646
+ private setCanonicalGlobalActionRef;
2486
2647
  private touchActionList;
2487
- private parseActionValue;
2648
+ getActionJsonLogicText(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen'): string;
2649
+ onActionJsonLogicChange(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen', value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2650
+ getActionConditionError(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen'): string;
2488
2651
  isGlobalActionId(id?: string): boolean;
2489
- getGlobalActionSchema(action: {
2490
- action?: string;
2491
- }): _praxisui_core.GlobalActionUiSchema | undefined;
2492
- getSurfaceOpenActionPayload(action: {
2493
- action?: string;
2494
- }): SurfaceOpenPayload;
2495
- onSurfaceOpenActionPayloadChange(action: {
2496
- action?: string;
2497
- }, payload: SurfaceOpenPayload, kind: 'toolbar' | 'row' | 'bulk'): void;
2498
- shouldShowGlobalActionField(action: {
2499
- action?: string;
2500
- }, field: GlobalActionField): boolean;
2501
- hasActionFieldError(action: {
2502
- action?: string;
2503
- }, key: string): boolean;
2504
- getActionFieldError(action: {
2505
- action?: string;
2506
- }, key: string): string;
2507
- getGlobalActionFieldValue(action: {
2508
- action?: string;
2509
- }, field: GlobalActionField): any;
2510
- onGlobalActionFieldChange(action: {
2511
- action?: string;
2512
- }, field: GlobalActionField, value: any, kind: 'toolbar' | 'row' | 'bulk'): void;
2513
- private getActionParamInfo;
2514
- private parseMethodAndUrl;
2652
+ getGlobalActionSchema(action: EditableTableAction): _praxisui_core.GlobalActionUiSchema | undefined;
2653
+ getSurfaceOpenActionPayload(action: EditableTableAction): SurfaceOpenPayload;
2654
+ onSurfaceOpenActionPayloadChange(action: EditableTableAction, payload: SurfaceOpenPayload, kind: 'toolbar' | 'row' | 'bulk'): void;
2655
+ shouldShowGlobalActionField(action: EditableTableAction, field: GlobalActionField): boolean;
2656
+ isGlobalActionFieldRequired(action: EditableTableAction, field: GlobalActionField): boolean;
2657
+ isGlobalActionFieldMissing(action: EditableTableAction, field: GlobalActionField): boolean;
2658
+ hasActionFieldError(action: EditableTableAction, key: string): boolean;
2659
+ getActionFieldError(action: EditableTableAction, key: string): string;
2660
+ getGlobalActionFieldValue(action: EditableTableAction, field: GlobalActionField): any;
2661
+ onGlobalActionFieldChange(action: EditableTableAction, field: GlobalActionField, value: any, kind: 'toolbar' | 'row' | 'bulk'): void;
2515
2662
  private stringifyJson;
2516
2663
  private normalizeSurfaceOpenPayload;
2517
2664
  private setActionFieldError;
2518
2665
  private clearActionFieldError;
2519
2666
  private collectGlobalActionFieldValues;
2520
- private serializeGlobalActionParam;
2521
- private buildPrimaryParam;
2522
2667
  private buildGlobalActionPayload;
2523
2668
  getToolbarActionShortcutScope(action: ToolbarAction): ToolbarShortcutScope;
2524
2669
  onToolbarActionShortcutScopeChange(action: ToolbarAction, value: ToolbarShortcutScope | string): void;
@@ -2873,12 +3018,10 @@ declare class RuleCompilerService {
2873
3018
  static ɵprov: i0.ɵɵInjectableDeclaration<RuleCompilerService>;
2874
3019
  }
2875
3020
 
2876
- type RuleItem = {
2877
- condition: JsonLogicExpression;
3021
+ type RuleItem = Omit<PraxisRuntimeConditionalEffectRule<RuleEffectDefinition>, 'effects'> & {
2878
3022
  cssClass?: string;
2879
3023
  style?: Record<string, string>;
2880
- description?: string;
2881
- effects?: _praxisui_table_rule_builder.RuleEffectDefinition;
3024
+ effects?: RuleEffectDefinition[];
2882
3025
  enabled?: boolean;
2883
3026
  };
2884
3027
  declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy {
@@ -2948,6 +3091,7 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
2948
3091
  onColumnSelect(field: string): void;
2949
3092
  private initFromConfig;
2950
3093
  private loadColumnRules;
3094
+ private normalizePersistedRules;
2951
3095
  rebuildCondition(): void;
2952
3096
  onDraftChange(): void;
2953
3097
  applyTextPreset(preset: string): void;
@@ -2974,6 +3118,8 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
2974
3118
  onExportRules(): void;
2975
3119
  onImportRules(): void;
2976
3120
  private sanitizeRule;
3121
+ private normalizeRuleEffects;
3122
+ getPrimaryEffect(r: RuleItem | null | undefined): RuleEffectDefinition | undefined;
2977
3123
  getAnimationLabel(r: RuleItem): string | null;
2978
3124
  private normalizeRendererAnimation;
2979
3125
  private buildRendererOverrideFromRule;
@@ -3080,6 +3226,8 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3080
3226
  private cdr;
3081
3227
  private configService;
3082
3228
  private readonly i18n;
3229
+ private readonly globalActionCatalogSource;
3230
+ private readonly globalActionCatalog;
3083
3231
  filterSettingsEditor?: FilterSettingsComponent;
3084
3232
  behaviorEditor?: BehaviorConfigEditorComponent;
3085
3233
  rulesEditor?: TableRulesEditorComponent;
@@ -3142,6 +3290,7 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3142
3290
  private hasLocalDataInput;
3143
3291
  private filterDtoLoadSeq;
3144
3292
  private lastKnownFilterSettings;
3293
+ private globalActionValidationIssues;
3145
3294
  private readonly panelData;
3146
3295
  private readonly crudService;
3147
3296
  private readonly panelRef;
@@ -3168,6 +3317,9 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3168
3317
  onRulesConfigChange(newCfg: TableConfig): void;
3169
3318
  private updateColumnMetas;
3170
3319
  private updateCanSaveState;
3320
+ private collectGlobalActionValidationIssues;
3321
+ private findGlobalActionCatalogEntry;
3322
+ private buildGlobalActionCatalog;
3171
3323
  private subscribeCrudEditorChanges;
3172
3324
  private showSuccess;
3173
3325
  private showError;
@@ -3176,6 +3328,7 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3176
3328
  * Normaliza uma configuração de tabela para comparação consistente
3177
3329
  * Remove propriedades undefined, ordena arrays e objetos de forma consistente
3178
3330
  */
3331
+ private withCanonicalIdField;
3179
3332
  private normalizeTableConfig;
3180
3333
  /**
3181
3334
  * Realiza comparação profunda de objetos, ignorando ordem de propriedades
@@ -3238,6 +3391,107 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3238
3391
  static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableConfigEditor, "praxis-table-config-editor", never, {}, {}, never, never, true, never>;
3239
3392
  }
3240
3393
 
3394
+ interface PraxisTableWidgetEditorInputs {
3395
+ config?: TableConfig | null;
3396
+ resourcePath?: string | null;
3397
+ horizontalScroll?: 'auto' | 'wrap' | 'none';
3398
+ tableId?: string;
3399
+ componentInstanceId?: string;
3400
+ [key: string]: unknown;
3401
+ }
3402
+ interface PraxisTableWidgetEditorValue {
3403
+ inputs: PraxisTableWidgetEditorInputs;
3404
+ }
3405
+ declare class PraxisTableWidgetConfigEditor implements SettingsValueProvider$1, AfterViewInit, OnDestroy {
3406
+ inputs: PraxisTableWidgetEditorInputs | null;
3407
+ widgetKey?: string;
3408
+ tableEditor?: PraxisTableConfigEditor;
3409
+ readonly isDirty$: BehaviorSubject<boolean>;
3410
+ readonly isValid$: BehaviorSubject<boolean>;
3411
+ readonly isBusy$: BehaviorSubject<boolean>;
3412
+ private readonly subscription;
3413
+ ngAfterViewInit(): void;
3414
+ ngOnDestroy(): void;
3415
+ getSettingsValue(): PraxisTableWidgetEditorValue;
3416
+ onSave(): PraxisTableWidgetEditorValue;
3417
+ reset(): void;
3418
+ private initializeChildEditor;
3419
+ private buildValue;
3420
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableWidgetConfigEditor, never>;
3421
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableWidgetConfigEditor, "praxis-table-widget-config-editor", never, { "inputs": { "alias": "inputs"; "required": false; }; "widgetKey": { "alias": "widgetKey"; "required": false; }; }, {}, never, never, true, never>;
3422
+ }
3423
+
3424
+ interface PraxisFilterWidgetEditorInputs {
3425
+ resourcePath?: string | null;
3426
+ fieldMetadata?: FieldMetadata[] | null;
3427
+ filterId?: string;
3428
+ formId?: string;
3429
+ componentInstanceId?: string;
3430
+ alwaysVisibleFields?: string[];
3431
+ alwaysVisibleFieldMetadataOverrides?: Record<string, Record<string, unknown>>;
3432
+ selectedFieldIds?: string[];
3433
+ allowSaveTags?: boolean;
3434
+ changeDebounceMs?: number;
3435
+ placeBooleansInActions?: boolean;
3436
+ showToggleLabels?: boolean;
3437
+ alwaysMinWidth?: number;
3438
+ alwaysColsMd?: number;
3439
+ alwaysColsLg?: number;
3440
+ confirmTagDelete?: boolean;
3441
+ tagColor?: 'primary' | 'accent' | 'warn' | 'basic';
3442
+ tagVariant?: 'filled' | 'outlined';
3443
+ tagButtonColor?: 'primary' | 'accent' | 'warn' | 'basic';
3444
+ actionsButtonColor?: 'primary' | 'accent' | 'warn' | 'basic';
3445
+ actionsVariant?: 'standard' | 'outlined';
3446
+ useInlineSearchableSelectVariant?: boolean;
3447
+ useInlineRangeVariant?: boolean;
3448
+ useInlineDateVariant?: boolean;
3449
+ useInlineDateRangeVariant?: boolean;
3450
+ useInlineTimeVariant?: boolean;
3451
+ useInlineTimeRangeVariant?: boolean;
3452
+ useInlineTreeSelectVariant?: boolean;
3453
+ overlayVariant?: 'card' | 'frosted';
3454
+ overlayBackdrop?: boolean;
3455
+ advancedOpenMode?: 'modal' | 'drawer';
3456
+ advancedClearButtonsEnabled?: boolean;
3457
+ persistenceKey?: string;
3458
+ showFilterSettings?: boolean;
3459
+ enableCustomization?: boolean;
3460
+ [key: string]: unknown;
3461
+ }
3462
+ interface PraxisFilterWidgetEditorValue {
3463
+ inputs: PraxisFilterWidgetEditorInputs;
3464
+ }
3465
+ declare class PraxisFilterWidgetConfigEditor implements SettingsValueProvider$1, OnDestroy {
3466
+ widgetKey?: string;
3467
+ set inputs(value: PraxisFilterWidgetEditorInputs | null);
3468
+ get inputs(): PraxisFilterWidgetEditorInputs | null;
3469
+ set filterSettings(component: FilterSettingsComponent | undefined);
3470
+ metadata: FieldMetadata[];
3471
+ settings: FilterConfig;
3472
+ configKey?: string;
3473
+ readonly isDirty$: BehaviorSubject<boolean>;
3474
+ readonly isValid$: BehaviorSubject<boolean>;
3475
+ readonly isBusy$: BehaviorSubject<boolean>;
3476
+ private currentInputs;
3477
+ private settingsEditor?;
3478
+ private subscription;
3479
+ ngOnDestroy(): void;
3480
+ getSettingsValue(): PraxisFilterWidgetEditorValue;
3481
+ onSave(): PraxisFilterWidgetEditorValue;
3482
+ reset(): void;
3483
+ private buildValue;
3484
+ private buildSettingsFromInputs;
3485
+ private projectSettingsToInputs;
3486
+ private normalizeSettings;
3487
+ private normalizeAdvancedOpenMode;
3488
+ private normalizeOverlayVariant;
3489
+ private cloneStringArray;
3490
+ private cloneRecord;
3491
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisFilterWidgetConfigEditor, never>;
3492
+ 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>;
3493
+ }
3494
+
3241
3495
  declare class DataFormatterComponent implements OnInit, OnChanges {
3242
3496
  private cdr;
3243
3497
  private formattingService;
@@ -3306,31 +3560,6 @@ declare class DataFormatterComponent implements OnInit, OnChanges {
3306
3560
  static ɵcmp: i0.ɵɵComponentDeclaration<DataFormatterComponent, "data-formatter", never, { "columnType": { "alias": "columnType"; "required": false; }; "currentFormat": { "alias": "currentFormat"; "required": false; }; }, { "formatChange": "formatChange"; }, never, never, true, never>;
3307
3561
  }
3308
3562
 
3309
- type AnalyticsTableRow = Record<string, string | number | boolean | null>;
3310
- type AnalyticsTableContractSource = 'remote' | 'fallback';
3311
- interface AnalyticsTableViewModel {
3312
- config: TableConfig;
3313
- data: AnalyticsTableRow[];
3314
- }
3315
- interface AnalyticsTableContractDefinition<TKey extends string = string> {
3316
- key: TKey;
3317
- projectionId: string;
3318
- path: string;
3319
- title: PraxisTextValue;
3320
- subtitle?: PraxisTextValue;
3321
- fallbackProjection: PraxisAnalyticsProjection;
3322
- fallbackRows?: AnalyticsTableRow[];
3323
- }
3324
- interface AnalyticsTableContractLoadOptions<TKey extends string = string> {
3325
- cacheNamespace?: string;
3326
- queryContexts?: Partial<Record<TKey, PraxisDataQueryContext | null>>;
3327
- }
3328
- interface AnalyticsTableContractLoadResult<TKey extends string = string> {
3329
- views: Record<TKey, AnalyticsTableViewModel>;
3330
- sources: Record<TKey, AnalyticsTableContractSource>;
3331
- errors: Partial<Record<TKey, string>>;
3332
- }
3333
-
3334
3563
  interface AnalyticsTableConfigAdapterOptions {
3335
3564
  title?: PraxisTextValue;
3336
3565
  subtitle?: PraxisTextValue;
@@ -3344,24 +3573,6 @@ declare class AnalyticsTableConfigAdapterService {
3344
3573
  static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableConfigAdapterService>;
3345
3574
  }
3346
3575
 
3347
- declare class AnalyticsTableStatsApiService {
3348
- private readonly http;
3349
- private readonly apiUrl;
3350
- private readonly statsBuilder;
3351
- constructor(http: HttpClient, apiUrl: ApiUrlConfig);
3352
- execute(projection: PraxisAnalyticsProjection, queryContext?: PraxisDataQueryContext | null): Promise<AnalyticsTableRow[]>;
3353
- private toTableRows;
3354
- private resolveTimeSeriesCategory;
3355
- private resolveBucketCategory;
3356
- private projectMetricValues;
3357
- private resolveMetricValue;
3358
- private buildStatsUrl;
3359
- private applyQueryContext;
3360
- private normalizeError;
3361
- static ɵfac: i0.ɵɵFactoryDeclaration<AnalyticsTableStatsApiService, never>;
3362
- static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableStatsApiService>;
3363
- }
3364
-
3365
3576
  declare class AnalyticsTableContractService {
3366
3577
  private readonly analyticsSchema;
3367
3578
  private readonly resolver;
@@ -3397,6 +3608,15 @@ declare function buildTableApplyPlan(doc: TableAuthoringDocument, runtime?: Tabl
3397
3608
  }): TableApplyPlan;
3398
3609
  declare function serializeTableAuthoringDocument(doc: TableAuthoringDocument): unknown;
3399
3610
 
3611
+ /**
3612
+ * Manifesto de authoring canônico para o componente praxis-table.
3613
+ * Este arquivo define o contrato executável para que agentes de IA editem tabelas.
3614
+ *
3615
+ * @version 2.0.0
3616
+ * @status COMPLIANT - Alinhado com o contrato v2 e TableConfig canônico.
3617
+ */
3618
+ declare const PRAXIS_TABLE_AUTHORING_MANIFEST: ComponentAuthoringManifest;
3619
+
3400
3620
  declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3401
3621
  private readonly i18n;
3402
3622
  config: TableConfig;
@@ -3643,7 +3863,6 @@ declare function providePraxisTableMetadata(): Provider;
3643
3863
  declare module '@praxisui/core' {
3644
3864
  interface AiCapabilityCategoryMap {
3645
3865
  meta: true;
3646
- bindings: true;
3647
3866
  columns: true;
3648
3867
  renderer: true;
3649
3868
  conditional: true;
@@ -3995,5 +4214,5 @@ declare function coerceTableComponentEditPlan(value: unknown): TableComponentEdi
3995
4214
  declare function compileTableComponentEditPlans(plans: TableComponentEditPlan[], currentConfig: TableConfig): TableComponentEditPlanCompileResult;
3996
4215
  declare function compileTableComponentEditPlan(plan: TableComponentEditPlan, currentConfig: TableConfig): TableComponentEditPlanCompileResult;
3997
4216
 
3998
- export { 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_COMPONENT_METADATA, PRAXIS_TABLE_COMPONENT_METADATA, PraxisFilter, PraxisTable, PraxisTableConfigEditor, PraxisTableInlineAuthoringEditorComponent, PraxisTableToolbar, 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, buildTableApplyPlan, coerceTableComponentEditPlan, coerceTableComponentEditPlans, compileTableComponentEditPlan, compileTableComponentEditPlans, createTableAuthoringDocument, getActionId, getEnum, getTableCapabilities, getTableComponentEditPlanCapabilities, isTableRendererSupportedByRichContentP0, mapTableRendererToRichContentP0, normalizeTableAuthoringDocument, parseLegacyOrTableDocument, providePraxisFilterMetadata, providePraxisTableMetadata, serializeTableAuthoringDocument, toCanonicalTableConfig, validateTableAuthoringDocument };
3999
- export type { ActionLike, 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, ResourcePathIntent, RowAction, RowExpansionChangeBase, RowExpansionChangeEvent, RowExpansionReasonCode, RowExpansionTrigger, StringFormatterOptions, TableApplyPlan, TableAuthoringDocument, TableBindings, Capability as TableComponentCapability, CapabilityCatalog as TableComponentCapabilityCatalog, CapabilityCategory as TableComponentCapabilityCategory, TableComponentEditChangeKind, TableComponentEditPlan, TableComponentEditPlanCompileResult, ValueKind as TableComponentValueKind, TableHorizontalScroll, TableProjectionContext, TableRichContentP0Node, TableRuntimeContext, TableValidationContext, ToolbarAction, ToolbarActionsChange, ValueKind$1 as ValueKind, ValueMappingPair };
4217
+ export { 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_COMPONENT_METADATA, PRAXIS_TABLE_AUTHORING_MANIFEST, PRAXIS_TABLE_COMPONENT_METADATA, 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, buildTableApplyPlan, coerceTableComponentEditPlan, coerceTableComponentEditPlans, compileTableComponentEditPlan, compileTableComponentEditPlans, createTableAuthoringDocument, getActionId, getEnum, getTableCapabilities, getTableComponentEditPlanCapabilities, isTableRendererSupportedByRichContentP0, mapTableRendererToRichContentP0, normalizeTableAuthoringDocument, parseLegacyOrTableDocument, providePraxisFilterMetadata, providePraxisTableMetadata, serializeTableAuthoringDocument, toCanonicalTableConfig, validateTableAuthoringDocument };
4218
+ export type { ActionLike, 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, PraxisFilterWidgetEditorInputs, PraxisFilterWidgetEditorValue, PraxisTableWidgetEditorInputs, PraxisTableWidgetEditorValue, ResourcePathIntent, RowAction, RowExpansionChangeBase, RowExpansionChangeEvent, RowExpansionReasonCode, RowExpansionTrigger, StringFormatterOptions, TableApplyPlan, TableAuthoringDocument, TableBindings, Capability as TableComponentCapability, CapabilityCatalog as TableComponentCapabilityCatalog, CapabilityCategory as TableComponentCapabilityCategory, TableComponentEditChangeKind, TableComponentEditPlan, TableComponentEditPlanCompileResult, ValueKind as TableComponentValueKind, TableHorizontalScroll, TableProjectionContext, TableRichContentP0Node, TableRuntimeContext, TableValidationContext, ToolbarAction, ToolbarActionsChange, ValueKind$1 as ValueKind, ValueMappingPair };