@praxisui/table 8.0.0-beta.9 → 8.0.0-beta.90

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-Db_nPX-d.mjs +60783 -0
  35. package/fesm2022/praxisui-table-table-agentic-authoring-turn-flow-BZc3KmLG.mjs +8247 -0
  36. package/fesm2022/praxisui-table-table-ai.adapter-DBaPq8mg.mjs +3988 -0
  37. package/fesm2022/praxisui-table.mjs +1 -51540
  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} +594 -122
  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, ResourceSurfaceCatalogItem, 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 { 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;
@@ -866,17 +990,24 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
866
990
  private connectionStorage;
867
991
  private hostRef;
868
992
  private global;
869
- private resourceDiscovery;
993
+ private injector;
870
994
  private componentKeys;
871
995
  private loadingOrchestrator;
996
+ private globalActions;
872
997
  private loadingRenderer?;
873
998
  private route?;
874
999
  private logger?;
1000
+ private analyticsStatsApi?;
875
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;
876
1005
  private static readonly ROW_DISCOVERY_SUCCESS_CACHE_TTL_MS;
877
1006
  private static readonly ROW_DISCOVERY_ERROR_CACHE_TTL_MS;
878
1007
  private static readonly ROW_DISCOVERY_CACHE_LIMIT;
879
1008
  private static readonly ROW_DISCOVERY_MAX_CONCURRENT_REQUESTS;
1009
+ private _resourceDiscovery?;
1010
+ private _resourceSurfaceOpenAdapter?;
880
1011
  readonly paginatorSelectConfig: MatPaginatorSelectConfig;
881
1012
  private static readonly ROW_ANIMATION_PRESETS;
882
1013
  private static readonly ROW_ANIMATION_PRESET_ALIASES;
@@ -895,12 +1026,22 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
895
1026
  crudContext: any;
896
1027
  filterCriteria: Record<string, any>;
897
1028
  queryContext: PraxisDataQueryContextBridge | null;
1029
+ aiContext: TableAiContext | null;
1030
+ advancedFilterValue: Record<string, any>;
1031
+ advancedFilterRuntimeVisibleFields: string[];
1032
+ private advancedFilterAlwaysVisibleCacheKey;
1033
+ private advancedFilterAlwaysVisibleCache?;
1034
+ private advancedFilterMetadataOverridesCacheKey;
1035
+ private advancedFilterMetadataOverridesCacheSource?;
1036
+ private advancedFilterMetadataOverridesCache?;
898
1037
  rowClick: EventEmitter<any>;
1038
+ widgetEvent: EventEmitter<any>;
899
1039
  rowDoubleClick: EventEmitter<any>;
900
1040
  rowExpansionChange: EventEmitter<RowExpansionChangeEvent>;
901
1041
  rowAction: EventEmitter<any>;
902
1042
  toolbarAction: EventEmitter<any>;
903
1043
  bulkAction: EventEmitter<any>;
1044
+ exportAction: EventEmitter<any>;
904
1045
  columnReorder: EventEmitter<any>;
905
1046
  columnReorderAttempt: EventEmitter<any>;
906
1047
  beforeDelete: EventEmitter<any>;
@@ -910,6 +1051,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
910
1051
  afterBulkDelete: EventEmitter<any>;
911
1052
  bulkDeleteError: EventEmitter<any>;
912
1053
  schemaStatusChange: EventEmitter<any>;
1054
+ configChange: EventEmitter<_praxisui_core.TableConfigModern>;
913
1055
  metadataChange: EventEmitter<any>;
914
1056
  loadingStateChange: EventEmitter<LoadingState>;
915
1057
  collectionLinksChange: EventEmitter<RestApiLinks | null>;
@@ -938,6 +1080,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
938
1080
  readonly isExpansionDetailRow: (index: number, row: any) => boolean;
939
1081
  columnReorderStatusMessage: string;
940
1082
  columnReorderVisualStatusMessage: string;
1083
+ exportBusy: boolean;
1084
+ exportStatusMessage: string;
941
1085
  private columnReorderStatusTimer;
942
1086
  private columnReorderVisualStatusTimer;
943
1087
  private columnReorderUndoSubscription;
@@ -950,6 +1094,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
950
1094
  private lastResolvedDataMode;
951
1095
  private localFilterFieldMetadataCache;
952
1096
  private localFilterFieldMetadataCacheKey;
1097
+ private remoteDataLoadSequence;
1098
+ private analyticsLoadSequence;
953
1099
  private uncontrolledExpandedRowKeys;
954
1100
  private readonly expansionOpaqueRefCacheLimit;
955
1101
  private expansionOpaqueRefByRowKey;
@@ -977,8 +1123,10 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
977
1123
  private rowDiscoveryMarkForCheckScheduled;
978
1124
  private lastRowDiscoveryScopeKey;
979
1125
  private readonly i18n;
1126
+ private readonly collectionExport;
980
1127
  private readonly paginatorIntl;
981
1128
  private schemaFieldsSnapshot;
1129
+ private filterSchemaFieldsSnapshot;
982
1130
  private runtimeSchemaMeta;
983
1131
  schemaError: boolean;
984
1132
  dataError: boolean;
@@ -990,6 +1138,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
990
1138
  shouldShowToolbarTopPlacement(): boolean;
991
1139
  shouldShowToolbarBottomPlacement(): boolean;
992
1140
  shouldRenderFooterToolbar(): boolean;
1141
+ hasTopToolbarStack(): boolean;
993
1142
  shouldShowFooterToolbarMain(): boolean;
994
1143
  shouldShowFooterToolbarEndActions(): boolean;
995
1144
  getToolbarActionsPosition(): 'top' | 'bottom' | 'both';
@@ -1010,6 +1159,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1010
1159
  getColumnTextAlignStyle(column: ColumnDefinition): string | null;
1011
1160
  getColumnWidthStyle(column: ColumnDefinition): string | null;
1012
1161
  getColumnHeaderAttrStyle(column: ColumnDefinition): string | null;
1162
+ getColumnHeaderNgStyle(column: ColumnDefinition): Record<string, string> | undefined;
1013
1163
  getColumnCellAttrStyle(column: ColumnDefinition): string | null;
1014
1164
  getTableElevationClassName(): string;
1015
1165
  private normalizeTableElevationLevel;
@@ -1026,6 +1176,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1026
1176
  hasBottomPaginator(): boolean;
1027
1177
  hasExplicitResourcePath(): boolean;
1028
1178
  hasLocalDataInput(): boolean;
1179
+ hasAnalyticsProjectionInput(): boolean;
1029
1180
  getDataMode(): DataMode;
1030
1181
  isRemoteMode(): boolean;
1031
1182
  isLocalMode(): boolean;
@@ -1052,6 +1203,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1052
1203
  shouldRenderAdvancedFilter(): boolean;
1053
1204
  getAdvancedFilterResourcePath(): string;
1054
1205
  getAdvancedFilterPersistenceKey(): string;
1206
+ getAdvancedFilterAlwaysVisibleFields(): string[] | undefined;
1207
+ getAdvancedFilterAlwaysVisibleFieldMetadataOverrides(): Record<string, Record<string, any>>;
1055
1208
  getAdvancedFilterFieldMetadata(): FieldMetadata[] | null | undefined;
1056
1209
  private buildLocalFilterMetadata;
1057
1210
  private buildLocalFilterMetadataCacheKey;
@@ -1072,8 +1225,21 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1072
1225
  get hostColumnBordersClass(): boolean;
1073
1226
  trackByRow(index: number, item: any): any;
1074
1227
  getSchemaFieldsSnapshot(): SchemaFieldHint[];
1228
+ getFilterSchemaFieldsSnapshot(): FilterSchemaFieldHint[];
1229
+ getResourceCapabilityDigest(): ResourceCapabilityDigest | null;
1230
+ ensureFilterSchemaFieldsSnapshot(): Promise<void>;
1231
+ ensureAiAssistantRecordSurfaceContext(): Promise<void>;
1232
+ getAiAssistantRecordSurfacesContext(): RecordRelatedSurfaceContextPack | null;
1233
+ getAiAssistantSelectedRowsContext(): Record<string, any> | null;
1234
+ private ensureAiAssistantRowCapabilitySnapshot;
1235
+ private buildCapabilitySnapshotFromSurfaceCatalog;
1236
+ private buildAiAssistantResourceSurfaceContexts;
1237
+ private getAiAssistantRecordSurfaceProbeRows;
1238
+ private buildRecordRelatedSurfaceContextFromResourceSurface;
1239
+ private humanizeResourceSurfaceLabel;
1075
1240
  aiAdapter: any;
1076
1241
  private aiAdapterLoadStarted;
1242
+ private aiAssistantOpenAfterAdapterLoad;
1077
1243
  aiAssistantOpen: boolean;
1078
1244
  aiAssistantPrompt: string;
1079
1245
  aiAssistantViewState: PraxisAssistantTurnViewState | null;
@@ -1082,7 +1248,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1082
1248
  private aiAssistantController;
1083
1249
  private aiAssistantStateSubscription;
1084
1250
  private readonly aiApi;
1251
+ private readonly assistantSessions;
1085
1252
  private readonly aiTurnOrchestrator;
1253
+ private readonly aiAssistantSessionEffect;
1086
1254
  private computedContextCache;
1087
1255
  private computedFieldNames;
1088
1256
  private readonly jsonLogic;
@@ -1120,6 +1288,10 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1120
1288
  private recomputeLocalView;
1121
1289
  private resolveLocalSortField;
1122
1290
  private setSchemaFieldsSnapshot;
1291
+ private setFilterSchemaFieldsSnapshot;
1292
+ private inferFilterSchemaSourceFields;
1293
+ private resolveFilterSchemaRelatedColumns;
1294
+ private normalizeFieldAlias;
1123
1295
  private normalizeSchemaOptions;
1124
1296
  private normalizeEnumValues;
1125
1297
  private normalizeSchemaKey;
@@ -1129,21 +1301,60 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1129
1301
  private tableConfigKey;
1130
1302
  private filterConfigKey;
1131
1303
  private ensureConfigDefaults;
1304
+ private mergePersistedTableConfigWithInput;
1305
+ private reconcileHostDeclaredTableContract;
1306
+ private reconcileHostDeclaredColumns;
1307
+ private reconcileHostDeclaredRowActions;
1308
+ private reconcileHostDeclaredExport;
1309
+ private normalizePersistedExportFormats;
1310
+ private normalizePersistedRowActionIds;
1311
+ private normalizePersistedColumnIds;
1312
+ private clonePlainObject;
1132
1313
  private setShowToolbar;
1133
1314
  private shouldExposeToolbar;
1134
- 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);
1315
+ 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);
1316
+ private get resourceDiscovery();
1317
+ private get resourceSurfaceOpenAdapter();
1135
1318
  private ensureAiAdapterLoaded;
