@praxisui/table 10.0.0-rc.27 → 10.0.0-rc.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,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-CosVmN5P.mjs';
3
+ import { ar as setTableActionGlobalActionRef } from './praxisui-table-praxisui-table-By0aZFU7.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-CosVmN5P.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-By0aZFU7.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-CosVmN5P.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-By0aZFU7.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.27",
3
+ "version": "10.0.0-rc.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": "^10.0.0-rc.27",
10
- "@praxisui/core": "^10.0.0-rc.27",
11
- "@praxisui/dynamic-fields": "^10.0.0-rc.27",
12
- "@praxisui/dynamic-form": "^10.0.0-rc.27",
13
- "@praxisui/metadata-editor": "^10.0.0-rc.27",
14
- "@praxisui/rich-content": "^10.0.0-rc.27",
15
- "@praxisui/settings-panel": "^10.0.0-rc.27",
16
- "@praxisui/table-rule-builder": "^10.0.0-rc.27",
9
+ "@praxisui/ai": "^10.0.0-rc.29",
10
+ "@praxisui/core": "^10.0.0-rc.29",
11
+ "@praxisui/dynamic-fields": "^10.0.0-rc.29",
12
+ "@praxisui/dynamic-form": "^10.0.0-rc.29",
13
+ "@praxisui/metadata-editor": "^10.0.0-rc.29",
14
+ "@praxisui/rich-content": "^10.0.0-rc.29",
15
+ "@praxisui/settings-panel": "^10.0.0-rc.29",
16
+ "@praxisui/table-rule-builder": "^10.0.0-rc.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": "^10.0.0-rc.27",
21
+ "@praxisui/dialog": "^10.0.0-rc.29",
22
22
  "rxjs": "~7.8.0"
23
23
  },
