@praxisui/table 9.0.0-beta.3 → 9.0.0-beta.31

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.
@@ -37,9 +37,9 @@ source_of_truth:
37
37
  - "projects/praxis-core/src/lib/tokens/global-action.catalog.ts"
38
38
  - "projects/praxis-core/src/lib/models/global-action.model.ts"
39
39
  - "projects/praxis-core/src/lib/actions/global-action-ui.ts"
40
- source_of_truth_last_verified: "2026-03-05"
40
+ source_of_truth_last_verified: "2026-06-24"
41
41
  publish_source_of_truth: false
42
- last_updated: "2026-03-05"
42
+ last_updated: "2026-06-24"
43
43
  toc: true
44
44
  sidebar: true
45
45
  tags:
@@ -92,6 +92,13 @@ Este documento e a referencia canonica da API JSON de praxis-table.
92
92
  - Para exportar apenas a selecao, combine `behavior.selection.enabled`, `config.export.general.scope: "selected"` e uma bulk action visivel apenas quando `selectedCount > 0`.
93
93
  - Quando `config.export.general.scope` e `"selected"`, a exportacao sem linhas selecionadas e bloqueada com feedback de usuario em vez de gerar um arquivo vazio.
94
94
 
95
+ ## AI assistant entrypoint
96
+
97
+ - `config.ai.assistant.enabled` controla a visibilidade e o acionamento do assistente de IA embarcado na tabela.
98
+ - Ausencia do campo equivale ao comportamento historico: o entrypoint continua disponivel quando o adapter de IA da tabela estiver carregado.
99
+ - Use `false` para surfaces em que o host precisa remover a acao de IA por contrato publico, sem CSS contra classes internas da tabela ou do Angular Material.
100
+ - Ao mudar para `false`, a tabela fecha o assistente e remove a sessao contextual da tabela no registry compartilhado de IA.
101
+
95
102
  ## Columns visibility dropdown
96
103
 
97
104
  - `config.toolbar.columnsVisibility.enabled` controla a exibição do botão de visibilidade de colunas na barra de ferramentas.
@@ -331,6 +338,21 @@ Este arquivo foi adaptado para o padrao canonico atual sem remover conteudo tecn
331
338
  | `actions.row.discovery.enabled` | boolean | No | `true` | row-action-discovery | Controla se row actions podem ser enriquecidas por HATEOAS/capabilities. Configure `false` para manter somente ações declaradas em `actions.row.actions[]`. |
332
339
  | `columns[].renderer` | object | No | field-type-driven | renderer-contract | Renderers condicionais, payload expr e ações interativas. |
333
340
 
341
+ Quando `actions.row.discovery.enabled` esta ativo e o item publica
342
+ capabilities CRUD canonicas, `PraxisTable` pode sintetizar entradas
343
+ contextuais `view`, `edit` e `delete`. Quando o backend publica
344
+ explicitamente `operations["duplicate-draft"]`, a tabela tambem materializa
345
+ `duplicate-draft` como operacao estendida de item. Essas entradas continuam
346
+ sendo capabilities, nao workflow actions: o clique emite `rowAction` com
347
+ `actionConfig` apontando para a capability, para que um contexto CRUD ou
348
+ host composto materialize a operacao.
349
+
350
+ Renderer defaults:
351
+ - `columns[].renderer.type = "avatar"` aplica `columns[].align = "center"` quando a coluna não declara alinhamento explícito. Esse default governa header e célula para manter foto/avatar centralizados em colunas dedicadas, preservando `align`, `width` e demais overrides declarados pelo host.
352
+ - `columns[].renderer.type = "microVisualization"` renderiza a visualização compacta declarada em `renderer.microVisualization.visualization`. O caminho preferencial é metadata-driven: campos de schema com `presentation.presenter = "microVisualization"` e `presentation.visualization.surface = "table-cell"` são convertidos automaticamente para esse renderer quando o tipo é seguro para tabela. O contrato visual e a normalização pertencem a `@praxisui/core` (`PraxisPresentationVisualizationConfig`); a tabela apenas hospeda o HTML compacto em célula, compose item ou renderer condicional.
353
+
354
+ - Em tabela, campos `*Expr` da visualizacao, como `valueExpr`, `targetExpr`, `segmentsExpr`, `toneExpr` e `fallbackTextExpr`, sao resolvidos contra o contexto da linha antes de renderizar. Strings simples sao caminhos (`row.slaAtual`) e objetos seguem Json Logic. Para `kind = "comparison"`, use `points`/`pointsExpr`; `items` fica reservado para visualizacoes orientadas a itens/etapas.
355
+
334
356
  ### Toolbar contract
335
357
 
336
358
  - Acoes globais de toolbar, row e bulk usam `effects[].kind = "global-action"` como envelope canonico de novo authoring.
@@ -365,7 +387,7 @@ Este arquivo foi adaptado para o padrao canonico atual sem remover conteudo tecn
365
387
  | `icon` | `string` | No | component-input | host-surface passthrough | Ícone opcional usado em affordances auxiliares do runtime. |
366
388
  | `autoDelete` | `boolean` | No | component-input | boolean coercion | Ativa deleção automática quando o host delega esse fluxo ao runtime. |
367
389
  | `enableCustomization` | `boolean` | No | component-input | boolean coercion | Controla entrada em editor/configuração; default canônico `false`. |
368
- | `dense` | `boolean` | No | component-input | boolean coercion | Força modo compacto quando o host precisa sobrepor densidade do contrato. |
390
+ | `dense` | `boolean` | No | component-input | boolean coercion | Entrada legada de compactação. Equivale a `appearance.density="compact"` apenas quando o contrato não informa `appearance.density`. |
369
391
  | `notifyIfOutdated` | `'inline' \| 'snackbar' \| 'both' \| 'none'` | No | component-input | enum validation + prefs fallback | Política de aviso de drift de schema; o host escolhe banner inline, snackbar, ambos ou silêncio explícito. |
