@praxisui/table 10.0.0-rc.25 → 10.0.0-rc.26

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,6 +1,6 @@
1
1
  import { Observable, firstValueFrom } from 'rxjs';
2
2
  import { withAuthoringScopePolicy } from '@praxisui/ai';
3
- import { ar as setTableActionGlobalActionRef } from './praxisui-table-praxisui-table-B6XoXX5x.mjs';
3
+ import { ar as setTableActionGlobalActionRef } from './praxisui-table-praxisui-table-YnI6Bi6b.mjs';
4
4
 
5
5
  class TableAgenticAuthoringTurnFlow {
6
6
  adapter;
@@ -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 { W as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, p as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, a6 as coerceTableComponentEditPlans, a8 as compileTableComponentEditPlans, Y as TASK_PRESETS, ae as getTableComponentEditPlanCapabilities, R as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, O as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, U as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, X as TABLE_COMPONENT_EDIT_PLAN_VERSION, Q as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, V as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-B6XoXX5x.mjs';
4
+ import { W as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, p as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, a6 as coerceTableComponentEditPlans, a8 as compileTableComponentEditPlans, Y as TASK_PRESETS, ae as getTableComponentEditPlanCapabilities, R as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, O as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, U as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, X as TABLE_COMPONENT_EDIT_PLAN_VERSION, Q as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, V as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-YnI6Bi6b.mjs';
5
5
 
6
6
  const TABLE_ROW_EXPRESSION_CONTEXT_OPTION = {
7
7
  mode: 'expression',
@@ -1,2 +1,2 @@
1
- export { A as ANALYTICS_TABLE_ROW_KEY_FIELD, a as AnalyticalDrawerRegistryService, b as AnalyticsTableConfigAdapterService, c as AnalyticsTableContractService, d as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, e as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, f as ColumnsConfigEditorComponent, D as DATE_PRESETS, g as DataFormatterComponent, h as DataFormattingService, F as FORMULA_TEMPLATES, i as FilterConfigService, j as FilterSettingsComponent, k as FormulaGeneratorService, J as JsonConfigEditorComponent, M as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, P as PERCENTAGE_PRESETS, l as PRAXIS_ANALYTICAL_DRAWER_SCHEMAS, m as PRAXIS_FILTER_AUTHORING_MANIFEST, n as PRAXIS_FILTER_COMPONENT_METADATA, o as PRAXIS_FILTER_VIEW_CONTEXT_SCHEMA_VERSION, p as PRAXIS_TABLE_AUTHORING_MANIFEST, q as PRAXIS_TABLE_COMPONENT_METADATA, r as PRAXIS_TABLE_TOOLBAR_APPEARANCE_PRESETS, s as PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, t as PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, u as PraxisAnalyticalDrawerComponent, v as PraxisFilter, w as PraxisFilterOutletComponent, x as PraxisFilterOutletDirective, y as PraxisFilterWidgetConfigEditor, z as PraxisScopeBarComponent, E as PraxisTable, G as PraxisTableConfigEditor, H as PraxisTableInlineAuthoringEditorComponent, I as PraxisTableToolbar, K as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, L as TABLE_COMPONENT_AI_CAPABILITIES, O as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, Q as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, R as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, U as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, V as TABLE_COMPONENT_EDIT_PLAN_KIND, X as TABLE_COMPONENT_EDIT_PLAN_VERSION, Y as TASK_PRESETS, Z as TableDefaultsProvider, _ as TableRulesEditorComponent, $ as ToolbarActionsEditorComponent, a0 as ValueMappingEditorComponent, a1 as VisualFormulaBuilderComponent, a2 as analyticsComparisonMetricField, a3 as applyComputedFieldsToRows, a4 as buildTableApplyPlan, a5 as coerceTableComponentEditPlan, a6 as coerceTableComponentEditPlans, a7 as compileTableComponentEditPlan, a8 as compileTableComponentEditPlans, a9 as createTableAuthoringDocument, aa as formatComputedFieldValue, ab as getActionId, ac as getEnum, ad as getTableCapabilities, ae as getTableComponentEditPlanCapabilities, af as interpolateRelationEndpoint, ag as isAnalyticalDrawerSchema, ah as isTableRendererSupportedByRichContentP0, ai as mapTableRendererToRichContentP0, aj as normalizeComputedFieldDefinition, ak as normalizeTableAuthoringDocument, al as parseLegacyOrTableDocument, am as providePraxisAnalyticalDrawerSchemas, an as providePraxisFilterMetadata, ao as providePraxisTableMetadata, ap as providePraxisTableToolbarAppearance, aq as serializeTableAuthoringDocument, as as toCanonicalTableConfig, at as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-B6XoXX5x.mjs';
1
+ export { A as ANALYTICS_TABLE_ROW_KEY_FIELD, a as AnalyticalDrawerRegistryService, b as AnalyticsTableConfigAdapterService, c as AnalyticsTableContractService, d as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, e as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, f as ColumnsConfigEditorComponent, D as DATE_PRESETS, g as DataFormatterComponent, h as DataFormattingService, F as FORMULA_TEMPLATES, i as FilterConfigService, j as FilterSettingsComponent, k as FormulaGeneratorService, J as JsonConfigEditorComponent, M as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, P as PERCENTAGE_PRESETS, l as PRAXIS_ANALYTICAL_DRAWER_SCHEMAS, m as PRAXIS_FILTER_AUTHORING_MANIFEST, n as PRAXIS_FILTER_COMPONENT_METADATA, o as PRAXIS_FILTER_VIEW_CONTEXT_SCHEMA_VERSION, p as PRAXIS_TABLE_AUTHORING_MANIFEST, q as PRAXIS_TABLE_COMPONENT_METADATA, r as PRAXIS_TABLE_TOOLBAR_APPEARANCE_PRESETS, s as PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, t as PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, u as PraxisAnalyticalDrawerComponent, v as PraxisFilter, w as PraxisFilterOutletComponent, x as PraxisFilterOutletDirective, y as PraxisFilterWidgetConfigEditor, z as PraxisScopeBarComponent, E as PraxisTable, G as PraxisTableConfigEditor, H as PraxisTableInlineAuthoringEditorComponent, I as PraxisTableToolbar, K as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, L as TABLE_COMPONENT_AI_CAPABILITIES, O as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, Q as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, R as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, U as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, V as TABLE_COMPONENT_EDIT_PLAN_KIND, X as TABLE_COMPONENT_EDIT_PLAN_VERSION, Y as TASK_PRESETS, Z as TableDefaultsProvider, _ as TableRulesEditorComponent, $ as ToolbarActionsEditorComponent, a0 as ValueMappingEditorComponent, a1 as VisualFormulaBuilderComponent, a2 as analyticsComparisonMetricField, a3 as applyComputedFieldsToRows, a4 as buildTableApplyPlan, a5 as coerceTableComponentEditPlan, a6 as coerceTableComponentEditPlans, a7 as compileTableComponentEditPlan, a8 as compileTableComponentEditPlans, a9 as createTableAuthoringDocument, aa as formatComputedFieldValue, ab as getActionId, ac as getEnum, ad as getTableCapabilities, ae as getTableComponentEditPlanCapabilities, af as interpolateRelationEndpoint, ag as isAnalyticalDrawerSchema, ah as isTableRendererSupportedByRichContentP0, ai as mapTableRendererToRichContentP0, aj as normalizeComputedFieldDefinition, ak as normalizeTableAuthoringDocument, al as parseLegacyOrTableDocument, am as providePraxisAnalyticalDrawerSchemas, an as providePraxisFilterMetadata, ao as providePraxisTableMetadata, ap as providePraxisTableToolbarAppearance, aq as serializeTableAuthoringDocument, as as toCanonicalTableConfig, at as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-YnI6Bi6b.mjs';
2
2
  export { createDynamicRecord, extractRecordId, isDynamicDataRecord, resolveDataField } from '@praxisui/core';
package/package.json CHANGED
@@ -1,24 +1,24 @@
1
1
  {
2
2
  "name": "@praxisui/table",
3
- "version": "10.0.0-rc.25",
3
+ "version": "10.0.0-rc.26",
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": "^10.0.0-rc.25",
10
- "@praxisui/core": "^10.0.0-rc.25",
11
- "@praxisui/dynamic-fields": "^10.0.0-rc.25",
12
- "@praxisui/dynamic-form": "^10.0.0-rc.25",
13
- "@praxisui/metadata-editor": "^10.0.0-rc.25",
14
- "@praxisui/rich-content": "^10.0.0-rc.25",
15
- "@praxisui/settings-panel": "^10.0.0-rc.25",
16
- "@praxisui/table-rule-builder": "^10.0.0-rc.25",
9
+ "@praxisui/ai": "^10.0.0-rc.26",
10
+ "@praxisui/core": "^10.0.0-rc.26",
11
+ "@praxisui/dynamic-fields": "^10.0.0-rc.26",
12
+ "@praxisui/dynamic-form": "^10.0.0-rc.26",
13
+ "@praxisui/metadata-editor": "^10.0.0-rc.26",
14
+ "@praxisui/rich-content": "^10.0.0-rc.26",
15
+ "@praxisui/settings-panel": "^10.0.0-rc.26",
16
+ "@praxisui/table-rule-builder": "^10.0.0-rc.26",
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": "^10.0.0-rc.25",
21
+ "@praxisui/dialog": "^10.0.0-rc.26",
22
22
  "rxjs": "~7.8.0"
23
23
  },
24
24
  "dependencies": {
@@ -109,11 +109,16 @@ Este documento e a referencia canonica da API JSON de praxis-table.
109
109
  > [!WARNING]
110
110
  > **Segurança Corporativa em Cenários Corporativos**: A visibilidade de colunas via dropdown da toolbar é um recurso estritamente visual (layout de apresentação do lado do cliente). A ocultação de colunas **não** protege o dado sensível da transmissão de rede nem de inspeção técnica. Se determinados campos (ex: salários, senhas ou tokens) forem confidenciais para o nível de permissão do usuário atual, a restrição de dados deve ser realizada obrigatoriamente no lado do servidor (através da filtragem de propriedades nas APIs de CRUD e consulta), e nunca por meio de ocultação puramente visual na tabela.
111
111
 
112
- ## Quick filters and density
113
-
114
- - `config.toolbar.filters.quickFilters[]` materializa um pequeno seletor de escopo na toolbar. Cada item declara `id`, `label`, `filter` e `icon` opcional. O runtime mantém no máximo um item ativo; acionar novamente o item atual restaura os critérios anteriores.
115
- - O filtro rápido é combinado com os critérios já ativos. Ao desativá-lo, a tabela restaura os critérios anteriores sem perder o contexto do operador.
116
- - Aplicar ou limpar o formulário de filtros avançados encerra o estado visual do filtro rápido para evitar dois controles aparentarem governar critérios divergentes.
112
+ ## Quick filters, unified filter region, and density
113
+
114
+ - **Região única de filtros e dono explícito da consulta**: Em telas de coleção com `praxis-table`, a própria tabela é a dona canônica dos filtros editáveis pelo usuário. Quando um campo (ex.: `ativo` / `status`) é governado por `config.toolbar.filters.quickFilters[]`, evite duplicá-lo em `alwaysVisibleFields` (mantenha-o apenas nos escopos rápidos e opcionalmente na gaveta avançada `selectedFieldIds`).
115
+ - `config.toolbar.filters.quickFilters[]` materializa um seletor de escopo governado na toolbar. Cada item declara `id`, `label`, `filter` e `icon` opcional.
116
+ - Um item com `filter: {}` representa o escopo **"Todos"** (sem restrição editável): acioná-lo limpa critérios editáveis anteriores em `filterCriteria` e em `queryContext.filters` não estruturais sem exigir reload da página.
117
+ - Critérios booleanos explícitos `false` (ex.: `{ ativo: false }`) são preservados integralmente na serialização remota e na avaliação local.
118
+ - **Reconciliação de atalhos externos (`queryContext.filters`) vs. filtros estruturais (`queryContext.meta`)**:
119
+ - Quando cards de KPI ou widgets externos aplicam um filtro editável via `queryContext.filters` (ex.: `{ ativo: true }`), a tabela sincroniza `advancedFilterValue`, `activeCrossFilters` e `activeQuickFilterId` correspondente.
120
+ - Se o operador alterar o escopo rápido (`onQuickFilterChange`), submeter/limpar os filtros da tabela (`onAdvancedFilterSubmit` / `onAdvancedFilterClear`) ou remover chips (`onClearCrossFilter` / `onClearAllCrossFilters`), a tabela reconcilia as chaves editáveis em `queryContext.filters` e emite `queryContextChange` e `queryContextClear`, impedindo que `queryContext.filters` órfãos continuem sobrescrevendo `filterCriteria`.
121
+ - Filtros estruturais de contexto (`queryContext.meta.relatedResource === true` + `parentFilterField`, `queryContext.meta.structuralFields`, `queryContext.meta.immutableFields` ou `queryContext.meta.structural === true`) permanecem protegidos e nunca são limpos por ações de filtro do usuário.
117
122
  - A composição adaptativa é responsabilidade do runtime: identidade, escopo, consulta e comandos se reorganizam pela largura do container da tabela. Dentro da consulta, campos editáveis formam a região de critérios; tags/atalhos salvos e comandos de gerenciamento formam um único cluster auxiliar. Em largura intermediária, os critérios e esse cluster completo compartilham o mesmo fluxo de quebra para aproveitar a faixa final sem criar uma linha órfã; em largura estreita, o cluster migra inteiro para a faixa seguinte. O host não precisa declarar coordenadas, breakpoints ou ordem visual adicional.
118
123
  - Em superfícies de até `640px`, os campos de consulta absorvem o espaço residual da própria linha até o limite do arquétipo; em `320px`, entradas que não cabem em pares ocupam a largura útil integral. Presets e comandos curtos preservam largura intrínseca. Grupos binários de filtros rápidos equilibram as duas opções em até `540px`, enquanto grupos maiores mantêm largura por conteúdo e overflow acessível.
119
124
  - `advancedFilters.settings.alwaysVisibleFields` deve conter apenas critérios frequentes. Atalhos persistidos e comandos de gerenciamento não devem ser simulados como campos sempre visíveis nem reposicionados por seletores CSS internos do host.
@@ -93,7 +93,7 @@ interface PraxisTableQueryContextClearEvent {
93
93
  remainingFilters?: Record<string, unknown>;
94
94
  remainingFilterCount?: number;
95
95
  tableId?: string;
96
- source?: 'toolbar-chip';
96
+ source?: 'toolbar-chip' | 'quick-filter' | 'advanced-filter';
97
97
  }
98
98
  declare const PRAXIS_TABLE_TOOLBAR_APPEARANCE_PRESETS: Record<string, TableToolbarAppearanceConfig>;
99
99
  declare const PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE: InjectionToken<TableToolbarAppearanceConfig>;
@@ -1851,6 +1851,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
1851
1851
  private hasDeclaredAppearanceSection;
1852
1852
  private shouldApplyAppearanceDefaultValue;
1853
1853
  private mergePersistedTableConfigWithInput;
1854
+ private reconcileTableConfigInputChange;
1854
1855
  private reconcileHostDeclaredTableContract;
1855
1856
  private reconcileHostDeclaredColumns;
1856
1857
  private reconcileHostDeclaredRowActions;
@@ -1977,6 +1978,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
1977
1978
  private hasActiveEmptyStateFilters;
1978
1979
  private hasMeaningfulFilterCriteria;
1979
1980
  private hasMeaningfulFilterValue;
1981
+ isStructuralQueryContextField(field: string): boolean;
1980
1982
  computeActiveCrossFilters(): PraxisTableCrossFilterItem[];
1981
1983
  onClearCrossFilter(item: PraxisTableCrossFilterItem): void;
1982
1984
  onClearAllCrossFilters(): void;
@@ -2336,6 +2338,17 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
2336
2338
  filter: Record<string, unknown>;
2337
2339
  active: boolean;
2338
2340
  }): void;
2341
+ getConfiguredQuickFilters(): Array<{
2342
+ id: string;
2343
+ label: string;
2344
+ filter: Record<string, unknown>;
2345
+ icon?: string;
2346
+ }>;
2347
+ getQuickFilterManagedFields(): string[];
2348
+ private parseQuickFilterDefinition;
2349
+ getEffectiveEditableFilterCriteria(): Record<string, any>;
2350
+ private reconcileEditableQueryContextFilters;
2351
+ private syncQuickFilterStateFromEffectiveCriteria;
2339
2352
  private clearQuickFilterRuntimeState;
2340
2353
  private hasEquivalentFilterCriteria;
2341
2354
  applyAdvancedFilterCriteria(criteria: Record<string, any> | null | undefined, reason?: string): void;
@@ -3283,6 +3296,17 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnChanges, OnDestr
3283
3296
  getJsonLogicSummary(value: JsonLogicExpression | null | undefined): string;
3284
3297
  private parseJsonLogicText;
3285
3298
  setConditionalOverrideCondition(index: number, raw: string): void;
3299
+ readonly overrideConditionOperators: readonly ["===", "!=", ">", ">=", "<", "<=", "truthy", "falsy"];
3300
+ getOverrideConditionField(condition: any): string;
3301
+ getOverrideConditionOperator(condition: any): string;
3302
+ getOverrideConditionValue(condition: any): string;
3303
+ setOverrideGuidedCondition(index: number, patch: {
3304
+ field?: string;
3305
+ operator?: string;
3306
+ value?: string;
3307
+ }): void;
3308
+ private extractGuidedJsonLogicCondition;
3309
+ private coerceGuidedScalar;
3286
3310
  getOverrideField(path: string): any;
3287
3311
  setOverrideField(path: string, value: any): void;
3288
3312
  setOverrideJsonLogicField(path: string, raw: string): void;
@@ -3291,7 +3315,10 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnChanges, OnDestr
3291
3315
  item: any;
3292
3316
  index: number;
3293
3317
  }>;
3318
+ addOverrideComposeItem(type: 'value' | 'badge' | 'icon' | 'chip'): void;
3294
3319
  addOverrideComposeValueItem(): void;
3320
+ removeOverrideComposeItem(index: number): void;
3321
+ setOverrideComposeItemProp(index: number, path: string, value: any): void;
3295
3322
  setOverrideComposeValueItemField(index: number, field: string): void;
3296
3323
  setOverrideComposeValueItemEmphasis(index: number, emphasis: string): void;
3297
3324
  getOverrideComposeLayoutProp(key: string): any;
@@ -3453,6 +3480,9 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnChanges, OnDestr
3453
3480
  private stripRowPrefixes;
3454
3481
  private _coerceExpected;
3455
3482
  private getNested;
3483
+ private evaluatePreviewOverrideCondition;
3484
+ getEffectivePreviewRenderer(row: any): any;
3485
+ getPreviewSampleRows(): any[];
3456
3486
  getPreviewRendererType(row: any): 'icon' | 'image' | 'badge' | 'link' | 'button' | 'chip' | 'progress' | 'microVisualization' | 'rating' | 'avatar' | 'toggle' | 'menu' | 'html' | 'compose' | null;
3457
3487
  getPreviewIconName(row: any): string | null;
3458
3488
  getPreviewIconColor(row: any): string | null;
@@ -3464,14 +3494,15 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnChanges, OnDestr
3464
3494
  getPreviewImageShape(): 'square' | 'rounded' | 'circle' | undefined;
3465
3495
  getPreviewImageFit(): 'cover' | 'contain' | undefined;
3466
3496
  getPreviewBadgeText(row: any): string | null;
3467
- getPreviewBadgeIcon(_row: any): string | null;
3468
- getPreviewBadgeClasses(_row: any): string[];
3497
+ getPreviewBadgeIcon(row: any): string | null;
3498
+ getPreviewBadgeClasses(row: any): string[];
3499
+ private buildBadgeClassesFromConfig;
3469
3500
  getPreviewLinkText(row: any): string;
3470
3501
  getPreviewLinkHref(row: any): string | null;
3471
3502
  getPreviewButtonLabel(row: any): string;
3472
3503
  getPreviewButtonIcon(): string | null;
3473
3504
  getPreviewChipText(row: any): string | null;
3474
- getPreviewChipClasses(): string[];
3505
+ getPreviewChipClasses(row?: any): string[];
3475
3506
  getPreviewProgressValue(row: any): number;
3476
3507
  getPreviewMicroVisualizationHtml(row: any): string;
3477
3508
  getMicroVisualizationGuidance(): 'recommended' | 'conditional';
@@ -3489,7 +3520,20 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnChanges, OnDestr
3489
3520
  getPreviewRatingOutlineColor(): string | undefined;
3490
3521
  getPreviewRatingSize(): 'small' | 'medium' | 'large';
3491
3522
  getPreviewRatingAriaLabel(): string | undefined;
3492
- getComposePreviewItems(_row: any): any[];
3523
+ getComposePreviewItems(row: any): any[];
3524
+ getComposePreviewContainerStyle(row: any): Record<string, string>;
3525
+ getComposePreviewValueText(item: any, row: any): string;
3526
+ getComposePreviewValueClasses(item: any): string[];
3527
+ getComposePreviewBadgeText(item: any, row: any): string;
3528
+ getComposePreviewBadgeClasses(item: any): string[];
3529
+ getComposePreviewChipText(item: any, row: any): string;
3530
+ getComposePreviewChipClasses(item: any): string[];
3531
+ getComposePreviewIconName(item: any, row: any): string | null;
3532
+ getComposePreviewIconColor(item: any, _row: any): string | null;
3533
+ getComposePreviewIconStyle(item: any, _row: any): Record<string, string> | null;
3534
+ getComposePreviewAvatarStyle(item: any): Record<string, string>;
3535
+ getComposePreviewAvatarInitials(item: any, row: any): string;
3536
+ getComposePreviewProgressValue(item: any, row: any): number;
3493
3537
  getComposePreviewRatingValue(item: any, row: any): number;
3494
3538
  getComposePreviewRatingMax(item: any): number;
3495
3539
  getComposePreviewRatingColor(item: any): string | undefined;
@@ -3528,6 +3572,8 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnChanges, OnDestr
3528
3572
  getSelectedComposeItem(): any;
3529
3573
  getSelectedComposeItemProp(path: string): any;
3530
3574
  setSelectedComposeItemProp(path: string, value: any): void;
3575
+ getConsolidatedSecondaryColumn(item: any): ExtendedColumnDefinition | null;
3576
+ hideConsolidatedColumn(field: string): void;
3531
3577
  private findRendererFieldByCandidates;
3532
3578
  private normalizeFieldLookup;
3533
3579
  getColumnKeyInputType(column: ColumnDefinition | null): 'text' | 'number' | 'boolean';
@@ -4445,22 +4491,23 @@ declare class TableDetailEditorComponent implements OnChanges, OnDestroy {
4445
4491
  readonly sourceModes: string[];
4446
4492
  readonly resourceKinds: string[];
4447
4493
  readonly resourcePathMethods: string[];
4494
+ readonly cardGridColumnOptions: Array<'auto' | 1 | 2 | 3 | 4>;
4495
+ readonly composeDirections: Array<'row' | 'column'>;
4496
+ readonly composeGaps: Array<'xs' | 'sm' | 'md' | 'lg'>;
4497
+ readonly semanticTones: Array<'' | 'neutral' | 'info' | 'primary' | 'success' | 'warning' | 'danger'>;
4498
+ readonly conditionOperators: Array<'===' | '!=' | '>' | '>=' | '<' | '<=' | 'truthy' | 'falsy'>;
4448
4499
  fallbackModes(): string[];
4449
- sample: string;
4500
+ sample: 'A' | 'B' | 'C';
4450
4501
  get previewContext(): {
4451
- row: {
4452
- id: string;
4453
- note: string;
4454
- status: string;
4455
- progress: number;
4456
- };
4502
+ row: Record<string, unknown>;
4457
4503
  };
4458
4504
  /** Local presenter projection only; never used as an authoring/save source. */
4459
4505
  previewNodes(): RichBlockNode[];
4460
4506
  previewRichContentDocuments(): RichContentDocument[];
4461
4507
  richContentEditorInputs(): PraxisRichContentEditorInputs | null;
4462
4508
  applyRichContentEditor(): void;
4463
- addPreset(preset: 'callout' | 'richCard'): void;
4509
+ addPreset(preset: 'callout' | 'richCard' | 'richDetailGrid'): void;
4510
+ effectiveNodeType(node?: Record<string, any> | undefined): string;
4464
4511
  nodeLabel(node: Record<string, any>): string;
4465
4512
  nodeIcon(node: Record<string, any>): string;
4466
4513
  canMove(direction: -1 | 1): boolean;
@@ -4502,6 +4549,38 @@ declare class TableDetailEditorComponent implements OnChanges, OnDestroy {
4502
4549
  edit(field: string, value: string): void;
4503
4550
  fields(): string[];
4504
4551
  isAdvancedNode(): boolean;
4552
+ availableColumns(): Array<{
4553
+ field: string;
4554
+ label: string;
4555
+ }>;
4556
+ supportsFieldBinding(): boolean;
4557
+ boundColumnField(): string;
4558
+ bindColumnField(fieldName: string): void;
4559
+ cardGridColumnsValue(): 'auto' | 1 | 2 | 3 | 4;
4560
+ setCardGridColumns(value: 'auto' | 1 | 2 | 3 | 4): void;
4561
+ cardGridMinWidthValue(): number;
4562
+ setCardGridMinWidth(value: number | string): void;
4563
+ composeDirectionValue(): 'row' | 'column';
4564
+ setComposeDirection(direction: 'row' | 'column'): void;
4565
+ composeGapValue(): 'xs' | 'sm' | 'md' | 'lg';
4566
+ setComposeGap(gap: 'xs' | 'sm' | 'md' | 'lg'): void;
4567
+ supportsTone(): boolean;
4568
+ toneValue(): string;
4569
+ setTone(tone: string): void;
4570
+ supportsVisibleWhen(): boolean;
4571
+ visibleWhenMode(): 'always' | 'conditional' | 'custom';
4572
+ setVisibleWhenMode(mode: 'always' | 'conditional' | 'custom'): void;
4573
+ visibleWhenField(): string;
4574
+ visibleWhenOperator(): '===' | '!=' | '>' | '>=' | '<' | '<=' | 'truthy' | 'falsy';
4575
+ visibleWhenValue(): string;
4576
+ setVisibleWhenRule(patch: {
4577
+ field?: string;
4578
+ operator?: '===' | '!=' | '>' | '>=' | '<' | '<=' | 'truthy' | 'falsy';
4579
+ value?: string;
4580
+ }): void;
4581
+ private parseConditionScalar;
4582
+ private parseGuidedVisibleWhen;
4583
+ private isPreviewNodeVisible;
4505
4584
  private commitTree;
4506
4585
  editJson(value: string): void;
4507
4586
  discard(): void;
@@ -4607,6 +4686,42 @@ declare class PraxisTableConfigEditor implements OnInit, OnDestroy, SettingsValu
4607
4686
  getColumnAuthoringMetas(): FieldMetadata[];
4608
4687
  get filteredIdFieldOptions(): FieldMetadata[];
4609
4688
  isUsingFilterDtoMetas(): boolean;
4689
+ get toolbarFiltersEnabled(): boolean;
4690
+ get toolbarShowQuickFilters(): boolean;
4691
+ get toolbarShowAdvancedButton(): boolean;
4692
+ get toolbarQuickFilters(): Array<{
4693
+ id: string;
4694
+ label: string;
4695
+ icon?: string;
4696
+ filter: any;
4697
+ }>;
4698
+ get duplicatedQuickFilterInlineFields(): string[];
4699
+ private inferDefaultStatusFilterField;
4700
+ private updateToolbarFiltersPatch;
4701
+ onToolbarFiltersEnabledChange(enabled: boolean): void;
4702
+ onToolbarShowQuickFiltersChange(show: boolean): void;
4703
+ onToolbarShowAdvancedButtonChange(show: boolean): void;
4704
+ applyBooleanQuickFilterPreset(fieldName?: string): void;
4705
+ addQuickFilterScope(): void;
4706
+ removeQuickFilterScope(index: number): void;
4707
+ updateQuickFilterMeta(index: number, patch: {
4708
+ id?: string;
4709
+ label?: string;
4710
+ icon?: string;
4711
+ }): void;
4712
+ getQuickFilterMode(item: {
4713
+ filter?: any;
4714
+ }): 'all' | 'boolean' | 'equals';
4715
+ getQuickFilterField(item: {
4716
+ filter?: any;
4717
+ }): string;
4718
+ getQuickFilterValue(item: {
4719
+ filter?: any;
4720
+ }): any;
4721
+ onQuickFilterModeChange(index: number, mode: 'all' | 'boolean' | 'equals'): void;
4722
+ onQuickFilterFieldChange(index: number, fieldName: string): void;
4723
+ onQuickFilterValueChange(index: number, rawValue: any): void;
4724
+ consolidateDuplicateInlineFilterFields(): void;
4610
4725
  getEffectiveDataMode(): EffectiveDataMode;
4611
4726
  isEffectiveLocalMode(): boolean;
4612
4727
  private resolveLocalDataModeFeatureEnabled;