24
24
  "dependencies": {
@@ -1304,6 +1304,8 @@ Em `scroll-auto`, o viewport e uma regiao focalizavel por teclado para que o scr
1304
1304
  | --- | --- | --- | --- | --- | --- |
1305
1305
  | `columns[]` | `TableColumnConfig[]` | Yes | `[]` | Active | Definicao de colunas, renderers e regras de exibicao. |
1306
1306
  | `behavior` | `TableBehaviorConfig` | No | defaults do runtime | Partial | Inclui paginacao, filtro, selecao e expansao por blocos. |
1307
+ | `behavior.filtering.advancedFilters.settings.showAddButton` | `boolean` | No | `true` | Active | Controla a exibicao do botao `+` de adicionar campos rapidos (`alwaysVisibleFields`) na barra do `PraxisFilter` embutido. |
1308
+ | `behavior.filtering.advancedFilters.settings.showFilterSettings` | `boolean` | No | `isCustomizationAvailable()` | Active | Controla a exibicao da engrenagem de preferencias do `PraxisFilter` embutido; quando `enableCustomization` esta desabilitado, permanece oculta. |
1307
1309
  | `toolbar.actions[]` | `ToolbarActionConfig[]` | No | `[]` | Partial | Acoes de toolbar com roteamento para `toolbarAction` e `bulkAction`. |
1308
1310
  | `toolbar.title` | `string` | No | `undefined` | Active | Titulo renderizado na regiao de identidade da toolbar principal, antes de filtros e acoes. |
1309
1311
  | `toolbar.subtitle` | `string` | No | `undefined` | Active | Texto auxiliar renderizado abaixo do titulo quando houver espaco. |
@@ -703,6 +703,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
703
703
  changeDebounceMs: number;
704
704
  /** Controla a exibição do botão de preferências dentro do filtro */
705
705
  showFilterSettings: boolean;
706
+ private hostShowFilterSettings?;
706
707
  /** Controla a exibição do botão de filtro avançado */
707
708
  showAdvancedButton: boolean;
708
709
  /** Projection of FilterConfig.presentation for standalone and embedded hosts. */
@@ -714,6 +715,7 @@ declare class PraxisFilter implements OnInit, OnChanges, AfterViewInit, OnDestro
714
715
  get advancedActionDisplay(): string;
715
716
  /** Controla a exibição do botão de adicionar campos */
716
717
  showAddButton: boolean;
718
+ private hostShowAddButton?;
717
719
  /** Controla a exibição do botão de limpar filtros */
718
720
  showClearButton: boolean;
719
721
  /** Controla a exibição do botão de pesquisar/aplicar filtros em fluxos manuais. */
@@ -2099,6 +2101,15 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
2099
2101
  private resolveExpansionDetailTimelineExpressionValue;
2100
2102
  private getExpansionDetailTimelineObjectValue;
2101
2103
  private normalizeExpansionDetailCardGridCardContent;
2104
+ /** `visibleWhen` is canonical Json Logic (object or boolean); string DSL is not a valid rule. */
2105
+ private normalizeExpansionDetailVisibleWhen;
2106
+ /**
2107
+ * Visibility gate for every detail node, including host-mediated ones (cardGrid, list, detailList,
2108
+ * timeline) that are not rendered by PraxisRichContent. Mirrors `PraxisRichContent.evaluateRule`:
2109
+ * same context (`row`, `computed`, `detail`), truthiness of the Json Logic result, fail-closed on error.
2110
+ */
2111
+ isExpansionDetailNodeVisible(node: any, row: any, index: number): boolean;
2112
+ private withExpansionDetailParentVisibleWhen;
2102
2113
  private normalizeExpansionDetailMediaBlockAvatar;
2103
2114
  private normalizeExpansionDetailMediaBlockText;
2104
2115
  private normalizeExpansionDetailMediaBlockMeta;
@@ -2164,6 +2175,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
2164
2175
  private mapExpansionDetailNodeToRichContent;
2165
2176
  private mapExpansionDetailMediaBlockNodeToRichContent;
2166
2177
  private mapExpansionDetailCardNodeToRichContent;
2178
+ private expansionDetailVisibleWhenPatch;
2167
2179
  private mapExpansionDetailStackNodeToRichContent;
2168
2180
  private mapExpansionDetailValueNodeToRichContent;
2169
2181
  private mapExpansionDetailTimelineNodeToRichContent;
@@ -2277,6 +2289,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
2277
2289
  private showActionFeedbackMessage;
2278
2290
  private emitEventWithActionFeedback;
2279
2291
  private executeConfiguredGlobalAction;
2292
+ private isWritableConfiguredSurfaceOpen;
2280
2293
  private withTableRuntimeContext;
2281
2294
  private resolveTableSurfaceRuntime;
2282
2295
  private executeSurfaceOpen;
@@ -3257,6 +3270,7 @@ type ComposePresetId = 'personAvatar' | 'contactTwoLines' | 'documentEmail' | 's
3257
3270
  declare class ColumnsConfigEditorComponent implements OnInit, OnChanges, OnDestroy {
3258
3271
  private cdr;
3259
3272
  private readonly i18n;
3273
+ private readonly jsonLogic;
3260
3274
  tx(key: string, fallback: string): string;
3261
3275
  readonly ratingAriaLabelPlaceholder: string;
3262
3276
  readonly ratingRendererHint: string;
@@ -3308,7 +3322,8 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnChanges, OnDestr
3308
3322
  getJsonLogicSummary(value: JsonLogicExpression | null | undefined): string;
3309
3323
  private parseJsonLogicText;
3310
3324
  setConditionalOverrideCondition(index: number, raw: string): void;
3311
- readonly overrideConditionOperators: readonly ["===", "!=", ">", ">=", "<", "<=", "truthy", "falsy"];
3325
+ readonly overrideConditionOperators: readonly ["===", "==", "!==", "!=", ">", ">=", "<", "<=", "truthy", "falsy"];
3326
+ private normalizeConditionFieldName;
3312
3327
  getOverrideConditionField(condition: any): string;
3313
3328
  getOverrideConditionOperator(condition: any): string;
3314
3329
  getOverrideConditionValue(condition: any): string;
@@ -3327,8 +3342,10 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnChanges, OnDestr
3327
3342
  item: any;
3328
3343
  index: number;
3329
3344
  }>;
3330
- addOverrideComposeItem(type: 'value' | 'badge' | 'icon' | 'chip'): void;
3345
+ addOverrideComposeItem(type: 'value' | 'badge' | 'icon' | 'chip' | 'progress' | 'avatar' | 'link' | 'button' | 'rating' | 'html'): void;
3331
3346
  addOverrideComposeValueItem(): void;
3347
+ moveOverrideComposeItem(index: number, delta: -1 | 1): void;
3348
+ duplicateOverrideComposeItem(index: number): void;
3332
3349
  removeOverrideComposeItem(index: number): void;
3333
3350
  setOverrideComposeItemProp(index: number, path: string, value: any): void;
3334
3351
  setOverrideComposeValueItemField(index: number, field: string): void;
@@ -3492,7 +3509,10 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnChanges, OnDestr
3492
3509
  private stripRowPrefixes;
3493
3510
  private _coerceExpected;
3494
3511
  private getNested;
3495
- private evaluatePreviewOverrideCondition;
3512
+ private buildPreviewEvaluationContext;
3513
+ evaluatePreviewOverrideCondition(condition: any, row: any): boolean;
3514
+ private mergePreviewRenderer;
3515
+ private hasRenderablePreviewOverride;
3496
3516
  getEffectivePreviewRenderer(row: any): any;
3497
3517
  getPreviewSampleRows(): any[];
3498
3518
  getPreviewRendererType(row: any): 'icon' | 'image' | 'badge' | 'link' | 'button' | 'chip' | 'progress' | 'microVisualization' | 'rating' | 'avatar' | 'toggle' | 'menu' | 'html' | 'compose' | null;
@@ -3512,9 +3532,11 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnChanges, OnDestr
3512
3532
  getPreviewLinkText(row: any): string;
3513
3533
  getPreviewLinkHref(row: any): string | null;
3514
3534
  getPreviewButtonLabel(row: any): string;
3515
- getPreviewButtonIcon(): string | null;
3535
+ getPreviewButtonIcon(row?: any): string | null;
3516
3536
  getPreviewChipText(row: any): string | null;
3537
+ getPreviewChipIcon(row?: any): string | null;
3517
3538
  getPreviewChipClasses(row?: any): string[];
3539
+ getComposePreviewButtonLabel(item: any, row: any): string;
3518
3540
  getPreviewProgressValue(row: any): number;
3519
3541
  getPreviewMicroVisualizationHtml(row: any): string;
3520
3542
  getMicroVisualizationGuidance(): 'recommended' | 'conditional';
@@ -3547,6 +3569,18 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnChanges, OnDestr
3547
3569
  getComposePreviewIconStyle(item: any, _row: any): Record<string, string> | null;
3548
3570
  getComposePreviewAvatarStyle(item: any): Record<string, string>;
3549
3571
  getComposePreviewAvatarInitials(item: any, row: any): string;
3572
+ getComposePreviewAvatarSrc(item: any, row: any): string | null;
3573
+ getComposePreviewAvatarAlt(item: any, row: any): string;
3574
+ getComposePreviewImageSrc(item: any, row: any): string | null;
3575
+ getComposePreviewImageAlt(item: any, row: any): string;
3576
+ getComposePreviewImageStyle(item: any): Record<string, string>;
3577
+ getComposePreviewProgressColor(item: any): string | null;
3578
+ getComposePreviewHtml(item: any, row: any): string;
3579
+ getComposePreviewToggleState(item: any, row: any): boolean;
3580
+ getComposePreviewMenuCount(item: any, row: any): number;
3581
+ private resolvePreviewSafeSrc;
3582
+ /** Mirrors PraxisTable.getSafeHtml token interpolation: `[[field]]` values are HTML-escaped. */
3583
+ private interpolatePreviewHtml;
3550
3584
  getComposePreviewProgressValue(item: any, row: any): number;
3551
3585
  getComposePreviewRatingValue(item: any, row: any): number;
3552
3586
  getComposePreviewRatingMax(item: any): number;
@@ -3563,7 +3597,9 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnChanges, OnDestr
3563
3597
  getPreviewToggleState(row: any): boolean;
3564
3598
  getPreviewMenuCount(row: any): number;
3565
3599
  getPreviewHtml(row: any): string;
3566
- trackByIdx: (_: number, item: any) => number;
3600
+ getPreviewProgressColor(row: any): string | null;
3601
+ /** Preview rows are re-cloned on every read; the sample slot index is their stable identity. */
3602
+ trackByIdx: (index: number, _item: unknown) => number;
3567
3603
  private validateMicroVisualizationThresholds;
3568
3604
  private validateRenderer;
3569
3605
  private readonly _emptyMappingRef;
@@ -4475,7 +4511,7 @@ declare class TableDetailTreeDraft {
4475
4511
  depth: number;
4476
4512
  } | undefined;
4477
4513
  move(direction: -1 | 1): void;
4478
- add(node: Node, nested?: boolean): void;
4514
+ add(node: Node, nested?: boolean): Node | null;
4479
4515
  }
