@praxisui/dynamic-form 8.0.0-beta.1 → 8.0.0-beta.12

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.
package/index.d.ts CHANGED
@@ -7,7 +7,7 @@ import { MatDialog } from '@angular/material/dialog';
7
7
  import { MatSnackBar } from '@angular/material/snack-bar';
8
8
  import { CdkDragStart, CdkDragMove, CdkDragEnd, CdkDragDrop } from '@angular/cdk/drag-drop';
9
9
  import * as _praxisui_core from '@praxisui/core';
10
- import { AsyncConfigStorage, FormLayout, FieldMetadata, FormLayoutRule, FormRuleTargetType as FormRuleTargetType$1, PraxisJsonLogicService, FormSection, FormRow, FormColumn, FormConfig, FormActionButton, AiCapability, BackConfig, ApiEndpoint, ApiUrlEntry, FormHooksLayout, EndpointConfig, FormSubmitEvent, FormReadyEvent, FormValueChangeEvent, SyncResult, FormInitializationError, LoadingState, FormCustomActionEvent, FormActionConfirmationEvent, RichContentDocument, JsonLogicRecord, GenericCrudService, ConnectionStorage, DynamicFormService, ErrorMessageService, SchemaNormalizerService, ComponentMetadataRegistry, GlobalConfigService, ComponentKeyService, LoadingOrchestrator, ApiUrlConfig, PraxisLoadingRenderer, FormHooksRegistry, FormHookPreset, LoggerService, FormSectionHeaderAction, FormSectionHeaderConfig, FormConfigState, FieldDefinition, ComponentDocMeta, Breakpoint, IconPickerService, SurfaceOpenPayload, AiCapabilityCategory, AiValueKind, AiCapabilityCatalog } from '@praxisui/core';
10
+ import { AsyncConfigStorage, FormLayout, FieldMetadata, FormLayoutRule, FormRuleTargetType as FormRuleTargetType$1, PraxisJsonLogicService, FormSection, FormRow, FormColumn, FormConfig, FormLayoutItem, FormActionButton, AiCapability, BackConfig, ApiEndpoint, ApiUrlEntry, FormHooksLayout, EndpointConfig, FormSubmitEvent, FormReadyEvent, FormValueChangeEvent, SyncResult, FormInitializationError, LoadingState, FormCustomActionEvent, FormActionConfirmationEvent, RichContentDocument, JsonLogicRecord, GenericCrudService, ConnectionStorage, DynamicFormService, ErrorMessageService, SchemaNormalizerService, ComponentMetadataRegistry, GlobalConfigService, ComponentKeyService, LoadingOrchestrator, ApiUrlConfig, PraxisLoadingRenderer, FormHooksRegistry, FormHookPreset, LoggerService, FormSectionHeaderAction, FormSectionHeaderConfig, FormConfigState, GlobalActionCatalogEntry, FieldDefinition, ComponentDocMeta, Breakpoint, IconPickerService, GlobalActionRef, SurfaceOpenPayload, AiCapabilityCategory, AiValueKind, AiCapabilityCatalog, ComponentAuthoringManifest } from '@praxisui/core';
11
11
  import * as rxjs from 'rxjs';
12
12
  import { Observable, BehaviorSubject } from 'rxjs';
13
13
  import { SettingsPanelService, SettingsValueProvider } from '@praxisui/settings-panel';
