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

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-BMNKohqK.mjs +60932 -0
  35. package/fesm2022/praxisui-table-table-agentic-authoring-turn-flow-BZc3KmLG.mjs +8247 -0
  36. package/fesm2022/praxisui-table-table-ai.adapter-D034N3RL.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} +595 -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,61 @@ 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
+ private getAiAssistantCapabilityDiscoveryRecommendations;
1339
+ onAiAssistantRecommendedIntent(intent: PraxisAssistantRecommendedIntent): void;
1340
+ private getAiAssistantRecommendationResponseContract;
1142
1341
  onAiAssistantEditMessage(message: PraxisAssistantShellMessage): void;
1143
1342
  onAiAssistantResendMessage(message: PraxisAssistantShellMessage): void;
1144
1343
  onAiAssistantLayoutChange(layout: PraxisAssistantShellLayout): void;
1145
1344
  private initializeAiAssistantController;
1146
1345
  private buildAiAssistantContextItems;
1346
+ private interpolateAiAssistantContextValue;
1347
+ private aiAssistantSelectedRecordsValue;
1348
+ private buildAiAssistantContextSnapshot;
1349
+ private syncAiAssistantSession;
1350
+ private assistantContextRuntimeLocale;
1351
+ private refreshAiAssistantContextAfterSelectionChange;
1352
+ private hasAiAssistantSessionState;
1353
+ private resolveAiAssistantSessionId;
1354
+ private resolveAiAssistantOwnerId;
1355
+ private resolveAiAssistantRouteKey;
1356
+ private resolveAiAssistantSummary;
1357
+ private resolveAiAssistantBadge;
1358
+ private resolveAiAssistantIcon;
1147
1359
  private emitLoadingState;
1148
1360
  private hasResolvedRemoteDataLoad;
1149
1361
  private isTableDataLoading;
@@ -1169,6 +1381,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1169
1381
  onPageChange(event: PageEvent): void;
1170
1382
  onSortChange(event: Sort): void;
1171
1383
  onRowClicked(row: any, index: number, event?: MouseEvent): void;
1384
+ requestRecordSurfaceOpen(surface: Record<string, unknown>): boolean;
1385
+ private resolveResourceRecordSurfaceContext;
1386
+ private openResourceRecordSurface;
1172
1387
  isRowExpansionRuntimeEnabled(): boolean;
1173
1388
  isExpansionIconTriggerEnabled(): boolean;
1174
1389
  isRowExpandable(row: any, index?: number): boolean;
@@ -1361,22 +1576,67 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1361
1576
  private emitRowActionEvent;
1362
1577
  private showConfirmDialog;
1363
1578
  private executeDeleteAction;
1579
+ private dispatchRowAction;
1364
1580
  private cloneForEmit;
1365
1581
  private interpolateActionMessageTemplate;
1366
1582
  private buildActionFeedbackContext;
1367
1583
  private resolveActionFeedbackMessage;
1368
1584
  private showActionFeedbackMessage;
1369
1585
  private emitEventWithActionFeedback;
1586
+ private executeConfiguredGlobalAction;
1587
+ private resolveConfiguredGlobalActionRef;
1588
+ private resolveActionGlobalActionRef;
1589
+ private resolveGlobalActionPayload;
1590
+ private buildGlobalActionTemplateContext;
1591
+ private resolveGlobalActionTemplateValue;
1592
+ private isDeferredTemplateExpressionKey;
1593
+ private interpolateGlobalActionTemplate;
1594
+ private shouldEmitLocalForGlobalAction;
1370
1595
  private resolveBulkValidationMessage;
1371
1596
  private hasValidBulkSelectionCount;
1372
1597
  private showBulkConfirmDialog;
1373
1598
  onToolbarAction(event: {
1374
1599
  action: string;
1375
1600
  actionConfig?: any;
1376
- }): void;
1601
+ }): Promise<void>;
1602
+ private resolveBulkExportFormat;
1603
+ private isBulkExportActionKey;
1604
+ private normalizeExportFormat;
1605
+ private isExportFormatEnabled;
1606
+ private getFirstEnabledExportFormat;
1607
+ onExportAction(event: {
1608
+ format: string;
1609
+ scope?: PraxisExportScope;
1610
+ }): Promise<void>;
1611
+ canRunExportAction(format: unknown): boolean;
1612
+ private shouldBlockSelectedExportWithoutSelection;
1613
+ private buildTableExportRequest;
1614
+ private resolveEffectiveExportScope;
1615
+ private resolveTableExportLoadedItems;
1616
+ private computeLocalExportRows;
1617
+ private buildTableExportFields;
1618
+ private buildTableExportFormatOptions;
1619
+ private buildTableExportLocalization;
1620
+ private resolveColumnExportFormat;
1621
+ private buildColumnExportPresentation;
1622
+ private resolveColumnExportCurrency;
1623
+ private downloadExportResult;
1624
+ private triggerExportDownload;
1625
+ private resolveExportFileName;
1626
+ private getExportFileExtension;
1627
+ private getExportMimeType;
1628
+ private showExportFeedback;
1377
1629
  onAdvancedFilterSubmit(criteria: Record<string, any>): void;
1378
1630
  onAdvancedFilterChange(criteria: Record<string, any>): void;
1379
1631
  onAdvancedFilterClear(): void;
1632
+ private applyAdvancedFilterCriteria;
1633
+ private setAdvancedFilterCriteria;
1634
+ private syncAdvancedFilterValueFromCriteria;
1635
+ private deriveRuntimeVisibleAdvancedFilterFields;
1636
+ private isEmptyAdvancedFilterCriterionValue;
1637
+ private mergeAdvancedFilterFieldIds;
1638
+ private getRuntimePromotedAdvancedFilterFields;
1639
+ private toPlainRecord;
1380
1640
  private saveConfigWithAck;
1381
1641
  private clearConfigWithAck;
1382
1642
  private persistHorizontalScrollInput;
@@ -1440,7 +1700,18 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1440
1700
  */
1441
1701
  private verifyServerSchemaVersion;
1442
1702
  private loadSchema;
1703
+ private loadFilterSchemaSnapshot;
1443
1704
  private convertFieldToColumn;
1705
+ private applySchemaFieldPresentation;
1706
+ private resolveSchemaCurrencyFormat;
1707
+ private resolveSchemaBooleanFormat;
1708
+ private resolveSchemaValueMapping;
1709
+ private resolveSchemaOptionsValueMapping;
1710
+ private normalizePresentationToken;
1711
+ private firstNonEmptyString;
1712
+ private firstFiniteNumber;
1713
+ private humanizeSchemaEnumValue;
1714
+ private capitalizeSchemaEnumPart;
1444
1715
  /**
1445
1716
  * Apply automatic renderer hints based on schema field metadata.
1446
1717
  * Runs only on initial bootstrap (when columns are derived from schema).
@@ -1463,11 +1734,14 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1463
1734
  private buildRowDiscoveryOptions;
1464
1735
  private getRowLinks;
1465
1736
  private resolveRowDiscoveryHref;
1737
+ private resolveRowSurfaceDiscoveryHref;
1466
1738
  private prefetchRowDiscovery;
1467
1739
  private ensureRowDiscovery;
1468
1740
  private ensureRowCapabilitySnapshot;
1469
1741
  private ensureRowActionCatalog;
1470
1742
  private getCachedRowCapabilitySnapshot;
1743
+ private getAiAssistantRowDiscoveryLinks;
1744
+ private mergeRowCapabilitySnapshots;
1471
1745
  private hasResolvedRowActionCatalog;
1472
1746
  isRowDiscoveryPending(row: any): boolean;
1473
1747
  private getCachedRowActionCatalog;
@@ -1508,6 +1782,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1508
1782
  private pruneRowDiscoveryCaches;
1509
1783
  private pruneRowDiscoveryCache;
1510
1784
  private fetchData;
1785
+ private resolveAnalyticsProjection;
1786
+ private fetchAnalyticsProjectionData;
1511
1787
  private getEffectiveFilterCriteria;
1512
1788
  retryData(): void;
1513
1789
  reloadSchema(): void;
@@ -1520,9 +1796,35 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1520
1796
  * 3. format (data formatting like dates, numbers, currency)
1521
1797
  */
1522
1798
  getCellValue(rowData: any, column: ColumnDefinition): any;
1799
+ private applyImplicitRuntimeCellPresentation;
1800
+ private shouldHumanizeRuntimeEnumCell;
1801
+ private resolveCellFormattingType;
1802
+ private normalizeReadonlyEntityLookupCellValue;
1803
+ private toEntityLookupDisplayToken;
1804
+ private isEntityLookupDisplayCandidate;
1805
+ private toEntityLookupDisplayPrimitive;
1523
1806
  private resolveImplicitFormat;
1524
1807
  getCellClasses(rowData: any, column: ColumnDefinition): string[] | undefined;
1525
1808
  getCellNgStyle(rowData: any, column: ColumnDefinition): Record<string, string> | undefined;
1809
+ private normalizeInlineStyleRecord;
1810
+ private normalizeConditionalStyleRules;
1811
+ private normalizeConditionalStyleRecord;
1812
+ getCellTooltip(rowData: any, column: ColumnDefinition): string | null;
1813
+ getCellTooltipPosition(rowData: any, column: ColumnDefinition): 'above' | 'below' | 'left' | 'right' | 'before' | 'after';
1814
+ private resolveConditionalStyleTooltipText;
1815
+ private resolveRendererTooltipText;
1816
+ private normalizeTooltipPosition;
1817
+ private normalizeConditionalStyleEffects;
1818
+ private hasConditionalStyleEffectPayload;
1819
+ private resolveConditionalStyleClasses;
1820
+ private resolveConditionalStyleObject;
1821
+ private compileConditionalStyleEffect;
1822
+ private normalizeConditionalRendererRules;
1823
+ private normalizeObjectRecord;
1824
+ private buildColumnRendererOverrideFromEffects;
1825
+ private buildColumnRendererFromEffect;
1826
+ private resolveRuleAnimationFromEffects;
1827
+ private resolveRowTooltipFromEffects;
1526
1828
  private resetComputedContextCache;
1527
1829
  private ensureEffectiveCellRenderCache;
1528
1830
  private ensureCellAnimationPreviousValuesByRowId;
@@ -1534,6 +1836,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1534
1836
  private buildComputedSignature;
1535
1837
  private stringifyDependencyValue;
1536
1838
  private buildComputedValueMap;
1839
+ private collectComputedColumns;
1840
+ private evaluateCanonicalComputedColumns;
1841
+ private collectComputedExpressionDependencies;
1842
+ private collectJsonLogicVarDependencies;
1843
+ private resolveJsonLogicVarPath;
1537
1844
  private buildEvaluationContext;
1538
1845
  private getJsonLogicEvaluationOptions;
1539
1846
  private resolveJsonLogicUserTimeZone;
@@ -1672,6 +1979,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1672
1979
  private buildEffectiveCellRenderCacheKey;
1673
1980
  private getEffectiveCellRenderResult;
1674
1981
  private getEffectiveRenderer;
1982
+ private resolveEffectiveRendererTooltip;
1675
1983
  getLinkHref(row: any, column: ColumnDefinition): string | null;
1676
1984
  getLinkText(row: any, column: ColumnDefinition): string;
1677
1985
  getLinkRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
@@ -1693,6 +2001,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1693
2001
  private buildRendererActionRuntimeOptions;
1694
2002
  onButtonClick(row: any, column: ColumnDefinition, event: Event): void;
1695
2003
  getChipText(row: any, column: ColumnDefinition): string | null;
2004
+ private getRendererTextFieldValue;
1696
2005
  getChipRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
1697
2006
  getChipIcon(row: any, column: ColumnDefinition): string | null;
1698
2007
  getChipClasses(row: any, column: ColumnDefinition): string[];
@@ -1715,6 +2024,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1715
2024
  private deriveAvatarInitials;
1716
2025
  getAvatarInitials(row: any, column: ColumnDefinition): string;
1717
2026
  getAvatarRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
2027
+ private getAvatarRichContentStyle;
1718
2028
  getAvatarShape(row: any, column: ColumnDefinition): 'square' | 'rounded' | 'circle' | undefined;
1719
2029
  getAvatarStyle(row: any, column: ColumnDefinition): Record<string, string> | null;
1720
2030
  getToggleState(row: any, column: ColumnDefinition): boolean;
@@ -1770,6 +2080,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1770
2080
  private reconcileSelectionAfterDataChange;
1771
2081
  private getComparableRowIdentity;
1772
2082
  getIdField(): string;
2083
+ private resolveConfigMetaIdField;
1773
2084
  private syncRuntimeSchemaMetaFromConfig;
1774
2085
  private getEffectiveMetadataSnapshot;
1775
2086
  getActionId(action: any): string;
@@ -1788,6 +2099,20 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1788
2099
  toggleRow(row: any): void;
1789
2100
  private selectRowFromUserInteraction;
1790
2101
  private emitSelectionChange;
2102
+ private getSelectedRowsSnapshot;
2103
+ private getAiAssistantSelectionFields;
2104
+ private buildAiAssistantSelectionFilterCandidates;
2105
+ private inferAiAssistantFilterCriterionKind;
2106
+ private buildAiAssistantRangeFilterCandidate;
2107
+ private buildAiAssistantSetFilterCandidate;
2108
+ private resolveAiAssistantSetFilterDisplayValue;
2109
+ private aiAssistantSetFilterDisplayFieldCandidates;
2110
+ private resolveAiAssistantFilterSourceFields;
2111
+ private normalizeAiAssistantNumericRangeValue;
2112
+ private normalizeAiAssistantDateRangeValue;
2113
+ private sanitizeAiAssistantSelectedRow;
2114
+ private safeStringifyAiAssistantValue;
2115
+ private isSensitiveAiAssistantField;
1791
2116
  private getRowActionsConfig;
1792
2117
  getActionsHeaderAlign(): string;
1793
2118
  getActionsHeaderTooltip(): string | undefined;
@@ -1819,6 +2144,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1819
2144
  private findItemWorkflowAction;
1820
2145
  private findItemSurface;
1821
2146
  private isRowSurfaceAction;
2147
+ private isResourceSurfaceCatalogItem;
2148
+ private toRecordSurfaceActionConfig;
2149
+ private resolveConfiguredSurfaceOpenAction;
2150
+ private recordSurfaceActionAliases;
2151
+ private normalizeSurfaceActionAlias;
1822
2152
  private isWritableRowSurface;
1823
2153
  private isReadableRowSurface;
1824
2154
  private getDiscoveredSurfaceIcon;
@@ -1838,8 +2168,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1838
2168
  getRowMenuIcon(): string;
1839
2169
  private scheduleRowDiscoveryMarkForCheck;
1840
2170
  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>;
2171
+ 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; }]>;
2172
+ 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
2173
  static ngAcceptInputType_enableCustomization: unknown;
1844
2174
  }
1845
2175
 
@@ -1852,7 +2182,6 @@ interface EditorDocument<TConfig, TBindings = unknown> {
1852
2182
  type TableHorizontalScroll = 'auto' | 'wrap' | 'none';
1853
2183
  interface TableBindings {
1854
2184
  resourcePath?: string | null;
1855
- idField?: string;
1856
2185
  horizontalScroll?: TableHorizontalScroll;
1857
2186
  }
1858
2187
  interface TableAuthoringDocument extends EditorDocument<TableConfig, TableBindings> {
@@ -1909,7 +2238,6 @@ interface TableApplyPlan {
1909
2238
  };
1910
2239
  diff?: {
1911
2240
  resourcePathChanged?: boolean;
1912
- idFieldChanged?: boolean;
1913
2241
  horizontalScrollChanged?: boolean;
1914
2242
  requiresDataRefresh?: boolean;
1915
2243
  };
@@ -2382,6 +2710,8 @@ interface ToolbarAction {
2382
2710
  /** Material button appearance: filled (flat), outlined (stroked), elevated (raised), text, tonal */
2383
2711
  appearance?: 'filled' | 'outlined' | 'elevated' | 'text' | 'tonal';
2384
2712
  action: string;
2713
+ globalAction?: GlobalActionRef;
2714
+ effects?: PraxisRuntimeGlobalActionEffect[];
2385
2715
  position: 'start' | 'end';
2386
2716
  order?: number;
2387
2717
  disabled?: boolean;
@@ -2389,7 +2719,7 @@ interface ToolbarAction {
2389
2719
  shortcut?: string;
2390
2720
  shortcutScope?: 'toolbar' | 'global';
2391
2721
  tooltip?: string;
2392
- visibleWhen?: string;
2722
+ visibleWhen?: JsonLogicExpression | null;
2393
2723
  children?: ToolbarAction[];
2394
2724
  }
2395
2725
  interface RowAction {
@@ -2397,11 +2727,15 @@ interface RowAction {
2397
2727
  label: string;
2398
2728
  icon: string;
2399
2729
  action: string;
2730
+ globalAction?: GlobalActionRef;
2731
+ effects?: PraxisRuntimeGlobalActionEffect[];
2400
2732
  color?: 'primary' | 'accent' | 'warn';
2401
2733
  tooltip?: string;
2402
2734
  requiresConfirmation?: boolean;
2403
2735
  autoDelete?: boolean;
2404
2736
  separator?: boolean;
2737
+ visibleWhen?: JsonLogicExpression | null;
2738
+ disabledWhen?: JsonLogicExpression | null;
2405
2739
  conditional?: string;
2406
2740
  }
2407
2741
  interface BulkAction {
@@ -2409,6 +2743,8 @@ interface BulkAction {
2409
2743
  label: string;
2410
2744
  icon: string;
2411
2745
  action: string;
2746
+ globalAction?: GlobalActionRef;
2747
+ effects?: PraxisRuntimeGlobalActionEffect[];
2412
2748
  color?: 'primary' | 'accent' | 'warn';
2413
2749
  tooltip?: string;
2414
2750
  requiresConfirmation?: boolean;
@@ -2422,6 +2758,25 @@ interface ToolbarActionsChange {
2422
2758
  value: any;
2423
2759
  fullConfig: TableConfig;
2424
2760
  }
2761
+ type GlobalActionCatalogOption = GlobalActionCatalogEntry & {
2762
+ param?: {
2763
+ required?: boolean;
2764
+ label?: string;
2765
+ placeholder?: string;
2766
+ hint?: string;
2767
+ };
2768
+ };
2769
+ type EditableTableAction = {
2770
+ id?: string;
2771
+ label?: string;
2772
+ action?: string;
2773
+ globalAction?: GlobalActionRef;
2774
+ effects?: PraxisRuntimeGlobalActionEffect[];
2775
+ position?: string;
2776
+ appearance?: string;
2777
+ visibleWhen?: JsonLogicExpression | null;
2778
+ disabledWhen?: JsonLogicExpression | null;
2779
+ };
2425
2780
  type ToolbarShortcutScope = 'toolbar' | 'global';
2426
2781
  interface InternalActionSpec {
2427
2782
  id: string;
@@ -2442,14 +2797,14 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
2442
2797
  editingToolbarActionIndex: number | null;
2443
2798
  editingRowActionIndex: number | null;
2444
2799
  editingBulkActionIndex: number | null;
2445
- readonly globalActionCatalog: GlobalActionSpec[];
2800
+ private readonly i18n;
2801
+ readonly globalActionCatalog: GlobalActionCatalogOption[];
2446
2802
  get internalActionCatalog(): InternalActionSpec[];
2447
2803
  readonly customActionValue = "__custom__";
2448
2804
  readonly validShortcutScopes: ToolbarShortcutScope[];
2449
2805
  private readonly actionFieldDrafts;
2450
2806
  private readonly actionFieldErrors;
2451
2807
  private readonly warnedInvalidShortcutScopes;
2452
- private readonly i18n;
2453
2808
  private destroy$;
2454
2809
  constructor(fb: FormBuilder, iconPicker: IconPickerService);
2455
2810
  tx(key: string, fallback: string): string;
@@ -2478,56 +2833,37 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
2478
2833
  private removeAddToolbarAction;
2479
2834
  private syncAddFormFromActions;
2480
2835
  private updateConfig;
2481
- getActionSelectValue(value?: string): string;
2482
- getActionParam(value?: string): string;
2483
- getActionCustomValue(value?: string): string;
2836
+ getActionSelectValue(action?: EditableTableAction): string;
2837
+ getActionParam(action?: EditableTableAction): string;
2838
+ isRequiredGlobalActionParamMissing(action: EditableTableAction, spec: GlobalActionCatalogOption): boolean;
2839
+ getActionCustomValue(action?: EditableTableAction): string;
2484
2840
  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;
2841
+ getActionSpecById(id: string): GlobalActionCatalogOption | undefined;
2842
+ onActionSelectChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2843
+ onActionParamChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2844
+ onActionCustomChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2845
+ getCanonicalGlobalActionRef(action?: EditableTableAction): GlobalActionRef | undefined;
2846
+ private setCanonicalGlobalActionRef;
2495
2847
  private touchActionList;
2496
- private parseActionValue;
2848
+ getActionJsonLogicText(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen'): string;
2849
+ onActionJsonLogicChange(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen', value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2850
+ getActionConditionError(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen'): string;
2497
2851
  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;
2852
+ getGlobalActionSchema(action: EditableTableAction): _praxisui_core.GlobalActionUiSchema | undefined;
2853
+ getSurfaceOpenActionPayload(action: EditableTableAction): SurfaceOpenPayload;
2854
+ onSurfaceOpenActionPayloadChange(action: EditableTableAction, payload: SurfaceOpenPayload, kind: 'toolbar' | 'row' | 'bulk'): void;
2855
+ shouldShowGlobalActionField(action: EditableTableAction, field: GlobalActionField): boolean;
2856
+ isGlobalActionFieldRequired(action: EditableTableAction, field: GlobalActionField): boolean;
2857
+ isGlobalActionFieldMissing(action: EditableTableAction, field: GlobalActionField): boolean;
2858
+ hasActionFieldError(action: EditableTableAction, key: string): boolean;
2859
+ getActionFieldError(action: EditableTableAction, key: string): string;
2860
+ getGlobalActionFieldValue(action: EditableTableAction, field: GlobalActionField): any;
2861
+ onGlobalActionFieldChange(action: EditableTableAction, field: GlobalActionField, value: any, kind: 'toolbar' | 'row' | 'bulk'): void;
2524
2862
  private stringifyJson;
2525
2863
  private normalizeSurfaceOpenPayload;
2526
2864
  private setActionFieldError;
2527
2865
  private clearActionFieldError;
2528
2866
  private collectGlobalActionFieldValues;
2529
- private serializeGlobalActionParam;
2530
- private buildPrimaryParam;
2531
2867
  private buildGlobalActionPayload;
2532
2868
  getToolbarActionShortcutScope(action: ToolbarAction): ToolbarShortcutScope;
2533
2869
  onToolbarActionShortcutScopeChange(action: ToolbarAction, value: ToolbarShortcutScope | string): void;
@@ -2719,6 +3055,7 @@ declare class FilterSettingsComponent implements OnChanges, AfterViewInit, OnDes
2719
3055
  }[];
2720
3056
  getContrastWarning(): string | null;
2721
3057
  applyPreset(key: string): void;
3058
+ isPresetActive(key: string): boolean;
2722
3059
  hasBooleanFieldMetadata(): boolean;
2723
3060
  getFieldLabel(name: string): string;
2724
3061
  onAlwaysVisibleFieldSearchChange(value: string): void;
@@ -2882,12 +3219,10 @@ declare class RuleCompilerService {
2882
3219
  static ɵprov: i0.ɵɵInjectableDeclaration<RuleCompilerService>;
2883
3220
  }
2884
3221
 
2885
- type RuleItem = {
2886
- condition: JsonLogicExpression;
3222
+ type RuleItem = Omit<PraxisRuntimeConditionalEffectRule<RuleEffectDefinition>, 'effects'> & {
2887
3223
  cssClass?: string;
2888
3224
  style?: Record<string, string>;
2889
- description?: string;
2890
- effects?: _praxisui_table_rule_builder.RuleEffectDefinition;
3225
+ effects?: RuleEffectDefinition[];
2891
3226
  enabled?: boolean;
2892
3227
  };
2893
3228
  declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy {
@@ -2957,6 +3292,7 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
2957
3292
  onColumnSelect(field: string): void;
2958
3293
  private initFromConfig;
2959
3294
  private loadColumnRules;
3295
+ private normalizePersistedRules;
2960
3296
  rebuildCondition(): void;
2961
3297
  onDraftChange(): void;
2962
3298
  applyTextPreset(preset: string): void;
@@ -2983,6 +3319,8 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
2983
3319
  onExportRules(): void;
2984
3320
  onImportRules(): void;
2985
3321
  private sanitizeRule;
3322
+ private normalizeRuleEffects;
3323
+ getPrimaryEffect(r: RuleItem | null | undefined): RuleEffectDefinition | undefined;
2986
3324
  getAnimationLabel(r: RuleItem): string | null;
2987
3325
  private normalizeRendererAnimation;
2988
3326
  private buildRendererOverrideFromRule;
@@ -3089,6 +3427,8 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3089
3427
  private cdr;
3090
3428
  private configService;
3091
3429
  private readonly i18n;
3430
+ private readonly globalActionCatalogSource;
3431
+ private readonly globalActionCatalog;
3092
3432
  filterSettingsEditor?: FilterSettingsComponent;
3093
3433
  behaviorEditor?: BehaviorConfigEditorComponent;
3094
3434
  rulesEditor?: TableRulesEditorComponent;
@@ -3151,6 +3491,7 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3151
3491
  private hasLocalDataInput;
3152
3492
  private filterDtoLoadSeq;
3153
3493
  private lastKnownFilterSettings;
3494
+ private globalActionValidationIssues;
3154
3495
  private readonly panelData;
3155
3496
  private readonly crudService;
3156
3497
  private readonly panelRef;
@@ -3177,6 +3518,9 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3177
3518
  onRulesConfigChange(newCfg: TableConfig): void;
3178
3519
  private updateColumnMetas;
3179
3520
  private updateCanSaveState;
3521
+ private collectGlobalActionValidationIssues;
3522
+ private findGlobalActionCatalogEntry;
3523
+ private buildGlobalActionCatalog;
3180
3524
  private subscribeCrudEditorChanges;
3181
3525
  private showSuccess;
3182
3526
  private showError;
@@ -3185,6 +3529,7 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3185
3529
  * Normaliza uma configuração de tabela para comparação consistente
3186
3530
  * Remove propriedades undefined, ordena arrays e objetos de forma consistente
3187
3531
  */
3532
+ private withCanonicalIdField;
3188
3533
  private normalizeTableConfig;
3189
3534
  /**
3190
3535
  * Realiza comparação profunda de objetos, ignorando ordem de propriedades
@@ -3247,6 +3592,107 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3247
3592
  static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableConfigEditor, "praxis-table-config-editor", never, {}, {}, never, never, true, never>;
3248
3593
  }
3249
3594
 
3595
+ interface PraxisTableWidgetEditorInputs {
3596
+ config?: TableConfig | null;
3597
+ resourcePath?: string | null;
3598
+ horizontalScroll?: 'auto' | 'wrap' | 'none';
3599
+ tableId?: string;
3600
+ componentInstanceId?: string;
3601
+ [key: string]: unknown;
3602
+ }
3603
+ interface PraxisTableWidgetEditorValue {
3604
+ inputs: PraxisTableWidgetEditorInputs;
3605
+ }
3606
+ declare class PraxisTableWidgetConfigEditor implements SettingsValueProvider$1, AfterViewInit, OnDestroy {
3607
+ inputs: PraxisTableWidgetEditorInputs | null;
3608
+ widgetKey?: string;
3609
+ tableEditor?: PraxisTableConfigEditor;
3610
+ readonly isDirty$: BehaviorSubject<boolean>;
3611
+ readonly isValid$: BehaviorSubject<boolean>;
3612
+ readonly isBusy$: BehaviorSubject<boolean>;
3613
+ private readonly subscription;
3614
+ ngAfterViewInit(): void;
3615
+ ngOnDestroy(): void;
3616
+ getSettingsValue(): PraxisTableWidgetEditorValue;
3617
+ onSave(): PraxisTableWidgetEditorValue;
3618
+ reset(): void;
3619
+ private initializeChildEditor;
3620
+ private buildValue;
3621
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableWidgetConfigEditor, never>;
3622
+ 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>;
3623
+ }
3624
+
3625
+ interface PraxisFilterWidgetEditorInputs {
3626
+ resourcePath?: string | null;
3627
+ fieldMetadata?: FieldMetadata[] | null;
3628
+ filterId?: string;
3629
+ formId?: string;
3630
+ componentInstanceId?: string;
3631
+ alwaysVisibleFields?: string[];
3632
+ alwaysVisibleFieldMetadataOverrides?: Record<string, Record<string, unknown>>;
3633
+ selectedFieldIds?: string[];
3634
+ allowSaveTags?: boolean;
3635
+ changeDebounceMs?: number;
3636
+ placeBooleansInActions?: boolean;
3637
+ showToggleLabels?: boolean;
3638
+ alwaysMinWidth?: number;
3639
+ alwaysColsMd?: number;
3640
+ alwaysColsLg?: number;
3641
+ confirmTagDelete?: boolean;
3642
+ tagColor?: 'primary' | 'accent' | 'warn' | 'basic';
3643
+ tagVariant?: 'filled' | 'outlined';
3644
+ tagButtonColor?: 'primary' | 'accent' | 'warn' | 'basic';
3645
+ actionsButtonColor?: 'primary' | 'accent' | 'warn' | 'basic';
3646
+ actionsVariant?: 'standard' | 'outlined';
3647
+ useInlineSearchableSelectVariant?: boolean;
3648
+ useInlineRangeVariant?: boolean;
3649
+ useInlineDateVariant?: boolean;
3650
+ useInlineDateRangeVariant?: boolean;
3651
+ useInlineTimeVariant?: boolean;
3652
+ useInlineTimeRangeVariant?: boolean;
3653
+ useInlineTreeSelectVariant?: boolean;
3654
+ overlayVariant?: 'card' | 'frosted';
3655
+ overlayBackdrop?: boolean;
3656
+ advancedOpenMode?: 'modal' | 'drawer';
3657
+ advancedClearButtonsEnabled?: boolean;
3658
+ persistenceKey?: string;
3659
+ showFilterSettings?: boolean;
3660
+ enableCustomization?: boolean;
3661
+ [key: string]: unknown;
3662
+ }
3663
+ interface PraxisFilterWidgetEditorValue {
3664
+ inputs: PraxisFilterWidgetEditorInputs;
3665
+ }
3666
+ declare class PraxisFilterWidgetConfigEditor implements SettingsValueProvider$1, OnDestroy {
3667
+ widgetKey?: string;
3668
+ set inputs(value: PraxisFilterWidgetEditorInputs | null);
3669
+ get inputs(): PraxisFilterWidgetEditorInputs | null;
3670
+ set filterSettings(component: FilterSettingsComponent | undefined);
3671
+ metadata: FieldMetadata[];
3672
+ settings: FilterConfig;
3673
+ configKey?: string;
3674
+ readonly isDirty$: BehaviorSubject<boolean>;
3675
+ readonly isValid$: BehaviorSubject<boolean>;
3676
+ readonly isBusy$: BehaviorSubject<boolean>;
3677
+ private currentInputs;
3678
+ private settingsEditor?;
3679
+ private subscription;
3680
+ ngOnDestroy(): void;
3681
+ getSettingsValue(): PraxisFilterWidgetEditorValue;
3682
+ onSave(): PraxisFilterWidgetEditorValue;
3683
+ reset(): void;
3684
+ private buildValue;
3685
+ private buildSettingsFromInputs;
3686
+ private projectSettingsToInputs;
3687
+ private normalizeSettings;
3688
+ private normalizeAdvancedOpenMode;
3689
+ private normalizeOverlayVariant;
3690
+ private cloneStringArray;
3691
+ private cloneRecord;
3692
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisFilterWidgetConfigEditor, never>;
3693
+ 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>;
3694
+ }
3695
+
3250
3696
  declare class DataFormatterComponent implements OnInit, OnChanges {
3251
3697
  private cdr;
3252
3698
  private formattingService;
@@ -3315,31 +3761,6 @@ declare class DataFormatterComponent implements OnInit, OnChanges {
3315
3761
  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
3762
  }
3317
3763
 
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
3764
  interface AnalyticsTableConfigAdapterOptions {
3344
3765
  title?: PraxisTextValue;
3345
3766
  subtitle?: PraxisTextValue;
@@ -3353,24 +3774,6 @@ declare class AnalyticsTableConfigAdapterService {
3353
3774
  static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableConfigAdapterService>;
3354
3775
  }
3355
3776
 
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
3777
  declare class AnalyticsTableContractService {
3375
3778
  private readonly analyticsSchema;
3376
3779
  private readonly resolver;
@@ -3406,6 +3809,15 @@ declare function buildTableApplyPlan(doc: TableAuthoringDocument, runtime?: Tabl
3406
3809
  }): TableApplyPlan;
3407
3810
  declare function serializeTableAuthoringDocument(doc: TableAuthoringDocument): unknown;
3408
3811
 
3812
+ /**
3813
+ * Manifesto de authoring canônico para o componente praxis-table.
3814
+ * Este arquivo define o contrato executável para que agentes de IA editem tabelas.
3815
+ *
3816
+ * @version 2.0.0
3817
+ * @status COMPLIANT - Alinhado com o contrato v2 e TableConfig canônico.
3818
+ */
3819
+ declare const PRAXIS_TABLE_AUTHORING_MANIFEST: ComponentAuthoringManifest;
3820
+
3409
3821
  declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3410
3822
  private readonly i18n;
3411
3823
  config: TableConfig;
@@ -3417,6 +3829,9 @@ declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3417
3829
  toolbarVisible: boolean;
3418
3830
  density: 'compact' | 'comfortable' | 'spacious';
3419
3831
  toolbarActionsPosition: 'top' | 'bottom' | 'both';
3832
+ toolbarAppearanceVariant: 'flat' | 'outlined' | 'elevated' | 'integrated';
3833
+ toolbarAppearanceShape: 'square' | 'rounded' | 'pill';
3834
+ toolbarAppearanceDivider: 'none' | 'start' | 'between-groups';
3420
3835
  toolbarHeight: number;
3421
3836
  toolbarActionsBackgroundColor: string;
3422
3837
  paginationEnabled: boolean;
@@ -3444,6 +3859,9 @@ declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3444
3859
  setToolbarVisible(value: boolean): void;
3445
3860
  setDensity(value: 'compact' | 'comfortable' | 'spacious'): void;
3446
3861
  setToolbarActionsPosition(value: 'top' | 'bottom' | 'both'): void;
3862
+ setToolbarAppearanceVariant(value: 'flat' | 'outlined' | 'elevated' | 'integrated'): void;
3863
+ setToolbarAppearanceShape(value: 'square' | 'rounded' | 'pill'): void;
3864
+ setToolbarAppearanceDivider(value: 'none' | 'start' | 'between-groups'): void;
3447
3865
  setToolbarHeight(value: number | string): void;
3448
3866
  setToolbarActionsBackgroundColor(value: string): void;
3449
3867
  setPaginationEnabled(value: boolean): void;
@@ -3471,6 +3889,7 @@ declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3471
3889
  tx(key: string, fallback: string): string;
3472
3890
  private emitConfig;
3473
3891
  private patchToolbar;
3892
+ private patchToolbarAppearance;
3474
3893
  private patchBehavior;
3475
3894
  private patchPagination;
3476
3895
  private patchSorting;
@@ -3506,7 +3925,7 @@ declare class ValueMappingEditorComponent implements OnInit, OnChanges {
3506
3925
  [key: number]: string;
3507
3926
  }>;
3508
3927
  mappingPairs: ValueMappingPair[];
3509
- dataSource: MatTableDataSource<ValueMappingPair, _angular_material_paginator_d_Zo1cMMo4.M>;
3928
+ dataSource: MatTableDataSource<ValueMappingPair, _angular_material_paginator.MatPaginator>;
3510
3929
  displayedColumns: string[];
3511
3930
  showImportDialog: boolean;
3512
3931
  importJsonText: string;
@@ -3652,7 +4071,6 @@ declare function providePraxisTableMetadata(): Provider;
3652
4071
  declare module '@praxisui/core' {
3653
4072
  interface AiCapabilityCategoryMap {
3654
4073
  meta: true;
3655
- bindings: true;
3656
4074
  columns: true;
3657
4075
  renderer: true;
3658
4076
  conditional: true;
@@ -3666,6 +4084,7 @@ declare module '@praxisui/core' {
3666
4084
  toolbar: true;
3667
4085
  actions: true;
3668
4086
  export: true;
4087
+ runtime: true;
3669
4088
  performance: true;
3670
4089
  messages: true;
3671
4090
  localization: true;
@@ -3738,18 +4157,23 @@ type ComponentEditPlanCapability = {
3738
4157
  declare const TABLE_COMPONENT_EDIT_PLAN_KIND = "praxis.table.component-edit-plan";
3739
4158
  declare const TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND = "praxis.table.component-edit-plan.batch";
3740
4159
  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"];
4160
+ 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';
4161
+ 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';
4162
+ 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
4163
  declare const TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS: Record<TableComponentEditChangeKind, string>;
3744
4164
  interface TableComponentEditPlan {
3745
4165
  kind?: typeof TABLE_COMPONENT_EDIT_PLAN_KIND;
3746
4166
  version?: typeof TABLE_COMPONENT_EDIT_PLAN_VERSION | string;
3747
4167
  componentId?: 'praxis-table' | string;
3748
4168
  changeKind: TableComponentEditChangeKind | string;
4169
+ operationId?: TableComponentEditOperationId | string;
3749
4170
  capabilityPath?: string;
3750
4171
  configPath?: string;
3751
4172
  field?: string;
3752
4173
  targetField?: string;
4174
+ target?: unknown;
4175
+ input?: unknown;
4176
+ params?: unknown;
3753
4177
  value?: unknown;
3754
4178
  condition?: unknown;
3755
4179
  style?: unknown;
@@ -3777,7 +4201,7 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3777
4201
  readonly $defs: {
3778
4202
  readonly changeKind: {
3779
4203
  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"];
4204
+ 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
4205
  };
3782
4206
  readonly capabilityPath: {
3783
4207
  readonly type: "string";
@@ -3812,6 +4236,9 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3812
4236
  readonly type: "string";
3813
4237
  readonly minLength: 1;
3814
4238
  };
4239
+ readonly tooltip: {
4240
+ readonly $ref: "#/$defs/tooltip";
4241
+ };
3815
4242
  };
3816
4243
  readonly anyOf: readonly [{
3817
4244
  readonly required: readonly ["text"];
@@ -3819,10 +4246,31 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3819
4246
  readonly required: readonly ["textField"];
3820
4247
  }];
3821
4248
  };
4249
+ readonly tooltip: {
4250
+ readonly type: "object";
4251
+ readonly additionalProperties: false;
4252
+ readonly required: readonly ["text"];
4253
+ readonly properties: {
4254
+ readonly text: {
4255
+ readonly type: "string";
4256
+ readonly minLength: 1;
4257
+ };
4258
+ readonly position: {
4259
+ readonly type: "string";
4260
+ readonly enum: readonly ["top", "right", "bottom", "left", "above", "below", "before", "after"];
4261
+ };
4262
+ readonly bgColor: {
4263
+ readonly type: "string";
4264
+ readonly minLength: 1;
4265
+ };
4266
+ readonly delayMs: {
4267
+ readonly type: "number";
4268
+ };
4269
+ };
4270
+ };
3822
4271
  readonly operation: {
3823
4272
  readonly type: "object";
3824
4273
  readonly additionalProperties: false;
3825
- readonly required: readonly ["changeKind", "field", "value"];
3826
4274
  readonly properties: {
3827
4275
  readonly kind: {
3828
4276
  readonly const: "praxis.table.component-edit-plan";
@@ -3833,6 +4281,12 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3833
4281
  readonly componentId: {
3834
4282
  readonly const: "praxis-table";
3835
4283
  };
4284
+ readonly operationId: {
4285
+ 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"];
4286
+ };
4287
+ readonly target: true;
4288
+ readonly input: true;
4289
+ readonly params: true;
3836
4290
  readonly changeKind: {
3837
4291
  readonly $ref: "#/$defs/changeKind";
3838
4292
  };
@@ -3861,6 +4315,13 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3861
4315
  readonly type: "string";
3862
4316
  };
3863
4317
  };
4318
+ readonly anyOf: readonly [{
4319
+ readonly required: readonly ["changeKind", "field", "value"];
4320
+ }, {
4321
+ readonly required: readonly ["operationId", "target", "input"];
4322
+ }, {
4323
+ readonly required: readonly ["operationId", "input"];
4324
+ }];
3864
4325
  readonly allOf: readonly [{
3865
4326
  readonly if: {
3866
4327
  readonly properties: {
@@ -3937,8 +4398,12 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3937
4398
  readonly required: readonly ["condition"];
3938
4399
  readonly anyOf: readonly [{
3939
4400
  readonly required: readonly ["badge"];
4401
+ }, {
4402
+ readonly required: readonly ["renderer"];
3940
4403
  }, {
3941
4404
  readonly required: readonly ["value"];
4405
+ }, {
4406
+ readonly required: readonly ["tooltip"];
3942
4407
  }];
3943
4408
  readonly properties: {
3944
4409
  readonly condition: {
@@ -3947,6 +4412,14 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3947
4412
  readonly badge: {
3948
4413
  readonly $ref: "#/$defs/badge";
3949
4414
  };
4415
+ readonly renderer: {
4416
+ readonly type: "object";
4417
+ readonly minProperties: 1;
4418
+ readonly additionalProperties: true;
4419
+ };
4420
+ readonly tooltip: {
4421
+ readonly $ref: "#/$defs/tooltip";
4422
+ };
3950
4423
  readonly value: {
3951
4424
  readonly $ref: "#/$defs/badge";
3952
4425
  };
@@ -4004,5 +4477,5 @@ declare function coerceTableComponentEditPlan(value: unknown): TableComponentEdi
4004
4477
  declare function compileTableComponentEditPlans(plans: TableComponentEditPlan[], currentConfig: TableConfig): TableComponentEditPlanCompileResult;
4005
4478
  declare function compileTableComponentEditPlan(plan: TableComponentEditPlan, currentConfig: TableConfig): TableComponentEditPlanCompileResult;
4006
4479
 
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 };
4480
+ 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 };
4481
+ 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 };