@praxisui/table 8.0.0-beta.0 → 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 (44) hide show
  1. package/README.md +236 -13
  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 -50362
  38. package/filter-drawer-adapter/package.json +2 -1
  39. package/package.json +22 -14
  40. package/src/lib/praxis-table.json-api.md +1361 -0
  41. package/{index.d.ts → types/praxisui-table.d.ts} +918 -121
  42. package/fesm2022/praxisui-table-filter-form-dialog-host.component-EHoM1uuJ.mjs +0 -165
  43. package/fesm2022/praxisui-table-table-ai.adapter-CFyyQB26.mjs +0 -831
  44. /package/{filter-drawer-adapter/index.d.ts → types/praxisui-table-filter-drawer-adapter.d.ts} +0 -0
@@ -1,25 +1,27 @@
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';
5
- import { MatPaginator, PageEvent } from '@angular/material/paginator';
7
+ import * as _angular_material_paginator from '@angular/material/paginator';
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';
8
11
  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, 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, PraxisI18nService, 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';
21
+ import { PraxisAssistantVoiceInputMode, PraxisAssistantTurnViewState, PraxisAssistantShellLayout, PraxisAssistantShellLabels, PraxisAssistantSessionSnapshot, PraxisAssistantShellQuickReply, PraxisAssistantRecommendedIntent, PraxisAssistantShellMessage } from '@praxisui/ai';
22
+ import { HttpClient } from '@angular/common/http';
18
23
  import { MatTabChangeEvent } from '@angular/material/tabs';
19
- import * as _praxisui_table_rule_builder from '@praxisui/table-rule-builder';
20
24
  import { RuleEffectDefinition } from '@praxisui/table-rule-builder';
21
- import { HttpClient } from '@angular/common/http';
22
- import * as _angular_material_paginator_d_Zo1cMMo4 from '@angular/material/paginator.d-Zo1cMMo4';
23
25
  import { MatCheckboxChange } from '@angular/material/checkbox';
24
26
 
25
27
  interface ActionLike {
@@ -34,23 +36,32 @@ interface ActionLike {
34
36
  }
35
37
  declare function getActionId(action: ActionLike): string;
36
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[];
37
42
  declare class PraxisTableToolbar implements OnDestroy {
38
43
  private hostRef;
39
44
  private logger?;
45
+ private i18n?;
46
+ private defaultAppearance?;
47
+ private tokenPresets?;
40
48
  config?: TableConfig;
49
+ appearance?: TableToolbarAppearanceConfig | null;
41
50
  backgroundColor: string | null;
42
51
  placement: 'header' | 'footer';
43
52
  showMain: boolean;
44
53
  showActionsGroup: boolean;
45
54
  showEndActions: boolean;
46
55
  showMobileActions: boolean;
47
- showReset: boolean;
56
+ exportBusy: boolean;
48
57
  evaluationContext: Record<string, any> | null;
49
58
  toolbarAction: EventEmitter<{
50
59
  action: string;
51
60
  actionConfig?: any;
52
61
  }>;
53
- reset: EventEmitter<void>;
62
+ exportAction: EventEmitter<{
63
+ format: string;
64
+ }>;
54
65
  readonly getActionId: typeof getActionId;
55
66
  private readonly jsonLogic;
56
67
  private readonly validToolbarActionTypes;
@@ -62,8 +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);
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;
81
+ getExportDataLabel(): string;
82
+ getMoreActionsLabel(): string;
83
+ emitExportAction(event: Event, format: string): void;
84
+ private tx;
66
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;
67
95
  private getNestedPropertyValue;
68
96
  private cloneForEmit;
69
97
  private getLogger;
@@ -108,8 +136,8 @@ declare class PraxisTableToolbar implements OnDestroy {
108
136
  private warnShortcutConflict;
109
137
  private sortActions;
110
138
  getExportIcon(format: string): string;
111
- static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableToolbar, [null, { optional: true; }]>;
112
- 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; }; "showReset": { "alias": "showReset"; "required": false; }; "evaluationContext": { "alias": "evaluationContext"; "required": false; }; }, { "toolbarAction": "toolbarAction"; "reset": "reset"; }, 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>;
113
141
  }
114
142
 
115
143
  type ColumnDataType$1 = 'date' | 'number' | 'currency' | 'percentage' | 'string' | 'boolean' | 'custom';