1136
1319
  openAiAssistant(): void;
1320
+ aiAssistantTriggerTestId(position: string): string;
1321
+ hasMinimizedAiAssistantSession(): boolean;
1322
+ aiAssistantTriggerIcon(): string;
1323
+ aiAssistantTriggerBadge(): string;
1324
+ aiAssistantTriggerLabel(): string;
1325
+ aiAssistantTriggerTooltip(): string;
1326
+ openAiAssistantFromSession(session: PraxisAssistantSessionSnapshot): void;
1137
1327
  closeAiAssistant(): void;
1138
1328
  onAiAssistantPromptChange(prompt: string): void;
1139
1329
  onAiAssistantSubmit(prompt: string): void;
1140
1330
  onAiAssistantApply(): void;
1331
+ private shouldMinimizeAiAssistantAfterApply;
1332
+ private isMaterializedRowActionPatch;
1333
+ private asPlainRecord;
1334
+ onAiAssistantRetry(): void;
1335
+ onAiAssistantCancel(): void;
1141
1336
  onAiAssistantQuickReply(reply: PraxisAssistantShellQuickReply): void;
1337
+ getAiAssistantRecommendedIntents(): readonly PraxisAssistantRecommendedIntent[];
1338
+ onAiAssistantRecommendedIntent(intent: PraxisAssistantRecommendedIntent): void;
1339
+ private getAiAssistantRecommendationResponseContract;
1142
1340
  onAiAssistantEditMessage(message: PraxisAssistantShellMessage): void;
1143
1341
  onAiAssistantResendMessage(message: PraxisAssistantShellMessage): void;
1144
1342
  onAiAssistantLayoutChange(layout: PraxisAssistantShellLayout): void;
1145
1343
  private initializeAiAssistantController;
1146
1344
  private buildAiAssistantContextItems;
1345
+ private interpolateAiAssistantContextValue;
1346
+ private aiAssistantSelectedRecordsValue;
1347
+ private buildAiAssistantContextSnapshot;
1348
+ private syncAiAssistantSession;
1349
+ private assistantContextRuntimeLocale;
1350
+ private refreshAiAssistantContextAfterSelectionChange;
1351
+ private hasAiAssistantSessionState;
1352
+ private resolveAiAssistantSessionId;
1353
+ private resolveAiAssistantOwnerId;
1354
+ private resolveAiAssistantRouteKey;
1355
+ private resolveAiAssistantSummary;
1356
+ private resolveAiAssistantBadge;
1357
+ private resolveAiAssistantIcon;
1147
1358
  private emitLoadingState;
1148
1359
  private hasResolvedRemoteDataLoad;
1149
1360
  private isTableDataLoading;
@@ -1169,6 +1380,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1169
1380
  onPageChange(event: PageEvent): void;
1170
1381
  onSortChange(event: Sort): void;
1171
1382
  onRowClicked(row: any, index: number, event?: MouseEvent): void;
1383
+ requestRecordSurfaceOpen(surface: Record<string, unknown>): boolean;
1384
+ private resolveResourceRecordSurfaceContext;
1385
+ private openResourceRecordSurface;
1172
1386
  isRowExpansionRuntimeEnabled(): boolean;
1173
1387
  isExpansionIconTriggerEnabled(): boolean;
1174
1388
  isRowExpandable(row: any, index?: number): boolean;
@@ -1361,22 +1575,67 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1361
1575
  private emitRowActionEvent;
1362
1576
  private showConfirmDialog;
1363
1577
  private executeDeleteAction;
1578
+ private dispatchRowAction;
1364
1579
  private cloneForEmit;
1365
1580
  private interpolateActionMessageTemplate;
1366
1581
  private buildActionFeedbackContext;
1367
1582
  private resolveActionFeedbackMessage;
1368
1583
  private showActionFeedbackMessage;
1369
1584
  private emitEventWithActionFeedback;
1585
+ private executeConfiguredGlobalAction;
1586
+ private resolveConfiguredGlobalActionRef;
1587
+ private resolveActionGlobalActionRef;
1588
+ private resolveGlobalActionPayload;
1589
+ private buildGlobalActionTemplateContext;
1590
+ private resolveGlobalActionTemplateValue;
1591
+ private isDeferredTemplateExpressionKey;
1592
+ private interpolateGlobalActionTemplate;
1593
+ private shouldEmitLocalForGlobalAction;
1370
1594
  private resolveBulkValidationMessage;
