@praxisui/table 8.0.0-beta.20 → 8.0.0-beta.22

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.
package/index.d.ts CHANGED
@@ -10,16 +10,15 @@ import { CdkDragDrop, CdkDragEnd, CdkDrag, CdkDropList } from '@angular/cdk/drag
10
10
  import { BehaviorSubject, Subscription, Observable } from 'rxjs';
11
11
  import { SettingsPanelService, SettingsValueProvider } from '@praxisui/settings-panel';
12
12
  import * as _praxisui_core from '@praxisui/core';
13
- import { TableConfig, LoggerService, PraxisI18nService, GlobalConfigService, AsyncConfigStorage, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, LoadingState, RestApiLinks, ColumnDefinition, RichBlockNode, ConnectionStorage, ResourceDiscoveryService, LoadingOrchestrator, GlobalActionService, PraxisLoadingRenderer, TableDetailRichListNode, TableDetailCardGridNode, TableDetailCardGridCardNode, TableDetailTimelineNode, JsonLogicDataRecord, TableDetailListItemAction, TableDetailActionBarNode, TableDetailActionBarAction, TableDetailRefNode, TableDetailTemplateRefNode, TableDetailDiagramEmbedNode, TableDetailEmbedAction, GlobalActionRef, ResourceActionCatalogItem, ResourceSurfaceCatalogItem, JsonLogicExpression, GlobalActionCatalogEntry, IconPickerService, SurfaceOpenPayload, GlobalActionField, FieldDefinition, PraxisJsonLogicService, TableConfigService, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, AnalyticsSchemaContractService, AnalyticsPresentationResolver, RichPresenterNode, RichComposeNode, ComponentAuthoringManifest, AiCapabilityCategory, AiValueKind, AiCapability, AiCapabilityCatalog } from '@praxisui/core';
13
+ import { TableConfig, LoggerService, PraxisI18nService, GlobalConfigService, AsyncConfigStorage, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, LoadingState, RestApiLinks, ColumnDefinition, RichBlockNode, ConnectionStorage, ResourceDiscoveryService, LoadingOrchestrator, GlobalActionService, PraxisLoadingRenderer, TableDetailRichListNode, TableDetailCardGridNode, TableDetailCardGridCardNode, TableDetailTimelineNode, JsonLogicDataRecord, TableDetailListItemAction, TableDetailActionBarNode, TableDetailActionBarAction, TableDetailRefNode, TableDetailTemplateRefNode, TableDetailDiagramEmbedNode, TableDetailEmbedAction, GlobalActionRef, PraxisRuntimeGlobalActionEffect, ResourceActionCatalogItem, ResourceSurfaceCatalogItem, JsonLogicExpression, GlobalActionCatalogEntry, IconPickerService, SurfaceOpenPayload, GlobalActionField, FieldDefinition, PraxisRuntimeConditionalEffectRule, PraxisJsonLogicService, TableConfigService, SettingsValueProvider as SettingsValueProvider$1, AnalyticsSchemaContractService, AnalyticsPresentationResolver, RichPresenterNode, RichComposeNode, ComponentAuthoringManifest, AiCapabilityCategory, AiValueKind, AiCapability, AiCapabilityCatalog } from '@praxisui/core';
14
14
  import { FormGroup, FormControl, FormBuilder } from '@angular/forms';
15
15
  import { MatDialog } from '@angular/material/dialog';
