@praxisui/table 8.0.0-beta.3 → 8.0.0-beta.31

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 (42) hide show
  1. package/README.md +190 -11
  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 +266 -0
  12. package/docs/dynamic-filter-payload-contract.md +331 -0
  13. package/docs/dynamic-filter-range-filters-guide.md +296 -0
  14. package/docs/dynamic-filter-troubleshooting-guide.md +257 -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-filter-form-dialog-host.component-Dm2f0muy.mjs → praxisui-table-filter-form-dialog-host.component-CN9JWFoa.mjs} +69 -14
  34. package/fesm2022/praxisui-table-praxisui-table-qO5EkftZ.mjs +57821 -0
  35. package/fesm2022/praxisui-table-table-agentic-authoring-turn-flow-CretQI6Z.mjs +847 -0
  36. package/fesm2022/praxisui-table-table-ai.adapter-DkMHa90r.mjs +2795 -0
  37. package/fesm2022/praxisui-table.mjs +1 -51444
  38. package/index.d.ts +410 -115
  39. package/package.json +15 -9
  40. package/src/lib/praxis-table.json-api.md +1326 -0
  41. package/fesm2022/praxisui-table-table-agentic-authoring-turn-flow-tu7jtTwV.mjs +0 -280
  42. package/fesm2022/praxisui-table-table-ai.adapter-DxjDaQqy.mjs +0 -895
