@praxisui/table 10.0.0-rc.28 → 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-Cfb6a6On.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-Cfb6a6On.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-Cfb6a6On.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.28",
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.28",
10
- "@praxisui/core": "^10.0.0-rc.28",
11
- "@praxisui/dynamic-fields": "^10.0.0-rc.28",
12
- "@praxisui/dynamic-form": "^10.0.0-rc.28",
13
- "@praxisui/metadata-editor": "^10.0.0-rc.28",
14
- "@praxisui/rich-content": "^10.0.0-rc.28",
15
- "@praxisui/settings-panel": "^10.0.0-rc.28",
16
- "@praxisui/table-rule-builder": "^10.0.0-rc.28",
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.28",
21
+ "@praxisui/dialog": "^10.0.0-rc.29",
22
22
  "rxjs": "~7.8.0"
23
23
  },
24
24
  "dependencies": {
@@ -2101,6 +2101,15 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
2101
2101
  private resolveExpansionDetailTimelineExpressionValue;
2102
2102
  private getExpansionDetailTimelineObjectValue;
2103
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;
2104
2113
  private normalizeExpansionDetailMediaBlockAvatar;
2105
2114
  private normalizeExpansionDetailMediaBlockText;
2106
2115
  private normalizeExpansionDetailMediaBlockMeta;
@@ -2166,6 +2175,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterView
2166
2175
  private mapExpansionDetailNodeToRichContent;
2167
2176
  private mapExpansionDetailMediaBlockNodeToRichContent;
2168
2177
  private mapExpansionDetailCardNodeToRichContent;
2178
+ private expansionDetailVisibleWhenPatch;
2169
2179
  private mapExpansionDetailStackNodeToRichContent;
2170
2180
  private mapExpansionDetailValueNodeToRichContent;
2171
2181
  private mapExpansionDetailTimelineNodeToRichContent;
@@ -3260,6 +3270,7 @@ type ComposePresetId = 'personAvatar' | 'contactTwoLines' | 'documentEmail' | 's
3260
3270
  declare class ColumnsConfigEditorComponent implements OnInit, OnChanges, OnDestroy {
3261
3271
  private cdr;
3262
3272
  private readonly i18n;
3273
+ private readonly jsonLogic;
3263
3274
  tx(key: string, fallback: string): string;
3264
3275
  readonly ratingAriaLabelPlaceholder: string;
3265
3276
  readonly ratingRendererHint: string;
@@ -3311,7 +3322,8 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnChanges, OnDestr
3311
3322
  getJsonLogicSummary(value: JsonLogicExpression | null | undefined): string;
3312
3323
  private parseJsonLogicText;
3313
3324
  setConditionalOverrideCondition(index: number, raw: string): void;
3314
- readonly overrideConditionOperators: readonly ["===", "!=", ">", ">=", "<", "<=", "truthy", "falsy"];
3325
+ readonly overrideConditionOperators: readonly ["===", "==", "!==", "!=", ">", ">=", "<", "<=", "truthy", "falsy"];
3326
+ private normalizeConditionFieldName;
3315
3327
  getOverrideConditionField(condition: any): string;
3316
3328
  getOverrideConditionOperator(condition: any): string;
3317
3329
  getOverrideConditionValue(condition: any): string;
@@ -3330,8 +3342,10 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnChanges, OnDestr
3330
3342
  item: any;
3331
3343
  index: number;
3332
3344
  }>;
3333
- addOverrideComposeItem(type: 'value' | 'badge' | 'icon' | 'chip'): void;
3345
+ addOverrideComposeItem(type: 'value' | 'badge' | 'icon' | 'chip' | 'progress' | 'avatar' | 'link' | 'button' | 'rating' | 'html'): void;
3334
3346
  addOverrideComposeValueItem(): void;
3347
+ moveOverrideComposeItem(index: number, delta: -1 | 1): void;
3348
+ duplicateOverrideComposeItem(index: number): void;
3335
3349
  removeOverrideComposeItem(index: number): void;
3336
3350
  setOverrideComposeItemProp(index: number, path: string, value: any): void;
3337
3351
  setOverrideComposeValueItemField(index: number, field: string): void;
@@ -3495,7 +3509,10 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnChanges, OnDestr
3495
3509
  private stripRowPrefixes;
3496
3510
  private _coerceExpected;
3497
3511
  private getNested;
3498
- private evaluatePreviewOverrideCondition;
3512
+ private buildPreviewEvaluationContext;
3513
+ evaluatePreviewOverrideCondition(condition: any, row: any): boolean;
3514
+ private mergePreviewRenderer;
3515
+ private hasRenderablePreviewOverride;
3499
3516
  getEffectivePreviewRenderer(row: any): any;
3500
3517
  getPreviewSampleRows(): any[];
3501
3518
  getPreviewRendererType(row: any): 'icon' | 'image' | 'badge' | 'link' | 'button' | 'chip' | 'progress' | 'microVisualization' | 'rating' | 'avatar' | 'toggle' | 'menu' | 'html' | 'compose' | null;
@@ -3515,9 +3532,11 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnChanges, OnDestr
3515
3532
  getPreviewLinkText(row: any): string;
3516
3533
  getPreviewLinkHref(row: any): string | null;
3517
3534
  getPreviewButtonLabel(row: any): string;
3518
- getPreviewButtonIcon(): string | null;
3535
+ getPreviewButtonIcon(row?: any): string | null;
3519
3536
  getPreviewChipText(row: any): string | null;
3537
+ getPreviewChipIcon(row?: any): string | null;
3520
3538
  getPreviewChipClasses(row?: any): string[];
3539
+ getComposePreviewButtonLabel(item: any, row: any): string;
3521
3540
  getPreviewProgressValue(row: any): number;
3522
3541
  getPreviewMicroVisualizationHtml(row: any): string;
3523
3542
  getMicroVisualizationGuidance(): 'recommended' | 'conditional';
@@ -3550,6 +3569,18 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnChanges, OnDestr
3550
3569
  getComposePreviewIconStyle(item: any, _row: any): Record<string, string> | null;
3551
3570
  getComposePreviewAvatarStyle(item: any): Record<string, string>;
3552
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;
3553
3584
  getComposePreviewProgressValue(item: any, row: any): number;
3554
3585
  getComposePreviewRatingValue(item: any, row: any): number;
3555
3586
  getComposePreviewRatingMax(item: any): number;
@@ -3566,7 +3597,9 @@ declare class ColumnsConfigEditorComponent implements OnInit, OnChanges, OnDestr
3566
3597
  getPreviewToggleState(row: any): boolean;
3567
3598
  getPreviewMenuCount(row: any): number;
3568
3599
  getPreviewHtml(row: any): string;
3569
- 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;
3570
3603
  private validateMicroVisualizationThresholds;
3571
3604
  private validateRenderer;
3572
3605
  private readonly _emptyMappingRef;
@@ -4478,7 +4511,7 @@ declare class TableDetailTreeDraft {
4478
4511
  depth: number;
4479
4512
  } | undefined;
4480
4513
  move(direction: -1 | 1): void;
4481
- add(node: Node, nested?: boolean): void;
4514
+ add(node: Node, nested?: boolean): Node | null;
4482
4515
  }
