@praxisui/table 9.0.0-beta.27 → 9.0.0-beta.29

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,7 +1,7 @@
1
1
  import { firstValueFrom } from 'rxjs';
2
2
  import { BaseAiAdapter, sanitizePraxisAssistantText, createComponentAuthoringContext } from '@praxisui/ai';
3
3
  import { PRAXIS_GLOBAL_ACTION_CATALOG, deepMerge } from '@praxisui/core';
4
- import { G as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, k as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, W as coerceTableComponentEditPlans, Y as compileTableComponentEditPlans, I as TASK_PRESETS, a1 as getTableComponentEditPlanCapabilities, y as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, w as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, z as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, H as TABLE_COMPONENT_EDIT_PLAN_VERSION, x as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, E as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-mNsK6DE9.mjs';
4
+ import { G as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, k as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, W as coerceTableComponentEditPlans, Y as compileTableComponentEditPlans, I as TASK_PRESETS, a1 as getTableComponentEditPlanCapabilities, y as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, w as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, z as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, H as TABLE_COMPONENT_EDIT_PLAN_VERSION, x as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, E as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-IVMOBeVU.mjs';
5
5
 
6
6
  const TABLE_ROW_EXPRESSION_CONTEXT_OPTION = {
7
7
  mode: 'expression',
@@ -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 PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, n as PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, o as PraxisFilter, p as PraxisFilterWidgetConfigEditor, q as PraxisTable, r as PraxisTableConfigEditor, s as PraxisTableInlineAuthoringEditorComponent, t as PraxisTableToolbar, u as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, v as TABLE_COMPONENT_AI_CAPABILITIES, w as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, x as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, y as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, z as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, E as TABLE_COMPONENT_EDIT_PLAN_KIND, H as TABLE_COMPONENT_EDIT_PLAN_VERSION, I as TASK_PRESETS, K as TableDefaultsProvider, L as TableRulesEditorComponent, O as ToolbarActionsEditorComponent, V as ValueMappingEditorComponent, Q as VisualFormulaBuilderComponent, R as buildTableApplyPlan, U as coerceTableComponentEditPlan, W as coerceTableComponentEditPlans, X as compileTableComponentEditPlan, Y as compileTableComponentEditPlans, Z as createTableAuthoringDocument, _ as getActionId, $ as getEnum, a0 as getTableCapabilities, a1 as getTableComponentEditPlanCapabilities, a2 as isTableRendererSupportedByRichContentP0, a3 as mapTableRendererToRichContentP0, a4 as normalizeTableAuthoringDocument, a5 as parseLegacyOrTableDocument, a6 as providePraxisFilterMetadata, a7 as providePraxisTableMetadata, a8 as providePraxisTableToolbarAppearance, a9 as serializeTableAuthoringDocument, aa as toCanonicalTableConfig, ab as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-mNsK6DE9.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 PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, n as PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, o as PraxisFilter, p as PraxisFilterWidgetConfigEditor, q as PraxisTable, r as PraxisTableConfigEditor, s as PraxisTableInlineAuthoringEditorComponent, t as PraxisTableToolbar, u as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, v as TABLE_COMPONENT_AI_CAPABILITIES, w as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, x as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, y as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, z as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, E as TABLE_COMPONENT_EDIT_PLAN_KIND, H as TABLE_COMPONENT_EDIT_PLAN_VERSION, I as TASK_PRESETS, K as TableDefaultsProvider, L as TableRulesEditorComponent, O as ToolbarActionsEditorComponent, V as ValueMappingEditorComponent, Q as VisualFormulaBuilderComponent, R as buildTableApplyPlan, U as coerceTableComponentEditPlan, W as coerceTableComponentEditPlans, X as compileTableComponentEditPlan, Y as compileTableComponentEditPlans, Z as createTableAuthoringDocument, _ as getActionId, $ as getEnum, a0 as getTableCapabilities, a1 as getTableComponentEditPlanCapabilities, a2 as isTableRendererSupportedByRichContentP0, a3 as mapTableRendererToRichContentP0, a4 as normalizeTableAuthoringDocument, a5 as parseLegacyOrTableDocument, a6 as providePraxisFilterMetadata, a7 as providePraxisTableMetadata, a8 as providePraxisTableToolbarAppearance, a9 as serializeTableAuthoringDocument, aa as toCanonicalTableConfig, ab as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-IVMOBeVU.mjs';
package/package.json CHANGED
@@ -1,24 +1,24 @@
1
1
  {
2
2
  "name": "@praxisui/table",
3
- "version": "9.0.0-beta.27",
3
+ "version": "9.0.0-beta.29",
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
8
  "@angular/platform-browser": "^21.0.0",
9
- "@praxisui/ai": "^9.0.0-beta.27",
10
- "@praxisui/core": "^9.0.0-beta.27",
11
- "@praxisui/dynamic-fields": "^9.0.0-beta.27",
12
- "@praxisui/dynamic-form": "^9.0.0-beta.27",
13
- "@praxisui/metadata-editor": "^9.0.0-beta.27",
14
- "@praxisui/rich-content": "^9.0.0-beta.27",
15
- "@praxisui/settings-panel": "^9.0.0-beta.27",
16
- "@praxisui/table-rule-builder": "^9.0.0-beta.27",
9
+ "@praxisui/ai": "^9.0.0-beta.29",
10
+ "@praxisui/core": "^9.0.0-beta.29",
11
+ "@praxisui/dynamic-fields": "^9.0.0-beta.29",
12
+ "@praxisui/dynamic-form": "^9.0.0-beta.29",
13
+ "@praxisui/metadata-editor": "^9.0.0-beta.29",
14
+ "@praxisui/rich-content": "^9.0.0-beta.29",
15
+ "@praxisui/settings-panel": "^9.0.0-beta.29",
16
+ "@praxisui/table-rule-builder": "^9.0.0-beta.29",
17
17
  "@angular/cdk": "^21.0.0",
18
18
  "@angular/forms": "^21.0.0",
19
19
  "@angular/material": "^21.0.0",
20
20
  "@angular/router": "^21.0.0",
21
- "@praxisui/dialog": "^9.0.0-beta.27",
21
+ "@praxisui/dialog": "^9.0.0-beta.29",
22
22
  "rxjs": "~7.8.0"
23
23
  },
24
24
  "dependencies": {
@@ -340,8 +340,10 @@ Este arquivo foi adaptado para o padrao canonico atual sem remover conteudo tecn
340
340
 
341
341
  Quando `actions.row.discovery.enabled` esta ativo e o item publica
342
342
  capabilities CRUD canonicas, `PraxisTable` pode sintetizar entradas
343
- contextuais `view`, `edit` e `delete`. Essas entradas continuam sendo
344
- CRUD capabilities, nao workflow actions: o clique emite `rowAction` com
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
345
347
  `actionConfig` apontando para a capability, para que um contexto CRUD ou
346
348
  host composto materialize a operacao.
347
349
 
@@ -433,13 +435,14 @@ degraded filter.
433
435
  | `rowClick` | `{ row, index }` | Clique em linha. | Partial | Preservado da documentação anterior. |
434
436
  | `rowDoubleClick` | `{ action, row }` | Duplo clique quando habilitado. | Partial | Preservado da documentação anterior. |
435
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. |
436
- | `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` vindos de capabilities, `actionConfig` carrega a operacao canonica e o host composto deve encaminhar ao contexto CRUD apropriado. | 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. |
437
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. |
438
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`. |
439
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`. |
440
442
  | `bulkAction` | `{ action, rows, actionConfig? }` | Acao em lote; `actionConfig` carrega a configuracao da acao quando disponivel. | Partial | Preservado da documentação anterior. |
441
443
  | `columnReorder` | `ColumnReorderEvent` | Reordenação de coluna concluída (drag/keyboard). | Partial | Inclui metadados de origem, destino e operação. |
442
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. |
443
446
  | `beforeDelete` | `row` | Antes de delete de linha. | Partial | Preservado da documentação anterior. |
444
447
  | `afterDelete` | `row` | Depois de delete com sucesso. | Partial | Preservado da documentação anterior. |
445
448
  | `deleteError` | `{ row, error }` | Erro no delete de linha. | Partial | Preservado da documentação anterior. |
@@ -948,6 +951,7 @@ row selection through table affordances.
948
951
  | `bulkAction` | `{ action, rows, actionConfig? }` | Acao em lote; `actionConfig` carrega a configuracao da acao quando disponivel. | Partial | Preservado da documentação anterior. |
949
952
  | `columnReorder` | `{ action, trigger: 'drag' \ | 'keyboard' \ | Partial | Preservado da documentação anterior. |
950
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. |
951
955
  | `beforeDelete` | `row` | Antes de delete de linha. | Partial | Preservado da documentação anterior. |
952
956
  | `afterDelete` | `row` | Depois de delete com sucesso. | Partial | Preservado da documentação anterior. |
953
957
  | `deleteError` | `{ row, error }` | Erro no delete de linha. | Partial | Preservado da documentação anterior. |
@@ -966,23 +970,16 @@ row selection through table affordances.
966
970
  | `--p-table-row-selected-bg` | row selecionada |
967
971
  | `--p-table-row-height` | altura da linha; sobrescreve o default do preset de densidade |
968
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 |
969
977
  | `--p-header-padding` | padding do header |
970
978
  | `--p-cell-padding` | padding das células; sobrescreve o default do preset de densidade |
971
979
  | `--p-header-font-size` | fonte do header |
972
980
  | `--p-header-font-weight` | peso do header |
973
981
  | `--p-header-letter-spacing` | tracking do header |
974
982
  | `--p-header-text-transform` | caixa do texto do header |
975
- | `--p-table-drag-handle-size` | tamanho do handle de drag (preset padrao do runtime) |
976
- | `--p-table-drag-handle-color` | cor do handle de drag |
977
- | `--p-table-drag-handle-base-opacity` | opacidade base do handle em repouso |
978
- | `--p-table-drag-handle-idle-bg` | fundo base do handle em repouso |
979
- | `--p-table-drag-handle-idle-border` | borda base do handle em repouso |
980
- | `--p-table-drag-handle-hover-bg` | fundo do handle em hover/focus |
981
- | `--p-table-drag-handle-hover-border` | borda do handle em hover/focus |
982
- | `--p-table-drag-handle-active-bg` | fundo do handle em estado ativo |
983
- | `--p-table-drag-handle-active-border` | borda do handle em estado ativo |
984
- | `--p-table-drag-handle-focus-ring` | cor do anel de foco do handle |
985
- | `--p-table-drag-handle-transition-duration` | duracao das transicoes do handle |
986
983
  | `--p-table-reorder-transition-duration` | duracao da animacao de reorder das colunas |
987
984
  | `--p-table-drag-preview-scale` | escala visual do preview durante drag |
988
985
  | `--p-table-drag-preview-shadow` | sombra do preview durante drag |
@@ -1011,6 +1008,8 @@ row selection through table affordances.
1011
1008
  | `col-borders` | bordas verticais entre colunas |
1012
1009
  | `pfx-column-drag-enabled` | habilita layout base de DnD de colunas |
1013
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 |
1014
1013
 
1015
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.
1016
1015
 
@@ -1246,6 +1245,7 @@ matching on row values must not decide primary intent.
1246
1245
  | `density-compact` / `density-comfortable` / `density-spacious` | host classes | controle de densidade visual | Derivadas de `appearance.density`. |
1247
1246
  | `.pfx-column-drag-enabled` | host class | habilita feedback visual de reordenacao | Ativada quando contrato de reorder esta habilitado. |
1248
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. |
1249
1249
 
1250
1250
  ### Fallback global de aparencia
1251
1251
 
@@ -1086,6 +1086,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1086
1086
  exportAction: EventEmitter<any>;
1087
1087
  columnReorder: EventEmitter<any>;
1088
1088
  columnReorderAttempt: EventEmitter<any>;
1089
+ columnResize: EventEmitter<any>;
1089
1090
  beforeDelete: EventEmitter<any>;
1090
1091
  afterDelete: EventEmitter<any>;
1091
1092
  deleteError: EventEmitter<any>;
@@ -1127,8 +1128,17 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1127
1128
  private columnReorderStatusTimer;
1128
1129
  private columnReorderVisualStatusTimer;
1129
1130
  private columnReorderUndoSubscription;
1130
- private columnReorderOperationCounter;
1131
- private latestColumnReorderOperationId;
1131
+ private columnRuntimeMutationOperationCounter;
1132
+ private latestColumnRuntimeMutationOperationId;
1133
+ private columnResizeTransientWidths;
1134
+ private columnResizeTableWidthStyle;
1135
+ private columnResizeLayoutSignature;
1136
+ private isApplyingColumnResizeLayoutMutation;
1137
+ private activeColumnResize;
1138
+ private readonly columnResizePointerMoveListener;
1139
+ private readonly columnResizePointerUpListener;
1140
+ private readonly columnResizePointerCancelListener;
1141
+ private readonly columnResizeKeydownListener;
1132
1142
  localSource: any[];
1133
1143
  localView: any[];
1134
1144
  localTotal: number;
@@ -1202,9 +1212,12 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1202
1212
  getRowActionsWidthStyle(): string | null;
1203
1213
  getColumnTextAlignStyle(column: ColumnDefinition): string | null;
1204
1214
  getColumnWidthStyle(column: ColumnDefinition): string | null;
1215
+ getColumnResizeTableWidthStyle(): string | null;
1205
1216
  getColumnHeaderAttrStyle(column: ColumnDefinition): string | null;
1206
1217
  getColumnHeaderNgStyle(column: ColumnDefinition): Record<string, string> | undefined;
1207
1218
  getColumnCellAttrStyle(column: ColumnDefinition): string | null;
1219
+ private mergeColumnWidthIntoInlineStyle;
1220
+ private buildColumnWidthInlineStyle;
1208
1221
  getTableElevationClassName(): string;
1209
1222
  private normalizeTableElevationLevel;
1210
1223
  private resolveRuntimeTableElevationLevel;
@@ -1363,6 +1376,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1363
1376
  private normalizePersistedExportFormats;
1364
1377
  private normalizePersistedRowActionIds;
1365
1378
  private normalizePersistedColumnIds;
1379
+ private columnIdentitySetChanged;
1366
1380
  private clonePlainObject;
1367
1381
  private setShowToolbar;
1368
1382
  private shouldExposeToolbar;
@@ -1746,6 +1760,46 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1746
1760
  isColumnDraggingEnabled(): boolean;
1747
1761
  isColumnDragIndicatorEnabled(): boolean;
1748
1762
  isColumnDraggable(column: ColumnDefinition | null | undefined): boolean;
1763
+ isColumnResizeEnabled(): boolean;
1764
+ isColumnResizable(column: ColumnDefinition | null | undefined): boolean;
1765
+ isColumnResizeActive(column?: ColumnDefinition | null): boolean;
1766
+ getColumnResizeHandleAriaLabel(column: ColumnDefinition): string;
1767
+ getColumnResizeHandleTooltip(column: ColumnDefinition): string;
1768
+ getColumnResizeMinWidthAriaValue(column: ColumnDefinition): number;
1769
+ getColumnResizeMaxWidthAriaValue(column: ColumnDefinition): number | null;
1770
+ getColumnResizeCurrentWidthAriaValue(column: ColumnDefinition): number | null;
1771
+ onColumnResizeHandleClick(event: MouseEvent): void;
1772
+ onColumnResizeHandleKeydown(event: KeyboardEvent, column: ColumnDefinition): void;
1773
+ onColumnResizePointerDown(event: PointerEvent, column: ColumnDefinition): void;
1774
+ private onColumnResizePointerMove;
1775
+ private onColumnResizePointerUp;
1776
+ private onColumnResizePointerCancel;
1777
+ private onColumnResizeDocumentKeydown;
1778
+ private addColumnResizeDocumentListeners;
1779
+ private removeColumnResizeDocumentListeners;
1780
+ private cancelColumnResize;
1781
+ private commitColumnResize;
1782
+ private applyColumnResizeWidth;
1783
+ private emitAndPersistColumnResize;
1784
+ private updateConfigColumnWidth;
1785
+ private updateConfigColumnWidths;
1786
+ private updateColumnResizeTableWidthFromDelta;
1787
+ private captureColumnResizeLockedWidths;
1788
+ private resolveColumnResizeTableWidthPx;
1789
+ private resolveColumnWidthPx;
1790
+ private parseColumnResizePixelWidth;
1791
+ private normalizeColumnResizeWidthStyle;
1792
+ private clampColumnWidthPx;
1793
+ private resolveColumnResizeEffectiveMinWidthPx;
1794
+ private resolveColumnResizeMinWidthPx;
1795
+ private resolveColumnResizeMaxWidthPx;
1796
+ private normalizeColumnResizeConfigWidths;
1797
+ private runColumnResizeLayoutMutation;
1798
+ private reconcileColumnResizeLayoutState;
1799
+ private clearColumnResizeLayoutState;
1800
+ private createColumnResizeLayoutSignature;
1801
+ private formatColumnWidthPx;
1802
+ private isTableRtl;
1749
1803
  private resolveColumnReorderHeader;
1750
1804
  private isEnglishLocale;
1751
1805
  private isEnglishLocaleValue;
@@ -1762,9 +1816,11 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
1762
1816
  private emitColumnReorderAttempt;
1763
1817
  private createColumnReorderOperationId;
1764
1818
  private isLatestColumnReorderOperation;
1819
+ private createColumnRuntimeMutationOperationId;
1820
+ private isLatestColumnRuntimeMutationOperation;
1765
1821
  private offerColumnReorderUndo;
1766
1822
  private restoreColumnOrderFromUndo;
1767
- onColumnDragHandleKeydown(event: KeyboardEvent, column: ColumnDefinition): void;
1823
+ onColumnHeaderReorderKeydown(event: KeyboardEvent, column: ColumnDefinition): void;
1768
1824
  onColumnDrop(event: CdkDragDrop<ColumnDefinition[]>): void;
1769
1825
  onColumnDragStarted(column: ColumnDefinition): void;
1770
1826
  onColumnDragEnded(event: CdkDragEnd<ColumnDefinition>, column: ColumnDefinition): void;
@@ -2273,7 +2329,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
2273
2329
  private scheduleRowDiscoveryMarkForCheck;
2274
2330
  ngOnDestroy(): void;
2275
2331
  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; }]>;
2276
- 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>;
2332
+ 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>;
2277
2333
  static ngAcceptInputType_enableCustomization: unknown;
2278
2334
  }
2279
2335
 
@@ -3326,16 +3382,8 @@ interface RuleGroup {
3326
3382
  }
3327
3383
  type StructuredRuleCondition = JsonLogicExpression | null;
3328
3384
  declare class RuleCompilerService {
3329
- /**
3330
- * Compiles a rule group into a single textual expression string, adding
3331
- * parentheses according to grouping and operator precedence.
3332
- */
3333
- compileGroup(group: RuleGroup): string;
3334
- /** Compiles a single rule atom to a textual expression. */
3335
- compileAtom(atom: RuleAtom): string;
3336
3385
  compileGroupToJsonLogic(group: RuleGroup): StructuredRuleCondition;
3337
3386
  compileAtomToJsonLogic(atom: RuleAtom): JsonLogicExpression | null;
3338
- private stringify;
3339
3387
  private toJsonLogicValue;
3340
3388
  private toList;
3341
3389
  static ɵfac: i0.ɵɵFactoryDeclaration<RuleCompilerService, never>;
@@ -3371,6 +3419,11 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
3371
3419
  manualMode: boolean;
3372
3420
  manualErrors: string[];
3373
3421
  testSummary: string;
3422
+ normalizationWarning: string;
3423
+ importStatus: {
3424
+ type: 'success' | 'warning' | 'error';
3425
+ message: string;
3426
+ } | null;
3374
3427
  editIndex: number;
3375
3428
  get currentRules(): RuleItem[];
3376
3429
  set currentRules(v: RuleItem[]);
@@ -3437,6 +3490,7 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
3437
3490
  removeRule(index: number): void;
3438
3491
  duplicateRule(index: number): void;
3439
3492
  onRuleToggle(): void;
3493
+ private emitRulesConfigChange;
3440
3494
  buildAppliedConfig(baseConfig?: TableConfig): TableConfig;
3441
3495
  onApply(): void;
3442
3496
  isValid(): boolean;
@@ -3537,9 +3591,14 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
3537
3591
  onDropCondition(evt: CdkDragDrop<RuleAtom[]>): void;
3538
3592
  updateDraftFromGroup(): void;
3539
3593
  getAtomPreview(a: RuleAtom): string;
3594
+ private stringifyJsonLogicPreview;
3595
+ private stringifyJsonLogicInlinePreview;
3540
3596
  addSubgroup(): void;
3541
3597
  removeSubgroup(index: number): void;
3542
3598
  getGroupPreview(g: RuleGroup): string;
3599
+ private isNumericFieldType;
3600
+ private parseNumericCsv;
3601
+ private toFiniteNumber;
3543
3602
  private getActiveGroupRef;
3544
3603
  static ɵfac: i0.ɵɵFactoryDeclaration<TableRulesEditorComponent, [null, null, null, null, null, { optional: true; }]>;
3545
3604
  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>;