16
16
  import { CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';
17
17
  import { PraxisDialog } from '@praxisui/dialog';
18
- import { PraxisAssistantTurnViewState, PraxisAssistantShellLayout, PraxisAssistantShellLabels, PraxisAssistantShellQuickReply, PraxisAssistantShellMessage } from '@praxisui/ai';
18
+ import { PraxisAssistantTurnViewState, PraxisAssistantShellLayout, PraxisAssistantShellLabels, PraxisAssistantSessionSnapshot, PraxisAssistantShellQuickReply, PraxisAssistantShellMessage } from '@praxisui/ai';
19
+ import { HttpClient } from '@angular/common/http';
19
20
  import { MatTabChangeEvent } from '@angular/material/tabs';
20
- import * as _praxisui_table_rule_builder from '@praxisui/table-rule-builder';
21
21
  import { RuleEffectDefinition } from '@praxisui/table-rule-builder';
22
- import { HttpClient } from '@angular/common/http';
23
22
  import * as _angular_material_paginator_d_Zo1cMMo4 from '@angular/material/paginator.d-Zo1cMMo4';
24
23
  import { MatCheckboxChange } from '@angular/material/checkbox';
25
24
 
@@ -218,6 +217,7 @@ declare class DataFormattingService {
218
217
  */
219
218
  formatValue(value: any, columnType: ColumnDataType$1, formatString: string, options?: DataFormattingOptions): any;
220
219
  private coerceValueToType;
220
+ private parseDateOnlyString;
221
221
  private normalizeNumericDateInput;
222
222
  private formatDate;
223
223
  private formatNumber;
@@ -648,6 +648,11 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
648
648
  retrySchemaLoad(): void;
649
649
  private applySchemaMetas;
650
650
  private applySchemaMetasNow;
651
+ private withFilterMaterialDesignPolicy;
652
+ private withAdvancedDatePickerTouchPolicy;
653
+ private isAdvancedDatePickerControl;
654
+ private buildAdvancedFilterColumn;
655
+ private isCompositeRangeFilterField;
651
656
  private pickMetasByOrder;
652
657
  private hasRemoteOptionSource;
653
658
  private withInferredFilterControlType;
@@ -762,6 +767,49 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
762
767
  declare const PRAXIS_FILTER_COMPONENT_METADATA: ComponentDocMeta;
763
768
  declare function providePraxisFilterMetadata(): Provider;
764
769
 
770
+ type AnalyticsTableRow = Record<string, string | number | boolean | null>;
771
+ type AnalyticsTableContractSource = 'remote' | 'fallback';
772
+ interface AnalyticsTableViewModel {
773
+ config: TableConfig;
774
+ data: AnalyticsTableRow[];
775
+ }
776
+ interface AnalyticsTableContractDefinition<TKey extends string = string> {
777
+ key: TKey;
778
+ projectionId: string;
779
+ path: string;
780
+ title: PraxisTextValue;
781
+ subtitle?: PraxisTextValue;
782
+ fallbackProjection: PraxisAnalyticsProjection;
783
+ fallbackRows?: AnalyticsTableRow[];
784
+ }
785
+ interface AnalyticsTableContractLoadOptions<TKey extends string = string> {
786
+ cacheNamespace?: string;
787
+ queryContexts?: Partial<Record<TKey, PraxisDataQueryContext | null>>;
788
+ }
789
+ interface AnalyticsTableContractLoadResult<TKey extends string = string> {
790
+ views: Record<TKey, AnalyticsTableViewModel>;
791
+ sources: Record<TKey, AnalyticsTableContractSource>;
792
+ errors: Partial<Record<TKey, string>>;
793
+ }
794
+
795
+ declare class AnalyticsTableStatsApiService {
796
+ private readonly http;
797
+ private readonly apiUrl;
798
+ private readonly statsBuilder;
799
+ constructor(http: HttpClient, apiUrl: ApiUrlConfig);
800
+ execute(projection: PraxisAnalyticsProjection, queryContext?: PraxisDataQueryContext | null): Promise<AnalyticsTableRow[]>;
801
+ private toTableRows;
802
+ private resolveTimeSeriesCategory;
803
+ private resolveBucketCategory;
804
+ private projectMetricValues;
805
+ private resolveMetricValue;
806
+ private buildStatsUrl;
807
+ private applyQueryContext;
808
+ private normalizeError;
809
+ static ɵfac: i0.ɵɵFactoryDeclaration<AnalyticsTableStatsApiService, never>;
810
+ static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableStatsApiService>;
811
+ }
812
+
765
813
  type SchemaFieldHint = {
766
814
  name: string;
767
815
  label?: string;
@@ -844,6 +892,7 @@ type RuntimeRowAction = {
844
892
  id: string;
845
893
  action: string;
846
894
  globalAction?: GlobalActionRef;
895
+ effects?: PraxisRuntimeGlobalActionEffect[];
847
896
  label?: string;
848
897
  icon?: string;
849
898
  color?: string;
@@ -882,6 +931,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
882
931
  private loadingRenderer?;
883
932
  private route?;
884
933
  private logger?;
934
+ private analyticsStatsApi?;
885
935
  private static readonly CELL_ANIMATION_CHANGE_CACHE_LIMIT;
886
936
  private static readonly ROW_DISCOVERY_SUCCESS_CACHE_TTL_MS;
887
937
  private static readonly ROW_DISCOVERY_ERROR_CACHE_TTL_MS;
@@ -963,6 +1013,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
963
1013
  private lastResolvedDataMode;
964
1014
  private localFilterFieldMetadataCache;
965
1015
  private localFilterFieldMetadataCacheKey;
1016
+ private analyticsLoadSequence;
966
1017
  private uncontrolledExpandedRowKeys;
967
1018
  private readonly expansionOpaqueRefCacheLimit;
968
1019
  private expansionOpaqueRefByRowKey;
@@ -1040,6 +1091,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1040
1091
  hasBottomPaginator(): boolean;
1041
1092
  hasExplicitResourcePath(): boolean;
1042
1093
  hasLocalDataInput(): boolean;
1094
+ hasAnalyticsProjectionInput(): boolean;
1043
1095
  getDataMode(): DataMode;
1044
1096
  isRemoteMode(): boolean;
1045
1097
  isLocalMode(): boolean;
@@ -1096,7 +1148,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1096
1148
  private aiAssistantController;
1097
1149
  private aiAssistantStateSubscription;
1098
1150
  private readonly aiApi;
1151
+ private readonly assistantSessions;
1099
1152
  private readonly aiTurnOrchestrator;
1153
+ private readonly aiAssistantSessionEffect;
1100
1154
  private computedContextCache;
1101
1155
  private computedFieldNames;
1102
1156
  private readonly jsonLogic;
@@ -1145,19 +1199,32 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1145
1199
  private ensureConfigDefaults;
1146
1200
  private setShowToolbar;
1147
1201
  private shouldExposeToolbar;
1148
- 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, globalActions: GlobalActionService, loadingRenderer?: PraxisLoadingRenderer | undefined, route?: ActivatedRoute | undefined, logger?: LoggerService | undefined);
1202
+ 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, globalActions: GlobalActionService, loadingRenderer?: PraxisLoadingRenderer | undefined, route?: ActivatedRoute | undefined, logger?: LoggerService | undefined, analyticsStatsApi?: AnalyticsTableStatsApiService | undefined);
1149
1203
  private ensureAiAdapterLoaded;
1150
1204
  openAiAssistant(): void;
1205
+ aiAssistantTriggerTestId(position: string): string;
1206
+ openAiAssistantFromSession(session: PraxisAssistantSessionSnapshot): void;
1151
1207
  closeAiAssistant(): void;
1152
1208
  onAiAssistantPromptChange(prompt: string): void;
1153
1209
  onAiAssistantSubmit(prompt: string): void;
1154
1210
  onAiAssistantApply(): void;
1211
+ onAiAssistantRetry(): void;
1212
+ onAiAssistantCancel(): void;
1155
1213
  onAiAssistantQuickReply(reply: PraxisAssistantShellQuickReply): void;
1156
1214
  onAiAssistantEditMessage(message: PraxisAssistantShellMessage): void;
1157
1215
  onAiAssistantResendMessage(message: PraxisAssistantShellMessage): void;
1158
1216
  onAiAssistantLayoutChange(layout: PraxisAssistantShellLayout): void;
1159
1217
  private initializeAiAssistantController;
1160
1218
  private buildAiAssistantContextItems;
1219
+ private buildAiAssistantContextSnapshot;
1220
+ private syncAiAssistantSession;
1221
+ private hasAiAssistantSessionState;
1222
+ private resolveAiAssistantSessionId;
1223
+ private resolveAiAssistantOwnerId;
1224
+ private resolveAiAssistantRouteKey;
1225
+ private resolveAiAssistantSummary;
1226
+ private resolveAiAssistantBadge;
1227
+ private resolveAiAssistantIcon;
1161
1228
  private emitLoadingState;
1162
1229
  private hasResolvedRemoteDataLoad;
1163
1230
  private isTableDataLoading;
@@ -1384,6 +1451,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1384
1451
  private emitEventWithActionFeedback;
1385
1452
  private executeConfiguredGlobalAction;
1386
1453
  private resolveConfiguredGlobalActionRef;
1454
+ private resolveActionGlobalActionRef;
1387
1455
  private resolveGlobalActionPayload;
1388
1456
  private buildGlobalActionTemplateContext;
1389
1457
  private resolveGlobalActionTemplateValue;
@@ -1551,6 +1619,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1551
1619
  private pruneRowDiscoveryCaches;
1552
1620
  private pruneRowDiscoveryCache;
1553
1621
  private fetchData;
1622
+ private resolveAnalyticsProjection;
1623
+ private fetchAnalyticsProjectionData;
1554
1624
  private getEffectiveFilterCriteria;
1555
1625
  retryData(): void;
1556
1626
  reloadSchema(): void;
@@ -1570,6 +1640,19 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1570
1640
  private resolveImplicitFormat;
1571
1641
  getCellClasses(rowData: any, column: ColumnDefinition): string[] | undefined;
1572
1642
  getCellNgStyle(rowData: any, column: ColumnDefinition): Record<string, string> | undefined;
1643
+ private normalizeConditionalStyleRules;
1644
+ private normalizeConditionalStyleRecord;
1645
+ private normalizeConditionalStyleEffects;
1646
+ private hasConditionalStyleEffectPayload;
1647
+ private resolveConditionalStyleClasses;
1648
+ private resolveConditionalStyleObject;
1649
+ private compileConditionalStyleEffect;
1650
+ private normalizeConditionalRendererRules;
1651
+ private normalizeObjectRecord;
1652
+ private buildColumnRendererOverrideFromEffects;
1653
+ private buildColumnRendererFromEffect;
1654
+ private resolveRuleAnimationFromEffects;
1655
+ private resolveRowTooltipFromEffects;
1573
1656
  private resetComputedContextCache;
1574
1657
  private ensureEffectiveCellRenderCache;
1575
1658
  private ensureCellAnimationPreviousValuesByRowId;
@@ -1581,6 +1664,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1581
1664
  private buildComputedSignature;
1582
1665
  private stringifyDependencyValue;
1583
1666
  private buildComputedValueMap;
1667
+ private collectComputedColumns;
1668
+ private evaluateCanonicalComputedColumns;
1669
+ private collectComputedExpressionDependencies;
1670
+ private collectJsonLogicVarDependencies;
1671
+ private resolveJsonLogicVarPath;
1584
1672
  private buildEvaluationContext;
1585
1673
  private getJsonLogicEvaluationOptions;
1586
1674
  private resolveJsonLogicUserTimeZone;
@@ -1886,8 +1974,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1886
1974
  getRowMenuIcon(): string;
1887
1975
  private scheduleRowDiscoveryMarkForCheck;
1888
1976
  ngOnDestroy(): void;
1889
- 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; }]>;
1890
- 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"; "exportAction": "exportAction"; "columnReorder": "columnReorder"; "columnReorderAttempt": "columnReorderAttempt"; "beforeDelete": "beforeDelete"; "afterDelete": "afterDelete"; "deleteError": "deleteError"; "beforeBulkDelete": "beforeBulkDelete"; "afterBulkDelete": "afterBulkDelete"; "bulkDeleteError": "bulkDeleteError"; "schemaStatusChange": "schemaStatusChange"; "metadataChange": "metadataChange"; "loadingStateChange": "loadingStateChange"; "collectionLinksChange": "collectionLinksChange"; "selectionChange": "selectionChange"; }, ["toolbar", "projectedFilter"], ["[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]"], true, never>;
1977
+ 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; }]>;
1978
+ 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; }; "horizontalScroll": { "alias": "horizontalScroll"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "dense": { "alias": "dense"; "required": false; }; }, { "rowClick": "rowClick"; "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"; "metadataChange": "metadataChange"; "loadingStateChange": "loadingStateChange"; "collectionLinksChange": "collectionLinksChange"; "selectionChange": "selectionChange"; }, ["toolbar", "projectedFilter"], ["[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]"], true, never>;
1891
1979
  static ngAcceptInputType_enableCustomization: unknown;