370
392
  | `snoozeMs` | `number` | No | component-input | numeric fallback + prefs fallback | Janela de snooze para avisos de drift; default do input é `86400000` (24h) e políticas globais podem complementar. |
371
393
  | `autoOpenSettingsOnOutdated` | `boolean` | No | component-input | schema-prefs resolution | Abre automaticamente o settings panel quando drift de schema é detectado. |
@@ -413,13 +435,14 @@ degraded filter.
413
435
  | `rowClick` | `{ row, index }` | Clique em linha. | Partial | Preservado da documentação anterior. |
414
436
  | `rowDoubleClick` | `{ action, row }` | Duplo clique quando habilitado. | Partial | Preservado da documentação anterior. |
415
437
  | `rowExpansionChange` | `RowExpansionChangeEvent` | Evento canônico para expand/collapse de detail row no runtime P0A (caminho não virtualizado), com payload discriminado por política de exposição (`allowRawExposure` + `eventExposureDefault`). | Partial | Preservado da documentação anterior. |
416
- | `rowAction` | `{ action, row, payload?, actionConfig?, localMode?, preventedHttp? }` | Acao de linha (coluna `_actions` ou renderer interativo). `payload` e emitido quando houver `payloadExpr` em renderer interativo. Quando `actionConfig.globalAction` aponta para `navigation.openRoute`, o runtime resolve templates como `${row.id}` antes de executar a navegação interna. Para actions como `surface.open`, `payload.*` continua sendo o envelope canônico do evento entregue ao destino. | Partial | Preservado da documentação anterior. |
438
+ | `rowAction` | `{ action, row, payload?, actionConfig?, localMode?, preventedHttp? }` | Acao de linha (coluna `_actions`, renderer interativo ou CRUD capability sintetizada). `payload` e emitido quando houver `payloadExpr` em renderer interativo. Quando `actionConfig.globalAction` aponta para `navigation.openRoute`, o runtime resolve templates como `${row.id}` antes de executar a navegação interna. Para actions como `surface.open`, `payload.*` continua sendo o envelope canônico do evento entregue ao destino. Para `view/edit/delete/duplicate-draft` vindos de capabilities, `actionConfig` carrega a operacao canonica e o host composto deve encaminhar ao contexto CRUD apropriado. | Partial | Preservado da documentação anterior. |
417
439
  | `toolbarAction` | `{ action, actionConfig? }` | Acao clicada em `toolbar.actions[]` que nao foi roteada para fluxo bulk; `actionConfig` carrega o objeto da acao quando disponivel. | Partial | Preservado da documentação anterior. |
418
440
  | `exportAction` | `{ format, request?, result?, error?, tableId? }` | Acao de exportacao acionada pelo menu `export.formats[]`; `request` segue `PraxisCollectionExportRequest`. | Active | Usa o contrato canonico de Collection Export em `@praxisui/core`. |
419
441
  | `exportAction` | `{ format, request?, result?, error?, tableId? }` | Acao de exportacao acionada pelo menu `export.formats[]`; `request` segue `PraxisCollectionExportRequest`. | Active | Usa o contrato canonico de Collection Export em `@praxisui/core`. |
420
442
  | `bulkAction` | `{ action, rows, actionConfig? }` | Acao em lote; `actionConfig` carrega a configuracao da acao quando disponivel. | Partial | Preservado da documentação anterior. |
421
443
  | `columnReorder` | `ColumnReorderEvent` | Reordenação de coluna concluída (drag/keyboard). | Partial | Inclui metadados de origem, destino e operação. |
422
444
  | `columnReorderAttempt` | `ColumnReorderAttemptEvent` | Tentativa bloqueada por política de drop-zone. | Partial | Evento diagnóstico para observabilidade e auditoria. |
445
+ | `columnResize` | `{ action: 'columnResize', trigger: 'pointer' \| 'keyboard', tableId, field, header, previousWidth, currentWidth, persisted }` | Redimensionamento de coluna concluido pelo separador do header. | Partial | Usa `behavior.resizing.enabled`, respeita `columns[].resizable !== false` e persiste `columns[].width` em px quando `persistWidths !== false`. Em modo `px`, altera a largura da coluna e a largura interna do conteudo rolavel; o viewport/card externo permanece estavel. |
423
446
  | `beforeDelete` | `row` | Antes de delete de linha. | Partial | Preservado da documentação anterior. |
424
447
  | `afterDelete` | `row` | Depois de delete com sucesso. | Partial | Preservado da documentação anterior. |
425
448
  | `deleteError` | `{ row, error }` | Erro no delete de linha. | Partial | Preservado da documentação anterior. |
@@ -928,6 +951,7 @@ row selection through table affordances.
928
951
  | `bulkAction` | `{ action, rows, actionConfig? }` | Acao em lote; `actionConfig` carrega a configuracao da acao quando disponivel. | Partial | Preservado da documentação anterior. |