@@ -96,6 +96,7 @@ interface Operation {
96
96
  sectionId?: string;
97
97
  rowId?: string;
98
98
  columnId?: string;
99
+ itemId?: string;
99
100
  fieldName?: string;
100
101
  sectionIndex?: number;
101
102
  rowIndex?: number;
@@ -106,6 +107,7 @@ interface Operation {
106
107
  sectionId?: string;
107
108
  rowId?: string;
108
109
  columnId?: string;
110
+ itemId?: string;
109
111
  fieldName?: string;
110
112
  sectionIndex?: number;
111
113
  rowIndex?: number;
@@ -178,6 +180,14 @@ declare class DynamicFormLayoutService {
178
180
  private capitalizeFirstLetter;
179
181
  private assertIndex;
180
182
  private mutate;
183
+ private getFieldName;
184
+ private findFieldLayoutItemIndex;
185
+ private getLayoutInsertIndexForFieldIndex;
186
+ private applyLayoutItemsToColumn;
187
+ private insertFieldLayoutItem;
188
+ private removeFieldLayoutItem;
189
+ private hasLayoutItems;
190
+ private moveFieldLayoutItem;
181
191
  moveSection(config: FormConfig, fromIndex: number, toIndex: number): LayoutResult;
182
192
  insertSection(config: FormConfig, section: any, atIndex?: number): LayoutResult;
183
193
  removeSection(config: FormConfig, index: number, _policy?: RemovePolicy): LayoutResult;
@@ -235,6 +245,37 @@ declare class DynamicFormLayoutService {
235
245
  rowId: string;
236
246
  columnId: string;
237
247
  }, field: any, atIndex?: number): LayoutResult;
248
+ insertLayoutItemById(config: FormConfig, target: {
249
+ sectionId: string;
250
+ rowId: string;
251
+ columnId: string;
252
+ }, item: FormLayoutItem, atIndex?: number): LayoutResult;
253
+ moveLayoutItemById(config: FormConfig, from: {
254
+ sectionId: string;
255
+ rowId: string;
256
+ columnId: string;
257
+ itemId: string;
258
+ }, to: {
259
+ sectionId: string;
260
+ rowId: string;
261
+ columnId: string;
262
+ toIndex: number;
263
+ }, options?: {
264
+ policy?: RemovePolicy;
265
+ correlationId?: string;
266
+ origin?: string;
267
+ }): LayoutResult;
268
+ updateLayoutItemById(config: FormConfig, target: {
269
+ sectionId: string;
270
+ rowId: string;
271
+ columnId: string;
272
+ itemId: string;
273
+ }, item: FormLayoutItem): LayoutResult;
274
+ removeLayoutItemById(config: FormConfig, sectionId: string, rowId: string, columnId: string, itemId: string, options?: {
275
+ policy?: RemovePolicy;
276
+ correlationId?: string;
277
+ origin?: string;
278
+ }): LayoutResult;
238
279
  removeFieldById(config: FormConfig, sectionId: string, rowId: string, columnId: string, fieldName: string, options?: {
239
280
  policy?: RemovePolicy;
240
281
  correlationId?: string;
@@ -349,6 +390,7 @@ declare class PraxisFormActionsComponent implements OnChanges, OnDestroy {
349
390
  getInvalidSubmitHint(): string;
350
391
  private applyOverrides;
351
392
  private registerActionShortcuts;
393
+ private resolveButtonActionId;
352
394
  private isSecondaryButton;
353
395
  static ɵfac: i0.ɵɵFactoryDeclaration<PraxisFormActionsComponent, never>;
354
396
  static ɵcmp: i0.ɵɵComponentDeclaration<PraxisFormActionsComponent, "praxis-form-actions", never, { "actions": { "alias": "actions"; "required": false; }; "editorialVisualContext": { "alias": "editorialVisualContext"; "required": false; }; "isSubmitting": { "alias": "isSubmitting"; "required": false; }; "formIsValid": { "alias": "formIsValid"; "required": false; }; "submitError": { "alias": "submitError"; "required": false; }; "invalidRequiredFieldLabels": { "alias": "invalidRequiredFieldLabels"; "required": false; }; "formId": { "alias": "formId"; "required": false; }; "actionOverrides": { "alias": "actionOverrides"; "required": false; }; }, { "action": "action"; }, never, never, true, never>;
@@ -506,6 +548,19 @@ type ResolvedSectionHeaderVisual = {
506
548
  text?: string;
507
549
  ariaLabel: string;
508
550
  };
551
+ interface FormColumnFieldsRenderItem {
552
+ kind: 'fields';
553
+ id: string;
554
+ fields: FieldMetadata[];
555
+ }
556
+ interface FormColumnRichContentRenderItem {
557
+ kind: 'richContent';
558
+ id: string;
559
+ document: RichContentDocument;
560
+ layout: 'block' | 'inline';
561
+ rootClassName?: string | null;
562
+ }
563
+ type FormColumnRenderItem = FormColumnFieldsRenderItem | FormColumnRichContentRenderItem;
509
564
  declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
510
565
  private crud;
511
566
  private http;
@@ -808,6 +863,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
808
863
  private hasInteractiveFormState;
809
864
  private captureFormRuntimeState;
810
865
  private getDirtyFieldNames;
866
+ private collectDirtyFieldNames;
811
867
  private buildCurrentFormRuntimeContext;
812
868
  private buildRestoreTargetContext;
813
869
  private isCompatibleRuntimeStateContext;
@@ -888,11 +944,17 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
888
944
  toggleSectionCollapse(event: Event, section: FormSection): void;
889
945
  sectionPanelId(section: FormSection, index: number): string;
890
946
  getSectionCollapsedSummary(section: FormSection): string;
947
+ getColumnItems(column: FormColumn): FormLayoutItem[];
948
+ getColumnRenderItems(column: FormColumn): FormColumnRenderItem[];
891
949
  getColumnFields(column: {
892
- fields: string[];
950
+ fields?: string[];
951
+ items?: FormLayoutItem[];
893
952
  id?: string;
894
953
  }): FieldMetadata[];
954
+ getRichContentLayoutItemDocument(item: FormLayoutItem): RichContentDocument | null;
955
+ getRichContentLayoutItemLayout(item: FormLayoutItem): 'block' | 'inline';
895
956
  private getColumnFieldsSignature;
957
+ private getColumnItemsSignature;
896
958
  private getColumnRuleProps;
897
959
  private buildFieldRuleMetadataOverrides;
898
960
  private normalizeRuleFieldOptions;
@@ -911,6 +973,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
911
973
  private _showConfirmationDialog;
912
974
  onFormAction(event: PraxisFormActionEvent): void;
913
975
  private _executeAction;
976
+ private getFormActionEventId;
914
977
  onSubmit(): Promise<void>;
915
978
  private navigateAfterSave;
916
979
  private shouldConfirmCancelOnDirty;
@@ -978,6 +1041,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
978
1041
  private getControlTypeName;
979
1042
  private applyNullDeletionPatch;
980
1043
  private stripNullMarkersFromPatch;
1044
+ private mergeMetadataObjectPatch;
981
1045
  private deleteMetadataPath;
982
1046
  private getMetadataPath;
983
1047
  /**
@@ -1200,13 +1264,16 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
1200
1264
  };
1201
1265
  private destroy$;
1202
1266
  private hasProcessedInitialRuleState;
1267
+ private jsonEditorIsValid;
1268
+ private globalActionValidationIssues;
1269
+ private readonly globalActionCatalog;
1203
1270
  isDirty$: BehaviorSubject<boolean>;
1204
1271
  isValid$: BehaviorSubject<boolean>;
1205
1272
  isBusy$: BehaviorSubject<boolean>;
1206
1273
  private lastRulesSignature;
1207
1274
  private readonly DEBUG;
1208
1275
  private debugLog;
1209
- constructor(storage: AsyncConfigStorage, configService: FormConfigService, settingsPanel: SettingsPanelService, cdr: ChangeDetectorRef, injectedData?: any);
1276
+ constructor(storage: AsyncConfigStorage, configService: FormConfigService, settingsPanel: SettingsPanelService, cdr: ChangeDetectorRef, globalActionCatalogSource?: ReadonlyArray<GlobalActionCatalogEntry[]>, injectedData?: any);
1210
1277
  ngOnInit(): void;
1211
1278
  reset(): void;
1212
1279
  updateDirtyState(reason?: string): void;
@@ -1216,6 +1283,11 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
1216
1283
  onJsonValidationChange(result: JsonValidationResult): void;
1217
1284
  onJsonEditorEvent(_event: JsonEditorEvent): void;
1218
1285
  onConfigChange(newConfig: FormConfig): void;
1286
+ private updateValidityState;
1287
+ private collectGlobalActionValidationIssues;
1288
+ private collectGlobalActionValidationTargets;
1289
+ private findGlobalActionCatalogEntry;
1290
+ private buildGlobalActionCatalog;
1219
1291
  onRulesChanged(state: RuleBuilderState): void;
1220
1292
  get jsonDocument(): DynamicFormAuthoringDocument;
1221
1293
  onBackConfigChange(): void;
@@ -1248,7 +1320,7 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
1248
1320
  private toPresentationSnapshot;
1249
1321
  private toSchemaPrefsSnapshot;
1250
1322
  private toBackConfigSnapshot;
1251
- static ɵfac: i0.ɵɵFactoryDeclaration<PraxisDynamicFormConfigEditor, [null, null, null, null, { optional: true; }]>;
1323
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisDynamicFormConfigEditor, [null, null, null, null, { optional: true; }, { optional: true; }]>;
1252
1324
  static ɵcmp: i0.ɵɵComponentDeclaration<PraxisDynamicFormConfigEditor, "praxis-dynamic-form-config-editor", never, {}, {}, never, never, true, never>;
1253
1325
  }
1254
1326
  interface FormConfigLike {
@@ -1323,11 +1395,42 @@ declare class LayoutPrefsService {
1323
1395
  static ɵprov: i0.ɵɵInjectableDeclaration<LayoutPrefsService>;
1324
1396
  }
1325
1397
 
1398
+ type VisualBlockPresetId = 'text' | 'notice' | 'divider' | 'infoCard';
1399
+ interface VisualBlockPreset {
1400
+ id: VisualBlockPresetId;
1401
+ labelKey: string;
1402
+ icon: string;
1403
+ }
1404
+
1326
1405
  interface FieldDropEvent {
1327
1406
  event: CdkDragDrop<any>;
1328
1407
  sectionIndex: number;
1329
1408
  rowIndex: number;
1330
1409
  }
1410
+ interface VisualBlockEvent {
1411
+ sectionIndex: number;
1412
+ rowIndex: number;
1413
+ columnIndex: number;
1414
+ itemId: string;
1415
+ }
1416
+ interface AddVisualBlockEvent {
1417
+ sectionIndex: number;
1418
+ rowIndex: number;
1419
+ columnIndex: number;
1420
+ presetId: VisualBlockPresetId;
1421
+ }
1422
+ interface AddApiFieldEvent {
1423
+ sectionIndex: number;
1424
+ rowIndex: number;
1425
+ columnIndex: number;
1426
+ fieldName: string;
1427
+ }
1428
+ interface MoveVisualBlockEvent extends VisualBlockEvent {
1429
+ direction: -1 | 1;
1430
+ }
1431
+ interface MoveVisualBlockToColumnEvent extends VisualBlockEvent {
1432
+ targetColumnIndex: number;
1433
+ }
1331
1434
  /**
1332
1435
  * Editor component for configuring sections, rows and fields of a dynamic form.
1333
1436
  * Provides a collapsible palette of available fields.
@@ -1337,13 +1440,18 @@ declare class LayoutEditorComponent implements OnInit {
1337
1440
  configChange: EventEmitter<FormConfig>;
1338
1441
  paletteCollapsed: boolean;
1339
1442
  protected readonly prefs: LayoutPrefsService;
1443
+ private readonly layoutService;
1444
+ private readonly settingsPanel;
1445
+ private readonly i18n;
1446
+ private visualBlockIdSequence;
1340
1447
  protected readonly colorTokens: typeof LayoutColorToken;
1341
1448
  selected: {
1342
- type: 'section' | 'row' | 'column' | 'field';
1449
+ type: 'section' | 'row' | 'column' | 'field' | 'visualBlock';
1343
1450
  sectionIndex?: number;
1344
1451
  rowIndex?: number;
1345
1452
  columnIndex?: number;
1346
1453
  fieldName?: string;
1454
+ itemId?: string;
1347
1455
  } | null;
1348
1456
  gapGlobal: number;
1349
1457
  setGapGlobal(val: number | string): void;
@@ -1368,6 +1476,7 @@ declare class LayoutEditorComponent implements OnInit {
1368
1476
  * Fields that are not yet placed in any section/column of the layout.
1369
1477
  */
1370
1478
  get availableFields(): FieldMetadata[];
1479
+ t(key: string, params?: Record<string, string | number | boolean | null | undefined>): string;
1371
1480
  get columnDropListIds(): string[];
1372
1481
  getColumnId(sectionIndex: number, rowIndex: number, columnIndex: number): string;
1373
1482
  private parseColumnId;
@@ -1378,10 +1487,24 @@ declare class LayoutEditorComponent implements OnInit {
1378
1487
  selectRow(sectionIndex: number, rowIndex: number): void;
1379
1488
  selectColumn(sectionIndex: number, rowIndex: number, columnIndex: number): void;
1380
1489
  dropField({ event }: FieldDropEvent): void;
1490
+ private getColumnTargetByIndex;
1491
+ private getLayoutItemTargetByIndex;
1381
1492
  dropSection(event: CdkDragDrop<FormSection[]>): void;
1382
1493
  addSection(): void;
1383
1494
  removeSection(index: number): void;
1384
1495
  onSectionUpdated(index: number, updatedSection: FormSection): void;
1496
+ addVisualBlockToColumn(event: AddVisualBlockEvent): void;
1497
+ private createVisualBlockItemId;
1498
+ addApiFieldToColumn(event: AddApiFieldEvent): void;
1499
+ openVisualBlockEditor(event: {
1500
+ sectionIndex: number;
1501
+ rowIndex: number;
1502
+ columnIndex: number;
1503
+ itemId: string;
1504
+ }): void;
1505
+ moveVisualBlock(event: MoveVisualBlockEvent): void;
1506
+ moveVisualBlockToColumn(event: MoveVisualBlockToColumnEvent): void;
1507
+ removeVisualBlock(event: VisualBlockEvent): void;
1385
1508
  private emitNewConfig;
1386
1509
  onApplyStyleToAll(patch: Partial<FormSection>): void;
1387
1510
  trackBySection(index: number, s: FormSection & {
@@ -1394,15 +1517,17 @@ declare class LayoutEditorComponent implements OnInit {
1394
1517
  declare class RowConfiguratorComponent implements OnChanges {
1395
1518
  row: FormRow;
1396
1519
  fieldMetadata: FieldMetadata[];
1520
+ availableFields: FieldMetadata[];
1397
1521
  sectionIndex: number;
1398
1522
  rowIndex: number;
1399
1523
  isLastRow: boolean;
1400
1524
  selected: {
1401
- type: 'section' | 'row' | 'column' | 'field';
1525
+ type: 'section' | 'row' | 'column' | 'field' | 'visualBlock';
1402
1526
  sectionIndex?: number;
1403
1527
  rowIndex?: number;
1404
1528
  columnIndex?: number;
1405
1529
  fieldName?: string;
1530
+ itemId?: string;
1406
1531
  } | null;
1407
1532
  availableFieldsListId: string | null;
1408
1533
  connectedDropListIds: string[];
@@ -1412,8 +1537,42 @@ declare class RowConfiguratorComponent implements OnChanges {
1412
1537
  remove: EventEmitter<void>;
1413
1538
  applyRowGapAll: EventEmitter<number>;
1414
1539
  fieldDrop: EventEmitter<CdkDragDrop<any, any, any>>;
1540
+ addVisualBlock: EventEmitter<{
1541
+ rowIndex: number;
1542
+ columnIndex: number;
1543
+ presetId: VisualBlockPresetId;
1544
+ }>;
1545
+ addApiField: EventEmitter<{
1546
+ rowIndex: number;
1547
+ columnIndex: number;
1548
+ fieldName: string;
1549
+ }>;
1550
+ editVisualBlock: EventEmitter<{
1551
+ rowIndex: number;
1552
+ columnIndex: number;
1553
+ itemId: string;
1554
+ }>;
1555
+ moveVisualBlock: EventEmitter<{
1556
+ rowIndex: number;
1557
+ columnIndex: number;
1558
+ itemId: string;
1559
+ direction: -1 | 1;
1560
+ }>;
1561
+ moveVisualBlockToColumn: EventEmitter<{
1562
+ rowIndex: number;
1563
+ columnIndex: number;
1564
+ targetColumnIndex: number;
1565
+ itemId: string;
1566
+ }>;
1567
+ removeVisualBlock: EventEmitter<{
1568
+ rowIndex: number;
1569
+ columnIndex: number;
1570
+ itemId: string;
1571
+ }>;
1415
1572
  select: EventEmitter<any>;
1416
1573
  activeDropIndex: number | null;
1574
+ protected readonly visualBlockPresets: readonly VisualBlockPreset[];
1575
+ private readonly i18n;
1417
1576
  private hoverTimer;
1418
1577
  protected readonly breakpoints: Breakpoint[];
1419
1578
  previewBreakpoint: Breakpoint;
@@ -1426,6 +1585,19 @@ declare class RowConfiguratorComponent implements OnChanges {
1426
1585
  ngOnChanges(changes: SimpleChanges): void;
1427
1586
  private rebuildConnectedColumnsCache;
1428
1587
  getFieldByName(fieldName: string): FieldMetadata;
1588
+ getColumnLayoutItems(column: FormColumn): FormLayoutItem[];
1589
+ hasColumnContent(column: FormColumn): boolean;
1590
+ getVisualBlockLabel(item: FormLayoutItem): string;
1591
+ private findRichContentLabel;
1592
+ private findRichNodeLabel;
1593
+ t(key: string, params?: Record<string, string | number | boolean | null | undefined>): string;
1594
+ getFieldLabel(field: FieldMetadata): string;
1595
+ selectVisualBlock(columnIndex: number, item: FormLayoutItem, event: MouseEvent): void;
1596
+ openVisualBlockEditor(columnIndex: number, item: FormLayoutItem, event: MouseEvent): void;
1597
+ moveVisualBlockItem(columnIndex: number, item: FormLayoutItem, direction: -1 | 1, event: MouseEvent): void;
1598
+ canMoveVisualBlockToColumn(columnIndex: number, direction: -1 | 1): boolean;
1599
+ moveVisualBlockToAdjacentColumn(columnIndex: number, item: FormLayoutItem, direction: -1 | 1, event: MouseEvent): void;
1600
+ removeVisualBlockItem(columnIndex: number, item: FormLayoutItem, event: MouseEvent): void;
1429
1601
  drop(event: CdkDragDrop<string[]>): void;
1430
1602
  selectRow(): void;
1431
1603
  openColumnConfig(index: number): void;
@@ -1444,6 +1616,8 @@ declare class RowConfiguratorComponent implements OnChanges {
1444
1616
  removeRow(): void;
1445
1617
  moveColumn(index: number, direction: number): void;
1446
1618
  clearColumn(index: number): void;
1619
+ addVisualBlockToColumn(index: number, presetId: VisualBlockPresetId): void;
1620
+ addApiFieldToColumn(index: number, fieldName: string): void;
1447
1621
  addFieldToColumn(index: number): void;
1448
1622
  getColumnId(index: number): string;
1449
1623
  private generateId;
@@ -1467,7 +1641,7 @@ declare class RowConfiguratorComponent implements OnChanges {
1467
1641
  adjustOffset(columnIndex: number, delta: number): void;
1468
1642
  getSuggestedSpan(columnIndex: number): number | null;
1469
1643
  static ɵfac: i0.ɵɵFactoryDeclaration<RowConfiguratorComponent, never>;
1470
- static ɵcmp: i0.ɵɵComponentDeclaration<RowConfiguratorComponent, "praxis-row-configurator", never, { "row": { "alias": "row"; "required": false; }; "fieldMetadata": { "alias": "fieldMetadata"; "required": false; }; "sectionIndex": { "alias": "sectionIndex"; "required": false; }; "rowIndex": { "alias": "rowIndex"; "required": false; }; "isLastRow": { "alias": "isLastRow"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "availableFieldsListId": { "alias": "availableFieldsListId"; "required": false; }; "connectedDropListIds": { "alias": "connectedDropListIds"; "required": false; }; "gapGlobal": { "alias": "gapGlobal"; "required": false; }; }, { "rowChange": "rowChange"; "remove": "remove"; "applyRowGapAll": "applyRowGapAll"; "fieldDrop": "fieldDrop"; "select": "select"; }, never, never, true, never>;
1644
+ static ɵcmp: i0.ɵɵComponentDeclaration<RowConfiguratorComponent, "praxis-row-configurator", never, { "row": { "alias": "row"; "required": false; }; "fieldMetadata": { "alias": "fieldMetadata"; "required": false; }; "availableFields": { "alias": "availableFields"; "required": false; }; "sectionIndex": { "alias": "sectionIndex"; "required": false; }; "rowIndex": { "alias": "rowIndex"; "required": false; }; "isLastRow": { "alias": "isLastRow"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "availableFieldsListId": { "alias": "availableFieldsListId"; "required": false; }; "connectedDropListIds": { "alias": "connectedDropListIds"; "required": false; }; "gapGlobal": { "alias": "gapGlobal"; "required": false; }; }, { "rowChange": "rowChange"; "remove": "remove"; "applyRowGapAll": "applyRowGapAll"; "fieldDrop": "fieldDrop"; "addVisualBlock": "addVisualBlock"; "addApiField": "addApiField"; "editVisualBlock": "editVisualBlock"; "moveVisualBlock": "moveVisualBlock"; "moveVisualBlockToColumn": "moveVisualBlockToColumn"; "removeVisualBlock": "removeVisualBlock"; "select": "select"; }, never, never, true, never>;
1471
1645
  }
1472
1646
 
1473
1647
  declare class FieldConfiguratorComponent {
@@ -1581,6 +1755,7 @@ type ActionCatalogOption = {
1581
1755
  id: string;
1582
1756
  label: string;
1583
1757
  description?: string;
1758
+ payloadSchema?: GlobalActionCatalogEntry['payloadSchema'];
1584
1759
  param?: {
1585
1760
  required?: boolean;
1586
1761
  label?: string;
@@ -1634,7 +1809,6 @@ declare class SectionEditorComponent implements OnInit, AfterViewInit, OnDestroy
1634
1809
  isBusy$: BehaviorSubject<boolean>;
1635
1810
  private readonly globalActionCatalogSource;
1636
1811
  private readonly i18n;
1637
- readonly legacyActionSpecs: _praxisui_core.GlobalActionSpec[];
1638
1812
  readonly globalActionCatalog: ActionCatalogOption[];
1639
1813
  readonly customActionValue = "__custom__";
1640
1814
  private destroy$;
@@ -1654,12 +1828,12 @@ declare class SectionEditorComponent implements OnInit, AfterViewInit, OnDestroy
1654
1828
  label?: string;
1655
1829
  }): string;
1656
1830
  getHeaderActionSpecById(id: string): ActionCatalogOption | undefined;
1657
- getHeaderActionSelectValue(value?: string): string;
1658
- getHeaderActionParam(value?: string): string;
1659
- getHeaderActionCustomValue(value?: string): string;
1660
- getHeaderGlobalActionSchema(value?: string): _praxisui_core.GlobalActionUiSchema | undefined;
1661
- getHeaderSurfaceOpenActionPayload(value?: string): SurfaceOpenPayload;
1662
- isHeaderActionParamMissing(value?: string): boolean;
1831
+ getHeaderActionSelectValue(value?: string, globalAction?: GlobalActionRef): string;
1832
+ getHeaderActionParam(value?: string, globalAction?: GlobalActionRef): string;
1833
+ getHeaderActionCustomValue(value?: string, globalAction?: GlobalActionRef): string;
1834
+ getHeaderGlobalActionSchema(value?: string, globalAction?: GlobalActionRef): _praxisui_core.GlobalActionUiSchema | undefined;
1835
+ getHeaderSurfaceOpenActionPayload(value?: string, globalAction?: GlobalActionRef): SurfaceOpenPayload;
1836
+ isHeaderActionParamMissing(value?: string, globalAction?: GlobalActionRef): boolean;
1663
1837
  onHeaderActionSelectChange(index: number, value: string): void;
1664
1838
  onHeaderActionParamChange(index: number, value: string): void;
1665
1839
  onHeaderActionCustomChange(index: number, value: string): void;
@@ -1693,6 +1867,7 @@ declare class SectionEditorComponent implements OnInit, AfterViewInit, OnDestroy
1693
1867
  private normalizeHeaderActions;
1694
1868
  private mapCatalogEntryToActionSpec;
1695
1869
  private getActionCatalogDescription;
1870
+ private normalizeHeaderGlobalAction;
1696
1871
  private headerActionStyleValidator;
1697
1872
  private stringifyHeaderActionStyle;
1698
1873
  private parseHeaderActionStyle;
@@ -1973,5 +2148,14 @@ declare const FORM_COMPONENT_AI_CAPABILITIES: CapabilityCatalog;
1973
2148
  */
1974
2149
  declare function getFormAiCatalog(formConfig?: FormConfig): AiCapabilityCatalog;
1975
2150
 
1976
- export { ActionsEditorComponent, CanvasStateService, CanvasToolbarComponent, ColumnEditorComponent, DynamicFormLayoutService, FORM_AI_CAPABILITIES, FORM_COMPONENT_AI_CAPABILITIES, FieldConfiguratorComponent, FieldEditorComponent, FormConfigService, FormContextService, FormLayoutService, JsonConfigEditorComponent, LayoutColorToken, LayoutEditorComponent, LayoutPrefsService, PRAXIS_DYNAMIC_FORM_COMPONENT_METADATA, PRAXIS_FILTER_FORM_COMPONENT_METADATA, PraxisDynamicForm, PraxisDynamicFormConfigEditor, PraxisFilterForm, PraxisFormActionsComponent, RowConfiguratorComponent, RowEditorComponent, SETTINGS_PANEL_DYNAMIC_FORM_PROVIDER, SectionEditorComponent, TASK_PRESETS, applyVisibilityRules, buildDynamicFormApplyPlan, createDynamicFormAuthoringDocument, formLayoutRulesToBuilderState, getFormAiCatalog, getFormCapabilities, getFormEnum, isRuleSatisfied, normalizeDateArrays, normalizeDynamicFormAuthoringDocument, parseLegacyOrDynamicFormDocument, providePraxisDynamicFormMetadata, providePraxisFilterFormMetadata, provideSettingsPanelDynamicForm, ruleBuilderStateToFormLayoutRules, serializeDynamicFormAuthoringDocument, stripLegacyFieldMetadata, toCanonicalDynamicFormConfig, validateDynamicFormAuthoringDocument, validateDynamicFormAuthoringInput };
2151
+ /**
2152
+ * Manifesto de authoring canônico para o componente praxis-dynamic-form.
2153
+ * Este arquivo define as operações permitidas pela IA para editar formulários.
2154
+ *
2155
+ * @version 1.5.0
2156
+ * @status COMPLIANT - Alinhado com contrato v2, gate de aceitação e semântica local/schema-backed.
2157
+ */
2158
+ declare const PRAXIS_DYNAMIC_FORM_AUTHORING_MANIFEST: ComponentAuthoringManifest;
2159
+
2160
+ export { ActionsEditorComponent, CanvasStateService, CanvasToolbarComponent, ColumnEditorComponent, DynamicFormLayoutService, FORM_AI_CAPABILITIES, FORM_COMPONENT_AI_CAPABILITIES, FieldConfiguratorComponent, FieldEditorComponent, FormConfigService, FormContextService, FormLayoutService, JsonConfigEditorComponent, LayoutColorToken, LayoutEditorComponent, LayoutPrefsService, PRAXIS_DYNAMIC_FORM_AUTHORING_MANIFEST, PRAXIS_DYNAMIC_FORM_COMPONENT_METADATA, PRAXIS_FILTER_FORM_COMPONENT_METADATA, PraxisDynamicForm, PraxisDynamicFormConfigEditor, PraxisFilterForm, PraxisFormActionsComponent, RowConfiguratorComponent, RowEditorComponent, SETTINGS_PANEL_DYNAMIC_FORM_PROVIDER, SectionEditorComponent, TASK_PRESETS, applyVisibilityRules, buildDynamicFormApplyPlan, createDynamicFormAuthoringDocument, formLayoutRulesToBuilderState, getFormAiCatalog, getFormCapabilities, getFormEnum, isRuleSatisfied, normalizeDateArrays, normalizeDynamicFormAuthoringDocument, parseLegacyOrDynamicFormDocument, providePraxisDynamicFormMetadata, providePraxisFilterFormMetadata, provideSettingsPanelDynamicForm, ruleBuilderStateToFormLayoutRules, serializeDynamicFormAuthoringDocument, stripLegacyFieldMetadata, toCanonicalDynamicFormConfig, validateDynamicFormAuthoringDocument, validateDynamicFormAuthoringInput };
1977
2161
  export type { CanvasElement, CanvasElementType, CanvasPathPart, Capability$1 as Capability, CapabilityCatalog$1 as CapabilityCatalog, CapabilityCategory$1 as CapabilityCategory, DynamicFieldRenderErrorEvent, DynamicFormApplyPlan, DynamicFormAuthoringDocument, DynamicFormBindings, DynamicFormContextSnapshot, DynamicFormMode, DynamicFormPresentationSnapshot, DynamicFormProjectionContext, DynamicFormResolvedRuntimeContract, DynamicFormRuntimeContext, DynamicFormRuntimeValueSource, DynamicFormSchemaPrefsSnapshot, DynamicFormValidationContext, EditorDiagnostic, EditorDocument, FieldPath, FieldPathContainer, FieldPathWithIndex, Capability as FormComponentCapability, CapabilityCatalog as FormComponentCapabilityCatalog, CapabilityCategory as FormComponentCapabilityCategory, ValueKind as FormComponentValueKind, FormConfigLike, IdPath, JsonEditorEvent, JsonValidationResult, LayoutChange, LayoutResult, Operation, Path, PathWithIndex, PraxisFormActionEvent, RemovePolicy, ValidationReport, ValueKind$1 as ValueKind };
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@praxisui/dynamic-form",
3
- "version": "8.0.0-beta.1",
3
+ "version": "8.0.0-beta.12",
4
4
  "description": "Angular dynamic form engine for Praxis UI: metadata-driven forms, hooks, and services integrating @praxisui/* packages.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^20.0.0",
7
7
  "@angular/core": "^20.0.0",
8
8
  "@angular/cdk": "^20.0.0",
9
- "@praxisui/rich-content": "^8.0.0-beta.1",
10
- "@praxisui/settings-panel": "^8.0.0-beta.1",
11
- "@praxisui/visual-builder": "^8.0.0-beta.1",
12
- "@praxisui/core": "^8.0.0-beta.1",
13
- "@praxisui/cron-builder": "^8.0.0-beta.1"
9
+ "@praxisui/rich-content": "^8.0.0-beta.12",
10
+ "@praxisui/settings-panel": "^8.0.0-beta.12",
11
+ "@praxisui/visual-builder": "^8.0.0-beta.12",
12
+ "@praxisui/core": "^8.0.0-beta.12",
13
+ "@praxisui/cron-builder": "^8.0.0-beta.12"
14
14
  },
15
15
  "dependencies": {
16
16
  "tslib": "^2.3.0",