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

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-MXizgJYx.mjs +60987 -0
  35. package/fesm2022/praxisui-table-table-agentic-authoring-turn-flow-BJWah3jp.mjs +9641 -0
  36. package/fesm2022/praxisui-table-table-ai.adapter-DFyMRt4g.mjs +3999 -0
  37. package/fesm2022/praxisui-table.mjs +1 -51421
  38. package/filter-drawer-adapter/package.json +2 -1
  39. package/package.json +22 -15
  40. package/src/lib/praxis-table.json-api.md +1361 -0
  41. package/{index.d.ts → types/praxisui-table.d.ts} +608 -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, JsonLogicExpression, GlobalActionSpec, IconPickerService, SurfaceOpenPayload, GlobalActionField, FieldDefinition, PraxisJsonLogicService, TableConfigService, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, AnalyticsSchemaContractService, AnalyticsPresentationResolver, RichPresenterNode, RichComposeNode, AiCapabilityCategory, AiValueKind, AiCapability, AiCapabilityCatalog } from '@praxisui/core';
14
15
  import { FormGroup, FormControl, FormBuilder } from '@angular/forms';
15
16
  import { MatDialog } from '@angular/material/dialog';
17
+ import { BaseDynamicFieldComponent } from '@praxisui/dynamic-fields';
16
18
  import { CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';
19
+ import { MatSelect } from '@angular/material/select';
17
20
  import { PraxisDialog } from '@praxisui/dialog';
18
- import { PraxisAssistantTurnViewState, PraxisAssistantShellLayout, PraxisAssistantShellLabels, PraxisAssistantShellQuickReply, PraxisAssistantShellMessage } from '@praxisui/ai';
21
+ import { PraxisAssistantVoiceInputMode, PraxisAssistantTurnViewState, PraxisAssistantShellLayout, PraxisAssistantShellLabels, PraxisAssistantSessionSnapshot, PraxisAssistantShellQuickReply, PraxisAssistantRecommendedIntent, PraxisAssistantShellMessage } from '@praxisui/ai';
22
+ import { HttpClient } from '@angular/common/http';
19
23
  import { MatTabChangeEvent } from '@angular/material/tabs';
20
- import * as _praxisui_table_rule_builder from '@praxisui/table-rule-builder';
21
24
  import { RuleEffectDefinition } from '@praxisui/table-rule-builder';
22
- import { HttpClient } from '@angular/common/http';
23
- import * as _angular_material_paginator_d_Zo1cMMo4 from '@angular/material/paginator.d-Zo1cMMo4';
24
25
  import { MatCheckboxChange } from '@angular/material/checkbox';
25
26
 
26
27
  interface ActionLike {
@@ -35,22 +36,32 @@ interface ActionLike {
35
36
  }
36
37
  declare function getActionId(action: ActionLike): string;
37
38
 
39
+ declare const PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE: InjectionToken<TableToolbarAppearanceConfig>;
40
+ declare const PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS: InjectionToken<Record<string, TableToolbarAppearanceConfig>>;
41
+ declare function providePraxisTableToolbarAppearance(appearance: TableToolbarAppearanceConfig, presets?: Record<string, TableToolbarAppearanceConfig>): Provider[];
38
42
  declare class PraxisTableToolbar implements OnDestroy {
39
43
  private hostRef;
40
44
  private logger?;
41
45
  private i18n?;
46
+ private defaultAppearance?;
47
+ private tokenPresets?;
42
48
  config?: TableConfig;
49
+ appearance?: TableToolbarAppearanceConfig | null;
43
50
  backgroundColor: string | null;
44
51
  placement: 'header' | 'footer';
45
52
  showMain: boolean;
46
53
  showActionsGroup: boolean;
47
54
  showEndActions: boolean;
48
55
  showMobileActions: boolean;
56
+ exportBusy: boolean;
49
57
  evaluationContext: Record<string, any> | null;
50
58
  toolbarAction: EventEmitter<{
51
59
  action: string;
52
60
  actionConfig?: any;
53
61
  }>;
62
+ exportAction: EventEmitter<{
63
+ format: string;
64
+ }>;
54
65
  readonly getActionId: typeof getActionId;
55
66
  private readonly jsonLogic;
56
67
  private readonly validToolbarActionTypes;
@@ -62,11 +73,25 @@ declare class PraxisTableToolbar implements OnDestroy {
62
73
  private readonly warnedShortcutConflicts;
63
74
  private fallbackLogger?;
64
75
  private fallbackLoggerEnvironment;
65
- constructor(hostRef?: ElementRef<HTMLElement> | null, logger?: LoggerService | undefined, i18n?: PraxisI18nService | undefined);
76
+ constructor(hostRef?: ElementRef<HTMLElement> | null, logger?: LoggerService | undefined, i18n?: PraxisI18nService | undefined, defaultAppearance?: TableToolbarAppearanceConfig | undefined, tokenPresets?: Record<string, TableToolbarAppearanceConfig> | undefined);
77
+ getToolbarAriaLabel(): string;
78
+ getToolbarLeadingLabel(): string;
79
+ getToolbarActionsLabel(): string;
80
+ getToolbarConfigurationLabel(): string;
66
81
  getExportDataLabel(): string;
67
82
  getMoreActionsLabel(): string;
83
+ emitExportAction(event: Event, format: string): void;
68
84
  private tx;
69
85
  ngOnDestroy(): void;
86
+ getToolbarVariant(): TableToolbarAppearanceVariant;
87
+ getToolbarDensity(): TableToolbarAppearanceDensity;
88
+ getToolbarShape(): TableToolbarAppearanceShape;
89
+ getToolbarDivider(): TableToolbarAppearanceDivider;
90
+ getToolbarToken(name: TableToolbarTokenName): string | null;
91
+ private resolveToolbarAppearance;
92
+ private resolveToolbarAppearancePreset;
93
+ private mergeToolbarAppearance;
94
+ private normalizeTokenValue;
70
95
  private getNestedPropertyValue;
71
96
  private cloneForEmit;
72
97
  private getLogger;
@@ -111,8 +136,8 @@ declare class PraxisTableToolbar implements OnDestroy {
111
136
  private warnShortcutConflict;
112
137
  private sortActions;
113
138
  getExportIcon(format: string): string;
114
- static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableToolbar, [null, { optional: true; }, { optional: true; }]>;
115
- static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableToolbar, "praxis-table-toolbar", never, { "config": { "alias": "config"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "showMain": { "alias": "showMain"; "required": false; }; "showActionsGroup": { "alias": "showActionsGroup"; "required": false; }; "showEndActions": { "alias": "showEndActions"; "required": false; }; "showMobileActions": { "alias": "showMobileActions"; "required": false; }; "evaluationContext": { "alias": "evaluationContext"; "required": false; }; }, { "toolbarAction": "toolbarAction"; }, never, ["[advancedFilter]", "[toolbar]", "[end-actions]"], true, never>;
139
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableToolbar, [null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }]>;
140
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableToolbar, "praxis-table-toolbar", never, { "config": { "alias": "config"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "backgroundColor": { "alias": "backgroundColor"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "showMain": { "alias": "showMain"; "required": false; }; "showActionsGroup": { "alias": "showActionsGroup"; "required": false; }; "showEndActions": { "alias": "showEndActions"; "required": false; }; "showMobileActions": { "alias": "showMobileActions"; "required": false; }; "exportBusy": { "alias": "exportBusy"; "required": false; }; "evaluationContext": { "alias": "evaluationContext"; "required": false; }; }, { "toolbarAction": "toolbarAction"; "exportAction": "exportAction"; }, never, ["[advancedFilter]", "[toolbar]", "[end-actions]"], true, never>;
116
141
  }
117
142
 
118
143
  type ColumnDataType$1 = 'date' | 'number' | 'currency' | 'percentage' | 'string' | 'boolean' | 'custom';
@@ -213,6 +238,7 @@ declare class DataFormattingService {
213
238
  */
214
239
  formatValue(value: any, columnType: ColumnDataType$1, formatString: string, options?: DataFormattingOptions): any;
215
240
  private coerceValueToType;
241
+ private parseDateOnlyString;
216
242
  private normalizeNumericDateInput;
217
243
  private formatDate;
218
244
  private formatNumber;
@@ -335,12 +361,15 @@ type I18n = {
335
361
  searchPlaceholder: string;
336
362
  advanced: string;
337
363
  advancedTitle?: string;
364
+ advancedOpening?: string;
365
+ advancedUnavailable?: string;
338
366
  clear: string;
339
367
  apply: string;
340
368
  add?: string;
341
369
  filtersAdd?: string;
342
370
  filtersSearch?: string;
343
371
  addCount?: string;
372
+ addUnavailable?: string;
344
373
  pendingCount?: string;
345
374
  activeFiltersCount?: string;
346
375
  selectAll?: string;
@@ -423,10 +452,13 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
423
452
  showAddButton: boolean;
424
453
  /** Controla a exibição do botão de limpar filtros */
425
454
  showClearButton: boolean;
426
- /** Controla a exibição do botão de pesquisar/aplicar filtros */
455
+ /** Controla a exibição do botão de pesquisar/aplicar filtros em fluxos manuais. */
427
456
  showSearchButton: boolean;
428
457
  /** Exibir confirmação ao excluir atalho (tag) */
429
458
  confirmTagDelete: boolean;
459
+ private alwaysFieldComponentRefs;
460
+ private selectedFieldComponentRefs;
461
+ private toggleFieldComponentRefs;
430
462
  /** Move toggles/booleans simples para a área de ações */
431
463
  placeBooleansInActions: boolean;
432
464
  /** Mostrar rótulos dos toggles na área de ações */
@@ -513,6 +545,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
513
545
  private alwaysFormReset$;
514
546
  private dto;
515
547
  advancedOpen: boolean;
548
+ advancedOpening: boolean;
516
549
  advancedValid: boolean;
517
550
  activeFiltersCount: number;
518
551
  saving: boolean;
@@ -539,7 +572,8 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
539
572
  id: string;
540
573
  label: string;
541
574
  }>;
542
- private addItemsUpdateQueued;
575
+ readonly addSearchFieldId = "__praxis_filter_add_search__";
576
+ readonly addSelectAllFieldId = "__praxis_filter_add_select_all__";
543
577
  private applySchemaQueued;
544
578
  private fallbackLogger?;
545
579
  private fallbackLoggerEnvironment;
@@ -554,6 +588,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
554
588
  private _dbgLastToggleComponentsAt;
555
589
  overlayPositions: ConnectedPosition[];
556
590
  private advancedDebouncedSub?;
591
+ private advancedOpenRequestId;
557
592
  private lastActiveElement?;
558
593
  private lastSubmitAt;
559
594
  private resizeObs?;
@@ -592,6 +627,8 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
592
627
  private resolveInputDto;
593
628
  private resolveInitialDto;
594
629
  private syncFormsFromDto;
630
+ private refreshProgrammaticFilterFieldDisplays;
631
+ private refreshProgrammaticFilterFieldDisplay;
595
632
  ngOnInit(): Promise<void>;
596
633
  ngAfterViewInit(): void;
597
634
  onWindowResize(): void;
@@ -601,6 +638,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
601
638
  private computeIsMobile;
602
639
  ngOnChanges(changes: SimpleChanges): void;
603
640
  private areStringArraysEqual;
641
+ private normalizeFieldIdList;
604
642
  private areMetadataOverrideMapsEqual;
605
643
  /** Force-sync settings coming from parent table config updates. */
606
644
  applyExternalSettings(cfg?: Partial<FilterConfig>): void;
@@ -643,8 +681,15 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
643
681
  retrySchemaLoad(): void;
644
682
  private applySchemaMetas;
645
683
  private applySchemaMetasNow;
684
+ private withFilterMaterialDesignPolicy;
685
+ private withAdvancedDatePickerTouchPolicy;
686
+ private isAdvancedDatePickerControl;
687
+ private buildAdvancedFilterColumn;
688
+ private isCompositeRangeFilterField;
646
689
  private pickMetasByOrder;
647
690
  private hasRemoteOptionSource;
691
+ private normalizeFilterOptionEndpointMetadata;
692
+ private toOwningResourcePathForOptionsFilter;
648
693
  private withInferredFilterControlType;
649
694
  private isAllowedFilterControlType;
650
695
  private inferFilterControlType;
@@ -655,9 +700,9 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
655
700
  private mergeAlwaysVisibleMetadata;
656
701
  private mergeFieldMetadataOverride;
657
702
  ngDoCheck(): void;
658
- onAlwaysComponents(map: Map<string, any>): void;
659
- onSelectedComponents(map: Map<string, any>): void;
660
- onToggleComponents(map: Map<string, any>): void;
703
+ onAlwaysComponents(map: Map<string, ComponentRef<BaseDynamicFieldComponent>>): void;
704
+ onSelectedComponents(map: Map<string, ComponentRef<BaseDynamicFieldComponent>>): void;
705
+ onToggleComponents(map: Map<string, ComponentRef<BaseDynamicFieldComponent>>): void;
661
706
  onFieldInteraction(event: Event): void;
662
707
  openSelectedFieldEditor(): void;
663
708
  private isLocalE2eAuthoringOptInEnabled;
@@ -675,12 +720,16 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
675
720
  onAdvancedValidityChange(valid: boolean): void;
676
721
  onAddOpened(opened: boolean): void;
677
722
  onAddQuery(q: string): void;
723
+ openAddSelect(select: MatSelect): void;
724
+ hasAddableFields(): boolean;
725
+ private getAddableItems;
678
726
  private updateAddItems;
679
727
  trackById(_idx: number, it: {
680
728
  id: string;
681
729
  }): string;
682
730
  private isFilterFieldHidden;
683
731
  onAddSelectionChange(values: string[] | null | undefined): void;
732
+ private mergeSelectedFieldIds;
684
733
  private formatWithCount;
685
734
  getAddAriaLabel(): string;
686
735
  getAddTriggerLabel(): string;
@@ -725,9 +774,13 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
725
774
  private ensureAdvancedConfigReady;
726
775
  private focusSchemaRetryButton;
727
776
  private showAdvancedUnavailableFeedback;
777
+ private setAdvancedOpening;
778
+ private deferAdvancedOpen;
728
779
  private openAdvancedModal;
729
780
  private openAdvancedDrawer;
730
781
  toggleAdvanced(): void;
782
+ hasAdvancedFields(): boolean;
783
+ private getAdvancedCandidateMetas;
731
784
  private usesProvidedFieldMetadata;
732
785
  private applyProvidedFieldMetadata;
733
786
  private saveConfig;
@@ -739,6 +792,9 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
739
792
  private persistTags;
740
793
  private cleanFilterPayload;
741
794
  private upsertDtoValue;
795
+ private normalizeFilterFieldValue;
796
+ private getFilterFieldMetaByName;
797
+ private isEntityLookupFilterField;
742
798
  private isEffectivelyEmptyFilterValue;
743
799
  private syncFormsToDto;
744
800
  private updateDisplayedTags;
@@ -754,19 +810,85 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
754
810
  declare const PRAXIS_FILTER_COMPONENT_METADATA: ComponentDocMeta;
755
811
  declare function providePraxisFilterMetadata(): Provider;
756
812
 
813
+ type AnalyticsTableRow = Record<string, string | number | boolean | null>;
814
+ type AnalyticsTableContractSource = 'remote' | 'fallback';
815
+ interface AnalyticsTableViewModel {
816
+ config: TableConfig;
817
+ data: AnalyticsTableRow[];
818
+ }
819
+ interface AnalyticsTableContractDefinition<TKey extends string = string> {
820
+ key: TKey;
821
+ projectionId: string;
822
+ path: string;
823
+ title: PraxisTextValue;
824
+ subtitle?: PraxisTextValue;
825
+ fallbackProjection: PraxisAnalyticsProjection;
826
+ fallbackRows?: AnalyticsTableRow[];
827
+ }
828
+ interface AnalyticsTableContractLoadOptions<TKey extends string = string> {
829
+ cacheNamespace?: string;
830
+ queryContexts?: Partial<Record<TKey, PraxisDataQueryContext | null>>;
831
+ }
832
+ interface AnalyticsTableContractLoadResult<TKey extends string = string> {
833
+ views: Record<TKey, AnalyticsTableViewModel>;
834
+ sources: Record<TKey, AnalyticsTableContractSource>;
835
+ errors: Partial<Record<TKey, string>>;
836
+ }
837
+
838
+ declare class AnalyticsTableStatsApiService {
839
+ private readonly http;
840
+ private readonly apiUrl;
841
+ private readonly statsBuilder;
842
+ constructor(http: HttpClient, apiUrl: ApiUrlConfig);
843
+ execute(projection: PraxisAnalyticsProjection, queryContext?: PraxisDataQueryContext | null): Promise<AnalyticsTableRow[]>;
844
+ private toTableRows;
845
+ private resolveTimeSeriesCategory;
846
+ private resolveBucketCategory;
847
+ private projectMetricValues;
848
+ private resolveMetricValue;
849
+ private buildStatsUrl;
850
+ private applyQueryContext;
851
+ private normalizeError;
852
+ static ɵfac: i0.ɵɵFactoryDeclaration<AnalyticsTableStatsApiService, never>;
853
+ static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableStatsApiService>;
854
+ }
855
+
856
+ interface TableAiNavigationDestinationContext {
857
+ id?: string;
858
+ path: string;
859
+ label?: string;
860
+ description?: string;
861
+ source?: string;
862
+ tags?: string[];
863
+ materialized?: boolean;
864
+ }
865
+ interface TableAiNavigationContextPack {
866
+ source?: string;
867
+ destinations: TableAiNavigationDestinationContext[];
868
+ }
869
+ interface TableAiContext {
870
+ recordSurfaces?: RecordRelatedSurfaceContextPack | null;
871
+ navigationDestinations?: TableAiNavigationContextPack | null;
872
+ }
757
873
  type SchemaFieldHint = {
758
874
  name: string;
759
875
  label?: string;
760
876
  type?: string;
761
877
  controlType?: string;
762
878
  numericFormat?: string;
879
+ format?: string;
763
880
  options?: Array<Record<string, unknown> | string | number | boolean>;
764
881
  optionLabelKey?: string;
765
882
  optionValueKey?: string;
766
883
  enumValues?: string[];
767
884
  };
885
+ type FilterSchemaFieldHint = SchemaFieldHint & {
886
+ relatedColumnFields?: string[];
887
+ relatedColumnLabels?: string[];
888
+ };
768
889
  type PraxisDataQueryContextBridge = {
769
890
  filters?: Record<string, unknown> | null;
891
+ filterExpression?: PraxisQueryFilterExpression | null;
770
892
  sort?: string[] | null;
771
893
  limit?: number | null;
772
894
  page?: {
@@ -835,6 +957,8 @@ type RowActionRuntimeOptions = {
835
957
  type RuntimeRowAction = {
836
958
  id: string;
837
959
  action: string;
960
+ globalAction?: GlobalActionRef;
961
+ effects?: PraxisRuntimeGlobalActionEffect[];
838
962
  label?: string;
839
963
  icon?: string;
840
964
  color?: string;
@@ -842,6 +966,7 @@ type RuntimeRowAction = {
842
966
  disabled?: boolean;
843
967
  overflow?: boolean;
844
968
  __praxisDiscoveredAction?: ResourceActionCatalogItem;
969
+ __praxisDiscoveredSurface?: ResourceSurfaceCatalogItem;
845
970
  __praxisCapabilityDenied?: boolean;
846
971
  };
847
972
  type ExpansionDetailRuntimeStatus = 'idle' | 'loading' | 'ready' | 'error' | 'blocked';
@@ -865,17 +990,24 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
865
990
  private connectionStorage;
866
991
  private hostRef;
867
992
  private global;
868
- private resourceDiscovery;
993
+ private injector;
869
994
  private componentKeys;
870
995
  private loadingOrchestrator;
996
+ private globalActions;
871
997
  private loadingRenderer?;
872
998
  private route?;
873
999
  private logger?;
1000
+ private analyticsStatsApi?;
874
1001
  private static readonly CELL_ANIMATION_CHANGE_CACHE_LIMIT;
1002
+ private static readonly AI_SELECTION_ROW_LIMIT;
1003
+ private static readonly AI_SELECTION_ID_LIMIT;
1004
+ private static readonly AI_SELECTION_FIELD_LIMIT;
875
1005
  private static readonly ROW_DISCOVERY_SUCCESS_CACHE_TTL_MS;
876
1006
  private static readonly ROW_DISCOVERY_ERROR_CACHE_TTL_MS;
877
1007
  private static readonly ROW_DISCOVERY_CACHE_LIMIT;
878
1008
  private static readonly ROW_DISCOVERY_MAX_CONCURRENT_REQUESTS;
1009
+ private _resourceDiscovery?;
1010
+ private _resourceSurfaceOpenAdapter?;
879
1011
  readonly paginatorSelectConfig: MatPaginatorSelectConfig;
880
1012
  private static readonly ROW_ANIMATION_PRESETS;
881
1013
  private static readonly ROW_ANIMATION_PRESET_ALIASES;
@@ -894,12 +1026,24 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
894
1026
  crudContext: any;
895
1027
  filterCriteria: Record<string, any>;
896
1028
  queryContext: PraxisDataQueryContextBridge | null;
1029
+ aiContext: TableAiContext | null;
1030
+ aiAssistantVoiceInputMode: PraxisAssistantVoiceInputMode;
1031
+ aiAssistantVoiceLanguage: string;
1032
+ advancedFilterValue: Record<string, any>;
1033
+ advancedFilterRuntimeVisibleFields: string[];
1034
+ private advancedFilterAlwaysVisibleCacheKey;
1035
+ private advancedFilterAlwaysVisibleCache?;
1036
+ private advancedFilterMetadataOverridesCacheKey;
1037
+ private advancedFilterMetadataOverridesCacheSource?;
1038
+ private advancedFilterMetadataOverridesCache?;
897
1039
  rowClick: EventEmitter<any>;
1040
+ widgetEvent: EventEmitter<any>;
898
1041
  rowDoubleClick: EventEmitter<any>;
899
1042
  rowExpansionChange: EventEmitter<RowExpansionChangeEvent>;
900
1043
  rowAction: EventEmitter<any>;
901
1044
  toolbarAction: EventEmitter<any>;
902
1045
  bulkAction: EventEmitter<any>;
1046
+ exportAction: EventEmitter<any>;
903
1047
  columnReorder: EventEmitter<any>;
904
1048
  columnReorderAttempt: EventEmitter<any>;
905
1049
  beforeDelete: EventEmitter<any>;
@@ -909,9 +1053,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
909
1053
  afterBulkDelete: EventEmitter<any>;
910
1054
  bulkDeleteError: EventEmitter<any>;
911
1055
  schemaStatusChange: EventEmitter<any>;
1056
+ configChange: EventEmitter<_praxisui_core.TableConfigModern>;
912
1057
  metadataChange: EventEmitter<any>;
913
1058
  loadingStateChange: EventEmitter<LoadingState>;
914
1059
  collectionLinksChange: EventEmitter<RestApiLinks | null>;
1060
+ selectionChange: EventEmitter<any>;
915
1061
  private latestLoadingState;
916
1062
  paginator: MatPaginator;
917
1063
  sort: MatSort;
@@ -936,6 +1082,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
936
1082
  readonly isExpansionDetailRow: (index: number, row: any) => boolean;
937
1083
  columnReorderStatusMessage: string;
938
1084
  columnReorderVisualStatusMessage: string;
1085
+ exportBusy: boolean;
1086
+ exportStatusMessage: string;
939
1087
  private columnReorderStatusTimer;
940
1088
  private columnReorderVisualStatusTimer;
941
1089
  private columnReorderUndoSubscription;
@@ -948,6 +1096,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
948
1096
  private lastResolvedDataMode;
949
1097
  private localFilterFieldMetadataCache;
950
1098
  private localFilterFieldMetadataCacheKey;
1099
+ private remoteDataLoadSequence;
1100
+ private analyticsLoadSequence;
951
1101
  private uncontrolledExpandedRowKeys;
952
1102
  private readonly expansionOpaqueRefCacheLimit;
953
1103
  private expansionOpaqueRefByRowKey;
@@ -975,8 +1125,10 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
975
1125
  private rowDiscoveryMarkForCheckScheduled;
976
1126
  private lastRowDiscoveryScopeKey;
977
1127
  private readonly i18n;
1128
+ private readonly collectionExport;
978
1129
  private readonly paginatorIntl;
979
1130
  private schemaFieldsSnapshot;
1131
+ private filterSchemaFieldsSnapshot;
980
1132
  private runtimeSchemaMeta;
981
1133
  schemaError: boolean;
982
1134
  dataError: boolean;
@@ -988,6 +1140,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
988
1140
  shouldShowToolbarTopPlacement(): boolean;
989
1141
  shouldShowToolbarBottomPlacement(): boolean;
990
1142
  shouldRenderFooterToolbar(): boolean;
1143
+ hasTopToolbarStack(): boolean;
991
1144
  shouldShowFooterToolbarMain(): boolean;
992
1145
  shouldShowFooterToolbarEndActions(): boolean;
993
1146
  getToolbarActionsPosition(): 'top' | 'bottom' | 'both';
@@ -1008,6 +1161,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1008
1161
  getColumnTextAlignStyle(column: ColumnDefinition): string | null;
1009
1162
  getColumnWidthStyle(column: ColumnDefinition): string | null;
1010
1163
  getColumnHeaderAttrStyle(column: ColumnDefinition): string | null;
1164
+ getColumnHeaderNgStyle(column: ColumnDefinition): Record<string, string> | undefined;
1011
1165
  getColumnCellAttrStyle(column: ColumnDefinition): string | null;
1012
1166
  getTableElevationClassName(): string;
1013
1167
  private normalizeTableElevationLevel;
@@ -1024,6 +1178,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1024
1178
  hasBottomPaginator(): boolean;
1025
1179
  hasExplicitResourcePath(): boolean;
1026
1180
  hasLocalDataInput(): boolean;
1181
+ hasAnalyticsProjectionInput(): boolean;
1027
1182
  getDataMode(): DataMode;
1028
1183
  isRemoteMode(): boolean;
1029
1184
  isLocalMode(): boolean;
@@ -1050,6 +1205,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1050
1205
  shouldRenderAdvancedFilter(): boolean;
1051
1206
  getAdvancedFilterResourcePath(): string;
1052
1207
  getAdvancedFilterPersistenceKey(): string;
1208
+ getAdvancedFilterAlwaysVisibleFields(): string[] | undefined;
1209
+ getAdvancedFilterAlwaysVisibleFieldMetadataOverrides(): Record<string, Record<string, any>>;
1053
1210
  getAdvancedFilterFieldMetadata(): FieldMetadata[] | null | undefined;
1054
1211
  private buildLocalFilterMetadata;
1055
1212
  private buildLocalFilterMetadataCacheKey;
@@ -1070,8 +1227,21 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1070
1227
  get hostColumnBordersClass(): boolean;
1071
1228
  trackByRow(index: number, item: any): any;
1072
1229
  getSchemaFieldsSnapshot(): SchemaFieldHint[];
1230
+ getFilterSchemaFieldsSnapshot(): FilterSchemaFieldHint[];
1231
+ getResourceCapabilityDigest(): ResourceCapabilityDigest | null;
1232
+ ensureFilterSchemaFieldsSnapshot(): Promise<void>;
1233
+ ensureAiAssistantRecordSurfaceContext(): Promise<void>;
1234
+ getAiAssistantRecordSurfacesContext(): RecordRelatedSurfaceContextPack | null;
1235
+ getAiAssistantSelectedRowsContext(): Record<string, any> | null;
1236
+ private ensureAiAssistantRowCapabilitySnapshot;
1237
+ private buildCapabilitySnapshotFromSurfaceCatalog;
1238
+ private buildAiAssistantResourceSurfaceContexts;
1239
+ private getAiAssistantRecordSurfaceProbeRows;
1240
+ private buildRecordRelatedSurfaceContextFromResourceSurface;
1241
+ private humanizeResourceSurfaceLabel;
1073
1242
  aiAdapter: any;
1074
1243
  private aiAdapterLoadStarted;
1244
+ private aiAssistantOpenAfterAdapterLoad;
1075
1245
  aiAssistantOpen: boolean;
1076
1246
  aiAssistantPrompt: string;
1077
1247
  aiAssistantViewState: PraxisAssistantTurnViewState | null;
@@ -1080,7 +1250,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1080
1250
  private aiAssistantController;
1081
1251
  private aiAssistantStateSubscription;
1082
1252
  private readonly aiApi;
1253
+ private readonly assistantSessions;
1083
1254
  private readonly aiTurnOrchestrator;
1255
+ private readonly aiAssistantSessionEffect;
1084
1256
  private computedContextCache;
1085
1257
  private computedFieldNames;
1086
1258
  private readonly jsonLogic;
@@ -1118,6 +1290,10 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1118
1290
  private recomputeLocalView;
1119
1291
  private resolveLocalSortField;
1120
1292
  private setSchemaFieldsSnapshot;
1293
+ private setFilterSchemaFieldsSnapshot;
1294
+ private inferFilterSchemaSourceFields;
1295
+ private resolveFilterSchemaRelatedColumns;
1296
+ private normalizeFieldAlias;
1121
1297
  private normalizeSchemaOptions;
1122
1298
  private normalizeEnumValues;
1123
1299
  private normalizeSchemaKey;
@@ -1127,21 +1303,61 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1127
1303
  private tableConfigKey;
1128
1304
  private filterConfigKey;
1129
1305
  private ensureConfigDefaults;
1306
+ private mergePersistedTableConfigWithInput;
1307
+ private reconcileHostDeclaredTableContract;
1308
+ private reconcileHostDeclaredColumns;
1309
+ private reconcileHostDeclaredRowActions;
1310
+ private reconcileHostDeclaredExport;
1311
+ private normalizePersistedExportFormats;
1312
+ private normalizePersistedRowActionIds;
1313
+ private normalizePersistedColumnIds;
1314
+ private clonePlainObject;
1130
1315
  private setShowToolbar;
1131
1316
  private shouldExposeToolbar;
1132
- constructor(cdr: ChangeDetectorRef, settingsPanel: SettingsPanelService, crudService: GenericCrudService<any, any>, tableDefaultsProvider: TableDefaultsProvider, filterConfig: FilterConfigService, formattingService: DataFormattingService, pxDialog: PraxisDialog, snackBar: MatSnackBar, asyncConfigStorage: AsyncConfigStorage, connectionStorage: ConnectionStorage, hostRef: ElementRef<HTMLElement>, global: GlobalConfigService, resourceDiscovery: ResourceDiscoveryService, componentKeys: ComponentKeyService, loadingOrchestrator: LoadingOrchestrator, loadingRenderer?: PraxisLoadingRenderer | undefined, route?: ActivatedRoute | undefined, logger?: LoggerService | undefined);
1317
+ 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);
1318
+ private get resourceDiscovery();
1319
+ private get resourceSurfaceOpenAdapter();
1133
1320
  private ensureAiAdapterLoaded;
1134
1321
  openAiAssistant(): void;
1322
+ aiAssistantTriggerTestId(position: string): string;
1323
+ hasMinimizedAiAssistantSession(): boolean;
1324
+ aiAssistantTriggerIcon(): string;
1325
+ aiAssistantTriggerBadge(): string;
1326
+ aiAssistantTriggerLabel(): string;
1327
+ aiAssistantTriggerTooltip(): string;
1328
+ openAiAssistantFromSession(session: PraxisAssistantSessionSnapshot): void;
1135
1329
  closeAiAssistant(): void;
1136
1330
  onAiAssistantPromptChange(prompt: string): void;
1137
1331
  onAiAssistantSubmit(prompt: string): void;
1138
1332
  onAiAssistantApply(): void;
1333
+ private shouldMinimizeAiAssistantAfterApply;
1334
+ private isMaterializedRowActionPatch;
1335
+ private asPlainRecord;
1336
+ onAiAssistantRetry(): void;
1337
+ onAiAssistantCancel(): void;
1139
1338
  onAiAssistantQuickReply(reply: PraxisAssistantShellQuickReply): void;
1339
+ getAiAssistantRecommendedIntents(): readonly PraxisAssistantRecommendedIntent[];
1340
+ private getAiAssistantCapabilityDiscoveryRecommendations;
1341
+ onAiAssistantRecommendedIntent(intent: PraxisAssistantRecommendedIntent): void;
1342
+ private getAiAssistantRecommendationResponseContract;
1140
1343
  onAiAssistantEditMessage(message: PraxisAssistantShellMessage): void;
1141
1344
  onAiAssistantResendMessage(message: PraxisAssistantShellMessage): void;
1142
1345
  onAiAssistantLayoutChange(layout: PraxisAssistantShellLayout): void;
1143
1346
  private initializeAiAssistantController;
1144
1347
  private buildAiAssistantContextItems;
1348
+ private interpolateAiAssistantContextValue;
1349
+ private aiAssistantSelectedRecordsValue;
1350
+ private buildAiAssistantContextSnapshot;
1351
+ private syncAiAssistantSession;
1352
+ private assistantContextRuntimeLocale;
1353
+ private refreshAiAssistantContextAfterSelectionChange;
1354
+ private hasAiAssistantSessionState;
1355
+ private resolveAiAssistantSessionId;
1356
+ private resolveAiAssistantOwnerId;
1357
+ private resolveAiAssistantRouteKey;
1358
+ private resolveAiAssistantSummary;
1359
+ private resolveAiAssistantBadge;
1360
+ private resolveAiAssistantIcon;
1145
1361
  private emitLoadingState;
1146
1362
  private hasResolvedRemoteDataLoad;
1147
1363
  private isTableDataLoading;
@@ -1167,6 +1383,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1167
1383
  onPageChange(event: PageEvent): void;
1168
1384
  onSortChange(event: Sort): void;
1169
1385
  onRowClicked(row: any, index: number, event?: MouseEvent): void;
1386
+ requestRecordSurfaceOpen(surface: Record<string, unknown>): boolean;
1387
+ private resolveResourceRecordSurfaceContext;
1388
+ private openResourceRecordSurface;
1170
1389
  isRowExpansionRuntimeEnabled(): boolean;
1171
1390
  isExpansionIconTriggerEnabled(): boolean;
1172
1391
  isRowExpandable(row: any, index?: number): boolean;
@@ -1359,22 +1578,67 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1359
1578
  private emitRowActionEvent;
1360
1579
  private showConfirmDialog;
1361
1580
  private executeDeleteAction;
1581
+ private dispatchRowAction;
1362
1582
  private cloneForEmit;
1363
1583
  private interpolateActionMessageTemplate;
1364
1584
  private buildActionFeedbackContext;
1365
1585
  private resolveActionFeedbackMessage;
1366
1586
  private showActionFeedbackMessage;
1367
1587
  private emitEventWithActionFeedback;
1588
+ private executeConfiguredGlobalAction;
1589
+ private resolveConfiguredGlobalActionRef;
1590
+ private resolveActionGlobalActionRef;
1591
+ private resolveGlobalActionPayload;
1592
+ private buildGlobalActionTemplateContext;
1593
+ private resolveGlobalActionTemplateValue;
1594
+ private isDeferredTemplateExpressionKey;
1595
+ private interpolateGlobalActionTemplate;
1596
+ private shouldEmitLocalForGlobalAction;
1368
1597
  private resolveBulkValidationMessage;
1369
1598
  private hasValidBulkSelectionCount;
1370
1599
  private showBulkConfirmDialog;
1371
1600
  onToolbarAction(event: {
1372
1601
  action: string;
1373
1602
  actionConfig?: any;
1374
- }): void;
1603
+ }): Promise<void>;
1604
+ private resolveBulkExportFormat;
1605
+ private isBulkExportActionKey;
1606
+ private normalizeExportFormat;
1607
+ private isExportFormatEnabled;
1608
+ private getFirstEnabledExportFormat;
1609
+ onExportAction(event: {
1610
+ format: string;
1611
+ scope?: PraxisExportScope;
1612
+ }): Promise<void>;
1613
+ canRunExportAction(format: unknown): boolean;
1614
+ private shouldBlockSelectedExportWithoutSelection;
1615
+ private buildTableExportRequest;
1616
+ private resolveEffectiveExportScope;
1617
+ private resolveTableExportLoadedItems;
1618
+ private computeLocalExportRows;
1619
+ private buildTableExportFields;
1620
+ private buildTableExportFormatOptions;
1621
+ private buildTableExportLocalization;
1622
+ private resolveColumnExportFormat;
1623
+ private buildColumnExportPresentation;
1624
+ private resolveColumnExportCurrency;
1625
+ private downloadExportResult;
1626
+ private triggerExportDownload;
1627
+ private resolveExportFileName;
1628
+ private getExportFileExtension;
1629
+ private getExportMimeType;
1630
+ private showExportFeedback;
1375
1631
  onAdvancedFilterSubmit(criteria: Record<string, any>): void;
1376
1632
  onAdvancedFilterChange(criteria: Record<string, any>): void;
1377
1633
  onAdvancedFilterClear(): void;
1634
+ private applyAdvancedFilterCriteria;
1635
+ private setAdvancedFilterCriteria;
1636
+ private syncAdvancedFilterValueFromCriteria;
1637
+ private deriveRuntimeVisibleAdvancedFilterFields;
1638
+ private isEmptyAdvancedFilterCriterionValue;
1639
+ private mergeAdvancedFilterFieldIds;
1640
+ private getRuntimePromotedAdvancedFilterFields;
1641
+ private toPlainRecord;
1378
1642
  private saveConfigWithAck;
1379
1643
  private clearConfigWithAck;
1380
1644
  private persistHorizontalScrollInput;
@@ -1438,7 +1702,18 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1438
1702
  */
1439
1703
  private verifyServerSchemaVersion;
1440
1704
  private loadSchema;
1705
+ private loadFilterSchemaSnapshot;
1441
1706
  private convertFieldToColumn;
1707
+ private applySchemaFieldPresentation;
1708
+ private resolveSchemaCurrencyFormat;
1709
+ private resolveSchemaBooleanFormat;
1710
+ private resolveSchemaValueMapping;
1711
+ private resolveSchemaOptionsValueMapping;
1712
+ private normalizePresentationToken;
1713
+ private firstNonEmptyString;
1714
+ private firstFiniteNumber;
1715
+ private humanizeSchemaEnumValue;
1716
+ private capitalizeSchemaEnumPart;
1442
1717
  /**
1443
1718
  * Apply automatic renderer hints based on schema field metadata.
1444
1719
  * Runs only on initial bootstrap (when columns are derived from schema).
@@ -1461,11 +1736,14 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1461
1736
  private buildRowDiscoveryOptions;
1462
1737
  private getRowLinks;
1463
1738
  private resolveRowDiscoveryHref;
1739
+ private resolveRowSurfaceDiscoveryHref;
1464
1740
  private prefetchRowDiscovery;
1465
1741
  private ensureRowDiscovery;
1466
1742
  private ensureRowCapabilitySnapshot;
1467
1743
  private ensureRowActionCatalog;
1468
1744
  private getCachedRowCapabilitySnapshot;
1745
+ private getAiAssistantRowDiscoveryLinks;
1746
+ private mergeRowCapabilitySnapshots;
1469
1747
  private hasResolvedRowActionCatalog;
1470
1748
  isRowDiscoveryPending(row: any): boolean;
1471
1749
  private getCachedRowActionCatalog;
@@ -1506,6 +1784,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1506
1784
  private pruneRowDiscoveryCaches;
1507
1785
  private pruneRowDiscoveryCache;
1508
1786
  private fetchData;
1787
+ private resolveAnalyticsProjection;
1788
+ private fetchAnalyticsProjectionData;
1509
1789
  private getEffectiveFilterCriteria;
1510
1790
  retryData(): void;
1511
1791
  reloadSchema(): void;
@@ -1518,9 +1798,35 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1518
1798
  * 3. format (data formatting like dates, numbers, currency)
1519
1799
  */
1520
1800
  getCellValue(rowData: any, column: ColumnDefinition): any;
1801
+ private applyImplicitRuntimeCellPresentation;
1802
+ private shouldHumanizeRuntimeEnumCell;
1803
+ private resolveCellFormattingType;
1804
+ private normalizeReadonlyEntityLookupCellValue;
1805
+ private toEntityLookupDisplayToken;
1806
+ private isEntityLookupDisplayCandidate;
1807
+ private toEntityLookupDisplayPrimitive;
1521
1808
  private resolveImplicitFormat;
1522
1809
  getCellClasses(rowData: any, column: ColumnDefinition): string[] | undefined;
1523
1810
  getCellNgStyle(rowData: any, column: ColumnDefinition): Record<string, string> | undefined;
1811
+ private normalizeInlineStyleRecord;
1812
+ private normalizeConditionalStyleRules;
1813
+ private normalizeConditionalStyleRecord;
1814
+ getCellTooltip(rowData: any, column: ColumnDefinition): string | null;
1815
+ getCellTooltipPosition(rowData: any, column: ColumnDefinition): 'above' | 'below' | 'left' | 'right' | 'before' | 'after';
1816
+ private resolveConditionalStyleTooltipText;
1817
+ private resolveRendererTooltipText;
1818
+ private normalizeTooltipPosition;
1819
+ private normalizeConditionalStyleEffects;
1820
+ private hasConditionalStyleEffectPayload;
1821
+ private resolveConditionalStyleClasses;
1822
+ private resolveConditionalStyleObject;
1823
+ private compileConditionalStyleEffect;
1824
+ private normalizeConditionalRendererRules;
1825
+ private normalizeObjectRecord;
1826
+ private buildColumnRendererOverrideFromEffects;
1827
+ private buildColumnRendererFromEffect;
1828
+ private resolveRuleAnimationFromEffects;
1829
+ private resolveRowTooltipFromEffects;
1524
1830
  private resetComputedContextCache;
1525
1831
  private ensureEffectiveCellRenderCache;
1526
1832
  private ensureCellAnimationPreviousValuesByRowId;
@@ -1532,6 +1838,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1532
1838
  private buildComputedSignature;
1533
1839
  private stringifyDependencyValue;
1534
1840
  private buildComputedValueMap;
1841
+ private collectComputedColumns;
1842
+ private evaluateCanonicalComputedColumns;
1843
+ private collectComputedExpressionDependencies;
1844
+ private collectJsonLogicVarDependencies;
1845
+ private resolveJsonLogicVarPath;
1535
1846
  private buildEvaluationContext;
1536
1847
  private getJsonLogicEvaluationOptions;
1537
1848
  private resolveJsonLogicUserTimeZone;
@@ -1670,6 +1981,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1670
1981
  private buildEffectiveCellRenderCacheKey;
1671
1982
  private getEffectiveCellRenderResult;
1672
1983
  private getEffectiveRenderer;
1984
+ private resolveEffectiveRendererTooltip;
1673
1985
  getLinkHref(row: any, column: ColumnDefinition): string | null;
1674
1986
  getLinkText(row: any, column: ColumnDefinition): string;
1675
1987
  getLinkRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
@@ -1691,6 +2003,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1691
2003
  private buildRendererActionRuntimeOptions;
1692
2004
  onButtonClick(row: any, column: ColumnDefinition, event: Event): void;
1693
2005
  getChipText(row: any, column: ColumnDefinition): string | null;
2006
+ private getRendererTextFieldValue;
1694
2007
  getChipRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
1695
2008
  getChipIcon(row: any, column: ColumnDefinition): string | null;
1696
2009
  getChipClasses(row: any, column: ColumnDefinition): string[];
@@ -1713,6 +2026,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1713
2026
  private deriveAvatarInitials;
1714
2027
  getAvatarInitials(row: any, column: ColumnDefinition): string;
1715
2028
  getAvatarRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
2029
+ private getAvatarRichContentStyle;
1716
2030
  getAvatarShape(row: any, column: ColumnDefinition): 'square' | 'rounded' | 'circle' | undefined;
1717
2031
  getAvatarStyle(row: any, column: ColumnDefinition): Record<string, string> | null;
1718
2032
  getToggleState(row: any, column: ColumnDefinition): boolean;
@@ -1768,6 +2082,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1768
2082
  private reconcileSelectionAfterDataChange;
1769
2083
  private getComparableRowIdentity;
1770
2084
  getIdField(): string;
2085
+ private resolveConfigMetaIdField;
1771
2086
  private syncRuntimeSchemaMetaFromConfig;
1772
2087
  private getEffectiveMetadataSnapshot;
1773
2088
  getActionId(action: any): string;
@@ -1785,6 +2100,21 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1785
2100
  isAllSelected(): boolean;
1786
2101
  toggleRow(row: any): void;
1787
2102
  private selectRowFromUserInteraction;
2103
+ private emitSelectionChange;
2104
+ private getSelectedRowsSnapshot;
2105
+ private getAiAssistantSelectionFields;
2106
+ private buildAiAssistantSelectionFilterCandidates;
2107
+ private inferAiAssistantFilterCriterionKind;
2108
+ private buildAiAssistantRangeFilterCandidate;
2109
+ private buildAiAssistantSetFilterCandidate;
2110
+ private resolveAiAssistantSetFilterDisplayValue;
2111
+ private aiAssistantSetFilterDisplayFieldCandidates;
2112
+ private resolveAiAssistantFilterSourceFields;
2113
+ private normalizeAiAssistantNumericRangeValue;
2114
+ private normalizeAiAssistantDateRangeValue;
2115
+ private sanitizeAiAssistantSelectedRow;
2116
+ private safeStringifyAiAssistantValue;
2117
+ private isSensitiveAiAssistantField;
1788
2118
  private getRowActionsConfig;
1789
2119
  getActionsHeaderAlign(): string;
1790
2120
  getActionsHeaderTooltip(): string | undefined;
@@ -1809,11 +2139,24 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1809
2139
  private splitVisibleRowActionsFromVisible;
1810
2140
  private decorateConfiguredRowAction;
1811
2141
  private getDiscoveredRowWorkflowActions;
2142
+ private getDiscoveredRowSurfaceActionsFromSnapshot;
1812
2143
  private getDiscoveredRowWorkflowActionsFromCatalog;
1813
2144
  private supportsRowCrudAction;
1814
2145
  private isCapabilityManagedCrudRowAction;
1815
2146
  private findItemWorkflowAction;
2147
+ private findItemSurface;
2148
+ private isRowSurfaceAction;
2149
+ private isResourceSurfaceCatalogItem;
2150
+ private toRecordSurfaceActionConfig;
2151
+ private resolveConfiguredSurfaceOpenAction;
2152
+ private recordSurfaceActionAliases;
2153
+ private normalizeSurfaceActionAlias;
2154
+ private isWritableRowSurface;
2155
+ private isReadableRowSurface;
2156
+ private getDiscoveredSurfaceIcon;
2157
+ private getDiscoveredSurfaceColor;
1816
2158
  private getUnavailableWorkflowMessage;
2159
+ private getUnavailableSurfaceMessage;
1817
2160
  private normalizeActionId;
1818
2161
  private isActionVisible;
1819
2162
  trackAction(index: number, item: any): any;
@@ -1827,8 +2170,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1827
2170
  getRowMenuIcon(): string;
1828
2171
  private scheduleRowDiscoveryMarkForCheck;
1829
2172
  ngOnDestroy(): void;
1830
- static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTable, [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; }]>;
1831
- static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTable, "praxis-table", never, { "config": { "alias": "config"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; "data": { "alias": "data"; "required": false; }; "tableId": { "alias": "tableId"; "required": true; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "autoDelete": { "alias": "autoDelete"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "crudContext": { "alias": "crudContext"; "required": false; }; "filterCriteria": { "alias": "filterCriteria"; "required": false; }; "queryContext": { "alias": "queryContext"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "dense": { "alias": "dense"; "required": false; }; }, { "rowClick": "rowClick"; "rowDoubleClick": "rowDoubleClick"; "rowExpansionChange": "rowExpansionChange"; "rowAction": "rowAction"; "toolbarAction": "toolbarAction"; "bulkAction": "bulkAction"; "columnReorder": "columnReorder"; "columnReorderAttempt": "columnReorderAttempt"; "beforeDelete": "beforeDelete"; "afterDelete": "afterDelete"; "deleteError": "deleteError"; "beforeBulkDelete": "beforeBulkDelete"; "afterBulkDelete": "afterBulkDelete"; "bulkDeleteError": "bulkDeleteError"; "schemaStatusChange": "schemaStatusChange"; "metadataChange": "metadataChange"; "loadingStateChange": "loadingStateChange"; "collectionLinksChange": "collectionLinksChange"; }, ["toolbar", "projectedFilter"], ["[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]"], true, never>;
2173
+ 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; }]>;
2174
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTable, "praxis-table", never, { "config": { "alias": "config"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; "data": { "alias": "data"; "required": false; }; "tableId": { "alias": "tableId"; "required": true; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "autoDelete": { "alias": "autoDelete"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "crudContext": { "alias": "crudContext"; "required": false; }; "filterCriteria": { "alias": "filterCriteria"; "required": false; }; "queryContext": { "alias": "queryContext"; "required": false; }; "aiContext": { "alias": "aiContext"; "required": false; }; "aiAssistantVoiceInputMode": { "alias": "aiAssistantVoiceInputMode"; "required": false; }; "aiAssistantVoiceLanguage": { "alias": "aiAssistantVoiceLanguage"; "required": false; }; "horizontalScroll": { "alias": "horizontalScroll"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "dense": { "alias": "dense"; "required": false; }; }, { "rowClick": "rowClick"; "widgetEvent": "widgetEvent"; "rowDoubleClick": "rowDoubleClick"; "rowExpansionChange": "rowExpansionChange"; "rowAction": "rowAction"; "toolbarAction": "toolbarAction"; "bulkAction": "bulkAction"; "exportAction": "exportAction"; "columnReorder": "columnReorder"; "columnReorderAttempt": "columnReorderAttempt"; "beforeDelete": "beforeDelete"; "afterDelete": "afterDelete"; "deleteError": "deleteError"; "beforeBulkDelete": "beforeBulkDelete"; "afterBulkDelete": "afterBulkDelete"; "bulkDeleteError": "bulkDeleteError"; "schemaStatusChange": "schemaStatusChange"; "configChange": "configChange"; "metadataChange": "metadataChange"; "loadingStateChange": "loadingStateChange"; "collectionLinksChange": "collectionLinksChange"; "selectionChange": "selectionChange"; }, ["toolbar", "projectedFilter"], ["[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]"], true, never>;
1832
2175
  static ngAcceptInputType_enableCustomization: unknown;
1833
2176
  }
1834
2177
 
@@ -1841,7 +2184,6 @@ interface EditorDocument<TConfig, TBindings = unknown> {
1841
2184
  type TableHorizontalScroll = 'auto' | 'wrap' | 'none';
1842
2185
  interface TableBindings {
1843
2186
  resourcePath?: string | null;
1844
- idField?: string;
1845
2187
  horizontalScroll?: TableHorizontalScroll;
1846
2188
  }
1847
2189
  interface TableAuthoringDocument extends EditorDocument<TableConfig, TableBindings> {
@@ -1898,7 +2240,6 @@ interface TableApplyPlan {
1898
2240
  };
1899
2241
  diff?: {
1900
2242
  resourcePathChanged?: boolean;
1901
- idFieldChanged?: boolean;
1902
2243
  horizontalScrollChanged?: boolean;
1903
2244
  requiresDataRefresh?: boolean;
1904
2245
  };
@@ -2371,6 +2712,8 @@ interface ToolbarAction {
2371
2712
  /** Material button appearance: filled (flat), outlined (stroked), elevated (raised), text, tonal */
2372
2713
  appearance?: 'filled' | 'outlined' | 'elevated' | 'text' | 'tonal';
2373
2714
  action: string;
2715
+ globalAction?: GlobalActionRef;
2716
+ effects?: PraxisRuntimeGlobalActionEffect[];
2374
2717
  position: 'start' | 'end';
2375
2718
  order?: number;
2376
2719
  disabled?: boolean;
@@ -2378,7 +2721,7 @@ interface ToolbarAction {
2378
2721
  shortcut?: string;
2379
2722
  shortcutScope?: 'toolbar' | 'global';
2380
2723
  tooltip?: string;
2381
- visibleWhen?: string;
2724
+ visibleWhen?: JsonLogicExpression | null;
2382
2725
  children?: ToolbarAction[];
2383
2726
  }
2384
2727
  interface RowAction {
@@ -2386,11 +2729,15 @@ interface RowAction {
2386
2729
  label: string;
2387
2730
  icon: string;
2388
2731
  action: string;
2732
+ globalAction?: GlobalActionRef;
2733
+ effects?: PraxisRuntimeGlobalActionEffect[];
2389
2734
  color?: 'primary' | 'accent' | 'warn';
2390
2735
  tooltip?: string;
2391
2736
  requiresConfirmation?: boolean;
2392
2737
  autoDelete?: boolean;
2393
2738
  separator?: boolean;
2739
+ visibleWhen?: JsonLogicExpression | null;
2740
+ disabledWhen?: JsonLogicExpression | null;
2394
2741
  conditional?: string;
2395
2742
  }
2396
2743
  interface BulkAction {
@@ -2398,6 +2745,8 @@ interface BulkAction {
2398
2745
  label: string;
2399
2746
  icon: string;
2400
2747
  action: string;
2748
+ globalAction?: GlobalActionRef;
2749
+ effects?: PraxisRuntimeGlobalActionEffect[];
2401
2750
  color?: 'primary' | 'accent' | 'warn';
2402
2751
  tooltip?: string;
2403
2752
  requiresConfirmation?: boolean;
@@ -2411,6 +2760,25 @@ interface ToolbarActionsChange {
2411
2760
  value: any;
2412
2761
  fullConfig: TableConfig;
2413
2762
  }
2763
+ type GlobalActionCatalogOption = GlobalActionCatalogEntry & {
2764
+ param?: {
2765
+ required?: boolean;
2766
+ label?: string;
2767
+ placeholder?: string;
2768
+ hint?: string;
2769
+ };
2770
+ };
2771
+ type EditableTableAction = {
2772
+ id?: string;
2773
+ label?: string;
2774
+ action?: string;
2775
+ globalAction?: GlobalActionRef;
2776
+ effects?: PraxisRuntimeGlobalActionEffect[];
2777
+ position?: string;
2778
+ appearance?: string;
2779
+ visibleWhen?: JsonLogicExpression | null;
2780
+ disabledWhen?: JsonLogicExpression | null;
2781
+ };
2414
2782
  type ToolbarShortcutScope = 'toolbar' | 'global';
2415
2783
  interface InternalActionSpec {
2416
2784
  id: string;
@@ -2431,14 +2799,14 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
2431
2799
  editingToolbarActionIndex: number | null;
2432
2800
  editingRowActionIndex: number | null;
2433
2801
  editingBulkActionIndex: number | null;
2434
- readonly globalActionCatalog: GlobalActionSpec[];
2802
+ private readonly i18n;
2803
+ readonly globalActionCatalog: GlobalActionCatalogOption[];
2435
2804
  get internalActionCatalog(): InternalActionSpec[];
2436
2805
  readonly customActionValue = "__custom__";
2437
2806
  readonly validShortcutScopes: ToolbarShortcutScope[];
2438
2807
  private readonly actionFieldDrafts;
2439
2808
  private readonly actionFieldErrors;
2440
2809
  private readonly warnedInvalidShortcutScopes;
2441
- private readonly i18n;
2442
2810
  private destroy$;
2443
2811
  constructor(fb: FormBuilder, iconPicker: IconPickerService);
2444
2812
  tx(key: string, fallback: string): string;
@@ -2467,56 +2835,37 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
2467
2835
  private removeAddToolbarAction;
2468
2836
  private syncAddFormFromActions;
2469
2837
  private updateConfig;
2470
- getActionSelectValue(value?: string): string;
2471
- getActionParam(value?: string): string;
2472
- getActionCustomValue(value?: string): string;
2838
+ getActionSelectValue(action?: EditableTableAction): string;
2839
+ getActionParam(action?: EditableTableAction): string;
2840
+ isRequiredGlobalActionParamMissing(action: EditableTableAction, spec: GlobalActionCatalogOption): boolean;
2841
+ getActionCustomValue(action?: EditableTableAction): string;
2473
2842
  isInternalAction(value?: string): boolean;
2474
- getActionSpecById(id: string): GlobalActionSpec | undefined;
2475
- onActionSelectChange(action: {
2476
- action?: string;
2477
- }, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2478
- onActionParamChange(action: {
2479
- action?: string;
2480
- }, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2481
- onActionCustomChange(action: {
2482
- action?: string;
2483
- }, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2843
+ getActionSpecById(id: string): GlobalActionCatalogOption | undefined;
2844
+ onActionSelectChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2845
+ onActionParamChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2846
+ onActionCustomChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2847
+ getCanonicalGlobalActionRef(action?: EditableTableAction): GlobalActionRef | undefined;
2848
+ private setCanonicalGlobalActionRef;
2484
2849
  private touchActionList;
2485
- private parseActionValue;
2850
+ getActionJsonLogicText(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen'): string;
2851
+ onActionJsonLogicChange(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen', value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2852
+ getActionConditionError(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen'): string;
2486
2853
  isGlobalActionId(id?: string): boolean;
2487
- getGlobalActionSchema(action: {
2488
- action?: string;
2489
- }): _praxisui_core.GlobalActionUiSchema | undefined;
2490
- getSurfaceOpenActionPayload(action: {
2491
- action?: string;
2492
- }): SurfaceOpenPayload;
2493
- onSurfaceOpenActionPayloadChange(action: {
2494
- action?: string;
2495
- }, payload: SurfaceOpenPayload, kind: 'toolbar' | 'row' | 'bulk'): void;
2496
- shouldShowGlobalActionField(action: {
2497
- action?: string;
2498
- }, field: GlobalActionField): boolean;
2499
- hasActionFieldError(action: {
2500
- action?: string;
2501
- }, key: string): boolean;
2502
- getActionFieldError(action: {
2503
- action?: string;
2504
- }, key: string): string;
2505
- getGlobalActionFieldValue(action: {
2506
- action?: string;
2507
- }, field: GlobalActionField): any;
2508
- onGlobalActionFieldChange(action: {
2509
- action?: string;
2510
- }, field: GlobalActionField, value: any, kind: 'toolbar' | 'row' | 'bulk'): void;
2511
- private getActionParamInfo;
2512
- private parseMethodAndUrl;
2854
+ getGlobalActionSchema(action: EditableTableAction): _praxisui_core.GlobalActionUiSchema | undefined;
2855
+ getSurfaceOpenActionPayload(action: EditableTableAction): SurfaceOpenPayload;
2856
+ onSurfaceOpenActionPayloadChange(action: EditableTableAction, payload: SurfaceOpenPayload, kind: 'toolbar' | 'row' | 'bulk'): void;
2857
+ shouldShowGlobalActionField(action: EditableTableAction, field: GlobalActionField): boolean;
2858
+ isGlobalActionFieldRequired(action: EditableTableAction, field: GlobalActionField): boolean;
2859
+ isGlobalActionFieldMissing(action: EditableTableAction, field: GlobalActionField): boolean;
2860
+ hasActionFieldError(action: EditableTableAction, key: string): boolean;
2861
+ getActionFieldError(action: EditableTableAction, key: string): string;
2862
+ getGlobalActionFieldValue(action: EditableTableAction, field: GlobalActionField): any;
2863
+ onGlobalActionFieldChange(action: EditableTableAction, field: GlobalActionField, value: any, kind: 'toolbar' | 'row' | 'bulk'): void;
2513
2864
  private stringifyJson;
2514
2865
  private normalizeSurfaceOpenPayload;
2515
2866
  private setActionFieldError;
2516
2867
  private clearActionFieldError;
2517
2868
  private collectGlobalActionFieldValues;
2518
- private serializeGlobalActionParam;
2519
- private buildPrimaryParam;
2520
2869
  private buildGlobalActionPayload;
2521
2870
  getToolbarActionShortcutScope(action: ToolbarAction): ToolbarShortcutScope;
2522
2871
  onToolbarActionShortcutScopeChange(action: ToolbarAction, value: ToolbarShortcutScope | string): void;
@@ -2708,6 +3057,7 @@ declare class FilterSettingsComponent implements OnChanges, AfterViewInit, OnDes
2708
3057
  }[];
2709
3058
  getContrastWarning(): string | null;
2710
3059
  applyPreset(key: string): void;
3060
+ isPresetActive(key: string): boolean;
2711
3061
  hasBooleanFieldMetadata(): boolean;
2712
3062
  getFieldLabel(name: string): string;
2713
3063
  onAlwaysVisibleFieldSearchChange(value: string): void;
@@ -2871,12 +3221,10 @@ declare class RuleCompilerService {
2871
3221
  static ɵprov: i0.ɵɵInjectableDeclaration<RuleCompilerService>;
2872
3222
  }
2873
3223
 
2874
- type RuleItem = {
2875
- condition: JsonLogicExpression;
3224
+ type RuleItem = Omit<PraxisRuntimeConditionalEffectRule<RuleEffectDefinition>, 'effects'> & {
2876
3225
  cssClass?: string;
2877
3226
  style?: Record<string, string>;
2878
- description?: string;
2879
- effects?: _praxisui_table_rule_builder.RuleEffectDefinition;
3227
+ effects?: RuleEffectDefinition[];
2880
3228
  enabled?: boolean;
2881
3229
  };
2882
3230
  declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy {
@@ -2946,6 +3294,7 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
2946
3294
  onColumnSelect(field: string): void;
2947
3295
  private initFromConfig;
2948
3296
  private loadColumnRules;
3297
+ private normalizePersistedRules;
2949
3298
  rebuildCondition(): void;
2950
3299
  onDraftChange(): void;
2951
3300
  applyTextPreset(preset: string): void;
@@ -2972,6 +3321,8 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
2972
3321
  onExportRules(): void;
2973
3322
  onImportRules(): void;
2974
3323
  private sanitizeRule;
3324
+ private normalizeRuleEffects;
3325
+ getPrimaryEffect(r: RuleItem | null | undefined): RuleEffectDefinition | undefined;
2975
3326
  getAnimationLabel(r: RuleItem): string | null;
2976
3327
  private normalizeRendererAnimation;
2977
3328
  private buildRendererOverrideFromRule;
@@ -3078,6 +3429,8 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3078
3429
  private cdr;
3079
3430
  private configService;
3080
3431
  private readonly i18n;
3432
+ private readonly globalActionCatalogSource;
3433
+ private readonly globalActionCatalog;
3081
3434
  filterSettingsEditor?: FilterSettingsComponent;
3082
3435
  behaviorEditor?: BehaviorConfigEditorComponent;
3083
3436
  rulesEditor?: TableRulesEditorComponent;
@@ -3140,6 +3493,7 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3140
3493
  private hasLocalDataInput;
3141
3494
  private filterDtoLoadSeq;
3142
3495
  private lastKnownFilterSettings;
3496
+ private globalActionValidationIssues;
3143
3497
  private readonly panelData;
3144
3498
  private readonly crudService;
3145
3499
  private readonly panelRef;
@@ -3166,6 +3520,9 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3166
3520
  onRulesConfigChange(newCfg: TableConfig): void;
3167
3521
  private updateColumnMetas;
3168
3522
  private updateCanSaveState;
3523
+ private collectGlobalActionValidationIssues;
3524
+ private findGlobalActionCatalogEntry;
3525
+ private buildGlobalActionCatalog;
3169
3526
  private subscribeCrudEditorChanges;
3170
3527
  private showSuccess;
3171
3528
  private showError;
@@ -3174,6 +3531,7 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3174
3531
  * Normaliza uma configuração de tabela para comparação consistente
3175
3532
  * Remove propriedades undefined, ordena arrays e objetos de forma consistente
3176
3533
  */
3534
+ private withCanonicalIdField;
3177
3535
  private normalizeTableConfig;
3178
3536
  /**
3179
3537
  * Realiza comparação profunda de objetos, ignorando ordem de propriedades
@@ -3236,6 +3594,107 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3236
3594
  static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableConfigEditor, "praxis-table-config-editor", never, {}, {}, never, never, true, never>;
3237
3595
  }
3238
3596
 
3597
+ interface PraxisTableWidgetEditorInputs {
3598
+ config?: TableConfig | null;
3599
+ resourcePath?: string | null;
3600
+ horizontalScroll?: 'auto' | 'wrap' | 'none';
3601
+ tableId?: string;
3602
+ componentInstanceId?: string;
3603
+ [key: string]: unknown;
3604
+ }
3605
+ interface PraxisTableWidgetEditorValue {
3606
+ inputs: PraxisTableWidgetEditorInputs;
3607
+ }
3608
+ declare class PraxisTableWidgetConfigEditor implements SettingsValueProvider$1, AfterViewInit, OnDestroy {
3609
+ inputs: PraxisTableWidgetEditorInputs | null;
3610
+ widgetKey?: string;
3611
+ tableEditor?: PraxisTableConfigEditor;
3612
+ readonly isDirty$: BehaviorSubject<boolean>;
3613
+ readonly isValid$: BehaviorSubject<boolean>;
3614
+ readonly isBusy$: BehaviorSubject<boolean>;
3615
+ private readonly subscription;
3616
+ ngAfterViewInit(): void;
3617
+ ngOnDestroy(): void;
3618
+ getSettingsValue(): PraxisTableWidgetEditorValue;
3619
+ onSave(): PraxisTableWidgetEditorValue;
3620
+ reset(): void;
3621
+ private initializeChildEditor;
3622
+ private buildValue;
3623
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableWidgetConfigEditor, never>;
3624
+ 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>;
3625
+ }
3626
+
3627
+ interface PraxisFilterWidgetEditorInputs {
3628
+ resourcePath?: string | null;
3629
+ fieldMetadata?: FieldMetadata[] | null;
3630
+ filterId?: string;
3631
+ formId?: string;
3632
+ componentInstanceId?: string;
3633
+ alwaysVisibleFields?: string[];
3634
+ alwaysVisibleFieldMetadataOverrides?: Record<string, Record<string, unknown>>;
3635
+ selectedFieldIds?: string[];
3636
+ allowSaveTags?: boolean;
3637
+ changeDebounceMs?: number;
3638
+ placeBooleansInActions?: boolean;
3639
+ showToggleLabels?: boolean;
3640
+ alwaysMinWidth?: number;
3641
+ alwaysColsMd?: number;
3642
+ alwaysColsLg?: number;
3643
+ confirmTagDelete?: boolean;
3644
+ tagColor?: 'primary' | 'accent' | 'warn' | 'basic';
3645
+ tagVariant?: 'filled' | 'outlined';
3646
+ tagButtonColor?: 'primary' | 'accent' | 'warn' | 'basic';
3647
+ actionsButtonColor?: 'primary' | 'accent' | 'warn' | 'basic';
3648
+ actionsVariant?: 'standard' | 'outlined';
3649
+ useInlineSearchableSelectVariant?: boolean;
3650
+ useInlineRangeVariant?: boolean;
3651
+ useInlineDateVariant?: boolean;
3652
+ useInlineDateRangeVariant?: boolean;
3653
+ useInlineTimeVariant?: boolean;
3654
+ useInlineTimeRangeVariant?: boolean;
3655
+ useInlineTreeSelectVariant?: boolean;
3656
+ overlayVariant?: 'card' | 'frosted';
3657
+ overlayBackdrop?: boolean;
3658
+ advancedOpenMode?: 'modal' | 'drawer';
3659
+ advancedClearButtonsEnabled?: boolean;
3660
+ persistenceKey?: string;
3661
+ showFilterSettings?: boolean;
3662
+ enableCustomization?: boolean;
3663
+ [key: string]: unknown;
3664
+ }
3665
+ interface PraxisFilterWidgetEditorValue {
3666
+ inputs: PraxisFilterWidgetEditorInputs;
3667
+ }
3668
+ declare class PraxisFilterWidgetConfigEditor implements SettingsValueProvider$1, OnDestroy {
3669
+ widgetKey?: string;
3670
+ set inputs(value: PraxisFilterWidgetEditorInputs | null);
3671
+ get inputs(): PraxisFilterWidgetEditorInputs | null;
3672
+ set filterSettings(component: FilterSettingsComponent | undefined);
3673
+ metadata: FieldMetadata[];
3674
+ settings: FilterConfig;
3675
+ configKey?: string;
3676
+ readonly isDirty$: BehaviorSubject<boolean>;
3677
+ readonly isValid$: BehaviorSubject<boolean>;
3678
+ readonly isBusy$: BehaviorSubject<boolean>;
3679
+ private currentInputs;
3680
+ private settingsEditor?;
3681
+ private subscription;
3682
+ ngOnDestroy(): void;
3683
+ getSettingsValue(): PraxisFilterWidgetEditorValue;
3684
+ onSave(): PraxisFilterWidgetEditorValue;
3685
+ reset(): void;
3686
+ private buildValue;
3687
+ private buildSettingsFromInputs;
3688
+ private projectSettingsToInputs;
3689
+ private normalizeSettings;
3690
+ private normalizeAdvancedOpenMode;
3691
+ private normalizeOverlayVariant;
3692
+ private cloneStringArray;
3693
+ private cloneRecord;
3694
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisFilterWidgetConfigEditor, never>;
3695
+ 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>;
3696
+ }
3697
+
3239
3698
  declare class DataFormatterComponent implements OnInit, OnChanges {
3240
3699
  private cdr;
3241
3700
  private formattingService;
@@ -3304,31 +3763,6 @@ declare class DataFormatterComponent implements OnInit, OnChanges {
3304
3763
  static ɵcmp: i0.ɵɵComponentDeclaration<DataFormatterComponent, "data-formatter", never, { "columnType": { "alias": "columnType"; "required": false; }; "currentFormat": { "alias": "currentFormat"; "required": false; }; }, { "formatChange": "formatChange"; }, never, never, true, never>;
3305
3764
  }
3306
3765
 
3307
- type AnalyticsTableRow = Record<string, string | number | boolean | null>;
3308
- type AnalyticsTableContractSource = 'remote' | 'fallback';
3309
- interface AnalyticsTableViewModel {
3310
- config: TableConfig;
3311
- data: AnalyticsTableRow[];
3312
- }
3313
- interface AnalyticsTableContractDefinition<TKey extends string = string> {
3314
- key: TKey;
3315
- projectionId: string;
3316
- path: string;
3317
- title: PraxisTextValue;
3318
- subtitle?: PraxisTextValue;
3319
- fallbackProjection: PraxisAnalyticsProjection;
3320
- fallbackRows?: AnalyticsTableRow[];
3321
- }
3322
- interface AnalyticsTableContractLoadOptions<TKey extends string = string> {
3323
- cacheNamespace?: string;
3324
- queryContexts?: Partial<Record<TKey, PraxisDataQueryContext | null>>;
3325
- }
3326
- interface AnalyticsTableContractLoadResult<TKey extends string = string> {
3327
- views: Record<TKey, AnalyticsTableViewModel>;
3328
- sources: Record<TKey, AnalyticsTableContractSource>;
3329
- errors: Partial<Record<TKey, string>>;
3330
- }
3331
-
3332
3766
  interface AnalyticsTableConfigAdapterOptions {
3333
3767
  title?: PraxisTextValue;
3334
3768
  subtitle?: PraxisTextValue;
@@ -3342,24 +3776,6 @@ declare class AnalyticsTableConfigAdapterService {
3342
3776
  static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableConfigAdapterService>;
3343
3777
  }
3344
3778
 
3345
- declare class AnalyticsTableStatsApiService {
3346
- private readonly http;
3347
- private readonly apiUrl;
3348
- private readonly statsBuilder;
3349
- constructor(http: HttpClient, apiUrl: ApiUrlConfig);
3350
- execute(projection: PraxisAnalyticsProjection, queryContext?: PraxisDataQueryContext | null): Promise<AnalyticsTableRow[]>;
3351
- private toTableRows;
3352
- private resolveTimeSeriesCategory;
3353
- private resolveBucketCategory;
3354
- private projectMetricValues;
3355
- private resolveMetricValue;
3356
- private buildStatsUrl;
3357
- private applyQueryContext;
3358
- private normalizeError;
3359
- static ɵfac: i0.ɵɵFactoryDeclaration<AnalyticsTableStatsApiService, never>;
3360
- static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableStatsApiService>;
3361
- }
3362
-
3363
3779
  declare class AnalyticsTableContractService {
3364
3780
  private readonly analyticsSchema;
3365
3781
  private readonly resolver;
@@ -3395,6 +3811,15 @@ declare function buildTableApplyPlan(doc: TableAuthoringDocument, runtime?: Tabl
3395
3811
  }): TableApplyPlan;
3396
3812
  declare function serializeTableAuthoringDocument(doc: TableAuthoringDocument): unknown;
3397
3813
 
3814
+ /**
3815
+ * Manifesto de authoring canônico para o componente praxis-table.
3816
+ * Este arquivo define o contrato executável para que agentes de IA editem tabelas.
3817
+ *
3818
+ * @version 2.0.0
3819
+ * @status COMPLIANT - Alinhado com o contrato v2 e TableConfig canônico.
3820
+ */
3821
+ declare const PRAXIS_TABLE_AUTHORING_MANIFEST: ComponentAuthoringManifest;
3822
+
3398
3823
  declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3399
3824
  private readonly i18n;
3400
3825
  config: TableConfig;
@@ -3406,6 +3831,9 @@ declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3406
3831
  toolbarVisible: boolean;
3407
3832
  density: 'compact' | 'comfortable' | 'spacious';
3408
3833
  toolbarActionsPosition: 'top' | 'bottom' | 'both';
3834
+ toolbarAppearanceVariant: 'flat' | 'outlined' | 'elevated' | 'integrated';
3835
+ toolbarAppearanceShape: 'square' | 'rounded' | 'pill';
3836
+ toolbarAppearanceDivider: 'none' | 'start' | 'between-groups';
3409
3837
  toolbarHeight: number;
3410
3838
  toolbarActionsBackgroundColor: string;
3411
3839
  paginationEnabled: boolean;
@@ -3433,6 +3861,9 @@ declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3433
3861
  setToolbarVisible(value: boolean): void;
3434
3862
  setDensity(value: 'compact' | 'comfortable' | 'spacious'): void;
3435
3863
  setToolbarActionsPosition(value: 'top' | 'bottom' | 'both'): void;
3864
+ setToolbarAppearanceVariant(value: 'flat' | 'outlined' | 'elevated' | 'integrated'): void;
3865
+ setToolbarAppearanceShape(value: 'square' | 'rounded' | 'pill'): void;
3866
+ setToolbarAppearanceDivider(value: 'none' | 'start' | 'between-groups'): void;
3436
3867
  setToolbarHeight(value: number | string): void;
3437
3868
  setToolbarActionsBackgroundColor(value: string): void;
3438
3869
  setPaginationEnabled(value: boolean): void;
@@ -3460,6 +3891,7 @@ declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3460
3891
  tx(key: string, fallback: string): string;
3461
3892
  private emitConfig;
3462
3893
  private patchToolbar;
3894
+ private patchToolbarAppearance;
3463
3895
  private patchBehavior;
3464
3896
  private patchPagination;
3465
3897
  private patchSorting;
@@ -3495,7 +3927,7 @@ declare class ValueMappingEditorComponent implements OnInit, OnChanges {
3495
3927
  [key: number]: string;
3496
3928
  }>;
3497
3929
  mappingPairs: ValueMappingPair[];
3498
- dataSource: MatTableDataSource<ValueMappingPair, _angular_material_paginator_d_Zo1cMMo4.M>;
3930
+ dataSource: MatTableDataSource<ValueMappingPair, _angular_material_paginator.MatPaginator>;
3499
3931
  displayedColumns: string[];
3500
3932
  showImportDialog: boolean;
3501
3933
  importJsonText: string;
@@ -3641,7 +4073,6 @@ declare function providePraxisTableMetadata(): Provider;
3641
4073
  declare module '@praxisui/core' {
3642
4074
  interface AiCapabilityCategoryMap {
3643
4075
  meta: true;
3644
- bindings: true;
3645
4076
  columns: true;
3646
4077
  renderer: true;
3647
4078
  conditional: true;
@@ -3655,6 +4086,7 @@ declare module '@praxisui/core' {
3655
4086
  toolbar: true;
3656
4087
  actions: true;
3657
4088
  export: true;
4089
+ runtime: true;
3658
4090
  performance: true;
3659
4091
  messages: true;
3660
4092
  localization: true;
@@ -3727,18 +4159,23 @@ type ComponentEditPlanCapability = {
3727
4159
  declare const TABLE_COMPONENT_EDIT_PLAN_KIND = "praxis.table.component-edit-plan";
3728
4160
  declare const TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND = "praxis.table.component-edit-plan.batch";
3729
4161
  declare const TABLE_COMPONENT_EDIT_PLAN_VERSION = "1.0";
3730
- type TableComponentEditChangeKind = 'set_column_format' | 'set_column_header' | 'set_column_visibility' | 'set_column_conditional_style' | 'set_column_computed' | 'set_column_value_mapping' | 'set_column_badge_renderer' | 'set_column_conditional_badge_renderers';
3731
- declare const TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS: readonly ["set_column_format", "set_column_header", "set_column_visibility", "set_column_conditional_style", "set_column_computed", "set_column_value_mapping", "set_column_badge_renderer", "set_column_conditional_badge_renderers"];
4162
+ 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';
4163
+ 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';
4164
+ declare const TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS: readonly ["add_column", "set_column_format", "set_column_header", "set_column_visibility", "set_column_filterable", "set_column_sortable", "set_column_width", "set_column_order", "set_column_align", "set_column_style", "set_column_header_style", "set_column_sticky", "set_column_conditional_style", "set_row_conditional_style", "set_column_computed", "set_column_value_mapping", "set_column_renderer", "set_column_badge_renderer", "set_column_conditional_badge_renderers", "set_row_conditional_renderer", "configure_table_filtering", "configure_advanced_filters", "add_advanced_filter_fields", "remove_advanced_filter_fields", "configure_table_pagination", "configure_table_selection", "configure_table_sorting", "configure_toolbar", "add_toolbar_action", "add_row_action", "add_bulk_action", "configure_export", "set_table_density", "set_toolbar_visibility"];
3732
4165
  declare const TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS: Record<TableComponentEditChangeKind, string>;
3733
4166
  interface TableComponentEditPlan {
3734
4167
  kind?: typeof TABLE_COMPONENT_EDIT_PLAN_KIND;
3735
4168
  version?: typeof TABLE_COMPONENT_EDIT_PLAN_VERSION | string;
3736
4169
  componentId?: 'praxis-table' | string;
3737
4170
  changeKind: TableComponentEditChangeKind | string;
4171
+ operationId?: TableComponentEditOperationId | string;
3738
4172
  capabilityPath?: string;
3739
4173
  configPath?: string;
3740
4174
  field?: string;
3741
4175
  targetField?: string;
4176
+ target?: unknown;
4177
+ input?: unknown;
4178
+ params?: unknown;
3742
4179
  value?: unknown;
3743
4180
  condition?: unknown;
3744
4181
  style?: unknown;
@@ -3766,7 +4203,7 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3766
4203
  readonly $defs: {
3767
4204
  readonly changeKind: {
3768
4205
  readonly type: "string";
3769
- readonly enum: readonly ["set_column_format", "set_column_header", "set_column_visibility", "set_column_conditional_style", "set_column_computed", "set_column_value_mapping", "set_column_badge_renderer", "set_column_conditional_badge_renderers"];
4206
+ readonly enum: readonly ["add_column", "set_column_format", "set_column_header", "set_column_visibility", "set_column_filterable", "set_column_sortable", "set_column_width", "set_column_order", "set_column_align", "set_column_style", "set_column_header_style", "set_column_sticky", "set_column_conditional_style", "set_row_conditional_style", "set_column_computed", "set_column_value_mapping", "set_column_renderer", "set_column_badge_renderer", "set_column_conditional_badge_renderers", "set_row_conditional_renderer", "configure_table_filtering", "configure_advanced_filters", "add_advanced_filter_fields", "remove_advanced_filter_fields", "configure_table_pagination", "configure_table_selection", "configure_table_sorting", "configure_toolbar", "add_toolbar_action", "add_row_action", "add_bulk_action", "configure_export", "set_table_density", "set_toolbar_visibility"];
3770
4207
  };
3771
4208
  readonly capabilityPath: {
3772
4209
  readonly type: "string";
@@ -3801,6 +4238,9 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3801
4238
  readonly type: "string";
3802
4239
  readonly minLength: 1;
3803
4240
  };
4241
+ readonly tooltip: {
4242
+ readonly $ref: "#/$defs/tooltip";
4243
+ };
3804
4244
  };
3805
4245
  readonly anyOf: readonly [{
3806
4246
  readonly required: readonly ["text"];
@@ -3808,10 +4248,31 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3808
4248
  readonly required: readonly ["textField"];
3809
4249
  }];
3810
4250
  };
4251
+ readonly tooltip: {
4252
+ readonly type: "object";
4253
+ readonly additionalProperties: false;
4254
+ readonly required: readonly ["text"];
4255
+ readonly properties: {
4256
+ readonly text: {
4257
+ readonly type: "string";
4258
+ readonly minLength: 1;
4259
+ };
4260
+ readonly position: {
4261
+ readonly type: "string";
4262
+ readonly enum: readonly ["top", "right", "bottom", "left", "above", "below", "before", "after"];
4263
+ };
4264
+ readonly bgColor: {
4265
+ readonly type: "string";
4266
+ readonly minLength: 1;
4267
+ };
4268
+ readonly delayMs: {
4269
+ readonly type: "number";
4270
+ };
4271
+ };
4272
+ };
3811
4273
  readonly operation: {
3812
4274
  readonly type: "object";
3813
4275
  readonly additionalProperties: false;
3814
- readonly required: readonly ["changeKind", "field", "value"];
3815
4276
  readonly properties: {
3816
4277
  readonly kind: {
3817
4278
  readonly const: "praxis.table.component-edit-plan";
@@ -3822,6 +4283,12 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3822
4283
  readonly componentId: {
3823
4284
  readonly const: "praxis-table";
3824
4285
  };
4286
+ readonly operationId: {
4287
+ 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"];
4288
+ };
4289
+ readonly target: true;
4290
+ readonly input: true;
4291
+ readonly params: true;
3825
4292
  readonly changeKind: {
3826
4293
  readonly $ref: "#/$defs/changeKind";
3827
4294
  };
@@ -3850,6 +4317,13 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3850
4317
  readonly type: "string";
3851
4318
  };
3852
4319
  };
4320
+ readonly anyOf: readonly [{
4321
+ readonly required: readonly ["changeKind", "field", "value"];
4322
+ }, {
4323
+ readonly required: readonly ["operationId", "target", "input"];
4324
+ }, {
4325
+ readonly required: readonly ["operationId", "input"];
4326
+ }];
3853
4327
  readonly allOf: readonly [{
3854
4328
  readonly if: {
3855
4329
  readonly properties: {
@@ -3926,8 +4400,12 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3926
4400
  readonly required: readonly ["condition"];
3927
4401
  readonly anyOf: readonly [{
3928
4402
  readonly required: readonly ["badge"];
4403
+ }, {
4404
+ readonly required: readonly ["renderer"];
3929
4405
  }, {
3930
4406
  readonly required: readonly ["value"];
4407
+ }, {
4408
+ readonly required: readonly ["tooltip"];
3931
4409
  }];
3932
4410
  readonly properties: {
3933
4411
  readonly condition: {
@@ -3936,6 +4414,14 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
3936
4414
  readonly badge: {
3937
4415
  readonly $ref: "#/$defs/badge";
3938
4416
  };
4417
+ readonly renderer: {
4418
+ readonly type: "object";
4419
+ readonly minProperties: 1;
4420
+ readonly additionalProperties: true;
4421
+ };
4422
+ readonly tooltip: {
4423
+ readonly $ref: "#/$defs/tooltip";
4424
+ };
3939
4425
  readonly value: {
3940
4426
  readonly $ref: "#/$defs/badge";
3941
4427
  };
@@ -3993,5 +4479,5 @@ declare function coerceTableComponentEditPlan(value: unknown): TableComponentEdi
3993
4479
  declare function compileTableComponentEditPlans(plans: TableComponentEditPlan[], currentConfig: TableConfig): TableComponentEditPlanCompileResult;
3994
4480
  declare function compileTableComponentEditPlan(plan: TableComponentEditPlan, currentConfig: TableConfig): TableComponentEditPlanCompileResult;
3995
4481
 
3996
- export { AnalyticsTableConfigAdapterService, AnalyticsTableContractService, AnalyticsTableStatsApiService, BOOLEAN_PRESETS, BehaviorConfigEditorComponent, CURRENCY_PRESETS, ColumnsConfigEditorComponent, DATE_PRESETS, DataFormatterComponent, DataFormattingService, FORMULA_TEMPLATES, FilterConfigService, FilterSettingsComponent, FormulaGeneratorService, JsonConfigEditorComponent, MessagesLocalizationEditorComponent, NUMBER_PRESETS, PERCENTAGE_PRESETS, PRAXIS_FILTER_COMPONENT_METADATA, PRAXIS_TABLE_COMPONENT_METADATA, PraxisFilter, PraxisTable, PraxisTableConfigEditor, PraxisTableInlineAuthoringEditorComponent, PraxisTableToolbar, STRING_PRESETS, TABLE_AI_CAPABILITIES, TABLE_COMPONENT_AI_CAPABILITIES, TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, TABLE_COMPONENT_EDIT_PLAN_KIND, TABLE_COMPONENT_EDIT_PLAN_VERSION, TASK_PRESETS, TableDefaultsProvider, TableRulesEditorComponent, ToolbarActionsEditorComponent, ValueMappingEditorComponent, VisualFormulaBuilderComponent, buildTableApplyPlan, coerceTableComponentEditPlan, coerceTableComponentEditPlans, compileTableComponentEditPlan, compileTableComponentEditPlans, createTableAuthoringDocument, getActionId, getEnum, getTableCapabilities, getTableComponentEditPlanCapabilities, isTableRendererSupportedByRichContentP0, mapTableRendererToRichContentP0, normalizeTableAuthoringDocument, parseLegacyOrTableDocument, providePraxisFilterMetadata, providePraxisTableMetadata, serializeTableAuthoringDocument, toCanonicalTableConfig, validateTableAuthoringDocument };
3997
- export type { ActionLike, AnalyticsTableConfigAdapterOptions, AnalyticsTableContractDefinition, AnalyticsTableContractLoadOptions, AnalyticsTableContractLoadResult, AnalyticsTableContractSource, AnalyticsTableRow, AnalyticsTableViewModel, ArithmeticParams, BehaviorConfigChange, BooleanFormatterOptions, BulkAction, Capability$1 as Capability, CapabilityCatalog$1 as CapabilityCatalog, CapabilityCategory$1 as CapabilityCategory, ColumnChange, ColumnDataType$1 as ColumnDataType, ConcatenationParams, ConditionalMappingParams, CurrencyFormatterOptions, DataFormattingOptions, DataMode, DateFormatterOptions, DefaultValueParams, EditorDiagnostic, EditorDocument, FieldSchema, FilterConfig, FilterTag, FormatPreset, FormatterConfig, FormulaDefinition, FormulaParameterSchema, FormulaParams, FormulaTemplate, FormulaType, I18n, JsonEditorEvent, JsonValidationResult, MessagesLocalizationChange, NestedPropertyParams, NumberFormatterOptions, PercentageFormatterOptions, ResourcePathIntent, RowAction, RowExpansionChangeBase, RowExpansionChangeEvent, RowExpansionReasonCode, RowExpansionTrigger, StringFormatterOptions, TableApplyPlan, TableAuthoringDocument, TableBindings, Capability as TableComponentCapability, CapabilityCatalog as TableComponentCapabilityCatalog, CapabilityCategory as TableComponentCapabilityCategory, TableComponentEditChangeKind, TableComponentEditPlan, TableComponentEditPlanCompileResult, ValueKind as TableComponentValueKind, TableHorizontalScroll, TableProjectionContext, TableRichContentP0Node, TableRuntimeContext, TableValidationContext, ToolbarAction, ToolbarActionsChange, ValueKind$1 as ValueKind, ValueMappingPair };
4482
+ 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 };
4483
+ 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 };