@@ -210,6 +238,8 @@ declare class DataFormattingService {
210
238
  */
211
239
  formatValue(value: any, columnType: ColumnDataType$1, formatString: string, options?: DataFormattingOptions): any;
212
240
  private coerceValueToType;
241
+ private parseDateOnlyString;
242
+ private normalizeNumericDateInput;
213
243
  private formatDate;
214
244
  private formatNumber;
215
245
  private formatCurrency;
@@ -331,12 +361,15 @@ type I18n = {
331
361
  searchPlaceholder: string;
332
362
  advanced: string;
333
363
  advancedTitle?: string;
364
+ advancedOpening?: string;
365
+ advancedUnavailable?: string;
334
366
  clear: string;
335
367
  apply: string;
336
368
  add?: string;
337
369
  filtersAdd?: string;
338
370
  filtersSearch?: string;
339
371
  addCount?: string;
372
+ addUnavailable?: string;
340
373
  pendingCount?: string;
341
374
  activeFiltersCount?: string;
342
375
  selectAll?: string;
@@ -419,10 +452,13 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
419
452
  showAddButton: boolean;
420
453
  /** Controla a exibição do botão de limpar filtros */
421
454
  showClearButton: boolean;
422
- /** 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. */
423
456
  showSearchButton: boolean;
424
457
  /** Exibir confirmação ao excluir atalho (tag) */
425
458
  confirmTagDelete: boolean;
459
+ private alwaysFieldComponentRefs;
460
+ private selectedFieldComponentRefs;
461
+ private toggleFieldComponentRefs;
426
462
  /** Move toggles/booleans simples para a área de ações */
427
463
  placeBooleansInActions: boolean;
428
464
  /** Mostrar rótulos dos toggles na área de ações */
@@ -509,6 +545,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
509
545
  private alwaysFormReset$;
510
546
  private dto;
511
547
  advancedOpen: boolean;
548
+ advancedOpening: boolean;
512
549
  advancedValid: boolean;
513
550
  activeFiltersCount: number;
514
551
  saving: boolean;
@@ -535,7 +572,8 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
535
572
  id: string;
536
573
  label: string;
537
574
  }>;
538
- private addItemsUpdateQueued;
575
+ readonly addSearchFieldId = "__praxis_filter_add_search__";
576
+ readonly addSelectAllFieldId = "__praxis_filter_add_select_all__";
539
577
  private applySchemaQueued;
540
578
  private fallbackLogger?;
541
579
  private fallbackLoggerEnvironment;
@@ -550,6 +588,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
550
588
  private _dbgLastToggleComponentsAt;
551
589
  overlayPositions: ConnectedPosition[];
552
590
  private advancedDebouncedSub?;
591
+ private advancedOpenRequestId;
553
592
  private lastActiveElement?;
554
593
  private lastSubmitAt;
555
594
  private resizeObs?;
@@ -588,6 +627,8 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
588
627
  private resolveInputDto;
589
628
  private resolveInitialDto;
590
629
  private syncFormsFromDto;
630
+ private refreshProgrammaticFilterFieldDisplays;
631
+ private refreshProgrammaticFilterFieldDisplay;
591
632
  ngOnInit(): Promise<void>;
592
633
  ngAfterViewInit(): void;
593
634
  onWindowResize(): void;
@@ -597,6 +638,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
597
638
  private computeIsMobile;
598
639
  ngOnChanges(changes: SimpleChanges): void;
599
640
  private areStringArraysEqual;
641
+ private normalizeFieldIdList;
600
642
  private areMetadataOverrideMapsEqual;
601
643
  /** Force-sync settings coming from parent table config updates. */
602
644
  applyExternalSettings(cfg?: Partial<FilterConfig>): void;
@@ -639,7 +681,15 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
639
681
  retrySchemaLoad(): void;
640
682
  private applySchemaMetas;
641
683
  private applySchemaMetasNow;
684
+ private withFilterMaterialDesignPolicy;
685
+ private withAdvancedDatePickerTouchPolicy;
686
+ private isAdvancedDatePickerControl;
687
+ private buildAdvancedFilterColumn;
688
+ private isCompositeRangeFilterField;
642
689
  private pickMetasByOrder;
690
+ private hasRemoteOptionSource;
691
+ private normalizeFilterOptionEndpointMetadata;
692
+ private toOwningResourcePathForOptionsFilter;
643
693
  private withInferredFilterControlType;
644
694
  private isAllowedFilterControlType;
645
695
  private inferFilterControlType;
@@ -650,9 +700,9 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
650
700
  private mergeAlwaysVisibleMetadata;
651
701
  private mergeFieldMetadataOverride;
652
702
  ngDoCheck(): void;
653
- onAlwaysComponents(map: Map<string, any>): void;
654
- onSelectedComponents(map: Map<string, any>): void;
655
- 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;
656
706
  onFieldInteraction(event: Event): void;
657
707
  openSelectedFieldEditor(): void;
658
708
  private isLocalE2eAuthoringOptInEnabled;
@@ -670,11 +720,16 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
670
720
  onAdvancedValidityChange(valid: boolean): void;
671
721
  onAddOpened(opened: boolean): void;
672
722
  onAddQuery(q: string): void;
723
+ openAddSelect(select: MatSelect): void;
724
+ hasAddableFields(): boolean;
725
+ private getAddableItems;
673
726
  private updateAddItems;
674
727
  trackById(_idx: number, it: {
675
728
  id: string;
676
729
  }): string;
730
+ private isFilterFieldHidden;
677
731
  onAddSelectionChange(values: string[] | null | undefined): void;
732
+ private mergeSelectedFieldIds;
678
733
  private formatWithCount;
679
734
  getAddAriaLabel(): string;
680
735
  getAddTriggerLabel(): string;
@@ -719,9 +774,13 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
719
774
  private ensureAdvancedConfigReady;
720
775
  private focusSchemaRetryButton;
721
776
  private showAdvancedUnavailableFeedback;
777
+ private setAdvancedOpening;
778
+ private deferAdvancedOpen;
722
779
  private openAdvancedModal;
723
780
  private openAdvancedDrawer;
724
781
  toggleAdvanced(): void;
782
+ hasAdvancedFields(): boolean;
783
+ private getAdvancedCandidateMetas;
725
784
  private usesProvidedFieldMetadata;
726
785
  private applyProvidedFieldMetadata;
727
786
  private saveConfig;
@@ -733,6 +792,9 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
733
792
  private persistTags;
734
793
  private cleanFilterPayload;
735
794
  private upsertDtoValue;
795
+ private normalizeFilterFieldValue;
796
+ private getFilterFieldMetaByName;
797
+ private isEntityLookupFilterField;
736
798
  private isEffectivelyEmptyFilterValue;
737
799
  private syncFormsToDto;
738
800
  private updateDisplayedTags;
@@ -748,19 +810,85 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
748
810
  declare const PRAXIS_FILTER_COMPONENT_METADATA: ComponentDocMeta;
749
811
  declare function providePraxisFilterMetadata(): Provider;
750
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
+ }
751
873
  type SchemaFieldHint = {
752
874
  name: string;
753
875
  label?: string;
754
876
  type?: string;
755
877
  controlType?: string;
756
878
  numericFormat?: string;
879
+ format?: string;
757
880
  options?: Array<Record<string, unknown> | string | number | boolean>;
758
881
  optionLabelKey?: string;
759
882
  optionValueKey?: string;
760
883
  enumValues?: string[];
761
884
  };