1371
1595
  private hasValidBulkSelectionCount;
1372
1596
  private showBulkConfirmDialog;
1373
1597
  onToolbarAction(event: {
1374
1598
  action: string;
1375
1599
  actionConfig?: any;
1376
- }): void;
1600
+ }): Promise<void>;
1601
+ private resolveBulkExportFormat;
1602
+ private isBulkExportActionKey;
1603
+ private normalizeExportFormat;
1604
+ private isExportFormatEnabled;
1605
+ private getFirstEnabledExportFormat;
1606
+ onExportAction(event: {
1607
+ format: string;
1608
+ scope?: PraxisExportScope;
1609
+ }): Promise<void>;
1610
+ canRunExportAction(format: unknown): boolean;
1611
+ private shouldBlockSelectedExportWithoutSelection;
1612
+ private buildTableExportRequest;
1613
+ private resolveEffectiveExportScope;
1614
+ private resolveTableExportLoadedItems;
1615
+ private computeLocalExportRows;
1616
+ private buildTableExportFields;
1617
+ private buildTableExportFormatOptions;
1618
+ private buildTableExportLocalization;
1619
+ private resolveColumnExportFormat;
1620
+ private buildColumnExportPresentation;
1621
+ private resolveColumnExportCurrency;
1622
+ private downloadExportResult;
1623
+ private triggerExportDownload;
1624
+ private resolveExportFileName;
1625
+ private getExportFileExtension;
1626
+ private getExportMimeType;
1627
+ private showExportFeedback;
1377
1628
  onAdvancedFilterSubmit(criteria: Record<string, any>): void;
1378
1629
  onAdvancedFilterChange(criteria: Record<string, any>): void;
1379
1630
  onAdvancedFilterClear(): void;
1631
+ private applyAdvancedFilterCriteria;
1632
+ private setAdvancedFilterCriteria;
1633
+ private syncAdvancedFilterValueFromCriteria;
1634
+ private deriveRuntimeVisibleAdvancedFilterFields;
1635
+ private isEmptyAdvancedFilterCriterionValue;
1636
+ private mergeAdvancedFilterFieldIds;
1637
+ private getRuntimePromotedAdvancedFilterFields;
1638
+ private toPlainRecord;
1380
1639
  private saveConfigWithAck;
1381
1640
  private clearConfigWithAck;
1382
1641
  private persistHorizontalScrollInput;
@@ -1440,7 +1699,18 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1440
1699
  */
1441
1700
  private verifyServerSchemaVersion;
1442
1701
  private loadSchema;
1702
+ private loadFilterSchemaSnapshot;
1443
1703
  private convertFieldToColumn;
1704
+ private applySchemaFieldPresentation;
1705
+ private resolveSchemaCurrencyFormat;
1706
+ private resolveSchemaBooleanFormat;
1707
+ private resolveSchemaValueMapping;
1708
+ private resolveSchemaOptionsValueMapping;
1709
+ private normalizePresentationToken;
1710
+ private firstNonEmptyString;
1711
+ private firstFiniteNumber;
1712
+ private humanizeSchemaEnumValue;
1713
+ private capitalizeSchemaEnumPart;
1444
1714
  /**
1445
1715
  * Apply automatic renderer hints based on schema field metadata.
1446
1716
  * Runs only on initial bootstrap (when columns are derived from schema).
@@ -1463,11 +1733,14 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1463
1733
  private buildRowDiscoveryOptions;
1464
1734
  private getRowLinks;
1465
1735
  private resolveRowDiscoveryHref;
1736
+ private resolveRowSurfaceDiscoveryHref;
1466
1737
  private prefetchRowDiscovery;
1467
1738
  private ensureRowDiscovery;
1468
1739
  private ensureRowCapabilitySnapshot;
1469
1740
  private ensureRowActionCatalog;
1470
1741
  private getCachedRowCapabilitySnapshot;
1742
+ private getAiAssistantRowDiscoveryLinks;
1743
+ private mergeRowCapabilitySnapshots;
1471
1744
  private hasResolvedRowActionCatalog;
1472
1745
  isRowDiscoveryPending(row: any): boolean;
1473
1746
  private getCachedRowActionCatalog;
@@ -1508,6 +1781,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1508
1781
  private pruneRowDiscoveryCaches;
1509
1782
  private pruneRowDiscoveryCache;
1510
1783
  private fetchData;
1784
+ private resolveAnalyticsProjection;
1785
+ private fetchAnalyticsProjectionData;
1511
1786
  private getEffectiveFilterCriteria;
1512
1787
  retryData(): void;
1513
1788
  reloadSchema(): void;
@@ -1520,9 +1795,35 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1520
1795
  * 3. format (data formatting like dates, numbers, currency)
1521
1796
  */
1522
1797
  getCellValue(rowData: any, column: ColumnDefinition): any;
1798
+ private applyImplicitRuntimeCellPresentation;
1799
+ private shouldHumanizeRuntimeEnumCell;
1800
+ private resolveCellFormattingType;
1801
+ private normalizeReadonlyEntityLookupCellValue;
1802
+ private toEntityLookupDisplayToken;
1803
+ private isEntityLookupDisplayCandidate;
1804
+ private toEntityLookupDisplayPrimitive;
1523
1805
  private resolveImplicitFormat;
1524
1806
  getCellClasses(rowData: any, column: ColumnDefinition): string[] | undefined;
1525
1807
  getCellNgStyle(rowData: any, column: ColumnDefinition): Record<string, string> | undefined;
1808
+ private normalizeInlineStyleRecord;
1809
+ private normalizeConditionalStyleRules;
1810
+ private normalizeConditionalStyleRecord;
1811
+ getCellTooltip(rowData: any, column: ColumnDefinition): string | null;
1812
+ getCellTooltipPosition(rowData: any, column: ColumnDefinition): 'above' | 'below' | 'left' | 'right' | 'before' | 'after';
1813
+ private resolveConditionalStyleTooltipText;
1814
+ private resolveRendererTooltipText;
1815
+ private normalizeTooltipPosition;
1816
+ private normalizeConditionalStyleEffects;
1817
+ private hasConditionalStyleEffectPayload;
1818
+ private resolveConditionalStyleClasses;
1819
+ private resolveConditionalStyleObject;
1820
+ private compileConditionalStyleEffect;
1821
+ private normalizeConditionalRendererRules;
1822
+ private normalizeObjectRecord;
1823
+ private buildColumnRendererOverrideFromEffects;
1824
+ private buildColumnRendererFromEffect;
1825
+ private resolveRuleAnimationFromEffects;
1826
+ private resolveRowTooltipFromEffects;
1526
1827
  private resetComputedContextCache;
1527
1828
  private ensureEffectiveCellRenderCache;
1528
1829
  private ensureCellAnimationPreviousValuesByRowId;
@@ -1534,6 +1835,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1534
1835
  private buildComputedSignature;
1535
1836
  private stringifyDependencyValue;
1536
1837
  private buildComputedValueMap;
1838
+ private collectComputedColumns;
1839
+ private evaluateCanonicalComputedColumns;
1840
+ private collectComputedExpressionDependencies;
1841
+ private collectJsonLogicVarDependencies;
1842
+ private resolveJsonLogicVarPath;
1537
1843
  private buildEvaluationContext;
1538
1844
  private getJsonLogicEvaluationOptions;
1539
1845
  private resolveJsonLogicUserTimeZone;
@@ -1672,6 +1978,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1672
1978
  private buildEffectiveCellRenderCacheKey;
1673
1979
  private getEffectiveCellRenderResult;
1674
1980
  private getEffectiveRenderer;
