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

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 (41) 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 +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-DFBE5wpp.mjs +57164 -0
  35. package/fesm2022/{praxisui-table-table-agentic-authoring-turn-flow-tu7jtTwV.mjs → praxisui-table-table-agentic-authoring-turn-flow-EigJf8mp.mjs} +59 -4
  36. package/fesm2022/praxisui-table-table-ai.adapter-7THXe94D.mjs +2674 -0
  37. package/fesm2022/praxisui-table.mjs +1 -51444
  38. package/index.d.ts +391 -114
  39. package/package.json +15 -9
  40. package/src/lib/praxis-table.json-api.md +1325 -0
  41. package/fesm2022/praxisui-table-table-ai.adapter-DxjDaQqy.mjs +0 -895
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnDestroy, EventEmitter, ElementRef, OnInit, OnChanges, AfterViewInit, DoCheck, DestroyRef, ChangeDetectorRef, NgZone, SimpleChanges, Provider, AfterContentInit } from '@angular/core';
2
+ import { OnDestroy, EventEmitter, ElementRef, OnInit, OnChanges, AfterViewInit, DoCheck, DestroyRef, ChangeDetectorRef, NgZone, SimpleChanges, Provider, AfterContentInit, Injector } from '@angular/core';
3
3
  import { ActivatedRoute } from '@angular/router';
4
4
  import { MatTable, MatTableDataSource } from '@angular/material/table';
5
5
  import { MatPaginatorSelectConfig, MatPaginator, PageEvent } from '@angular/material/paginator';
@@ -10,16 +10,16 @@ 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, 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
+ 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;
@@ -835,6 +905,8 @@ type RowActionRuntimeOptions = {
835
905
  type RuntimeRowAction = {
836
906
  id: string;
837
907
  action: string;
908
+ globalAction?: GlobalActionRef;
909
+ effects?: PraxisRuntimeGlobalActionEffect[];
838
910
  label?: string;
839
911
  icon?: string;
840
912
  color?: string;
@@ -842,6 +914,7 @@ type RuntimeRowAction = {
842
914
  disabled?: boolean;
843
915
  overflow?: boolean;
844
916
  __praxisDiscoveredAction?: ResourceActionCatalogItem;
917
+ __praxisDiscoveredSurface?: ResourceSurfaceCatalogItem;
845
918
  __praxisCapabilityDenied?: boolean;
846
919
  };
847
920
  type ExpansionDetailRuntimeStatus = 'idle' | 'loading' | 'ready' | 'error' | 'blocked';
@@ -865,17 +938,20 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
865
938
  private connectionStorage;
866
939
  private hostRef;
867
940
  private global;
868
- private resourceDiscovery;
941
+ private injector;
869
942
  private componentKeys;
870
943
  private loadingOrchestrator;
944
+ private globalActions;
871
945
  private loadingRenderer?;
872
946
  private route?;
873
947
  private logger?;
948
+ private analyticsStatsApi?;
874
949
  private static readonly CELL_ANIMATION_CHANGE_CACHE_LIMIT;
875
950
  private static readonly ROW_DISCOVERY_SUCCESS_CACHE_TTL_MS;
876
951
  private static readonly ROW_DISCOVERY_ERROR_CACHE_TTL_MS;
877
952
  private static readonly ROW_DISCOVERY_CACHE_LIMIT;
878
953
  private static readonly ROW_DISCOVERY_MAX_CONCURRENT_REQUESTS;
954
+ private _resourceDiscovery?;
879
955
  readonly paginatorSelectConfig: MatPaginatorSelectConfig;
880
956
  private static readonly ROW_ANIMATION_PRESETS;
881
957
  private static readonly ROW_ANIMATION_PRESET_ALIASES;
@@ -900,6 +976,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
900
976
  rowAction: EventEmitter<any>;
901
977
  toolbarAction: EventEmitter<any>;
902
978
  bulkAction: EventEmitter<any>;
979
+ exportAction: EventEmitter<any>;
903
980
  columnReorder: EventEmitter<any>;
904
981
  columnReorderAttempt: EventEmitter<any>;
905
982
  beforeDelete: EventEmitter<any>;
@@ -937,6 +1014,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
937
1014
  readonly isExpansionDetailRow: (index: number, row: any) => boolean;
938
1015
  columnReorderStatusMessage: string;
939
1016
  columnReorderVisualStatusMessage: string;
1017
+ exportBusy: boolean;
1018
+ exportStatusMessage: string;
940
1019
  private columnReorderStatusTimer;
941
1020
  private columnReorderVisualStatusTimer;
942
1021
  private columnReorderUndoSubscription;
@@ -949,6 +1028,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
949
1028
  private lastResolvedDataMode;
950
1029
  private localFilterFieldMetadataCache;
951
1030
  private localFilterFieldMetadataCacheKey;
1031
+ private analyticsLoadSequence;
952
1032
  private uncontrolledExpandedRowKeys;
953
1033
  private readonly expansionOpaqueRefCacheLimit;
954
1034
  private expansionOpaqueRefByRowKey;
@@ -976,6 +1056,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
976
1056
  private rowDiscoveryMarkForCheckScheduled;
977
1057
  private lastRowDiscoveryScopeKey;
978
1058
  private readonly i18n;
1059
+ private readonly collectionExport;
979
1060
  private readonly paginatorIntl;
980
1061
  private schemaFieldsSnapshot;
981
1062
  private runtimeSchemaMeta;
@@ -1025,6 +1106,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1025
1106
  hasBottomPaginator(): boolean;
1026
1107
  hasExplicitResourcePath(): boolean;
1027
1108
  hasLocalDataInput(): boolean;
1109
+ hasAnalyticsProjectionInput(): boolean;
1028
1110
  getDataMode(): DataMode;
1029
1111
  isRemoteMode(): boolean;
1030
1112
  isLocalMode(): boolean;
@@ -1073,6 +1155,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1073
1155
  getSchemaFieldsSnapshot(): SchemaFieldHint[];
1074
1156
  aiAdapter: any;
1075
1157
  private aiAdapterLoadStarted;
1158
+ private aiAssistantOpenAfterAdapterLoad;
1076
1159
  aiAssistantOpen: boolean;
1077
1160
  aiAssistantPrompt: string;
1078
1161
  aiAssistantViewState: PraxisAssistantTurnViewState | null;
@@ -1081,7 +1164,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1081
1164
  private aiAssistantController;
1082
1165
  private aiAssistantStateSubscription;
1083
1166
  private readonly aiApi;
1167
+ private readonly assistantSessions;
1084
1168
  private readonly aiTurnOrchestrator;
1169
+ private readonly aiAssistantSessionEffect;
1085
1170
  private computedContextCache;
1086
1171
  private computedFieldNames;
1087
1172
  private readonly jsonLogic;
@@ -1128,21 +1213,42 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1128
1213
  private tableConfigKey;
1129
1214
  private filterConfigKey;
1130
1215
  private ensureConfigDefaults;
1216
+ private mergePersistedTableConfigWithInput;
1217
+ private reconcileHostDeclaredTableContract;
1218
+ private reconcileHostDeclaredColumns;
1219
+ private reconcileHostDeclaredRowActions;
1220
+ private normalizePersistedRowActionIds;
1221
+ private normalizePersistedColumnIds;
1222
+ private clonePlainObject;
1131
1223
  private setShowToolbar;
1132
1224
  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);
1225
+ 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);
1226
+ private get resourceDiscovery();
1134
1227
  private ensureAiAdapterLoaded;
