@praxisui/table 8.0.0-beta.32 → 8.0.0-beta.34

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.
@@ -1 +1 @@
1
- export { A as AnalyticsTableConfigAdapterService, a as AnalyticsTableContractService, b as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, c as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, d as ColumnsConfigEditorComponent, D as DATE_PRESETS, e as DataFormatterComponent, f as DataFormattingService, F as FORMULA_TEMPLATES, g as FilterConfigService, h as FilterSettingsComponent, i as FormulaGeneratorService, J as JsonConfigEditorComponent, M as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, P as PERCENTAGE_PRESETS, j as PRAXIS_FILTER_COMPONENT_METADATA, k as PRAXIS_TABLE_AUTHORING_MANIFEST, l as PRAXIS_TABLE_COMPONENT_METADATA, m as PraxisFilter, n as PraxisFilterWidgetConfigEditor, o as PraxisTable, p as PraxisTableConfigEditor, q as PraxisTableInlineAuthoringEditorComponent, r as PraxisTableToolbar, s as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, t as TABLE_COMPONENT_AI_CAPABILITIES, u as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, v as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, w as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, x as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, y as TABLE_COMPONENT_EDIT_PLAN_KIND, E as TABLE_COMPONENT_EDIT_PLAN_VERSION, G as TASK_PRESETS, H as TableDefaultsProvider, I as TableRulesEditorComponent, K as ToolbarActionsEditorComponent, V as ValueMappingEditorComponent, L as VisualFormulaBuilderComponent, O as buildTableApplyPlan, Q as coerceTableComponentEditPlan, R as coerceTableComponentEditPlans, U as compileTableComponentEditPlan, W as compileTableComponentEditPlans, X as createTableAuthoringDocument, Y as getActionId, Z as getEnum, _ as getTableCapabilities, $ as getTableComponentEditPlanCapabilities, a0 as isTableRendererSupportedByRichContentP0, a1 as mapTableRendererToRichContentP0, a2 as normalizeTableAuthoringDocument, a3 as parseLegacyOrTableDocument, a4 as providePraxisFilterMetadata, a5 as providePraxisTableMetadata, a6 as serializeTableAuthoringDocument, a7 as toCanonicalTableConfig, a8 as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-BoDxoDos.mjs';
1
+ export { A as AnalyticsTableConfigAdapterService, a as AnalyticsTableContractService, b as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, c as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, d as ColumnsConfigEditorComponent, D as DATE_PRESETS, e as DataFormatterComponent, f as DataFormattingService, F as FORMULA_TEMPLATES, g as FilterConfigService, h as FilterSettingsComponent, i as FormulaGeneratorService, J as JsonConfigEditorComponent, M as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, P as PERCENTAGE_PRESETS, j as PRAXIS_FILTER_COMPONENT_METADATA, k as PRAXIS_TABLE_AUTHORING_MANIFEST, l as PRAXIS_TABLE_COMPONENT_METADATA, m as PraxisFilter, n as PraxisFilterWidgetConfigEditor, o as PraxisTable, p as PraxisTableConfigEditor, q as PraxisTableInlineAuthoringEditorComponent, r as PraxisTableToolbar, s as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, t as TABLE_COMPONENT_AI_CAPABILITIES, u as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, v as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, w as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, x as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, y as TABLE_COMPONENT_EDIT_PLAN_KIND, E as TABLE_COMPONENT_EDIT_PLAN_VERSION, G as TASK_PRESETS, H as TableDefaultsProvider, I as TableRulesEditorComponent, K as ToolbarActionsEditorComponent, V as ValueMappingEditorComponent, L as VisualFormulaBuilderComponent, O as buildTableApplyPlan, Q as coerceTableComponentEditPlan, R as coerceTableComponentEditPlans, U as compileTableComponentEditPlan, W as compileTableComponentEditPlans, X as createTableAuthoringDocument, Y as getActionId, Z as getEnum, _ as getTableCapabilities, $ as getTableComponentEditPlanCapabilities, a0 as isTableRendererSupportedByRichContentP0, a1 as mapTableRendererToRichContentP0, a2 as normalizeTableAuthoringDocument, a3 as parseLegacyOrTableDocument, a4 as providePraxisFilterMetadata, a5 as providePraxisTableMetadata, a6 as serializeTableAuthoringDocument, a7 as toCanonicalTableConfig, a8 as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-CBKUT72z.mjs';
package/package.json CHANGED
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "name": "@praxisui/table",
3
- "version": "8.0.0-beta.32",
3
+ "version": "8.0.0-beta.34",
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": "^21.0.0",
7
7
  "@angular/core": "^21.0.0",
8
- "@praxisui/ai": "^8.0.0-beta.32",
9
- "@praxisui/core": "^8.0.0-beta.32",
10
- "@praxisui/dynamic-fields": "^8.0.0-beta.32",
11
- "@praxisui/dynamic-form": "^8.0.0-beta.32",
12
- "@praxisui/metadata-editor": "^8.0.0-beta.32",
13
- "@praxisui/rich-content": "^8.0.0-beta.32",
14
- "@praxisui/settings-panel": "^8.0.0-beta.32",
15
- "@praxisui/table-rule-builder": "^8.0.0-beta.32",
8
+ "@praxisui/ai": "^8.0.0-beta.34",
9
+ "@praxisui/core": "^8.0.0-beta.34",
10
+ "@praxisui/dynamic-fields": "^8.0.0-beta.34",
11
+ "@praxisui/dynamic-form": "^8.0.0-beta.34",
12
+ "@praxisui/metadata-editor": "^8.0.0-beta.34",
13
+ "@praxisui/rich-content": "^8.0.0-beta.34",
14
+ "@praxisui/settings-panel": "^8.0.0-beta.34",
15
+ "@praxisui/table-rule-builder": "^8.0.0-beta.34",
16
16
  "@angular/cdk": "^21.0.0",
17
17
  "@angular/forms": "^21.0.0",
18
18
  "@angular/material": "^21.0.0",
19
19
  "@angular/router": "^21.0.0",
20
- "@praxisui/dialog": "^8.0.0-beta.32",
20
+ "@praxisui/dialog": "^8.0.0-beta.34",
21
21
  "rxjs": "~7.8.0"
22
22
  },
23
23
  "dependencies": {
@@ -366,6 +366,33 @@ Migration note:
366
366
  `{ trigger, row?, selectedRows, selectedCount, tableId? }` when the user changes
367
367
  row selection through table affordances.
368
368
 
369
+ When the table assistant is opened, selected rows are projected into a governed
370
+ `table-row-selection` runtime digest with `selectedCount`, `idField`,
371
+ `selectedIds` and a limited sanitized `sampleRows` array. This digest grounds
372
+ LLM answers or requested actions about the selected records, but it does not
373
+ route the user's primary intent and it is not a second source of business rules.
374
+
375
+ The assistant can also materialize declared runtime operations through
376
+ `tableRuntimeOperations`. This is a reviewed, table-owned operation envelope,
377
+ not a free-form component patch. Supported operations are:
378
+
379
+ | Operation | Input | Effect |
380
+ | --- | --- | --- |
381
+ | `table.filter.apply` | `{ criteria }` | Applies advanced filter criteria through the same runtime path used by the filter UI. `criteria` is currently a simple conjunction over declared filter fields; boolean composition such as OR, `anyOf`, `oneOf` or `allOf` is not part of this runtime contract yet. |
382
+ | `table.export.run` | `{ format, scope? }` | Runs the canonical Collection Export pipeline. `scope` may override the configured export scope for this runtime action only. |
383
+
384
+ Compound filter semantics should evolve through the canonical
385
+ `PraxisDataQueryContext.filterExpression` proposal in
386
+ `projects/praxis-core/docs/rfc-query-context-filter-expression.md`, not through
387
+ implicit OR payloads in `criteria`.
388
+
389
+ When `/schemas/filtered` publishes `x-ui.resource.capabilities`, the table
390
+ assistant includes a resource capability digest in its authoring contract.
391
+ `capabilities.filter=true` only declares the flat `/filter` DTO/simple
392
+ conjunction surface. `capabilities.filterExpression=false` tells the assistant
393
+ to clarify or explain OR/nested boolean requests instead of silently applying a
394
+ degraded filter.
395
+
369
396
  | Event | Payload | Trigger | Stability | Notes |
370
397
  | --- | --- | --- | --- | --- |
371
398
  | `rowClick` | `{ row, index }` | Clique em linha. | Partial | Preservado da documentação anterior. |
@@ -811,7 +838,7 @@ Frontend (UI):
811
838
  | `praxis-table-toolbar` | Barra superior/inferior com acoes, bulk e export | `toolbar`, `actions`, `export`, `behavior.filtering.*` |
812
839
  | `praxis-filter` | Filtro avancado acoplado a toolbar | `behavior.filtering.advancedFilters.*`, `behavior.filtering.debounceTime`, `resourcePath` |
813
840
  | `praxis-empty-state-card` | Estado inicial quando nao ha conexao remota | exibido quando nao ha `resourcePath` valido |
814
- | `PraxisAiAssistantShellComponent` | Copiloto semantico opcional nos slots de toolbar | habilitado pelo runtime com turn orchestration e contexto seguro; ao minimizar, a sessao fica no registry com `presence: "origin-anchor"` e o affordance volta ao gatilho da tabela (nao exposto no JSON) |
841
+ | `PraxisAiAssistantShellComponent` | Copiloto semântico opcional nos slots de toolbar | habilitado pelo runtime com turn orchestration e contexto seguro; ao minimizar, a sessao fica no registry com `presence: "origin-anchor"` e o affordance volta ao gatilho da tabela (nao exposto no JSON) |
815
842
  | Angular Material + CDK | Base de tabela, menus, selecao e virtual scroll | `behavior.pagination.*`, `behavior.selection.*`, `behavior.virtualization.*`, `appearance.spacing.*` |
816
843
 
817
844
  Backend e contratos:
@@ -1137,6 +1164,9 @@ A superficie usa `horizontalScroll` com classes:
1137
1164
  `selectionChange` emits `{ trigger, row?, selectedRows, selectedCount, tableId? }`
1138
1165
  for row selection changes initiated by the user.
1139
1166
 
1167
+ Assistant turns can also receive the selected-row digest as context; textual
1168
+ matching on row values must not decide primary intent.
1169
+
1140
1170
  | Event | Payload | Trigger | Stability |
1141
1171
  | --- | --- | --- | --- |
1142
1172
  | `rowClick` | `{ row, index }` | clique de linha no corpo da tabela | Partial |
@@ -1,7 +1,7 @@
1
1
  import * as _praxisui_core from '@praxisui/core';
2
- import { TableConfig, LoggerService, PraxisI18nService, GlobalConfigService, AsyncConfigStorage, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, LoadingState, RestApiLinks, ColumnDefinition, RichBlockNode, ConnectionStorage, 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, AiCapability, AiCapabilityCategory, AiValueKind, AiCapabilityCatalog } from '@praxisui/core';
2
+ import { TableConfig, LoggerService, PraxisI18nService, GlobalConfigService, AsyncConfigStorage, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, PraxisQueryFilterExpression, LoadingState, RestApiLinks, ColumnDefinition, RichBlockNode, ResourceCapabilityDigest, ConnectionStorage, LoadingOrchestrator, GlobalActionService, PraxisLoadingRenderer, TableDetailRichListNode, TableDetailCardGridNode, TableDetailCardGridCardNode, TableDetailTimelineNode, JsonLogicDataRecord, TableDetailListItemAction, TableDetailActionBarNode, TableDetailActionBarAction, TableDetailRefNode, TableDetailTemplateRefNode, TableDetailDiagramEmbedNode, TableDetailEmbedAction, PraxisExportScope, GlobalActionRef, PraxisRuntimeGlobalActionEffect, ResourceActionCatalogItem, ResourceSurfaceCatalogItem, JsonLogicExpression, GlobalActionCatalogEntry, IconPickerService, SurfaceOpenPayload, GlobalActionField, FieldDefinition, PraxisRuntimeConditionalEffectRule, PraxisJsonLogicService, TableConfigService, SettingsValueProvider as SettingsValueProvider$1, AnalyticsSchemaContractService, AnalyticsPresentationResolver, RichPresenterNode, RichComposeNode, ComponentAuthoringManifest, AiCapability, AiCapabilityCategory, AiValueKind, AiCapabilityCatalog } from '@praxisui/core';
3
3
  import * as i0 from '@angular/core';
4
- import { OnDestroy, EventEmitter, ElementRef, OnInit, OnChanges, AfterViewInit, DoCheck, DestroyRef, ChangeDetectorRef, NgZone, SimpleChanges, Provider, AfterContentInit, Injector } from '@angular/core';
4
+ import { OnDestroy, EventEmitter, ElementRef, OnInit, OnChanges, AfterViewInit, DoCheck, DestroyRef, ChangeDetectorRef, NgZone, SimpleChanges, ComponentRef, Provider, AfterContentInit, Injector } from '@angular/core';
5
5
  import { ActivatedRoute } from '@angular/router';
6
6
  import { MatTable, MatTableDataSource } from '@angular/material/table';
7
7
  import * as _angular_material_paginator from '@angular/material/paginator';
@@ -14,6 +14,7 @@ import { BehaviorSubject, Subscription, Observable } from 'rxjs';
14
14
  import { SettingsPanelService, SettingsValueProvider } from '@praxisui/settings-panel';
15
15
  import { FormGroup, FormControl, FormBuilder } from '@angular/forms';
16
16
  import { MatDialog } from '@angular/material/dialog';
17
+ import { BaseDynamicFieldComponent } from '@praxisui/dynamic-fields';
17
18
  import { CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';
18
19
  import { MatSelect } from '@angular/material/select';
19
20
  import { PraxisDialog } from '@praxisui/dialog';
@@ -436,6 +437,9 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
436
437
  showSearchButton: boolean;
437
438
  /** Exibir confirmação ao excluir atalho (tag) */
438
439
  confirmTagDelete: boolean;
440
+ private alwaysFieldComponentRefs;
441
+ private selectedFieldComponentRefs;
442
+ private toggleFieldComponentRefs;
439
443
  /** Move toggles/booleans simples para a área de ações */
440
444
  placeBooleansInActions: boolean;
441
445
  /** Mostrar rótulos dos toggles na área de ações */
@@ -604,6 +608,8 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
604
608
  private resolveInputDto;
605
609
  private resolveInitialDto;
606
610
  private syncFormsFromDto;
611
+ private refreshProgrammaticFilterFieldDisplays;
612
+ private refreshProgrammaticFilterFieldDisplay;
607
613
  ngOnInit(): Promise<void>;
608
614
  ngAfterViewInit(): void;
609
615
  onWindowResize(): void;
@@ -672,9 +678,9 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
672
678
  private mergeAlwaysVisibleMetadata;
673
679
  private mergeFieldMetadataOverride;
674
680
  ngDoCheck(): void;
675
- onAlwaysComponents(map: Map<string, any>): void;
676
- onSelectedComponents(map: Map<string, any>): void;
677
- onToggleComponents(map: Map<string, any>): void;
681
+ onAlwaysComponents(map: Map<string, ComponentRef<BaseDynamicFieldComponent>>): void;
682
+ onSelectedComponents(map: Map<string, ComponentRef<BaseDynamicFieldComponent>>): void;
683
+ onToggleComponents(map: Map<string, ComponentRef<BaseDynamicFieldComponent>>): void;
678
684
  onFieldInteraction(event: Event): void;
679
685
  openSelectedFieldEditor(): void;
680
686
  private isLocalE2eAuthoringOptInEnabled;
@@ -830,6 +836,7 @@ type SchemaFieldHint = {
830
836
  type?: string;
831
837
  controlType?: string;
832
838
  numericFormat?: string;
839
+ format?: string;
833
840
  options?: Array<Record<string, unknown> | string | number | boolean>;
834
841
  optionLabelKey?: string;
835
842
  optionValueKey?: string;
@@ -841,6 +848,7 @@ type FilterSchemaFieldHint = SchemaFieldHint & {
841
848
  };
842
849
  type PraxisDataQueryContextBridge = {
843
850
  filters?: Record<string, unknown> | null;
851
+ filterExpression?: PraxisQueryFilterExpression | null;
844
852
  sort?: string[] | null;
845
853
  limit?: number | null;
846
854
  page?: {
@@ -951,6 +959,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
951
959
  private logger?;
952
960
  private analyticsStatsApi?;
953
961
  private static readonly CELL_ANIMATION_CHANGE_CACHE_LIMIT;
962
+ private static readonly AI_SELECTION_ROW_LIMIT;
963
+ private static readonly AI_SELECTION_ID_LIMIT;
964
+ private static readonly AI_SELECTION_FIELD_LIMIT;
954
965
  private static readonly ROW_DISCOVERY_SUCCESS_CACHE_TTL_MS;
955
966
  private static readonly ROW_DISCOVERY_ERROR_CACHE_TTL_MS;
956
967
  private static readonly ROW_DISCOVERY_CACHE_LIMIT;
@@ -974,6 +985,13 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
974
985
  crudContext: any;
975
986
  filterCriteria: Record<string, any>;
976
987
  queryContext: PraxisDataQueryContextBridge | null;
988
+ advancedFilterValue: Record<string, any>;
989
+ advancedFilterRuntimeVisibleFields: string[];
990
+ private advancedFilterAlwaysVisibleCacheKey;
991
+ private advancedFilterAlwaysVisibleCache?;
992
+ private advancedFilterMetadataOverridesCacheKey;
993
+ private advancedFilterMetadataOverridesCacheSource?;
994
+ private advancedFilterMetadataOverridesCache?;
977
995
  rowClick: EventEmitter<any>;
978
996
  rowDoubleClick: EventEmitter<any>;
979
997
  rowExpansionChange: EventEmitter<RowExpansionChangeEvent>;
@@ -1096,6 +1114,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1096
1114
  getColumnTextAlignStyle(column: ColumnDefinition): string | null;
1097
1115
  getColumnWidthStyle(column: ColumnDefinition): string | null;
1098
1116
  getColumnHeaderAttrStyle(column: ColumnDefinition): string | null;
1117
+ getColumnHeaderNgStyle(column: ColumnDefinition): Record<string, string> | undefined;
1099
1118
  getColumnCellAttrStyle(column: ColumnDefinition): string | null;
1100
1119
  getTableElevationClassName(): string;
1101
1120
  private normalizeTableElevationLevel;
@@ -1139,6 +1158,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1139
1158
  shouldRenderAdvancedFilter(): boolean;
1140
1159
  getAdvancedFilterResourcePath(): string;
1141
1160
  getAdvancedFilterPersistenceKey(): string;
1161
+ getAdvancedFilterAlwaysVisibleFields(): string[] | undefined;
1162
+ getAdvancedFilterAlwaysVisibleFieldMetadataOverrides(): Record<string, Record<string, any>>;
1142
1163
  getAdvancedFilterFieldMetadata(): FieldMetadata[] | null | undefined;
1143
1164
  private buildLocalFilterMetadata;
1144
1165
  private buildLocalFilterMetadataCacheKey;
@@ -1160,7 +1181,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1160
1181
  trackByRow(index: number, item: any): any;
1161
1182
  getSchemaFieldsSnapshot(): SchemaFieldHint[];
1162
1183
  getFilterSchemaFieldsSnapshot(): FilterSchemaFieldHint[];
1184
+ getResourceCapabilityDigest(): ResourceCapabilityDigest | null;
1163
1185
  ensureFilterSchemaFieldsSnapshot(): Promise<void>;
1186
+ getAiAssistantSelectedRowsContext(): Record<string, any> | null;
1164
1187
  aiAdapter: any;
1165
1188
  private aiAdapterLoadStarted;
1166
1189
  private aiAssistantOpenAfterAdapterLoad;
@@ -1213,6 +1236,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1213
1236
  private resolveLocalSortField;
1214
1237
  private setSchemaFieldsSnapshot;
1215
1238
  private setFilterSchemaFieldsSnapshot;
1239
+ private inferFilterSchemaSourceFields;
1216
1240
  private resolveFilterSchemaRelatedColumns;
1217
1241
  private normalizeFieldAlias;
1218
1242
  private normalizeSchemaOptions;
@@ -1228,6 +1252,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1228
1252
  private reconcileHostDeclaredTableContract;
1229
1253
  private reconcileHostDeclaredColumns;
1230
1254
  private reconcileHostDeclaredRowActions;
1255
+ private reconcileHostDeclaredExport;
1256
+ private normalizePersistedExportFormats;
1231
1257
  private normalizePersistedRowActionIds;
1232
1258
  private normalizePersistedColumnIds;
1233
1259
  private clonePlainObject;
@@ -1256,8 +1282,12 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1256
1282
  onAiAssistantLayoutChange(layout: PraxisAssistantShellLayout): void;
1257
1283
  private initializeAiAssistantController;
1258
1284
  private buildAiAssistantContextItems;
1285
+ private interpolateAiAssistantContextValue;
1286
+ private aiAssistantSelectedRecordsValue;
1259
1287
  private buildAiAssistantContextSnapshot;
1260
1288
  private syncAiAssistantSession;
1289
+ private assistantContextRuntimeLocale;
1290
+ private refreshAiAssistantContextAfterSelectionChange;
1261
1291
  private hasAiAssistantSessionState;
1262
1292
  private resolveAiAssistantSessionId;
1263
1293
  private resolveAiAssistantOwnerId;
@@ -1512,13 +1542,20 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1512
1542
  private getFirstEnabledExportFormat;
1513
1543
  onExportAction(event: {
1514
1544
  format: string;
1545
+ scope?: PraxisExportScope;
1515
1546
  }): Promise<void>;
1547
+ canRunExportAction(format: unknown): boolean;
1516
1548
  private shouldBlockSelectedExportWithoutSelection;
1517
1549
  private buildTableExportRequest;
1518
1550
  private resolveEffectiveExportScope;
1519
1551
  private resolveTableExportLoadedItems;
1520
1552
  private computeLocalExportRows;
1521
1553
  private buildTableExportFields;
1554
+ private buildTableExportFormatOptions;
1555
+ private buildTableExportLocalization;
1556
+ private resolveColumnExportFormat;
1557
+ private buildColumnExportPresentation;
1558
+ private resolveColumnExportCurrency;
1522
1559
  private downloadExportResult;
1523
1560
  private triggerExportDownload;
1524
1561
  private resolveExportFileName;
@@ -1528,6 +1565,14 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1528
1565
  onAdvancedFilterSubmit(criteria: Record<string, any>): void;
1529
1566
  onAdvancedFilterChange(criteria: Record<string, any>): void;
1530
1567
  onAdvancedFilterClear(): void;
1568
+ private applyAdvancedFilterCriteria;
1569
+ private setAdvancedFilterCriteria;
1570
+ private syncAdvancedFilterValueFromCriteria;
1571
+ private deriveRuntimeVisibleAdvancedFilterFields;
1572
+ private isEmptyAdvancedFilterCriterionValue;
1573
+ private mergeAdvancedFilterFieldIds;
1574
+ private getRuntimePromotedAdvancedFilterFields;
1575
+ private toPlainRecord;
1531
1576
  private saveConfigWithAck;
1532
1577
  private clearConfigWithAck;
1533
1578
  private persistHorizontalScrollInput;
@@ -1593,6 +1638,16 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1593
1638
  private loadSchema;
1594
1639
  private loadFilterSchemaSnapshot;
1595
1640
  private convertFieldToColumn;
1641
+ private applySchemaFieldPresentation;
1642
+ private resolveSchemaCurrencyFormat;
1643
+ private resolveSchemaBooleanFormat;
1644
+ private resolveSchemaValueMapping;
1645
+ private resolveSchemaOptionsValueMapping;
1646
+ private normalizePresentationToken;
1647
+ private firstNonEmptyString;
1648
+ private firstFiniteNumber;
1649
+ private humanizeSchemaEnumValue;
1650
+ private capitalizeSchemaEnumPart;
1596
1651
  /**
1597
1652
  * Apply automatic renderer hints based on schema field metadata.
1598
1653
  * Runs only on initial bootstrap (when columns are derived from schema).
@@ -1674,6 +1729,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1674
1729
  * 3. format (data formatting like dates, numbers, currency)
1675
1730
  */
1676
1731
  getCellValue(rowData: any, column: ColumnDefinition): any;
1732
+ private applyImplicitRuntimeCellPresentation;
1733
+ private shouldHumanizeRuntimeEnumCell;
1734
+ private resolveCellFormattingType;
1677
1735
  private normalizeReadonlyEntityLookupCellValue;
1678
1736
  private toEntityLookupDisplayToken;
1679
1737
  private isEntityLookupDisplayCandidate;
@@ -1681,11 +1739,14 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1681
1739
  private resolveImplicitFormat;
1682
1740
  getCellClasses(rowData: any, column: ColumnDefinition): string[] | undefined;
1683
1741
  getCellNgStyle(rowData: any, column: ColumnDefinition): Record<string, string> | undefined;
1742
+ private normalizeInlineStyleRecord;
1684
1743
  private normalizeConditionalStyleRules;
1685
1744
  private normalizeConditionalStyleRecord;
1686
1745
  getCellTooltip(rowData: any, column: ColumnDefinition): string | null;
1687
1746
  getCellTooltipPosition(rowData: any, column: ColumnDefinition): 'above' | 'below' | 'left' | 'right' | 'before' | 'after';
1688
1747
  private resolveConditionalStyleTooltipText;
1748
+ private resolveRendererTooltipText;
1749
+ private normalizeTooltipPosition;
1689
1750
  private normalizeConditionalStyleEffects;
1690
1751
  private hasConditionalStyleEffectPayload;
1691
1752
  private resolveConditionalStyleClasses;
@@ -1851,6 +1912,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1851
1912
  private buildEffectiveCellRenderCacheKey;
1852
1913
  private getEffectiveCellRenderResult;
1853
1914
  private getEffectiveRenderer;
1915
+ private resolveEffectiveRendererTooltip;
1854
1916
  getLinkHref(row: any, column: ColumnDefinition): string | null;
1855
1917
  getLinkText(row: any, column: ColumnDefinition): string;
1856
1918
  getLinkRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
@@ -1969,6 +2031,20 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1969
2031
  toggleRow(row: any): void;
1970
2032
  private selectRowFromUserInteraction;
1971
2033
  private emitSelectionChange;
2034
+ private getSelectedRowsSnapshot;
2035
+ private getAiAssistantSelectionFields;
2036
+ private buildAiAssistantSelectionFilterCandidates;
2037
+ private inferAiAssistantFilterCriterionKind;
2038
+ private buildAiAssistantRangeFilterCandidate;
2039
+ private buildAiAssistantSetFilterCandidate;
2040
+ private resolveAiAssistantSetFilterDisplayValue;
2041
+ private aiAssistantSetFilterDisplayFieldCandidates;
2042
+ private resolveAiAssistantFilterSourceFields;
2043
+ private normalizeAiAssistantNumericRangeValue;
2044
+ private normalizeAiAssistantDateRangeValue;
2045
+ private sanitizeAiAssistantSelectedRow;
2046
+ private safeStringifyAiAssistantValue;
2047
+ private isSensitiveAiAssistantField;
1972
2048
  private getRowActionsConfig;
1973
2049
  getActionsHeaderAlign(): string;
1974
2050
  getActionsHeaderTooltip(): string | undefined;
@@ -3928,6 +4004,7 @@ declare module '@praxisui/core' {
3928
4004
  toolbar: true;
3929
4005
  actions: true;
3930
4006
  export: true;
4007
+ runtime: true;
3931
4008
  performance: true;
3932
4009
  messages: true;
3933
4010
  localization: true;
@@ -4000,9 +4077,9 @@ type ComponentEditPlanCapability = {
4000
4077
  declare const TABLE_COMPONENT_EDIT_PLAN_KIND = "praxis.table.component-edit-plan";
4001
4078
  declare const TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND = "praxis.table.component-edit-plan.batch";
4002
4079
  declare const TABLE_COMPONENT_EDIT_PLAN_VERSION = "1.0";
4003
- type TableComponentEditChangeKind = 'set_column_format' | 'set_column_header' | 'set_column_visibility' | 'set_column_filterable' | 'set_column_sortable' | 'set_column_width' | 'set_column_align' | 'set_column_sticky' | 'set_column_conditional_style' | 'set_row_conditional_style' | 'set_column_computed' | 'set_column_value_mapping' | 'set_column_renderer' | 'set_column_badge_renderer' | 'set_column_conditional_badge_renderers' | 'set_row_conditional_renderer' | 'configure_table_filtering' | 'configure_advanced_filters' | 'add_advanced_filter_fields' | 'remove_advanced_filter_fields' | 'configure_table_pagination' | 'configure_table_selection' | 'configure_table_sorting' | 'configure_toolbar' | 'add_toolbar_action' | 'configure_export' | 'set_table_density' | 'set_toolbar_visibility';
4004
- type TableComponentEditOperationId = 'column.format.set' | 'column.header.set' | 'column.visibility.set' | 'column.filterable.set' | 'column.sortable.set' | 'column.width.set' | 'column.align.set' | 'column.sticky.set' | 'column.renderer.set' | 'column.valueMapping.set' | 'column.conditionalStyle.add' | 'row.styleRule.add' | 'column.conditionalRenderer.add' | 'column.computed.add' | 'row.conditionalRenderer.add' | 'behavior.filtering.configure' | 'filter.advanced.configure' | 'filter.advanced.fields.add' | 'filter.advanced.fields.remove' | 'behavior.pagination.configure' | 'behavior.selection.configure' | 'behavior.sorting.configure' | 'toolbar.configure' | 'toolbar.action.add' | 'export.configure' | 'appearance.density.set' | 'toolbar.visibility.set';
4005
- declare const TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS: readonly ["set_column_format", "set_column_header", "set_column_visibility", "set_column_filterable", "set_column_sortable", "set_column_width", "set_column_align", "set_column_sticky", "set_column_conditional_style", "set_row_conditional_style", "set_column_computed", "set_column_value_mapping", "set_column_renderer", "set_column_badge_renderer", "set_column_conditional_badge_renderers", "set_row_conditional_renderer", "configure_table_filtering", "configure_advanced_filters", "add_advanced_filter_fields", "remove_advanced_filter_fields", "configure_table_pagination", "configure_table_selection", "configure_table_sorting", "configure_toolbar", "add_toolbar_action", "configure_export", "set_table_density", "set_toolbar_visibility"];
4080
+ type TableComponentEditChangeKind = 'add_column' | 'set_column_format' | 'set_column_header' | 'set_column_visibility' | 'set_column_filterable' | 'set_column_sortable' | 'set_column_width' | 'set_column_order' | 'set_column_align' | 'set_column_style' | 'set_column_header_style' | 'set_column_sticky' | 'set_column_conditional_style' | 'set_row_conditional_style' | 'set_column_computed' | 'set_column_value_mapping' | 'set_column_renderer' | 'set_column_badge_renderer' | 'set_column_conditional_badge_renderers' | 'set_row_conditional_renderer' | 'configure_table_filtering' | 'configure_advanced_filters' | 'add_advanced_filter_fields' | 'remove_advanced_filter_fields' | 'configure_table_pagination' | 'configure_table_selection' | 'configure_table_sorting' | 'configure_toolbar' | 'add_toolbar_action' | 'configure_export' | 'set_table_density' | 'set_toolbar_visibility';
4081
+ type TableComponentEditOperationId = 'column.add' | 'column.format.set' | 'column.header.set' | 'column.visibility.set' | 'column.filterable.set' | 'column.sortable.set' | 'column.width.set' | 'column.order.set' | 'column.align.set' | 'column.style.set' | 'column.headerStyle.set' | 'column.sticky.set' | 'column.renderer.set' | 'column.valueMapping.set' | 'column.conditionalStyle.add' | 'row.styleRule.add' | 'column.conditionalRenderer.add' | 'column.computed.add' | 'row.conditionalRenderer.add' | 'behavior.filtering.configure' | 'filter.advanced.configure' | 'filter.advanced.fields.add' | 'filter.advanced.fields.remove' | 'behavior.pagination.configure' | 'behavior.selection.configure' | 'behavior.sorting.configure' | 'toolbar.configure' | 'toolbar.action.add' | 'export.configure' | 'appearance.density.set' | 'toolbar.visibility.set';
4082
+ declare const TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS: readonly ["add_column", "set_column_format", "set_column_header", "set_column_visibility", "set_column_filterable", "set_column_sortable", "set_column_width", "set_column_order", "set_column_align", "set_column_style", "set_column_header_style", "set_column_sticky", "set_column_conditional_style", "set_row_conditional_style", "set_column_computed", "set_column_value_mapping", "set_column_renderer", "set_column_badge_renderer", "set_column_conditional_badge_renderers", "set_row_conditional_renderer", "configure_table_filtering", "configure_advanced_filters", "add_advanced_filter_fields", "remove_advanced_filter_fields", "configure_table_pagination", "configure_table_selection", "configure_table_sorting", "configure_toolbar", "add_toolbar_action", "configure_export", "set_table_density", "set_toolbar_visibility"];
4006
4083
  declare const TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS: Record<TableComponentEditChangeKind, string>;
4007
4084
  interface TableComponentEditPlan {
4008
4085
  kind?: typeof TABLE_COMPONENT_EDIT_PLAN_KIND;
@@ -4044,7 +4121,7 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
4044
4121
  readonly $defs: {
4045
4122
  readonly changeKind: {
4046
4123
  readonly type: "string";
4047
- readonly enum: readonly ["set_column_format", "set_column_header", "set_column_visibility", "set_column_filterable", "set_column_sortable", "set_column_width", "set_column_align", "set_column_sticky", "set_column_conditional_style", "set_row_conditional_style", "set_column_computed", "set_column_value_mapping", "set_column_renderer", "set_column_badge_renderer", "set_column_conditional_badge_renderers", "set_row_conditional_renderer", "configure_table_filtering", "configure_advanced_filters", "add_advanced_filter_fields", "remove_advanced_filter_fields", "configure_table_pagination", "configure_table_selection", "configure_table_sorting", "configure_toolbar", "add_toolbar_action", "configure_export", "set_table_density", "set_toolbar_visibility"];
4124
+ readonly enum: readonly ["add_column", "set_column_format", "set_column_header", "set_column_visibility", "set_column_filterable", "set_column_sortable", "set_column_width", "set_column_order", "set_column_align", "set_column_style", "set_column_header_style", "set_column_sticky", "set_column_conditional_style", "set_row_conditional_style", "set_column_computed", "set_column_value_mapping", "set_column_renderer", "set_column_badge_renderer", "set_column_conditional_badge_renderers", "set_row_conditional_renderer", "configure_table_filtering", "configure_advanced_filters", "add_advanced_filter_fields", "remove_advanced_filter_fields", "configure_table_pagination", "configure_table_selection", "configure_table_sorting", "configure_toolbar", "add_toolbar_action", "configure_export", "set_table_density", "set_toolbar_visibility"];
4048
4125
  };
4049
4126
  readonly capabilityPath: {
4050
4127
  readonly type: "string";
@@ -4079,6 +4156,9 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
4079
4156
  readonly type: "string";
4080
4157
  readonly minLength: 1;
4081
4158
  };
4159
+ readonly tooltip: {
4160
+ readonly $ref: "#/$defs/tooltip";
4161
+ };
4082
4162
  };
4083
4163
  readonly anyOf: readonly [{
4084
4164
  readonly required: readonly ["text"];
@@ -4086,6 +4166,28 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
4086
4166
  readonly required: readonly ["textField"];
4087
4167
  }];
4088
4168
  };
4169
+ readonly tooltip: {
4170
+ readonly type: "object";
4171
+ readonly additionalProperties: false;
4172
+ readonly required: readonly ["text"];
4173
+ readonly properties: {
4174
+ readonly text: {
4175
+ readonly type: "string";
4176
+ readonly minLength: 1;
4177
+ };
4178
+ readonly position: {
4179
+ readonly type: "string";
4180
+ readonly enum: readonly ["top", "right", "bottom", "left", "above", "below", "before", "after"];
4181
+ };
4182
+ readonly bgColor: {
4183
+ readonly type: "string";
4184
+ readonly minLength: 1;
4185
+ };
4186
+ readonly delayMs: {
4187
+ readonly type: "number";
4188
+ };
4189
+ };
4190
+ };
4089
4191
  readonly operation: {
4090
4192
  readonly type: "object";
4091
4193
  readonly additionalProperties: false;
@@ -4100,7 +4202,7 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
4100
4202
  readonly const: "praxis-table";
4101
4203
  };
4102
4204
  readonly operationId: {
4103
- readonly enum: readonly ["column.format.set", "column.header.set", "column.visibility.set", "column.filterable.set", "column.sortable.set", "column.width.set", "column.align.set", "column.sticky.set", "column.renderer.set", "column.valueMapping.set", "column.conditionalStyle.add", "row.styleRule.add", "column.conditionalRenderer.add", "column.computed.add", "row.conditionalRenderer.add", "behavior.filtering.configure", "filter.advanced.configure", "filter.advanced.fields.add", "filter.advanced.fields.remove", "behavior.pagination.configure", "behavior.selection.configure", "behavior.sorting.configure", "toolbar.configure", "toolbar.action.add", "export.configure", "appearance.density.set", "toolbar.visibility.set"];
4205
+ readonly enum: readonly ["column.add", "column.format.set", "column.header.set", "column.visibility.set", "column.filterable.set", "column.sortable.set", "column.width.set", "column.order.set", "column.align.set", "column.style.set", "column.headerStyle.set", "column.sticky.set", "column.renderer.set", "column.valueMapping.set", "column.conditionalStyle.add", "row.styleRule.add", "column.conditionalRenderer.add", "column.computed.add", "row.conditionalRenderer.add", "behavior.filtering.configure", "filter.advanced.configure", "filter.advanced.fields.add", "filter.advanced.fields.remove", "behavior.pagination.configure", "behavior.selection.configure", "behavior.sorting.configure", "toolbar.configure", "toolbar.action.add", "export.configure", "appearance.density.set", "toolbar.visibility.set"];
4104
4206
  };
4105
4207
  readonly target: true;
4106
4208
  readonly input: true;
@@ -4220,6 +4322,8 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
4220
4322
  readonly required: readonly ["renderer"];
4221
4323
  }, {
4222
4324
  readonly required: readonly ["value"];
4325
+ }, {
4326
+ readonly required: readonly ["tooltip"];
4223
4327
  }];
4224
4328
  readonly properties: {
4225
4329
  readonly condition: {
@@ -4233,6 +4337,9 @@ declare const TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA: {
4233
4337
  readonly minProperties: 1;
4234
4338
  readonly additionalProperties: true;
4235
4339
  };
4340
+ readonly tooltip: {
4341
+ readonly $ref: "#/$defs/tooltip";
4342
+ };
4236
4343
  readonly value: {
4237
4344
  readonly $ref: "#/$defs/badge";
4238
4345
  };