4480
4516
 
4481
4517
  declare class TableDetailEditorComponent implements OnChanges, OnDestroy {
@@ -4492,6 +4528,7 @@ declare class TableDetailEditorComponent implements OnChanges, OnDestroy {
4492
4528
  dirty: boolean;
4493
4529
  }>;
4494
4530
  private readonly i18n;
4531
+ private readonly jsonLogic;
4495
4532
  private baseline?;
4496
4533
  private emitted?;
4497
4534
  private readonly coupledBefore;
@@ -4503,22 +4540,44 @@ declare class TableDetailEditorComponent implements OnChanges, OnDestroy {
4503
4540
  jsonTouched: boolean;
4504
4541
  advanced: boolean;
4505
4542
  preset: string;
4543
+ /** True when the last "add inside" was refused because the block cannot live inside a card grid card. */
4544
+ addRejected: boolean;
4506
4545
  readonly presets: string[];
4507
4546
  readonly sourceModes: string[];
4508
4547
  readonly resourceKinds: string[];
4509
4548
  readonly resourcePathMethods: string[];
4510
4549
  readonly cardGridColumnOptions: Array<'auto' | 1 | 2 | 3 | 4>;
4550
+ readonly cardVariants: Array<'outlined' | 'elevated' | 'filled' | 'soft'>;
4551
+ readonly cardSizes: Array<'sm' | 'md' | 'lg'>;
4552
+ readonly cardDensities: Array<'compact' | 'comfortable' | 'spacious'>;
4553
+ readonly composeLayouts: Array<'flex' | 'grid'>;
4511
4554
  readonly composeDirections: Array<'row' | 'column'>;
4512
- readonly composeGaps: Array<'xs' | 'sm' | 'md' | 'lg'>;
4513
- readonly semanticTones: Array<'' | 'neutral' | 'info' | 'primary' | 'success' | 'warning' | 'danger'>;
4555
+ readonly composeGaps: Array<'xs' | 'sm' | 'md' | 'lg' | 'xl'>;
4556
+ readonly composeAlignItemsOptions: Array<'' | 'flex-start' | 'center' | 'flex-end' | 'stretch'>;
4557
+ readonly badgePresetOptions: Array<'default' | 'softPill' | 'solidPill' | 'outlinedTag' | 'compactSquare' | 'custom'>;
4558
+ readonly iconSurfacePresetOptions: Array<'none' | 'softTile' | 'circleBadge' | 'outlinedTile' | 'elevatedTile' | 'custom'>;
4559
+ readonly semanticTones: Array<'' | 'neutral' | 'info' | 'primary' | 'secondary' | 'tertiary' | 'success' | 'warning' | 'danger'>;
4514
4560
  readonly conditionOperators: Array<'===' | '!=' | '>' | '>=' | '<' | '<=' | 'truthy' | 'falsy'>;
4515
4561
  fallbackModes(): string[];
4516
4562
  sample: 'A' | 'B' | 'C';
4517
4563
  get previewContext(): {
4518
4564
  row: Record<string, unknown>;
4519
4565
  };
4566
+ private projectDetailNodeToRichBlockNodes;
4520
4567
  /** Local presenter projection only; never used as an authoring/save source. */
4521
4568
  previewNodes(): RichBlockNode[];
4569
+ /**
4570
+ * Returns structured preview groups so `cardGrid` blocks render with their real
4571
+ * multi-column CSS Grid (`columns` and `minCardWidth`) and headers in the preview canvas.
4572
+ */
4573
+ previewCardGridGroups(): Array<{
4574
+ isCardGrid: boolean;
4575
+ title?: string;
4576
+ subtitle?: string;
4577
+ gridTemplateColumns?: string;
4578
+ cards?: RichBlockNode[];
4579
+ nodes?: RichBlockNode[];
4580
+ }>;
4522
4581
  previewRichContentDocuments(): RichContentDocument[];
4523
4582
  richContentEditorInputs(): PraxisRichContentEditorInputs | null;
4524
4583
  applyRichContentEditor(): void;
@@ -4576,13 +4635,41 @@ declare class TableDetailEditorComponent implements OnChanges, OnDestroy {
4576
4635
  setCardGridColumns(value: 'auto' | 1 | 2 | 3 | 4): void;
4577
4636
  cardGridMinWidthValue(): number;
4578
4637
  setCardGridMinWidth(value: number | string): void;
4638
+ cardVariantValue(): 'outlined' | 'elevated' | 'filled' | 'soft';
4639
+ setCardVariant(variant: 'outlined' | 'elevated' | 'filled' | 'soft'): void;
4640
+ cardSizeValue(): 'sm' | 'md' | 'lg';
4641
+ setCardSize(size: 'sm' | 'md' | 'lg'): void;
4642
+ cardDensityValue(): 'compact' | 'comfortable' | 'spacious';
4643
+ setCardDensity(density: 'compact' | 'comfortable' | 'spacious'): void;
4644
+ composeLayoutValue(): 'flex' | 'grid';
4645
+ setComposeLayout(layout: 'flex' | 'grid'): void;
4579
4646
  composeDirectionValue(): 'row' | 'column';
4580
4647
  setComposeDirection(direction: 'row' | 'column'): void;
4581
- composeGapValue(): 'xs' | 'sm' | 'md' | 'lg';
4582
- setComposeGap(gap: 'xs' | 'sm' | 'md' | 'lg'): void;
4648
+ composeGapValue(): 'xs' | 'sm' | 'md' | 'lg' | 'xl';
4649
+ setComposeGap(gap: 'xs' | 'sm' | 'md' | 'lg' | 'xl'): void;
4650
+ composeAlignItemsValue(): '' | 'flex-start' | 'center' | 'flex-end' | 'stretch';
4651
+ setComposeAlignItems(align: '' | 'flex-start' | 'center' | 'flex-end' | 'stretch'): void;
4652
+ composeWrapValue(): boolean;
4653
+ setComposeWrap(wrap: boolean): void;
4583
4654
  supportsTone(): boolean;
4584
4655
  toneValue(): string;
4585
4656
  setTone(tone: string): void;
4657
+ supportsStyleControls(): boolean;
4658
+ nodeStyleValue(key: string): string;
4659
+ setNodeStyleValue(key: string, value: string): void;
4660
+ hasNodeAppearanceOverrides(): boolean;
4661
+ resetNodeAppearance(): void;
4662
+ badgeAppearancePreset(): 'default' | 'softPill' | 'solidPill' | 'outlinedTag' | 'compactSquare' | 'custom';
4663
+ applyBadgeAppearancePreset(preset: 'default' | 'softPill' | 'solidPill' | 'outlinedTag' | 'compactSquare' | 'custom'): void;
4664
+ iconSurfacePreset(): 'none' | 'softTile' | 'circleBadge' | 'outlinedTile' | 'elevatedTile' | 'custom';
4665
+ applyIconSurfacePreset(preset: 'none' | 'softTile' | 'circleBadge' | 'outlinedTile' | 'elevatedTile' | 'custom'): void;
4666
+ canConvertSelectedToRichContent(): boolean;
4667
+ /**
4668
+ * Losslessly converts the selected `cardGrid` or `card` block (or its parent `cardGrid`
4669
+ * when a card inside `cardGrid.cards` is selected) into a canonical `richContent` node
4670
+ * so the user can continue authoring in the full embedded `PraxisRichContentConfigEditor`.
4671
+ */
4672
+ convertSelectedToRichContent(): void;
4586
4673
  supportsVisibleWhen(): boolean;
4587
4674
  visibleWhenMode(): 'always' | 'conditional' | 'custom';
4588
4675
  setVisibleWhenMode(mode: 'always' | 'conditional' | 'custom'): void;
@@ -4598,6 +4685,9 @@ declare class TableDetailEditorComponent implements OnChanges, OnDestroy {
4598
4685
  private parseGuidedVisibleWhen;
4599
4686
  private isPreviewNodeVisible;
4600
4687
  private commitTree;
4688
+ /** Offered next to `cardGridContent`/`composeContent` issues: converts legacy fields into canonical presenters. */
4689
+ canNormalizeRichChildren(): boolean;
4690
+ normalizeRichChildren(): void;
4601
4691
  editJson(value: string): void;
4602
4692
  discard(): void;
4603
4693
  static ɵfac: i0.ɵɵFactoryDeclaration<TableDetailEditorComponent, never>;