1135
1228
  openAiAssistant(): void;
1229
+ aiAssistantTriggerTestId(position: string): string;
1230
+ openAiAssistantFromSession(session: PraxisAssistantSessionSnapshot): void;
1136
1231
  closeAiAssistant(): void;
1137
1232
  onAiAssistantPromptChange(prompt: string): void;
1138
1233
  onAiAssistantSubmit(prompt: string): void;
1139
1234
  onAiAssistantApply(): void;
1235
+ onAiAssistantRetry(): void;
1236
+ onAiAssistantCancel(): void;
1140
1237
  onAiAssistantQuickReply(reply: PraxisAssistantShellQuickReply): void;
1141
1238
  onAiAssistantEditMessage(message: PraxisAssistantShellMessage): void;
1142
1239
  onAiAssistantResendMessage(message: PraxisAssistantShellMessage): void;
1143
1240
  onAiAssistantLayoutChange(layout: PraxisAssistantShellLayout): void;
1144
1241
  private initializeAiAssistantController;
1145
1242
  private buildAiAssistantContextItems;
1243
+ private buildAiAssistantContextSnapshot;
1244
+ private syncAiAssistantSession;
1245
+ private hasAiAssistantSessionState;
1246
+ private resolveAiAssistantSessionId;
1247
+ private resolveAiAssistantOwnerId;
1248
+ private resolveAiAssistantRouteKey;
1249
+ private resolveAiAssistantSummary;
1250
+ private resolveAiAssistantBadge;
1251
+ private resolveAiAssistantIcon;
1146
1252
  private emitLoadingState;
1147
1253
  private hasResolvedRemoteDataLoad;
1148
1254
  private isTableDataLoading;
@@ -1360,19 +1466,49 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1360
1466
  private emitRowActionEvent;
1361
1467
  private showConfirmDialog;
1362
1468
  private executeDeleteAction;
1469
+ private dispatchRowAction;
1363
1470
  private cloneForEmit;
1364
1471
  private interpolateActionMessageTemplate;
1365
1472
  private buildActionFeedbackContext;
1366
1473
  private resolveActionFeedbackMessage;
1367
1474
  private showActionFeedbackMessage;
1368
1475
  private emitEventWithActionFeedback;
1476
+ private executeConfiguredGlobalAction;
1477
+ private resolveConfiguredGlobalActionRef;
1478
+ private resolveActionGlobalActionRef;
1479
+ private resolveGlobalActionPayload;
1480
+ private buildGlobalActionTemplateContext;
1481
+ private resolveGlobalActionTemplateValue;
1482
+ private isDeferredTemplateExpressionKey;
1483
+ private interpolateGlobalActionTemplate;
1484
+ private shouldEmitLocalForGlobalAction;
1369
1485
  private resolveBulkValidationMessage;
1370
1486
  private hasValidBulkSelectionCount;
1371
1487
  private showBulkConfirmDialog;
1372
1488
  onToolbarAction(event: {
1373
1489
  action: string;
1374
1490
  actionConfig?: any;
1375
- }): void;
1491
+ }): Promise<void>;
1492
+ private resolveBulkExportFormat;
1493
+ private isBulkExportActionKey;
1494
+ private normalizeExportFormat;
1495
+ private isExportFormatEnabled;
1496
+ private getFirstEnabledExportFormat;
1497
+ onExportAction(event: {
1498
+ format: string;
1499
+ }): Promise<void>;
1500
+ private shouldBlockSelectedExportWithoutSelection;
1501
+ private buildTableExportRequest;
1502
+ private resolveEffectiveExportScope;
1503
+ private resolveTableExportLoadedItems;
1504
+ private computeLocalExportRows;
1505
+ private buildTableExportFields;
1506
+ private downloadExportResult;
1507
+ private triggerExportDownload;
1508
+ private resolveExportFileName;
1509
+ private getExportFileExtension;
1510
+ private getExportMimeType;
1511
+ private showExportFeedback;
1376
1512
  onAdvancedFilterSubmit(criteria: Record<string, any>): void;
1377
1513
  onAdvancedFilterChange(criteria: Record<string, any>): void;
1378
1514
  onAdvancedFilterClear(): void;
@@ -1507,6 +1643,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1507
1643
  private pruneRowDiscoveryCaches;
1508
1644
  private pruneRowDiscoveryCache;
1509
1645
  private fetchData;
1646
+ private resolveAnalyticsProjection;
1647
+ private fetchAnalyticsProjectionData;
1510
1648
  private getEffectiveFilterCriteria;
1511
1649
  retryData(): void;
1512
1650
  reloadSchema(): void;
@@ -1519,9 +1657,29 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1519
1657
  * 3. format (data formatting like dates, numbers, currency)
1520
1658
  */
1521
1659
  getCellValue(rowData: any, column: ColumnDefinition): any;
1660
+ private normalizeReadonlyEntityLookupCellValue;
1661
+ private toEntityLookupDisplayToken;
1662
+ private isEntityLookupDisplayCandidate;
1663
+ private toEntityLookupDisplayPrimitive;
1522
1664
  private resolveImplicitFormat;
1523
1665
  getCellClasses(rowData: any, column: ColumnDefinition): string[] | undefined;
1524
1666
  getCellNgStyle(rowData: any, column: ColumnDefinition): Record<string, string> | undefined;
1667
+ private normalizeConditionalStyleRules;
1668
+ private normalizeConditionalStyleRecord;
1669
+ getCellTooltip(rowData: any, column: ColumnDefinition): string | null;
1670
+ getCellTooltipPosition(rowData: any, column: ColumnDefinition): 'above' | 'below' | 'left' | 'right' | 'before' | 'after';
1671
+ private resolveConditionalStyleTooltipText;
1672
+ private normalizeConditionalStyleEffects;
1673
+ private hasConditionalStyleEffectPayload;
1674
+ private resolveConditionalStyleClasses;
1675
+ private resolveConditionalStyleObject;
1676
+ private compileConditionalStyleEffect;
1677
+ private normalizeConditionalRendererRules;
1678
+ private normalizeObjectRecord;
1679
+ private buildColumnRendererOverrideFromEffects;
1680
+ private buildColumnRendererFromEffect;
1681
+ private resolveRuleAnimationFromEffects;
1682
+ private resolveRowTooltipFromEffects;
1525
1683
  private resetComputedContextCache;
1526
1684
  private ensureEffectiveCellRenderCache;
1527
1685
  private ensureCellAnimationPreviousValuesByRowId;
@@ -1533,6 +1691,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1533
1691
  private buildComputedSignature;
1534
1692
  private stringifyDependencyValue;
1535
1693
  private buildComputedValueMap;
1694
+ private collectComputedColumns;
1695
+ private evaluateCanonicalComputedColumns;
1696
+ private collectComputedExpressionDependencies;
1697
+ private collectJsonLogicVarDependencies;
1698
+ private resolveJsonLogicVarPath;
1536
1699
  private buildEvaluationContext;
1537
1700
  private getJsonLogicEvaluationOptions;
1538
1701
  private resolveJsonLogicUserTimeZone;
@@ -1769,6 +1932,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1769
1932
  private reconcileSelectionAfterDataChange;
1770
1933
  private getComparableRowIdentity;
1771
1934
  getIdField(): string;
1935
+ private resolveConfigMetaIdField;
1772
1936
  private syncRuntimeSchemaMetaFromConfig;
1773
1937
  private getEffectiveMetadataSnapshot;
1774
1938
  getActionId(action: any): string;
@@ -1811,11 +1975,19 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1811
1975
  private splitVisibleRowActionsFromVisible;
1812
1976
  private decorateConfiguredRowAction;
1813
1977
  private getDiscoveredRowWorkflowActions;
1978
+ private getDiscoveredRowSurfaceActionsFromSnapshot;
1814
1979
  private getDiscoveredRowWorkflowActionsFromCatalog;
1815
1980
  private supportsRowCrudAction;
1816
1981
  private isCapabilityManagedCrudRowAction;
1817
1982
  private findItemWorkflowAction;