885
+ type FilterSchemaFieldHint = SchemaFieldHint & {
886
+ relatedColumnFields?: string[];
887
+ relatedColumnLabels?: string[];
888
+ };
762
889
  type PraxisDataQueryContextBridge = {
763
890
  filters?: Record<string, unknown> | null;
891
+ filterExpression?: PraxisQueryFilterExpression | null;
764
892
  sort?: string[] | null;
765
893
  limit?: number | null;
766
894
  page?: {
@@ -829,6 +957,8 @@ type RowActionRuntimeOptions = {
829
957
  type RuntimeRowAction = {
830
958
  id: string;
831
959
  action: string;
960
+ globalAction?: GlobalActionRef;
961
+ effects?: PraxisRuntimeGlobalActionEffect[];
832
962
  label?: string;
833
963
  icon?: string;
834
964
  color?: string;
@@ -836,6 +966,7 @@ type RuntimeRowAction = {
836
966
  disabled?: boolean;
837
967
  overflow?: boolean;
838
968
  __praxisDiscoveredAction?: ResourceActionCatalogItem;
969
+ __praxisDiscoveredSurface?: ResourceSurfaceCatalogItem;
839
970
  __praxisCapabilityDenied?: boolean;
840
971
  };
841
972
  type ExpansionDetailRuntimeStatus = 'idle' | 'loading' | 'ready' | 'error' | 'blocked';
@@ -859,17 +990,25 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
859
990
  private connectionStorage;
860
991
  private hostRef;
861
992
  private global;
862
- private resourceDiscovery;
993
+ private injector;
863
994
  private componentKeys;
864
995
  private loadingOrchestrator;
996
+ private globalActions;
865
997
  private loadingRenderer?;
866
998
  private route?;
867
999
  private logger?;
1000
+ private analyticsStatsApi?;
868
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;
869
1005
  private static readonly ROW_DISCOVERY_SUCCESS_CACHE_TTL_MS;
870
1006
  private static readonly ROW_DISCOVERY_ERROR_CACHE_TTL_MS;
871
1007
  private static readonly ROW_DISCOVERY_CACHE_LIMIT;
872
1008
  private static readonly ROW_DISCOVERY_MAX_CONCURRENT_REQUESTS;
1009
+ private _resourceDiscovery?;
1010
+ private _resourceSurfaceOpenAdapter?;
1011
+ readonly paginatorSelectConfig: MatPaginatorSelectConfig;
873
1012
  private static readonly ROW_ANIMATION_PRESETS;
874
1013
  private static readonly ROW_ANIMATION_PRESET_ALIASES;
875
1014
  config: TableConfig;
@@ -887,12 +1026,24 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
887
1026
  crudContext: any;
888
1027
  filterCriteria: Record<string, any>;
889
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?;
890
1039
  rowClick: EventEmitter<any>;
1040
+ widgetEvent: EventEmitter<any>;
891
1041
  rowDoubleClick: EventEmitter<any>;
892
1042
  rowExpansionChange: EventEmitter<RowExpansionChangeEvent>;
893
1043
  rowAction: EventEmitter<any>;
894
1044
  toolbarAction: EventEmitter<any>;
895
1045
  bulkAction: EventEmitter<any>;
1046
+ exportAction: EventEmitter<any>;
896
1047
  columnReorder: EventEmitter<any>;
897
1048
  columnReorderAttempt: EventEmitter<any>;
898
1049
  beforeDelete: EventEmitter<any>;
@@ -902,9 +1053,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
902
1053
  afterBulkDelete: EventEmitter<any>;
903
1054
  bulkDeleteError: EventEmitter<any>;
904
1055
  schemaStatusChange: EventEmitter<any>;
1056
+ configChange: EventEmitter<_praxisui_core.TableConfigModern>;
905
1057
  metadataChange: EventEmitter<any>;
906
1058
  loadingStateChange: EventEmitter<LoadingState>;
907
1059
  collectionLinksChange: EventEmitter<RestApiLinks | null>;
1060
+ selectionChange: EventEmitter<any>;
908
1061
  private latestLoadingState;
909
1062
  paginator: MatPaginator;
910
1063
  sort: MatSort;
@@ -929,6 +1082,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
929
1082
  readonly isExpansionDetailRow: (index: number, row: any) => boolean;
930
1083
  columnReorderStatusMessage: string;
931
1084
  columnReorderVisualStatusMessage: string;
1085
+ exportBusy: boolean;
1086
+ exportStatusMessage: string;
932
1087
  private columnReorderStatusTimer;
933
1088
  private columnReorderVisualStatusTimer;
934
1089
  private columnReorderUndoSubscription;
@@ -941,6 +1096,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
941
1096
  private lastResolvedDataMode;
942
1097
  private localFilterFieldMetadataCache;
943
1098
  private localFilterFieldMetadataCacheKey;
1099
+ private remoteDataLoadSequence;
1100
+ private analyticsLoadSequence;
944
1101
  private uncontrolledExpandedRowKeys;
945
1102
  private readonly expansionOpaqueRefCacheLimit;
946
1103
  private expansionOpaqueRefByRowKey;
@@ -968,7 +1125,10 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
968
1125
  private rowDiscoveryMarkForCheckScheduled;
969
1126
  private lastRowDiscoveryScopeKey;
970
1127
  private readonly i18n;
1128
+ private readonly collectionExport;
1129
+ private readonly paginatorIntl;
971
1130
  private schemaFieldsSnapshot;
1131
+ private filterSchemaFieldsSnapshot;
972
1132
  private runtimeSchemaMeta;
973
1133
  schemaError: boolean;
974
1134
  dataError: boolean;
@@ -980,9 +1140,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
980
1140
  shouldShowToolbarTopPlacement(): boolean;
981
1141
  shouldShowToolbarBottomPlacement(): boolean;
982
1142
  shouldRenderFooterToolbar(): boolean;
1143
+ hasTopToolbarStack(): boolean;
983
1144
  shouldShowFooterToolbarMain(): boolean;
984
1145
  shouldShowFooterToolbarEndActions(): boolean;
985
- shouldShowFooterToolbarReset(): boolean;
986
1146
  getToolbarActionsPosition(): 'top' | 'bottom' | 'both';
987
1147
  getBulkActionsPosition(): 'toolbar' | 'floating' | 'both';
988
1148
  shouldRenderFloatingBulkActions(): boolean;
@@ -1001,6 +1161,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1001
1161
  getColumnTextAlignStyle(column: ColumnDefinition): string | null;
1002
1162
  getColumnWidthStyle(column: ColumnDefinition): string | null;
1003
1163
  getColumnHeaderAttrStyle(column: ColumnDefinition): string | null;
1164
+ getColumnHeaderNgStyle(column: ColumnDefinition): Record<string, string> | undefined;
1004
1165
  getColumnCellAttrStyle(column: ColumnDefinition): string | null;
1005
1166
  getTableElevationClassName(): string;
1006
1167
  private normalizeTableElevationLevel;
@@ -1017,6 +1178,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1017
1178
  hasBottomPaginator(): boolean;
1018
1179
  hasExplicitResourcePath(): boolean;
1019
1180
  hasLocalDataInput(): boolean;
1181
+ hasAnalyticsProjectionInput(): boolean;
1020
1182
  getDataMode(): DataMode;
1021
1183
  isRemoteMode(): boolean;
1022
1184
  isLocalMode(): boolean;
@@ -1034,12 +1196,17 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1034
1196
  getTableSettingsTooltip(): string;
1035
1197
  getDisconnectLabel(): string;
1036
1198
  getDisconnectTooltip(): string;
1199
+ private syncPaginatorIntl;
1200
+ private configuredLocaleRuntimeText;
1201
+ private formatPaginatorRangeLabel;
1037
1202
  getNoDataStateIcon(): string;
1038
1203
  getNoDataStatePrimaryAction(): any | null;
1039
1204
  getNoDataStateSecondaryActions(): any[];
1040
1205
  shouldRenderAdvancedFilter(): boolean;
1041
1206
  getAdvancedFilterResourcePath(): string;
1042
1207
  getAdvancedFilterPersistenceKey(): string;
1208
+ getAdvancedFilterAlwaysVisibleFields(): string[] | undefined;
1209
+ getAdvancedFilterAlwaysVisibleFieldMetadataOverrides(): Record<string, Record<string, any>>;
1043
1210
  getAdvancedFilterFieldMetadata(): FieldMetadata[] | null | undefined;
1044
1211
  private buildLocalFilterMetadata;
1045
1212
  private buildLocalFilterMetadataCacheKey;
@@ -1060,8 +1227,32 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1060
1227
  get hostColumnBordersClass(): boolean;
1061
1228
  trackByRow(index: number, item: any): any;
1062
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;
1063
1242
  aiAdapter: any;
1064
1243
  private aiAdapterLoadStarted;
1244
+ private aiAssistantOpenAfterAdapterLoad;
1245
+ aiAssistantOpen: boolean;
1246
+ aiAssistantPrompt: string;
1247
+ aiAssistantViewState: PraxisAssistantTurnViewState | null;
1248
+ aiAssistantLayout: PraxisAssistantShellLayout;
1249
+ readonly aiAssistantLabels: Partial<PraxisAssistantShellLabels>;
1250
+ private aiAssistantController;
1251
+ private aiAssistantStateSubscription;
1252
+ private readonly aiApi;
1253
+ private readonly assistantSessions;
1254
+ private readonly aiTurnOrchestrator;
1255
+ private readonly aiAssistantSessionEffect;
1065
1256
  private computedContextCache;
1066
1257
  private computedFieldNames;
1067
1258
  private readonly jsonLogic;
@@ -1099,6 +1290,10 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1099
1290
  private recomputeLocalView;
1100
1291
  private resolveLocalSortField;
1101
1292
  private setSchemaFieldsSnapshot;
1293
+ private setFilterSchemaFieldsSnapshot;
1294
+ private inferFilterSchemaSourceFields;
1295
+ private resolveFilterSchemaRelatedColumns;
1296
+ private normalizeFieldAlias;
1102
1297
  private normalizeSchemaOptions;
1103
1298
  private normalizeEnumValues;
1104
1299
  private normalizeSchemaKey;
@@ -1108,10 +1303,61 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1108
1303
  private tableConfigKey;
1109
1304
  private filterConfigKey;
1110
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;
1111
1315
  private setShowToolbar;
1112
1316
  private shouldExposeToolbar;
1113
- 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();
1114
1320
  private ensureAiAdapterLoaded;
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;
1329
+ closeAiAssistant(): void;
1330
+ onAiAssistantPromptChange(prompt: string): void;
1331
+ onAiAssistantSubmit(prompt: string): void;
1332
+ onAiAssistantApply(): void;
1333
+ private shouldMinimizeAiAssistantAfterApply;
1334
+ private isMaterializedRowActionPatch;
1335
+ private asPlainRecord;
1336
+ onAiAssistantRetry(): void;
1337
+ onAiAssistantCancel(): void;
1338
+ onAiAssistantQuickReply(reply: PraxisAssistantShellQuickReply): void;
1339
+ getAiAssistantRecommendedIntents(): readonly PraxisAssistantRecommendedIntent[];
1340
+ private getAiAssistantCapabilityDiscoveryRecommendations;
1341
+ onAiAssistantRecommendedIntent(intent: PraxisAssistantRecommendedIntent): void;
1342
+ private getAiAssistantRecommendationResponseContract;
1343
+ onAiAssistantEditMessage(message: PraxisAssistantShellMessage): void;
1344
+ onAiAssistantResendMessage(message: PraxisAssistantShellMessage): void;
1345
+ onAiAssistantLayoutChange(layout: PraxisAssistantShellLayout): void;
1346
+ private initializeAiAssistantController;
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;
1115
1361
  private emitLoadingState;
1116
1362
  private hasResolvedRemoteDataLoad;
1117
1363
  private isTableDataLoading;
@@ -1137,6 +1383,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1137
1383
  onPageChange(event: PageEvent): void;
1138
1384
  onSortChange(event: Sort): void;
1139
1385
  onRowClicked(row: any, index: number, event?: MouseEvent): void;
1386
+ requestRecordSurfaceOpen(surface: Record<string, unknown>): boolean;
1387
+ private resolveResourceRecordSurfaceContext;
1388
+ private openResourceRecordSurface;
1140
1389
  isRowExpansionRuntimeEnabled(): boolean;
1141
1390
  isExpansionIconTriggerEnabled(): boolean;
1142
1391
  isRowExpandable(row: any, index?: number): boolean;
@@ -1315,6 +1564,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1315
1564
  private sanitizeDomIdToken;
1316
1565
  private areStringSetsEqual;
1317
1566
  private shouldToggleExpansionOnRowClick;
1567
+ private shouldSelectRowOnRowClick;
1318
1568
  private getExpansionMotionPreset;
1319
1569
  private getExpansionMotionDurationMs;
1320
1570
  private getExpansionMotionEasingCurve;
@@ -1328,22 +1578,67 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1328
1578
  private emitRowActionEvent;
1329
1579
  private showConfirmDialog;
1330
1580
  private executeDeleteAction;
1581
+ private dispatchRowAction;
1331
1582
  private cloneForEmit;
1332
1583
  private interpolateActionMessageTemplate;
1333
1584
  private buildActionFeedbackContext;
1334
1585
  private resolveActionFeedbackMessage;
1335
1586
  private showActionFeedbackMessage;
1336
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;
1337
1597
  private resolveBulkValidationMessage;
1338
1598
  private hasValidBulkSelectionCount;
1339
1599
  private showBulkConfirmDialog;
1340
1600
  onToolbarAction(event: {
1341
1601
  action: string;
1342
1602
  actionConfig?: any;
1343
- }): 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;
1344
1631
  onAdvancedFilterSubmit(criteria: Record<string, any>): void;
1345
1632
  onAdvancedFilterChange(criteria: Record<string, any>): void;
1346
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;
1347
1642
  private saveConfigWithAck;
1348
1643
  private clearConfigWithAck;
1349
1644
  private persistHorizontalScrollInput;
@@ -1362,6 +1657,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1362
1657
  private applyDataSourceSettings;
1363
1658
  private sanitizeColumns;
1364
1659
  private setupColumns;
1660
+ private preserveSchemaDrivenColumnsIfConfigOmittedColumns;
1365
1661
  private isDataColumnField;
1366
1662
  private computeVisibleDataColumnsForDrag;
1367
1663
  getVisibleDataColumnsForDrag(): ColumnDefinition[];
@@ -1370,6 +1666,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1370
1666
  isColumnDraggable(column: ColumnDefinition | null | undefined): boolean;
1371
1667
  private resolveColumnReorderHeader;
1372
1668
  private isEnglishLocale;
1669
+ private isEnglishLocaleValue;
1373
1670
  private isColumnDragDebugEnabled;
1374
1671
  private logColumnDragDebug;
1375
1672
  private resolveTableMessageTemplate;
@@ -1405,7 +1702,18 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1405
1702
  */
1406
1703
  private verifyServerSchemaVersion;
1407
1704
  private loadSchema;
1705
+ private loadFilterSchemaSnapshot;
1408
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;
1409
1717
  /**
1410
1718
  * Apply automatic renderer hints based on schema field metadata.
1411
1719
  * Runs only on initial bootstrap (when columns are derived from schema).
@@ -1428,11 +1736,14 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1428
1736
  private buildRowDiscoveryOptions;
1429
1737
  private getRowLinks;
1430
1738
  private resolveRowDiscoveryHref;
1739
+ private resolveRowSurfaceDiscoveryHref;
1431
1740
  private prefetchRowDiscovery;
1432
1741
  private ensureRowDiscovery;
1433
1742
  private ensureRowCapabilitySnapshot;
1434
1743
  private ensureRowActionCatalog;
1435
1744
  private getCachedRowCapabilitySnapshot;
1745
+ private getAiAssistantRowDiscoveryLinks;
1746
+ private mergeRowCapabilitySnapshots;
1436
1747
  private hasResolvedRowActionCatalog;
1437
1748
  isRowDiscoveryPending(row: any): boolean;
1438
1749
  private getCachedRowActionCatalog;
@@ -1473,6 +1784,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1473
1784
  private pruneRowDiscoveryCaches;
1474
1785
  private pruneRowDiscoveryCache;
1475
1786
  private fetchData;
1787
+ private resolveAnalyticsProjection;
1788
+ private fetchAnalyticsProjectionData;
1476
1789
  private getEffectiveFilterCriteria;
1477
1790
  retryData(): void;
1478
1791
  reloadSchema(): void;
@@ -1485,9 +1798,35 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1485
1798
  * 3. format (data formatting like dates, numbers, currency)
1486
1799
  */
1487
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;
1488
1808
  private resolveImplicitFormat;
1489
1809
  getCellClasses(rowData: any, column: ColumnDefinition): string[] | undefined;
1490
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;
1491
1830
  private resetComputedContextCache;
1492
1831
  private ensureEffectiveCellRenderCache;
1493
1832
  private ensureCellAnimationPreviousValuesByRowId;
@@ -1499,6 +1838,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1499
1838
  private buildComputedSignature;
1500
1839
  private stringifyDependencyValue;
1501
1840
  private buildComputedValueMap;
1841
+ private collectComputedColumns;
1842
+ private evaluateCanonicalComputedColumns;
1843
+ private collectComputedExpressionDependencies;
1844
+ private collectJsonLogicVarDependencies;
1845
+ private resolveJsonLogicVarPath;
1502
1846
  private buildEvaluationContext;
1503
1847
  private getJsonLogicEvaluationOptions;
1504
1848
  private resolveJsonLogicUserTimeZone;
@@ -1637,6 +1981,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1637
1981
  private buildEffectiveCellRenderCacheKey;
1638
1982
  private getEffectiveCellRenderResult;
1639
1983
  private getEffectiveRenderer;
1984
+ private resolveEffectiveRendererTooltip;
1640
1985
  getLinkHref(row: any, column: ColumnDefinition): string | null;
1641
1986
  getLinkText(row: any, column: ColumnDefinition): string;
1642
1987
  getLinkRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
@@ -1658,6 +2003,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1658
2003
  private buildRendererActionRuntimeOptions;
1659
2004
  onButtonClick(row: any, column: ColumnDefinition, event: Event): void;
1660
2005
  getChipText(row: any, column: ColumnDefinition): string | null;
2006
+ private getRendererTextFieldValue;
1661
2007
  getChipRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
1662
2008
  getChipIcon(row: any, column: ColumnDefinition): string | null;
1663
2009
  getChipClasses(row: any, column: ColumnDefinition): string[];
@@ -1680,6 +2026,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1680
2026
  private deriveAvatarInitials;
1681
2027
  getAvatarInitials(row: any, column: ColumnDefinition): string;
1682
2028
  getAvatarRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
2029
+ private getAvatarRichContentStyle;
1683
2030
  getAvatarShape(row: any, column: ColumnDefinition): 'square' | 'rounded' | 'circle' | undefined;
1684
2031
  getAvatarStyle(row: any, column: ColumnDefinition): Record<string, string> | null;
1685
2032
  getToggleState(row: any, column: ColumnDefinition): boolean;
@@ -1735,6 +2082,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1735
2082
  private reconcileSelectionAfterDataChange;
1736
2083
  private getComparableRowIdentity;
1737
2084
  getIdField(): string;
2085
+ private resolveConfigMetaIdField;
1738
2086
  private syncRuntimeSchemaMetaFromConfig;
1739
2087
  private getEffectiveMetadataSnapshot;
1740
2088
  getActionId(action: any): string;
@@ -1751,6 +2099,22 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1751
2099
  masterToggle(): void;
1752
2100
  isAllSelected(): boolean;
1753
2101
  toggleRow(row: any): void;
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;
1754
2118
  private getRowActionsConfig;
1755
2119
  getActionsHeaderAlign(): string;
1756
2120
  getActionsHeaderTooltip(): string | undefined;
@@ -1775,11 +2139,24 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1775
2139
  private splitVisibleRowActionsFromVisible;
1776
2140
  private decorateConfiguredRowAction;
1777
2141
  private getDiscoveredRowWorkflowActions;
2142
+ private getDiscoveredRowSurfaceActionsFromSnapshot;
1778
2143
  private getDiscoveredRowWorkflowActionsFromCatalog;
1779
2144
  private supportsRowCrudAction;
1780
2145
  private isCapabilityManagedCrudRowAction;
1781
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;
1782
2158
  private getUnavailableWorkflowMessage;
2159
+ private getUnavailableSurfaceMessage;
1783
2160
  private normalizeActionId;
1784
2161
  private isActionVisible;
1785
2162
  trackAction(index: number, item: any): any;
@@ -1793,8 +2170,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1793
2170
  getRowMenuIcon(): string;
1794
2171
  private scheduleRowDiscoveryMarkForCheck;
1795
2172
  ngOnDestroy(): void;
1796
- 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; }]>;
1797
- 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>;
1798
2175
  static ngAcceptInputType_enableCustomization: unknown;
1799
2176
  }
1800
2177
 
@@ -1807,7 +2184,6 @@ interface EditorDocument<TConfig, TBindings = unknown> {
1807
2184
  type TableHorizontalScroll = 'auto' | 'wrap' | 'none';
1808
2185
  interface TableBindings {
1809
2186
  resourcePath?: string | null;
1810
- idField?: string;
1811
2187
  horizontalScroll?: TableHorizontalScroll;
1812
2188
  }
1813
2189
  interface TableAuthoringDocument extends EditorDocument<TableConfig, TableBindings> {
@@ -1864,7 +2240,6 @@ interface TableApplyPlan {
1864
2240
  };
1865
2241
  diff?: {
1866
2242
  resourcePathChanged?: boolean;
1867
- idFieldChanged?: boolean;
1868
2243
  horizontalScrollChanged?: boolean;
1869
2244
  requiresDataRefresh?: boolean;
1870
2245
  };
@@ -2337,6 +2712,8 @@ interface ToolbarAction {
2337
2712
  /** Material button appearance: filled (flat), outlined (stroked), elevated (raised), text, tonal */
2338
2713
  appearance?: 'filled' | 'outlined' | 'elevated' | 'text' | 'tonal';
2339
2714
  action: string;
2715
+ globalAction?: GlobalActionRef;
2716
+ effects?: PraxisRuntimeGlobalActionEffect[];
2340
2717
  position: 'start' | 'end';
2341
2718
  order?: number;
2342
2719
  disabled?: boolean;
@@ -2344,7 +2721,7 @@ interface ToolbarAction {
2344
2721
  shortcut?: string;
2345
2722
  shortcutScope?: 'toolbar' | 'global';
2346
2723
  tooltip?: string;
2347
- visibleWhen?: string;
2724
+ visibleWhen?: JsonLogicExpression | null;
2348
2725
  children?: ToolbarAction[];
2349
2726
  }
2350
2727
  interface RowAction {
@@ -2352,11 +2729,15 @@ interface RowAction {
2352
2729
  label: string;
2353
2730
  icon: string;
2354
2731
  action: string;
2732
+ globalAction?: GlobalActionRef;
2733
+ effects?: PraxisRuntimeGlobalActionEffect[];
2355
2734
  color?: 'primary' | 'accent' | 'warn';
2356
2735
  tooltip?: string;
2357
2736
  requiresConfirmation?: boolean;
2358
2737
  autoDelete?: boolean;
2359
2738
  separator?: boolean;
2739
+ visibleWhen?: JsonLogicExpression | null;
2740
+ disabledWhen?: JsonLogicExpression | null;
2360
2741
  conditional?: string;
2361
2742
  }
2362
2743
  interface BulkAction {
@@ -2364,6 +2745,8 @@ interface BulkAction {
2364
2745
  label: string;
2365
2746
  icon: string;
2366
2747
  action: string;
2748
+ globalAction?: GlobalActionRef;
2749
+ effects?: PraxisRuntimeGlobalActionEffect[];
2367
2750
  color?: 'primary' | 'accent' | 'warn';
2368
2751
  tooltip?: string;
2369
2752
  requiresConfirmation?: boolean;
@@ -2377,6 +2760,25 @@ interface ToolbarActionsChange {
2377
2760
  value: any;
2378
2761
  fullConfig: TableConfig;
2379
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
+ };
2380
2782
  type ToolbarShortcutScope = 'toolbar' | 'global';
2381
2783
  interface InternalActionSpec {
2382
2784
  id: string;
@@ -2397,14 +2799,14 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
2397
2799
  editingToolbarActionIndex: number | null;
2398
2800
  editingRowActionIndex: number | null;
2399
2801
  editingBulkActionIndex: number | null;
2400
- readonly globalActionCatalog: GlobalActionSpec[];
2802
+ private readonly i18n;
2803
+ readonly globalActionCatalog: GlobalActionCatalogOption[];
2401
2804
  get internalActionCatalog(): InternalActionSpec[];
2402
2805
  readonly customActionValue = "__custom__";
2403
2806
  readonly validShortcutScopes: ToolbarShortcutScope[];
2404
2807
  private readonly actionFieldDrafts;
2405
2808
  private readonly actionFieldErrors;
2406
2809
  private readonly warnedInvalidShortcutScopes;
2407
- private readonly i18n;
2408
2810
  private destroy$;
2409
2811
  constructor(fb: FormBuilder, iconPicker: IconPickerService);
2410
2812
  tx(key: string, fallback: string): string;
@@ -2433,56 +2835,37 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
2433
2835
  private removeAddToolbarAction;
2434
2836
  private syncAddFormFromActions;
2435
2837
  private updateConfig;
2436
- getActionSelectValue(value?: string): string;
2437
- getActionParam(value?: string): string;
2438
- 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;
2439
2842
  isInternalAction(value?: string): boolean;
2440
- getActionSpecById(id: string): GlobalActionSpec | undefined;
2441
- onActionSelectChange(action: {
2442
- action?: string;
2443
- }, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2444
- onActionParamChange(action: {
2445
- action?: string;
2446
- }, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2447
- onActionCustomChange(action: {
2448
- action?: string;
2449
- }, 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;
2450
2849
  private touchActionList;
2451
- 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;
2452
2853
  isGlobalActionId(id?: string): boolean;
2453
- getGlobalActionSchema(action: {
2454
- action?: string;
2455
- }): _praxisui_core.GlobalActionUiSchema | undefined;
2456
- getSurfaceOpenActionPayload(action: {
2457
- action?: string;
2458
- }): SurfaceOpenPayload;
2459
- onSurfaceOpenActionPayloadChange(action: {
2460
- action?: string;
2461
- }, payload: SurfaceOpenPayload, kind: 'toolbar' | 'row' | 'bulk'): void;
2462
- shouldShowGlobalActionField(action: {
2463
- action?: string;
2464
- }, field: GlobalActionField): boolean;
2465
- hasActionFieldError(action: {
2466
- action?: string;
2467
- }, key: string): boolean;
2468
- getActionFieldError(action: {
2469
- action?: string;
2470
- }, key: string): string;
2471
- getGlobalActionFieldValue(action: {
2472
- action?: string;
2473
- }, field: GlobalActionField): any;
2474
- onGlobalActionFieldChange(action: {
2475
- action?: string;
2476
- }, field: GlobalActionField, value: any, kind: 'toolbar' | 'row' | 'bulk'): void;
2477
- private getActionParamInfo;
2478
- 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;
2479
2864
  private stringifyJson;
2480
2865
  private normalizeSurfaceOpenPayload;
2481
2866
  private setActionFieldError;
2482
2867
  private clearActionFieldError;
2483
2868
  private collectGlobalActionFieldValues;
2484
- private serializeGlobalActionParam;
2485
- private buildPrimaryParam;
2486
2869
  private buildGlobalActionPayload;
2487
2870
  getToolbarActionShortcutScope(action: ToolbarAction): ToolbarShortcutScope;
2488
2871
  onToolbarActionShortcutScopeChange(action: ToolbarAction, value: ToolbarShortcutScope | string): void;
@@ -2674,6 +3057,7 @@ declare class FilterSettingsComponent implements OnChanges, AfterViewInit, OnDes
2674
3057
  }[];
2675
3058
  getContrastWarning(): string | null;
2676
3059
  applyPreset(key: string): void;
3060
+ isPresetActive(key: string): boolean;
2677
3061
  hasBooleanFieldMetadata(): boolean;
2678
3062
  getFieldLabel(name: string): string;
2679
3063
  onAlwaysVisibleFieldSearchChange(value: string): void;
@@ -2837,12 +3221,10 @@ declare class RuleCompilerService {
2837
3221
  static ɵprov: i0.ɵɵInjectableDeclaration<RuleCompilerService>;
2838
3222
  }
2839
3223
 
2840
- type RuleItem = {
2841
- condition: JsonLogicExpression;
3224
+ type RuleItem = Omit<PraxisRuntimeConditionalEffectRule<RuleEffectDefinition>, 'effects'> & {
2842
3225
  cssClass?: string;
2843
3226
  style?: Record<string, string>;
2844
- description?: string;
2845
- effects?: _praxisui_table_rule_builder.RuleEffectDefinition;
3227
+ effects?: RuleEffectDefinition[];
2846
3228
  enabled?: boolean;
2847
3229
  };
2848
3230
  declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy {
@@ -2912,6 +3294,7 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
2912
3294
  onColumnSelect(field: string): void;
2913
3295
  private initFromConfig;
2914
3296
  private loadColumnRules;
3297
+ private normalizePersistedRules;
2915
3298
  rebuildCondition(): void;
2916
3299
  onDraftChange(): void;
2917
3300
  applyTextPreset(preset: string): void;
@@ -2938,6 +3321,8 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
2938
3321
  onExportRules(): void;
2939
3322
  onImportRules(): void;
2940
3323
  private sanitizeRule;
3324
+ private normalizeRuleEffects;
3325
+ getPrimaryEffect(r: RuleItem | null | undefined): RuleEffectDefinition | undefined;
2941
3326
  getAnimationLabel(r: RuleItem): string | null;
2942
3327
  private normalizeRendererAnimation;
2943
3328
  private buildRendererOverrideFromRule;
@@ -3044,6 +3429,8 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3044
3429
  private cdr;
3045
3430
  private configService;
3046
3431
  private readonly i18n;
3432
+ private readonly globalActionCatalogSource;
3433
+ private readonly globalActionCatalog;
3047
3434
  filterSettingsEditor?: FilterSettingsComponent;
3048
3435
  behaviorEditor?: BehaviorConfigEditorComponent;
3049
3436
  rulesEditor?: TableRulesEditorComponent;
@@ -3106,6 +3493,7 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3106
3493
  private hasLocalDataInput;
3107
3494
  private filterDtoLoadSeq;
3108
3495
  private lastKnownFilterSettings;
3496
+ private globalActionValidationIssues;
3109
3497
  private readonly panelData;
3110
3498
  private readonly crudService;
3111
3499
  private readonly panelRef;
@@ -3132,6 +3520,9 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3132
3520
  onRulesConfigChange(newCfg: TableConfig): void;
3133
3521
  private updateColumnMetas;
3134
3522
  private updateCanSaveState;
3523
+ private collectGlobalActionValidationIssues;
3524
+ private findGlobalActionCatalogEntry;
3525
+ private buildGlobalActionCatalog;
3135
3526
  private subscribeCrudEditorChanges;
3136
3527
  private showSuccess;
3137
3528
  private showError;
@@ -3140,6 +3531,7 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3140
3531
  * Normaliza uma configuração de tabela para comparação consistente
3141
3532
  * Remove propriedades undefined, ordena arrays e objetos de forma consistente
3142
3533
  */
3534
+ private withCanonicalIdField;
3143
3535
  private normalizeTableConfig;
3144
3536
  /**
3145
3537
  * Realiza comparação profunda de objetos, ignorando ordem de propriedades
@@ -3202,6 +3594,107 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3202
3594
  static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableConfigEditor, "praxis-table-config-editor", never, {}, {}, never, never, true, never>;
3203
3595
  }
3204
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
+
3205
3698
  declare class DataFormatterComponent implements OnInit, OnChanges {
3206
3699
  private cdr;
3207
3700
  private formattingService;
@@ -3270,31 +3763,6 @@ declare class DataFormatterComponent implements OnInit, OnChanges {
3270
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>;
3271
3764
  }
3272
3765
 
3273
- type AnalyticsTableRow = Record<string, string | number | boolean | null>;
3274
- type AnalyticsTableContractSource = 'remote' | 'fallback';
3275
- interface AnalyticsTableViewModel {
3276
- config: TableConfig;
3277
- data: AnalyticsTableRow[];
3278
- }
3279
- interface AnalyticsTableContractDefinition<TKey extends string = string> {
3280
- key: TKey;
3281
- projectionId: string;
3282
- path: string;
3283
- title: PraxisTextValue;
3284
- subtitle?: PraxisTextValue;
3285
- fallbackProjection: PraxisAnalyticsProjection;
3286
- fallbackRows?: AnalyticsTableRow[];
3287
- }
3288
- interface AnalyticsTableContractLoadOptions<TKey extends string = string> {
3289
- cacheNamespace?: string;
3290
- queryContexts?: Partial<Record<TKey, PraxisDataQueryContext | null>>;
3291
- }
3292
- interface AnalyticsTableContractLoadResult<TKey extends string = string> {
3293
- views: Record<TKey, AnalyticsTableViewModel>;
3294
- sources: Record<TKey, AnalyticsTableContractSource>;
3295
- errors: Partial<Record<TKey, string>>;
3296
- }
3297
-
3298
3766
  interface AnalyticsTableConfigAdapterOptions {
3299
3767
  title?: PraxisTextValue;
3300
3768
  subtitle?: PraxisTextValue;
@@ -3308,24 +3776,6 @@ declare class AnalyticsTableConfigAdapterService {
3308
3776
  static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableConfigAdapterService>;
3309
3777
  }
3310
3778
 
3311
- declare class AnalyticsTableStatsApiService {
3312
- private readonly http;
3313
- private readonly apiUrl;
3314
- private readonly statsBuilder;
3315
- constructor(http: HttpClient, apiUrl: ApiUrlConfig);
3316
- execute(projection: PraxisAnalyticsProjection, queryContext?: PraxisDataQueryContext | null): Promise<AnalyticsTableRow[]>;
3317
- private toTableRows;
3318
- private resolveTimeSeriesCategory;
3319
- private resolveBucketCategory;
3320
- private projectMetricValues;
3321
- private resolveMetricValue;
3322
- private buildStatsUrl;
3323
- private applyQueryContext;
3324
- private normalizeError;
3325
- static ɵfac: i0.ɵɵFactoryDeclaration<AnalyticsTableStatsApiService, never>;
3326
- static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableStatsApiService>;
3327
- }
3328
-
3329
3779
  declare class AnalyticsTableContractService {
3330
3780
  private readonly analyticsSchema;
3331
3781
  private readonly resolver;
@@ -3361,6 +3811,15 @@ declare function buildTableApplyPlan(doc: TableAuthoringDocument, runtime?: Tabl
3361
3811
  }): TableApplyPlan;
3362
3812
  declare function serializeTableAuthoringDocument(doc: TableAuthoringDocument): unknown;
3363
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
+
3364
3823
  declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3365
3824
  private readonly i18n;
3366
3825
  config: TableConfig;
@@ -3372,6 +3831,9 @@ declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3372
3831
  toolbarVisible: boolean;
3373
3832
  density: 'compact' | 'comfortable' | 'spacious';
3374
3833
  toolbarActionsPosition: 'top' | 'bottom' | 'both';
3834
+ toolbarAppearanceVariant: 'flat' | 'outlined' | 'elevated' | 'integrated';
3835
+ toolbarAppearanceShape: 'square' | 'rounded' | 'pill';
3836
+ toolbarAppearanceDivider: 'none' | 'start' | 'between-groups';
3375
3837
  toolbarHeight: number;
3376
3838
  toolbarActionsBackgroundColor: string;
3377
3839
  paginationEnabled: boolean;
@@ -3399,6 +3861,9 @@ declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3399
3861
  setToolbarVisible(value: boolean): void;
3400
3862
  setDensity(value: 'compact' | 'comfortable' | 'spacious'): void;
3401
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;
3402
3867
  setToolbarHeight(value: number | string): void;
3403
3868
  setToolbarActionsBackgroundColor(value: string): void;
3404
3869
  setPaginationEnabled(value: boolean): void;
@@ -3426,6 +3891,7 @@ declare class PraxisTableInlineAuthoringEditorComponent implements OnChanges {
3426
3891
  tx(key: string, fallback: string): string;
3427
3892
  private emitConfig;
3428
3893
  private patchToolbar;
3894
+ private patchToolbarAppearance;
3429
3895
  private patchBehavior;
3430
3896
  private patchPagination;
3431
3897
  private patchSorting;
@@ -3461,7 +3927,7 @@ declare class ValueMappingEditorComponent implements OnInit, OnChanges {
3461
3927
  [key: number]: string;
3462
3928
  }>;
3463
3929
  mappingPairs: ValueMappingPair[];
3464
- dataSource: MatTableDataSource<ValueMappingPair, _angular_material_paginator_d_Zo1cMMo4.M>;
3930
+ dataSource: MatTableDataSource<ValueMappingPair, _angular_material_paginator.MatPaginator>;
3465
3931
  displayedColumns: string[];
3466
3932
  showImportDialog: boolean;
3467
3933
  importJsonText: string;
@@ -3607,7 +4073,6 @@ declare function providePraxisTableMetadata(): Provider;
3607
4073
  declare module '@praxisui/core' {
3608
4074
  interface AiCapabilityCategoryMap {
3609
4075
  meta: true;
3610
- bindings: true;
3611
4076
  columns: true;
3612
4077
  renderer: true;
3613
4078
  conditional: true;
@@ -3621,6 +4086,7 @@ declare module '@praxisui/core' {
3621
4086
  toolbar: true;
3622
4087
  actions: true;
3623
4088
  export: true;
4089
+ runtime: true;
3624
4090
  performance: true;
3625
4091
  messages: true;
3626
4092
  localization: true;
@@ -3682,5 +4148,336 @@ interface CapabilityCatalog extends AiCapabilityCatalog {
3682
4148
  }
3683
4149
  declare const TABLE_COMPONENT_AI_CAPABILITIES: CapabilityCatalog;
3684
4150
 
3685
- 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, TASK_PRESETS, TableDefaultsProvider, TableRulesEditorComponent, ToolbarActionsEditorComponent, ValueMappingEditorComponent, VisualFormulaBuilderComponent, buildTableApplyPlan, createTableAuthoringDocument, getActionId, getEnum, getTableCapabilities, isTableRendererSupportedByRichContentP0, mapTableRendererToRichContentP0, normalizeTableAuthoringDocument, parseLegacyOrTableDocument, providePraxisFilterMetadata, providePraxisTableMetadata, serializeTableAuthoringDocument, toCanonicalTableConfig, validateTableAuthoringDocument };
3686
- 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, ValueKind as TableComponentValueKind, TableHorizontalScroll, TableProjectionContext, TableRichContentP0Node, TableRuntimeContext, TableValidationContext, ToolbarAction, ToolbarActionsChange, ValueKind$1 as ValueKind, ValueMappingPair };
4151
+ type ComponentEditPlanCapability = {
4152
+ path: string;
4153
+ category: string;
4154
+ valueKind: string;
4155
+ description: string;
4156
+ allowedValues?: readonly string[];
4157
+ critical?: boolean;
4158
+ };
4159
+ declare const TABLE_COMPONENT_EDIT_PLAN_KIND = "praxis.table.component-edit-plan";
4160
+ declare const TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND = "praxis.table.component-edit-plan.batch";
4161
+ declare const TABLE_COMPONENT_EDIT_PLAN_VERSION = "1.0";
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"];
4165
+ declare const TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS: Record<TableComponentEditChangeKind, string>;
4166
+ interface TableComponentEditPlan {
4167
+ kind?: typeof TABLE_COMPONENT_EDIT_PLAN_KIND;
4168
+ version?: typeof TABLE_COMPONENT_EDIT_PLAN_VERSION | string;
4169
+ componentId?: 'praxis-table' | string;
4170
+ changeKind: TableComponentEditChangeKind | string;
4171
+ operationId?: TableComponentEditOperationId | string;
4172
+ capabilityPath?: string;
4173
+ configPath?: string;
4174
+ field?: string;
4175
+ targetField?: string;
4176
+ target?: unknown;
4177
+ input?: unknown;
4178
+ params?: unknown;
4179
+ value?: unknown;
4180
+ condition?: unknown;
4181
+ style?: unknown;
4182
+ cssClass?: unknown;
4183
+ description?: unknown;
4184
+ explanation?: string;
4185
+ }
4186
+ interface TableComponentEditPlanCompileResult {
4187
+ patch?: Partial<TableConfig>;
4188
+ explanation?: string;
4189
+ warnings: string[];
4190
+ failureCodes: string[];
4191
+ }
4192
+ declare function getTableComponentEditPlanCapabilities(): ComponentEditPlanCapability[];
4193
+ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
4194
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
4195
+ readonly $id: "https://praxisui.dev/schemas/table/component-edit-plan.v1.schema.json";
4196
+ readonly title: "Praxis Table Component Edit Plan";
4197
+ readonly description: "Declarative, versioned contract for AI-authored table column edits.";
4198
+ readonly oneOf: readonly [{
4199
+ readonly $ref: "#/$defs/singlePlanEnvelope";
4200
+ }, {
4201
+ readonly $ref: "#/$defs/batchPlanEnvelope";
4202
+ }];
4203
+ readonly $defs: {
4204
+ readonly changeKind: {
4205
+ readonly type: "string";
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"];
4207
+ };
4208
+ readonly capabilityPath: {
4209
+ readonly type: "string";
4210
+ readonly enum: string[];
4211
+ };
4212
+ readonly jsonLogicExpression: {
4213
+ readonly type: "object";
4214
+ readonly minProperties: 1;
4215
+ readonly additionalProperties: true;
4216
+ };
4217
+ readonly badge: {
4218
+ readonly type: "object";
4219
+ readonly additionalProperties: false;
4220
+ readonly properties: {
4221
+ readonly text: {
4222
+ readonly type: "string";
4223
+ readonly minLength: 1;
4224
+ };
4225
+ readonly textField: {
4226
+ readonly type: "string";
4227
+ readonly minLength: 1;
4228
+ };
4229
+ readonly color: {
4230
+ readonly type: "string";
4231
+ readonly minLength: 1;
4232
+ };
4233
+ readonly variant: {
4234
+ readonly type: "string";
4235
+ readonly enum: readonly ["filled", "outlined", "soft"];
4236
+ };
4237
+ readonly icon: {
4238
+ readonly type: "string";
4239
+ readonly minLength: 1;
4240
+ };
4241
+ readonly tooltip: {
4242
+ readonly $ref: "#/$defs/tooltip";
4243
+ };
4244
+ };
4245
+ readonly anyOf: readonly [{
4246
+ readonly required: readonly ["text"];
4247
+ }, {
4248
+ readonly required: readonly ["textField"];
4249
+ }];
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
+ };
4273
+ readonly operation: {
4274
+ readonly type: "object";
4275
+ readonly additionalProperties: false;
4276
+ readonly properties: {
4277
+ readonly kind: {
4278
+ readonly const: "praxis.table.component-edit-plan";
4279
+ };
4280
+ readonly version: {
4281
+ readonly const: "1.0";
4282
+ };
4283
+ readonly componentId: {
4284
+ readonly const: "praxis-table";
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;
4292
+ readonly changeKind: {
4293
+ readonly $ref: "#/$defs/changeKind";
4294
+ };
4295
+ readonly capabilityPath: {
4296
+ readonly $ref: "#/$defs/capabilityPath";
4297
+ };
4298
+ readonly configPath: {
4299
+ readonly $ref: "#/$defs/capabilityPath";
4300
+ };
4301
+ readonly field: {
4302
+ readonly type: "string";
4303
+ readonly minLength: 1;
4304
+ };
4305
+ readonly targetField: {
4306
+ readonly type: "string";
4307
+ readonly minLength: 1;
4308
+ };
4309
+ readonly value: true;
4310
+ readonly condition: true;
4311
+ readonly style: true;
4312
+ readonly cssClass: true;
4313
+ readonly description: {
4314
+ readonly type: "string";
4315
+ };
4316
+ readonly explanation: {
4317
+ readonly type: "string";
4318
+ };
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
+ }];
4327
+ readonly allOf: readonly [{
4328
+ readonly if: {
4329
+ readonly properties: {
4330
+ readonly changeKind: {
4331
+ readonly const: "set_column_conditional_style";
4332
+ };
4333
+ };
4334
+ readonly required: readonly ["changeKind"];
4335
+ };
4336
+ readonly then: {
4337
+ readonly properties: {
4338
+ readonly value: {
4339
+ readonly type: "object";
4340
+ readonly required: readonly ["condition"];
4341
+ readonly properties: {
4342
+ readonly condition: {
4343
+ readonly $ref: "#/$defs/jsonLogicExpression";
4344
+ };
4345
+ readonly cssClass: {
4346
+ readonly type: "string";
4347
+ readonly minLength: 1;
4348
+ };
4349
+ readonly style: {
4350
+ readonly type: "object";
4351
+ readonly minProperties: 1;
4352
+ };
4353
+ readonly description: {
4354
+ readonly type: "string";
4355
+ };
4356
+ };
4357
+ readonly anyOf: readonly [{
4358
+ readonly required: readonly ["cssClass"];
4359
+ }, {
4360
+ readonly required: readonly ["style"];
4361
+ }];
4362
+ };
4363
+ };
4364
+ };
4365
+ }, {
4366
+ readonly if: {
4367
+ readonly properties: {
4368
+ readonly changeKind: {
4369
+ readonly const: "set_column_conditional_badge_renderers";
4370
+ };
4371
+ };
4372
+ readonly required: readonly ["changeKind"];
4373
+ };
4374
+ readonly then: {
4375
+ readonly properties: {
4376
+ readonly value: {
4377
+ readonly oneOf: readonly [{
4378
+ readonly $ref: "#/$defs/conditionalBadgeRules";
4379
+ }, {
4380
+ readonly type: "object";
4381
+ readonly required: readonly ["rules"];
4382
+ readonly properties: {
4383
+ readonly rules: {
4384
+ readonly $ref: "#/$defs/conditionalBadgeRules";
4385
+ };
4386
+ };
4387
+ readonly additionalProperties: false;
4388
+ }];
4389
+ };
4390
+ };
4391
+ };
4392
+ }];
4393
+ };
4394
+ readonly conditionalBadgeRules: {
4395
+ readonly type: "array";
4396
+ readonly minItems: 1;
4397
+ readonly items: {
4398
+ readonly type: "object";
4399
+ readonly additionalProperties: false;
4400
+ readonly required: readonly ["condition"];
4401
+ readonly anyOf: readonly [{
4402
+ readonly required: readonly ["badge"];
4403
+ }, {
4404
+ readonly required: readonly ["renderer"];
4405
+ }, {
4406
+ readonly required: readonly ["value"];
4407
+ }, {
4408
+ readonly required: readonly ["tooltip"];
4409
+ }];
4410
+ readonly properties: {
4411
+ readonly condition: {
4412
+ readonly $ref: "#/$defs/jsonLogicExpression";
4413
+ };
4414
+ readonly badge: {
4415
+ readonly $ref: "#/$defs/badge";
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
+ };
4425
+ readonly value: {
4426
+ readonly $ref: "#/$defs/badge";
4427
+ };
4428
+ readonly description: {
4429
+ readonly type: "string";
4430
+ };
4431
+ readonly enabled: {
4432
+ readonly type: "boolean";
4433
+ };
4434
+ };
4435
+ };
4436
+ };
4437
+ readonly singlePlanEnvelope: {
4438
+ readonly allOf: readonly [{
4439
+ readonly $ref: "#/$defs/operation";
4440
+ }, {
4441
+ readonly type: "object";
4442
+ readonly properties: {
4443
+ readonly kind: {
4444
+ readonly const: "praxis.table.component-edit-plan";
4445
+ };
4446
+ };
4447
+ }];
4448
+ };
4449
+ readonly batchPlanEnvelope: {
4450
+ readonly type: "object";
4451
+ readonly additionalProperties: false;
4452
+ readonly required: readonly ["kind", "version", "componentId", "operations"];
4453
+ readonly properties: {
4454
+ readonly kind: {
4455
+ readonly const: "praxis.table.component-edit-plan.batch";
4456
+ };
4457
+ readonly version: {
4458
+ readonly const: "1.0";
4459
+ };
4460
+ readonly componentId: {
4461
+ readonly const: "praxis-table";
4462
+ };
4463
+ readonly operations: {
4464
+ readonly type: "array";
4465
+ readonly minItems: 1;
4466
+ readonly items: {
4467
+ readonly $ref: "#/$defs/operation";
4468
+ };
4469
+ };
4470
+ readonly explanation: {
4471
+ readonly type: "string";
4472
+ };
4473
+ };
4474
+ };
4475
+ };
4476
+ };
4477
+ declare function coerceTableComponentEditPlans(value: unknown): TableComponentEditPlan[] | null;
4478
+ declare function coerceTableComponentEditPlan(value: unknown): TableComponentEditPlan | null;
4479
+ declare function compileTableComponentEditPlans(plans: TableComponentEditPlan[], currentConfig: TableConfig): TableComponentEditPlanCompileResult;
4480
+ declare function compileTableComponentEditPlan(plan: TableComponentEditPlan, currentConfig: TableConfig): TableComponentEditPlanCompileResult;
4481
+
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 };