@praxisui/table 4.0.0-beta.0 → 6.0.0-beta.0

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
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnChanges, OnDestroy, EventEmitter, ElementRef, SimpleChanges, OnInit, AfterViewInit, DoCheck, DestroyRef, ChangeDetectorRef, NgZone, Provider, AfterContentInit } from '@angular/core';
2
+ import { OnDestroy, EventEmitter, ElementRef, OnInit, OnChanges, AfterViewInit, DoCheck, DestroyRef, ChangeDetectorRef, NgZone, SimpleChanges, Provider, AfterContentInit } from '@angular/core';
3
3
  import { ActivatedRoute } from '@angular/router';
4
4
  import { MatTable, MatTableDataSource } from '@angular/material/table';
5
5
  import { MatPaginator, PageEvent } from '@angular/material/paginator';
@@ -10,18 +10,17 @@ 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, GlobalConfigService, AsyncConfigStorage, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, LoadingState, RestApiLinks, ColumnDefinition, ConnectionStorage, ResourceDiscoveryService, LoadingOrchestrator, PraxisLoadingRenderer, ResourceActionCatalogItem, GlobalActionSpec, IconPickerService, SurfaceOpenPayload, GlobalActionField, TableConfigService, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, AnalyticsSchemaContractService, AnalyticsPresentationResolver, FieldDefinition, AiCapabilityCategory, AiValueKind, AiCapability, AiCapabilityCatalog } from '@praxisui/core';
14
- import { FunctionRegistry, DslParser } from '@praxisui/specification';
13
+ import { TableConfig, LoggerService, GlobalConfigService, AsyncConfigStorage, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, LoadingState, RestApiLinks, ColumnDefinition, RichBlockNode, ConnectionStorage, ResourceDiscoveryService, LoadingOrchestrator, PraxisLoadingRenderer, JsonLogicRecord, ResourceActionCatalogItem, JsonLogicExpression, GlobalActionSpec, IconPickerService, SurfaceOpenPayload, GlobalActionField, FieldDefinition, PraxisJsonLogicService, TableConfigService, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, AnalyticsSchemaContractService, AnalyticsPresentationResolver, RichPresenterNode, RichComposeNode, AiCapabilityCategory, AiValueKind, AiCapability, AiCapabilityCatalog } from '@praxisui/core';
15
14
  import { FormGroup, FormControl, FormBuilder } from '@angular/forms';
16
15
  import { MatDialog } from '@angular/material/dialog';