1892
1980
  }
1893
1981
 
@@ -2429,6 +2517,7 @@ interface ToolbarAction {
2429
2517
  appearance?: 'filled' | 'outlined' | 'elevated' | 'text' | 'tonal';
2430
2518
  action: string;
2431
2519
  globalAction?: GlobalActionRef;
2520
+ effects?: PraxisRuntimeGlobalActionEffect[];
2432
2521
  position: 'start' | 'end';
2433
2522
  order?: number;
2434
2523
  disabled?: boolean;
@@ -2436,7 +2525,7 @@ interface ToolbarAction {
2436
2525
  shortcut?: string;
2437
2526
  shortcutScope?: 'toolbar' | 'global';
2438
2527
  tooltip?: string;
2439
- visibleWhen?: string;
2528
+ visibleWhen?: JsonLogicExpression | null;
2440
2529
  children?: ToolbarAction[];
2441
2530
  }
2442
2531
  interface RowAction {
@@ -2445,11 +2534,14 @@ interface RowAction {
2445
2534
  icon: string;
2446
2535
  action: string;
2447
2536
  globalAction?: GlobalActionRef;
2537
+ effects?: PraxisRuntimeGlobalActionEffect[];
2448
2538
  color?: 'primary' | 'accent' | 'warn';
2449
2539
  tooltip?: string;
2450
2540
  requiresConfirmation?: boolean;
2451
2541
  autoDelete?: boolean;
2452
2542
  separator?: boolean;
2543
+ visibleWhen?: JsonLogicExpression | null;
2544
+ disabledWhen?: JsonLogicExpression | null;
2453
2545
  conditional?: string;
2454
2546
  }
2455
2547
  interface BulkAction {
@@ -2458,6 +2550,7 @@ interface BulkAction {
2458
2550
  icon: string;
2459
2551
  action: string;
2460
2552
  globalAction?: GlobalActionRef;
2553
+ effects?: PraxisRuntimeGlobalActionEffect[];
2461
2554
  color?: 'primary' | 'accent' | 'warn';
2462
2555
  tooltip?: string;
2463
2556
  requiresConfirmation?: boolean;
@@ -2484,8 +2577,11 @@ type EditableTableAction = {
2484
2577
  label?: string;
2485
2578
  action?: string;
2486
2579
  globalAction?: GlobalActionRef;
2580
+ effects?: PraxisRuntimeGlobalActionEffect[];
2487
2581
  position?: string;
2488
2582
  appearance?: string;
2583
+ visibleWhen?: JsonLogicExpression | null;
2584
+ disabledWhen?: JsonLogicExpression | null;
2489
2585
  };
2490
2586
  type ToolbarShortcutScope = 'toolbar' | 'global';
2491
2587
  interface InternalActionSpec {
@@ -2552,14 +2648,16 @@ declare class ToolbarActionsEditorComponent implements OnInit, OnDestroy, OnChan
2552
2648
  onActionSelectChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2553
2649
  onActionParamChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2554
2650
  onActionCustomChange(action: EditableTableAction, value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2651
+ getCanonicalGlobalActionRef(action?: EditableTableAction): GlobalActionRef | undefined;
2652
+ private setCanonicalGlobalActionRef;
2555
2653
  private touchActionList;
2654
+ getActionJsonLogicText(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen'): string;
2655
+ onActionJsonLogicChange(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen', value: string, kind: 'toolbar' | 'row' | 'bulk'): void;
2656
+ getActionConditionError(action: EditableTableAction, key: 'visibleWhen' | 'disabledWhen'): string;
2556
2657
  isGlobalActionId(id?: string): boolean;
2557
2658
  getGlobalActionSchema(action: EditableTableAction): _praxisui_core.GlobalActionUiSchema | undefined;
2558
2659
  getSurfaceOpenActionPayload(action: EditableTableAction): SurfaceOpenPayload;
2559
- onSurfaceOpenActionPayloadChange(action: {
2560
- action?: string;
2561
- globalAction?: GlobalActionRef;
2562
- }, payload: SurfaceOpenPayload, kind: 'toolbar' | 'row' | 'bulk'): void;
2660
+ onSurfaceOpenActionPayloadChange(action: EditableTableAction, payload: SurfaceOpenPayload, kind: 'toolbar' | 'row' | 'bulk'): void;
2563
2661
  shouldShowGlobalActionField(action: EditableTableAction, field: GlobalActionField): boolean;
2564
2662
  isGlobalActionFieldRequired(action: EditableTableAction, field: GlobalActionField): boolean;
2565
2663
  isGlobalActionFieldMissing(action: EditableTableAction, field: GlobalActionField): boolean;
@@ -2926,12 +3024,10 @@ declare class RuleCompilerService {
2926
3024
  static ɵprov: i0.ɵɵInjectableDeclaration<RuleCompilerService>;
2927
3025
  }
2928
3026
 
2929
- type RuleItem = {
2930
- condition: JsonLogicExpression;
3027
+ type RuleItem = Omit<PraxisRuntimeConditionalEffectRule<RuleEffectDefinition>, 'effects'> & {
2931
3028
  cssClass?: string;
2932
3029
  style?: Record<string, string>;
2933
- description?: string;
2934
- effects?: _praxisui_table_rule_builder.RuleEffectDefinition;
3030
+ effects?: RuleEffectDefinition[];
2935
3031
  enabled?: boolean;
2936
3032
  };
2937
3033
  declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy {
@@ -3001,6 +3097,7 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
3001
3097
  onColumnSelect(field: string): void;
3002
3098
  private initFromConfig;
3003
3099
  private loadColumnRules;
3100
+ private normalizePersistedRules;
3004
3101
  rebuildCondition(): void;
3005
3102
  onDraftChange(): void;
3006
3103
  applyTextPreset(preset: string): void;
@@ -3027,6 +3124,8 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
3027
3124
  onExportRules(): void;
3028
3125
  onImportRules(): void;
3029
3126
  private sanitizeRule;
3127
+ private normalizeRuleEffects;
3128
+ getPrimaryEffect(r: RuleItem | null | undefined): RuleEffectDefinition | undefined;
3030
3129
  getAnimationLabel(r: RuleItem): string | null;
3031
3130
  private normalizeRendererAnimation;
3032
3131
  private buildRendererOverrideFromRule;
@@ -3225,7 +3324,6 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3225
3324
  private updateColumnMetas;
3226
3325
  private updateCanSaveState;
3227
3326
  private collectGlobalActionValidationIssues;
3228
- private collectGlobalActionValidationTargets;
3229
3327
  private findGlobalActionCatalogEntry;
3230
3328
  private buildGlobalActionCatalog;
3231
3329
  private subscribeCrudEditorChanges;
@@ -3299,6 +3397,107 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
3299
3397
  static ɵcmp: i0.ɵɵComponentDeclaration<PraxisTableConfigEditor, "praxis-table-config-editor", never, {}, {}, never, never, true, never>;
3300
3398
  }
3301
3399
 
3400
+ interface PraxisTableWidgetEditorInputs {
3401
+ config?: TableConfig | null;
3402
+ resourcePath?: string | null;
3403
+ horizontalScroll?: 'auto' | 'wrap' | 'none';
3404
+ tableId?: string;
3405
+ componentInstanceId?: string;
3406
+ [key: string]: unknown;
3407
+ }
3408
+ interface PraxisTableWidgetEditorValue {
3409
+ inputs: PraxisTableWidgetEditorInputs;
3410
+ }
3411
+ declare class PraxisTableWidgetConfigEditor implements SettingsValueProvider$1, AfterViewInit, OnDestroy {
3412
+ inputs: PraxisTableWidgetEditorInputs | null;
3413
+ widgetKey?: string;
3414
+ tableEditor?: PraxisTableConfigEditor;
3415
+ readonly isDirty$: BehaviorSubject<boolean>;
3416
+ readonly isValid$: BehaviorSubject<boolean>;
3417
+ readonly isBusy$: BehaviorSubject<boolean>;
3418
+ private readonly subscription;
3419
+ ngAfterViewInit(): void;
3420
+ ngOnDestroy(): void;
3421
+ getSettingsValue(): PraxisTableWidgetEditorValue;
3422
+ onSave(): PraxisTableWidgetEditorValue;
3423
+ reset(): void;
3424
+ private initializeChildEditor;
3425
+ private buildValue;
3426
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableWidgetConfigEditor, never>;
3427
+ 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>;
3428
+ }
3429
+
3430
+ interface PraxisFilterWidgetEditorInputs {
3431
+ resourcePath?: string | null;
3432
+ fieldMetadata?: FieldMetadata[] | null;
3433
+ filterId?: string;
3434
+ formId?: string;
3435
+ componentInstanceId?: string;
3436
+ alwaysVisibleFields?: string[];
3437
+ alwaysVisibleFieldMetadataOverrides?: Record<string, Record<string, unknown>>;
3438
+ selectedFieldIds?: string[];
3439
+ allowSaveTags?: boolean;
3440
+ changeDebounceMs?: number;
3441
+ placeBooleansInActions?: boolean;
3442
+ showToggleLabels?: boolean;
3443
+ alwaysMinWidth?: number;
3444
+ alwaysColsMd?: number;
3445
+ alwaysColsLg?: number;
3446
+ confirmTagDelete?: boolean;
3447
+ tagColor?: 'primary' | 'accent' | 'warn' | 'basic';
3448
+ tagVariant?: 'filled' | 'outlined';
3449
+ tagButtonColor?: 'primary' | 'accent' | 'warn' | 'basic';
3450
+ actionsButtonColor?: 'primary' | 'accent' | 'warn' | 'basic';
3451
+ actionsVariant?: 'standard' | 'outlined';
3452
+ useInlineSearchableSelectVariant?: boolean;
3453
+ useInlineRangeVariant?: boolean;
3454
+ useInlineDateVariant?: boolean;
3455
+ useInlineDateRangeVariant?: boolean;
3456
+ useInlineTimeVariant?: boolean;
3457
+ useInlineTimeRangeVariant?: boolean;
3458
+ useInlineTreeSelectVariant?: boolean;
3459
+ overlayVariant?: 'card' | 'frosted';
3460
+ overlayBackdrop?: boolean;
3461
+ advancedOpenMode?: 'modal' | 'drawer';
3462
+ advancedClearButtonsEnabled?: boolean;
3463
+ persistenceKey?: string;
3464
+ showFilterSettings?: boolean;
3465
+ enableCustomization?: boolean;
3466
+ [key: string]: unknown;
3467
+ }
3468
+ interface PraxisFilterWidgetEditorValue {
3469
+ inputs: PraxisFilterWidgetEditorInputs;
3470
+ }
3471
+ declare class PraxisFilterWidgetConfigEditor implements SettingsValueProvider$1, OnDestroy {
3472
+ widgetKey?: string;
3473
+ set inputs(value: PraxisFilterWidgetEditorInputs | null);
3474
+ get inputs(): PraxisFilterWidgetEditorInputs | null;
3475
+ set filterSettings(component: FilterSettingsComponent | undefined);
3476
+ metadata: FieldMetadata[];
3477
+ settings: FilterConfig;
3478
+ configKey?: string;
3479
+ readonly isDirty$: BehaviorSubject<boolean>;
3480
+ readonly isValid$: BehaviorSubject<boolean>;
3481
+ readonly isBusy$: BehaviorSubject<boolean>;
3482
+ private currentInputs;
3483
+ private settingsEditor?;
3484
+ private subscription;
3485
+ ngOnDestroy(): void;
3486
+ getSettingsValue(): PraxisFilterWidgetEditorValue;
3487
+ onSave(): PraxisFilterWidgetEditorValue;
3488
+ reset(): void;
3489
+ private buildValue;
3490
+ private buildSettingsFromInputs;
3491
+ private projectSettingsToInputs;
3492
+ private normalizeSettings;
3493
+ private normalizeAdvancedOpenMode;
3494
+ private normalizeOverlayVariant;
3495
+ private cloneStringArray;
3496
+ private cloneRecord;
3497
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisFilterWidgetConfigEditor, never>;
3498
+ 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>;
3499
+ }
3500
+
3302
3501
  declare class DataFormatterComponent implements OnInit, OnChanges {
3303
3502
  private cdr;
3304
3503
  private formattingService;
@@ -3367,31 +3566,6 @@ declare class DataFormatterComponent implements OnInit, OnChanges {
3367
3566
  static ɵcmp: i0.ɵɵComponentDeclaration<DataFormatterComponent, "data-formatter", never, { "columnType": { "alias": "columnType"; "required": false; }; "currentFormat": { "alias": "currentFormat"; "required": false; }; }, { "formatChange": "formatChange"; }, never, never, true, never>;
3368
3567
  }
3369
3568
 
3370
- type AnalyticsTableRow = Record<string, string | number | boolean | null>;
3371
- type AnalyticsTableContractSource = 'remote' | 'fallback';
3372
- interface AnalyticsTableViewModel {
3373
- config: TableConfig;
3374
- data: AnalyticsTableRow[];
3375
- }
3376
- interface AnalyticsTableContractDefinition<TKey extends string = string> {
3377
- key: TKey;
3378
- projectionId: string;
3379
- path: string;
3380
- title: PraxisTextValue;
3381
- subtitle?: PraxisTextValue;
3382
- fallbackProjection: PraxisAnalyticsProjection;
3383
- fallbackRows?: AnalyticsTableRow[];
3384
- }
3385
- interface AnalyticsTableContractLoadOptions<TKey extends string = string> {
3386
- cacheNamespace?: string;
3387
- queryContexts?: Partial<Record<TKey, PraxisDataQueryContext | null>>;
3388
- }
3389
- interface AnalyticsTableContractLoadResult<TKey extends string = string> {
3390
- views: Record<TKey, AnalyticsTableViewModel>;
3391
- sources: Record<TKey, AnalyticsTableContractSource>;
3392
- errors: Partial<Record<TKey, string>>;
3393
- }
3394
-
3395
3569
  interface AnalyticsTableConfigAdapterOptions {
3396
3570
  title?: PraxisTextValue;
3397
3571
  subtitle?: PraxisTextValue;
@@ -3405,24 +3579,6 @@ declare class AnalyticsTableConfigAdapterService {
3405
3579
  static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableConfigAdapterService>;
3406
3580
  }
3407
3581
 
3408
- declare class AnalyticsTableStatsApiService {
3409
- private readonly http;
3410
- private readonly apiUrl;
3411
- private readonly statsBuilder;
3412
- constructor(http: HttpClient, apiUrl: ApiUrlConfig);
3413
- execute(projection: PraxisAnalyticsProjection, queryContext?: PraxisDataQueryContext | null): Promise<AnalyticsTableRow[]>;
3414
- private toTableRows;
3415
- private resolveTimeSeriesCategory;
3416
- private resolveBucketCategory;
3417
- private projectMetricValues;
3418
- private resolveMetricValue;
3419
- private buildStatsUrl;
3420
- private applyQueryContext;
3421
- private normalizeError;
3422
- static ɵfac: i0.ɵɵFactoryDeclaration<AnalyticsTableStatsApiService, never>;
3423
- static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableStatsApiService>;
3424
- }
3425
-
3426
3582
  declare class AnalyticsTableContractService {
3427
3583
  private readonly analyticsSchema;
3428
3584
  private readonly resolver;
@@ -4064,5 +4220,5 @@ declare function coerceTableComponentEditPlan(value: unknown): TableComponentEdi
4064
4220
  declare function compileTableComponentEditPlans(plans: TableComponentEditPlan[], currentConfig: TableConfig): TableComponentEditPlanCompileResult;
4065
4221
  declare function compileTableComponentEditPlan(plan: TableComponentEditPlan, currentConfig: TableConfig): TableComponentEditPlanCompileResult;
4066
4222
 
4067
- 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, PraxisFilter, PraxisTable, PraxisTableConfigEditor, PraxisTableInlineAuthoringEditorComponent, PraxisTableToolbar, STRING_PRESETS, TABLE_AI_CAPABILITIES, TABLE_COMPONENT_AI_CAPABILITIES, TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, TABLE_COMPONENT_EDIT_PLAN_KIND, TABLE_COMPONENT_EDIT_PLAN_VERSION, TASK_PRESETS, TableDefaultsProvider, TableRulesEditorComponent, ToolbarActionsEditorComponent, ValueMappingEditorComponent, VisualFormulaBuilderComponent, buildTableApplyPlan, coerceTableComponentEditPlan, coerceTableComponentEditPlans, compileTableComponentEditPlan, compileTableComponentEditPlans, createTableAuthoringDocument, getActionId, getEnum, getTableCapabilities, getTableComponentEditPlanCapabilities, isTableRendererSupportedByRichContentP0, mapTableRendererToRichContentP0, normalizeTableAuthoringDocument, parseLegacyOrTableDocument, providePraxisFilterMetadata, providePraxisTableMetadata, serializeTableAuthoringDocument, toCanonicalTableConfig, validateTableAuthoringDocument };
4068
- export type { ActionLike, AnalyticsTableConfigAdapterOptions, AnalyticsTableContractDefinition, AnalyticsTableContractLoadOptions, AnalyticsTableContractLoadResult, AnalyticsTableContractSource, AnalyticsTableRow, AnalyticsTableViewModel, ArithmeticParams, BehaviorConfigChange, BooleanFormatterOptions, BulkAction, Capability$1 as Capability, CapabilityCatalog$1 as CapabilityCatalog, CapabilityCategory$1 as CapabilityCategory, ColumnChange, ColumnDataType$1 as ColumnDataType, ConcatenationParams, ConditionalMappingParams, CurrencyFormatterOptions, DataFormattingOptions, DataMode, DateFormatterOptions, DefaultValueParams, EditorDiagnostic, EditorDocument, FieldSchema, FilterConfig, FilterTag, FormatPreset, FormatterConfig, FormulaDefinition, FormulaParameterSchema, FormulaParams, FormulaTemplate, FormulaType, I18n, JsonEditorEvent, JsonValidationResult, MessagesLocalizationChange, NestedPropertyParams, NumberFormatterOptions, PercentageFormatterOptions, ResourcePathIntent, RowAction, RowExpansionChangeBase, RowExpansionChangeEvent, RowExpansionReasonCode, RowExpansionTrigger, StringFormatterOptions, TableApplyPlan, TableAuthoringDocument, TableBindings, Capability as TableComponentCapability, CapabilityCatalog as TableComponentCapabilityCatalog, CapabilityCategory as TableComponentCapabilityCategory, TableComponentEditChangeKind, TableComponentEditPlan, TableComponentEditPlanCompileResult, ValueKind as TableComponentValueKind, TableHorizontalScroll, TableProjectionContext, TableRichContentP0Node, TableRuntimeContext, TableValidationContext, ToolbarAction, ToolbarActionsChange, ValueKind$1 as ValueKind, ValueMappingPair };
4223
+ 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, 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, serializeTableAuthoringDocument, toCanonicalTableConfig, validateTableAuthoringDocument };
4224
+ 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, 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 };
package/package.json CHANGED
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "name": "@praxisui/table",
3
- "version": "8.0.0-beta.20",
3
+ "version": "8.0.0-beta.22",
4
4
  "description": "Advanced data table for Angular (Praxis UI) with editing, filtering, sorting, virtualization, and settings panel integration.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^20.0.0",
7
7
  "@angular/core": "^20.0.0",
8
- "@praxisui/ai": "^8.0.0-beta.20",
9
- "@praxisui/core": "^8.0.0-beta.20",
10
- "@praxisui/dynamic-fields": "^8.0.0-beta.20",
11
- "@praxisui/dynamic-form": "^8.0.0-beta.20",
12
- "@praxisui/metadata-editor": "^8.0.0-beta.20",
13
- "@praxisui/rich-content": "^8.0.0-beta.20",
14
- "@praxisui/settings-panel": "^8.0.0-beta.20",
15
- "@praxisui/table-rule-builder": "^8.0.0-beta.20",
8
+ "@praxisui/ai": "^8.0.0-beta.22",
9
+ "@praxisui/core": "^8.0.0-beta.22",
10
+ "@praxisui/dynamic-fields": "^8.0.0-beta.22",
11
+ "@praxisui/dynamic-form": "^8.0.0-beta.22",
12
+ "@praxisui/metadata-editor": "^8.0.0-beta.22",
13
+ "@praxisui/rich-content": "^8.0.0-beta.22",
14
+ "@praxisui/settings-panel": "^8.0.0-beta.22",
15
+ "@praxisui/table-rule-builder": "^8.0.0-beta.22",
16
16
  "@angular/cdk": "^20.0.0",
17
17
  "@angular/forms": "^20.0.0",
18
18
  "@angular/material": "^20.0.0",
19
19
  "@angular/router": "^20.0.0",
20
- "@praxisui/dialog": "^8.0.0-beta.20",
20
+ "@praxisui/dialog": "^8.0.0-beta.22",
21
21
  "rxjs": "~7.8.0"
22
22
  },
23
23
  "dependencies": {
@@ -321,6 +321,11 @@ Este arquivo foi adaptado para o padrao canonico atual sem remover conteudo tecn
321
321
 
322
322
  ### Toolbar contract
323
323
 
324
+ - Acoes globais de toolbar, row e bulk usam `effects[].kind = "global-action"` como envelope canonico de novo authoring.
325
+ O campo `globalAction` plano continua aceito como fallback compatibilidade, mas nao e a superficie preferida.
326
+ - `payloadExpr` e escape avancado explicito de `GlobalActionRef`; visual authoring deve preferir `payload` estruturado e
327
+ preservar `payloadExpr` existente apenas quando a mesma `actionId` for mantida.
328
+
324
329
  - O bloco `toolbar` continua parte do contrato público principal.
325
330
  - Use `toolbar.actions[]` para quick actions e `toolbar.search` para busca quando o host não injeta shell própria.
326
331
  - Para localizar paths específicos de toolbar, complemente a leitura com o `Appendix: JSON path index`.
@@ -673,6 +678,11 @@ Snippets curtos (prontos para cards de overview):
673
678
 
674
679
  ### Internal route global action
675
680
 
681
+ Configuracoes novas devem persistir a integracao em `effects[].globalAction`. O runtime e os validadores tambem
682
+ leem `globalAction` plano para documentos existentes, mas editores e AI manifest devem tratar esse campo como
683
+ compatibilidade. O adapter da Table preserva `payload`/`payloadExpr` ao reabrir e re-selecionar a mesma `actionId`,
684
+ e limpa payloads ao trocar de global action para evitar semantica cruzada.
685
+
676
686
  ```json
677
687
  {
678
688
  "actions": {
@@ -800,7 +810,7 @@ Frontend (UI):
800
810
  | `praxis-table-toolbar` | Barra superior/inferior com acoes, bulk e export | `toolbar`, `actions`, `export`, `behavior.filtering.*` |
801
811
  | `praxis-filter` | Filtro avancado acoplado a toolbar | `behavior.filtering.advancedFilters.*`, `behavior.filtering.debounceTime`, `resourcePath` |
802
812
  | `praxis-empty-state-card` | Estado inicial quando nao ha conexao remota | exibido quando nao ha `resourcePath` valido |
803
- | `praxis-ai-assistant` | Assistente opcional nos slots de toolbar | habilitado pelo runtime (nao exposto no JSON) |
813
+ | `PraxisAiAssistantShellComponent` | Copiloto semantico opcional nos slots de toolbar | habilitado pelo runtime com turn orchestration e contexto seguro (nao exposto no JSON) |
804
814
  | Angular Material + CDK | Base de tabela, menus, selecao e virtual scroll | `behavior.pagination.*`, `behavior.selection.*`, `behavior.virtualization.*`, `appearance.spacing.*` |
805
815
 
806
816
  Backend e contratos: