@praxisui/table 8.0.0-beta.1 → 8.0.0-beta.101

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 (45) hide show
  1. package/README.md +193 -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 +332 -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-DbwGIMjF.mjs +232 -0
  34. package/fesm2022/praxisui-table-praxisui-table-BW05k1Xw.mjs +61251 -0
  35. package/fesm2022/praxisui-table-table-agentic-authoring-turn-flow-B9D6QMS2.mjs +10967 -0
  36. package/fesm2022/praxisui-table-table-ai.adapter-C9ch90hi.mjs +4039 -0
  37. package/fesm2022/praxisui-table.mjs +1 -51421
  38. package/filter-drawer-adapter/package.json +2 -1
  39. package/package.json +22 -15
  40. package/src/lib/praxis-table.json-api.md +1361 -0
  41. package/{index.d.ts → types/praxisui-table.d.ts} +618 -123
  42. package/fesm2022/praxisui-table-filter-form-dialog-host.component-Dm2f0muy.mjs +0 -165
  43. package/fesm2022/praxisui-table-table-agentic-authoring-turn-flow-tu7jtTwV.mjs +0 -280
  44. package/fesm2022/praxisui-table-table-ai.adapter-DxjDaQqy.mjs +0 -895
  45. /package/{filter-drawer-adapter/index.d.ts → types/praxisui-table-filter-drawer-adapter.d.ts} +0 -0
@@ -1,7 +1,10 @@
1
+ import * as _praxisui_core from '@praxisui/core';
2
+ import { TableToolbarAppearanceConfig, TableConfig, LoggerService, PraxisI18nService, TableToolbarAppearanceVariant, TableToolbarAppearanceDensity, TableToolbarAppearanceShape, TableToolbarAppearanceDivider, TableToolbarTokenName, GlobalConfigService, AsyncConfigStorage, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, PraxisQueryFilterExpression, RecordRelatedSurfaceContextPack, LoadingState, RestApiLinks, ColumnDefinition, RichBlockNode, ResourceCapabilityDigest, ConnectionStorage, LoadingOrchestrator, GlobalActionService, PraxisLoadingRenderer, TableDetailRichListNode, TableDetailCardGridNode, TableDetailCardGridCardNode, TableDetailTimelineNode, JsonLogicDataRecord, TableDetailListItemAction, TableDetailActionBarNode, TableDetailActionBarAction, TableDetailRefNode, TableDetailTemplateRefNode, TableDetailDiagramEmbedNode, TableDetailEmbedAction, PraxisExportScope, GlobalActionRef, PraxisRuntimeGlobalActionEffect, ResourceActionCatalogItem, ResourceSurfaceCatalogItem, JsonLogicExpression, GlobalActionCatalogEntry, IconPickerService, SurfaceOpenPayload, GlobalActionField, FieldDefinition, PraxisRuntimeConditionalEffectRule, PraxisJsonLogicService, TableConfigService, SettingsValueProvider as SettingsValueProvider$1, AnalyticsSchemaContractService, AnalyticsPresentationResolver, RichPresenterNode, RichComposeNode, ComponentAuthoringManifest, AiCapability, AiCapabilityCategory, AiValueKind, 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 { InjectionToken, OnDestroy, EventEmitter, ElementRef, Provider, OnInit, OnChanges, AfterViewInit, DoCheck, DestroyRef, ChangeDetectorRef, NgZone, SimpleChanges, ComponentRef, AfterContentInit, Injector } from '@angular/core';
3
5
  import { ActivatedRoute } from '@angular/router';
4
6
  import { MatTable, MatTableDataSource } from '@angular/material/table';
7
+ import * as _angular_material_paginator from '@angular/material/paginator';
5
8
  import { MatPaginatorSelectConfig, MatPaginator, PageEvent } from '@angular/material/paginator';
6
9
  import { MatSort, Sort } from '@angular/material/sort';
7
10
  import { MatSnackBar } from '@angular/material/snack-bar';
@@ -9,18 +12,16 @@ import { SelectionModel } from '@angular/cdk/collections';
9
12
  import { CdkDragDrop, CdkDragEnd, CdkDrag, CdkDropList } from '@angular/cdk/drag-drop';
10
13
  import { BehaviorSubject, Subscription, Observable } from 'rxjs';
11
14
  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
15
  import { FormGroup, FormControl, FormBuilder } from '@angular/forms';
15
16
  import { MatDialog } from '@angular/material/dialog';
17
+ import { BaseDynamicFieldComponent } from '@praxisui/dynamic-fields';
16
18
  import { CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';
19
+ import { MatSelect } from '@angular/material/select';
17
20
  import { PraxisDialog } from '@praxisui/dialog';
18
- import { PraxisAssistantTurnViewState, PraxisAssistantShellLayout, PraxisAssistantShellLabels, PraxisAssistantShellQuickReply, PraxisAssistantShellMessage } from '@praxisui/ai';
21
+ import { PraxisAssistantVoiceInputMode, PraxisAssistantTurnViewState, PraxisAssistantShellLayout, PraxisAssistantShellLabels, PraxisAssistantSessionSnapshot, PraxisAssistantShellQuickReply, PraxisAssistantRecommendedIntent, PraxisAssistantShellMessage } from '@praxisui/ai';
22
+ import { HttpClient } from '@angular/common/http';
19
23
  import { MatTabChangeEvent } from '@angular/material/tabs';
20
- import * as _praxisui_table_rule_builder from '@praxisui/table-rule-builder';
21
24
  import { RuleEffectDefinition } from '@praxisui/table-rule-builder';
22
- import { HttpClient } from '@angular/common/http';
23
- import * as _angular_material_paginator_d_Zo1cMMo4 from '@angular/material/paginator.d-Zo1cMMo4';
24
25
  import { MatCheckboxChange } from '@angular/material/checkbox';
25
26
 
26
27
  interface ActionLike {
@@ -35,22 +36,32 @@ interface ActionLike {
35
36
  }
36
37
  declare function getActionId(action: ActionLike): string;
37
38
 
39
+ declare const PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE: InjectionToken<TableToolbarAppearanceConfig>;
40
+ declare const PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS: InjectionToken<Record<string, TableToolbarAppearanceConfig>>;
41
+ declare function providePraxisTableToolbarAppearance(appearance: TableToolbarAppearanceConfig, presets?: Record<string, TableToolbarAppearanceConfig>): Provider[];
38
42
  declare class PraxisTableToolbar implements OnDestroy {
39
43
  private hostRef;
40
44
  private logger?;
41
45
  private i18n?;
46
+ private defaultAppearance?;
47
+ private tokenPresets?;
42
48
  config?: TableConfig;
49
+ appearance?: TableToolbarAppearanceConfig | null;
43
50
  backgroundColor: string | null;
44
51
  placement: 'header' | 'footer';
45
52
  showMain: boolean;
46
53
  showActionsGroup: boolean;
47
54
  showEndActions: boolean;
48
55
  showMobileActions: boolean;
56
+ exportBusy: boolean;
49
57
  evaluationContext: Record<string, any> | null;
50
58
  toolbarAction: EventEmitter<{
51
59
  action: string;
52
60
  actionConfig?: any;
53
61
  }>;
62
+ exportAction: EventEmitter<{
63
+ format: string;
64
+ }>;
54
65
  readonly getActionId: typeof getActionId;
55
66
  private readonly jsonLogic;
56
67
  private readonly validToolbarActionTypes;
@@ -62,11 +73,25 @@ declare class PraxisTableToolbar implements OnDestroy {
62
73
  private readonly warnedShortcutConflicts;
63
74
  private fallbackLogger?;
64
75
  private fallbackLoggerEnvironment;
65
- constructor(hostRef?: ElementRef<HTMLElement> | null, logger?: LoggerService | undefined, i18n?: PraxisI18nService | undefined);
76
+ constructor(hostRef?: ElementRef<HTMLElement> | null, logger?: LoggerService | undefined, i18n?: PraxisI18nService | undefined, defaultAppearance?: TableToolbarAppearanceConfig | undefined, tokenPresets?: Record<string, TableToolbarAppearanceConfig> | undefined);
77
+ getToolbarAriaLabel(): string;
78
+ getToolbarLeadingLabel(): string;
79
+ getToolbarActionsLabel(): string;
80
+ getToolbarConfigurationLabel(): string;
66
81
  getExportDataLabel(): string;
67
82
  getMoreActionsLabel(): string;
83
+ emitExportAction(event: Event, format: string): void;
68
84
  private tx;
69
85
  ngOnDestroy(): void;
86
+ getToolbarVariant(): TableToolbarAppearanceVariant;
87
+ getToolbarDensity(): TableToolbarAppearanceDensity;
88
+ getToolbarShape(): TableToolbarAppearanceShape;
89
+ getToolbarDivider(): TableToolbarAppearanceDivider;
90
+ getToolbarToken(name: TableToolbarTokenName): string | null;
91
+ private resolveToolbarAppearance;
92
+ private resolveToolbarAppearancePreset;
93
+ private mergeToolbarAppearance;
94
+ private normalizeTokenValue;
70
95
  private getNestedPropertyValue;
71
96
  private cloneForEmit;
72
97
  private getLogger;
@@ -111,8 +136,8 @@ declare class PraxisTableToolbar implements OnDestroy {
111
136
  private warnShortcutConflict;
112
137
  private sortActions;
113
138
  getExportIcon(format: string): string;
114
- 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>;
139
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableToolbar, [null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }]>;
140
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableToolbar, "praxis-table-toolbar", never, { "config": { "alias": "config"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "showMain": { "alias": "showMain"; "required": false; }; "showActionsGroup": { "alias": "showActionsGroup"; "required": false; }; "showEndActions": { "alias": "showEndActions"; "required": false; }; "showMobileActions": { "alias": "showMobileActions"; "required": false; }; "exportBusy": { "alias": "exportBusy"; "required": false; }; "evaluationContext": { "alias": "evaluationContext"; "required": false; }; }, { "toolbarAction": "toolbarAction"; "exportAction": "exportAction"; }, never, ["[advancedFilter]", "[toolbar]", "[end-actions]"], true, never>;
116
141
  }
117
142
 
118
143
  type ColumnDataType$1 = 'date' | 'number' | 'currency' | 'percentage' | 'string' | 'boolean' | 'custom';
@@ -213,6 +238,7 @@ declare class DataFormattingService {
213
238
  */
214
239
  formatValue(value: any, columnType: ColumnDataType$1, formatString: string, options?: DataFormattingOptions): any;
215
240
  private coerceValueToType;
241
+ private parseDateOnlyString;
216
242
  private normalizeNumericDateInput;
217
243
  private formatDate;
218
244
  private formatNumber;
@@ -335,12 +361,15 @@ type I18n = {
335
361
  searchPlaceholder: string;
336
362
  advanced: string;
337
363
  advancedTitle?: string;
364
+ advancedOpening?: string;
365
+ advancedUnavailable?: string;
338
366
  clear: string;
339
367
  apply: string;
340
368
  add?: string;
341
369
  filtersAdd?: string;
342
370
  filtersSearch?: string;
343
371
  addCount?: string;
372
+ addUnavailable?: string;
344
373
  pendingCount?: string;
345
374
  activeFiltersCount?: string;
346
375
  selectAll?: string;
@@ -423,10 +452,13 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
423
452
  showAddButton: boolean;
424
453
  /** Controla a exibição do botão de limpar filtros */
425
454
  showClearButton: boolean;
426
- /** Controla a exibição do botão de pesquisar/aplicar filtros */
455
+ /** Controla a exibição do botão de pesquisar/aplicar filtros em fluxos manuais. */
427
456
  showSearchButton: boolean;
428
457
  /** Exibir confirmação ao excluir atalho (tag) */
429
458
  confirmTagDelete: boolean;
459
+ private alwaysFieldComponentRefs;
460
+ private selectedFieldComponentRefs;
461
+ private toggleFieldComponentRefs;
430
462
  /** Move toggles/booleans simples para a área de ações */
431
463
  placeBooleansInActions: boolean;
432
464
  /** Mostrar rótulos dos toggles na área de ações */
@@ -513,6 +545,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
513
545
  private alwaysFormReset$;
514
546
  private dto;
515
547
  advancedOpen: boolean;
548
+ advancedOpening: boolean;
516
549
  advancedValid: boolean;
517
550
  activeFiltersCount: number;
518
551
  saving: boolean;
@@ -539,7 +572,8 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
539
572
  id: string;
540
573
  label: string;
541
574
  }>;
542
- private addItemsUpdateQueued;
575
+ readonly addSearchFieldId = "__praxis_filter_add_search__";
576
+ readonly addSelectAllFieldId = "__praxis_filter_add_select_all__";
543
577
  private applySchemaQueued;
544
578
  private fallbackLogger?;
545
579
  private fallbackLoggerEnvironment;
@@ -554,6 +588,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
554
588
  private _dbgLastToggleComponentsAt;
555
589
  overlayPositions: ConnectedPosition[];
556
590
  private advancedDebouncedSub?;
591
+ private advancedOpenRequestId;
557
592
  private lastActiveElement?;
558
593
  private lastSubmitAt;
559
594
  private resizeObs?;
@@ -592,6 +627,8 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
592
627
  private resolveInputDto;
593
628
  private resolveInitialDto;
594
629
  private syncFormsFromDto;
630
+ private refreshProgrammaticFilterFieldDisplays;
631
+ private refreshProgrammaticFilterFieldDisplay;
595
632
  ngOnInit(): Promise<void>;
596
633
  ngAfterViewInit(): void;
597
634
  onWindowResize(): void;
@@ -601,6 +638,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
601
638
  private computeIsMobile;
602
639
  ngOnChanges(changes: SimpleChanges): void;
603
640
  private areStringArraysEqual;
641
+ private normalizeFieldIdList;
604
642
  private areMetadataOverrideMapsEqual;
605
643
  /** Force-sync settings coming from parent table config updates. */
606
644
  applyExternalSettings(cfg?: Partial<FilterConfig>): void;
@@ -643,8 +681,15 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
643
681
  retrySchemaLoad(): void;
644
682
  private applySchemaMetas;
645
683
  private applySchemaMetasNow;
684
+ private withFilterMaterialDesignPolicy;
685
+ private withAdvancedDatePickerTouchPolicy;
686
+ private isAdvancedDatePickerControl;
687
+ private buildAdvancedFilterColumn;
688
+ private isCompositeRangeFilterField;
646
689
  private pickMetasByOrder;
647
690
  private hasRemoteOptionSource;
691
+ private normalizeFilterOptionEndpointMetadata;
692
+ private toOwningResourcePathForOptionsFilter;
648
693
  private withInferredFilterControlType;
649
694
  private isAllowedFilterControlType;
650
695
  private inferFilterControlType;
@@ -655,9 +700,9 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
655
700
  private mergeAlwaysVisibleMetadata;
656
701
  private mergeFieldMetadataOverride;
657
702
  ngDoCheck(): void;
658
- onAlwaysComponents(map: Map<string, any>): void;
659
- onSelectedComponents(map: Map<string, any>): void;
660
- onToggleComponents(map: Map<string, any>): void;
703
+ onAlwaysComponents(map: Map<string, ComponentRef<BaseDynamicFieldComponent>>): void;
704
+ onSelectedComponents(map: Map<string, ComponentRef<BaseDynamicFieldComponent>>): void;
705
+ onToggleComponents(map: Map<string, ComponentRef<BaseDynamicFieldComponent>>): void;
661
706
  onFieldInteraction(event: Event): void;
662
707
  openSelectedFieldEditor(): void;
663
708
  private isLocalE2eAuthoringOptInEnabled;
@@ -675,12 +720,16 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
675
720
  onAdvancedValidityChange(valid: boolean): void;
676
721
  onAddOpened(opened: boolean): void;
677
722
  onAddQuery(q: string): void;
723
+ openAddSelect(select: MatSelect): void;
724
+ hasAddableFields(): boolean;
725
+ private getAddableItems;
678
726
  private updateAddItems;
679
727
  trackById(_idx: number, it: {
680
728
  id: string;
681
729
  }): string;
682
730
  private isFilterFieldHidden;
683
731
  onAddSelectionChange(values: string[] | null | undefined): void;
732
+ private mergeSelectedFieldIds;
684
733
  private formatWithCount;
685
734
  getAddAriaLabel(): string;
686
735
  getAddTriggerLabel(): string;
@@ -725,9 +774,13 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
725
774
  private ensureAdvancedConfigReady;
726
775
  private focusSchemaRetryButton;
727
776
  private showAdvancedUnavailableFeedback;
777
+ private setAdvancedOpening;
778
+ private deferAdvancedOpen;
728
779
  private openAdvancedModal;
729
780
  private openAdvancedDrawer;
730
781
  toggleAdvanced(): void;
782
+ hasAdvancedFields(): boolean;
783
+ private getAdvancedCandidateMetas;
731
784
  private usesProvidedFieldMetadata;
732
785
  private applyProvidedFieldMetadata;
733
786
  private saveConfig;
@@ -739,6 +792,9 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
739
792
  private persistTags;
740
793
  private cleanFilterPayload;
741
794
  private upsertDtoValue;
795
+ private normalizeFilterFieldValue;
796
+ private getFilterFieldMetaByName;
797
+ private isEntityLookupFilterField;
742
798
  private isEffectivelyEmptyFilterValue;
743
799
  private syncFormsToDto;
744
800
  private updateDisplayedTags;
@@ -754,19 +810,85 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
754
810
  declare const PRAXIS_FILTER_COMPONENT_METADATA: ComponentDocMeta;
755
811
  declare function providePraxisFilterMetadata(): Provider;
756
812
 
813
+ type AnalyticsTableRow = Record<string, string | number | boolean | null>;
814
+ type AnalyticsTableContractSource = 'remote' | 'fallback';
815
+ interface AnalyticsTableViewModel {
816
+ config: TableConfig;
817
+ data: AnalyticsTableRow[];
818
+ }
819
+ interface AnalyticsTableContractDefinition<TKey extends string = string> {
820
+ key: TKey;
821
+ projectionId: string;
822
+ path: string;
823
+ title: PraxisTextValue;
824
+ subtitle?: PraxisTextValue;
825
+ fallbackProjection: PraxisAnalyticsProjection;
826
+ fallbackRows?: AnalyticsTableRow[];
827
+ }
828
+ interface AnalyticsTableContractLoadOptions<TKey extends string = string> {
829
+ cacheNamespace?: string;
830
+ queryContexts?: Partial<Record<TKey, PraxisDataQueryContext | null>>;
831
+ }
832
+ interface AnalyticsTableContractLoadResult<TKey extends string = string> {
833
+ views: Record<TKey, AnalyticsTableViewModel>;
834
+ sources: Record<TKey, AnalyticsTableContractSource>;
835
+ errors: Partial<Record<TKey, string>>;
836
+ }
837
+
838
+ declare class AnalyticsTableStatsApiService {
839
+ private readonly http;
840
+ private readonly apiUrl;
841
+ private readonly statsBuilder;
842
+ constructor(http: HttpClient, apiUrl: ApiUrlConfig);
843
+ execute(projection: PraxisAnalyticsProjection, queryContext?: PraxisDataQueryContext | null): Promise<AnalyticsTableRow[]>;
844
+ private toTableRows;
845
+ private resolveTimeSeriesCategory;
846
+ private resolveBucketCategory;
847
+ private projectMetricValues;
848
+ private resolveMetricValue;
849
+ private buildStatsUrl;
850
+ private applyQueryContext;
851
+ private normalizeError;
852
+ static ɵfac: i0.ɵɵFactoryDeclaration<AnalyticsTableStatsApiService, never>;
853
+ static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableStatsApiService>;
854
+ }
855
+
856
+ interface TableAiNavigationDestinationContext {
857
+ id?: string;
858
+ path: string;
859
+ label?: string;
860
+ description?: string;
861
+ source?: string;
862
+ tags?: string[];
863
+ materialized?: boolean;
864
+ }
865
+ interface TableAiNavigationContextPack {
866
+ source?: string;
867
+ destinations: TableAiNavigationDestinationContext[];
868
+ }
869
+ interface TableAiContext {
870
+ recordSurfaces?: RecordRelatedSurfaceContextPack | null;
871
+ navigationDestinations?: TableAiNavigationContextPack | null;
872
+ }
757
873
  type SchemaFieldHint = {
758
874
  name: string;
759
875
  label?: string;
760
876
  type?: string;
761
877
  controlType?: string;
762
878
  numericFormat?: string;
879
+ format?: string;
763
880
  options?: Array<Record<string, unknown> | string | number | boolean>;
764
881
  optionLabelKey?: string;
765
882
  optionValueKey?: string;
766
883
  enumValues?: string[];
767
884
  };
885
+ type FilterSchemaFieldHint = SchemaFieldHint & {
886
+ relatedColumnFields?: string[];
887
+ relatedColumnLabels?: string[];
888
+ };
768
889
  type PraxisDataQueryContextBridge = {
769
890
  filters?: Record<string, unknown> | null;
891
+ filterExpression?: PraxisQueryFilterExpression | null;
770
892
  sort?: string[] | null;
771
893
  limit?: number | null;
772
894
  page?: {
@@ -835,6 +957,8 @@ type RowActionRuntimeOptions = {
835
957
  type RuntimeRowAction = {
836
958
  id: string;
837
959
  action: string;
960
+ globalAction?: GlobalActionRef;
961
+ effects?: PraxisRuntimeGlobalActionEffect[];
838
962
  label?: string;
839
963
  icon?: string;
840
964
  color?: string;
@@ -842,6 +966,7 @@ type RuntimeRowAction = {
842
966
  disabled?: boolean;
843
967
  overflow?: boolean;
844
968
  __praxisDiscoveredAction?: ResourceActionCatalogItem;
969
+ __praxisDiscoveredSurface?: ResourceSurfaceCatalogItem;
845
970
  __praxisCapabilityDenied?: boolean;
846
971
  };
847
972
  type ExpansionDetailRuntimeStatus = 'idle' | 'loading' | 'ready' | 'error' | 'blocked';
@@ -865,17 +990,24 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
865
990
  private connectionStorage;
866
991
  private hostRef;
867
992
  private global;
868
- private resourceDiscovery;
993
+ private injector;
869
994
  private componentKeys;
870
995
  private loadingOrchestrator;
996
+ private globalActions;
871
997
  private loadingRenderer?;
872
998
  private route?;
873
999
  private logger?;
1000
+ private analyticsStatsApi?;
874
1001
  private static readonly CELL_ANIMATION_CHANGE_CACHE_LIMIT;
1002
+ private static readonly AI_SELECTION_ROW_LIMIT;
1003
+ private static readonly AI_SELECTION_ID_LIMIT;
1004
+ private static readonly AI_SELECTION_FIELD_LIMIT;
875
1005
  private static readonly ROW_DISCOVERY_SUCCESS_CACHE_TTL_MS;
876
1006
  private static readonly ROW_DISCOVERY_ERROR_CACHE_TTL_MS;
877
1007
  private static readonly ROW_DISCOVERY_CACHE_LIMIT;
878
1008
  private static readonly ROW_DISCOVERY_MAX_CONCURRENT_REQUESTS;
1009
+ private _resourceDiscovery?;
1010
+ private _resourceSurfaceOpenAdapter?;
879
1011
  readonly paginatorSelectConfig: MatPaginatorSelectConfig;
880
1012
  private static readonly ROW_ANIMATION_PRESETS;
881
1013
  private static readonly ROW_ANIMATION_PRESET_ALIASES;
@@ -894,12 +1026,24 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
894
1026
  crudContext: any;
895
1027
  filterCriteria: Record<string, any>;
896
1028
  queryContext: PraxisDataQueryContextBridge | null;
1029
+ aiContext: TableAiContext | null;
1030
+ aiAssistantVoiceInputMode: PraxisAssistantVoiceInputMode;
1031
+ aiAssistantVoiceLanguage: string;
1032
+ advancedFilterValue: Record<string, any>;
1033
+ advancedFilterRuntimeVisibleFields: string[];
1034
+ private advancedFilterAlwaysVisibleCacheKey;
1035
+ private advancedFilterAlwaysVisibleCache?;
1036
+ private advancedFilterMetadataOverridesCacheKey;
1037
+ private advancedFilterMetadataOverridesCacheSource?;
1038
+ private advancedFilterMetadataOverridesCache?;
897
1039
  rowClick: EventEmitter<any>;
1040
+ widgetEvent: EventEmitter<any>;
898
1041
  rowDoubleClick: EventEmitter<any>;
899
1042
  rowExpansionChange: EventEmitter<RowExpansionChangeEvent>;
900
1043
  rowAction: EventEmitter<any>;
901
1044
  toolbarAction: EventEmitter<any>;
902
1045
  bulkAction: EventEmitter<any>;
1046
+ exportAction: EventEmitter<any>;
903
1047
  columnReorder: EventEmitter<any>;
904
1048
  columnReorderAttempt: EventEmitter<any>;
905
1049
  beforeDelete: EventEmitter<any>;
@@ -909,9 +1053,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
909
1053
  afterBulkDelete: EventEmitter<any>;
910
1054
  bulkDeleteError: EventEmitter<any>;
911
1055
  schemaStatusChange: EventEmitter<any>;
1056
+ configChange: EventEmitter<_praxisui_core.TableConfigModern>;
912
1057
  metadataChange: EventEmitter<any>;
913
1058
  loadingStateChange: EventEmitter<LoadingState>;
914
1059
  collectionLinksChange: EventEmitter<RestApiLinks | null>;
1060
+ selectionChange: EventEmitter<any>;
915
1061
  private latestLoadingState;
916
1062
  paginator: MatPaginator;
917
1063
  sort: MatSort;
@@ -936,6 +1082,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
936
1082
  readonly isExpansionDetailRow: (index: number, row: any) => boolean;
937
1083
  columnReorderStatusMessage: string;
938
1084
  columnReorderVisualStatusMessage: string;
1085
+ exportBusy: boolean;
1086
+ exportStatusMessage: string;
939
1087
  private columnReorderStatusTimer;
940
1088
  private columnReorderVisualStatusTimer;
941
1089
  private columnReorderUndoSubscription;
@@ -948,6 +1096,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
948
1096
  private lastResolvedDataMode;
949
1097
  private localFilterFieldMetadataCache;
950
1098
  private localFilterFieldMetadataCacheKey;
1099
+ private remoteDataLoadSequence;
1100
+ private analyticsLoadSequence;
951
1101
  private uncontrolledExpandedRowKeys;
952
1102
  private readonly expansionOpaqueRefCacheLimit;
953
1103
  private expansionOpaqueRefByRowKey;
@@ -975,8 +1125,10 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
975
1125
  private rowDiscoveryMarkForCheckScheduled;
976
1126
  private lastRowDiscoveryScopeKey;
977
1127
  private readonly i18n;
1128
+ private readonly collectionExport;
978
1129
  private readonly paginatorIntl;
979
1130
  private schemaFieldsSnapshot;
1131
+ private filterSchemaFieldsSnapshot;
980
1132
  private runtimeSchemaMeta;
981
1133
  schemaError: boolean;
982
1134
  dataError: boolean;
@@ -988,6 +1140,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
988
1140
  shouldShowToolbarTopPlacement(): boolean;
989
1141
  shouldShowToolbarBottomPlacement(): boolean;
990
1142
  shouldRenderFooterToolbar(): boolean;
1143
+ hasTopToolbarStack(): boolean;
991
1144
  shouldShowFooterToolbarMain(): boolean;
992
1145
  shouldShowFooterToolbarEndActions(): boolean;
993
1146
  getToolbarActionsPosition(): 'top' | 'bottom' | 'both';
@@ -1008,6 +1161,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1008
1161
  getColumnTextAlignStyle(column: ColumnDefinition): string | null;
1009
1162
  getColumnWidthStyle(column: ColumnDefinition): string | null;
1010
1163
  getColumnHeaderAttrStyle(column: ColumnDefinition): string | null;
1164
+ getColumnHeaderNgStyle(column: ColumnDefinition): Record<string, string> | undefined;
1011
1165
  getColumnCellAttrStyle(column: ColumnDefinition): string | null;
1012
1166
  getTableElevationClassName(): string;
1013
1167
  private normalizeTableElevationLevel;
@@ -1024,6 +1178,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1024
1178
  hasBottomPaginator(): boolean;
1025
1179
  hasExplicitResourcePath(): boolean;
1026
1180
  hasLocalDataInput(): boolean;
1181
+ hasAnalyticsProjectionInput(): boolean;
1027
1182
  getDataMode(): DataMode;
1028
1183
  isRemoteMode(): boolean;
1029
1184
  isLocalMode(): boolean;
@@ -1050,6 +1205,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1050
1205
  shouldRenderAdvancedFilter(): boolean;
1051
1206
  getAdvancedFilterResourcePath(): string;
1052
1207
  getAdvancedFilterPersistenceKey(): string;
1208
+ getAdvancedFilterAlwaysVisibleFields(): string[] | undefined;
1209
+ getAdvancedFilterAlwaysVisibleFieldMetadataOverrides(): Record<string, Record<string, any>>;
1053
1210
  getAdvancedFilterFieldMetadata(): FieldMetadata[] | null | undefined;
1054
1211
  private buildLocalFilterMetadata;
1055
1212
  private buildLocalFilterMetadataCacheKey;
@@ -1070,8 +1227,21 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1070
1227
  get hostColumnBordersClass(): boolean;
1071
1228
  trackByRow(index: number, item: any): any;
1072
1229
  getSchemaFieldsSnapshot(): SchemaFieldHint[];
1230
+ getFilterSchemaFieldsSnapshot(): FilterSchemaFieldHint[];
1231
+ getResourceCapabilityDigest(): ResourceCapabilityDigest | null;
1232
+ ensureFilterSchemaFieldsSnapshot(): Promise<void>;
1233
+ ensureAiAssistantRecordSurfaceContext(): Promise<void>;
1234
+ getAiAssistantRecordSurfacesContext(): RecordRelatedSurfaceContextPack | null;
1235
+ getAiAssistantSelectedRowsContext(): Record<string, any> | null;
1236
+ private ensureAiAssistantRowCapabilitySnapshot;
1237
+ private buildCapabilitySnapshotFromSurfaceCatalog;
1238
+ private buildAiAssistantResourceSurfaceContexts;
1239
+ private getAiAssistantRecordSurfaceProbeRows;
1240
+ private buildRecordRelatedSurfaceContextFromResourceSurface;
1241
+ private humanizeResourceSurfaceLabel;
1073
1242
  aiAdapter: any;
1074
1243
  private aiAdapterLoadStarted;
1244
+ private aiAssistantOpenAfterAdapterLoad;
1075
1245
  aiAssistantOpen: boolean;
1076
1246
  aiAssistantPrompt: string;
1077
1247
  aiAssistantViewState: PraxisAssistantTurnViewState | null;
@@ -1080,7 +1250,10 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1080
1250
  private aiAssistantController;
1081
1251
  private aiAssistantStateSubscription;
1082
1252
  private readonly aiApi;
1253
+ private readonly agenticTurnClient;
1254
+ private readonly assistantSessions;
1083
1255
  private readonly aiTurnOrchestrator;
1256
+ private readonly aiAssistantSessionEffect;
1084
1257
  private computedContextCache;
1085
1258
  private computedFieldNames;
1086
1259
  private readonly jsonLogic;
@@ -1118,6 +1291,10 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1118
1291
  private recomputeLocalView;
1119
1292
  private resolveLocalSortField;
1120
1293
  private setSchemaFieldsSnapshot;
1294
+ private setFilterSchemaFieldsSnapshot;
1295
+ private inferFilterSchemaSourceFields;
1296
+ private resolveFilterSchemaRelatedColumns;
1297
+ private normalizeFieldAlias;
1121
1298
  private normalizeSchemaOptions;
1122
1299
  private normalizeEnumValues;
1123
1300
  private normalizeSchemaKey;
@@ -1127,21 +1304,67 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1127
1304
  private tableConfigKey;
1128
1305
  private filterConfigKey;
1129
1306
  private ensureConfigDefaults;
1307
+ private mergePersistedTableConfigWithInput;
1308
+ private reconcileHostDeclaredTableContract;
1309
+ private reconcileHostDeclaredColumns;
1310
+ private reconcileHostDeclaredRowActions;
1311
+ private reconcileHostDeclaredExport;
1312
+ private normalizePersistedExportFormats;
1313
+ private normalizePersistedRowActionIds;
1314
+ private normalizePersistedColumnIds;
1315
+ private clonePlainObject;
1130
1316
  private setShowToolbar;
1131
1317
  private shouldExposeToolbar;
1132
- 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);
1318
+ 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);
1319
+ private get resourceDiscovery();
1320
+ private get resourceSurfaceOpenAdapter();
1133
1321
  private ensureAiAdapterLoaded;
1134
1322
  openAiAssistant(): void;
1323
+ aiAssistantTriggerTestId(position: string): string;
1324
+ hasMinimizedAiAssistantSession(): boolean;
1325
+ aiAssistantTriggerIcon(): string;
1326
+ aiAssistantTriggerBadge(): string;
1327
+ aiAssistantTriggerLabel(): string;
1328
+ aiAssistantTriggerTooltip(): string;
1329
+ openAiAssistantFromSession(session: PraxisAssistantSessionSnapshot): void;
1135
1330
  closeAiAssistant(): void;
1136
1331
  onAiAssistantPromptChange(prompt: string): void;
1137
1332
  onAiAssistantSubmit(prompt: string): void;
1138
1333
  onAiAssistantApply(): void;
1334
+ private shouldMinimizeAiAssistantAfterApply;
1335
+ private isMaterializedRowActionPatch;
1336
+ private asPlainRecord;
1337
+ onAiAssistantRetry(): void;
1338
+ onAiAssistantCancel(): void;
1139
1339
  onAiAssistantQuickReply(reply: PraxisAssistantShellQuickReply): void;
1340
+ private mergeAiAssistantQuickReplyContextHints;
1341
+ private resolveAiAssistantVisualPresentationQuickReplyPrompt;
1342
+ private resolveAiAssistantVisualPresentationQuickReplyContextHints;
1343
+ private resolveAiAssistantVisualPresentationRenderer;
1344
+ private resolveAiAssistantVisualPresentationTargetField;
1345
+ private aiAssistantVisualPresentationTargetScore;
1346
+ getAiAssistantRecommendedIntents(): readonly PraxisAssistantRecommendedIntent[];
1347
+ private getAiAssistantCapabilityDiscoveryRecommendations;
1348
+ onAiAssistantRecommendedIntent(intent: PraxisAssistantRecommendedIntent): void;
1349
+ private getAiAssistantRecommendationResponseContract;
1140
1350
  onAiAssistantEditMessage(message: PraxisAssistantShellMessage): void;
1141
1351
  onAiAssistantResendMessage(message: PraxisAssistantShellMessage): void;
1142
1352
  onAiAssistantLayoutChange(layout: PraxisAssistantShellLayout): void;
1143
1353
  private initializeAiAssistantController;
1144
1354
  private buildAiAssistantContextItems;
1355
+ private interpolateAiAssistantContextValue;
1356
+ private aiAssistantSelectedRecordsValue;
1357
+ private buildAiAssistantContextSnapshot;
1358
+ private syncAiAssistantSession;
1359
+ private assistantContextRuntimeLocale;
1360
+ private refreshAiAssistantContextAfterSelectionChange;
1361
+ private hasAiAssistantSessionState;
1362
+ private resolveAiAssistantSessionId;
1363
+ private resolveAiAssistantOwnerId;
1364
+ private resolveAiAssistantRouteKey;
1365
+ private resolveAiAssistantSummary;
1366
+ private resolveAiAssistantBadge;
1367
+ private resolveAiAssistantIcon;
1145
1368
  private emitLoadingState;
1146
1369
  private hasResolvedRemoteDataLoad;
1147
1370
  private isTableDataLoading;
@@ -1167,6 +1390,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1167
1390
  onPageChange(event: PageEvent): void;
1168
1391
  onSortChange(event: Sort): void;
1169
1392
  onRowClicked(row: any, index: number, event?: MouseEvent): void;
1393
+ requestRecordSurfaceOpen(surface: Record<string, unknown>): boolean;
1394
+ private resolveResourceRecordSurfaceContext;
1395
+ private openResourceRecordSurface;
1170
1396
  isRowExpansionRuntimeEnabled(): boolean;
1171
1397
  isExpansionIconTriggerEnabled(): boolean;
1172
1398
  isRowExpandable(row: any, index?: number): boolean;
@@ -1359,22 +1585,67 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1359
1585
  private emitRowActionEvent;
1360
1586
  private showConfirmDialog;
1361
1587
  private executeDeleteAction;
1588
+ private dispatchRowAction;
1362
1589
  private cloneForEmit;
1363
1590
  private interpolateActionMessageTemplate;
1364
1591
  private buildActionFeedbackContext;
1365
1592
  private resolveActionFeedbackMessage;
1366
1593
  private showActionFeedbackMessage;
1367
1594
  private emitEventWithActionFeedback;
1595
+ private executeConfiguredGlobalAction;
1596
+ private resolveConfiguredGlobalActionRef;
1597
+ private resolveActionGlobalActionRef;
1598
+ private resolveGlobalActionPayload;
1599
+ private buildGlobalActionTemplateContext;
1600
+ private resolveGlobalActionTemplateValue;
1601
+ private isDeferredTemplateExpressionKey;
1602
+ private interpolateGlobalActionTemplate;
1603
+ private shouldEmitLocalForGlobalAction;
1368
1604
  private resolveBulkValidationMessage;
1369
1605
  private hasValidBulkSelectionCount;
1370
1606
  private showBulkConfirmDialog;
1371
1607
  onToolbarAction(event: {
1372
1608
  action: string;
1373
1609
  actionConfig?: any;
1374
- }): void;
1610
+ }): Promise<void>;
1611
+ private resolveBulkExportFormat;
1612
+ private isBulkExportActionKey;
1613
+ private normalizeExportFormat;
1614
+ private isExportFormatEnabled;
1615
+ private getFirstEnabledExportFormat;
1616
+ onExportAction(event: {
1617
+ format: string;
1618
+ scope?: PraxisExportScope;
1619
+ }): Promise<void>;
1620
+ canRunExportAction(format: unknown): boolean;
1621
+ private shouldBlockSelectedExportWithoutSelection;
1622
+ private buildTableExportRequest;
1623
+ private resolveEffectiveExportScope;
1624
+ private resolveTableExportLoadedItems;
1625
+ private computeLocalExportRows;
1626
+ private buildTableExportFields;
1627
+ private buildTableExportFormatOptions;
1628
+ private buildTableExportLocalization;
1629
+ private resolveColumnExportFormat;
1630
+ private buildColumnExportPresentation;
1631
+ private resolveColumnExportCurrency;
1632
+ private downloadExportResult;
1633
+ private triggerExportDownload;
1634
+ private resolveExportFileName;
1635
+ private getExportFileExtension;
1636
+ private getExportMimeType;
1637
+ private showExportFeedback;
1375
1638
  onAdvancedFilterSubmit(criteria: Record<string, any>): void;
1376
1639
  onAdvancedFilterChange(criteria: Record<string, any>): void;
1377
1640
  onAdvancedFilterClear(): void;
1641
+ private applyAdvancedFilterCriteria;
1642
+ private setAdvancedFilterCriteria;
1643
+ private syncAdvancedFilterValueFromCriteria;
1644
+ private deriveRuntimeVisibleAdvancedFilterFields;
1645
+ private isEmptyAdvancedFilterCriterionValue;
1646
+ private mergeAdvancedFilterFieldIds;
1647
+ private getRuntimePromotedAdvancedFilterFields;
1648
+ private toPlainRecord;
1378
1649
  private saveConfigWithAck;
1379
1650
  private clearConfigWithAck;
1380
1651
  private persistHorizontalScrollInput;
@@ -1438,7 +1709,18 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1438
1709
  */
1439
1710
  private verifyServerSchemaVersion;
1440
1711
  private loadSchema;
1712
+ private loadFilterSchemaSnapshot;
1441
1713
  private convertFieldToColumn;
1714
+ private applySchemaFieldPresentation;
1715
+ private resolveSchemaCurrencyFormat;
1716
+ private resolveSchemaBooleanFormat;
1717
+ private resolveSchemaValueMapping;
1718
+ private resolveSchemaOptionsValueMapping;
1719
+ private normalizePresentationToken;
1720
+ private firstNonEmptyString;
1721
+ private firstFiniteNumber;
1722
+ private humanizeSchemaEnumValue;
1723
+ private capitalizeSchemaEnumPart;
1442
1724
  /**
1443
1725
  * Apply automatic renderer hints based on schema field metadata.
1444
1726
  * Runs only on initial bootstrap (when columns are derived from schema).
@@ -1461,11 +1743,14 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1461
1743
  private buildRowDiscoveryOptions;
1462
1744
  private getRowLinks;
1463
1745
  private resolveRowDiscoveryHref;
1746
+ private resolveRowSurfaceDiscoveryHref;
1464
1747
  private prefetchRowDiscovery;
1465
1748
  private ensureRowDiscovery;
1466
1749
  private ensureRowCapabilitySnapshot;
1467
1750
  private ensureRowActionCatalog;
1468
1751
  private getCachedRowCapabilitySnapshot;
1752
+ private getAiAssistantRowDiscoveryLinks;
1753
+ private mergeRowCapabilitySnapshots;
1469
1754
  private hasResolvedRowActionCatalog;
1470
1755
  isRowDiscoveryPending(row: any): boolean;
1471
1756
  private getCachedRowActionCatalog;
@@ -1506,6 +1791,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1506
1791
  private pruneRowDiscoveryCaches;
1507
1792
  private pruneRowDiscoveryCache;
1508
1793
  private fetchData;
1794
+ private resolveAnalyticsProjection;
1795
+ private fetchAnalyticsProjectionData;
1509
1796
  private getEffectiveFilterCriteria;
1510
1797
  retryData(): void;
1511
1798
  reloadSchema(): void;
@@ -1518,9 +1805,35 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1518
1805
  * 3. format (data formatting like dates, numbers, currency)
1519
1806
  */
1520
1807
  getCellValue(rowData: any, column: ColumnDefinition): any;
1808
+ private applyImplicitRuntimeCellPresentation;
1809
+ private shouldHumanizeRuntimeEnumCell;
1810
+ private resolveCellFormattingType;
1811
+ private normalizeReadonlyEntityLookupCellValue;
1812
+ private toEntityLookupDisplayToken;
1813
+ private isEntityLookupDisplayCandidate;
1814
+ private toEntityLookupDisplayPrimitive;
1521
1815
  private resolveImplicitFormat;
1522
1816
  getCellClasses(rowData: any, column: ColumnDefinition): string[] | undefined;
1523
1817
  getCellNgStyle(rowData: any, column: ColumnDefinition): Record<string, string> | undefined;
1818
+ private normalizeInlineStyleRecord;
1819
+ private normalizeConditionalStyleRules;
1820
+ private normalizeConditionalStyleRecord;
1821
+ getCellTooltip(rowData: any, column: ColumnDefinition): string | null;
1822
+ getCellTooltipPosition(rowData: any, column: ColumnDefinition): 'above' | 'below' | 'left' | 'right' | 'before' | 'after';
1823
+ private resolveConditionalStyleTooltipText;
1824
+ private resolveRendererTooltipText;
1825
+ private normalizeTooltipPosition;
1826
+ private normalizeConditionalStyleEffects;
1827
+ private hasConditionalStyleEffectPayload;
1828
+ private resolveConditionalStyleClasses;
1829
+ private resolveConditionalStyleObject;
1830
+ private compileConditionalStyleEffect;
1831
+ private normalizeConditionalRendererRules;
1832
+ private normalizeObjectRecord;
1833
+ private buildColumnRendererOverrideFromEffects;
1834
+ private buildColumnRendererFromEffect;
1835
+ private resolveRuleAnimationFromEffects;
1836
+ private resolveRowTooltipFromEffects;
1524
1837
  private resetComputedContextCache;
1525
1838
  private ensureEffectiveCellRenderCache;
1526
1839
  private ensureCellAnimationPreviousValuesByRowId;
@@ -1532,6 +1845,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1532
1845
  private buildComputedSignature;
1533
1846
  private stringifyDependencyValue;
1534
1847
  private buildComputedValueMap;
1848
+ private collectComputedColumns;
1849
+ private evaluateCanonicalComputedColumns;
1850
+ private collectComputedExpressionDependencies;
1851
+ private collectJsonLogicVarDependencies;
1852
+ private resolveJsonLogicVarPath;
1535
1853
  private buildEvaluationContext;
1536
1854
  private getJsonLogicEvaluationOptions;
1537
1855
  private resolveJsonLogicUserTimeZone;
@@ -1615,7 +1933,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1615
1933
  getIconName(row: any, column: ColumnDefinition): string | null;
1616
1934
  getIconColor(_row: any, column: ColumnDefinition): string | null;
1617
1935
  getIconStyle(_row: any, column: ColumnDefinition): Record<string, string> | null;
1618
- getIconAriaLabel(_row: any, column: ColumnDefinition): string | null;
1936
+ getIconAriaLabel(row: any, column: ColumnDefinition): string | null;
1937
+ getIconText(row: any, column: ColumnDefinition): string | null;
1619
1938
  getIconRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
1620
1939
  /**
1621
1940
  * Lightweight, controlled evaluator for string/number expressions using row context.
@@ -1662,6 +1981,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1662
1981
  getComposeGapStyle(row: any, column: ColumnDefinition): any;
1663
1982
  private getComposeItemField;
1664
1983
  getComposeItemValue(row: any, base: ColumnDefinition, item: any): any;
1984
+ private asComposeValueItemColumn;
1665
1985
  asItemColumn(base: ColumnDefinition, item: any): any;
1666
1986
  getItemEffectiveType(row: any, column: ColumnDefinition, item: any): any;
1667
1987
  private mergeRenderer;
@@ -1670,6 +1990,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1670
1990
  private buildEffectiveCellRenderCacheKey;
1671
1991
  private getEffectiveCellRenderResult;
1672
1992
  private getEffectiveRenderer;
1993
+ private resolveEffectiveRendererTooltip;
1673
1994
  getLinkHref(row: any, column: ColumnDefinition): string | null;
1674
1995
  getLinkText(row: any, column: ColumnDefinition): string;
1675
1996
  getLinkRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
@@ -1691,6 +2012,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1691
2012
  private buildRendererActionRuntimeOptions;
1692
2013
  onButtonClick(row: any, column: ColumnDefinition, event: Event): void;
1693
2014
  getChipText(row: any, column: ColumnDefinition): string | null;
2015
+ private getRendererTextFieldValue;
1694
2016
  getChipRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
1695
2017
  getChipIcon(row: any, column: ColumnDefinition): string | null;
1696
2018
  getChipClasses(row: any, column: ColumnDefinition): string[];
@@ -1713,6 +2035,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1713
2035
  private deriveAvatarInitials;
1714
2036
  getAvatarInitials(row: any, column: ColumnDefinition): string;
1715
2037
  getAvatarRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
2038
+ private getAvatarRichContentStyle;
1716
2039
  getAvatarShape(row: any, column: ColumnDefinition): 'square' | 'rounded' | 'circle' | undefined;
1717
2040
  getAvatarStyle(row: any, column: ColumnDefinition): Record<string, string> | null;
1718
2041
  getToggleState(row: any, column: ColumnDefinition): boolean;
@@ -1768,6 +2091,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1768
2091
  private reconcileSelectionAfterDataChange;
1769
2092
  private getComparableRowIdentity;
1770
2093
  getIdField(): string;
2094
+ private resolveConfigMetaIdField;
1771
2095
  private syncRuntimeSchemaMetaFromConfig;
1772
2096
  private getEffectiveMetadataSnapshot;
1773
2097
  getActionId(action: any): string;
@@ -1785,6 +2109,21 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1785
2109
  isAllSelected(): boolean;
1786
2110
  toggleRow(row: any): void;
1787
2111
  private selectRowFromUserInteraction;
2112
+ private emitSelectionChange;
2113
+ private getSelectedRowsSnapshot;
2114
+ private getAiAssistantSelectionFields;
2115
+ private buildAiAssistantSelectionFilterCandidates;
2116
+ private inferAiAssistantFilterCriterionKind;
2117
+ private buildAiAssistantRangeFilterCandidate;
2118
+ private buildAiAssistantSetFilterCandidate;
2119
+ private resolveAiAssistantSetFilterDisplayValue;
2120
+ private aiAssistantSetFilterDisplayFieldCandidates;
2121
+ private resolveAiAssistantFilterSourceFields;
2122
+ private normalizeAiAssistantNumericRangeValue;
2123
+ private normalizeAiAssistantDateRangeValue;
2124
+ private sanitizeAiAssistantSelectedRow;
2125
+ private safeStringifyAiAssistantValue;
2126
+ private isSensitiveAiAssistantField;
1788
2127
  private getRowActionsConfig;
1789
2128
  getActionsHeaderAlign(): string;
1790
2129
  getActionsHeaderTooltip(): string | undefined;
@@ -1809,11 +2148,24 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1809
2148
  private splitVisibleRowActionsFromVisible;
1810
2149
  private decorateConfiguredRowAction;
1811
2150
  private getDiscoveredRowWorkflowActions;
2151
+ private getDiscoveredRowSurfaceActionsFromSnapshot;
1812
2152
  private getDiscoveredRowWorkflowActionsFromCatalog;
1813
2153
  private supportsRowCrudAction;
1814
2154
  private isCapabilityManagedCrudRowAction;
1815
2155
  private findItemWorkflowAction;
2156
+ private findItemSurface;
2157
+ private isRowSurfaceAction;
2158
+ private isResourceSurfaceCatalogItem;
2159
+ private toRecordSurfaceActionConfig;
2160
+ private resolveConfiguredSurfaceOpenAction;
2161
+ private recordSurfaceActionAliases;
2162
+ private normalizeSurfaceActionAlias;
2163
+ private isWritableRowSurface;
2164
+ private isReadableRowSurface;
2165
+ private getDiscoveredSurfaceIcon;
2166
+ private getDiscoveredSurfaceColor;
1816
2167
  private getUnavailableWorkflowMessage;
2168
+ private getUnavailableSurfaceMessage;
1817
2169
  private normalizeActionId;
1818
2170
  private isActionVisible;
1819
2171
  trackAction(index: number, item: any): any;
@@ -1827,8 +2179,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1827
2179
  getRowMenuIcon(): string;
1828
2180
  private scheduleRowDiscoveryMarkForCheck;
1829
2181
  ngOnDestroy(): void;
1830
- 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; }]>;
1831
- 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"; }, ["toolbar", "projectedFilter"], ["[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]"], true, never>;
2182
+ 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; }]>;
2183
+ 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; }; "aiContext": { "alias": "aiContext"; "required": false; }; "aiAssistantVoiceInputMode": { "alias": "aiAssistantVoiceInputMode"; "required": false; }; "aiAssistantVoiceLanguage": { "alias": "aiAssistantVoiceLanguage"; "required": false; }; "horizontalScroll": { "alias": "horizontalScroll"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "dense": { "alias": "dense"; "required": false; }; }, { "rowClick": "rowClick"; "widgetEvent": "widgetEvent"; "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>;
1832
2184
  static ngAcceptInputType_enableCustomization: unknown;
1833
2185
  }
1834
2186
 
@@ -1841,7 +2193,6 @@ interface EditorDocument<TConfig, TBindings = unknown> {
1841
2193
  type TableHorizontalScroll = 'auto' | 'wrap' | 'none';
1842
2194
  interface TableBindings {
1843
2195
  resourcePath?: string | null;
1844
- idField?: string;
1845
2196
  horizontalScroll?: TableHorizontalScroll;
1846
2197
  }
1847
2198
  interface TableAuthoringDocument extends EditorDocument<TableConfig, TableBindings> {
@@ -1898,7 +2249,6 @@ interface TableApplyPlan {
1898
2249
  };
1899
2250
  diff?: {
1900
2251
  resourcePathChanged?: boolean;
1901
- idFieldChanged?: boolean;
1902
2252
  horizontalScrollChanged?: boolean;
1903
2253
  requiresDataRefresh?: boolean;
1904
2254
  };
@@ -2371,6 +2721,8 @@ interface ToolbarAction {
2371
2721
  /** Material button appearance: filled (flat), outlined (stroked), elevated (raised), text, tonal */
2372
2722
  appearance?: 'filled' | 'outlined' | 'elevated' | 'text' | 'tonal';
2373
2723
  action: string;
2724
+ globalAction?: GlobalActionRef;
2725
+ effects?: PraxisRuntimeGlobalActionEffect[];
2374
2726
  position: 'start' | 'end';
2375
2727
  order?: number;
2376
2728
  disabled?: boolean;
@@ -2378,7 +2730,7 @@ interface ToolbarAction {
2378
2730
  shortcut?: string;
2379
2731
  shortcutScope?: 'toolbar' | 'global';
2380
2732
  tooltip?: string;
2381
- visibleWhen?: string;
2733
+ visibleWhen?: JsonLogicExpression | null;
2382
2734
  children?: ToolbarAction[];
2383
2735
  }
2384
2736
  interface RowAction {
@@ -2386,11 +2738,15 @@ interface RowAction {
2386
2738
  label: string;
2387
2739
  icon: string;
2388
2740
  action: string;
2741
+ globalAction?: GlobalActionRef;
2742
+ effects?: PraxisRuntimeGlobalActionEffect[];
2389
2743
  color?: 'primary' | 'accent' | 'warn';
2390
2744
  tooltip?: string;
2391
2745
  requiresConfirmation?: boolean;
2392
2746
  autoDelete?: boolean;
2393
2747
  separator?: boolean;
2748
+ visibleWhen?: JsonLogicExpression | null;
2749
+ disabledWhen?: JsonLogicExpression | null;
2394
2750
  conditional?: string;
2395
2751
  }
2396
2752
  interface BulkAction {
@@ -2398,6 +2754,8 @@ interface BulkAction {
2398
2754
  label: string;
2399
2755
  icon: string;
2400
2756
  action: string;
2757
+ globalAction?: GlobalActionRef;
2758
+ effects?: PraxisRuntimeGlobalActionEffect[];
2401
2759
  color?: 'primary' | 'accent' | 'warn';
2402
2760
  tooltip?: string;
2403
2761
  requiresConfirmation?: boolean;
@@ -2411,6 +2769,25 @@ interface ToolbarActionsChange {
2411
2769
  value: any;
2412
2770
  fullConfig: TableConfig;
2413
2771
  }
2772
+ type GlobalActionCatalogOption = GlobalActionCatalogEntry & {
2773
+ param?: {
2774
+ required?: boolean;
2775
+ label?: string;
2776
+ placeholder?: string;
2777
+ hint?: string;
2778
+ };
2779
+ };
2780
+ type EditableTableAction = {
2781
+ id?: string;
2782
+ label?: string;
2783
+ action?: string;
2784
+ globalAction?: GlobalActionRef;
2785
+ effects?: PraxisRuntimeGlobalActionEffect[];
2786
+ position?: string;
2787
+ appearance?: string;
2788
+ visibleWhen?: JsonLogicExpression | null;
2789
+ disabledWhen?: JsonLogicExpression | null;
2790
+ };
2414
2791
  type ToolbarShortcutScope = 'toolbar' | 'global';
2415
2792
  interface InternalActionSpec {
2416
2793
  id: string;
@@ -2431,14 +2808,14 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
2431
2808
  editingToolbarActionIndex: number | null;
2432
2809
  editingRowActionIndex: number | null;
2433
2810
  editingBulkActionIndex: number | null;
2434
- readonly globalActionCatalog: GlobalActionSpec[];
2811
+ private readonly i18n;
2812
+ readonly globalActionCatalog: GlobalActionCatalogOption[];
2435
2813
  get internalActionCatalog(): InternalActionSpec[];
2436
2814
  readonly customActionValue = "__custom__";
2437
2815
  readonly validShortcutScopes: ToolbarShortcutScope[];
2438
2816
  private readonly actionFieldDrafts;
2439
2817
  private readonly actionFieldErrors;
2440
2818
  private readonly warnedInvalidShortcutScopes;
2441
- private readonly i18n;
2442
2819
  private destroy$;
2443
2820
  constructor(fb: FormBuilder, iconPicker: IconPickerService);
2444
2821
  tx(key: string, fallback: string): string;
@@ -2467,56 +2844,37 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
2467
2844
  private removeAddToolbarAction;
2468
2845
  private syncAddFormFromActions;
2469
2846
  private updateConfig;
2470
- getActionSelectValue(value?: string): string;
2471
- getActionParam(value?: string): string;
2472
- getActionCustomValue(value?: string): string;
2847
+ getActionSelectValue(action?: EditableTableAction): string;
2848
+ getActionParam(action?: EditableTableAction): string;
2849
+ isRequiredGlobalActionParamMissing(action: EditableTableAction, spec: GlobalActionCatalogOption): boolean;
2850
+ getActionCustomValue(action?: EditableTableAction): string;
2473
2851
  isInternalAction(value?: string): boolean;
2474
- getActionSpecById(id: string): GlobalActionSpec | undefined;
2475
- onActionSelectChange(action: {
2476
- action?: string;
2477
- }, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2478
- onActionParamChange(action: {
2479
- action?: string;
2480
- }, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2481
- onActionCustomChange(action: {
2482
- action?: string;
2483
- }, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2852
+ getActionSpecById(id: string): GlobalActionCatalogOption | undefined;
2853
+ onActionSelectChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2854
+ onActionParamChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2855
+ onActionCustomChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2856
+ getCanonicalGlobalActionRef(action?: EditableTableAction): GlobalActionRef | undefined;
2857
+ private setCanonicalGlobalActionRef;
2484
2858
  private touchActionList;
2485
- private parseActionValue;
2859
+ getActionJsonLogicText(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen'): string;
2860
+ onActionJsonLogicChange(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen', value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2861
+ getActionConditionError(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen'): string;
2486
2862
  isGlobalActionId(id?: string): boolean;
2487
- getGlobalActionSchema(action: {
2488
- action?: string;
2489
- }): _praxisui_core.GlobalActionUiSchema | undefined;
2490
- getSurfaceOpenActionPayload(action: {
2491
- action?: string;
2492
- }): SurfaceOpenPayload;
2493
- onSurfaceOpenActionPayloadChange(action: {
2494
- action?: string;
2495
- }, payload: SurfaceOpenPayload, kind: 'toolbar' | 'row' | 'bulk'): void;
2496
- shouldShowGlobalActionField(action: {
2497
- action?: string;
2498
- }, field: GlobalActionField): boolean;
2499
- hasActionFieldError(action: {
2500
- action?: string;
2501
- }, key: string): boolean;
2502
- getActionFieldError(action: {
2503
- action?: string;
2504
- }, key: string): string;
2505
- getGlobalActionFieldValue(action: {
2506
- action?: string;
2507
- }, field: GlobalActionField): any;
2508
- onGlobalActionFieldChange(action: {
2509
- action?: string;
2510
- }, field: GlobalActionField, value: any, kind: 'toolbar' | 'row' | 'bulk'): void;
2511
- private getActionParamInfo;
2512
- private parseMethodAndUrl;
2863
+ getGlobalActionSchema(action: EditableTableAction): _praxisui_core.GlobalActionUiSchema | undefined;
2864
+ getSurfaceOpenActionPayload(action: EditableTableAction): SurfaceOpenPayload;
2865
+ onSurfaceOpenActionPayloadChange(action: EditableTableAction, payload: SurfaceOpenPayload, kind: 'toolbar' | 'row' | 'bulk'): void;
2866
+ shouldShowGlobalActionField(action: EditableTableAction, field: GlobalActionField): boolean;
2867
+ isGlobalActionFieldRequired(action: EditableTableAction, field: GlobalActionField): boolean;
2868
+ isGlobalActionFieldMissing(action: EditableTableAction, field: GlobalActionField): boolean;
2869
+ hasActionFieldError(action: EditableTableAction, key: string): boolean;
2870
+ getActionFieldError(action: EditableTableAction, key: string): string;
2871
+ getGlobalActionFieldValue(action: EditableTableAction, field: GlobalActionField): any;
2872
+ onGlobalActionFieldChange(action: EditableTableAction, field: GlobalActionField, value: any, kind: 'toolbar' | 'row' | 'bulk'): void;
2513
2873
  private stringifyJson;
2514
2874
  private normalizeSurfaceOpenPayload;
2515
2875
  private setActionFieldError;
2516
2876
  private clearActionFieldError;
2517
2877
  private collectGlobalActionFieldValues;
2518
- private serializeGlobalActionParam;
2519
- private buildPrimaryParam;
2520
2878
  private buildGlobalActionPayload;
2521
2879
  getToolbarActionShortcutScope(action: ToolbarAction): ToolbarShortcutScope;
2522
2880
  onToolbarActionShortcutScopeChange(action: ToolbarAction, value: ToolbarShortcutScope | string): void;
@@ -2708,6 +3066,7 @@ declare class FilterSettingsComponent implements OnChanges, AfterViewInit, OnDes
2708
3066
  }[];
2709
3067
  getContrastWarning(): string | null;
2710
3068
  applyPreset(key: string): void;
3069
+ isPresetActive(key: string): boolean;
2711
3070
  hasBooleanFieldMetadata(): boolean;
2712
3071
  getFieldLabel(name: string): string;
2713
3072
  onAlwaysVisibleFieldSearchChange(value: string): void;
@@ -2871,12 +3230,10 @@ declare class RuleCompilerService {
2871
3230
  static ɵprov: i0.ɵɵInjectableDeclaration<RuleCompilerService>;
2872
3231
  }
2873
3232
 
2874
- type RuleItem = {
2875
- condition: JsonLogicExpression;
3233
+ type RuleItem = Omit<PraxisRuntimeConditionalEffectRule<RuleEffectDefinition>, 'effects'> & {
2876
3234
  cssClass?: string;
2877
3235
  style?: Record<string, string>;
2878
- description?: string;
2879
- effects?: _praxisui_table_rule_builder.RuleEffectDefinition;
3236
+ effects?: RuleEffectDefinition[];
2880
3237
  enabled?: boolean;
2881
3238
  };
2882
3239
  declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy {
@@ -2946,6 +3303,7 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
2946
3303
  onColumnSelect(field: string): void;
2947
3304
  private initFromConfig;
2948
3305
  private loadColumnRules;
3306
+ private normalizePersistedRules;
2949
3307
  rebuildCondition(): void;
2950
3308
  onDraftChange(): void;
2951
3309
  applyTextPreset(preset: string): void;
@@ -2972,6 +3330,8 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
2972
3330
  onExportRules(): void;
2973
3331
  onImportRules(): void;
2974
3332
  private sanitizeRule;
3333
+ private normalizeRuleEffects;
3334
+ getPrimaryEffect(r: RuleItem | null | undefined): RuleEffectDefinition | undefined;
2975
3335
  getAnimationLabel(r: RuleItem): string | null;
2976
3336
  private normalizeRendererAnimation;
2977
3337
  private buildRendererOverrideFromRule;
@@ -3078,6 +3438,8 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3078
3438
  private cdr;
3079
3439
  private configService;
3080
3440
  private readonly i18n;
3441
+ private readonly globalActionCatalogSource;
3442
+ private readonly globalActionCatalog;
3081
3443
  filterSettingsEditor?: FilterSettingsComponent;
3082
3444
  behaviorEditor?: BehaviorConfigEditorComponent;
3083
3445
  rulesEditor?: TableRulesEditorComponent;
@@ -3140,6 +3502,7 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3140
3502
  private hasLocalDataInput;
3141
3503
  private filterDtoLoadSeq;
3142
3504
  private lastKnownFilterSettings;
3505
+ private globalActionValidationIssues;
3143
3506
  private readonly panelData;
3144
3507
  private readonly crudService;
3145
3508
  private readonly panelRef;
@@ -3166,6 +3529,9 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3166
3529
  onRulesConfigChange(newCfg: TableConfig): void;
3167
3530
  private updateColumnMetas;
3168
3531
  private updateCanSaveState;
3532
+ private collectGlobalActionValidationIssues;
3533
+ private findGlobalActionCatalogEntry;
3534
+ private buildGlobalActionCatalog;
3169
3535
  private subscribeCrudEditorChanges;
3170
3536
  private showSuccess;
3171
3537
  private showError;
@@ -3174,6 +3540,7 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3174
3540
  * Normaliza uma configuração de tabela para comparação consistente
3175
3541
  * Remove propriedades undefined, ordena arrays e objetos de forma consistente
3176
3542
  */
3543
+ private withCanonicalIdField;
3177
3544
  private normalizeTableConfig;
3178
3545
  /**
3179
3546
  * Realiza comparação profunda de objetos, ignorando ordem de propriedades
@@ -3236,6 +3603,107 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3236
3603
  static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableConfigEditor, "praxis-table-config-editor", never, {}, {}, never, never, true, never>;
3237
3604
  }
3238
3605
 
3606
+ interface PraxisTableWidgetEditorInputs {
3607
+ config?: TableConfig | null;
3608
+ resourcePath?: string | null;
3609
+ horizontalScroll?: 'auto' | 'wrap' | 'none';
3610
+ tableId?: string;
3611
+ componentInstanceId?: string;
3612
+ [key: string]: unknown;
3613
+ }
3614
+ interface PraxisTableWidgetEditorValue {
3615
+ inputs: PraxisTableWidgetEditorInputs;
3616
+ }
3617
+ declare class PraxisTableWidgetConfigEditor implements SettingsValueProvider$1, AfterViewInit, OnDestroy {
3618
+ inputs: PraxisTableWidgetEditorInputs | null;
3619
+ widgetKey?: string;
3620
+ tableEditor?: PraxisTableConfigEditor;
3621
+ readonly isDirty$: BehaviorSubject<boolean>;
3622
+ readonly isValid$: BehaviorSubject<boolean>;
3623
+ readonly isBusy$: BehaviorSubject<boolean>;
3624
+ private readonly subscription;
3625
+ ngAfterViewInit(): void;
3626
+ ngOnDestroy(): void;
3627
+ getSettingsValue(): PraxisTableWidgetEditorValue;
3628
+ onSave(): PraxisTableWidgetEditorValue;
3629
+ reset(): void;
3630
+ private initializeChildEditor;
3631
+ private buildValue;
3632
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableWidgetConfigEditor, never>;
3633
+ 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>;
3634
+ }
3635
+
3636
+ interface PraxisFilterWidgetEditorInputs {
3637
+ resourcePath?: string | null;
3638
+ fieldMetadata?: FieldMetadata[] | null;
3639
+ filterId?: string;
3640
+ formId?: string;
3641
+ componentInstanceId?: string;
3642
+ alwaysVisibleFields?: string[];
3643
+ alwaysVisibleFieldMetadataOverrides?: Record<string, Record<string, unknown>>;
3644
+ selectedFieldIds?: string[];
3645
+ allowSaveTags?: boolean;
3646
+ changeDebounceMs?: number;
3647
+ placeBooleansInActions?: boolean;
3648
+ showToggleLabels?: boolean;
3649
+ alwaysMinWidth?: number;
3650
+ alwaysColsMd?: number;
3651
+ alwaysColsLg?: number;
3652
+ confirmTagDelete?: boolean;
3653
+ tagColor?: 'primary' | 'accent' | 'warn' | 'basic';
3654
+ tagVariant?: 'filled' | 'outlined';
3655
+ tagButtonColor?: 'primary' | 'accent' | 'warn' | 'basic';
3656
+ actionsButtonColor?: 'primary' | 'accent' | 'warn' | 'basic';
3657
+ actionsVariant?: 'standard' | 'outlined';
3658
+ useInlineSearchableSelectVariant?: boolean;
3659
+ useInlineRangeVariant?: boolean;
3660
+ useInlineDateVariant?: boolean;
3661
+ useInlineDateRangeVariant?: boolean;
3662
+ useInlineTimeVariant?: boolean;
3663
+ useInlineTimeRangeVariant?: boolean;
3664
+ useInlineTreeSelectVariant?: boolean;
3665
+ overlayVariant?: 'card' | 'frosted';
3666
+ overlayBackdrop?: boolean;
3667
+ advancedOpenMode?: 'modal' | 'drawer';
3668
+ advancedClearButtonsEnabled?: boolean;
3669
+ persistenceKey?: string;
3670
+ showFilterSettings?: boolean;
3671
+ enableCustomization?: boolean;
3672
+ [key: string]: unknown;
3673
+ }
3674
+ interface PraxisFilterWidgetEditorValue {
3675
+ inputs: PraxisFilterWidgetEditorInputs;
3676
+ }
3677
+ declare class PraxisFilterWidgetConfigEditor implements SettingsValueProvider$1, OnDestroy {
3678
+ widgetKey?: string;
3679
+ set inputs(value: PraxisFilterWidgetEditorInputs | null);
3680
+ get inputs(): PraxisFilterWidgetEditorInputs | null;
3681
+ set filterSettings(component: FilterSettingsComponent | undefined);
3682
+ metadata: FieldMetadata[];
3683
+ settings: FilterConfig;
3684
+ configKey?: string;
3685
+ readonly isDirty$: BehaviorSubject<boolean>;
3686
+ readonly isValid$: BehaviorSubject<boolean>;
3687
+ readonly isBusy$: BehaviorSubject<boolean>;
3688
+ private currentInputs;
3689
+ private settingsEditor?;
3690
+ private subscription;
3691
+ ngOnDestroy(): void;
3692
+ getSettingsValue(): PraxisFilterWidgetEditorValue;
3693
+ onSave(): PraxisFilterWidgetEditorValue;
3694
+ reset(): void;
3695
+ private buildValue;
3696
+ private buildSettingsFromInputs;
3697
+ private projectSettingsToInputs;
3698
+ private normalizeSettings;
3699
+ private normalizeAdvancedOpenMode;
3700
+ private normalizeOverlayVariant;
3701
+ private cloneStringArray;
3702
+ private cloneRecord;
3703
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisFilterWidgetConfigEditor, never>;
3704
+ 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>;
3705
+ }
3706
+
3239
3707
  declare class DataFormatterComponent implements OnInit, OnChanges {
3240
3708
  private cdr;
3241
3709
  private formattingService;
@@ -3304,31 +3772,6 @@ declare class DataFormatterComponent implements OnInit, OnChanges {
3304
3772
  static ɵcmp: i0.ɵɵComponentDeclaration<DataFormatterComponent, "data-formatter", never, { "columnType": { "alias": "columnType"; "required": false; }; "currentFormat": { "alias": "currentFormat"; "required": false; }; }, { "formatChange": "formatChange"; }, never, never, true, never>;
3305
3773
  }
3306
3774
 
3307
- type AnalyticsTableRow = Record<string, string | number | boolean | null>;
3308
- type AnalyticsTableContractSource = 'remote' | 'fallback';
3309
- interface AnalyticsTableViewModel {
3310
- config: TableConfig;
3311
- data: AnalyticsTableRow[];
3312
- }
3313
- interface AnalyticsTableContractDefinition<TKey extends string = string> {
3314
- key: TKey;
3315
- projectionId: string;
3316
- path: string;
3317
- title: PraxisTextValue;
3318
- subtitle?: PraxisTextValue;
3319
- fallbackProjection: PraxisAnalyticsProjection;
3320
- fallbackRows?: AnalyticsTableRow[];
3321
- }
3322
- interface AnalyticsTableContractLoadOptions<TKey extends string = string> {
3323
- cacheNamespace?: string;
3324
- queryContexts?: Partial<Record<TKey, PraxisDataQueryContext | null>>;
3325
- }
3326
- interface AnalyticsTableContractLoadResult<TKey extends string = string> {
3327
- views: Record<TKey, AnalyticsTableViewModel>;
3328
- sources: Record<TKey, AnalyticsTableContractSource>;
3329
- errors: Partial<Record<TKey, string>>;
3330
- }
3331
-
3332
3775
  interface AnalyticsTableConfigAdapterOptions {
3333
3776
  title?: PraxisTextValue;
3334
3777
  subtitle?: PraxisTextValue;
@@ -3342,24 +3785,6 @@ declare class AnalyticsTableConfigAdapterService {
3342
3785
  static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableConfigAdapterService>;
3343
3786
  }
3344
3787
 
3345
- declare class AnalyticsTableStatsApiService {
3346
- private readonly http;
3347
- private readonly apiUrl;
3348
- private readonly statsBuilder;
3349
- constructor(http: HttpClient, apiUrl: ApiUrlConfig);
3350
- execute(projection: PraxisAnalyticsProjection, queryContext?: PraxisDataQueryContext | null): Promise<AnalyticsTableRow[]>;
3351
- private toTableRows;
3352
- private resolveTimeSeriesCategory;
3353
- private resolveBucketCategory;
3354
- private projectMetricValues;
3355
- private resolveMetricValue;
3356
- private buildStatsUrl;
3357
- private applyQueryContext;
3358
- private normalizeError;
3359
- static ɵfac: i0.ɵɵFactoryDeclaration<AnalyticsTableStatsApiService, never>;
3360
- static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableStatsApiService>;
3361
- }
3362
-
3363
3788
  declare class AnalyticsTableContractService {
3364
3789
  private readonly analyticsSchema;
3365
3790
  private readonly resolver;
@@ -3395,6 +3820,15 @@ declare function buildTableApplyPlan(doc: TableAuthoringDocument, runtime?: Tabl
3395
3820
  }): TableApplyPlan;
3396
3821
  declare function serializeTableAuthoringDocument(doc: TableAuthoringDocument): unknown;
3397
3822
 
3823
+ /**
3824
+ * Manifesto de authoring canônico para o componente praxis-table.
3825
+ * Este arquivo define o contrato executável para que agentes de IA editem tabelas.
3826
+ *
3827
+ * @version 2.0.0
3828
+ * @status COMPLIANT - Alinhado com o contrato v2 e TableConfig canônico.
3829
+ */
3830
+ declare const PRAXIS_TABLE_AUTHORING_MANIFEST: ComponentAuthoringManifest;
3831
+
3398
3832
  declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3399
3833
  private readonly i18n;
3400
3834
  config: TableConfig;
@@ -3406,6 +3840,9 @@ declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3406
3840
  toolbarVisible: boolean;
3407
3841
  density: 'compact' | 'comfortable' | 'spacious';
3408
3842
  toolbarActionsPosition: 'top' | 'bottom' | 'both';
3843
+ toolbarAppearanceVariant: 'flat' | 'outlined' | 'elevated' | 'integrated';
3844
+ toolbarAppearanceShape: 'square' | 'rounded' | 'pill';
3845
+ toolbarAppearanceDivider: 'none' | 'start' | 'between-groups';
3409
3846
  toolbarHeight: number;
3410
3847
  toolbarActionsBackgroundColor: string;
3411
3848
  paginationEnabled: boolean;
@@ -3433,6 +3870,9 @@ declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3433
3870
  setToolbarVisible(value: boolean): void;
3434
3871
  setDensity(value: 'compact' | 'comfortable' | 'spacious'): void;
3435
3872
  setToolbarActionsPosition(value: 'top' | 'bottom' | 'both'): void;
3873
+ setToolbarAppearanceVariant(value: 'flat' | 'outlined' | 'elevated' | 'integrated'): void;
3874
+ setToolbarAppearanceShape(value: 'square' | 'rounded' | 'pill'): void;
3875
+ setToolbarAppearanceDivider(value: 'none' | 'start' | 'between-groups'): void;
3436
3876
  setToolbarHeight(value: number | string): void;
3437
3877
  setToolbarActionsBackgroundColor(value: string): void;
3438
3878
  setPaginationEnabled(value: boolean): void;
@@ -3460,6 +3900,7 @@ declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3460
3900
  tx(key: string, fallback: string): string;
3461
3901
  private emitConfig;
3462
3902
  private patchToolbar;
3903
+ private patchToolbarAppearance;
3463
3904
  private patchBehavior;
3464
3905
  private patchPagination;
3465
3906
  private patchSorting;
@@ -3495,7 +3936,7 @@ declare class ValueMappingEditorComponent implements OnInit, OnChanges {
3495
3936
  [key: number]: string;
3496
3937
  }>;
3497
3938
  mappingPairs: ValueMappingPair[];
3498
- dataSource: MatTableDataSource<ValueMappingPair, _angular_material_paginator_d_Zo1cMMo4.M>;
3939
+ dataSource: MatTableDataSource<ValueMappingPair, _angular_material_paginator.MatPaginator>;
3499
3940
  displayedColumns: string[];
3500
3941
  showImportDialog: boolean;
3501
3942
  importJsonText: string;
@@ -3641,7 +4082,6 @@ declare function providePraxisTableMetadata(): Provider;
3641
4082
  declare module '@praxisui/core' {
3642
4083
  interface AiCapabilityCategoryMap {
3643
4084
  meta: true;
3644
- bindings: true;
3645
4085
  columns: true;
3646
4086
  renderer: true;
3647
4087
  conditional: true;
@@ -3655,6 +4095,7 @@ declare module '@praxisui/core' {
3655
4095
  toolbar: true;
3656
4096
  actions: true;
3657
4097
  export: true;
4098
+ runtime: true;
3658
4099
  performance: true;
3659
4100
  messages: true;
3660
4101
  localization: true;
@@ -3727,18 +4168,23 @@ type ComponentEditPlanCapability = {
3727
4168
  declare const TABLE_COMPONENT_EDIT_PLAN_KIND = "praxis.table.component-edit-plan";
3728
4169
  declare const TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND = "praxis.table.component-edit-plan.batch";
3729
4170
  declare const TABLE_COMPONENT_EDIT_PLAN_VERSION = "1.0";
3730
- 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';
3731
- 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"];
4171
+ type TableComponentEditChangeKind = 'add_column' | 'set_column_format' | 'set_column_header' | 'set_column_visibility' | 'set_column_filterable' | 'set_column_sortable' | 'set_column_width' | 'set_column_order' | 'set_column_align' | 'set_column_style' | 'set_column_header_style' | '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' | 'add_row_action' | 'add_bulk_action' | 'configure_export' | 'set_table_density' | 'set_toolbar_visibility';
4172
+ type TableComponentEditOperationId = 'column.add' | 'column.format.set' | 'column.header.set' | 'column.visibility.set' | 'column.filterable.set' | 'column.sortable.set' | 'column.width.set' | 'column.order.set' | 'column.align.set' | 'column.style.set' | 'column.headerStyle.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' | 'rowAction.add' | 'bulkAction.add' | 'export.configure' | 'appearance.density.set' | 'toolbar.visibility.set';
4173
+ declare const TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS: readonly ["add_column", "set_column_format", "set_column_header", "set_column_visibility", "set_column_filterable", "set_column_sortable", "set_column_width", "set_column_order", "set_column_align", "set_column_style", "set_column_header_style", "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", "add_row_action", "add_bulk_action", "configure_export", "set_table_density", "set_toolbar_visibility"];
3732
4174
  declare const TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS: Record<TableComponentEditChangeKind, string>;
3733
4175
  interface TableComponentEditPlan {
3734
4176
  kind?: typeof TABLE_COMPONENT_EDIT_PLAN_KIND;
3735
4177
  version?: typeof TABLE_COMPONENT_EDIT_PLAN_VERSION | string;
3736
4178
  componentId?: 'praxis-table' | string;
3737
4179
  changeKind: TableComponentEditChangeKind | string;
4180
+ operationId?: TableComponentEditOperationId | string;
3738
4181
  capabilityPath?: string;
3739
4182
  configPath?: string;
3740
4183
  field?: string;
3741
4184
  targetField?: string;
4185
+ target?: unknown;
4186
+ input?: unknown;
4187
+ params?: unknown;
3742
4188
  value?: unknown;
3743
4189
  condition?: unknown;
3744
4190
  style?: unknown;
@@ -3766,7 +4212,7 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3766
4212
  readonly $defs: {
3767
4213
  readonly changeKind: {
3768
4214
  readonly type: "string";
3769
- 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"];
4215
+ readonly enum: readonly ["add_column", "set_column_format", "set_column_header", "set_column_visibility", "set_column_filterable", "set_column_sortable", "set_column_width", "set_column_order", "set_column_align", "set_column_style", "set_column_header_style", "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", "add_row_action", "add_bulk_action", "configure_export", "set_table_density", "set_toolbar_visibility"];
3770
4216
  };
3771
4217
  readonly capabilityPath: {
3772
4218
  readonly type: "string";
@@ -3801,6 +4247,9 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3801
4247
  readonly type: "string";
3802
4248
  readonly minLength: 1;
3803
4249
  };
4250
+ readonly tooltip: {
4251
+ readonly $ref: "#/$defs/tooltip";
4252
+ };
3804
4253
  };
3805
4254
  readonly anyOf: readonly [{
3806
4255
  readonly required: readonly ["text"];
@@ -3808,10 +4257,31 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3808
4257
  readonly required: readonly ["textField"];
3809
4258
  }];
3810
4259
  };
4260
+ readonly tooltip: {
4261
+ readonly type: "object";
4262
+ readonly additionalProperties: false;
4263
+ readonly required: readonly ["text"];
4264
+ readonly properties: {
4265
+ readonly text: {
4266
+ readonly type: "string";
4267
+ readonly minLength: 1;
4268
+ };
4269
+ readonly position: {
4270
+ readonly type: "string";
4271
+ readonly enum: readonly ["top", "right", "bottom", "left", "above", "below", "before", "after"];
4272
+ };
4273
+ readonly bgColor: {
4274
+ readonly type: "string";
4275
+ readonly minLength: 1;
4276
+ };
4277
+ readonly delayMs: {
4278
+ readonly type: "number";
4279
+ };
4280
+ };
4281
+ };
3811
4282
  readonly operation: {
3812
4283
  readonly type: "object";
3813
4284
  readonly additionalProperties: false;
3814
- readonly required: readonly ["changeKind", "field", "value"];
3815
4285
  readonly properties: {
3816
4286
  readonly kind: {
3817
4287
  readonly const: "praxis.table.component-edit-plan";
@@ -3822,6 +4292,12 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3822
4292
  readonly componentId: {
3823
4293
  readonly const: "praxis-table";
3824
4294
  };
4295
+ readonly operationId: {
4296
+ readonly enum: readonly ["column.add", "column.format.set", "column.header.set", "column.visibility.set", "column.filterable.set", "column.sortable.set", "column.width.set", "column.order.set", "column.align.set", "column.style.set", "column.headerStyle.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", "rowAction.add", "bulkAction.add", "export.configure", "appearance.density.set", "toolbar.visibility.set"];
4297
+ };
4298
+ readonly target: true;
4299
+ readonly input: true;
4300
+ readonly params: true;
3825
4301
  readonly changeKind: {
3826
4302
  readonly $ref: "#/$defs/changeKind";
3827
4303
  };
@@ -3850,6 +4326,13 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3850
4326
  readonly type: "string";
3851
4327
  };
3852
4328
  };
4329
+ readonly anyOf: readonly [{
4330
+ readonly required: readonly ["changeKind", "field", "value"];
4331
+ }, {
4332
+ readonly required: readonly ["operationId", "target", "input"];
4333
+ }, {
4334
+ readonly required: readonly ["operationId", "input"];
4335
+ }];
3853
4336
  readonly allOf: readonly [{
3854
4337
  readonly if: {
3855
4338
  readonly properties: {
@@ -3926,8 +4409,12 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3926
4409
  readonly required: readonly ["condition"];
3927
4410
  readonly anyOf: readonly [{
3928
4411
  readonly required: readonly ["badge"];
4412
+ }, {
4413
+ readonly required: readonly ["renderer"];
3929
4414
  }, {
3930
4415
  readonly required: readonly ["value"];
4416
+ }, {
4417
+ readonly required: readonly ["tooltip"];
3931
4418
  }];
3932
4419
  readonly properties: {
3933
4420
  readonly condition: {
@@ -3936,6 +4423,14 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3936
4423
  readonly badge: {
3937
4424
  readonly $ref: "#/$defs/badge";
3938
4425
  };
4426
+ readonly renderer: {
4427
+ readonly type: "object";
4428
+ readonly minProperties: 1;
4429
+ readonly additionalProperties: true;
4430
+ };
4431
+ readonly tooltip: {
4432
+ readonly $ref: "#/$defs/tooltip";
4433
+ };
3939
4434
  readonly value: {
3940
4435
  readonly $ref: "#/$defs/badge";
3941
4436
  };
@@ -3993,5 +4488,5 @@ declare function coerceTableComponentEditPlan(value: unknown): TableComponentEdi
3993
4488
  declare function compileTableComponentEditPlans(plans: TableComponentEditPlan[], currentConfig: TableConfig): TableComponentEditPlanCompileResult;
3994
4489
  declare function compileTableComponentEditPlan(plan: TableComponentEditPlan, currentConfig: TableConfig): TableComponentEditPlanCompileResult;
3995
4490
 
3996
- 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 };
3997
- 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 };
4491
+ 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, PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, PraxisFilter, PraxisFilterWidgetConfigEditor, PraxisTable, PraxisTableConfigEditor, PraxisTableInlineAuthoringEditorComponent, PraxisTableToolbar, PraxisTableWidgetConfigEditor, STRING_PRESETS, TABLE_AI_CAPABILITIES, TABLE_COMPONENT_AI_CAPABILITIES, TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, TABLE_COMPONENT_EDIT_PLAN_KIND, TABLE_COMPONENT_EDIT_PLAN_VERSION, TASK_PRESETS, TableDefaultsProvider, TableRulesEditorComponent, ToolbarActionsEditorComponent, ValueMappingEditorComponent, VisualFormulaBuilderComponent, buildTableApplyPlan, coerceTableComponentEditPlan, coerceTableComponentEditPlans, compileTableComponentEditPlan, compileTableComponentEditPlans, createTableAuthoringDocument, getActionId, getEnum, getTableCapabilities, getTableComponentEditPlanCapabilities, isTableRendererSupportedByRichContentP0, mapTableRendererToRichContentP0, normalizeTableAuthoringDocument, parseLegacyOrTableDocument, providePraxisFilterMetadata, providePraxisTableMetadata, providePraxisTableToolbarAppearance, serializeTableAuthoringDocument, toCanonicalTableConfig, validateTableAuthoringDocument };
4492
+ 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, TableAiContext, TableAiNavigationContextPack, TableAiNavigationDestinationContext, 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 };