package/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
+ import * as _praxisui_core from '@praxisui/core';
2
+ import { TableConfig, LoggerService, PraxisI18nService, GlobalConfigService, AsyncConfigStorage, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, LoadingState, RestApiLinks, ColumnDefinition, RichBlockNode, ConnectionStorage, 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';
1
3
  import * as i0 from '@angular/core';
2
- import { OnDestroy, EventEmitter, ElementRef, OnInit, OnChanges, AfterViewInit, DoCheck, DestroyRef, ChangeDetectorRef, NgZone, SimpleChanges, Provider, AfterContentInit } from '@angular/core';
4
+ import { OnDestroy, EventEmitter, ElementRef, OnInit, OnChanges, AfterViewInit, DoCheck, DestroyRef, ChangeDetectorRef, NgZone, SimpleChanges, Provider, AfterContentInit, Injector } from '@angular/core';
3
5
  import { ActivatedRoute } from '@angular/router';
4
6
  import { MatTable, MatTableDataSource } from '@angular/material/table';
5
7
  import { MatPaginatorSelectConfig, MatPaginator, PageEvent } from '@angular/material/paginator';
@@ -9,17 +11,15 @@ import { SelectionModel } from '@angular/cdk/collections';
9
11
  import { CdkDragDrop, CdkDragEnd, CdkDrag, CdkDropList } from '@angular/cdk/drag-drop';
10
12
  import { BehaviorSubject, Subscription, Observable } from 'rxjs';
11
13
  import { SettingsPanelService, SettingsValueProvider } from '@praxisui/settings-panel';
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';
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
+ import { MatSelect } from '@angular/material/select';
17
18
  import { PraxisDialog } from '@praxisui/dialog';
18
- import { PraxisAssistantTurnViewState, PraxisAssistantShellLayout, PraxisAssistantShellLabels, PraxisAssistantShellQuickReply, PraxisAssistantShellMessage } from '@praxisui/ai';
19
+ import { PraxisAssistantTurnViewState, PraxisAssistantShellLayout, PraxisAssistantShellLabels, PraxisAssistantSessionSnapshot, PraxisAssistantShellQuickReply, PraxisAssistantShellMessage } from '@praxisui/ai';
20
+ import { HttpClient } from '@angular/common/http';
19
21
  import { MatTabChangeEvent } from '@angular/material/tabs';
20
- import * as _praxisui_table_rule_builder from '@praxisui/table-rule-builder';
21
22
  import { RuleEffectDefinition } from '@praxisui/table-rule-builder';
22
- import { HttpClient } from '@angular/common/http';
23
23
  import * as _angular_material_paginator_d_Zo1cMMo4 from '@angular/material/paginator.d-Zo1cMMo4';
24
24
  import { MatCheckboxChange } from '@angular/material/checkbox';
25
25
 
@@ -46,11 +46,15 @@ declare class PraxisTableToolbar implements OnDestroy {
46
46
  showActionsGroup: boolean;
47
47
  showEndActions: boolean;
48
48
  showMobileActions: boolean;
49
+ exportBusy: boolean;
49
50
  evaluationContext: Record<string, any> | null;
50
51
  toolbarAction: EventEmitter<{
51
52
  action: string;
52
53
  actionConfig?: any;
53
54
  }>;
55
+ exportAction: EventEmitter<{
56
+ format: string;
57
+ }>;
54
58
  readonly getActionId: typeof getActionId;
55
59
  private readonly jsonLogic;
56
60
  private readonly validToolbarActionTypes;
@@ -65,6 +69,7 @@ declare class PraxisTableToolbar implements OnDestroy {
65
69
  constructor(hostRef?: ElementRef<HTMLElement> | null, logger?: LoggerService | undefined, i18n?: PraxisI18nService | undefined);
66
70
  getExportDataLabel(): string;
67
71
  getMoreActionsLabel(): string;
72
+ emitExportAction(event: Event, format: string): void;
68
73
  private tx;
69
74
  ngOnDestroy(): void;
70
75
  private getNestedPropertyValue;
@@ -112,7 +117,7 @@ declare class PraxisTableToolbar implements OnDestroy {
112
117
  private sortActions;
113
118
  getExportIcon(format: string): string;
114
119
  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>;
120
+ 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
121
  }
117
122
 
118
123
  type ColumnDataType$1 = 'date' | 'number' | 'currency' | 'percentage' | 'string' | 'boolean' | 'custom';
@@ -213,6 +218,7 @@ declare class DataFormattingService {
213
218
  */
214
219
  formatValue(value: any, columnType: ColumnDataType$1, formatString: string, options?: DataFormattingOptions): any;
215
220
  private coerceValueToType;
221
+ private parseDateOnlyString;
216
222
  private normalizeNumericDateInput;
217
223
  private formatDate;
218
224
  private formatNumber;
@@ -335,12 +341,15 @@ type I18n = {
335
341
  searchPlaceholder: string;
336
342
  advanced: string;
337
343
  advancedTitle?: string;
344
+ advancedOpening?: string;
345
+ advancedUnavailable?: string;
338
346
  clear: string;
339
347
  apply: string;
340
348
  add?: string;
341
349
  filtersAdd?: string;
342
350
  filtersSearch?: string;
343
351
  addCount?: string;
352
+ addUnavailable?: string;
344
353
  pendingCount?: string;
345
354
  activeFiltersCount?: string;
346
355
  selectAll?: string;
@@ -423,7 +432,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
423
432
  showAddButton: boolean;
424
433
  /** Controla a exibição do botão de limpar filtros */
425
434
  showClearButton: boolean;
426
- /** Controla a exibição do botão de pesquisar/aplicar filtros */
435
+ /** Controla a exibição do botão de pesquisar/aplicar filtros em fluxos manuais. */
427
436
  showSearchButton: boolean;
428
437
  /** Exibir confirmação ao excluir atalho (tag) */
429
438
  confirmTagDelete: boolean;
@@ -513,6 +522,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
513
522
  private alwaysFormReset$;
514
523
  private dto;
515
524
  advancedOpen: boolean;
525
+ advancedOpening: boolean;
516
526
  advancedValid: boolean;
517
527
  activeFiltersCount: number;
518
528
  saving: boolean;
@@ -539,7 +549,8 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
539
549
  id: string;
540
550
  label: string;
541
551
  }>;
542
- private addItemsUpdateQueued;
552
+ readonly addSearchFieldId = "__praxis_filter_add_search__";
553
+ readonly addSelectAllFieldId = "__praxis_filter_add_select_all__";
543
554
  private applySchemaQueued;
544
555
  private fallbackLogger?;
545
556
  private fallbackLoggerEnvironment;
@@ -554,6 +565,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
554
565
  private _dbgLastToggleComponentsAt;
555
566
  overlayPositions: ConnectedPosition[];
556
567
  private advancedDebouncedSub?;
568
+ private advancedOpenRequestId;
557
569
  private lastActiveElement?;
558
570
  private lastSubmitAt;
559
571
  private resizeObs?;
@@ -643,6 +655,11 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
643
655
  retrySchemaLoad(): void;
644
656
  private applySchemaMetas;
645
657
  private applySchemaMetasNow;
658
+ private withFilterMaterialDesignPolicy;
659
+ private withAdvancedDatePickerTouchPolicy;
660
+ private isAdvancedDatePickerControl;
661
+ private buildAdvancedFilterColumn;
662
+ private isCompositeRangeFilterField;
646
663
  private pickMetasByOrder;
647
664
  private hasRemoteOptionSource;
648
665
  private withInferredFilterControlType;
@@ -675,6 +692,9 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
675
692
  onAdvancedValidityChange(valid: boolean): void;
676
693
  onAddOpened(opened: boolean): void;
677
694
  onAddQuery(q: string): void;
695
+ openAddSelect(select: MatSelect): void;
696
+ hasAddableFields(): boolean;
697
+ private getAddableItems;
678
698
  private updateAddItems;
679
699
  trackById(_idx: number, it: {
680
700
  id: string;
@@ -725,9 +745,13 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
725
745
  private ensureAdvancedConfigReady;
726
746
  private focusSchemaRetryButton;
727
747
  private showAdvancedUnavailableFeedback;
748
+ private setAdvancedOpening;
749
+ private deferAdvancedOpen;
728
750
  private openAdvancedModal;
729
751
  private openAdvancedDrawer;
730
752
  toggleAdvanced(): void;
753
+ hasAdvancedFields(): boolean;
754
+ private getAdvancedCandidateMetas;
731
755
  private usesProvidedFieldMetadata;
732
756
  private applyProvidedFieldMetadata;
733
757
  private saveConfig;
@@ -739,6 +763,9 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
739
763
  private persistTags;
740
764
  private cleanFilterPayload;
741
765
  private upsertDtoValue;
766
+ private normalizeFilterFieldValue;
767
+ private getFilterFieldMetaByName;
768
+ private isEntityLookupFilterField;
742
769
  private isEffectivelyEmptyFilterValue;
743
770
  private syncFormsToDto;
744
771
  private updateDisplayedTags;
@@ -754,6 +781,49 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
754
781
  declare const PRAXIS_FILTER_COMPONENT_METADATA: ComponentDocMeta;
755
782
  declare function providePraxisFilterMetadata(): Provider;
756
783
 
784
+ type AnalyticsTableRow = Record<string, string | number | boolean | null>;
785
+ type AnalyticsTableContractSource = 'remote' | 'fallback';
786
+ interface AnalyticsTableViewModel {
787
+ config: TableConfig;
788
+ data: AnalyticsTableRow[];
789
+ }
790
+ interface AnalyticsTableContractDefinition<TKey extends string = string> {
791
+ key: TKey;
792
+ projectionId: string;
793
+ path: string;
794
+ title: PraxisTextValue;
795
+ subtitle?: PraxisTextValue;
796
+ fallbackProjection: PraxisAnalyticsProjection;
797
+ fallbackRows?: AnalyticsTableRow[];
798
+ }
799
+ interface AnalyticsTableContractLoadOptions<TKey extends string = string> {
800
+ cacheNamespace?: string;
801
+ queryContexts?: Partial<Record<TKey, PraxisDataQueryContext | null>>;
802
+ }
803
+ interface AnalyticsTableContractLoadResult<TKey extends string = string> {
804
+ views: Record<TKey, AnalyticsTableViewModel>;
805
+ sources: Record<TKey, AnalyticsTableContractSource>;
806
+ errors: Partial<Record<TKey, string>>;
807
+ }
808
+
809
+ declare class AnalyticsTableStatsApiService {
810
+ private readonly http;
811
+ private readonly apiUrl;
812
+ private readonly statsBuilder;
813
+ constructor(http: HttpClient, apiUrl: ApiUrlConfig);
814
+ execute(projection: PraxisAnalyticsProjection, queryContext?: PraxisDataQueryContext | null): Promise<AnalyticsTableRow[]>;
815
+ private toTableRows;
816
+ private resolveTimeSeriesCategory;
817
+ private resolveBucketCategory;
818
+ private projectMetricValues;
819
+ private resolveMetricValue;
820
+ private buildStatsUrl;
821
+ private applyQueryContext;
822
+ private normalizeError;
823
+ static ɵfac: i0.ɵɵFactoryDeclaration<AnalyticsTableStatsApiService, never>;
824
+ static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableStatsApiService>;
825
+ }
826
+
757
827
  type SchemaFieldHint = {
758
828
  name: string;
759
829
  label?: string;
@@ -765,6 +835,10 @@ type SchemaFieldHint = {
765
835
  optionValueKey?: string;
766
836
  enumValues?: string[];
767
837
  };
838
+ type FilterSchemaFieldHint = SchemaFieldHint & {
839
+ relatedColumnFields?: string[];
840
+ relatedColumnLabels?: string[];
841
+ };
768
842
  type PraxisDataQueryContextBridge = {
769
843
  filters?: Record<string, unknown> | null;
770
844
  sort?: string[] | null;
@@ -835,6 +909,8 @@ type RowActionRuntimeOptions = {
835
909
  type RuntimeRowAction = {
836
910
  id: string;
837
911
  action: string;
912
+ globalAction?: GlobalActionRef;
913
+ effects?: PraxisRuntimeGlobalActionEffect[];
838
914
  label?: string;
839
915
  icon?: string;
840
916
  color?: string;
@@ -842,6 +918,7 @@ type RuntimeRowAction = {
842
918
  disabled?: boolean;
843
919
  overflow?: boolean;
844
920
  __praxisDiscoveredAction?: ResourceActionCatalogItem;
921
+ __praxisDiscoveredSurface?: ResourceSurfaceCatalogItem;
845
922
  __praxisCapabilityDenied?: boolean;
846
923
  };
847
924
  type ExpansionDetailRuntimeStatus = 'idle' | 'loading' | 'ready' | 'error' | 'blocked';
@@ -865,17 +942,20 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
865
942
  private connectionStorage;
866
943
  private hostRef;
867
944
  private global;
868
- private resourceDiscovery;
945
+ private injector;
869
946
  private componentKeys;
870
947
  private loadingOrchestrator;
948
+ private globalActions;
871
949
  private loadingRenderer?;
872
950
  private route?;
873
951
  private logger?;
952
+ private analyticsStatsApi?;
874
953
  private static readonly CELL_ANIMATION_CHANGE_CACHE_LIMIT;
875
954
  private static readonly ROW_DISCOVERY_SUCCESS_CACHE_TTL_MS;
876
955
  private static readonly ROW_DISCOVERY_ERROR_CACHE_TTL_MS;
877
956
  private static readonly ROW_DISCOVERY_CACHE_LIMIT;
878
957
  private static readonly ROW_DISCOVERY_MAX_CONCURRENT_REQUESTS;
958
+ private _resourceDiscovery?;
879
959
  readonly paginatorSelectConfig: MatPaginatorSelectConfig;
880
960
  private static readonly ROW_ANIMATION_PRESETS;
881
961
  private static readonly ROW_ANIMATION_PRESET_ALIASES;
@@ -900,6 +980,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
900
980
  rowAction: EventEmitter<any>;
901
981
  toolbarAction: EventEmitter<any>;
902
982
  bulkAction: EventEmitter<any>;
983
+ exportAction: EventEmitter<any>;
903
984
  columnReorder: EventEmitter<any>;
904
985
  columnReorderAttempt: EventEmitter<any>;
905
986
  beforeDelete: EventEmitter<any>;
@@ -909,6 +990,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
909
990
  afterBulkDelete: EventEmitter<any>;
910
991
  bulkDeleteError: EventEmitter<any>;
911
992
  schemaStatusChange: EventEmitter<any>;
993
+ configChange: EventEmitter<_praxisui_core.TableConfigModern>;
912
994
  metadataChange: EventEmitter<any>;
913
995
  loadingStateChange: EventEmitter<LoadingState>;
914
996
  collectionLinksChange: EventEmitter<RestApiLinks | null>;
@@ -937,6 +1019,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
937
1019
  readonly isExpansionDetailRow: (index: number, row: any) => boolean;
938
1020
  columnReorderStatusMessage: string;
939
1021
  columnReorderVisualStatusMessage: string;
1022
+ exportBusy: boolean;
1023
+ exportStatusMessage: string;
940
1024
  private columnReorderStatusTimer;
941
1025
  private columnReorderVisualStatusTimer;
942
1026
  private columnReorderUndoSubscription;
@@ -949,6 +1033,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
949
1033
  private lastResolvedDataMode;
950
1034
  private localFilterFieldMetadataCache;
951
1035
  private localFilterFieldMetadataCacheKey;
1036
+ private analyticsLoadSequence;
952
1037
  private uncontrolledExpandedRowKeys;
953
1038
  private readonly expansionOpaqueRefCacheLimit;
954
1039
  private expansionOpaqueRefByRowKey;
@@ -976,8 +1061,10 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
976
1061
  private rowDiscoveryMarkForCheckScheduled;
977
1062
  private lastRowDiscoveryScopeKey;
978
1063
  private readonly i18n;
1064
+ private readonly collectionExport;
979
1065
  private readonly paginatorIntl;
980
1066
  private schemaFieldsSnapshot;
1067
+ private filterSchemaFieldsSnapshot;
981
1068
  private runtimeSchemaMeta;
982
1069
  schemaError: boolean;
983
1070
  dataError: boolean;
@@ -1025,6 +1112,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1025
1112
  hasBottomPaginator(): boolean;
1026
1113
  hasExplicitResourcePath(): boolean;
1027
1114
  hasLocalDataInput(): boolean;
1115
+ hasAnalyticsProjectionInput(): boolean;
1028
1116
  getDataMode(): DataMode;
1029
1117
  isRemoteMode(): boolean;
1030
1118
  isLocalMode(): boolean;
@@ -1071,8 +1159,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1071
1159
  get hostColumnBordersClass(): boolean;
1072
1160
  trackByRow(index: number, item: any): any;
1073
1161
  getSchemaFieldsSnapshot(): SchemaFieldHint[];
1162
+ getFilterSchemaFieldsSnapshot(): FilterSchemaFieldHint[];
1163
+ ensureFilterSchemaFieldsSnapshot(): Promise<void>;
1074
1164
  aiAdapter: any;
1075
1165
  private aiAdapterLoadStarted;
1166
+ private aiAssistantOpenAfterAdapterLoad;
1076
1167
  aiAssistantOpen: boolean;
1077
1168
  aiAssistantPrompt: string;
1078
1169
  aiAssistantViewState: PraxisAssistantTurnViewState | null;
@@ -1081,7 +1172,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1081
1172
  private aiAssistantController;
1082
1173
  private aiAssistantStateSubscription;
1083
1174
  private readonly aiApi;
1175
+ private readonly assistantSessions;
1084
1176
  private readonly aiTurnOrchestrator;
1177
+ private readonly aiAssistantSessionEffect;
1085
1178
  private computedContextCache;
1086
1179
  private computedFieldNames;
1087
1180
  private readonly jsonLogic;
@@ -1119,6 +1212,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1119
1212
  private recomputeLocalView;
1120
1213
  private resolveLocalSortField;
1121
1214
  private setSchemaFieldsSnapshot;
1215
+ private setFilterSchemaFieldsSnapshot;
1216
+ private resolveFilterSchemaRelatedColumns;
1217
+ private normalizeFieldAlias;
1122
1218
  private normalizeSchemaOptions;
1123
1219
  private normalizeEnumValues;
1124
1220
  private normalizeSchemaKey;
@@ -1128,21 +1224,47 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1128
1224
  private tableConfigKey;
1129
1225
  private filterConfigKey;
1130
1226
  private ensureConfigDefaults;
1227
+ private mergePersistedTableConfigWithInput;
1228
+ private reconcileHostDeclaredTableContract;
1229
+ private reconcileHostDeclaredColumns;
1230
+ private reconcileHostDeclaredRowActions;
1231
+ private normalizePersistedRowActionIds;
1232
+ private normalizePersistedColumnIds;
1233
+ private clonePlainObject;
1131
1234
  private setShowToolbar;
1132
1235
  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);
1236
+ 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, injector: Injector, componentKeys: ComponentKeyService, loadingOrchestrator: LoadingOrchestrator, globalActions: GlobalActionService, loadingRenderer?: PraxisLoadingRenderer | undefined, route?: ActivatedRoute | undefined, logger?: LoggerService | undefined, analyticsStatsApi?: AnalyticsTableStatsApiService | undefined);
1237
+ private get resourceDiscovery();
1134
1238
  private ensureAiAdapterLoaded;
1135
1239
  openAiAssistant(): void;
1240
+ aiAssistantTriggerTestId(position: string): string;
1241
+ hasMinimizedAiAssistantSession(): boolean;
1242
+ aiAssistantTriggerIcon(): string;
1243
+ aiAssistantTriggerBadge(): string;
1244
+ aiAssistantTriggerLabel(): string;
1245
+ aiAssistantTriggerTooltip(): string;
1246
+ openAiAssistantFromSession(session: PraxisAssistantSessionSnapshot): void;
1136
1247
  closeAiAssistant(): void;
1137
1248
  onAiAssistantPromptChange(prompt: string): void;
1138
1249
  onAiAssistantSubmit(prompt: string): void;
1139
1250
  onAiAssistantApply(): void;
1251
+ onAiAssistantRetry(): void;
1252
+ onAiAssistantCancel(): void;
1140
1253
  onAiAssistantQuickReply(reply: PraxisAssistantShellQuickReply): void;
1141
1254
  onAiAssistantEditMessage(message: PraxisAssistantShellMessage): void;
1142
1255
  onAiAssistantResendMessage(message: PraxisAssistantShellMessage): void;
1143
1256
  onAiAssistantLayoutChange(layout: PraxisAssistantShellLayout): void;
1144
1257
  private initializeAiAssistantController;
1145
1258
  private buildAiAssistantContextItems;
1259
+ private buildAiAssistantContextSnapshot;
1260
+ private syncAiAssistantSession;
1261
+ private hasAiAssistantSessionState;
1262
+ private resolveAiAssistantSessionId;
1263
+ private resolveAiAssistantOwnerId;
1264
+ private resolveAiAssistantRouteKey;
1265
+ private resolveAiAssistantSummary;
1266
+ private resolveAiAssistantBadge;
1267
+ private resolveAiAssistantIcon;
1146
1268
  private emitLoadingState;
1147
1269
  private hasResolvedRemoteDataLoad;
1148
1270
  private isTableDataLoading;
@@ -1360,19 +1482,49 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1360
1482
  private emitRowActionEvent;
1361
1483
  private showConfirmDialog;
1362
1484
  private executeDeleteAction;
1485
+ private dispatchRowAction;
1363
1486
  private cloneForEmit;
1364
1487
  private interpolateActionMessageTemplate;
1365
1488
  private buildActionFeedbackContext;
1366
1489
  private resolveActionFeedbackMessage;
1367
1490
  private showActionFeedbackMessage;
1368
1491
  private emitEventWithActionFeedback;
1492
+ private executeConfiguredGlobalAction;
1493
+ private resolveConfiguredGlobalActionRef;
1494
+ private resolveActionGlobalActionRef;
1495
+ private resolveGlobalActionPayload;
1496
+ private buildGlobalActionTemplateContext;
1497
+ private resolveGlobalActionTemplateValue;
1498
+ private isDeferredTemplateExpressionKey;
1499
+ private interpolateGlobalActionTemplate;
1500
+ private shouldEmitLocalForGlobalAction;
1369
1501
  private resolveBulkValidationMessage;
1370
1502
  private hasValidBulkSelectionCount;
1371
1503
  private showBulkConfirmDialog;
1372
1504
  onToolbarAction(event: {
1373
1505
  action: string;
1374
1506
  actionConfig?: any;
1375
- }): void;
1507
+ }): Promise<void>;
1508
+ private resolveBulkExportFormat;
1509
+ private isBulkExportActionKey;
1510
+ private normalizeExportFormat;
1511
+ private isExportFormatEnabled;
1512
+ private getFirstEnabledExportFormat;
1513
+ onExportAction(event: {
1514
+ format: string;
1515
+ }): Promise<void>;
1516
+ private shouldBlockSelectedExportWithoutSelection;
1517
+ private buildTableExportRequest;
1518
+ private resolveEffectiveExportScope;
1519
+ private resolveTableExportLoadedItems;
1520
+ private computeLocalExportRows;
1521
+ private buildTableExportFields;
1522
+ private downloadExportResult;
1523
+ private triggerExportDownload;
1524
+ private resolveExportFileName;
1525
+ private getExportFileExtension;
1526
+ private getExportMimeType;
1527
+ private showExportFeedback;
1376
1528
  onAdvancedFilterSubmit(criteria: Record<string, any>): void;
1377
1529
  onAdvancedFilterChange(criteria: Record<string, any>): void;
1378
1530
  onAdvancedFilterClear(): void;
@@ -1439,6 +1591,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1439
1591
  */
1440
1592
  private verifyServerSchemaVersion;
1441
1593
  private loadSchema;
1594
+ private loadFilterSchemaSnapshot;
1442
1595
  private convertFieldToColumn;
1443
1596
  /**
1444
1597
  * Apply automatic renderer hints based on schema field metadata.
@@ -1507,6 +1660,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1507
1660
  private pruneRowDiscoveryCaches;
1508
1661
  private pruneRowDiscoveryCache;
1509
1662
  private fetchData;
1663
+ private resolveAnalyticsProjection;
1664
+ private fetchAnalyticsProjectionData;
1510
1665
  private getEffectiveFilterCriteria;
1511
1666
  retryData(): void;
1512
1667
  reloadSchema(): void;
@@ -1519,9 +1674,29 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1519
1674
  * 3. format (data formatting like dates, numbers, currency)
1520
1675
  */
1521
1676
  getCellValue(rowData: any, column: ColumnDefinition): any;
1677
+ private normalizeReadonlyEntityLookupCellValue;
1678
+ private toEntityLookupDisplayToken;
1679
+ private isEntityLookupDisplayCandidate;
1680
+ private toEntityLookupDisplayPrimitive;
1522
1681
  private resolveImplicitFormat;
1523
1682
  getCellClasses(rowData: any, column: ColumnDefinition): string[] | undefined;
1524
1683
  getCellNgStyle(rowData: any, column: ColumnDefinition): Record<string, string> | undefined;
1684
+ private normalizeConditionalStyleRules;
1685
+ private normalizeConditionalStyleRecord;
1686
+ getCellTooltip(rowData: any, column: ColumnDefinition): string | null;
1687
+ getCellTooltipPosition(rowData: any, column: ColumnDefinition): 'above' | 'below' | 'left' | 'right' | 'before' | 'after';
1688
+ private resolveConditionalStyleTooltipText;
1689
+ private normalizeConditionalStyleEffects;
1690
+ private hasConditionalStyleEffectPayload;
1691
+ private resolveConditionalStyleClasses;
1692
+ private resolveConditionalStyleObject;
1693
+ private compileConditionalStyleEffect;
1694
+ private normalizeConditionalRendererRules;
1695
+ private normalizeObjectRecord;
1696
+ private buildColumnRendererOverrideFromEffects;
1697
+ private buildColumnRendererFromEffect;
1698
+ private resolveRuleAnimationFromEffects;
1699
+ private resolveRowTooltipFromEffects;
1525
1700
  private resetComputedContextCache;
1526
1701
  private ensureEffectiveCellRenderCache;
1527
1702
  private ensureCellAnimationPreviousValuesByRowId;
@@ -1533,6 +1708,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1533
1708
  private buildComputedSignature;
1534
1709
  private stringifyDependencyValue;
1535
1710
  private buildComputedValueMap;
1711
+ private collectComputedColumns;
1712
+ private evaluateCanonicalComputedColumns;
1713
+ private collectComputedExpressionDependencies;
1714
+ private collectJsonLogicVarDependencies;
1715
+ private resolveJsonLogicVarPath;
1536
1716
  private buildEvaluationContext;
1537
1717
  private getJsonLogicEvaluationOptions;
1538
1718
  private resolveJsonLogicUserTimeZone;
@@ -1714,6 +1894,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1714
1894
  private deriveAvatarInitials;
1715
1895
  getAvatarInitials(row: any, column: ColumnDefinition): string;
1716
1896
  getAvatarRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
1897
+ private getAvatarRichContentStyle;
1717
1898
  getAvatarShape(row: any, column: ColumnDefinition): 'square' | 'rounded' | 'circle' | undefined;
1718
1899
  getAvatarStyle(row: any, column: ColumnDefinition): Record<string, string> | null;
1719
1900
  getToggleState(row: any, column: ColumnDefinition): boolean;
@@ -1769,6 +1950,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1769
1950
  private reconcileSelectionAfterDataChange;
1770
1951
  private getComparableRowIdentity;
1771
1952
  getIdField(): string;
1953
+ private resolveConfigMetaIdField;
1772
1954
  private syncRuntimeSchemaMetaFromConfig;
1773
1955
  private getEffectiveMetadataSnapshot;
1774
1956
  getActionId(action: any): string;
@@ -1811,11 +1993,19 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1811
1993
  private splitVisibleRowActionsFromVisible;
1812
1994
  private decorateConfiguredRowAction;
1813
1995
  private getDiscoveredRowWorkflowActions;
1996
+ private getDiscoveredRowSurfaceActionsFromSnapshot;
1814
1997
  private getDiscoveredRowWorkflowActionsFromCatalog;
1815
1998
  private supportsRowCrudAction;
1816
1999
  private isCapabilityManagedCrudRowAction;
1817
2000
  private findItemWorkflowAction;
2001
+ private findItemSurface;
2002
+ private isRowSurfaceAction;
2003
+ private isWritableRowSurface;
2004
+ private isReadableRowSurface;
2005
+ private getDiscoveredSurfaceIcon;
2006
+ private getDiscoveredSurfaceColor;
1818
2007
  private getUnavailableWorkflowMessage;
2008
+ private getUnavailableSurfaceMessage;
1819
2009
  private normalizeActionId;
1820
2010
  private isActionVisible;
1821
2011
  trackAction(index: number, item: any): any;
@@ -1829,8 +2019,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1829
2019
  getRowMenuIcon(): string;
1830
2020
  private scheduleRowDiscoveryMarkForCheck;
1831
2021
  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>;
2022
+ 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; }]>;
2023
+ 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"; "configChange": "configChange"; "metadataChange": "metadataChange"; "loadingStateChange": "loadingStateChange"; "collectionLinksChange": "collectionLinksChange"; "selectionChange": "selectionChange"; }, ["toolbar", "projectedFilter"], ["[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]"], true, never>;
1834
2024
  static ngAcceptInputType_enableCustomization: unknown;
1835
2025
  }
1836
2026
 
@@ -1843,7 +2033,6 @@ interface EditorDocument<TConfig, TBindings = unknown> {
1843
2033
  type TableHorizontalScroll = 'auto' | 'wrap' | 'none';
1844
2034
  interface TableBindings {
1845
2035
  resourcePath?: string | null;
1846
- idField?: string;
1847
2036
  horizontalScroll?: TableHorizontalScroll;
1848
2037
  }
1849
2038
  interface TableAuthoringDocument extends EditorDocument<TableConfig, TableBindings> {
@@ -1900,7 +2089,6 @@ interface TableApplyPlan {
1900
2089
  };
1901
2090
  diff?: {
1902
2091
  resourcePathChanged?: boolean;
1903
- idFieldChanged?: boolean;
1904
2092
  horizontalScrollChanged?: boolean;
1905
2093
  requiresDataRefresh?: boolean;
1906
2094
  };
@@ -2373,6 +2561,8 @@ interface ToolbarAction {
2373
2561
  /** Material button appearance: filled (flat), outlined (stroked), elevated (raised), text, tonal */
2374
2562
  appearance?: 'filled' | 'outlined' | 'elevated' | 'text' | 'tonal';
2375
2563
  action: string;
2564
+ globalAction?: GlobalActionRef;
2565
+ effects?: PraxisRuntimeGlobalActionEffect[];
2376
2566
  position: 'start' | 'end';
2377
2567
  order?: number;
2378
2568
  disabled?: boolean;
@@ -2380,7 +2570,7 @@ interface ToolbarAction {
2380
2570
  shortcut?: string;
2381
2571
  shortcutScope?: 'toolbar' | 'global';
2382
2572
  tooltip?: string;
2383
- visibleWhen?: string;
2573
+ visibleWhen?: JsonLogicExpression | null;
2384
2574
  children?: ToolbarAction[];
2385
2575
  }
2386
2576
  interface RowAction {
@@ -2388,11 +2578,15 @@ interface RowAction {
2388
2578
  label: string;
2389
2579
  icon: string;
2390
2580
  action: string;
2581
+ globalAction?: GlobalActionRef;
2582
+ effects?: PraxisRuntimeGlobalActionEffect[];
2391
2583
  color?: 'primary' | 'accent' | 'warn';
2392
2584
  tooltip?: string;
2393
2585
  requiresConfirmation?: boolean;
2394
2586
  autoDelete?: boolean;
2395
2587
  separator?: boolean;
2588
+ visibleWhen?: JsonLogicExpression | null;
2589
+ disabledWhen?: JsonLogicExpression | null;
2396
2590
  conditional?: string;
2397
2591
  }
2398
2592
  interface BulkAction {
@@ -2400,6 +2594,8 @@ interface BulkAction {
2400
2594
  label: string;
2401
2595
  icon: string;
2402
2596
  action: string;
2597
+ globalAction?: GlobalActionRef;
2598
+ effects?: PraxisRuntimeGlobalActionEffect[];
2403
2599
  color?: 'primary' | 'accent' | 'warn';
2404
2600
  tooltip?: string;
2405
2601
  requiresConfirmation?: boolean;
@@ -2413,6 +2609,25 @@ interface ToolbarActionsChange {
2413
2609
  value: any;
2414
2610
  fullConfig: TableConfig;
2415
2611
  }
2612
+ type GlobalActionCatalogOption = GlobalActionCatalogEntry & {
2613
+ param?: {
2614
+ required?: boolean;
2615
+ label?: string;
2616
+ placeholder?: string;
2617
+ hint?: string;
2618
+ };
2619
+ };
2620
+ type EditableTableAction = {
2621
+ id?: string;
2622
+ label?: string;
2623
+ action?: string;
2624
+ globalAction?: GlobalActionRef;
2625
+ effects?: PraxisRuntimeGlobalActionEffect[];
2626
+ position?: string;
2627
+ appearance?: string;
2628
+ visibleWhen?: JsonLogicExpression | null;
2629
+ disabledWhen?: JsonLogicExpression | null;
2630
+ };
2416
2631
  type ToolbarShortcutScope = 'toolbar' | 'global';
2417
2632
  interface InternalActionSpec {
2418
2633
  id: string;
@@ -2433,14 +2648,14 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
2433
2648
  editingToolbarActionIndex: number | null;
2434
2649
  editingRowActionIndex: number | null;
2435
2650
  editingBulkActionIndex: number | null;
2436
- readonly globalActionCatalog: GlobalActionSpec[];
2651
+ private readonly i18n;
2652
+ readonly globalActionCatalog: GlobalActionCatalogOption[];
2437
2653
  get internalActionCatalog(): InternalActionSpec[];
2438
2654
  readonly customActionValue = "__custom__";
2439
2655
  readonly validShortcutScopes: ToolbarShortcutScope[];
2440
2656
  private readonly actionFieldDrafts;
2441
2657
  private readonly actionFieldErrors;
2442
2658
  private readonly warnedInvalidShortcutScopes;
2443
- private readonly i18n;
2444
2659
  private destroy$;
2445
2660
  constructor(fb: FormBuilder, iconPicker: IconPickerService);
2446
2661
  tx(key: string, fallback: string): string;
@@ -2469,56 +2684,37 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
2469
2684
  private removeAddToolbarAction;
2470
2685
  private syncAddFormFromActions;
2471
2686
  private updateConfig;
2472
- getActionSelectValue(value?: string): string;
2473
- getActionParam(value?: string): string;
2474
- getActionCustomValue(value?: string): string;
2687
+ getActionSelectValue(action?: EditableTableAction): string;
2688
+ getActionParam(action?: EditableTableAction): string;
2689
+ isRequiredGlobalActionParamMissing(action: EditableTableAction, spec: GlobalActionCatalogOption): boolean;
2690
+ getActionCustomValue(action?: EditableTableAction): string;
2475
2691
  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;
2692
+ getActionSpecById(id: string): GlobalActionCatalogOption | undefined;
2693
+ onActionSelectChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2694
+ onActionParamChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2695
+ onActionCustomChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2696
+ getCanonicalGlobalActionRef(action?: EditableTableAction): GlobalActionRef | undefined;
2697
+ private setCanonicalGlobalActionRef;
2486
2698
  private touchActionList;
2487
- private parseActionValue;
2699
+ getActionJsonLogicText(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen'): string;
2700
+ onActionJsonLogicChange(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen', value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2701
+ getActionConditionError(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen'): string;
2488
2702
  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;
2703
+ getGlobalActionSchema(action: EditableTableAction): _praxisui_core.GlobalActionUiSchema | undefined;
2704
+ getSurfaceOpenActionPayload(action: EditableTableAction): SurfaceOpenPayload;
2705
+ onSurfaceOpenActionPayloadChange(action: EditableTableAction, payload: SurfaceOpenPayload, kind: 'toolbar' | 'row' | 'bulk'): void;
2706
+ shouldShowGlobalActionField(action: EditableTableAction, field: GlobalActionField): boolean;
2707
+ isGlobalActionFieldRequired(action: EditableTableAction, field: GlobalActionField): boolean;
2708
+ isGlobalActionFieldMissing(action: EditableTableAction, field: GlobalActionField): boolean;
2709
+ hasActionFieldError(action: EditableTableAction, key: string): boolean;
2710
+ getActionFieldError(action: EditableTableAction, key: string): string;
2711
+ getGlobalActionFieldValue(action: EditableTableAction, field: GlobalActionField): any;
2712
+ onGlobalActionFieldChange(action: EditableTableAction, field: GlobalActionField, value: any, kind: 'toolbar' | 'row' | 'bulk'): void;
2515
2713
  private stringifyJson;
2516
2714
  private normalizeSurfaceOpenPayload;
2517
2715
  private setActionFieldError;
2518
2716
  private clearActionFieldError;
2519
2717
  private collectGlobalActionFieldValues;
2520
- private serializeGlobalActionParam;
2521
- private buildPrimaryParam;
2522
2718
  private buildGlobalActionPayload;
2523
2719
  getToolbarActionShortcutScope(action: ToolbarAction): ToolbarShortcutScope;
2524
2720
  onToolbarActionShortcutScopeChange(action: ToolbarAction, value: ToolbarShortcutScope | string): void;
@@ -2710,6 +2906,7 @@ declare class FilterSettingsComponent implements OnChanges, AfterViewInit, OnDes
2710
2906
  }[];
2711
2907
  getContrastWarning(): string | null;
2712
2908
  applyPreset(key: string): void;
2909
+ isPresetActive(key: string): boolean;
2713
2910
  hasBooleanFieldMetadata(): boolean;
2714
2911
  getFieldLabel(name: string): string;
2715
2912
  onAlwaysVisibleFieldSearchChange(value: string): void;
@@ -2873,12 +3070,10 @@ declare class RuleCompilerService {
2873
3070
  static ɵprov: i0.ɵɵInjectableDeclaration<RuleCompilerService>;
2874
3071
  }
2875
3072
 
2876
- type RuleItem = {
2877
- condition: JsonLogicExpression;
3073
+ type RuleItem = Omit<PraxisRuntimeConditionalEffectRule<RuleEffectDefinition>, 'effects'> & {
2878
3074
  cssClass?: string;
2879
3075
  style?: Record<string, string>;
2880
- description?: string;
2881
- effects?: _praxisui_table_rule_builder.RuleEffectDefinition;
3076
+ effects?: RuleEffectDefinition[];
2882
3077
  enabled?: boolean;
2883
3078
  };
2884
3079
  declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy {
@@ -2948,6 +3143,7 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
2948
3143
  onColumnSelect(field: string): void;
2949
3144
  private initFromConfig;
2950
3145
  private loadColumnRules;
3146
+ private normalizePersistedRules;
2951
3147
  rebuildCondition(): void;
2952
3148
  onDraftChange(): void;
2953
3149
  applyTextPreset(preset: string): void;
@@ -2974,6 +3170,8 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
2974
3170
  onExportRules(): void;
2975
3171
  onImportRules(): void;
2976
3172
  private sanitizeRule;
3173
+ private normalizeRuleEffects;
3174
+ getPrimaryEffect(r: RuleItem | null | undefined): RuleEffectDefinition | undefined;
2977
3175
  getAnimationLabel(r: RuleItem): string | null;
2978
3176
  private normalizeRendererAnimation;
2979
3177
  private buildRendererOverrideFromRule;
@@ -3080,6 +3278,8 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3080
3278
  private cdr;
3081
3279
  private configService;
3082
3280
  private readonly i18n;
3281
+ private readonly globalActionCatalogSource;
3282
+ private readonly globalActionCatalog;
3083
3283
  filterSettingsEditor?: FilterSettingsComponent;
3084
3284
  behaviorEditor?: BehaviorConfigEditorComponent;
3085
3285
  rulesEditor?: TableRulesEditorComponent;
@@ -3142,6 +3342,7 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3142
3342
  private hasLocalDataInput;
3143
3343
  private filterDtoLoadSeq;
3144
3344
  private lastKnownFilterSettings;
3345
+ private globalActionValidationIssues;
3145
3346
  private readonly panelData;
3146
3347
  private readonly crudService;
3147
3348
  private readonly panelRef;
@@ -3168,6 +3369,9 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3168
3369
  onRulesConfigChange(newCfg: TableConfig): void;
3169
3370
  private updateColumnMetas;
3170
3371
  private updateCanSaveState;
3372
+ private collectGlobalActionValidationIssues;
3373
+ private findGlobalActionCatalogEntry;
3374
+ private buildGlobalActionCatalog;
3171
3375
  private subscribeCrudEditorChanges;
3172
3376
  private showSuccess;
3173
3377
  private showError;
@@ -3176,6 +3380,7 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3176
3380
  * Normaliza uma configuração de tabela para comparação consistente
3177
3381
  * Remove propriedades undefined, ordena arrays e objetos de forma consistente
3178
3382
  */
3383
+ private withCanonicalIdField;
3179
3384
  private normalizeTableConfig;
3180
3385
  /**
3181
3386
  * Realiza comparação profunda de objetos, ignorando ordem de propriedades
@@ -3238,6 +3443,107 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3238
3443
  static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableConfigEditor, "praxis-table-config-editor", never, {}, {}, never, never, true, never>;
3239
3444
  }
3240
3445
 
3446
+ interface PraxisTableWidgetEditorInputs {
3447
+ config?: TableConfig | null;
3448
+ resourcePath?: string | null;
3449
+ horizontalScroll?: 'auto' | 'wrap' | 'none';
3450
+ tableId?: string;
3451
+ componentInstanceId?: string;
3452
+ [key: string]: unknown;
3453
+ }
3454
+ interface PraxisTableWidgetEditorValue {
3455
+ inputs: PraxisTableWidgetEditorInputs;
3456
+ }
3457
+ declare class PraxisTableWidgetConfigEditor implements SettingsValueProvider$1, AfterViewInit, OnDestroy {
3458
+ inputs: PraxisTableWidgetEditorInputs | null;
3459
+ widgetKey?: string;
3460
+ tableEditor?: PraxisTableConfigEditor;
3461
+ readonly isDirty$: BehaviorSubject<boolean>;
3462
+ readonly isValid$: BehaviorSubject<boolean>;
3463
+ readonly isBusy$: BehaviorSubject<boolean>;
3464
+ private readonly subscription;
3465
+ ngAfterViewInit(): void;
3466
+ ngOnDestroy(): void;
3467
+ getSettingsValue(): PraxisTableWidgetEditorValue;
3468
+ onSave(): PraxisTableWidgetEditorValue;
3469
+ reset(): void;
3470
+ private initializeChildEditor;
3471
+ private buildValue;
3472
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableWidgetConfigEditor, never>;
3473
+ 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>;
3474
+ }
3475
+
3476
+ interface PraxisFilterWidgetEditorInputs {
3477
+ resourcePath?: string | null;
3478
+ fieldMetadata?: FieldMetadata[] | null;
3479
+ filterId?: string;
3480
+ formId?: string;
3481
+ componentInstanceId?: string;
3482
+ alwaysVisibleFields?: string[];
3483
+ alwaysVisibleFieldMetadataOverrides?: Record<string, Record<string, unknown>>;
3484
+ selectedFieldIds?: string[];
3485
+ allowSaveTags?: boolean;
3486
+ changeDebounceMs?: number;
3487
+ placeBooleansInActions?: boolean;
3488
+ showToggleLabels?: boolean;
3489
+ alwaysMinWidth?: number;
3490
+ alwaysColsMd?: number;
3491
+ alwaysColsLg?: number;
3492
+ confirmTagDelete?: boolean;
3493
+ tagColor?: 'primary' | 'accent' | 'warn' | 'basic';
3494
+ tagVariant?: 'filled' | 'outlined';
3495
+ tagButtonColor?: 'primary' | 'accent' | 'warn' | 'basic';
3496
+ actionsButtonColor?: 'primary' | 'accent' | 'warn' | 'basic';
3497
+ actionsVariant?: 'standard' | 'outlined';
3498
+ useInlineSearchableSelectVariant?: boolean;
3499
+ useInlineRangeVariant?: boolean;
3500
+ useInlineDateVariant?: boolean;
3501
+ useInlineDateRangeVariant?: boolean;
3502
+ useInlineTimeVariant?: boolean;
3503
+ useInlineTimeRangeVariant?: boolean;
3504
+ useInlineTreeSelectVariant?: boolean;
3505
+ overlayVariant?: 'card' | 'frosted';
3506
+ overlayBackdrop?: boolean;
3507
+ advancedOpenMode?: 'modal' | 'drawer';
3508
+ advancedClearButtonsEnabled?: boolean;
3509
+ persistenceKey?: string;
3510
+ showFilterSettings?: boolean;
3511
+ enableCustomization?: boolean;
3512
+ [key: string]: unknown;
3513
+ }
3514
+ interface PraxisFilterWidgetEditorValue {
3515
+ inputs: PraxisFilterWidgetEditorInputs;
3516
+ }
3517
+ declare class PraxisFilterWidgetConfigEditor implements SettingsValueProvider$1, OnDestroy {
3518
+ widgetKey?: string;
3519
+ set inputs(value: PraxisFilterWidgetEditorInputs | null);
3520
+ get inputs(): PraxisFilterWidgetEditorInputs | null;
3521
+ set filterSettings(component: FilterSettingsComponent | undefined);
3522
+ metadata: FieldMetadata[];
3523
+ settings: FilterConfig;
3524
+ configKey?: string;
3525
+ readonly isDirty$: BehaviorSubject<boolean>;
3526
+ readonly isValid$: BehaviorSubject<boolean>;
3527
+ readonly isBusy$: BehaviorSubject<boolean>;
3528
+ private currentInputs;
3529
+ private settingsEditor?;
3530
+ private subscription;
3531
+ ngOnDestroy(): void;
3532
+ getSettingsValue(): PraxisFilterWidgetEditorValue;
3533
+ onSave(): PraxisFilterWidgetEditorValue;
3534
+ reset(): void;
3535
+ private buildValue;
3536
+ private buildSettingsFromInputs;
3537
+ private projectSettingsToInputs;
3538
+ private normalizeSettings;
3539
+ private normalizeAdvancedOpenMode;
3540
+ private normalizeOverlayVariant;
3541
+ private cloneStringArray;
3542
+ private cloneRecord;
3543
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisFilterWidgetConfigEditor, never>;
3544
+ 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>;
3545
+ }
3546
+
3241
3547
  declare class DataFormatterComponent implements OnInit, OnChanges {
3242
3548
  private cdr;
3243
3549
  private formattingService;
@@ -3306,31 +3612,6 @@ declare class DataFormatterComponent implements OnInit, OnChanges {
3306
3612
  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
3613
  }
3308
3614
 
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
3615
  interface AnalyticsTableConfigAdapterOptions {
3335
3616
  title?: PraxisTextValue;
3336
3617
  subtitle?: PraxisTextValue;
@@ -3344,24 +3625,6 @@ declare class AnalyticsTableConfigAdapterService {
3344
3625
  static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableConfigAdapterService>;
3345
3626
  }
3346
3627
 
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
3628
  declare class AnalyticsTableContractService {
3366
3629
  private readonly analyticsSchema;
3367
3630
  private readonly resolver;
@@ -3397,6 +3660,15 @@ declare function buildTableApplyPlan(doc: TableAuthoringDocument, runtime?: Tabl
3397
3660
  }): TableApplyPlan;
3398
3661
  declare function serializeTableAuthoringDocument(doc: TableAuthoringDocument): unknown;
3399
3662
 
3663
+ /**
3664
+ * Manifesto de authoring canônico para o componente praxis-table.
3665
+ * Este arquivo define o contrato executável para que agentes de IA editem tabelas.
3666
+ *
3667
+ * @version 2.0.0
3668
+ * @status COMPLIANT - Alinhado com o contrato v2 e TableConfig canônico.
3669
+ */
3670
+ declare const PRAXIS_TABLE_AUTHORING_MANIFEST: ComponentAuthoringManifest;
3671
+
3400
3672
  declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3401
3673
  private readonly i18n;
3402
3674
  config: TableConfig;
@@ -3643,7 +3915,6 @@ declare function providePraxisTableMetadata(): Provider;
3643
3915
  declare module '@praxisui/core' {
3644
3916
  interface AiCapabilityCategoryMap {
3645
3917
  meta: true;
3646
- bindings: true;
3647
3918
  columns: true;
3648
3919
  renderer: true;
3649
3920
  conditional: true;
@@ -3729,18 +4000,23 @@ type ComponentEditPlanCapability = {
3729
4000
  declare const TABLE_COMPONENT_EDIT_PLAN_KIND = "praxis.table.component-edit-plan";
3730
4001
  declare const TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND = "praxis.table.component-edit-plan.batch";
3731
4002
  declare const TABLE_COMPONENT_EDIT_PLAN_VERSION = "1.0";
3732
- type TableComponentEditChangeKind = 'set_column_format' | 'set_column_header' | 'set_column_visibility' | 'set_column_conditional_style' | 'set_column_computed' | 'set_column_value_mapping' | 'set_column_badge_renderer' | 'set_column_conditional_badge_renderers';
3733
- declare const TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS: readonly ["set_column_format", "set_column_header", "set_column_visibility", "set_column_conditional_style", "set_column_computed", "set_column_value_mapping", "set_column_badge_renderer", "set_column_conditional_badge_renderers"];
4003
+ type TableComponentEditChangeKind = 'set_column_format' | 'set_column_header' | 'set_column_visibility' | 'set_column_filterable' | 'set_column_sortable' | 'set_column_width' | 'set_column_align' | 'set_column_sticky' | 'set_column_conditional_style' | 'set_row_conditional_style' | 'set_column_computed' | 'set_column_value_mapping' | 'set_column_renderer' | 'set_column_badge_renderer' | 'set_column_conditional_badge_renderers' | 'set_row_conditional_renderer' | 'configure_table_filtering' | 'configure_advanced_filters' | 'add_advanced_filter_fields' | 'remove_advanced_filter_fields' | 'configure_table_pagination' | 'configure_table_selection' | 'configure_table_sorting' | 'configure_toolbar' | 'add_toolbar_action' | 'configure_export' | 'set_table_density' | 'set_toolbar_visibility';
4004
+ type TableComponentEditOperationId = 'column.format.set' | 'column.header.set' | 'column.visibility.set' | 'column.filterable.set' | 'column.sortable.set' | 'column.width.set' | 'column.align.set' | 'column.sticky.set' | 'column.renderer.set' | 'column.valueMapping.set' | 'column.conditionalStyle.add' | 'row.styleRule.add' | 'column.conditionalRenderer.add' | 'column.computed.add' | 'row.conditionalRenderer.add' | 'behavior.filtering.configure' | 'filter.advanced.configure' | 'filter.advanced.fields.add' | 'filter.advanced.fields.remove' | 'behavior.pagination.configure' | 'behavior.selection.configure' | 'behavior.sorting.configure' | 'toolbar.configure' | 'toolbar.action.add' | 'export.configure' | 'appearance.density.set' | 'toolbar.visibility.set';
4005
+ declare const TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS: readonly ["set_column_format", "set_column_header", "set_column_visibility", "set_column_filterable", "set_column_sortable", "set_column_width", "set_column_align", "set_column_sticky", "set_column_conditional_style", "set_row_conditional_style", "set_column_computed", "set_column_value_mapping", "set_column_renderer", "set_column_badge_renderer", "set_column_conditional_badge_renderers", "set_row_conditional_renderer", "configure_table_filtering", "configure_advanced_filters", "add_advanced_filter_fields", "remove_advanced_filter_fields", "configure_table_pagination", "configure_table_selection", "configure_table_sorting", "configure_toolbar", "add_toolbar_action", "configure_export", "set_table_density", "set_toolbar_visibility"];
3734
4006
  declare const TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS: Record<TableComponentEditChangeKind, string>;
3735
4007
  interface TableComponentEditPlan {
3736
4008
  kind?: typeof TABLE_COMPONENT_EDIT_PLAN_KIND;
3737
4009
  version?: typeof TABLE_COMPONENT_EDIT_PLAN_VERSION | string;
3738
4010
  componentId?: 'praxis-table' | string;
3739
4011
  changeKind: TableComponentEditChangeKind | string;
4012
+ operationId?: TableComponentEditOperationId | string;
3740
4013
  capabilityPath?: string;
3741
4014
  configPath?: string;
3742
4015
  field?: string;
3743
4016
  targetField?: string;
4017
+ target?: unknown;
4018
+ input?: unknown;
4019
+ params?: unknown;
3744
4020
  value?: unknown;
3745
4021
  condition?: unknown;
3746
4022
  style?: unknown;
@@ -3768,7 +4044,7 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3768
4044
  readonly $defs: {
3769
4045
  readonly changeKind: {
3770
4046
  readonly type: "string";
3771
- readonly enum: readonly ["set_column_format", "set_column_header", "set_column_visibility", "set_column_conditional_style", "set_column_computed", "set_column_value_mapping", "set_column_badge_renderer", "set_column_conditional_badge_renderers"];
4047
+ readonly enum: readonly ["set_column_format", "set_column_header", "set_column_visibility", "set_column_filterable", "set_column_sortable", "set_column_width", "set_column_align", "set_column_sticky", "set_column_conditional_style", "set_row_conditional_style", "set_column_computed", "set_column_value_mapping", "set_column_renderer", "set_column_badge_renderer", "set_column_conditional_badge_renderers", "set_row_conditional_renderer", "configure_table_filtering", "configure_advanced_filters", "add_advanced_filter_fields", "remove_advanced_filter_fields", "configure_table_pagination", "configure_table_selection", "configure_table_sorting", "configure_toolbar", "add_toolbar_action", "configure_export", "set_table_density", "set_toolbar_visibility"];
3772
4048
  };
3773
4049
  readonly capabilityPath: {
3774
4050
  readonly type: "string";
@@ -3813,7 +4089,6 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3813
4089
  readonly operation: {
3814
4090
  readonly type: "object";
3815
4091
  readonly additionalProperties: false;
3816
- readonly required: readonly ["changeKind", "field", "value"];
3817
4092
  readonly properties: {
3818
4093
  readonly kind: {
3819
4094
  readonly const: "praxis.table.component-edit-plan";
@@ -3824,6 +4099,12 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3824
4099
  readonly componentId: {
3825
4100
  readonly const: "praxis-table";
3826
4101
  };
4102
+ readonly operationId: {
4103
+ readonly enum: readonly ["column.format.set", "column.header.set", "column.visibility.set", "column.filterable.set", "column.sortable.set", "column.width.set", "column.align.set", "column.sticky.set", "column.renderer.set", "column.valueMapping.set", "column.conditionalStyle.add", "row.styleRule.add", "column.conditionalRenderer.add", "column.computed.add", "row.conditionalRenderer.add", "behavior.filtering.configure", "filter.advanced.configure", "filter.advanced.fields.add", "filter.advanced.fields.remove", "behavior.pagination.configure", "behavior.selection.configure", "behavior.sorting.configure", "toolbar.configure", "toolbar.action.add", "export.configure", "appearance.density.set", "toolbar.visibility.set"];
4104
+ };
4105
+ readonly target: true;
4106
+ readonly input: true;
4107
+ readonly params: true;
3827
4108
  readonly changeKind: {
3828
4109
  readonly $ref: "#/$defs/changeKind";
3829
4110
  };
@@ -3852,6 +4133,13 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3852
4133
  readonly type: "string";
3853
4134
  };
3854
4135
  };
4136
+ readonly anyOf: readonly [{
4137
+ readonly required: readonly ["changeKind", "field", "value"];
4138
+ }, {
4139
+ readonly required: readonly ["operationId", "target", "input"];
4140
+ }, {
4141
+ readonly required: readonly ["operationId", "input"];
4142
+ }];
3855
4143
  readonly allOf: readonly [{
3856
4144
  readonly if: {
3857
4145
  readonly properties: {
@@ -3928,6 +4216,8 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3928
4216
  readonly required: readonly ["condition"];
3929
4217
  readonly anyOf: readonly [{
3930
4218
  readonly required: readonly ["badge"];
4219
+ }, {
4220
+ readonly required: readonly ["renderer"];
3931
4221
  }, {
3932
4222
  readonly required: readonly ["value"];
3933
4223
  }];
@@ -3938,6 +4228,11 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3938
4228
  readonly badge: {
3939
4229
  readonly $ref: "#/$defs/badge";
3940
4230
  };
4231
+ readonly renderer: {
4232
+ readonly type: "object";
4233
+ readonly minProperties: 1;
4234
+ readonly additionalProperties: true;
4235
+ };
3941
4236
  readonly value: {
3942
4237
  readonly $ref: "#/$defs/badge";
3943
4238
  };
@@ -3995,5 +4290,5 @@ declare function coerceTableComponentEditPlan(value: unknown): TableComponentEdi
3995
4290
  declare function compileTableComponentEditPlans(plans: TableComponentEditPlan[], currentConfig: TableConfig): TableComponentEditPlanCompileResult;
3996
4291
  declare function compileTableComponentEditPlan(plan: TableComponentEditPlan, currentConfig: TableConfig): TableComponentEditPlanCompileResult;
3997
4292
 
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 };
4293
+ 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 };
4294
+ 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 };