1981
+ private resolveEffectiveRendererTooltip;
1675
1982
  getLinkHref(row: any, column: ColumnDefinition): string | null;
1676
1983
  getLinkText(row: any, column: ColumnDefinition): string;
1677
1984
  getLinkRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
@@ -1693,6 +2000,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1693
2000
  private buildRendererActionRuntimeOptions;
1694
2001
  onButtonClick(row: any, column: ColumnDefinition, event: Event): void;
1695
2002
  getChipText(row: any, column: ColumnDefinition): string | null;
2003
+ private getRendererTextFieldValue;
1696
2004
  getChipRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
1697
2005
  getChipIcon(row: any, column: ColumnDefinition): string | null;
1698
2006
  getChipClasses(row: any, column: ColumnDefinition): string[];
@@ -1715,6 +2023,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1715
2023
  private deriveAvatarInitials;
1716
2024
  getAvatarInitials(row: any, column: ColumnDefinition): string;
1717
2025
  getAvatarRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
2026
+ private getAvatarRichContentStyle;
1718
2027
  getAvatarShape(row: any, column: ColumnDefinition): 'square' | 'rounded' | 'circle' | undefined;
1719
2028
  getAvatarStyle(row: any, column: ColumnDefinition): Record<string, string> | null;
1720
2029
  getToggleState(row: any, column: ColumnDefinition): boolean;
@@ -1770,6 +2079,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1770
2079
  private reconcileSelectionAfterDataChange;
1771
2080
  private getComparableRowIdentity;
1772
2081
  getIdField(): string;
2082
+ private resolveConfigMetaIdField;
1773
2083
  private syncRuntimeSchemaMetaFromConfig;
1774
2084
  private getEffectiveMetadataSnapshot;
1775
2085
  getActionId(action: any): string;
@@ -1788,6 +2098,20 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1788
2098
  toggleRow(row: any): void;
1789
2099
  private selectRowFromUserInteraction;
1790
2100
  private emitSelectionChange;
2101
+ private getSelectedRowsSnapshot;
2102
+ private getAiAssistantSelectionFields;
2103
+ private buildAiAssistantSelectionFilterCandidates;
2104
+ private inferAiAssistantFilterCriterionKind;
2105
+ private buildAiAssistantRangeFilterCandidate;
2106
+ private buildAiAssistantSetFilterCandidate;
2107
+ private resolveAiAssistantSetFilterDisplayValue;
2108
+ private aiAssistantSetFilterDisplayFieldCandidates;
2109
+ private resolveAiAssistantFilterSourceFields;
2110
+ private normalizeAiAssistantNumericRangeValue;
2111
+ private normalizeAiAssistantDateRangeValue;
2112
+ private sanitizeAiAssistantSelectedRow;
2113
+ private safeStringifyAiAssistantValue;
2114
+ private isSensitiveAiAssistantField;
1791
2115
  private getRowActionsConfig;
1792
2116
  getActionsHeaderAlign(): string;
1793
2117
  getActionsHeaderTooltip(): string | undefined;
@@ -1819,6 +2143,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1819
2143
  private findItemWorkflowAction;
1820
2144
  private findItemSurface;
1821
2145
  private isRowSurfaceAction;
2146
+ private isResourceSurfaceCatalogItem;
2147
+ private toRecordSurfaceActionConfig;
2148
+ private resolveConfiguredSurfaceOpenAction;
2149
+ private recordSurfaceActionAliases;
2150
+ private normalizeSurfaceActionAlias;
1822
2151
  private isWritableRowSurface;
1823
2152
  private isReadableRowSurface;
1824
2153
  private getDiscoveredSurfaceIcon;
@@ -1838,8 +2167,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1838
2167
  getRowMenuIcon(): string;
1839
2168
  private scheduleRowDiscoveryMarkForCheck;
1840
2169
  ngOnDestroy(): void;
1841
- 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; }]>;
1842
- static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTable, "praxis-table", never, { "config": { "alias": "config"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; "data": { "alias": "data"; "required": false; }; "tableId": { "alias": "tableId"; "required": true; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "autoDelete": { "alias": "autoDelete"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "crudContext": { "alias": "crudContext"; "required": false; }; "filterCriteria": { "alias": "filterCriteria"; "required": false; }; "queryContext": { "alias": "queryContext"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "dense": { "alias": "dense"; "required": false; }; }, { "rowClick": "rowClick"; "rowDoubleClick": "rowDoubleClick"; "rowExpansionChange": "rowExpansionChange"; "rowAction": "rowAction"; "toolbarAction": "toolbarAction"; "bulkAction": "bulkAction"; "columnReorder": "columnReorder"; "columnReorderAttempt": "columnReorderAttempt"; "beforeDelete": "beforeDelete"; "afterDelete": "afterDelete"; "deleteError": "deleteError"; "beforeBulkDelete": "beforeBulkDelete"; "afterBulkDelete": "afterBulkDelete"; "bulkDeleteError": "bulkDeleteError"; "schemaStatusChange": "schemaStatusChange"; "metadataChange": "metadataChange"; "loadingStateChange": "loadingStateChange"; "collectionLinksChange": "collectionLinksChange"; "selectionChange": "selectionChange"; }, ["toolbar", "projectedFilter"], ["[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]"], true, never>;
2170
+ 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; }]>;
2171
+ 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; }; "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>;
1843
2172
  static ngAcceptInputType_enableCustomization: unknown;
1844
2173
  }
1845
2174
 