17
16
  import { CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';
18
17
  import { PraxisDialog } from '@praxisui/dialog';
19
18
  import { MatTabChangeEvent } from '@angular/material/tabs';
19
+ import * as _praxisui_table_rule_builder from '@praxisui/table-rule-builder';
20
+ import { RuleEffectDefinition } from '@praxisui/table-rule-builder';
20
21
  import { HttpClient } from '@angular/common/http';
21
22
  import * as _angular_material_paginator_d_Zo1cMMo4 from '@angular/material/paginator.d-Zo1cMMo4';
22
23
  import { MatCheckboxChange } from '@angular/material/checkbox';
23
- import * as _praxisui_table_rule_builder from '@praxisui/table-rule-builder';
24
- import { RuleEffectDefinition } from '@praxisui/table-rule-builder';
25
24
 
26
25
  interface ActionLike {
27
26
  action?: string;
@@ -35,10 +34,9 @@ interface ActionLike {
35
34
  }
36
35
  declare function getActionId(action: ActionLike): string;
37
36
 
38
- declare class PraxisTableToolbar implements OnChanges, OnDestroy {
37
+ declare class PraxisTableToolbar implements OnDestroy {
39
38
  private hostRef;
40
39
  private logger?;
41
- private static dslRuntimeInstanceCounter;
42
40
  config?: TableConfig;
43
41
  backgroundColor: string | null;
44
42
  placement: 'header' | 'footer';
@@ -47,18 +45,14 @@ declare class PraxisTableToolbar implements OnChanges, OnDestroy {
47
45
  showEndActions: boolean;
48
46
  showMobileActions: boolean;
49
47
  showReset: boolean;
50
- dslContext: Record<string, any> | null;
51
- dslFunctionRegistry: FunctionRegistry<any> | null;
48
+ evaluationContext: Record<string, any> | null;
52
49
  toolbarAction: EventEmitter<{
53
50
  action: string;
54
51
  actionConfig?: any;
55
52
  }>;
56
53
  reset: EventEmitter<void>;
57
54
  readonly getActionId: typeof getActionId;
58
- private dslParser;
59
- private dslRuntimeRegistry;
60
- private readonly dslRuntimeContextKey;
61
- private readonly visibleWhenSpecCache;
55
+ private readonly jsonLogic;
62
56
  private readonly validToolbarActionTypes;
63
57
  private readonly warnedInvalidToolbarActionTypes;
64
58
  private readonly warnedMenuWithoutChildren;
@@ -69,9 +63,7 @@ declare class PraxisTableToolbar implements OnChanges, OnDestroy {
69
63
  private fallbackLogger?;
70
64
  private fallbackLoggerEnvironment;
71
65
  constructor(hostRef?: ElementRef<HTMLElement> | null, logger?: LoggerService | undefined);
72
- ngOnChanges(changes: SimpleChanges): void;
73
66
  ngOnDestroy(): void;
74
- private configureDslRuntime;
75
67
  private getNestedPropertyValue;
76
68
  private cloneForEmit;
77
69
  private getLogger;
@@ -95,12 +87,12 @@ declare class PraxisTableToolbar implements OnChanges, OnDestroy {
95
87
  private resolveVisibleToolbarAction;
96
88
  private isActionVisible;
97
89
  private evaluateVisibleWhen;
90
+ private isJsonLogicExpression;
98
91
  private resolveVisibleWhenFallback;
99
92
  private resolveVisibleWhenFallbackPolicy;
100
93
  private resolveRuntimeEnvironment;
101
94
  private isDiagnosticsEnvironment;
102
- private buildDslContext;
103
- private getKnownDslFields;
95
+ private buildEvaluationContext;
104
96
  private warnVisibleWhenFallback;
105
97
  private collectShortcutBindings;
106
98
  private resolveShortcutScope;
@@ -117,7 +109,7 @@ declare class PraxisTableToolbar implements OnChanges, OnDestroy {
117
109
  private sortActions;
118
110
  getExportIcon(format: string): string;
119
111
  static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTableToolbar, [null, { optional: true; }]>;
120
- 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; }; "dslContext": { "alias": "dslContext"; "required": false; }; "dslFunctionRegistry": { "alias": "dslFunctionRegistry"; "required": false; }; }, { "toolbarAction": "toolbarAction"; "reset": "reset"; }, never, ["[advancedFilter]", "[toolbar]", "[end-actions]"], true, never>;
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>;
121
113
  }
122
114
 
123
115
  type ColumnDataType$1 = 'date' | 'number' | 'currency' | 'percentage' | 'string' | 'boolean' | 'custom';
@@ -873,7 +865,6 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
873
865
  private loadingRenderer?;
874
866
  private route?;
875
867
  private logger?;
876
- private static dslRuntimeInstanceCounter;
877
868
  private static readonly CELL_ANIMATION_CHANGE_CACHE_LIMIT;
878
869
  private static readonly ROW_DISCOVERY_SUCCESS_CACHE_TTL_MS;
879
870
  private static readonly ROW_DISCOVERY_ERROR_CACHE_TTL_MS;
@@ -894,7 +885,6 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
894
885
  snoozeMs: number;
895
886
  autoOpenSettingsOnOutdated: boolean;
896
887
  crudContext: any;
897
- dslFunctionRegistry: FunctionRegistry<any> | null;
898
888
  filterCriteria: Record<string, any>;
899
889
  queryContext: PraxisDataQueryContextBridge | null;
900
890
  rowClick: EventEmitter<any>;
@@ -999,6 +989,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
999
989
  shouldHideFloatingBulkActions(): boolean;
1000
990
  getFloatingBulkPositionClass(): string;
1001
991
  isFloatingBulkActionDisabled(action: any): boolean;
992
+ getFloatingBulkActionRichContentNodes(action: any): RichBlockNode[];
1002
993
  shouldShowToolbarActionsTop(): boolean;
1003
994
  shouldShowToolbarActionsBottom(): boolean;
1004
995
  getToolbarActionsBackgroundColor(): string | null;
@@ -1056,13 +1047,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1056
1047
  getSchemaFieldsSnapshot(): SchemaFieldHint[];
1057
1048
  aiAdapter: any;
1058
1049
  private aiAdapterLoadStarted;
1059
- styleSpecCache: Map<string, any>;
1060
- actionSpecCache: Map<string, any>;
1061
1050
  private computedContextCache;
1062
1051
  private computedFieldNames;
1063
- dslParser: DslParser<any>;
1064
- private dslRuntimeRegistry;
1065
- private readonly dslRuntimeContextKey;
1052
+ private readonly jsonLogic;
1066
1053
  private computedExpressionEvaluator;
1067
1054
  private resizeObserver;
1068
1055
  private removeViewportChangeListeners;
@@ -1107,7 +1094,6 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1107
1094
  private ensureConfigDefaults;
1108
1095
  private setShowToolbar;
1109
1096
  private shouldExposeToolbar;
1110
- private configureDslRuntime;
1111
1097
  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);
1112
1098
  private ensureAiAdapterLoaded;
1113
1099
  private emitLoadingState;
@@ -1147,10 +1133,32 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1147
1133
  getExpansionDetailNodeTitle(node: any, fallback?: string): string;
1148
1134
  getExpansionDetailNodeChildren(node: any): any[];
1149
1135
  getExpansionDetailValue(row: any, node: any): string;
1136
+ getExpansionDetailListEntries(row: any, node: any): unknown[];
1150
1137
  getExpansionDetailListItems(row: any, node: any): string[];
1151
- private formatExpansionDetailListEntry;
1138
+ getExpansionDetailListItemRichContentNodes(entry: unknown): RichBlockNode[] | null;
1139
+ getExpansionDetailActionId(node: any): string;
1140
+ getExpansionDetailActionLabel(node: any): string;
1141
+ getExpansionDetailActionStatusText(node: any): string | null;
1142
+ getExpansionDetailTextRichContentNodes(text: string | null | undefined, className?: string): RichBlockNode[];
1143
+ getTableChromeTextRichContentNodes(text: string | null | undefined, className?: string): RichBlockNode[];
1144
+ getRowActionRichContentNodes(action: any): RichBlockNode[];
1145
+ getRowActionIconRichContentNodes(action: any): RichBlockNode[];
1146
+ getExpansionDetailActionRichContentNodes(node: any): RichBlockNode[];
1147
+ getExpansionDetailTabButtonRichContentNodes(tab: any): RichBlockNode[];
1148
+ private getExpansionDetailTabBadgeLabel;
1149
+ isExpansionDetailActionDisabled(node: any): boolean;
1150
+ onExpansionDetailAction(node: any, row: any, event: Event): void;
1151
+ formatExpansionDetailListEntry(entry: unknown): string;
1152
1152
  private getExpansionDetailObjectListLabel;
1153
+ private getExpansionDetailObjectListBadgeLabel;
1153
1154
  getExpansionDetailRichText(node: any): string;
1155
+ getExpansionDetailRichContentContext(row: any, index: number): JsonLogicRecord;
1156
+ getExpansionDetailRichContentNodes(node: any, row: any, index: number): RichBlockNode[] | null;
1157
+ getExpansionDetailTabRichContentNodes(tab: any, row: any, index: number): RichBlockNode[] | null;
1158
+ private mapExpansionDetailNodeToRichContent;
1159
+ private mapExpansionDetailCardNodeToRichContent;
1160
+ private mapExpansionDetailStackNodeToRichContent;
1161
+ private mapExpansionDetailValueNodeToRichContent;
1154
1162
  getExpansionDetailTabId(row: any, index: number, tab: any, tabIndex: number): string;
1155
1163
  getExpansionDetailPanelId(row: any, index: number, tab: any, tabIndex: number): string;
1156
1164
  getExpansionDetailTabToken(tab: any, tabIndex: number): string;
@@ -1408,9 +1416,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1408
1416
  private evaluateStyleRule;
1409
1417
  private evaluateActionVisibilityCondition;
1410
1418
  private evaluateActionDisabledCondition;
1411
- /** Evaluate row action conditions using the same DSL runtime with explicit failure policy. */
1419
+ /** Evaluate row action conditions using the canonical JSON Logic runtime with explicit failure policy. */
1412
1420
  private evaluateActionCondition;
1413
1421
  private resolveRowVisibleWhenFailurePolicy;
1422
+ private isJsonLogicExpression;
1423
+ private hasConditionalExpression;
1414
1424
  private resolveRuntimeEnvironment;
1415
1425
  private isDiagnosticsRuntimeEnvironment;
1416
1426
  private logActionConditionFallback;
@@ -1478,11 +1488,12 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1478
1488
  private isRowExpansionSupported;
1479
1489
  private enforceAppearanceSchemaGuards;
1480
1490
  private enforceUnsupportedFeatureGuards;
1481
- getToolbarDslContext(): Record<string, any>;
1491
+ getToolbarEvaluationContext(): Record<string, any>;
1482
1492
  getIconName(row: any, column: ColumnDefinition): string | null;
1483
1493
  getIconColor(_row: any, column: ColumnDefinition): string | null;
1484
1494
  getIconStyle(_row: any, column: ColumnDefinition): Record<string, string> | null;
1485
1495
  getIconAriaLabel(_row: any, column: ColumnDefinition): string | null;
1496
+ getIconRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
1486
1497
  /**
1487
1498
  * Lightweight, controlled evaluator for string/number expressions using row context.
1488
1499
  * Accepts values like '= row.status === "OK" ? "primary" : "warn"'.
@@ -1490,6 +1501,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1490
1501
  */
1491
1502
  private evaluateValueExpr;
1492
1503
  private evaluateComputedValue;
1504
+ private hasCanonicalComputedExpression;
1505
+ private buildComputedRuleData;
1506
+ private resolveComputedDependencyValue;
1493
1507
  private evaluateLegacyExpression;
1494
1508
  private tryEvaluateLegacyConcat;
1495
1509
  private tryEvaluateLegacyTernary;
@@ -1517,6 +1531,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1517
1531
  getBadgeText(row: any, column: ColumnDefinition): string | null;
1518
1532
  getBadgeIcon(row: any, column: ColumnDefinition): string | null;
1519
1533
  getBadgeClasses(row: any, column: ColumnDefinition): string[];
1534
+ getBadgeRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
1520
1535
  getEffectiveRendererType(row: any, column: ColumnDefinition): 'icon' | 'image' | 'badge' | 'link' | 'button' | 'chip' | 'progress' | 'avatar' | 'toggle' | 'menu' | 'html' | 'compose' | 'rating' | null;
1521
1536
  getComposeItems(row: any, column: ColumnDefinition): any[];
1522
1537
  getComposeClasses(row: any, column: ColumnDefinition): string[];
@@ -1533,6 +1548,12 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1533
1548
  private getEffectiveRenderer;
1534
1549
  getLinkHref(row: any, column: ColumnDefinition): string | null;
1535
1550
  getLinkText(row: any, column: ColumnDefinition): string;
1551
+ getLinkRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
1552
+ getMenuItemRichContentNodes(item: {
1553
+ label?: string;
1554
+ icon?: string;
1555
+ id?: string;
1556
+ } | null | undefined): RichBlockNode[];
1536
1557
  getLinkTarget(row: any, column: ColumnDefinition): string | null;
1537
1558
  getLinkRel(row: any, column: ColumnDefinition): string | null;
1538
1559
  getButtonLabel(row: any, column: ColumnDefinition): string;
@@ -1541,10 +1562,12 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1541
1562
  getButtonColor(row: any, column: ColumnDefinition): string | null;
1542
1563
  isButtonDisabled(row: any, column: ColumnDefinition): boolean;
1543
1564
  getButtonAriaLabel(row: any, column: ColumnDefinition): string | null;
1565
+ getButtonRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
1544
1566
  private evaluateActionPayloadExpr;
1545
1567
  private buildRendererActionRuntimeOptions;
1546
1568
  onButtonClick(row: any, column: ColumnDefinition, event: Event): void;
1547
1569
  getChipText(row: any, column: ColumnDefinition): string | null;
1570
+ getChipRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
1548
1571
  getChipIcon(row: any, column: ColumnDefinition): string | null;
1549
1572
  getChipClasses(row: any, column: ColumnDefinition): string[];
1550
1573
  getProgressValue(row: any, column: ColumnDefinition): number;
@@ -1563,6 +1586,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1563
1586
  getAvatarAlt(row: any, column: ColumnDefinition): string | null;
1564
1587
  private deriveAvatarInitials;
1565
1588
  getAvatarInitials(row: any, column: ColumnDefinition): string;
1589
+ getAvatarRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
1566
1590
  getAvatarShape(row: any, column: ColumnDefinition): 'square' | 'rounded' | 'circle' | undefined;
1567
1591
  getAvatarStyle(row: any, column: ColumnDefinition): Record<string, string> | null;
1568
1592
  getToggleState(row: any, column: ColumnDefinition): boolean;
@@ -1614,6 +1638,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1614
1638
  private emitMetadataChange;
1615
1639
  private emitSchemaStatus;
1616
1640
  getRowId(row: any): any;
1641
+ private reconcileSelectionAfterDataChange;
1642
+ private getComparableRowIdentity;
1617
1643
  getIdField(): string;
1618
1644
  private syncRuntimeSchemaMetaFromConfig;
1619
1645
  private getEffectiveMetadataSnapshot;
@@ -1636,6 +1662,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1636
1662
  getActionsHeaderTooltip(): string | undefined;
1637
1663
  getActionsHeaderIcon(): string | undefined;
1638
1664
  getActionsHeaderLabel(): string | undefined;
1665
+ getActionsHeaderRichContentNodes(): RichBlockNode[];
1639
1666
  private getRowActionsDisplay;
1640
1667
  private getRowActionsInlineLimit;
1641
1668
  private getRowActionsBehaviorInlineLimit;
@@ -1673,7 +1700,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1673
1700
  private scheduleRowDiscoveryMarkForCheck;
1674
1701
  ngOnDestroy(): void;
1675
1702
  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; }]>;
1676
- 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; }; "dslFunctionRegistry": { "alias": "dslFunctionRegistry"; "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>;
1703
+ 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>;
1677
1704
  static ngAcceptInputType_enableCustomization: unknown;
1678
1705
  }
1679
1706
 
@@ -1912,6 +1939,10 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnDestroy {
1912
1939
  duplicateConditionalOverride(index: number): void;
1913
1940
  onConditionalOverrideReorder(event: any): void;
1914
1941
  selectConditionalOverride(index: number): void;
1942
+ getJsonLogicText(value: JsonLogicExpression | null | undefined): string;
1943
+ getJsonLogicSummary(value: JsonLogicExpression | null | undefined): string;
1944
+ private parseJsonLogicText;
1945
+ setConditionalOverrideCondition(index: number, raw: string): void;
1915
1946
  getOverrideField(path: string): any;
1916
1947
  setOverrideField(path: string, value: any): void;
1917
1948
  onOverrideTypeChange(ov: any, val: string): void;
@@ -2015,6 +2046,7 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnDestroy {
2015
2046
  private ensureRenderer;
2016
2047
  private _ensureKind;
2017
2048
  getRendererProp(kind: string, path: string): any;
2049
+ setRendererJsonLogicProp(kind: string, path: string, raw: string): void;
2018
2050
  setRendererProp(kind: string, path: string, value: any): void;
2019
2051
  private _deepClone;
2020
2052
  hasSelectedRenderer(): boolean;
@@ -2656,6 +2688,262 @@ declare class FilterSettingsComponent implements OnChanges, AfterViewInit, OnDes
2656
2688
  static ɵcmp: i0.ɵɵComponentDeclaration<FilterSettingsComponent, "filter-settings", never, { "metadata": { "alias": "metadata"; "required": false; }; "metadataSource": { "alias": "metadataSource"; "required": false; }; "metadataLoading": { "alias": "metadataLoading"; "required": false; }; "metadataErrorMsg": { "alias": "metadataErrorMsg"; "required": false; }; "settings": { "alias": "settings"; "required": false; }; "configKey": { "alias": "configKey"; "required": false; }; }, { "settingsChange": "settingsChange"; }, never, never, true, never>;
2657
2689
  }
2658
2690
 
2691
+ type ColumnDataType = 'string' | 'number' | 'date' | 'boolean' | 'currency' | 'percentage' | 'custom';
2692
+
2693
+ type OperatorKey = '==' | '!=' | '<' | '<=' | '>' | '>=' | 'contains' | 'startsWith' | 'endsWith' | 'matches' | 'not matches' | 'in' | 'not in' | 'is empty' | 'is not empty' | 'between' | 'is today' | 'in last' | 'weekday is' | 'is true' | 'is false' | 'contains all' | 'contains any' | 'length ==' | 'length >' | 'length <' | 'jsonPath matches' | 'has key' | 'key ==' | 'id ==' | 'id in' | 'has property';
2694
+ interface OperatorSpec {
2695
+ key: OperatorKey;
2696
+ label: string;
2697
+ icon?: string;
2698
+ description?: string;
2699
+ }
2700
+ declare class OperatorsRegistryService {
2701
+ /** Returns the list of operator specs supported for a given data type. */
2702
+ getForType(type: ColumnDataType | 'enum' | 'array' | 'json' | 'relational'): OperatorSpec[];
2703
+ get keys(): OperatorKey[];
2704
+ private readonly stringOps;
2705
+ private readonly numberOps;
2706
+ private readonly dateOps;
2707
+ private readonly booleanOps;
2708
+ private readonly enumOps;
2709
+ private readonly arrayOps;
2710
+ private readonly jsonOps;
2711
+ private readonly relationalOps;
2712
+ static ɵfac: i0.ɵɵFactoryDeclaration<OperatorsRegistryService, never>;
2713
+ static ɵprov: i0.ɵɵInjectableDeclaration<OperatorsRegistryService>;
2714
+ }
2715
+
2716
+ type GroupOp = 'AND' | 'OR' | 'NOT';
2717
+ interface RuleAtom {
2718
+ field: string;
2719
+ operator: string;
2720
+ value?: any;
2721
+ options?: Record<string, any>;
2722
+ }
2723
+ interface RuleGroup {
2724
+ op: GroupOp;
2725
+ conditions: RuleAtom[];
2726
+ groups?: RuleGroup[];
2727
+ }
2728
+ type StructuredRuleCondition = JsonLogicExpression | null;
2729
+ declare class RuleCompilerService {
2730
+ /**
2731
+ * Compiles a rule group into a single textual expression string, adding
2732
+ * parentheses according to grouping and operator precedence.
2733
+ */
2734
+ compileGroup(group: RuleGroup): string;
2735
+ /** Compiles a single rule atom to a textual expression. */
2736
+ compileAtom(atom: RuleAtom): string;
2737
+ compileGroupToJsonLogic(group: RuleGroup): StructuredRuleCondition;
2738
+ compileAtomToJsonLogic(atom: RuleAtom): JsonLogicExpression | null;
2739
+ private stringify;
2740
+ private toJsonLogicValue;
2741
+ private toList;
2742
+ static ɵfac: i0.ɵɵFactoryDeclaration<RuleCompilerService, never>;
2743
+ static ɵprov: i0.ɵɵInjectableDeclaration<RuleCompilerService>;
2744
+ }
2745
+
2746
+ type RuleItem = {
2747
+ condition: JsonLogicExpression;
2748
+ cssClass?: string;
2749
+ style?: Record<string, string>;
2750
+ description?: string;
2751
+ effects?: _praxisui_table_rule_builder.RuleEffectDefinition;
2752
+ enabled?: boolean;
2753
+ };
2754
+ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy {
2755
+ private cdr;
2756
+ private registry;
2757
+ private compiler;
2758
+ private jsonLogic;
2759
+ private dynamicForm;
2760
+ private crud?;
2761
+ private get jsonLogicValidator();
2762
+ private readonly i18n;
2763
+ config: TableConfig;
2764
+ resourcePath?: string;
2765
+ fields?: FieldDefinition[] | null;
2766
+ i18nRules?: Partial<Record<string, string>>;
2767
+ configChange: EventEmitter<_praxisui_core.TableConfigModern>;
2768
+ scope: 'row' | 'column';
2769
+ selectedColumnField: string | null;
2770
+ draftCondition: string;
2771
+ draftCssClass: string;
2772
+ draftStyleText: string;
2773
+ sanitizedStyle: Record<string, string>;
2774
+ manualMode: boolean;
2775
+ manualErrors: string[];
2776
+ testSummary: string;
2777
+ editIndex: number;
2778
+ get currentRules(): RuleItem[];
2779
+ set currentRules(v: RuleItem[]);
2780
+ rulesRow: RuleItem[];
2781
+ rulesColumn: RuleItem[];
2782
+ objectKeys: {
2783
+ (o: object): string[];
2784
+ (o: {}): string[];
2785
+ };
2786
+ dynamicValueForm: FormGroup;
2787
+ dynamicValueMetas: FieldMetadata[];
2788
+ effectsValue?: RuleEffectDefinition;
2789
+ dynamicValueActive: boolean;
2790
+ private dynamicValueSub?;
2791
+ private testSummaryTimer;
2792
+ private readonly legacyStyleAllowList;
2793
+ basicFieldType: 'enum' | 'array' | 'json' | 'relational' | 'string' | 'number' | 'date' | 'boolean' | 'currency' | 'percentage' | 'custom';
2794
+ noValueOperator: boolean;
2795
+ i18nValuePlaceholder: string;
2796
+ enumOptions: Array<{
2797
+ value: any;
2798
+ label: string;
2799
+ }>;
2800
+ private updateDerivedUiProps;
2801
+ /** Enable verbose console logging for debugging value editor behavior */
2802
+ debugLogs: boolean;
2803
+ debugLevel: 'log' | 'info' | 'debug';
2804
+ private dbg;
2805
+ /** Log a summary table of field metadata and column info for diagnostics */
2806
+ private logFieldMetasContext;
2807
+ /** Log a focused view for a single field */
2808
+ private logSingleFieldMeta;
2809
+ private logFieldChoices;
2810
+ t(key: string): string;
2811
+ constructor(cdr: ChangeDetectorRef, registry: OperatorsRegistryService, compiler: RuleCompilerService, jsonLogic: PraxisJsonLogicService, dynamicForm: DynamicFormService, crud?: GenericCrudService<any> | undefined);
2812
+ ngOnInit(): void;
2813
+ ngOnChanges(changes: SimpleChanges): void;
2814
+ ngOnDestroy(): void;
2815
+ get columnFields(): string[];
2816
+ getOperatorsForField(fieldName: string | null): string[];
2817
+ onScopeChange(scope: 'row' | 'column'): void;
2818
+ onColumnSelect(field: string): void;
2819
+ private initFromConfig;
2820
+ private loadColumnRules;
2821
+ rebuildCondition(): void;
2822
+ onDraftChange(): void;
2823
+ applyTextPreset(preset: string): void;
2824
+ generateSampleData(): void;
2825
+ runTest(): void;
2826
+ onRelSearch(ev: any): void;
2827
+ clearRelSelection(): void;
2828
+ onRelSelectSingle(opt: any): void;
2829
+ onRelAddMulti(opt: any): void;
2830
+ removeRelMulti(i: number): void;
2831
+ private fetchRelOptions;
2832
+ private getRelationalConfig;
2833
+ validateDraft(): void;
2834
+ canCommitDraft(): boolean;
2835
+ private toPersistedCellClassAndStyle;
2836
+ addOrUpdateRule(): void;
2837
+ editRule(index: number): void;
2838
+ removeRule(index: number): void;
2839
+ duplicateRule(index: number): void;
2840
+ onRuleToggle(): void;
2841
+ buildAppliedConfig(baseConfig?: TableConfig): TableConfig;
2842
+ onApply(): void;
2843
+ isValid(): boolean;
2844
+ onExportRules(): void;
2845
+ onImportRules(): void;
2846
+ private sanitizeRule;
2847
+ getAnimationLabel(r: RuleItem): string | null;
2848
+ private normalizeRendererAnimation;
2849
+ private buildRendererOverrideFromRule;
2850
+ private buildLegacyRendererOverrideFromRule;
2851
+ private buildRowRendererOverrideFromRule;
2852
+ private stringifyValue;
2853
+ getConditionLabel(condition: RuleItem['condition'] | null | undefined): string;
2854
+ private buildPersistedCondition;
2855
+ private sanitizePersistedCondition;
2856
+ private parseLegacyStyle;
2857
+ private normalizeLegacyStyleObject;
2858
+ resetDraft(): void;
2859
+ private parseManualCondition;
2860
+ private tryParseManualCondition;
2861
+ private validateManualCondition;
2862
+ private getInvalidVarPaths;
2863
+ private collectVarPaths;
2864
+ private isKnownJsonLogicPath;
2865
+ private isManualExpressionCandidate;
2866
+ private looksLikeLegacyExpression;
2867
+ private toManualValidationMessage;
2868
+ basicField: string;
2869
+ basicOperator: string;
2870
+ basicValue: any;
2871
+ basicMin: any;
2872
+ basicMax: any;
2873
+ basicListCsv: string;
2874
+ basicDate: Date | null;
2875
+ basicDateStart: Date | null;
2876
+ basicDateEnd: Date | null;
2877
+ basicEnumValue: string | number | null;
2878
+ basicEnumValues: Array<string | number>;
2879
+ basicLength: number | null;
2880
+ relationalSelected: {
2881
+ id: any;
2882
+ label: string;
2883
+ raw: any;
2884
+ } | null;
2885
+ relationalSelectedMulti: Array<{
2886
+ id: any;
2887
+ label: string;
2888
+ raw: any;
2889
+ }>;
2890
+ relationalOptions: Array<{
2891
+ id: any;
2892
+ label: string;
2893
+ raw: any;
2894
+ }>;
2895
+ basicRelPath: string;
2896
+ private relSearchTerm;
2897
+ private relCache;
2898
+ basicLastN: number | null;
2899
+ basicLastUnit: 'days' | 'weeks' | 'months';
2900
+ basicWeekdays: number[];
2901
+ weekdayOptions: {
2902
+ value: number;
2903
+ label: string;
2904
+ }[];
2905
+ basicJsonPath: string;
2906
+ basicJsonPattern: string;
2907
+ basicJsonKey: string;
2908
+ basicJsonExpected: any;
2909
+ draftGroup: RuleGroup;
2910
+ editAtomIndex: number;
2911
+ activeGroupTarget: 'root' | number;
2912
+ onEffectsChange(v: RuleEffectDefinition): void;
2913
+ private hasRuleEffectsValue;
2914
+ getFieldType(fieldName: string | null): 'enum' | 'array' | 'json' | 'relational' | 'string' | 'number' | 'date' | 'boolean' | 'currency' | 'percentage' | 'custom';
2915
+ getEnumOptions(fieldName: string | null): Array<{
2916
+ value: any;
2917
+ label: string;
2918
+ }>;
2919
+ isNoValueOperator(op: string): boolean;
2920
+ getValuePlaceholder(): string;
2921
+ getI18nValuePlaceholder(): string;
2922
+ private toIsoDateString;
2923
+ setManualMode(v: boolean): void;
2924
+ onBasicFieldChange(_val: string): void;
2925
+ onBasicOperatorChange(_val: string): void;
2926
+ private refreshDynamicValueInitialValueOnly;
2927
+ refreshDynamicValueHost(): void;
2928
+ private buildAtomFromBasic;
2929
+ canBuildAtom(): boolean;
2930
+ onAddOrUpdateAtom(): void;
2931
+ editAtom(index: number): void;
2932
+ removeAtom(index: number): void;
2933
+ resetAtomEdit(): void;
2934
+ private focusAddCondition;
2935
+ clearGroup(): void;
2936
+ onDropCondition(evt: CdkDragDrop<RuleAtom[]>): void;
2937
+ updateDraftFromGroup(): void;
2938
+ getAtomPreview(a: RuleAtom): string;
2939
+ addSubgroup(): void;
2940
+ removeSubgroup(index: number): void;
2941
+ getGroupPreview(g: RuleGroup): string;
2942
+ private getActiveGroupRef;
2943
+ static ɵfac: i0.ɵɵFactoryDeclaration<TableRulesEditorComponent, [null, null, null, null, null, { optional: true; }]>;
2944
+ static ɵcmp: i0.ɵɵComponentDeclaration<TableRulesEditorComponent, "table-rules-editor", never, { "config": { "alias": "config"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; "i18nRules": { "alias": "i18nRules"; "required": false; }; "debugLogs": { "alias": "debugLogs"; "required": false; }; "debugLevel": { "alias": "debugLevel"; "required": false; }; }, { "configChange": "configChange"; }, never, never, true, never>;
2945
+ }
2946
+
2659
2947
  type ResourcePathIntent = 'set' | 'clear' | 'unchanged';
2660
2948
  type EffectiveDataMode = 'remote' | 'local' | 'empty';
2661
2949
  declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValueProvider {
@@ -2664,6 +2952,7 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
2664
2952
  private readonly i18n;
2665
2953
  filterSettingsEditor?: FilterSettingsComponent;
2666
2954
  behaviorEditor?: BehaviorConfigEditorComponent;
2955
+ rulesEditor?: TableRulesEditorComponent;
2667
2956
  set crudEditorSetter(ref: any);
2668
2957
  private crudEditor?;
2669
2958
  private _crudSubscribed;
@@ -2763,6 +3052,7 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
2763
3052
  */
2764
3053
  private deepEqual;
2765
3054
  getSettingsValue(): any;
3055
+ private syncRulesFromEditor;
2766
3056
  private syncFilterSettingsFromEditor;
2767
3057
  private hasAdvancedSettingsProperty;
2768
3058
  private syncLastKnownFilterSettingsFromEditedConfig;
@@ -2958,6 +3248,10 @@ declare class AnalyticsTableContractService {
2958
3248
  static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableContractService>;
2959
3249
  }
2960
3250
 
3251
+ type TableRichContentP0Node = RichPresenterNode | RichComposeNode;
3252
+ declare function isTableRendererSupportedByRichContentP0(renderer?: ColumnDefinition['renderer'] | null): boolean;
3253
+ declare function mapTableRendererToRichContentP0(renderer?: ColumnDefinition['renderer'] | null): TableRichContentP0Node | null;
3254
+
2961
3255
  declare function createTableAuthoringDocument(source: {
2962
3256
  config?: unknown;
2963
3257
  bindings?: unknown;
@@ -3021,276 +3315,6 @@ declare class ValueMappingEditorComponent implements OnInit, OnChanges {
3021
3315
  static ɵcmp: i0.ɵɵComponentDeclaration<ValueMappingEditorComponent, "value-mapping-editor", never, { "currentMapping": { "alias": "currentMapping"; "required": false; }; "keyInputType": { "alias": "keyInputType"; "required": false; }; "labelKey": { "alias": "labelKey"; "required": false; }; "labelValue": { "alias": "labelValue"; "required": false; }; }, { "mappingChange": "mappingChange"; }, never, never, true, never>;
3022
3316
  }
3023
3317
 
3024
- type ColumnDataType = 'string' | 'number' | 'date' | 'boolean' | 'currency' | 'percentage' | 'custom';
3025
-
3026
- type OperatorKey = '==' | '!=' | '<' | '<=' | '>' | '>=' | 'contains' | 'startsWith' | 'endsWith' | 'matches' | 'not matches' | 'in' | 'not in' | 'is empty' | 'is not empty' | 'between' | 'is today' | 'in last' | 'weekday is' | 'is true' | 'is false' | 'contains all' | 'contains any' | 'length ==' | 'length >' | 'length <' | 'jsonPath matches' | 'has key' | 'key ==' | 'id ==' | 'id in' | 'has property';
3027
- interface OperatorSpec {
3028
- key: OperatorKey;
3029
- label: string;
3030
- icon?: string;
3031
- description?: string;
3032
- }
3033
- declare class OperatorsRegistryService {
3034
- /** Returns the list of operator specs supported for a given data type. */
3035
- getForType(type: ColumnDataType | 'enum' | 'array' | 'json' | 'relational'): OperatorSpec[];
3036
- get keys(): OperatorKey[];
3037
- private readonly stringOps;
3038
- private readonly numberOps;
3039
- private readonly dateOps;
3040
- private readonly booleanOps;
3041
- private readonly enumOps;
3042
- private readonly arrayOps;
3043
- private readonly jsonOps;
3044
- private readonly relationalOps;
3045
- static ɵfac: i0.ɵɵFactoryDeclaration<OperatorsRegistryService, never>;
3046
- static ɵprov: i0.ɵɵInjectableDeclaration<OperatorsRegistryService>;
3047
- }
3048
-
3049
- type GroupOp = 'AND' | 'OR' | 'NOT';
3050
- interface RuleAtom {
3051
- field: string;
3052
- operator: string;
3053
- value?: any;
3054
- options?: Record<string, any>;
3055
- }
3056
- interface RuleGroup {
3057
- op: GroupOp;
3058
- conditions: RuleAtom[];
3059
- groups?: RuleGroup[];
3060
- }
3061
- declare class RuleCompilerService {
3062
- /**
3063
- * Compiles a rule group into a single DSL expression string, adding
3064
- * parentheses according to grouping and operator precedence.
3065
- */
3066
- compileGroup(group: RuleGroup): string;
3067
- /** Compiles a single rule atom to DSL. */
3068
- compileAtom(atom: RuleAtom): string;
3069
- private stringify;
3070
- static ɵfac: i0.ɵɵFactoryDeclaration<RuleCompilerService, never>;
3071
- static ɵprov: i0.ɵɵInjectableDeclaration<RuleCompilerService>;
3072
- }
3073
-
3074
- type RuleItem = {
3075
- condition: string;
3076
- cssClass?: string;
3077
- style?: Record<string, string>;
3078
- description?: string;
3079
- effects?: _praxisui_table_rule_builder.RuleEffectDefinition;
3080
- enabled?: boolean;
3081
- };
3082
- declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy {
3083
- private cdr;
3084
- private registry;
3085
- private compiler;
3086
- private dynamicForm;
3087
- private crud?;
3088
- private static runtimeRegistryInstanceCounter;
3089
- private readonly i18n;
3090
- config: TableConfig;
3091
- resourcePath?: string;
3092
- fields?: FieldDefinition[] | null;
3093
- i18nRules?: Partial<Record<string, string>>;
3094
- dslFunctionRegistry: FunctionRegistry<any> | null;
3095
- configChange: EventEmitter<_praxisui_core.TableConfigModern>;
3096
- scope: 'row' | 'column';
3097
- selectedColumnField: string | null;
3098
- draftCondition: string;
3099
- draftCssClass: string;
3100
- draftStyleText: string;
3101
- sanitizedStyle: Record<string, string>;
3102
- dslMode: boolean;
3103
- dslErrors: string[];
3104
- testSummary: string;
3105
- editIndex: number;
3106
- get currentRules(): RuleItem[];
3107
- set currentRules(v: RuleItem[]);
3108
- rulesRow: RuleItem[];
3109
- rulesColumn: RuleItem[];
3110
- private parser;
3111
- private runtimeFunctionRegistry;
3112
- private readonly runtimeRegistryContextKey;
3113
- objectKeys: {
3114
- (o: object): string[];
3115
- (o: {}): string[];
3116
- };
3117
- dynamicValueForm: FormGroup;
3118
- dynamicValueMetas: FieldMetadata[];
3119
- effectsValue?: RuleEffectDefinition;
3120
- dynamicValueActive: boolean;
3121
- private dynamicValueSub?;
3122
- private testSummaryTimer;
3123
- private readonly legacyStyleAllowList;
3124
- basicFieldType: 'enum' | 'array' | 'json' | 'relational' | 'string' | 'number' | 'date' | 'boolean' | 'currency' | 'percentage' | 'custom';
3125
- noValueOperator: boolean;
3126
- i18nValuePlaceholder: string;
3127
- enumOptions: Array<{
3128
- value: any;
3129
- label: string;
3130
- }>;
3131
- private updateDerivedUiProps;
3132
- /** Enable verbose console logging for debugging value editor behavior */
3133
- debugLogs: boolean;
3134
- debugLevel: 'log' | 'info' | 'debug';
3135
- private dbg;
3136
- /** Log a summary table of field metadata and column info for diagnostics */
3137
- private logFieldMetasContext;
3138
- /** Log a focused view for a single field */
3139
- private logSingleFieldMeta;
3140
- private logFieldChoices;
3141
- t(key: string): string;
3142
- constructor(cdr: ChangeDetectorRef, registry: OperatorsRegistryService, compiler: RuleCompilerService, dynamicForm: DynamicFormService, crud?: GenericCrudService<any> | undefined);
3143
- private configureDslRuntime;
3144
- ngOnInit(): void;
3145
- ngOnChanges(changes: SimpleChanges): void;
3146
- ngOnDestroy(): void;
3147
- get columnFields(): string[];
3148
- getOperatorsForField(fieldName: string | null): string[];
3149
- onScopeChange(_s: 'row' | 'column'): void;
3150
- onColumnSelect(_field: string): void;
3151
- private initFromConfig;
3152
- private loadColumnRules;
3153
- rebuildCondition(): void;
3154
- onDraftChange(): void;
3155
- applyTextPreset(preset: string): void;
3156
- generateSampleData(): void;
3157
- runTest(): void;
3158
- onRelSearch(ev: any): void;
3159
- clearRelSelection(): void;
3160
- onRelSelectSingle(opt: any): void;
3161
- onRelAddMulti(opt: any): void;
3162
- removeRelMulti(i: number): void;
3163
- private fetchRelOptions;
3164
- private getRelationalConfig;
3165
- validateDraft(): void;
3166
- canCommitDraft(): boolean;
3167
- private toPersistedCellClassAndStyle;
3168
- addOrUpdateRule(): void;
3169
- editRule(index: number): void;
3170
- removeRule(index: number): void;
3171
- duplicateRule(index: number): void;
3172
- onRuleToggle(): void;
3173
- onApply(): void;
3174
- isValid(): boolean;
3175
- onExportRules(): void;
3176
- onImportRules(): void;
3177
- private sanitizeRule;
3178
- private getKnownDslFields;
3179
- getAnimationLabel(r: RuleItem): string | null;
3180
- private normalizeRendererAnimation;
3181
- private buildRendererOverrideFromRule;
3182
- private buildLegacyRendererOverrideFromRule;
3183
- private buildRowRendererOverrideFromRule;
3184
- private stringifyValue;
3185
- private parseLegacyStyle;
3186
- private normalizeLegacyStyleObject;
3187
- private extractIdentifiers;
3188
- resetDraft(): void;
3189
- basicField: string;
3190
- basicOperator: string;
3191
- basicValue: any;
3192
- basicMin: any;
3193
- basicMax: any;
3194
- basicListCsv: string;
3195
- basicDate: Date | null;
3196
- basicDateStart: Date | null;
3197
- basicDateEnd: Date | null;
3198
- basicEnumValue: string | number | null;
3199
- basicEnumValues: Array<string | number>;
3200
- basicLength: number | null;
3201
- relationalSelected: {
3202
- id: any;
3203
- label: string;
3204
- raw: any;
3205
- } | null;
3206
- relationalSelectedMulti: Array<{
3207
- id: any;
3208
- label: string;
3209
- raw: any;
3210
- }>;
3211
- relationalOptions: Array<{
3212
- id: any;
3213
- label: string;
3214
- raw: any;
3215
- }>;
3216
- basicRelPath: string;
3217
- private relSearchTerm;
3218
- private relCache;
3219
- basicLastN: number | null;
3220
- basicLastUnit: 'days' | 'weeks' | 'months';
3221
- basicWeekdays: number[];
3222
- weekdayOptions: {
3223
- value: number;
3224
- label: string;
3225
- }[];
3226
- basicJsonPath: string;
3227
- basicJsonPattern: string;
3228
- basicJsonKey: string;
3229
- basicJsonExpected: any;
3230
- draftGroup: RuleGroup;
3231
- editAtomIndex: number;
3232
- activeGroupTarget: 'root' | number;
3233
- onEffectsChange(v: RuleEffectDefinition): void;
3234
- private hasRuleEffectsValue;
3235
- getFieldType(fieldName: string | null): 'enum' | 'array' | 'json' | 'relational' | 'string' | 'number' | 'date' | 'boolean' | 'currency' | 'percentage' | 'custom';
3236
- getEnumOptions(fieldName: string | null): Array<{
3237
- value: any;
3238
- label: string;
3239
- }>;
3240
- isNoValueOperator(op: string): boolean;
3241
- getValuePlaceholder(): string;
3242
- getI18nValuePlaceholder(): string;
3243
- private toIsoDateString;
3244
- setDsl(v: boolean): void;
3245
- onBasicFieldChange(_val: string): void;
3246
- onBasicOperatorChange(_val: string): void;
3247
- private refreshDynamicValueInitialValueOnly;
3248
- refreshDynamicValueHost(): void;
3249
- private buildAtomFromBasic;
3250
- canBuildAtom(): boolean;
3251
- onAddOrUpdateAtom(): void;
3252
- editAtom(index: number): void;
3253
- removeAtom(index: number): void;
3254
- resetAtomEdit(): void;
3255
- private focusAddCondition;
3256
- clearGroup(): void;
3257
- onDropCondition(evt: CdkDragDrop<RuleAtom[]>): void;
3258
- updateDraftFromGroup(): void;
3259
- getAtomPreview(a: RuleAtom): string;
3260
- addSubgroup(): void;
3261
- removeSubgroup(index: number): void;
3262
- getGroupPreview(g: RuleGroup): string;
3263
- private getActiveGroupRef;
3264
- static ɵfac: i0.ɵɵFactoryDeclaration<TableRulesEditorComponent, [null, null, null, null, { optional: true; }]>;
3265
- static ɵcmp: i0.ɵɵComponentDeclaration<TableRulesEditorComponent, "table-rules-editor", never, { "config": { "alias": "config"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; "i18nRules": { "alias": "i18nRules"; "required": false; }; "dslFunctionRegistry": { "alias": "dslFunctionRegistry"; "required": false; }; "debugLogs": { "alias": "debugLogs"; "required": false; }; "debugLevel": { "alias": "debugLevel"; "required": false; }; }, { "configChange": "configChange"; }, never, never, true, never>;
3266
- }
3267
-
3268
- /**
3269
- * Lightweight JSON path evaluator for simple cases used in conditional styling.
3270
- * Supported syntax (subset):
3271
- * - $.a.b.c
3272
- * - a.b[0].c
3273
- * - a["key"] / a['key']
3274
- * - a[0]
3275
- */
3276
- declare function jsonPathGet(root: any, rawPath: string): any;
3277
- declare function hasJsonKey(root: any, keyOrPath: string): boolean;
3278
- declare function jsonPathMatches(root: any, path: string, pattern: string): boolean;
3279
- /**
3280
- * Registers JSON helpers in a DslParser instance, if it supports custom functions.
3281
- * This is optional — call it in your app host bootstrap.
3282
- */
3283
- declare function registerJsonDslFunctions(parser: DslParser | any): void;
3284
-
3285
- /**
3286
- * Registers simple date/time helpers in a DslParser instance.
3287
- * - today(): returns 'YYYY-MM-DD' (UTC)
3288
- * - now(): returns Unix timestamp in milliseconds
3289
- * - dateAdd(date, amount, unit): adds amount (days|weeks|months) and returns 'YYYY-MM-DD'
3290
- * - dateFormat(date, token): supports token 'E' (ISO weekday 1..7)
3291
- */
3292
- declare function registerDateDslFunctions(parser: DslParser | any): void;
3293
-
3294
3318
  declare class FormulaGeneratorService {
3295
3319
  /**
3296
3320
  * Generates a safe JavaScript expression from a formula definition
@@ -3486,5 +3510,5 @@ interface CapabilityCatalog extends AiCapabilityCatalog {
3486
3510
  }
3487
3511
  declare const TABLE_COMPONENT_AI_CAPABILITIES: CapabilityCatalog;
3488
3512
 
3489
- 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, PraxisTableToolbar, STRING_PRESETS, TABLE_AI_CAPABILITIES, TABLE_COMPONENT_AI_CAPABILITIES, TASK_PRESETS, TableDefaultsProvider, TableRulesEditorComponent, ToolbarActionsEditorComponent, ValueMappingEditorComponent, VisualFormulaBuilderComponent, buildTableApplyPlan, createTableAuthoringDocument, getActionId, getEnum, getTableCapabilities, hasJsonKey, jsonPathGet, jsonPathMatches, normalizeTableAuthoringDocument, parseLegacyOrTableDocument, providePraxisFilterMetadata, providePraxisTableMetadata, registerDateDslFunctions, registerJsonDslFunctions, serializeTableAuthoringDocument, toCanonicalTableConfig, validateTableAuthoringDocument };
3490
- 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, TableRuntimeContext, TableValidationContext, ToolbarAction, ToolbarActionsChange, ValueKind$1 as ValueKind, ValueMappingPair };
3513
+ 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, 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 };
3514
+ 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 };