1983
+ private findItemSurface;
1984
+ private isRowSurfaceAction;
1985
+ private isWritableRowSurface;
1986
+ private isReadableRowSurface;
1987
+ private getDiscoveredSurfaceIcon;
1988
+ private getDiscoveredSurfaceColor;
1818
1989
  private getUnavailableWorkflowMessage;
1990
+ private getUnavailableSurfaceMessage;
1819
1991
  private normalizeActionId;
1820
1992
  private isActionVisible;
1821
1993
  trackAction(index: number, item: any): any;
@@ -1829,8 +2001,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1829
2001
  getRowMenuIcon(): string;
1830
2002
  private scheduleRowDiscoveryMarkForCheck;
1831
2003
  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>;
2004
+ 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; }]>;
2005
+ 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
2006
  static ngAcceptInputType_enableCustomization: unknown;
1835
2007
  }
1836
2008
 
@@ -1843,7 +2015,6 @@ interface EditorDocument<TConfig, TBindings = unknown> {
1843
2015
  type TableHorizontalScroll = 'auto' | 'wrap' | 'none';
1844
2016
  interface TableBindings {
1845
2017
  resourcePath?: string | null;
1846
- idField?: string;
1847
2018
  horizontalScroll?: TableHorizontalScroll;
1848
2019
  }
1849
2020
  interface TableAuthoringDocument extends EditorDocument<TableConfig, TableBindings> {
@@ -1900,7 +2071,6 @@ interface TableApplyPlan {
1900
2071
  };
1901
2072
  diff?: {
1902
2073
  resourcePathChanged?: boolean;
1903
- idFieldChanged?: boolean;
1904
2074
  horizontalScrollChanged?: boolean;
1905
2075
  requiresDataRefresh?: boolean;
1906
2076
  };
@@ -2373,6 +2543,8 @@ interface ToolbarAction {
2373
2543
  /** Material button appearance: filled (flat), outlined (stroked), elevated (raised), text, tonal */
2374
2544
  appearance?: 'filled' | 'outlined' | 'elevated' | 'text' | 'tonal';
2375
2545
  action: string;
2546
+ globalAction?: GlobalActionRef;
2547
+ effects?: PraxisRuntimeGlobalActionEffect[];
2376
2548
  position: 'start' | 'end';
2377
2549
  order?: number;
2378
2550
  disabled?: boolean;
@@ -2380,7 +2552,7 @@ interface ToolbarAction {
2380
2552
  shortcut?: string;
2381
2553
  shortcutScope?: 'toolbar' | 'global';
2382
2554
  tooltip?: string;
2383
- visibleWhen?: string;
2555
+ visibleWhen?: JsonLogicExpression | null;
2384
2556
  children?: ToolbarAction[];
2385
2557
  }
2386
2558
  interface RowAction {
@@ -2388,11 +2560,15 @@ interface RowAction {
2388
2560
  label: string;
2389
2561
  icon: string;
2390
2562
  action: string;
2563
+ globalAction?: GlobalActionRef;
2564
+ effects?: PraxisRuntimeGlobalActionEffect[];
2391
2565
  color?: 'primary' | 'accent' | 'warn';
2392
2566
  tooltip?: string;
2393
2567
  requiresConfirmation?: boolean;
2394
2568
  autoDelete?: boolean;
2395
2569
  separator?: boolean;
2570
+ visibleWhen?: JsonLogicExpression | null;
2571
+ disabledWhen?: JsonLogicExpression | null;
2396
2572
  conditional?: string;
2397
2573
  }
2398
2574
  interface BulkAction {
@@ -2400,6 +2576,8 @@ interface BulkAction {
2400
2576
  label: string;
2401
2577
  icon: string;
2402
2578
  action: string;
2579
+ globalAction?: GlobalActionRef;
2580
+ effects?: PraxisRuntimeGlobalActionEffect[];
2403
2581
  color?: 'primary' | 'accent' | 'warn';
2404
2582
  tooltip?: string;
2405
2583
  requiresConfirmation?: boolean;
@@ -2413,6 +2591,25 @@ interface ToolbarActionsChange {
2413
2591
  value: any;
2414
2592
  fullConfig: TableConfig;
2415
2593
  }
2594
+ type GlobalActionCatalogOption = GlobalActionCatalogEntry & {
2595
+ param?: {
2596
+ required?: boolean;
2597
+ label?: string;
2598
+ placeholder?: string;
2599
+ hint?: string;
2600
+ };
2601
+ };
2602
+ type EditableTableAction = {
2603
+ id?: string;
2604
+ label?: string;
2605
+ action?: string;
2606
+ globalAction?: GlobalActionRef;
2607
+ effects?: PraxisRuntimeGlobalActionEffect[];
2608
+ position?: string;
2609
+ appearance?: string;
2610
+ visibleWhen?: JsonLogicExpression | null;
2611
+ disabledWhen?: JsonLogicExpression | null;
2612
+ };
2416
2613
  type ToolbarShortcutScope = 'toolbar' | 'global';
2417
2614
  interface InternalActionSpec {
2418
2615
  id: string;
@@ -2433,14 +2630,14 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
2433
2630
  editingToolbarActionIndex: number | null;
2434
2631
  editingRowActionIndex: number | null;
2435
2632
  editingBulkActionIndex: number | null;
2436
- readonly globalActionCatalog: GlobalActionSpec[];
2633
+ private readonly i18n;
2634
+ readonly globalActionCatalog: GlobalActionCatalogOption[];
2437
2635
  get internalActionCatalog(): InternalActionSpec[];
2438
2636
  readonly customActionValue = "__custom__";
2439
2637
  readonly validShortcutScopes: ToolbarShortcutScope[];
2440
2638
  private readonly actionFieldDrafts;
2441
2639
  private readonly actionFieldErrors;
2442
2640
  private readonly warnedInvalidShortcutScopes;
2443
- private readonly i18n;
2444
2641
  private destroy$;
2445
2642
  constructor(fb: FormBuilder, iconPicker: IconPickerService);
2446
2643
  tx(key: string, fallback: string): string;
@@ -2469,56 +2666,37 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
2469
2666
  private removeAddToolbarAction;
2470
2667
  private syncAddFormFromActions;
2471
2668
  private updateConfig;
2472
- getActionSelectValue(value?: string): string;
2473
- getActionParam(value?: string): string;
2474
- getActionCustomValue(value?: string): string;
2669
+ getActionSelectValue(action?: EditableTableAction): string;
2670
+ getActionParam(action?: EditableTableAction): string;
2671
+ isRequiredGlobalActionParamMissing(action: EditableTableAction, spec: GlobalActionCatalogOption): boolean;
2672
+ getActionCustomValue(action?: EditableTableAction): string;
2475
2673
  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;
2674
+ getActionSpecById(id: string): GlobalActionCatalogOption | undefined;
2675
+ onActionSelectChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2676
+ onActionParamChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2677
+ onActionCustomChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2678
+ getCanonicalGlobalActionRef(action?: EditableTableAction): GlobalActionRef | undefined;
2679
+ private setCanonicalGlobalActionRef;
2486
2680
  private touchActionList;
2487
- private parseActionValue;
2681
+ getActionJsonLogicText(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen'): string;
2682
+ onActionJsonLogicChange(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen', value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2683
+ getActionConditionError(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen'): string;
2488
2684
  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;
2685
+ getGlobalActionSchema(action: EditableTableAction): _praxisui_core.GlobalActionUiSchema | undefined;
2686
+ getSurfaceOpenActionPayload(action: EditableTableAction): SurfaceOpenPayload;
2687
+ onSurfaceOpenActionPayloadChange(action: EditableTableAction, payload: SurfaceOpenPayload, kind: 'toolbar' | 'row' | 'bulk'): void;
2688
+ shouldShowGlobalActionField(action: EditableTableAction, field: GlobalActionField): boolean;
2689
+ isGlobalActionFieldRequired(action: EditableTableAction, field: GlobalActionField): boolean;
2690
+ isGlobalActionFieldMissing(action: EditableTableAction, field: GlobalActionField): boolean;
2691
+ hasActionFieldError(action: EditableTableAction, key: string): boolean;
2692
+ getActionFieldError(action: EditableTableAction, key: string): string;
2693
+ getGlobalActionFieldValue(action: EditableTableAction, field: GlobalActionField): any;
2694
+ onGlobalActionFieldChange(action: EditableTableAction, field: GlobalActionField, value: any, kind: 'toolbar' | 'row' | 'bulk'): void;
2515
2695
  private stringifyJson;
2516
2696
  private normalizeSurfaceOpenPayload;
2517
2697
  private setActionFieldError;
2518
2698
  private clearActionFieldError;
2519
2699
  private collectGlobalActionFieldValues;
2520
- private serializeGlobalActionParam;
2521
- private buildPrimaryParam;
2522
2700
  private buildGlobalActionPayload;
2523
2701
  getToolbarActionShortcutScope(action: ToolbarAction): ToolbarShortcutScope;
2524
2702
  onToolbarActionShortcutScopeChange(action: ToolbarAction, value: ToolbarShortcutScope | string): void;
@@ -2710,6 +2888,7 @@ declare class FilterSettingsComponent implements OnChanges, AfterViewInit, OnDes
2710
2888
  }[];
2711
2889
  getContrastWarning(): string | null;
2712
2890
  applyPreset(key: string): void;
2891
+ isPresetActive(key: string): boolean;
2713
2892
  hasBooleanFieldMetadata(): boolean;
2714
2893
  getFieldLabel(name: string): string;
2715
2894
  onAlwaysVisibleFieldSearchChange(value: string): void;
@@ -2873,12 +3052,10 @@ declare class RuleCompilerService {
2873
3052
  static ɵprov: i0.ɵɵInjectableDeclaration<RuleCompilerService>;
2874
3053
  }
2875
3054
 
2876
- type RuleItem = {
2877
- condition: JsonLogicExpression;
3055
+ type RuleItem = Omit<PraxisRuntimeConditionalEffectRule<RuleEffectDefinition>, 'effects'> & {
2878
3056
  cssClass?: string;
2879
3057
  style?: Record<string, string>;
2880
- description?: string;
2881
- effects?: _praxisui_table_rule_builder.RuleEffectDefinition;
3058
+ effects?: RuleEffectDefinition[];
2882
3059
  enabled?: boolean;
2883
3060
  };
2884
3061
  declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy {
@@ -2948,6 +3125,7 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
2948
3125
  onColumnSelect(field: string): void;
2949
3126
  private initFromConfig;
2950
3127
  private loadColumnRules;
3128
+ private normalizePersistedRules;
2951
3129
  rebuildCondition(): void;
2952
3130
  onDraftChange(): void;
2953
3131
  applyTextPreset(preset: string): void;
@@ -2974,6 +3152,8 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
2974
3152
  onExportRules(): void;
2975
3153
  onImportRules(): void;
2976
3154
  private sanitizeRule;
3155
+ private normalizeRuleEffects;
3156
+ getPrimaryEffect(r: RuleItem | null | undefined): RuleEffectDefinition | undefined;
2977
3157
  getAnimationLabel(r: RuleItem): string | null;
2978
3158
  private normalizeRendererAnimation;
2979
3159
  private buildRendererOverrideFromRule;
@@ -3080,6 +3260,8 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3080
3260
  private cdr;
3081
3261
  private configService;
3082
3262
  private readonly i18n;
3263
+ private readonly globalActionCatalogSource;
3264
+ private readonly globalActionCatalog;
3083
3265
  filterSettingsEditor?: FilterSettingsComponent;
3084
3266
  behaviorEditor?: BehaviorConfigEditorComponent;
3085
3267
  rulesEditor?: TableRulesEditorComponent;
@@ -3142,6 +3324,7 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3142
3324
  private hasLocalDataInput;
3143
3325
  private filterDtoLoadSeq;
3144
3326
  private lastKnownFilterSettings;
3327
+ private globalActionValidationIssues;
3145
3328
  private readonly panelData;
3146
3329
  private readonly crudService;
3147
3330
  private readonly panelRef;
@@ -3168,6 +3351,9 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3168
3351
  onRulesConfigChange(newCfg: TableConfig): void;
3169
3352
  private updateColumnMetas;
3170
3353
  private updateCanSaveState;
3354
+ private collectGlobalActionValidationIssues;
3355
+ private findGlobalActionCatalogEntry;
3356
+ private buildGlobalActionCatalog;
3171
3357
  private subscribeCrudEditorChanges;
3172
3358
  private showSuccess;
3173
3359
  private showError;
@@ -3176,6 +3362,7 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3176
3362
  * Normaliza uma configuração de tabela para comparação consistente
3177
3363
  * Remove propriedades undefined, ordena arrays e objetos de forma consistente
3178
3364
  */
3365
+ private withCanonicalIdField;
3179
3366
  private normalizeTableConfig;
3180
3367
  /**
3181
3368
  * Realiza comparação profunda de objetos, ignorando ordem de propriedades
@@ -3238,6 +3425,107 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3238
3425
  static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableConfigEditor, "praxis-table-config-editor", never, {}, {}, never, never, true, never>;
3239
3426
  }
3240
3427
 
3428
+ interface PraxisTableWidgetEditorInputs {
3429
+ config?: TableConfig | null;
3430
+ resourcePath?: string | null;
3431
+ horizontalScroll?: 'auto' | 'wrap' | 'none';
3432
+ tableId?: string;
3433
+ componentInstanceId?: string;
3434
+ [key: string]: unknown;
3435
+ }
3436
+ interface PraxisTableWidgetEditorValue {
3437
+ inputs: PraxisTableWidgetEditorInputs;
3438
+ }
3439
+ declare class PraxisTableWidgetConfigEditor implements SettingsValueProvider$1, AfterViewInit, OnDestroy {
3440
+ inputs: PraxisTableWidgetEditorInputs | null;
3441
+ widgetKey?: string;
3442
+ tableEditor?: PraxisTableConfigEditor;
3443
+ readonly isDirty$: BehaviorSubject<boolean>;
3444
+ readonly isValid$: BehaviorSubject<boolean>;
3445
+ readonly isBusy$: BehaviorSubject<boolean>;
3446
+ private readonly subscription;
3447
+ ngAfterViewInit(): void;
3448
+ ngOnDestroy(): void;
3449
+ getSettingsValue(): PraxisTableWidgetEditorValue;
3450
+ onSave(): PraxisTableWidgetEditorValue;
3451
+ reset(): void;
3452
+ private initializeChildEditor;
3453
+ private buildValue;
3454
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableWidgetConfigEditor, never>;
3455
+ 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>;
3456
+ }
3457
+
3458
+ interface PraxisFilterWidgetEditorInputs {
3459
+ resourcePath?: string | null;
3460
+ fieldMetadata?: FieldMetadata[] | null;
3461
+ filterId?: string;
3462
+ formId?: string;
3463
+ componentInstanceId?: string;
3464
+ alwaysVisibleFields?: string[];
3465
+ alwaysVisibleFieldMetadataOverrides?: Record<string, Record<string, unknown>>;
3466
+ selectedFieldIds?: string[];
3467
+ allowSaveTags?: boolean;
3468
+ changeDebounceMs?: number;
3469
+ placeBooleansInActions?: boolean;
3470
+ showToggleLabels?: boolean;
3471
+ alwaysMinWidth?: number;
3472
+ alwaysColsMd?: number;
3473
+ alwaysColsLg?: number;
3474
+ confirmTagDelete?: boolean;
3475
+ tagColor?: 'primary' | 'accent' | 'warn' | 'basic';
3476
+ tagVariant?: 'filled' | 'outlined';
3477
+ tagButtonColor?: 'primary' | 'accent' | 'warn' | 'basic';
3478
+ actionsButtonColor?: 'primary' | 'accent' | 'warn' | 'basic';
3479
+ actionsVariant?: 'standard' | 'outlined';
3480
+ useInlineSearchableSelectVariant?: boolean;
3481
+ useInlineRangeVariant?: boolean;
3482
+ useInlineDateVariant?: boolean;
3483
+ useInlineDateRangeVariant?: boolean;
3484
+ useInlineTimeVariant?: boolean;
3485
+ useInlineTimeRangeVariant?: boolean;
3486
+ useInlineTreeSelectVariant?: boolean;
3487
+ overlayVariant?: 'card' | 'frosted';
3488
+ overlayBackdrop?: boolean;
3489
+ advancedOpenMode?: 'modal' | 'drawer';
3490
+ advancedClearButtonsEnabled?: boolean;
3491
+ persistenceKey?: string;
3492
+ showFilterSettings?: boolean;
3493
+ enableCustomization?: boolean;
3494
+ [key: string]: unknown;
3495
+ }
3496
+ interface PraxisFilterWidgetEditorValue {
3497
+ inputs: PraxisFilterWidgetEditorInputs;
3498
+ }
3499
+ declare class PraxisFilterWidgetConfigEditor implements SettingsValueProvider$1, OnDestroy {
3500
+ widgetKey?: string;
3501
+ set inputs(value: PraxisFilterWidgetEditorInputs | null);
3502
+ get inputs(): PraxisFilterWidgetEditorInputs | null;
3503
+ set filterSettings(component: FilterSettingsComponent | undefined);
3504
+ metadata: FieldMetadata[];
3505
+ settings: FilterConfig;
3506
+ configKey?: string;
3507
+ readonly isDirty$: BehaviorSubject<boolean>;
3508
+ readonly isValid$: BehaviorSubject<boolean>;
3509
+ readonly isBusy$: BehaviorSubject<boolean>;
3510
+ private currentInputs;
3511
+ private settingsEditor?;
3512
+ private subscription;
3513
+ ngOnDestroy(): void;
3514
+ getSettingsValue(): PraxisFilterWidgetEditorValue;
3515
+ onSave(): PraxisFilterWidgetEditorValue;
3516
+ reset(): void;
3517
+ private buildValue;
3518
+ private buildSettingsFromInputs;
3519
+ private projectSettingsToInputs;
3520
+ private normalizeSettings;
3521
+ private normalizeAdvancedOpenMode;
3522
+ private normalizeOverlayVariant;
3523
+ private cloneStringArray;
3524
+ private cloneRecord;
3525
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisFilterWidgetConfigEditor, never>;
3526
+ 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>;
3527
+ }
3528
+
3241
3529
  declare class DataFormatterComponent implements OnInit, OnChanges {
3242
3530
  private cdr;
3243
3531
  private formattingService;
@@ -3306,31 +3594,6 @@ declare class DataFormatterComponent implements OnInit, OnChanges {
3306
3594
  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
3595
  }
3308
3596
 
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
3597
  interface AnalyticsTableConfigAdapterOptions {
3335
3598
  title?: PraxisTextValue;
3336
3599
  subtitle?: PraxisTextValue;
@@ -3344,24 +3607,6 @@ declare class AnalyticsTableConfigAdapterService {
3344
3607
  static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableConfigAdapterService>;
3345
3608
  }
3346
3609
 
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
3610
  declare class AnalyticsTableContractService {
3366
3611
  private readonly analyticsSchema;
3367
3612
  private readonly resolver;
@@ -3397,6 +3642,15 @@ declare function buildTableApplyPlan(doc: TableAuthoringDocument, runtime?: Tabl
3397
3642
  }): TableApplyPlan;
3398
3643
  declare function serializeTableAuthoringDocument(doc: TableAuthoringDocument): unknown;
3399
3644
 
3645
+ /**
3646
+ * Manifesto de authoring canônico para o componente praxis-table.
3647
+ * Este arquivo define o contrato executável para que agentes de IA editem tabelas.
3648
+ *
3649
+ * @version 2.0.0
3650
+ * @status COMPLIANT - Alinhado com o contrato v2 e TableConfig canônico.
3651
+ */
3652
+ declare const PRAXIS_TABLE_AUTHORING_MANIFEST: ComponentAuthoringManifest;
3653
+
3400
3654
  declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3401
3655
  private readonly i18n;
3402
3656
  config: TableConfig;
@@ -3643,7 +3897,6 @@ declare function providePraxisTableMetadata(): Provider;
3643
3897
  declare module '@praxisui/core' {
3644
3898
  interface AiCapabilityCategoryMap {
3645
3899
  meta: true;
3646
- bindings: true;
3647
3900
  columns: true;
3648
3901
  renderer: true;
3649
3902
  conditional: true;
@@ -3729,18 +3982,23 @@ type ComponentEditPlanCapability = {
3729
3982
  declare const TABLE_COMPONENT_EDIT_PLAN_KIND = "praxis.table.component-edit-plan";
3730
3983
  declare const TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND = "praxis.table.component-edit-plan.batch";
3731
3984
  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"];
3985
+ 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_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_table_pagination' | 'configure_table_selection' | 'configure_table_sorting' | 'configure_toolbar' | 'configure_export' | 'set_table_density' | 'set_toolbar_visibility';
3986
+ 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' | 'column.conditionalRenderer.add' | 'column.computed.add' | 'row.conditionalRenderer.add' | 'behavior.filtering.configure' | 'behavior.pagination.configure' | 'behavior.selection.configure' | 'behavior.sorting.configure' | 'toolbar.configure' | 'export.configure' | 'appearance.density.set' | 'toolbar.visibility.set';
3987
+ 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_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_table_pagination", "configure_table_selection", "configure_table_sorting", "configure_toolbar", "configure_export", "set_table_density", "set_toolbar_visibility"];
3734
3988
  declare const TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS: Record<TableComponentEditChangeKind, string>;
3735
3989
  interface TableComponentEditPlan {
3736
3990
  kind?: typeof TABLE_COMPONENT_EDIT_PLAN_KIND;
3737
3991
  version?: typeof TABLE_COMPONENT_EDIT_PLAN_VERSION | string;
3738
3992
  componentId?: 'praxis-table' | string;
3739
3993
  changeKind: TableComponentEditChangeKind | string;
3994
+ operationId?: TableComponentEditOperationId | string;
3740
3995
  capabilityPath?: string;
3741
3996
  configPath?: string;
3742
3997
  field?: string;
3743
3998
  targetField?: string;
3999
+ target?: unknown;
4000
+ input?: unknown;
4001
+ params?: unknown;
3744
4002
  value?: unknown;
3745
4003
  condition?: unknown;
3746
4004
  style?: unknown;
@@ -3768,7 +4026,7 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3768
4026
  readonly $defs: {
3769
4027
  readonly changeKind: {
3770
4028
  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"];
4029
+ 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_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_table_pagination", "configure_table_selection", "configure_table_sorting", "configure_toolbar", "configure_export", "set_table_density", "set_toolbar_visibility"];
3772
4030
  };
3773
4031
  readonly capabilityPath: {
3774
4032
  readonly type: "string";
@@ -3813,7 +4071,6 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3813
4071
  readonly operation: {
3814
4072
  readonly type: "object";
3815
4073
  readonly additionalProperties: false;
3816
- readonly required: readonly ["changeKind", "field", "value"];
3817
4074
  readonly properties: {
3818
4075
  readonly kind: {
3819
4076
  readonly const: "praxis.table.component-edit-plan";
@@ -3824,6 +4081,12 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3824
4081
  readonly componentId: {
3825
4082
  readonly const: "praxis-table";
3826
4083
  };
4084
+ readonly operationId: {
4085
+ 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", "column.conditionalRenderer.add", "column.computed.add", "row.conditionalRenderer.add", "behavior.filtering.configure", "behavior.pagination.configure", "behavior.selection.configure", "behavior.sorting.configure", "toolbar.configure", "export.configure", "appearance.density.set", "toolbar.visibility.set"];
4086
+ };
4087
+ readonly target: true;
4088
+ readonly input: true;
4089
+ readonly params: true;
3827
4090
  readonly changeKind: {
3828
4091
  readonly $ref: "#/$defs/changeKind";
3829
4092
  };
@@ -3852,6 +4115,13 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3852
4115
  readonly type: "string";
3853
4116
  };
3854
4117
  };
4118
+ readonly anyOf: readonly [{
4119
+ readonly required: readonly ["changeKind", "field", "value"];
4120
+ }, {
4121
+ readonly required: readonly ["operationId", "target", "input"];
4122
+ }, {
4123
+ readonly required: readonly ["operationId", "input"];
4124
+ }];
3855
4125
  readonly allOf: readonly [{
3856
4126
  readonly if: {
3857
4127
  readonly properties: {
@@ -3928,6 +4198,8 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3928
4198
  readonly required: readonly ["condition"];
3929
4199
  readonly anyOf: readonly [{
3930
4200
  readonly required: readonly ["badge"];
4201
+ }, {
4202
+ readonly required: readonly ["renderer"];
3931
4203
  }, {
3932
4204
  readonly required: readonly ["value"];
3933
4205
  }];
@@ -3938,6 +4210,11 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3938
4210
  readonly badge: {
3939
4211
  readonly $ref: "#/$defs/badge";
3940
4212
  };
4213
+ readonly renderer: {
4214
+ readonly type: "object";
4215
+ readonly minProperties: 1;
4216
+ readonly additionalProperties: true;
4217
+ };
3941
4218
  readonly value: {
3942
4219
  readonly $ref: "#/$defs/badge";
3943
4220
  };
@@ -3995,5 +4272,5 @@ declare function coerceTableComponentEditPlan(value: unknown): TableComponentEdi
3995
4272
  declare function compileTableComponentEditPlans(plans: TableComponentEditPlan[], currentConfig: TableConfig): TableComponentEditPlanCompileResult;
3996
4273
  declare function compileTableComponentEditPlan(plan: TableComponentEditPlan, currentConfig: TableConfig): TableComponentEditPlanCompileResult;
3997
4274
 
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 };
4275
+ 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 };
4276
+ 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 };