@@ -1852,7 +2181,6 @@ interface EditorDocument<TConfig, TBindings = unknown> {
1852
2181
  type TableHorizontalScroll = 'auto' | 'wrap' | 'none';
1853
2182
  interface TableBindings {
1854
2183
  resourcePath?: string | null;
1855
- idField?: string;
1856
2184
  horizontalScroll?: TableHorizontalScroll;
1857
2185
  }
1858
2186
  interface TableAuthoringDocument extends EditorDocument<TableConfig, TableBindings> {
@@ -1909,7 +2237,6 @@ interface TableApplyPlan {
1909
2237
  };
1910
2238
  diff?: {
1911
2239
  resourcePathChanged?: boolean;
1912
- idFieldChanged?: boolean;
1913
2240
  horizontalScrollChanged?: boolean;
1914
2241
  requiresDataRefresh?: boolean;
1915
2242
  };
@@ -2382,6 +2709,8 @@ interface ToolbarAction {
2382
2709
  /** Material button appearance: filled (flat), outlined (stroked), elevated (raised), text, tonal */
2383
2710
  appearance?: 'filled' | 'outlined' | 'elevated' | 'text' | 'tonal';
2384
2711
  action: string;
2712
+ globalAction?: GlobalActionRef;
2713
+ effects?: PraxisRuntimeGlobalActionEffect[];
2385
2714
  position: 'start' | 'end';
2386
2715
  order?: number;
2387
2716
  disabled?: boolean;
@@ -2389,7 +2718,7 @@ interface ToolbarAction {
2389
2718
  shortcut?: string;
2390
2719
  shortcutScope?: 'toolbar' | 'global';
2391
2720
  tooltip?: string;
2392
- visibleWhen?: string;
2721
+ visibleWhen?: JsonLogicExpression | null;
2393
2722
  children?: ToolbarAction[];
2394
2723
  }
2395
2724
  interface RowAction {
@@ -2397,11 +2726,15 @@ interface RowAction {
2397
2726
  label: string;
2398
2727
  icon: string;
2399
2728
  action: string;
2729
+ globalAction?: GlobalActionRef;
2730
+ effects?: PraxisRuntimeGlobalActionEffect[];
2400
2731
  color?: 'primary' | 'accent' | 'warn';
2401
2732
  tooltip?: string;
2402
2733
  requiresConfirmation?: boolean;
2403
2734
  autoDelete?: boolean;
2404
2735
  separator?: boolean;
2736
+ visibleWhen?: JsonLogicExpression | null;
2737
+ disabledWhen?: JsonLogicExpression | null;
2405
2738
  conditional?: string;
2406
2739
  }
2407
2740
  interface BulkAction {
@@ -2409,6 +2742,8 @@ interface BulkAction {
2409
2742
  label: string;
2410
2743
  icon: string;
2411
2744
  action: string;
2745
+ globalAction?: GlobalActionRef;
2746
+ effects?: PraxisRuntimeGlobalActionEffect[];
2412
2747
  color?: 'primary' | 'accent' | 'warn';
2413
2748
  tooltip?: string;
2414
2749
  requiresConfirmation?: boolean;
@@ -2422,6 +2757,25 @@ interface ToolbarActionsChange {
2422
2757
  value: any;
2423
2758
  fullConfig: TableConfig;
2424
2759
  }
2760
+ type GlobalActionCatalogOption = GlobalActionCatalogEntry & {
2761
+ param?: {
2762
+ required?: boolean;
2763
+ label?: string;
2764
+ placeholder?: string;
2765
+ hint?: string;
2766
+ };
2767
+ };
2768
+ type EditableTableAction = {
2769
+ id?: string;
2770
+ label?: string;
2771
+ action?: string;
2772
+ globalAction?: GlobalActionRef;
2773
+ effects?: PraxisRuntimeGlobalActionEffect[];
2774
+ position?: string;
2775
+ appearance?: string;
2776
+ visibleWhen?: JsonLogicExpression | null;
2777
+ disabledWhen?: JsonLogicExpression | null;
2778
+ };
2425
2779
  type ToolbarShortcutScope = 'toolbar' | 'global';
2426
2780
  interface InternalActionSpec {
2427
2781
  id: string;
@@ -2442,14 +2796,14 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
2442
2796
  editingToolbarActionIndex: number | null;
2443
2797
  editingRowActionIndex: number | null;
2444
2798
  editingBulkActionIndex: number | null;
2445
- readonly globalActionCatalog: GlobalActionSpec[];
2799
+ private readonly i18n;
2800
+ readonly globalActionCatalog: GlobalActionCatalogOption[];
2446
2801
  get internalActionCatalog(): InternalActionSpec[];
2447
2802
  readonly customActionValue = "__custom__";
2448
2803
  readonly validShortcutScopes: ToolbarShortcutScope[];
2449
2804
  private readonly actionFieldDrafts;
2450
2805
  private readonly actionFieldErrors;
2451
2806
  private readonly warnedInvalidShortcutScopes;
2452
- private readonly i18n;
2453
2807
  private destroy$;
2454
2808
  constructor(fb: FormBuilder, iconPicker: IconPickerService);
2455
2809
  tx(key: string, fallback: string): string;
@@ -2478,56 +2832,37 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
2478
2832
  private removeAddToolbarAction;
2479
2833
  private syncAddFormFromActions;
2480
2834
  private updateConfig;
2481
- getActionSelectValue(value?: string): string;
2482
- getActionParam(value?: string): string;
2483
- getActionCustomValue(value?: string): string;
2835
+ getActionSelectValue(action?: EditableTableAction): string;
2836
+ getActionParam(action?: EditableTableAction): string;
2837
+ isRequiredGlobalActionParamMissing(action: EditableTableAction, spec: GlobalActionCatalogOption): boolean;
2838
+ getActionCustomValue(action?: EditableTableAction): string;
2484
2839
  isInternalAction(value?: string): boolean;
2485
- getActionSpecById(id: string): GlobalActionSpec | undefined;
2486
- onActionSelectChange(action: {
2487
- action?: string;
2488
- }, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2489
- onActionParamChange(action: {
2490
- action?: string;
2491
- }, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2492
- onActionCustomChange(action: {
2493
- action?: string;
2494
- }, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2840
+ getActionSpecById(id: string): GlobalActionCatalogOption | undefined;
2841
+ onActionSelectChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2842
+ onActionParamChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2843
+ onActionCustomChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2844
+ getCanonicalGlobalActionRef(action?: EditableTableAction): GlobalActionRef | undefined;
2845
+ private setCanonicalGlobalActionRef;
2495
2846
  private touchActionList;
2496
- private parseActionValue;
2847
+ getActionJsonLogicText(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen'): string;
2848
+ onActionJsonLogicChange(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen', value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2849
+ getActionConditionError(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen'): string;
2497
2850
  isGlobalActionId(id?: string): boolean;
2498
- getGlobalActionSchema(action: {
2499
- action?: string;
2500
- }): _praxisui_core.GlobalActionUiSchema | undefined;
2501
- getSurfaceOpenActionPayload(action: {
2502
- action?: string;
2503
- }): SurfaceOpenPayload;
2504
- onSurfaceOpenActionPayloadChange(action: {
2505
- action?: string;
2506
- }, payload: SurfaceOpenPayload, kind: 'toolbar' | 'row' | 'bulk'): void;
2507
- shouldShowGlobalActionField(action: {
2508
- action?: string;
2509
- }, field: GlobalActionField): boolean;
2510
- hasActionFieldError(action: {
2511
- action?: string;
2512
- }, key: string): boolean;
2513
- getActionFieldError(action: {
2514
- action?: string;
2515
- }, key: string): string;
2516
- getGlobalActionFieldValue(action: {
2517
- action?: string;
2518
- }, field: GlobalActionField): any;
2519
- onGlobalActionFieldChange(action: {
2520
- action?: string;
2521
- }, field: GlobalActionField, value: any, kind: 'toolbar' | 'row' | 'bulk'): void;
2522
- private getActionParamInfo;
2523
- private parseMethodAndUrl;
2851
+ getGlobalActionSchema(action: EditableTableAction): _praxisui_core.GlobalActionUiSchema | undefined;
2852
+ getSurfaceOpenActionPayload(action: EditableTableAction): SurfaceOpenPayload;
2853
+ onSurfaceOpenActionPayloadChange(action: EditableTableAction, payload: SurfaceOpenPayload, kind: 'toolbar' | 'row' | 'bulk'): void;
2854
+ shouldShowGlobalActionField(action: EditableTableAction, field: GlobalActionField): boolean;
2855
+ isGlobalActionFieldRequired(action: EditableTableAction, field: GlobalActionField): boolean;
2856
+ isGlobalActionFieldMissing(action: EditableTableAction, field: GlobalActionField): boolean;
2857
+ hasActionFieldError(action: EditableTableAction, key: string): boolean;
2858
+ getActionFieldError(action: EditableTableAction, key: string): string;
2859
+ getGlobalActionFieldValue(action: EditableTableAction, field: GlobalActionField): any;
2860
+ onGlobalActionFieldChange(action: EditableTableAction, field: GlobalActionField, value: any, kind: 'toolbar' | 'row' | 'bulk'): void;
2524
2861
  private stringifyJson;
2525
2862
  private normalizeSurfaceOpenPayload;
2526
2863
  private setActionFieldError;
2527
2864
  private clearActionFieldError;
2528
2865
  private collectGlobalActionFieldValues;
2529
- private serializeGlobalActionParam;
2530
- private buildPrimaryParam;
2531
2866
  private buildGlobalActionPayload;
2532
2867
  getToolbarActionShortcutScope(action: ToolbarAction): ToolbarShortcutScope;
2533
2868
  onToolbarActionShortcutScopeChange(action: ToolbarAction, value: ToolbarShortcutScope | string): void;
@@ -2719,6 +3054,7 @@ declare class FilterSettingsComponent implements OnChanges, AfterViewInit, OnDes
2719
3054
  }[];
2720
3055
  getContrastWarning(): string | null;
2721
3056
  applyPreset(key: string): void;
3057
+ isPresetActive(key: string): boolean;
2722
3058
  hasBooleanFieldMetadata(): boolean;
2723
3059
  getFieldLabel(name: string): string;
2724
3060
  onAlwaysVisibleFieldSearchChange(value: string): void;
@@ -2882,12 +3218,10 @@ declare class RuleCompilerService {
2882
3218
  static ɵprov: i0.ɵɵInjectableDeclaration<RuleCompilerService>;
2883
3219
  }
2884
3220
 
2885
- type RuleItem = {
2886
- condition: JsonLogicExpression;
3221
+ type RuleItem = Omit<PraxisRuntimeConditionalEffectRule<RuleEffectDefinition>, 'effects'> & {
2887
3222
  cssClass?: string;
2888
3223
  style?: Record<string, string>;
2889
- description?: string;
2890
- effects?: _praxisui_table_rule_builder.RuleEffectDefinition;
3224
+ effects?: RuleEffectDefinition[];
2891
3225
  enabled?: boolean;
2892
3226
  };
2893
3227
  declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy {
@@ -2957,6 +3291,7 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
2957
3291
  onColumnSelect(field: string): void;
2958
3292
  private initFromConfig;
2959
3293
  private loadColumnRules;
3294
+ private normalizePersistedRules;
2960
3295
  rebuildCondition(): void;
2961
3296
  onDraftChange(): void;
2962
3297
  applyTextPreset(preset: string): void;
@@ -2983,6 +3318,8 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
2983
3318
  onExportRules(): void;
2984
3319
  onImportRules(): void;
2985
3320
  private sanitizeRule;
3321
+ private normalizeRuleEffects;
3322
+ getPrimaryEffect(r: RuleItem | null | undefined): RuleEffectDefinition | undefined;
2986
3323
  getAnimationLabel(r: RuleItem): string | null;
2987
3324
  private normalizeRendererAnimation;
2988
3325
  private buildRendererOverrideFromRule;
@@ -3089,6 +3426,8 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3089
3426
  private cdr;
3090
3427
  private configService;
3091
3428
  private readonly i18n;
3429
+ private readonly globalActionCatalogSource;
3430
+ private readonly globalActionCatalog;
3092
3431
  filterSettingsEditor?: FilterSettingsComponent;
3093
3432
  behaviorEditor?: BehaviorConfigEditorComponent;
3094
3433
  rulesEditor?: TableRulesEditorComponent;
@@ -3151,6 +3490,7 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3151
3490
  private hasLocalDataInput;
3152
3491
  private filterDtoLoadSeq;
3153
3492
  private lastKnownFilterSettings;
3493
+ private globalActionValidationIssues;
3154
3494
  private readonly panelData;
3155
3495
  private readonly crudService;
3156
3496
  private readonly panelRef;
@@ -3177,6 +3517,9 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3177
3517
  onRulesConfigChange(newCfg: TableConfig): void;
3178
3518
  private updateColumnMetas;
3179
3519
  private updateCanSaveState;
3520
+ private collectGlobalActionValidationIssues;
3521
+ private findGlobalActionCatalogEntry;
3522
+ private buildGlobalActionCatalog;
3180
3523
  private subscribeCrudEditorChanges;
3181
3524
  private showSuccess;
3182
3525
  private showError;
@@ -3185,6 +3528,7 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3185
3528
  * Normaliza uma configuração de tabela para comparação consistente
3186
3529
  * Remove propriedades undefined, ordena arrays e objetos de forma consistente
3187
3530
  */
3531
+ private withCanonicalIdField;
3188
3532
  private normalizeTableConfig;
3189
3533
  /**
3190
3534
  * Realiza comparação profunda de objetos, ignorando ordem de propriedades
@@ -3247,6 +3591,107 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3247
3591
  static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableConfigEditor, "praxis-table-config-editor", never, {}, {}, never, never, true, never>;
3248
3592
  }
3249
3593
 
3594
+ interface PraxisTableWidgetEditorInputs {
3595
+ config?: TableConfig | null;
3596
+ resourcePath?: string | null;
3597
+ horizontalScroll?: 'auto' | 'wrap' | 'none';
3598
+ tableId?: string;
3599
+ componentInstanceId?: string;
3600
+ [key: string]: unknown;
3601
+ }
3602
+ interface PraxisTableWidgetEditorValue {
3603
+ inputs: PraxisTableWidgetEditorInputs;
3604
+ }
3605
+ declare class PraxisTableWidgetConfigEditor implements SettingsValueProvider$1, AfterViewInit, OnDestroy {
3606
+ inputs: PraxisTableWidgetEditorInputs | null;
3607
+ widgetKey?: string;
3608
+ tableEditor?: PraxisTableConfigEditor;
3609
+ readonly isDirty$: BehaviorSubject<boolean>;
3610
+ readonly isValid$: BehaviorSubject<boolean>;
3611
+ readonly isBusy$: BehaviorSubject<boolean>;
3612
+ private readonly subscription;
3613
+ ngAfterViewInit(): void;
3614
+ ngOnDestroy(): void;
3615
+ getSettingsValue(): PraxisTableWidgetEditorValue;
3616
+ onSave(): PraxisTableWidgetEditorValue;
3617
+ reset(): void;
3618
+ private initializeChildEditor;
3619
+ private buildValue;
3620
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableWidgetConfigEditor, never>;
3621
+ 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>;
3622
+ }
3623
+
3624
+ interface PraxisFilterWidgetEditorInputs {
3625
+ resourcePath?: string | null;
3626
+ fieldMetadata?: FieldMetadata[] | null;
3627
+ filterId?: string;
3628
+ formId?: string;
3629
+ componentInstanceId?: string;
3630
+ alwaysVisibleFields?: string[];
3631
+ alwaysVisibleFieldMetadataOverrides?: Record<string, Record<string, unknown>>;
3632
+ selectedFieldIds?: string[];
3633
+ allowSaveTags?: boolean;
3634
+ changeDebounceMs?: number;
3635
+ placeBooleansInActions?: boolean;
3636
+ showToggleLabels?: boolean;
3637
+ alwaysMinWidth?: number;
3638
+ alwaysColsMd?: number;
3639
+ alwaysColsLg?: number;
3640
+ confirmTagDelete?: boolean;
3641
+ tagColor?: 'primary' | 'accent' | 'warn' | 'basic';
3642
+ tagVariant?: 'filled' | 'outlined';
3643
+ tagButtonColor?: 'primary' | 'accent' | 'warn' | 'basic';
3644
+ actionsButtonColor?: 'primary' | 'accent' | 'warn' | 'basic';
3645
+ actionsVariant?: 'standard' | 'outlined';
3646
+ useInlineSearchableSelectVariant?: boolean;
3647
+ useInlineRangeVariant?: boolean;
3648
+ useInlineDateVariant?: boolean;
3649
+ useInlineDateRangeVariant?: boolean;
3650
+ useInlineTimeVariant?: boolean;
3651
+ useInlineTimeRangeVariant?: boolean;
3652
+ useInlineTreeSelectVariant?: boolean;
3653
+ overlayVariant?: 'card' | 'frosted';
3654
+ overlayBackdrop?: boolean;
3655
+ advancedOpenMode?: 'modal' | 'drawer';
3656
+ advancedClearButtonsEnabled?: boolean;
3657
+ persistenceKey?: string;
3658
+ showFilterSettings?: boolean;
3659
+ enableCustomization?: boolean;
3660
+ [key: string]: unknown;
3661
+ }
3662
+ interface PraxisFilterWidgetEditorValue {
3663
+ inputs: PraxisFilterWidgetEditorInputs;
3664
+ }
3665
+ declare class PraxisFilterWidgetConfigEditor implements SettingsValueProvider$1, OnDestroy {
3666
+ widgetKey?: string;
3667
+ set inputs(value: PraxisFilterWidgetEditorInputs | null);
3668
+ get inputs(): PraxisFilterWidgetEditorInputs | null;
3669
+ set filterSettings(component: FilterSettingsComponent | undefined);
3670
+ metadata: FieldMetadata[];
3671
+ settings: FilterConfig;
3672
+ configKey?: string;
3673
+ readonly isDirty$: BehaviorSubject<boolean>;
3674
+ readonly isValid$: BehaviorSubject<boolean>;
3675
+ readonly isBusy$: BehaviorSubject<boolean>;
3676
+ private currentInputs;
3677
+ private settingsEditor?;
3678
+ private subscription;
3679
+ ngOnDestroy(): void;
3680
+ getSettingsValue(): PraxisFilterWidgetEditorValue;
3681
+ onSave(): PraxisFilterWidgetEditorValue;
3682
+ reset(): void;
3683
+ private buildValue;
3684
+ private buildSettingsFromInputs;
3685
+ private projectSettingsToInputs;
3686
+ private normalizeSettings;
3687
+ private normalizeAdvancedOpenMode;
3688
+ private normalizeOverlayVariant;
3689
+ private cloneStringArray;
3690
+ private cloneRecord;
3691
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisFilterWidgetConfigEditor, never>;
3692
+ 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>;
3693
+ }
3694
+
3250
3695
  declare class DataFormatterComponent implements OnInit, OnChanges {
3251
3696
  private cdr;
3252
3697
  private formattingService;
@@ -3315,31 +3760,6 @@ declare class DataFormatterComponent implements OnInit, OnChanges {
3315
3760
  static ɵcmp: i0.ɵɵComponentDeclaration<DataFormatterComponent, "data-formatter", never, { "columnType": { "alias": "columnType"; "required": false; }; "currentFormat": { "alias": "currentFormat"; "required": false; }; }, { "formatChange": "formatChange"; }, never, never, true, never>;
3316
3761
  }
3317
3762
 
3318
- type AnalyticsTableRow = Record<string, string | number | boolean | null>;
3319
- type AnalyticsTableContractSource = 'remote' | 'fallback';
3320
- interface AnalyticsTableViewModel {
3321
- config: TableConfig;
3322
- data: AnalyticsTableRow[];
3323
- }
3324
- interface AnalyticsTableContractDefinition<TKey extends string = string> {
3325
- key: TKey;
3326
- projectionId: string;
3327
- path: string;
3328
- title: PraxisTextValue;
3329
- subtitle?: PraxisTextValue;
3330
- fallbackProjection: PraxisAnalyticsProjection;
3331
- fallbackRows?: AnalyticsTableRow[];
3332
- }
3333
- interface AnalyticsTableContractLoadOptions<TKey extends string = string> {
3334
- cacheNamespace?: string;
3335
- queryContexts?: Partial<Record<TKey, PraxisDataQueryContext | null>>;
3336
- }
3337
- interface AnalyticsTableContractLoadResult<TKey extends string = string> {
3338
- views: Record<TKey, AnalyticsTableViewModel>;
3339
- sources: Record<TKey, AnalyticsTableContractSource>;
3340
- errors: Partial<Record<TKey, string>>;
3341
- }
3342
-
3343
3763
  interface AnalyticsTableConfigAdapterOptions {
3344
3764
  title?: PraxisTextValue;
3345
3765
  subtitle?: PraxisTextValue;
@@ -3353,24 +3773,6 @@ declare class AnalyticsTableConfigAdapterService {
3353
3773
  static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableConfigAdapterService>;
3354
3774
  }
3355
3775
 
3356
- declare class AnalyticsTableStatsApiService {
3357
- private readonly http;
3358
- private readonly apiUrl;
3359
- private readonly statsBuilder;
3360
- constructor(http: HttpClient, apiUrl: ApiUrlConfig);
3361
- execute(projection: PraxisAnalyticsProjection, queryContext?: PraxisDataQueryContext | null): Promise<AnalyticsTableRow[]>;
3362
- private toTableRows;
3363
- private resolveTimeSeriesCategory;
3364
- private resolveBucketCategory;
3365
- private projectMetricValues;
3366
- private resolveMetricValue;
3367
- private buildStatsUrl;
3368
- private applyQueryContext;
3369
- private normalizeError;
3370
- static ɵfac: i0.ɵɵFactoryDeclaration<AnalyticsTableStatsApiService, never>;
3371
- static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableStatsApiService>;
3372
- }
3373
-
3374
3776
  declare class AnalyticsTableContractService {
3375
3777
  private readonly analyticsSchema;
3376
3778
  private readonly resolver;
@@ -3406,6 +3808,15 @@ declare function buildTableApplyPlan(doc: TableAuthoringDocument, runtime?: Tabl
3406
3808
  }): TableApplyPlan;
3407
3809
  declare function serializeTableAuthoringDocument(doc: TableAuthoringDocument): unknown;
3408
3810
 
3811
+ /**
3812
+ * Manifesto de authoring canônico para o componente praxis-table.
3813
+ * Este arquivo define o contrato executável para que agentes de IA editem tabelas.
3814
+ *
3815
+ * @version 2.0.0
3816
+ * @status COMPLIANT - Alinhado com o contrato v2 e TableConfig canônico.
3817
+ */
3818
+ declare const PRAXIS_TABLE_AUTHORING_MANIFEST: ComponentAuthoringManifest;
3819
+
3409
3820
  declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3410
3821
  private readonly i18n;
3411
3822
  config: TableConfig;
@@ -3417,6 +3828,9 @@ declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3417
3828
  toolbarVisible: boolean;
3418
3829
  density: 'compact' | 'comfortable' | 'spacious';
3419
3830
  toolbarActionsPosition: 'top' | 'bottom' | 'both';
3831
+ toolbarAppearanceVariant: 'flat' | 'outlined' | 'elevated' | 'integrated';
3832
+ toolbarAppearanceShape: 'square' | 'rounded' | 'pill';
3833
+ toolbarAppearanceDivider: 'none' | 'start' | 'between-groups';
3420
3834
  toolbarHeight: number;
3421
3835
  toolbarActionsBackgroundColor: string;
3422
3836
  paginationEnabled: boolean;
@@ -3444,6 +3858,9 @@ declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3444
3858
  setToolbarVisible(value: boolean): void;
3445
3859
  setDensity(value: 'compact' | 'comfortable' | 'spacious'): void;
3446
3860
  setToolbarActionsPosition(value: 'top' | 'bottom' | 'both'): void;
3861
+ setToolbarAppearanceVariant(value: 'flat' | 'outlined' | 'elevated' | 'integrated'): void;
3862
+ setToolbarAppearanceShape(value: 'square' | 'rounded' | 'pill'): void;
3863
+ setToolbarAppearanceDivider(value: 'none' | 'start' | 'between-groups'): void;
3447
3864
  setToolbarHeight(value: number | string): void;
3448
3865
  setToolbarActionsBackgroundColor(value: string): void;
3449
3866
  setPaginationEnabled(value: boolean): void;
@@ -3471,6 +3888,7 @@ declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3471
3888
  tx(key: string, fallback: string): string;
3472
3889
  private emitConfig;
3473
3890
  private patchToolbar;
3891
+ private patchToolbarAppearance;
3474
3892
  private patchBehavior;
3475
3893
  private patchPagination;
3476
3894
  private patchSorting;
@@ -3506,7 +3924,7 @@ declare class ValueMappingEditorComponent implements OnInit, OnChanges {
3506
3924
  [key: number]: string;
3507
3925
  }>;
3508
3926
  mappingPairs: ValueMappingPair[];
3509
- dataSource: MatTableDataSource<ValueMappingPair, _angular_material_paginator_d_Zo1cMMo4.M>;
3927
+ dataSource: MatTableDataSource<ValueMappingPair, _angular_material_paginator.MatPaginator>;
3510
3928
  displayedColumns: string[];
3511
3929
  showImportDialog: boolean;
3512
3930
  importJsonText: string;
@@ -3652,7 +4070,6 @@ declare function providePraxisTableMetadata(): Provider;
3652
4070
  declare module '@praxisui/core' {
3653
4071
  interface AiCapabilityCategoryMap {
3654
4072
  meta: true;
3655
- bindings: true;
3656
4073
  columns: true;
3657
4074
  renderer: true;
3658
4075
  conditional: true;
@@ -3666,6 +4083,7 @@ declare module '@praxisui/core' {
3666
4083
  toolbar: true;
3667
4084
  actions: true;
3668
4085
  export: true;
4086
+ runtime: true;
3669
4087
  performance: true;
3670
4088
  messages: true;
3671
4089
  localization: true;
@@ -3738,18 +4156,23 @@ type ComponentEditPlanCapability = {
3738
4156
  declare const TABLE_COMPONENT_EDIT_PLAN_KIND = "praxis.table.component-edit-plan";
3739
4157
  declare const TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND = "praxis.table.component-edit-plan.batch";
3740
4158
  declare const TABLE_COMPONENT_EDIT_PLAN_VERSION = "1.0";
3741
- 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';
3742
- 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"];
4159
+ 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';
4160
+ 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';
4161
+ 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"];
3743
4162
  declare const TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS: Record<TableComponentEditChangeKind, string>;
3744
4163
  interface TableComponentEditPlan {
3745
4164
  kind?: typeof TABLE_COMPONENT_EDIT_PLAN_KIND;
3746
4165
  version?: typeof TABLE_COMPONENT_EDIT_PLAN_VERSION | string;
3747
4166
  componentId?: 'praxis-table' | string;
3748
4167
  changeKind: TableComponentEditChangeKind | string;
4168
+ operationId?: TableComponentEditOperationId | string;
3749
4169
  capabilityPath?: string;
3750
4170
  configPath?: string;
3751
4171
  field?: string;
3752
4172
  targetField?: string;
4173
+ target?: unknown;
4174
+ input?: unknown;
4175
+ params?: unknown;
3753
4176
  value?: unknown;
3754
4177
  condition?: unknown;
3755
4178
  style?: unknown;
@@ -3777,7 +4200,7 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3777
4200
  readonly $defs: {
3778
4201
  readonly changeKind: {
3779
4202
  readonly type: "string";
3780
- 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"];
4203
+ 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"];
3781
4204
  };
3782
4205
  readonly capabilityPath: {
3783
4206
  readonly type: "string";
@@ -3812,6 +4235,9 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3812
4235
  readonly type: "string";
3813
4236
  readonly minLength: 1;
3814
4237
  };
4238
+ readonly tooltip: {
4239
+ readonly $ref: "#/$defs/tooltip";
4240
+ };
3815
4241
  };
3816
4242
  readonly anyOf: readonly [{
3817
4243
  readonly required: readonly ["text"];
@@ -3819,10 +4245,31 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3819
4245
  readonly required: readonly ["textField"];
3820
4246
  }];
3821
4247
  };
4248
+ readonly tooltip: {
4249
+ readonly type: "object";
4250
+ readonly additionalProperties: false;
4251
+ readonly required: readonly ["text"];
4252
+ readonly properties: {
4253
+ readonly text: {
4254
+ readonly type: "string";
4255
+ readonly minLength: 1;
4256
+ };
4257
+ readonly position: {
4258
+ readonly type: "string";
4259
+ readonly enum: readonly ["top", "right", "bottom", "left", "above", "below", "before", "after"];
4260
+ };
4261
+ readonly bgColor: {
4262
+ readonly type: "string";
4263
+ readonly minLength: 1;
4264
+ };
4265
+ readonly delayMs: {
4266
+ readonly type: "number";
4267
+ };
4268
+ };
4269
+ };
3822
4270
  readonly operation: {
3823
4271
  readonly type: "object";
3824
4272
  readonly additionalProperties: false;
3825
- readonly required: readonly ["changeKind", "field", "value"];
3826
4273
  readonly properties: {
3827
4274
  readonly kind: {
3828
4275
  readonly const: "praxis.table.component-edit-plan";
@@ -3833,6 +4280,12 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3833
4280
  readonly componentId: {
3834
4281
  readonly const: "praxis-table";
3835
4282
  };
4283
+ readonly operationId: {
4284
+ 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"];
4285
+ };
4286
+ readonly target: true;
4287
+ readonly input: true;
4288
+ readonly params: true;
3836
4289
  readonly changeKind: {
3837
4290
  readonly $ref: "#/$defs/changeKind";
3838
4291
  };
@@ -3861,6 +4314,13 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3861
4314
  readonly type: "string";
3862
4315
  };
3863
4316
  };
4317
+ readonly anyOf: readonly [{
4318
+ readonly required: readonly ["changeKind", "field", "value"];
4319
+ }, {
4320
+ readonly required: readonly ["operationId", "target", "input"];
4321
+ }, {
4322
+ readonly required: readonly ["operationId", "input"];
4323
+ }];
3864
4324
  readonly allOf: readonly [{
3865
4325
  readonly if: {
3866
4326
  readonly properties: {
@@ -3937,8 +4397,12 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3937
4397
  readonly required: readonly ["condition"];
3938
4398
  readonly anyOf: readonly [{
3939
4399
  readonly required: readonly ["badge"];
4400
+ }, {
4401
+ readonly required: readonly ["renderer"];
3940
4402
  }, {
3941
4403
  readonly required: readonly ["value"];
4404
+ }, {
4405
+ readonly required: readonly ["tooltip"];
3942
4406
  }];
3943
4407
  readonly properties: {
3944
4408
  readonly condition: {
@@ -3947,6 +4411,14 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3947
4411
  readonly badge: {
3948
4412
  readonly $ref: "#/$defs/badge";
3949
4413
  };
4414
+ readonly renderer: {
4415
+ readonly type: "object";
4416
+ readonly minProperties: 1;
4417
+ readonly additionalProperties: true;
4418
+ };
4419
+ readonly tooltip: {
4420
+ readonly $ref: "#/$defs/tooltip";
4421
+ };
3950
4422
  readonly value: {
3951
4423
  readonly $ref: "#/$defs/badge";
3952
4424
  };
@@ -4004,5 +4476,5 @@ declare function coerceTableComponentEditPlan(value: unknown): TableComponentEdi
4004
4476
  declare function compileTableComponentEditPlans(plans: TableComponentEditPlan[], currentConfig: TableConfig): TableComponentEditPlanCompileResult;
4005
4477
  declare function compileTableComponentEditPlan(plan: TableComponentEditPlan, currentConfig: TableConfig): TableComponentEditPlanCompileResult;
4006
4478
 
4007
- 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 };
4008
- 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 };
4479
+ 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 };
4480
+ 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 };