4483
4516
 
4484
4517
  declare class TableDetailEditorComponent implements OnChanges, OnDestroy {
@@ -4495,6 +4528,7 @@ declare class TableDetailEditorComponent implements OnChanges, OnDestroy {
4495
4528
  dirty: boolean;
4496
4529
  }>;
4497
4530
  private readonly i18n;
4531
+ private readonly jsonLogic;
4498
4532
  private baseline?;
4499
4533
  private emitted?;
4500
4534
  private readonly coupledBefore;
@@ -4506,22 +4540,44 @@ declare class TableDetailEditorComponent implements OnChanges, OnDestroy {
4506
4540
  jsonTouched: boolean;
4507
4541
  advanced: boolean;
4508
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;
4509
4545
  readonly presets: string[];
4510
4546
  readonly sourceModes: string[];
4511
4547
  readonly resourceKinds: string[];
4512
4548
  readonly resourcePathMethods: string[];
4513
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'>;
4514
4554
  readonly composeDirections: Array<'row' | 'column'>;
4515
- readonly composeGaps: Array<'xs' | 'sm' | 'md' | 'lg'>;
4516
- 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'>;
4517
4560
  readonly conditionOperators: Array<'===' | '!=' | '>' | '>=' | '<' | '<=' | 'truthy' | 'falsy'>;
4518
4561
  fallbackModes(): string[];
4519
4562
  sample: 'A' | 'B' | 'C';
4520
4563
  get previewContext(): {
4521
4564
  row: Record<string, unknown>;
4522
4565
  };
4566
+ private projectDetailNodeToRichBlockNodes;
4523
4567
  /** Local presenter projection only; never used as an authoring/save source. */
4524
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
+ }>;
4525
4581
  previewRichContentDocuments(): RichContentDocument[];
4526
4582
  richContentEditorInputs(): PraxisRichContentEditorInputs | null;
4527
4583
  applyRichContentEditor(): void;
@@ -4579,13 +4635,41 @@ declare class TableDetailEditorComponent implements OnChanges, OnDestroy {
4579
4635
  setCardGridColumns(value: 'auto' | 1 | 2 | 3 | 4): void;
4580
4636
  cardGridMinWidthValue(): number;
4581
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;
4582
4646
  composeDirectionValue(): 'row' | 'column';
4583
4647
  setComposeDirection(direction: 'row' | 'column'): void;
4584
- composeGapValue(): 'xs' | 'sm' | 'md' | 'lg';
4585
- 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;
4586
4654
  supportsTone(): boolean;
4587
4655
  toneValue(): string;
4588
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;
4589
4673
  supportsVisibleWhen(): boolean;
4590
4674
  visibleWhenMode(): 'always' | 'conditional' | 'custom';
4591
4675
  setVisibleWhenMode(mode: 'always' | 'conditional' | 'custom'): void;
@@ -4601,6 +4685,9 @@ declare class TableDetailEditorComponent implements OnChanges, OnDestroy {
4601
4685
  private parseGuidedVisibleWhen;
4602
4686
  private isPreviewNodeVisible;
4603
4687
  private commitTree;
4688
+ /** Offered next to `cardGridContent`/`composeContent` issues: converts legacy fields into canonical presenters. */
4689
+ canNormalizeRichChildren(): boolean;
4690
+ normalizeRichChildren(): void;
4604
4691
  editJson(value: string): void;
4605
4692
  discard(): void;
4606
4693
  static ɵfac: i0.ɵɵFactoryDeclaration<TableDetailEditorComponent, never>;