929
952
  | `columnReorder` | `{ action, trigger: 'drag' \ | 'keyboard' \ | Partial | Preservado da documentação anterior. |
930
953
  | `columnReorderAttempt` | `{ action: 'columnReorderAttempt', trigger: 'drag' \ | 'keyboard', operationId, tableId, sourceField, targetField, previousIndex, currentIndex, sourceZone, targetZone, result: 'blocked', reasonCode: 'drop-zone-policy-blocked', configuredColumnDropZones[] }` | Partial | Preservado da documentação anterior. |
954
+ | `columnResize` | `{ action: 'columnResize', trigger: 'pointer' \| 'keyboard', tableId, field, header, previousWidth, currentWidth, persisted }` | Separador de resize no header. | Partial | Mutacao visual/runtime de largura; nao redefine schema nem dados. Em modo `px`, nao redistribui colunas vizinhas; o conteudo interno pode ficar maior que o viewport e usar scroll horizontal. |
931
955
  | `beforeDelete` | `row` | Antes de delete de linha. | Partial | Preservado da documentação anterior. |
932
956
  | `afterDelete` | `row` | Depois de delete com sucesso. | Partial | Preservado da documentação anterior. |
933
957
  | `deleteError` | `{ row, error }` | Erro no delete de linha. | Partial | Preservado da documentação anterior. |
@@ -944,28 +968,31 @@ row selection through table affordances.
944
968
  | `--p-table-row-even-bg` | zebra row |
945
969
  | `--p-table-row-hover-bg` | hover row |
946
970
  | `--p-table-row-selected-bg` | row selecionada |
971
+ | `--p-table-row-height` | altura da linha; sobrescreve o default do preset de densidade |
972
+ | `--p-table-header-height` | altura do header; sobrescreve o default do preset de densidade |
973
+ | `--p-table-column-resize-hit-area` | area clicavel do separador de resize |
974
+ | `--p-table-column-resize-separator-color` | cor base da divisoria de resize |
975
+ | `--p-table-column-resize-separator-hover-color` | cor da divisoria em hover/focus |
976
+ | `--p-table-column-resize-active-color` | cor da divisoria durante resize |
947
977
  | `--p-header-padding` | padding do header |
978
+ | `--p-cell-padding` | padding das células; sobrescreve o default do preset de densidade |
948
979
  | `--p-header-font-size` | fonte do header |
949
980
  | `--p-header-font-weight` | peso do header |
950
981
  | `--p-header-letter-spacing` | tracking do header |
951
982
  | `--p-header-text-transform` | caixa do texto do header |
952
- | `--p-table-drag-handle-size` | tamanho do handle de drag (preset padrao do runtime) |
953
- | `--p-table-drag-handle-color` | cor do handle de drag |
954
- | `--p-table-drag-handle-base-opacity` | opacidade base do handle em repouso |
955
- | `--p-table-drag-handle-idle-bg` | fundo base do handle em repouso |
956
- | `--p-table-drag-handle-idle-border` | borda base do handle em repouso |
957
- | `--p-table-drag-handle-hover-bg` | fundo do handle em hover/focus |
958
- | `--p-table-drag-handle-hover-border` | borda do handle em hover/focus |
959
- | `--p-table-drag-handle-active-bg` | fundo do handle em estado ativo |
960
- | `--p-table-drag-handle-active-border` | borda do handle em estado ativo |
961
- | `--p-table-drag-handle-focus-ring` | cor do anel de foco do handle |
962
- | `--p-table-drag-handle-transition-duration` | duracao das transicoes do handle |
963
983
  | `--p-table-reorder-transition-duration` | duracao da animacao de reorder das colunas |
964
984
  | `--p-table-drag-preview-scale` | escala visual do preview durante drag |
965
985
  | `--p-table-drag-preview-shadow` | sombra do preview durante drag |
966
986
  | `--p-table-drag-status-enter-duration` | duracao da entrada da mensagem visual de reorder |
967
987
  | `--p-actions-btn-size` | tamanho de botoes de acao |
968
988
  | `--p-actions-icon-size` | tamanho de icones de acao |
989
+ | `--p-table-paginator-container-min-height` | altura minima do paginator |
990
+ | `--p-table-paginator-container-padding` | padding do paginator |
991
+ | `--p-table-paginator-container-gap` | espaçamento entre controles do paginator |
992
+ | `--p-table-paginator-action-size` | tamanho dos botoes de navegacao do paginator |
993
+ | `--p-table-paginator-select-width` | largura do seletor de tamanho de pagina |
994
+ | `--p-table-paginator-select-height` | altura do seletor de tamanho de pagina |
995
+ | `--p-table-paginator-select-padding-inline` | padding horizontal do seletor de tamanho de pagina |
969
996
  | `--p-table-state-success-*` | tokens de estado success |
970
997
  | `--p-table-state-warning-*` | tokens de estado warning |
971
998
  | `--p-table-state-danger-*` | tokens de estado danger |
@@ -981,6 +1008,10 @@ row selection through table affordances.
981
1008
  | `col-borders` | bordas verticais entre colunas |
982
1009
  | `pfx-column-drag-enabled` | habilita layout base de DnD de colunas |
983
1010
  | `pfx-column-drag-indicator` | habilita indicador visual de drag |
1011
+ | `pfx-column-resize-enabled` | habilita separadores de resize no header |
1012
+ | `pfx-column-resizing` | estado ativo enquanto uma coluna esta sendo redimensionada |
1013
+
1014
+ `appearance.density` seleciona apenas o preset de defaults. `appearance.spacing.*` e defaults globais também alimentam tokens `*-default`. Hosts podem redefinir livremente os tokens finais sem depender de seletores internos, por exemplo `--p-table-row-height`, `--p-table-header-height`, `--p-cell-padding`, `--p-actions-btn-size` e `--p-table-paginator-select-height`. Em virtualização sem `itemHeight` explícito, o runtime deriva a altura da densidade efetiva.
984
1015
 
985
1016
  #### DnD classes (globais)
986
1017
  | Classe CSS | Escopo | Efeito |
@@ -1214,6 +1245,7 @@ matching on row values must not decide primary intent.
1214
1245
  | `density-compact` / `density-comfortable` / `density-spacious` | host classes | controle de densidade visual | Derivadas de `appearance.density`. |
1215
1246
  | `.pfx-column-drag-enabled` | host class | habilita feedback visual de reordenacao | Ativada quando contrato de reorder esta habilitado. |
1216
1247
  | `.pfx-column-drag-indicator` | host class | indicador visual durante drag/drop | Integrada ao runtime de `columnReorder`. |
1248
+ | `.praxis-header-sort-trigger` | internal header zone | zona dedicada de sort no header | Recebe `mat-sort-header`; reorder por drag continua implicito no header cell. |
1217
1249
 
1218
1250
  ### Fallback global de aparencia
1219
1251
 
@@ -1,8 +1,9 @@
1
1
  import * as _praxisui_core from '@praxisui/core';
2
- import { TableToolbarAppearanceConfig, TableConfig, LoggerService, PraxisI18nService, TableToolbarAppearanceVariant, TableToolbarAppearanceDensity, TableToolbarAppearanceShape, TableToolbarAppearanceDivider, TableToolbarTokenName, GlobalConfigService, AsyncConfigStorage, ApiUrlEntry, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, PraxisQueryFilterExpression, RecordRelatedSurfaceContextPack, LoadingState, RestApiLinks, ColumnDefinition, RichBlockNode, ResourceCapabilityDigest, ConnectionStorage, LoadingOrchestrator, GlobalActionService, PraxisLoadingRenderer, PraxisRuntimeComponentObservationEnvelope, 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';
2
+ import { TableToolbarAppearanceConfig, TableConfig, LoggerService, PraxisI18nService, TableToolbarAppearanceVariant, TableToolbarAppearanceDensity, TableToolbarAppearanceShape, TableToolbarAppearanceDivider, TableToolbarTokenName, GlobalConfigService, AsyncConfigStorage, LocalStorageConfigService, ApiUrlEntry, FieldMetadata, SchemaIdParams, FormConfig, GenericCrudService, DynamicFormService, SchemaNormalizerService, ComponentKeyService, ComponentDocMeta, PraxisTextValue, PraxisAnalyticsProjection, PraxisDataQueryContext, ApiUrlConfig, PraxisQueryFilterExpression, RecordRelatedSurfaceContextPack, LoadingState, RestApiLinks, ColumnDefinition, RichBlockNode, ResourceCapabilityDigest, ConnectionStorage, LoadingOrchestrator, GlobalActionService, PraxisLoadingRenderer, PraxisRuntimeComponentObservationEnvelope, TableDetailRichListNode, TableDetailCardGridNode, TableDetailCardGridCardNode, TableDetailTimelineNode, JsonLogicDataRecord, TableDetailListItemAction, TableDetailActionBarNode, TableDetailActionBarAction, TableDetailRefNode, TableDetailTemplateRefNode, TableDetailDiagramEmbedNode, TableDetailEmbedAction, PraxisExportScope, GlobalActionRef, PraxisRuntimeGlobalActionEffect, ResourceActionCatalogItem, ResourceSurfaceCatalogItem, ResourceCapabilityOperation, 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 { InjectionToken, OnDestroy, EventEmitter, ElementRef, Provider, OnInit, OnChanges, AfterViewInit, DoCheck, DestroyRef, ChangeDetectorRef, NgZone, SimpleChanges, ComponentRef, AfterContentInit, Injector } from '@angular/core';
4
+ import { InjectionToken, OnDestroy, EventEmitter, ElementRef, Provider, OnInit, OnChanges, AfterViewInit, DoCheck, DestroyRef, ChangeDetectorRef, NgZone, SimpleChanges, ComponentRef, AfterContentInit, Injector, Type } from '@angular/core';
5
5
  import { ActivatedRoute } from '@angular/router';
6
+ import { SafeHtml } from '@angular/platform-browser';
6
7
  import { MatTable, MatTableDataSource } from '@angular/material/table';
7
8
  import * as _angular_material_paginator from '@angular/material/paginator';
8
9
  import { MatPaginatorSelectConfig, MatPaginator, PageEvent } from '@angular/material/paginator';
@@ -95,6 +96,7 @@ declare class PraxisTableToolbar implements OnDestroy {
95
96
  getMoreActionsLabel(): string;
96
97
  emitExportAction(event: Event, format: string): void;
97
98
  getColumnsVisibilityLabel(): string;
99
+ getColumnsVisibilityIcon(): string;
98
100
  isColumnsVisibilityEnabled(): boolean;
99
101
  getVisibleColumnsCount(): number;
100
102
  isColumnVisibilityToggleDisabled(column: {
@@ -140,7 +142,6 @@ declare class PraxisTableToolbar implements OnDestroy {
140
142
  private resolveVisibleWhenFallback;
141
143
  private resolveVisibleWhenFallbackPolicy;
142
144
  private resolveRuntimeEnvironment;
143
- private isDiagnosticsEnvironment;
144
145
  private buildEvaluationContext;
145
146
  private warnVisibleWhenFallback;
146
147
  private collectShortcutBindings;
@@ -359,8 +360,9 @@ type FilterConfig = {
359
360
  };
360
361
  declare class FilterConfigService {
361
362
  private storage;
363
+ private localStorage;
362
364
  private readonly PREFIX;
363
- constructor(storage: AsyncConfigStorage);
365
+ constructor(storage: AsyncConfigStorage, localStorage: LocalStorageConfigService);
364
366
  /**
365
367
  * Load a persisted filter configuration for the given key.
366
368
  */
@@ -369,6 +371,11 @@ declare class FilterConfigService {
369
371
  * Persist a filter configuration for the given key.
370
372
  */
371
373
  save(key: string, config: FilterConfig): void;
374
+ /**
375
+ * Clear the persisted filter configuration from both remote storage and the
376
+ * local fallback cache so reset/reopen cannot revive stale preferences.
377
+ */
378
+ clear(key: string): void;
372
379
  static ɵfac: i0.ɵɵFactoryDeclaration<FilterConfigService, never>;
373
380
  static ɵprov: i0.ɵɵInjectableDeclaration<FilterConfigService>;
374
381
  }
@@ -651,6 +658,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
651
658
  private resolveInitialDto;
652
659
  private syncFormsFromDto;
653
660
  private refreshProgrammaticFilterFieldDisplays;
661
+ private getProgrammaticRefreshFieldNames;
654
662
  private refreshProgrammaticFilterFieldDisplay;
655
663
  ngOnInit(): Promise<void>;
656
664
  ngAfterViewInit(): void;
@@ -995,6 +1003,7 @@ type RuntimeRowAction = {
995
1003
  overflow?: boolean;
996
1004
  __praxisDiscoveredAction?: ResourceActionCatalogItem;
997
1005
  __praxisDiscoveredSurface?: ResourceSurfaceCatalogItem;
1006
+ __praxisCrudOperation?: ResourceCapabilityOperation;
998
1007
  __praxisCapabilityDenied?: boolean;
999
1008
  };
1000
1009
  type ExpansionDetailRuntimeStatus = 'idle' | 'loading' | 'ready' | 'error' | 'blocked';
@@ -1005,6 +1014,10 @@ type ExpansionDetailViewState = {
1005
1014
  message: string | null;
1006
1015
  source: ExpansionDetailResolvedSource | null;
1007
1016
  };
1017
+ type ExpansionDetailInlineRendererView = {
1018
+ component: Type<unknown>;
1019
+ inputs: Record<string, unknown>;
1020
+ };
1008
1021
  declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterContentInit, OnDestroy {
1009
1022
  private cdr;
1010
1023
  private settingsPanel;
@@ -1037,6 +1050,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1037
1050
  private _resourceDiscovery?;
1038
1051
  private _resourceSurfaceOpenAdapter?;
1039
1052
  private readonly runtimeObservationRegistry;
1053
+ private readonly detailInlineRenderers;
1054
+ private readonly detailInlineNodeResolvers;
1040
1055
  private runtimeObservationRegistration;
1041
1056
  readonly paginatorSelectConfig: MatPaginatorSelectConfig;
1042
1057
  private static readonly ROW_ANIMATION_PRESETS;
@@ -1077,6 +1092,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1077
1092
  exportAction: EventEmitter<any>;
1078
1093
  columnReorder: EventEmitter<any>;
1079
1094
  columnReorderAttempt: EventEmitter<any>;
1095
+ columnResize: EventEmitter<any>;
1080
1096
  beforeDelete: EventEmitter<any>;
1081
1097
  afterDelete: EventEmitter<any>;
1082
1098
  deleteError: EventEmitter<any>;
@@ -1118,8 +1134,17 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1118
1134
  private columnReorderStatusTimer;
1119
1135
  private columnReorderVisualStatusTimer;
1120
1136
  private columnReorderUndoSubscription;
1121
- private columnReorderOperationCounter;
1122
- private latestColumnReorderOperationId;
1137
+ private columnRuntimeMutationOperationCounter;
1138
+ private latestColumnRuntimeMutationOperationId;
1139
+ private columnResizeTransientWidths;
1140
+ private columnResizeTableWidthStyle;
1141
+ private columnResizeLayoutSignature;
1142
+ private isApplyingColumnResizeLayoutMutation;
1143
+ private activeColumnResize;
1144
+ private readonly columnResizePointerMoveListener;
1145
+ private readonly columnResizePointerUpListener;
1146
+ private readonly columnResizePointerCancelListener;
1147
+ private readonly columnResizeKeydownListener;
1123
1148
  localSource: any[];
1124
1149
  localView: any[];
1125
1150
  localTotal: number;
@@ -1157,6 +1182,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1157
1182
  private rowDiscoveryMarkForCheckScheduled;
1158
1183
  private lastRowDiscoveryScopeKey;
1159
1184
  private readonly i18n;
1185
+ private readonly sanitizer;
1160
1186
  private readonly collectionExport;
1161
1187
  private readonly paginatorIntl;
1162
1188
  private schemaFieldsSnapshot;
@@ -1192,9 +1218,12 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1192
1218
  getRowActionsWidthStyle(): string | null;
1193
1219
  getColumnTextAlignStyle(column: ColumnDefinition): string | null;
1194
1220
  getColumnWidthStyle(column: ColumnDefinition): string | null;
1221
+ getColumnResizeTableWidthStyle(): string | null;
1195
1222
  getColumnHeaderAttrStyle(column: ColumnDefinition): string | null;
1196
1223
  getColumnHeaderNgStyle(column: ColumnDefinition): Record<string, string> | undefined;
1197
1224
  getColumnCellAttrStyle(column: ColumnDefinition): string | null;
1225
+ private mergeColumnWidthIntoInlineStyle;
1226
+ private buildColumnWidthInlineStyle;
1198
1227
  getTableElevationClassName(): string;
1199
1228
  private normalizeTableElevationLevel;
1200
1229
  private resolveRuntimeTableElevationLevel;
@@ -1251,6 +1280,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1251
1280
  set resolvedPrefs(val: any);
1252
1281
  get resolvedPrefs(): any;
1253
1282
  dense: boolean;
1283
+ private hostDeclaredAppearanceDensity;
1284
+ private hostDeclaredAppearanceSpacing;
1285
+ private hostDeclaredAppearanceTypography;
1254
1286
  private resolveAppearanceDensity;
1255
1287
  get hostDensityCompactClass(): boolean;
1256
1288
  get hostDensityComfortableClass(): boolean;
@@ -1339,6 +1371,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1339
1371
  private tableConfigKey;
1340
1372
  private filterConfigKey;
1341
1373
  private ensureConfigDefaults;
1374
+ private hasDeclaredAppearanceDensity;
1375
+ private hasDeclaredAppearanceSection;
1376
+ private shouldApplyAppearanceDefaultValue;
1342
1377
  private mergePersistedTableConfigWithInput;
1343
1378
  private reconcileHostDeclaredTableContract;
1344
1379
  private reconcileHostDeclaredColumns;
@@ -1347,6 +1382,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1347
1382
  private normalizePersistedExportFormats;
1348
1383
  private normalizePersistedRowActionIds;
1349
1384
  private normalizePersistedColumnIds;
1385
+ private columnIdentitySetChanged;
1350
1386
  private clonePlainObject;
1351
1387
  private setShowToolbar;
1352
1388
  private shouldExposeToolbar;
@@ -1361,6 +1397,8 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1361
1397
  aiAssistantTriggerBadge(): string;
1362
1398
  aiAssistantTriggerLabel(): string;
1363
1399
  aiAssistantTriggerTooltip(): string;
1400
+ isAiAssistantEnabled(): boolean;
1401
+ shouldShowAiAssistantEntrypoint(): boolean;
1364
1402
  openAiAssistantFromSession(session: PraxisAssistantSessionSnapshot): void;
1365
1403
  closeAiAssistant(): void;
1366
1404
  onAiAssistantPromptChange(prompt: string): void;
@@ -1404,6 +1442,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1404
1442
  private buildRuntimeObservationClaims;
1405
1443
  private isRuntimeObservationVisible;
1406
1444
  private syncAiAssistantSession;
1445
+ private disableAiAssistantSession;
1407
1446
  private assistantContextRuntimeLocale;
1408
1447
  private refreshAiAssistantContextAfterSelectionChange;
1409
1448
  private hasAiAssistantSessionState;
@@ -1511,6 +1550,9 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1511
1550
  getExpansionDetailEmbedHeaderNodes(node: TableDetailRefNode | TableDetailTemplateRefNode | TableDetailDiagramEmbedNode | any): RichBlockNode[];
1512
1551
  getExpansionDetailEmbedMetaNodes(node: TableDetailRefNode | TableDetailTemplateRefNode | TableDetailDiagramEmbedNode | any): RichBlockNode[];
1513
1552
  getExpansionDetailEmbedActionNodes(action: TableDetailEmbedAction | any): RichBlockNode[];
1553
+ getExpansionDetailInlineRendererView(node: TableDetailRefNode | any, row: any, index: number): ExpansionDetailInlineRendererView | null;
1554
+ private resolveExpansionDetailInlineRenderer;
1555
+ private resolveExpansionDetailInlineNode;
1514
1556
  getExpansionDetailEmbedAction(node: TableDetailRefNode | TableDetailTemplateRefNode | TableDetailDiagramEmbedNode | any, row: any, index: number): TableDetailEmbedAction | null;
1515
1557
  isExpansionDetailEmbedActionDisabled(action: TableDetailEmbedAction | any, row: any, index: number): boolean;
1516
1558
  getExpansionDetailEmbedEmptyText(node: TableDetailRefNode | TableDetailTemplateRefNode | TableDetailDiagramEmbedNode | any): string;
@@ -1718,6 +1760,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1718
1760
  private resolveSortingStrategy;
1719
1761
  private applyDataSourceSettings;
1720
1762
  private sanitizeColumns;
1763
+ private applyRendererPresentationDefaults;
1721
1764
  private setupColumns;
1722
1765
  private preserveSchemaDrivenColumnsIfConfigOmittedColumns;
1723
1766
  private isDataColumnField;
@@ -1726,6 +1769,46 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1726
1769
  isColumnDraggingEnabled(): boolean;
1727
1770
  isColumnDragIndicatorEnabled(): boolean;
1728
1771
  isColumnDraggable(column: ColumnDefinition | null | undefined): boolean;
1772
+ isColumnResizeEnabled(): boolean;
1773
+ isColumnResizable(column: ColumnDefinition | null | undefined): boolean;
1774
+ isColumnResizeActive(column?: ColumnDefinition | null): boolean;
1775
+ getColumnResizeHandleAriaLabel(column: ColumnDefinition): string;
1776
+ getColumnResizeHandleTooltip(column: ColumnDefinition): string;
1777
+ getColumnResizeMinWidthAriaValue(column: ColumnDefinition): number;
1778
+ getColumnResizeMaxWidthAriaValue(column: ColumnDefinition): number | null;
1779
+ getColumnResizeCurrentWidthAriaValue(column: ColumnDefinition): number | null;
1780
+ onColumnResizeHandleClick(event: MouseEvent): void;
1781
+ onColumnResizeHandleKeydown(event: KeyboardEvent, column: ColumnDefinition): void;
1782
+ onColumnResizePointerDown(event: PointerEvent, column: ColumnDefinition): void;
1783
+ private onColumnResizePointerMove;
1784
+ private onColumnResizePointerUp;
1785
+ private onColumnResizePointerCancel;
1786
+ private onColumnResizeDocumentKeydown;
1787
+ private addColumnResizeDocumentListeners;
1788
+ private removeColumnResizeDocumentListeners;
1789
+ private cancelColumnResize;
1790
+ private commitColumnResize;
1791
+ private applyColumnResizeWidth;
1792
+ private emitAndPersistColumnResize;
1793
+ private updateConfigColumnWidth;
1794
+ private updateConfigColumnWidths;
1795
+ private updateColumnResizeTableWidthFromDelta;
1796
+ private captureColumnResizeLockedWidths;
1797
+ private resolveColumnResizeTableWidthPx;
1798
+ private resolveColumnWidthPx;
1799
+ private parseColumnResizePixelWidth;
1800
+ private normalizeColumnResizeWidthStyle;
1801
+ private clampColumnWidthPx;
1802
+ private resolveColumnResizeEffectiveMinWidthPx;
1803
+ private resolveColumnResizeMinWidthPx;
1804
+ private resolveColumnResizeMaxWidthPx;
1805
+ private normalizeColumnResizeConfigWidths;
1806
+ private runColumnResizeLayoutMutation;
1807
+ private reconcileColumnResizeLayoutState;
1808
+ private clearColumnResizeLayoutState;
1809
+ private createColumnResizeLayoutSignature;
1810
+ private formatColumnWidthPx;
1811
+ private isTableRtl;
1729
1812
  private resolveColumnReorderHeader;
1730
1813
  private isEnglishLocale;
1731
1814
  private isEnglishLocaleValue;
@@ -1742,9 +1825,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1742
1825
  private emitColumnReorderAttempt;
1743
1826
  private createColumnReorderOperationId;
1744
1827
  private isLatestColumnReorderOperation;
1828
+ private createColumnRuntimeMutationOperationId;
1829
+ private isLatestColumnRuntimeMutationOperation;
1745
1830
  private offerColumnReorderUndo;
1746
1831
  private restoreColumnOrderFromUndo;
1747
- onColumnDragHandleKeydown(event: KeyboardEvent, column: ColumnDefinition): void;
1832
+ onColumnHeaderReorderKeydown(event: KeyboardEvent, column: ColumnDefinition): void;
1748
1833
  onColumnDrop(event: CdkDragDrop<ColumnDefinition[]>): void;
1749
1834
  onColumnDragStarted(column: ColumnDefinition): void;
1750
1835
  onColumnDragEnded(event: CdkDragEnd<ColumnDefinition>, column: ColumnDefinition): void;
@@ -1781,10 +1866,6 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1781
1866
  * Runs only on initial bootstrap (when columns are derived from schema).
1782
1867
  */
1783
1868
  private applyAutoRenderer;
1784
- /**
1785
- * Check if a value is a valid ColumnDataType
1786
- */
1787
- private isValidColumnDataType;
1788
1869
  /**
1789
1870
  * Infer column data type from field name patterns when API type is not available
1790
1871
  * Refined logic to reduce false positives
@@ -1919,7 +2000,6 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1919
2000
  private isJsonLogicExpression;
1920
2001
  private hasConditionalExpression;
1921
2002
  private resolveRuntimeEnvironment;
1922
- private isDiagnosticsRuntimeEnvironment;
1923
2003
  private logActionConditionFallback;
1924
2004
  getRowClasses(rowData: any): string[] | undefined;
1925
2005
  getRowNgStyle(rowData: any): Record<string, string> | undefined;
@@ -2032,7 +2112,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
2032
2112
  getBadgeClasses(row: any, column: ColumnDefinition): string[];
2033
2113
  getBadgeRichContentNodes(row: any, column: ColumnDefinition): RichBlockNode[];
2034
2114
  shouldRenderBadge(row: any, column: ColumnDefinition): boolean;
2035
- getEffectiveRendererType(row: any, column: ColumnDefinition): 'icon' | 'image' | 'badge' | 'link' | 'button' | 'chip' | 'progress' | 'avatar' | 'toggle' | 'menu' | 'html' | 'compose' | 'rating' | null;
2115
+ getEffectiveRendererType(row: any, column: ColumnDefinition): 'icon' | 'image' | 'badge' | 'link' | 'button' | 'chip' | 'progress' | 'avatar' | 'toggle' | 'menu' | 'html' | 'compose' | 'rating' | 'microVisualization' | null;
2116
+ getMicroVisualizationHtml(row: any, column: ColumnDefinition): SafeHtml;
2117
+ private resolveMicroVisualizationForRow;
2118
+ private applyMicroVisualizationExpression;
2119
+ private evaluateMicroVisualizationExpression;
2036
2120
  getComposeItems(row: any, column: ColumnDefinition): any[];
2037
2121
  trackComposeItem(index: number, item: any): string;
2038
2122
  getComposeClasses(row: any, column: ColumnDefinition): string[];
@@ -2161,6 +2245,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
2161
2245
  private getVirtualizationSources;
2162
2246
  isVirtualized(): boolean;
2163
2247
  getVirtItemHeight(): number;
2248
+ private getDefaultDensityRowHeight;
2164
2249
  getVirtBufferSize(): number;
2165
2250
  getVirtMinHeightStyle(): string;
2166
2251
  getVirtMinHeightHostStyle(): string | null;
@@ -2213,10 +2298,18 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
2213
2298
  private splitVisibleRowActionsFromVisible;
2214
2299
  private decorateConfiguredRowAction;
2215
2300
  private getDiscoveredRowWorkflowActions;
2301
+ private getDiscoveredRowCrudActionsFromSnapshot;
2302
+ private buildDiscoveredRowCrudAction;
2216
2303
  private getDiscoveredRowSurfaceActionsFromSnapshot;
2217
2304
  private getDiscoveredRowWorkflowActionsFromCatalog;
2305
+ private resolveRowCrudCapabilityOperation;
2306
+ private createSyntheticCrudCapabilityOperation;
2218
2307
  private supportsRowCrudAction;
2219
2308
  private isCapabilityManagedCrudRowAction;
2309
+ private getCrudRowActionLabel;
2310
+ private getCrudRowActionIcon;
2311
+ private getCrudRowActionColor;
2312
+ private getUnavailableCrudOperationMessage;
2220
2313
  private findItemWorkflowAction;
2221
2314
  private findItemSurface;
2222
2315
  private isRowSurfaceAction;
@@ -2245,7 +2338,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
2245
2338
  private scheduleRowDiscoveryMarkForCheck;
2246
2339
  ngOnDestroy(): void;
2247
2340
  static ɵfac: i0.ɵɵFactoryDeclaration<PraxisTable, [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }]>;
2248
- 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; }; "configPersistenceStrategy": { "alias": "configPersistenceStrategy"; "required": false; }; "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "autoDelete": { "alias": "autoDelete"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "crudContext": { "alias": "crudContext"; "required": false; }; "filterCriteria": { "alias": "filterCriteria"; "required": false; }; "queryContext": { "alias": "queryContext"; "required": false; }; "aiContext": { "alias": "aiContext"; "required": false; }; "aiAssistantVoiceInputMode": { "alias": "aiAssistantVoiceInputMode"; "required": false; }; "aiAssistantVoiceLanguage": { "alias": "aiAssistantVoiceLanguage"; "required": false; }; "horizontalScroll": { "alias": "horizontalScroll"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "dense": { "alias": "dense"; "required": false; }; }, { "rowClick": "rowClick"; "widgetEvent": "widgetEvent"; "rowDoubleClick": "rowDoubleClick"; "rowExpansionChange": "rowExpansionChange"; "rowAction": "rowAction"; "toolbarAction": "toolbarAction"; "bulkAction": "bulkAction"; "exportAction": "exportAction"; "columnReorder": "columnReorder"; "columnReorderAttempt": "columnReorderAttempt"; "beforeDelete": "beforeDelete"; "afterDelete": "afterDelete"; "deleteError": "deleteError"; "beforeBulkDelete": "beforeBulkDelete"; "afterBulkDelete": "afterBulkDelete"; "bulkDeleteError": "bulkDeleteError"; "schemaStatusChange": "schemaStatusChange"; "configChange": "configChange"; "metadataChange": "metadataChange"; "loadingStateChange": "loadingStateChange"; "collectionLinksChange": "collectionLinksChange"; "selectionChange": "selectionChange"; }, ["toolbar", "projectedFilter"], ["[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]"], true, never>;
2341
+ 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; }; "configPersistenceStrategy": { "alias": "configPersistenceStrategy"; "required": false; }; "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "autoDelete": { "alias": "autoDelete"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "crudContext": { "alias": "crudContext"; "required": false; }; "filterCriteria": { "alias": "filterCriteria"; "required": false; }; "queryContext": { "alias": "queryContext"; "required": false; }; "aiContext": { "alias": "aiContext"; "required": false; }; "aiAssistantVoiceInputMode": { "alias": "aiAssistantVoiceInputMode"; "required": false; }; "aiAssistantVoiceLanguage": { "alias": "aiAssistantVoiceLanguage"; "required": false; }; "horizontalScroll": { "alias": "horizontalScroll"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "dense": { "alias": "dense"; "required": false; }; }, { "rowClick": "rowClick"; "widgetEvent": "widgetEvent"; "rowDoubleClick": "rowDoubleClick"; "rowExpansionChange": "rowExpansionChange"; "rowAction": "rowAction"; "toolbarAction": "toolbarAction"; "bulkAction": "bulkAction"; "exportAction": "exportAction"; "columnReorder": "columnReorder"; "columnReorderAttempt": "columnReorderAttempt"; "columnResize": "columnResize"; "beforeDelete": "beforeDelete"; "afterDelete": "afterDelete"; "deleteError": "deleteError"; "beforeBulkDelete": "beforeBulkDelete"; "afterBulkDelete": "afterBulkDelete"; "bulkDeleteError": "bulkDeleteError"; "schemaStatusChange": "schemaStatusChange"; "configChange": "configChange"; "metadataChange": "metadataChange"; "loadingStateChange": "loadingStateChange"; "collectionLinksChange": "collectionLinksChange"; "selectionChange": "selectionChange"; }, ["toolbar", "projectedFilter"], ["[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]", "[advancedFilter]", "[toolbar]"], true, never>;
2249
2342
  static ngAcceptInputType_enableCustomization: unknown;
2250
2343
  }
2251
2344
 
@@ -3108,6 +3201,7 @@ declare class FilterSettingsComponent implements OnChanges, AfterViewInit, OnDes
3108
3201
  private scrollTrackingRafId;
3109
3202
  readonly layoutPreviewFields: string[];
3110
3203
  private readonly storage;
3204
+ private readonly filterConfigService;
3111
3205
  private readonly settingsPanel;
3112
3206
  private readonly snackBar;
3113
3207
  private readonly destroyRef;
@@ -3297,16 +3391,8 @@ interface RuleGroup {
3297
3391
  }
3298
3392
  type StructuredRuleCondition = JsonLogicExpression | null;
3299
3393
  declare class RuleCompilerService {
3300
- /**
3301
- * Compiles a rule group into a single textual expression string, adding
3302
- * parentheses according to grouping and operator precedence.
3303
- */
3304
- compileGroup(group: RuleGroup): string;
3305
- /** Compiles a single rule atom to a textual expression. */
3306
- compileAtom(atom: RuleAtom): string;
3307
3394
  compileGroupToJsonLogic(group: RuleGroup): StructuredRuleCondition;
3308
3395
  compileAtomToJsonLogic(atom: RuleAtom): JsonLogicExpression | null;
3309
- private stringify;
3310
3396
  private toJsonLogicValue;
3311
3397
  private toList;
3312
3398
  static ɵfac: i0.ɵɵFactoryDeclaration<RuleCompilerService, never>;
@@ -3342,6 +3428,11 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
3342
3428
  manualMode: boolean;
3343
3429
  manualErrors: string[];
3344
3430
  testSummary: string;
3431
+ normalizationWarning: string;
3432
+ importStatus: {
3433
+ type: 'success' | 'warning' | 'error';
3434
+ message: string;
3435
+ } | null;
3345
3436
  editIndex: number;
3346
3437
  get currentRules(): RuleItem[];
3347
3438
  set currentRules(v: RuleItem[]);
@@ -3408,6 +3499,7 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
3408
3499
  removeRule(index: number): void;
3409
3500
  duplicateRule(index: number): void;
3410
3501
  onRuleToggle(): void;
3502
+ private emitRulesConfigChange;
3411
3503
  buildAppliedConfig(baseConfig?: TableConfig): TableConfig;
3412
3504
  onApply(): void;
3413
3505
  isValid(): boolean;
@@ -3508,9 +3600,14 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
3508
3600
  onDropCondition(evt: CdkDragDrop<RuleAtom[]>): void;
3509
3601
  updateDraftFromGroup(): void;
3510
3602
  getAtomPreview(a: RuleAtom): string;
3603
+ private stringifyJsonLogicPreview;
3604
+ private stringifyJsonLogicInlinePreview;
3511
3605
  addSubgroup(): void;
3512
3606
  removeSubgroup(index: number): void;
3513
3607
  getGroupPreview(g: RuleGroup): string;
3608
+ private isNumericFieldType;
3609
+ private parseNumericCsv;
3610
+ private toFiniteNumber;
3514
3611
  private getActiveGroupRef;
3515
3612
  static ɵfac: i0.ɵɵFactoryDeclaration<TableRulesEditorComponent, [null, null, null, null, null, { optional: true; }]>;
3516
3613
  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>;