@praxisui/dynamic-form 10.0.0-rc.4 → 10.0.0-rc.40
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/README.md +18 -0
- package/ai/component-registry.json +617 -155
- package/docs/dynamic-form-authoring-document-semantics.md +68 -2
- package/docs/evidence/form-authoring-635-20261023/final-review.md +46 -0
- package/docs/evidence/form-authoring-635-20261023/independent-review-vb-form.md +50 -0
- package/docs/evidence/form-authoring-635-20261023/validation.md +76 -0
- package/docs/evidence/p1-authoring-20261022/validation.md +134 -0
- package/docs/governed-page-widget-adapter.md +58 -0
- package/docs/hot-metadata-updates.md +16 -0
- package/fesm2022/praxisui-dynamic-form.mjs +3665 -1067
- package/package.json +8 -8
- package/src/lib/config-editor/praxis-dynamic-form-config-editor.json-api.md +11 -3
- package/src/lib/praxis-dynamic-form.json-api.md +26 -5
- package/types/praxisui-dynamic-form.d.ts +285 -21
|
@@ -7,7 +7,8 @@ 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, FormConfigWithSections, FormLayoutItem, ReactiveDeterminationDefinition, ReactiveDeterminationExecutionEvent, FormActionButton, AiCapability, BackConfig, FormPresentationConfig, EmptyStateTone, EmptyStateVariant, EmptyStateAlignment, EmptyStateDensity, EmptyStateIconContainer, RichBlockHostCapabilities, ApiEndpoint, ApiUrlEntry, DynamicFormLayoutPolicy, FormHooksLayout, EndpointConfig, FormSubmitEvent, FormReadyEvent, FormValueChangeEvent, FormPayloadPreviewEvent, SyncResult, FormInitializationError, LoadingState, FormCustomActionEvent, FormActionConfirmationEvent, RichContentDocument, JsonLogicRecord, GenericCrudService, ConnectionStorage, DynamicFormService, ErrorMessageService, SchemaNormalizerService, ComponentMetadataRegistry, GlobalConfigService, ComponentKeyService, LoadingOrchestrator, ApiUrlConfig, PraxisLoadingRenderer, FormHooksRegistry, FormHookPreset, LoggerService, EnterpriseRuntimeContextService, FormSectionHeaderAction, FormSectionHeaderConfig, FormConfigState, JsonLogicExpression, FormHelpPresentationConfig, GlobalActionCatalogEntry, PraxisRuntimeConditionalEffectRule, PraxisRuntimeGlobalActionEffect, SurfaceOpenPayload, GlobalActionField, PraxisEffectPolicy, FieldDefinition, ComponentDocMeta, Breakpoint, DomainRuleRequestOptions, DomainRuleService, DomainRuleMaterialization, TableConfig, SurfaceOpenActionEditorComponent, IconPickerService, GlobalActionRef, AiCapabilityCategory, AiCapabilityCatalog, AiValueKind, ComponentAuthoringManifest } from '@praxisui/core';
|
|
10
|
+
import { AsyncConfigStorage, FormLayout, FieldMetadata, FormLayoutRule, FormRuleTargetType as FormRuleTargetType$1, PraxisJsonLogicService, FormSection, FormRow, FormColumn, FormConfig, FormConfigWithSections, FormLayoutItem, ReactiveDeterminationDefinition, ReactiveDeterminationExecutionEvent, FormActionButton, DynamicFormMode, AiCapability, DynamicFormLayoutScope, BackConfig, FormPresentationConfig, EmptyStateTone, EmptyStateVariant, EmptyStateAlignment, EmptyStateDensity, EmptyStateIconContainer, FormPresentationPreset, RichBlockHostCapabilities, ApiEndpoint, ApiUrlEntry, FormLayoutMode, FormLayoutOptions, DynamicFormLayoutPolicy, FormHooksLayout, EndpointConfig, FormSubmitEvent, FormReadyEvent, FormValueChangeEvent, FormPayloadPreviewEvent, SyncResult, FormInitializationError, LoadingState, FormCustomActionEvent, FormActionConfirmationEvent, FormLayoutTabItem, RichContentDocument, JsonLogicRecord, GenericCrudService, ConnectionStorage, DynamicFormService, ErrorMessageService, SchemaNormalizerService, ComponentMetadataRegistry, GlobalConfigService, ComponentKeyService, LoadingOrchestrator, ApiUrlConfig, PraxisLoadingRenderer, FormHooksRegistry, FormHookPreset, LoggerService, EnterpriseRuntimeContextService, FormLayoutTabsAppearance, FormSectionHeaderAction, FormSectionHeaderConfig, FormConfigState, JsonLogicExpression, FormHelpPresentationConfig, GlobalActionCatalogEntry, PraxisRuntimeConditionalEffectRule, PraxisRuntimeGlobalActionEffect, SurfaceOpenPayload, GlobalActionField, PraxisEffectPolicy, FieldDefinition, ComponentDocMeta, DiscoveredResourceOption, Breakpoint, DomainRuleRequestOptions, DomainRuleService, DomainRuleMaterialization, SchemaIdParams, CompiledDynamicFormSchema, TableConfig, SurfaceOpenActionEditorComponent, IconPickerService, GlobalActionRef, AiCapabilityCategory, AiCapabilityCatalog, AiValueKind, ComponentAuthoringManifest, GovernedPagePreviewWidgetAdapter, WidgetInstance } from '@praxisui/core';
|
|
11
|
+
export { CompiledDynamicFormSchema, DynamicFormLayoutScope, DynamicFormMode } from '@praxisui/core';
|
|
11
12
|
import * as rxjs from 'rxjs';
|
|
12
13
|
import { Observable, Subscription, BehaviorSubject } from 'rxjs';
|
|
13
14
|
import { SettingsPanelService, SettingsValueProvider } from '@praxisui/settings-panel';
|
|
@@ -374,7 +375,7 @@ declare class ReactiveDeterminationRuntimeService {
|
|
|
374
375
|
waitForStable(form: FormGroup, timeoutMs?: number): Promise<boolean>;
|
|
375
376
|
observePending(form: FormGroup, observer: (pending: boolean) => void): Subscription;
|
|
376
377
|
isOwnedTarget(form: FormGroup, control: AbstractControl): boolean;
|
|
377
|
-
connect(form: FormGroup, definitions: ReactiveDeterminationDefinition[], executor: ReactiveDeterminationExecutor, onEvent?: (event: ReactiveDeterminationExecutionEvent) => void, operationTimeoutMs?: number): Subscription;
|
|
378
|
+
connect(form: FormGroup, definitions: ReactiveDeterminationDefinition[], executor: ReactiveDeterminationExecutor, onEvent?: (event: ReactiveDeterminationExecutionEvent) => void, operationTimeoutMs?: number, fieldMetadata?: readonly FieldMetadata[]): Subscription;
|
|
378
379
|
private resolveControls;
|
|
379
380
|
private waitForUpstreamDeterminations;
|
|
380
381
|
private claimTargets;
|
|
@@ -508,7 +509,7 @@ declare class PraxisFormActionsComponent implements OnChanges, OnDestroy {
|
|
|
508
509
|
interface FormAiHost {
|
|
509
510
|
config: FormConfig;
|
|
510
511
|
form: FormGroup;
|
|
511
|
-
mode?:
|
|
512
|
+
mode?: DynamicFormMode;
|
|
512
513
|
enableCustomization?: boolean;
|
|
513
514
|
readonlyModeGlobal?: boolean | null;
|
|
514
515
|
effectiveReadonly?: boolean;
|
|
@@ -572,9 +573,11 @@ interface EditorDiagnostic {
|
|
|
572
573
|
message: string;
|
|
573
574
|
path?: string;
|
|
574
575
|
}
|
|
575
|
-
|
|
576
|
+
|
|
576
577
|
interface DynamicFormBindings {
|
|
577
578
|
mode?: DynamicFormMode;
|
|
579
|
+
/** Controls whether saved layout changes apply to all CRUD modes ('shared') or only the active mode ('mode-only'). */
|
|
580
|
+
layoutScope?: DynamicFormLayoutScope;
|
|
578
581
|
/** Opt-in view placeholder; null explicitly disables it. */
|
|
579
582
|
emptyState?: PraxisDynamicFormEmptyState | null;
|
|
580
583
|
/** true: presentation in view; false: fields; null/absent: inherit layout policy. */
|
|
@@ -588,7 +591,7 @@ interface DynamicFormSchemaPrefsSnapshot {
|
|
|
588
591
|
}
|
|
589
592
|
interface DynamicFormContextSnapshot {
|
|
590
593
|
backConfig?: BackConfig;
|
|
591
|
-
presentation?: DynamicFormPresentationSnapshot;
|
|
594
|
+
presentation?: DynamicFormPresentationSnapshot | null;
|
|
592
595
|
schemaPrefs?: DynamicFormSchemaPrefsSnapshot;
|
|
593
596
|
}
|
|
594
597
|
interface DynamicFormAuthoringDocument extends EditorDocument<FormConfig, DynamicFormBindings> {
|
|
@@ -647,6 +650,7 @@ interface DynamicFormApplyPlan {
|
|
|
647
650
|
};
|
|
648
651
|
diff?: {
|
|
649
652
|
modeChanged?: boolean;
|
|
653
|
+
layoutScopeChanged?: boolean;
|
|
650
654
|
presentationChanged?: boolean;
|
|
651
655
|
schemaPrefsChanged?: boolean;
|
|
652
656
|
backConfigChanged?: boolean;
|
|
@@ -661,6 +665,7 @@ interface DynamicFormConfigPatchChangeEvent {
|
|
|
661
665
|
mode?: DynamicFormMode;
|
|
662
666
|
presentationModeGlobal?: boolean | null;
|
|
663
667
|
presentation?: DynamicFormPresentationSnapshot | null;
|
|
668
|
+
presentationPreset?: FormPresentationPreset;
|
|
664
669
|
emptyState?: PraxisDynamicFormEmptyState | null;
|
|
665
670
|
};
|
|
666
671
|
}
|
|
@@ -769,6 +774,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
769
774
|
private readonly resourceDiscovery;
|
|
770
775
|
private readonly aiAssistantSessionEffect;
|
|
771
776
|
private readonly globalActions;
|
|
777
|
+
private readonly optionRegistry;
|
|
772
778
|
private readonly DEBUG;
|
|
773
779
|
private effectiveActionsCache?;
|
|
774
780
|
private effectiveActionsCacheBase?;
|
|
@@ -790,8 +796,11 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
790
796
|
* merged context snapshot used to avoid re-binding on every change detection pass.
|
|
791
797
|
*/
|
|
792
798
|
editorialContext: Record<string, unknown> | null;
|
|
793
|
-
mode:
|
|
794
|
-
|
|
799
|
+
mode: DynamicFormMode;
|
|
800
|
+
private effectiveConfig;
|
|
801
|
+
private configAssignment;
|
|
802
|
+
get config(): FormConfig;
|
|
803
|
+
set config(value: FormConfig);
|
|
795
804
|
private hostConfigInputProvided;
|
|
796
805
|
/** Optional host-level overrides for the rendered form action bar. */
|
|
797
806
|
actions?: FormConfig['actions'] | null;
|
|
@@ -800,7 +809,11 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
800
809
|
* 'resource' (padrão) usa o schema do recurso (/{resource}/schemas -> .../all response)
|
|
801
810
|
* 'filter' usa o schema do DTO de filtro (via /schemas/filtered no POST /filter request)
|
|
802
811
|
*/
|
|
803
|
-
schemaSource: 'resource' | 'filter';
|
|
812
|
+
schemaSource: 'resource' | 'filter' | 'action';
|
|
813
|
+
/** Canonical workflow/action identifier when bound to a command surface. */
|
|
814
|
+
actionId?: string | null;
|
|
815
|
+
/** Canonical backend operationId when bound to a command/surface endpoint. */
|
|
816
|
+
operationId?: string | null;
|
|
804
817
|
/** Canonical schema URL published by the backend surface catalog. */
|
|
805
818
|
schemaUrl?: string | null;
|
|
806
819
|
/** Canonical read URL published by backend view/read-projection surfaces. */
|
|
@@ -848,9 +861,19 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
848
861
|
/** Identifier for persisting layouts */
|
|
849
862
|
formId?: string;
|
|
850
863
|
componentInstanceId?: string;
|
|
851
|
-
configPersistenceStrategy: 'local-first' | 'input-first';
|
|
864
|
+
configPersistenceStrategy: 'local-first' | 'input-first' | 'volatile';
|
|
852
865
|
/** Optional layout to use instead of generated one */
|
|
853
866
|
layout?: FormLayout;
|
|
867
|
+
/**
|
|
868
|
+
* Layout mode for organizing form sections: 'vertical' (default), 'tabs' or 'accordion'.
|
|
869
|
+
* Overrides config.layout.mode when specified.
|
|
870
|
+
*/
|
|
871
|
+
layoutMode?: FormLayoutMode;
|
|
872
|
+
/**
|
|
873
|
+
* Layout configuration options for form sections (mode, tabs, defaultTabId, tabsAppearance, accordionMulti, etc.).
|
|
874
|
+
* Merged with and takes precedence over config.layout.
|
|
875
|
+
*/
|
|
876
|
+
formLayout?: FormLayoutOptions;
|
|
854
877
|
/** Metadata-driven layout preset used only when creating an initial config from schema. */
|
|
855
878
|
generatedLayoutPreset: DynamicFormGeneratedLayoutPreset;
|
|
856
879
|
/** Opt-in policy for schema-driven transient layout materialization. */
|
|
@@ -876,11 +899,38 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
876
899
|
presentationModeGlobal: boolean | null;
|
|
877
900
|
/** Projection of contextSnapshot.presentation; null clears authored style overrides. */
|
|
878
901
|
presentation?: DynamicFormPresentationSnapshot | null;
|
|
902
|
+
/**
|
|
903
|
+
* Optional presentation preset applied when the form is rendered in presentation mode.
|
|
904
|
+
* Resolves styles for standard patterns: 'corporate-dossier', 'editorial-card', 'compact-presentation' or 'default'.
|
|
905
|
+
*/
|
|
906
|
+
presentationPreset?: FormPresentationPreset;
|
|
907
|
+
/**
|
|
908
|
+
* Default visual appearance preset for sections when not explicitly configured at section level.
|
|
909
|
+
* Values: 'card' (default), 'plain' (borderless with divider support), 'step' (stepper badge layout).
|
|
910
|
+
*/
|
|
911
|
+
sectionDefaultAppearance?: 'card' | 'plain' | 'step';
|
|
912
|
+
/**
|
|
913
|
+
* Global flag to control divider lines between plain/dossier sections.
|
|
914
|
+
* When true, renders a subtle separator line below each section (except the last).
|
|
915
|
+
*/
|
|
916
|
+
sectionDivider?: boolean;
|
|
879
917
|
visibleGlobal: boolean | null;
|
|
880
918
|
fieldIconPolicy: 'all' | 'presentation-only' | 'none';
|
|
881
919
|
/** Opt-in loader for shared domain rule materializations persisted outside FormConfig. */
|
|
882
920
|
domainRules: PraxisDynamicFormDomainRulesOptions | boolean | null;
|
|
883
921
|
get effectivePresentation(): boolean;
|
|
922
|
+
/** Normalizes presentation preset aliases and casing to canonical values. */
|
|
923
|
+
normalizePresentationPreset(preset?: string | null): FormPresentationPreset;
|
|
924
|
+
/** Resolved presentation preset for the form container. */
|
|
925
|
+
get effectivePresentationPreset(): FormPresentationPreset;
|
|
926
|
+
/** Resolved presentation preset for a specific section, allowing section-level override. */
|
|
927
|
+
getSectionPresentationPreset(section?: FormSection | null): FormPresentationPreset;
|
|
928
|
+
isCorporateDossierPreset(): boolean;
|
|
929
|
+
isEditorialCardPreset(): boolean;
|
|
930
|
+
isCompactPresentationPreset(): boolean;
|
|
931
|
+
isSectionCorporateDossier(section?: FormSection | null): boolean;
|
|
932
|
+
isSectionEditorialCard(section?: FormSection | null): boolean;
|
|
933
|
+
isSectionCompactPresentation(section?: FormSection | null): boolean;
|
|
884
934
|
shouldShowContextEmptyState(): boolean;
|
|
885
935
|
private hasResourceContext;
|
|
886
936
|
private hasLocalRecordContext;
|
|
@@ -932,10 +982,19 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
932
982
|
reactiveDeterminationExecuted: EventEmitter<ReactiveDeterminationExecutionEvent>;
|
|
933
983
|
/** Emits only aggregate runtime state; no request or response payload is exposed. */
|
|
934
984
|
reactiveDeterminationPendingChange: EventEmitter<boolean>;
|
|
985
|
+
/** Emitted when active tab changes in 'tabs' layout mode. */
|
|
986
|
+
tabChange: EventEmitter<string>;
|
|
987
|
+
/** Emitted when a tab is selected in 'tabs' layout mode. */
|
|
988
|
+
tabSelected: EventEmitter<FormLayoutTabItem>;
|
|
989
|
+
/** Active tab ID when effectiveLayoutMode === 'tabs'. */
|
|
990
|
+
activeTabId: string | null;
|
|
935
991
|
private reactiveDeterminationPending;
|
|
936
992
|
isLoading: boolean;
|
|
937
993
|
submitting: boolean;
|
|
938
994
|
private submitPreparationInProgress;
|
|
995
|
+
private submitLifecycleSequence;
|
|
996
|
+
private activeSubmitLifecycle;
|
|
997
|
+
private activeSubmitAutomatic;
|
|
939
998
|
submitError: string | null;
|
|
940
999
|
initializationStatus: 'idle' | 'loading' | 'success' | 'error';
|
|
941
1000
|
currentErrorMessage: string;
|
|
@@ -970,6 +1029,9 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
970
1029
|
private entitySelectionCleared;
|
|
971
1030
|
private hydratedEntityId;
|
|
972
1031
|
private loadedEntityData;
|
|
1032
|
+
private loadedResourceRevision;
|
|
1033
|
+
private resourceRevisionInvalidated;
|
|
1034
|
+
private entityReadAttempt;
|
|
973
1035
|
protected entityHydrationPending: boolean;
|
|
974
1036
|
protected entityReadFailed: boolean;
|
|
975
1037
|
protected entityReadText(key: 'loading' | 'error' | 'retry' | 'region' | 'success'): string;
|
|
@@ -984,6 +1046,10 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
984
1046
|
private schemaCache;
|
|
985
1047
|
private lastSchemaMeta?;
|
|
986
1048
|
private readonly schemaMetaPersistenceQueues;
|
|
1049
|
+
private persistenceContextEpoch;
|
|
1050
|
+
private persistenceContextDestroyed;
|
|
1051
|
+
/** Fence delayed work; requests already sent are not retroactively canceled. */
|
|
1052
|
+
private persistenceGuard;
|
|
987
1053
|
private readonly formConfigPersistenceQueues;
|
|
988
1054
|
private readonly formConfigPersistenceGenerations;
|
|
989
1055
|
private readonly formConfigConflictBlockThrough;
|
|
@@ -1090,6 +1156,17 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
1090
1156
|
private resolveSubmitOperation;
|
|
1091
1157
|
private buildSubmitRequest;
|
|
1092
1158
|
private resolveSubmitResourceVersion;
|
|
1159
|
+
/** Identity and server context are captured with the representation, never reconstructed at submit by GET. */
|
|
1160
|
+
private resourceRevisionBinding;
|
|
1161
|
+
private usesAutomaticItemRevision;
|
|
1162
|
+
private isResourceRevisionCurrent;
|
|
1163
|
+
private invalidateAutomaticSubmitUi;
|
|
1164
|
+
private resourceRevisionNeedsReload;
|
|
1165
|
+
private resourceRevisionReloadError;
|
|
1166
|
+
private captureSavedResourceRevision;
|
|
1167
|
+
private rejectResourceRevision;
|
|
1168
|
+
private normalizeResourceVersionToken;
|
|
1169
|
+
private extractResourceVersionCandidate;
|
|
1093
1170
|
private normalizeSubmitMethod;
|
|
1094
1171
|
private formatResourceVersion;
|
|
1095
1172
|
private resolveSubmitHref;
|
|
@@ -1116,6 +1193,8 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
1116
1193
|
private initializeStandaloneConfig;
|
|
1117
1194
|
private initializeDisconnectedEmptyState;
|
|
1118
1195
|
private reloadForModeChange;
|
|
1196
|
+
private resourceRevisionContextScope;
|
|
1197
|
+
private subscribeToRuntimeContextChanges;
|
|
1119
1198
|
ngOnInit(): void;
|
|
1120
1199
|
ngOnChanges(changes: SimpleChanges): void;
|
|
1121
1200
|
private blurAllInputs;
|
|
@@ -1134,6 +1213,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
1134
1213
|
private reconcileLoadedConfigWithServerSchema;
|
|
1135
1214
|
private hostConfigHasAuthoredLocalFieldsNotInLocalConfig;
|
|
1136
1215
|
private syncWithServer;
|
|
1216
|
+
private isActionCommandWithoutExplicitReadUrl;
|
|
1137
1217
|
private loadEntity;
|
|
1138
1218
|
private hydrateEntityFromInitialValue;
|
|
1139
1219
|
private flushEntityHydrationState;
|
|
@@ -1219,6 +1299,18 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
1219
1299
|
private areRuleValuesEqual;
|
|
1220
1300
|
private buildRuleApplicationTargetIndex;
|
|
1221
1301
|
private setRuleApplicationDiagnostics;
|
|
1302
|
+
get effectiveLayoutMode(): FormLayoutMode;
|
|
1303
|
+
get effectiveTabsAppearance(): FormLayoutTabsAppearance;
|
|
1304
|
+
get effectiveAccordionMulti(): boolean;
|
|
1305
|
+
get effectiveHideSectionHeaderInTabs(): boolean;
|
|
1306
|
+
get effectiveTabs(): FormLayoutTabItem[];
|
|
1307
|
+
ensureActiveTabValid(): void;
|
|
1308
|
+
selectTab(tabId: string): void;
|
|
1309
|
+
isSectionInActiveTab(section?: FormSection): boolean;
|
|
1310
|
+
getTabErrorCount(tab: FormLayoutTabItem): number;
|
|
1311
|
+
getTabAriaControls(tab: FormLayoutTabItem): string;
|
|
1312
|
+
getTabIdForSection(section?: FormSection): string | null;
|
|
1313
|
+
shouldHideSectionHeader(section?: FormSection): boolean;
|
|
1222
1314
|
isSectionCollapsed(section?: FormSection): boolean;
|
|
1223
1315
|
isSectionCollapsible(section?: FormSection): boolean;
|
|
1224
1316
|
private getSectionRuleProps;
|
|
@@ -1230,6 +1322,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
1230
1322
|
getSectionTitle(section: FormSection): string | undefined;
|
|
1231
1323
|
getSectionDescription(section: FormSection): string | undefined;
|
|
1232
1324
|
getSectionAppearance(section: FormSection): 'card' | 'plain' | 'step' | undefined;
|
|
1325
|
+
isSectionDividerEnabled(section: FormSection): boolean;
|
|
1233
1326
|
getSectionStepLabel(section: FormSection): string | undefined;
|
|
1234
1327
|
getSectionTitleColor(section: FormSection): string | undefined;
|
|
1235
1328
|
getSectionDescriptionColor(section: FormSection): string | undefined;
|
|
@@ -1513,6 +1606,11 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
1513
1606
|
private captureCurrentPresentationSnapshot;
|
|
1514
1607
|
private captureCurrentSchemaPrefsSnapshot;
|
|
1515
1608
|
private executeDynamicFormEditorApplyPlan;
|
|
1609
|
+
private buildCrossModeMetadataSeed;
|
|
1610
|
+
private resolveSiblingModeComponentKeyIds;
|
|
1611
|
+
private resolveSiblingModeFormConfigKeys;
|
|
1612
|
+
private resolveSiblingModePresentationKeys;
|
|
1613
|
+
private persistSharedFormConfigAcrossModes;
|
|
1516
1614
|
private attachRuntimeMetadataToDynamicFormConfig;
|
|
1517
1615
|
private emitConfigPatchChange;
|
|
1518
1616
|
private cloneFormConfigForPatch;
|
|
@@ -1527,6 +1625,11 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
1527
1625
|
private tryBuildExplicitSchemaContext;
|
|
1528
1626
|
private buildSchemaContext;
|
|
1529
1627
|
private getSchemaWithCache;
|
|
1628
|
+
/**
|
|
1629
|
+
* Invalida o cache de schema compilado para a instância atual e força
|
|
1630
|
+
* novo carregamento na próxima requisição.
|
|
1631
|
+
*/
|
|
1632
|
+
invalidateSchemaCache(): void;
|
|
1530
1633
|
private isReactiveValidationEnabled;
|
|
1531
1634
|
private getReactiveValidationDebounceMs;
|
|
1532
1635
|
private waitForGlobalConfigReadyForSchema;
|
|
@@ -1535,7 +1638,7 @@ declare class PraxisDynamicForm implements OnInit, OnChanges, OnDestroy {
|
|
|
1535
1638
|
private applyPresentationVars;
|
|
1536
1639
|
private applyPresentationConfig;
|
|
1537
1640
|
static ɵfac: i0.ɵɵFactoryDeclaration<PraxisDynamicForm, [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }]>;
|
|
1538
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<PraxisDynamicForm, "praxis-dynamic-form", never, { "resourcePath": { "alias": "resourcePath"; "required": false; }; "resourceId": { "alias": "resourceId"; "required": false; }; "initialValue": { "alias": "initialValue"; "required": false; }; "emptyState": { "alias": "emptyState"; "required": false; }; "editorialContext": { "alias": "editorialContext"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "config": { "alias": "config"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; "schemaSource": { "alias": "schemaSource"; "required": false; }; "schemaUrl": { "alias": "schemaUrl"; "required": false; }; "readUrl": { "alias": "readUrl"; "required": false; }; "submitUrl": { "alias": "submitUrl"; "required": false; }; "submitMethod": { "alias": "submitMethod"; "required": false; }; "submitIdempotencyKey": { "alias": "submitIdempotencyKey"; "required": false; }; "submitCorrelationId": { "alias": "submitCorrelationId"; "required": false; }; "submitResourceVersion": { "alias": "submitResourceVersion"; "required": false; }; "submitResourceVersionTargetResourceKey": { "alias": "submitResourceVersionTargetResourceKey"; "required": false; }; "submitResourceVersionTargetIdField": { "alias": "submitResourceVersionTargetIdField"; "required": false; }; "responseSchemaUrl": { "alias": "responseSchemaUrl"; "required": false; }; "apiEndpointKey": { "alias": "apiEndpointKey"; "required": false; }; "apiUrlEntry": { "alias": "apiUrlEntry"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "showAiAssistant": { "alias": "showAiAssistant"; "required": false; }; "formId": { "alias": "formId"; "required": false; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "configPersistenceStrategy": { "alias": "configPersistenceStrategy"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "generatedLayoutPreset": { "alias": "generatedLayoutPreset"; "required": false; }; "layoutPolicy": { "alias": "layoutPolicy"; "required": false; }; "backConfig": { "alias": "backConfig"; "required": false; }; "hooks": { "alias": "hooks"; "required": false; }; "removeEmptyContainersOnSave": { "alias": "removeEmptyContainersOnSave"; "required": false; }; "reactiveValidation": { "alias": "reactiveValidation"; "required": false; }; "reactiveValidationDebounceMs": { "alias": "reactiveValidationDebounceMs"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "readonlyModeGlobal": { "alias": "readonlyModeGlobal"; "required": false; }; "disabledModeGlobal": { "alias": "disabledModeGlobal"; "required": false; }; "presentationModeGlobal": { "alias": "presentationModeGlobal"; "required": false; }; "presentation": { "alias": "presentation"; "required": false; }; "visibleGlobal": { "alias": "visibleGlobal"; "required": false; }; "fieldIconPolicy": { "alias": "fieldIconPolicy"; "required": false; }; "domainRules": { "alias": "domainRules"; "required": false; }; "customEndpoints": { "alias": "customEndpoints"; "required": false; }; }, { "formSubmit": "formSubmit"; "formCancel": "formCancel"; "formReset": "formReset"; "configChange": "configChange"; "configPatchChange": "configPatchChange"; "formReady": "formReady"; "valueChange": "valueChange"; "payloadPreviewChange": "payloadPreviewChange"; "syncCompleted": "syncCompleted"; "initializationError": "initializationError"; "loadingStateChange": "loadingStateChange"; "enableCustomizationChange": "enableCustomizationChange"; "customAction": "customAction"; "actionConfirmation": "actionConfirmation"; "schemaStatusChange": "schemaStatusChange"; "fieldRenderError": "fieldRenderError"; "ruleDiagnosticsChange": "ruleDiagnosticsChange"; "reactiveDeterminationExecuted": "reactiveDeterminationExecuted"; "reactiveDeterminationPendingChange": "reactiveDeterminationPendingChange"; }, never, never, true, never>;
|
|
1641
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PraxisDynamicForm, "praxis-dynamic-form", never, { "resourcePath": { "alias": "resourcePath"; "required": false; }; "resourceId": { "alias": "resourceId"; "required": false; }; "initialValue": { "alias": "initialValue"; "required": false; }; "emptyState": { "alias": "emptyState"; "required": false; }; "editorialContext": { "alias": "editorialContext"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "config": { "alias": "config"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; "schemaSource": { "alias": "schemaSource"; "required": false; }; "actionId": { "alias": "actionId"; "required": false; }; "operationId": { "alias": "operationId"; "required": false; }; "schemaUrl": { "alias": "schemaUrl"; "required": false; }; "readUrl": { "alias": "readUrl"; "required": false; }; "submitUrl": { "alias": "submitUrl"; "required": false; }; "submitMethod": { "alias": "submitMethod"; "required": false; }; "submitIdempotencyKey": { "alias": "submitIdempotencyKey"; "required": false; }; "submitCorrelationId": { "alias": "submitCorrelationId"; "required": false; }; "submitResourceVersion": { "alias": "submitResourceVersion"; "required": false; }; "submitResourceVersionTargetResourceKey": { "alias": "submitResourceVersionTargetResourceKey"; "required": false; }; "submitResourceVersionTargetIdField": { "alias": "submitResourceVersionTargetIdField"; "required": false; }; "responseSchemaUrl": { "alias": "responseSchemaUrl"; "required": false; }; "apiEndpointKey": { "alias": "apiEndpointKey"; "required": false; }; "apiUrlEntry": { "alias": "apiUrlEntry"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; "showAiAssistant": { "alias": "showAiAssistant"; "required": false; }; "formId": { "alias": "formId"; "required": false; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "configPersistenceStrategy": { "alias": "configPersistenceStrategy"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "layoutMode": { "alias": "layoutMode"; "required": false; }; "formLayout": { "alias": "formLayout"; "required": false; }; "generatedLayoutPreset": { "alias": "generatedLayoutPreset"; "required": false; }; "layoutPolicy": { "alias": "layoutPolicy"; "required": false; }; "backConfig": { "alias": "backConfig"; "required": false; }; "hooks": { "alias": "hooks"; "required": false; }; "removeEmptyContainersOnSave": { "alias": "removeEmptyContainersOnSave"; "required": false; }; "reactiveValidation": { "alias": "reactiveValidation"; "required": false; }; "reactiveValidationDebounceMs": { "alias": "reactiveValidationDebounceMs"; "required": false; }; "notifyIfOutdated": { "alias": "notifyIfOutdated"; "required": false; }; "snoozeMs": { "alias": "snoozeMs"; "required": false; }; "autoOpenSettingsOnOutdated": { "alias": "autoOpenSettingsOnOutdated"; "required": false; }; "readonlyModeGlobal": { "alias": "readonlyModeGlobal"; "required": false; }; "disabledModeGlobal": { "alias": "disabledModeGlobal"; "required": false; }; "presentationModeGlobal": { "alias": "presentationModeGlobal"; "required": false; }; "presentation": { "alias": "presentation"; "required": false; }; "presentationPreset": { "alias": "presentationPreset"; "required": false; }; "sectionDefaultAppearance": { "alias": "sectionDefaultAppearance"; "required": false; }; "sectionDivider": { "alias": "sectionDivider"; "required": false; }; "visibleGlobal": { "alias": "visibleGlobal"; "required": false; }; "fieldIconPolicy": { "alias": "fieldIconPolicy"; "required": false; }; "domainRules": { "alias": "domainRules"; "required": false; }; "customEndpoints": { "alias": "customEndpoints"; "required": false; }; }, { "formSubmit": "formSubmit"; "formCancel": "formCancel"; "formReset": "formReset"; "configChange": "configChange"; "configPatchChange": "configPatchChange"; "formReady": "formReady"; "valueChange": "valueChange"; "payloadPreviewChange": "payloadPreviewChange"; "syncCompleted": "syncCompleted"; "initializationError": "initializationError"; "loadingStateChange": "loadingStateChange"; "enableCustomizationChange": "enableCustomizationChange"; "customAction": "customAction"; "actionConfirmation": "actionConfirmation"; "schemaStatusChange": "schemaStatusChange"; "fieldRenderError": "fieldRenderError"; "ruleDiagnosticsChange": "ruleDiagnosticsChange"; "reactiveDeterminationExecuted": "reactiveDeterminationExecuted"; "reactiveDeterminationPendingChange": "reactiveDeterminationPendingChange"; "tabChange": "tabChange"; "tabSelected": "tabSelected"; }, never, never, true, never>;
|
|
1539
1642
|
}
|
|
1540
1643
|
|
|
1541
1644
|
declare class FormConfigService {
|
|
@@ -1718,8 +1821,10 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
|
|
|
1718
1821
|
private includeBackConfigBlock;
|
|
1719
1822
|
formId?: string;
|
|
1720
1823
|
componentKeyId?: string;
|
|
1721
|
-
inputMode:
|
|
1824
|
+
inputMode: DynamicFormMode;
|
|
1825
|
+
inputLayoutScope: DynamicFormLayoutScope;
|
|
1722
1826
|
private includeBindingsBlock;
|
|
1827
|
+
private includeLayoutScopeBinding;
|
|
1723
1828
|
private readonly editorMode;
|
|
1724
1829
|
get isPresentationMode(): boolean;
|
|
1725
1830
|
supportsPresentationSettings: boolean;
|
|
@@ -1777,7 +1882,11 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
|
|
|
1777
1882
|
};
|
|
1778
1883
|
private destroy$;
|
|
1779
1884
|
private hasProcessedInitialRuleState;
|
|
1885
|
+
ruleConversionFailed: boolean;
|
|
1886
|
+
private readonly jsonLogic;
|
|
1887
|
+
private readonly cascadeRulesService;
|
|
1780
1888
|
private jsonEditorIsValid;
|
|
1889
|
+
private cascadeDraftIsValid;
|
|
1781
1890
|
private globalActionValidationIssues;
|
|
1782
1891
|
private readonly i18n;
|
|
1783
1892
|
readonly globalActionCatalog: GlobalActionCatalogEntry[];
|
|
@@ -1790,7 +1899,7 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
|
|
|
1790
1899
|
isValid$: BehaviorSubject<boolean>;
|
|
1791
1900
|
isBusy$: BehaviorSubject<boolean>;
|
|
1792
1901
|
private lastRulesSignature;
|
|
1793
|
-
private
|
|
1902
|
+
private supersededRuleStateSignature;
|
|
1794
1903
|
private readonly DEBUG;
|
|
1795
1904
|
private debugLog;
|
|
1796
1905
|
get configTabOptions(): ConfigEditorTabOption[];
|
|
@@ -1808,6 +1917,8 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
|
|
|
1808
1917
|
onJsonValidationChange(result: JsonValidationResult): void;
|
|
1809
1918
|
onJsonEditorEvent(_event: JsonEditorEvent): void;
|
|
1810
1919
|
onConfigChange(newConfig: FormConfig): void;
|
|
1920
|
+
onCascadeValidChange(valid: boolean): void;
|
|
1921
|
+
private isCascadeGraphValid;
|
|
1811
1922
|
private updateValidityState;
|
|
1812
1923
|
private collectGlobalActionValidationIssues;
|
|
1813
1924
|
private collectGlobalActionValidationTargets;
|
|
@@ -1860,6 +1971,7 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
|
|
|
1860
1971
|
getRuleDiagnosticDetails(diagnostic: FormRuleDiagnostics): string[];
|
|
1861
1972
|
private getRulePropertyIssueNames;
|
|
1862
1973
|
private markLlmRuleAccepted;
|
|
1974
|
+
private projectBuilderRules;
|
|
1863
1975
|
private refreshRuleDiagnostics;
|
|
1864
1976
|
get jsonDocument(): DynamicFormAuthoringDocument;
|
|
1865
1977
|
onBackConfigChange(): void;
|
|
@@ -1870,6 +1982,7 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
|
|
|
1870
1982
|
hasResolvedRuntimeContract(): boolean;
|
|
1871
1983
|
describeRuntimeSource(source?: DynamicFormRuntimeValueSource): string;
|
|
1872
1984
|
onInputModeChange(): void;
|
|
1985
|
+
onLayoutScopeChange(scope: DynamicFormLayoutScope): void;
|
|
1873
1986
|
onPresentationPrefsChange(reason: string): void;
|
|
1874
1987
|
onSchemaPrefsChange(reason: string): void;
|
|
1875
1988
|
private createRuleBuilderConfig;
|
|
@@ -1890,10 +2003,12 @@ declare class PraxisDynamicFormConfigEditor implements SettingsValueProvider, On
|
|
|
1890
2003
|
onCascadeApply(patch: Record<string, Partial<FieldDefinition>>): void;
|
|
1891
2004
|
private syncCascadeManagerFields;
|
|
1892
2005
|
private stripLegacy;
|
|
2006
|
+
private hydrateRuleDraft;
|
|
1893
2007
|
private computeRulesSignature;
|
|
1894
2008
|
restoreHintsDefaults(): void;
|
|
1895
2009
|
private loadPrefsFromStorage;
|
|
1896
2010
|
private normalizeMode;
|
|
2011
|
+
private normalizeLayoutScope;
|
|
1897
2012
|
private buildAuthoringDocument;
|
|
1898
2013
|
private normalizeResolvedRuntimeContract;
|
|
1899
2014
|
private createBackConfigState;
|
|
@@ -1918,6 +2033,14 @@ declare class PraxisFilterForm implements OnChanges, OnDestroy {
|
|
|
1918
2033
|
config: FormConfig;
|
|
1919
2034
|
formId?: string;
|
|
1920
2035
|
resourcePath?: string;
|
|
2036
|
+
/**
|
|
2037
|
+
* Optional logical endpoint key for multi-gateway filter schema resolution.
|
|
2038
|
+
*/
|
|
2039
|
+
endpointKey?: ApiEndpoint;
|
|
2040
|
+
/**
|
|
2041
|
+
* Optional explicit API URL entry override for filter schema resolution.
|
|
2042
|
+
*/
|
|
2043
|
+
apiUrlEntry?: ApiUrlEntry | null;
|
|
1921
2044
|
mode?: string;
|
|
1922
2045
|
formReady: EventEmitter<{
|
|
1923
2046
|
formGroup: FormGroup<Record<string, any>>;
|
|
@@ -1935,11 +2058,18 @@ declare class PraxisFilterForm implements OnChanges, OnDestroy {
|
|
|
1935
2058
|
form: FormGroup<Record<string, any>>;
|
|
1936
2059
|
private valueChangesSub?;
|
|
1937
2060
|
private statusChangesSub?;
|
|
2061
|
+
private schemaSub?;
|
|
2062
|
+
private hydratedFieldMetadata;
|
|
2063
|
+
private lastHydratedResourceKey;
|
|
1938
2064
|
private columnFieldsCache;
|
|
1939
2065
|
private singleFieldCache;
|
|
2066
|
+
private readonly crudService;
|
|
2067
|
+
private readonly resourceDiscovery;
|
|
2068
|
+
private readonly cdr;
|
|
1940
2069
|
constructor(dynamicForm: DynamicFormService);
|
|
1941
2070
|
ngOnChanges(changes: SimpleChanges): void;
|
|
1942
2071
|
ngOnDestroy(): void;
|
|
2072
|
+
private loadFilterSchemaFieldsIfNeeded;
|
|
1943
2073
|
private buildForm;
|
|
1944
2074
|
private buildRestorableValues;
|
|
1945
2075
|
private hasExplicitDefaultValue;
|
|
@@ -1953,7 +2083,7 @@ declare class PraxisFilterForm implements OnChanges, OnDestroy {
|
|
|
1953
2083
|
trackByRow(i: number, _row: FormRow): string;
|
|
1954
2084
|
trackByColumn(i: number, col: FormColumn): string;
|
|
1955
2085
|
static ɵfac: i0.ɵɵFactoryDeclaration<PraxisFilterForm, never>;
|
|
1956
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<PraxisFilterForm, "praxis-filter-form", never, { "config": { "alias": "config"; "required": true; }; "formId": { "alias": "formId"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; }, { "formReady": "formReady"; "valueChange": "valueChange"; "submit": "submit"; "requestSearch": "requestSearch"; "validityChange": "validityChange"; }, never, never, true, never>;
|
|
2086
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PraxisFilterForm, "praxis-filter-form", never, { "config": { "alias": "config"; "required": true; }; "formId": { "alias": "formId"; "required": false; }; "resourcePath": { "alias": "resourcePath"; "required": false; }; "endpointKey": { "alias": "endpointKey"; "required": false; }; "apiUrlEntry": { "alias": "apiUrlEntry"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; }, { "formReady": "formReady"; "valueChange": "valueChange"; "submit": "submit"; "requestSearch": "requestSearch"; "validityChange": "validityChange"; }, never, never, true, never>;
|
|
1957
2087
|
}
|
|
1958
2088
|
|
|
1959
2089
|
/** Metadata for PraxisFilterForm component */
|
|
@@ -1965,6 +2095,9 @@ interface PraxisFilterFormWidgetEditorInputs {
|
|
|
1965
2095
|
config?: FormConfig | null;
|
|
1966
2096
|
formId?: string;
|
|
1967
2097
|
resourcePath?: string;
|
|
2098
|
+
apiEndpointKey?: ApiEndpoint | string | null;
|
|
2099
|
+
endpointKey?: ApiEndpoint;
|
|
2100
|
+
apiUrlEntry?: ApiUrlEntry | null;
|
|
1968
2101
|
mode?: DynamicFormMode | string;
|
|
1969
2102
|
[key: string]: unknown;
|
|
1970
2103
|
}
|
|
@@ -1978,13 +2111,37 @@ declare class PraxisFilterFormWidgetConfigEditor implements SettingsValueProvide
|
|
|
1978
2111
|
readonly isDirty$: BehaviorSubject<boolean>;
|
|
1979
2112
|
readonly isValid$: BehaviorSubject<boolean>;
|
|
1980
2113
|
readonly isBusy$: BehaviorSubject<boolean>;
|
|
2114
|
+
schemaWarning: string;
|
|
1981
2115
|
private readonly subscription;
|
|
2116
|
+
private schemaSubscription?;
|
|
2117
|
+
private childBusy;
|
|
2118
|
+
private schemaLoading;
|
|
2119
|
+
private resourcePathDraft?;
|
|
2120
|
+
private selectedCatalogResource;
|
|
2121
|
+
private committedBaselineDocument?;
|
|
2122
|
+
private readonly crudService;
|
|
2123
|
+
private readonly resourceDiscovery;
|
|
2124
|
+
private readonly cdr;
|
|
2125
|
+
get effectiveResourcePath(): string;
|
|
2126
|
+
get effectiveEndpointKey(): ApiEndpoint | undefined;
|
|
2127
|
+
get effectiveApiUrlEntry(): ApiUrlEntry | null | undefined;
|
|
2128
|
+
onResourceQuickConnect(resourcePath: string): void;
|
|
2129
|
+
onCatalogResourceSelected(entry: DiscoveredResourceOption | null): void;
|
|
2130
|
+
onResourceQuickClear(): void;
|
|
2131
|
+
private updateDirtyState;
|
|
1982
2132
|
ngAfterViewInit(): void;
|
|
1983
2133
|
ngOnDestroy(): void;
|
|
1984
2134
|
getSettingsValue(): PraxisFilterFormWidgetEditorValue;
|
|
1985
2135
|
onSave(): PraxisFilterFormWidgetEditorValue;
|
|
1986
2136
|
reset(): void;
|
|
2137
|
+
private publishBusy;
|
|
1987
2138
|
private initializeChildEditor;
|
|
2139
|
+
private applyBaselineDocumentToChildEditor;
|
|
2140
|
+
private applyDraftDocumentToChildEditor;
|
|
2141
|
+
private loadFilterSchemaFieldsIfNeeded;
|
|
2142
|
+
private extractCatalogFallbackFields;
|
|
2143
|
+
private applyLoadedFilterFieldMetadata;
|
|
2144
|
+
private buildDiscoveryOptions;
|
|
1988
2145
|
private buildValue;
|
|
1989
2146
|
private createDocumentFromInputs;
|
|
1990
2147
|
private normalizeMode;
|
|
@@ -2105,6 +2262,10 @@ declare class LayoutEditorComponent implements OnInit {
|
|
|
2105
2262
|
get layoutSections(): FormSection[];
|
|
2106
2263
|
canApplyAll(): boolean;
|
|
2107
2264
|
applyGapToAll(): void;
|
|
2265
|
+
canCalibrateFieldsFromSemantics(): boolean;
|
|
2266
|
+
calibrateAllFieldsFromSemantics(): void;
|
|
2267
|
+
canOrganizeSectionsFromSemantics(): boolean;
|
|
2268
|
+
organizeSectionsFromSemantics(): void;
|
|
2108
2269
|
ngOnInit(): void;
|
|
2109
2270
|
handleKeydown(event: KeyboardEvent): void;
|
|
2110
2271
|
/**
|
|
@@ -2321,6 +2482,7 @@ declare class FieldConfiguratorComponent {
|
|
|
2321
2482
|
private readonly categoryByType;
|
|
2322
2483
|
private resolveEditorialMeta;
|
|
2323
2484
|
get icon(): string;
|
|
2485
|
+
private normalizedFieldControlType;
|
|
2324
2486
|
get typeClass(): string;
|
|
2325
2487
|
get typeSpecificClass(): string;
|
|
2326
2488
|
get typeLabel(): string;
|
|
@@ -2332,8 +2494,13 @@ declare class FieldConfiguratorComponent {
|
|
|
2332
2494
|
|
|
2333
2495
|
interface PraxisDynamicFormWidgetEditorInputs {
|
|
2334
2496
|
config?: FormConfig | null;
|
|
2497
|
+
resourcePath?: string | null;
|
|
2498
|
+
apiEndpointKey?: ApiEndpoint | string | null;
|
|
2499
|
+
endpointKey?: ApiEndpoint;
|
|
2500
|
+
apiUrlEntry?: ApiUrlEntry | null;
|
|
2501
|
+
schemaSource?: 'resource' | 'filter';
|
|
2335
2502
|
layoutPolicy?: DynamicFormLayoutPolicy | null;
|
|
2336
|
-
configPersistenceStrategy?: 'local-first' | 'input-first';
|
|
2503
|
+
configPersistenceStrategy?: 'local-first' | 'input-first' | 'volatile';
|
|
2337
2504
|
mode?: DynamicFormMode;
|
|
2338
2505
|
emptyState?: PraxisDynamicFormEmptyState | null;
|
|
2339
2506
|
presentationModeGlobal?: boolean | null;
|
|
@@ -2350,23 +2517,46 @@ interface PraxisDynamicFormWidgetEditorValue {
|
|
|
2350
2517
|
inputs: PraxisDynamicFormWidgetEditorInputs;
|
|
2351
2518
|
}
|
|
2352
2519
|
declare class PraxisDynamicFormWidgetConfigEditor implements SettingsValueProvider, AfterViewInit, OnDestroy {
|
|
2520
|
+
private readonly crudService;
|
|
2521
|
+
private readonly resourceDiscovery;
|
|
2522
|
+
private readonly cdr;
|
|
2353
2523
|
inputs: PraxisDynamicFormWidgetEditorInputs | null;
|
|
2354
2524
|
widgetKey?: string;
|
|
2355
2525
|
appliedValues$?: Observable<unknown>;
|
|
2356
2526
|
private appliedSource?;
|
|
2527
|
+
private appliedResourcePath?;
|
|
2357
2528
|
/** Runtime evidence supplied by the existing component editor context resolver. */
|
|
2358
2529
|
context: Record<string, unknown>;
|
|
2359
2530
|
formEditor?: PraxisDynamicFormConfigEditor;
|
|
2360
2531
|
readonly isDirty$: BehaviorSubject<boolean>;
|
|
2361
2532
|
readonly isValid$: BehaviorSubject<boolean>;
|
|
2362
2533
|
readonly isBusy$: BehaviorSubject<boolean>;
|
|
2534
|
+
schemaWarning: string;
|
|
2363
2535
|
private readonly subscription;
|
|
2536
|
+
private schemaSubscription?;
|
|
2537
|
+
private childBusy;
|
|
2538
|
+
private schemaLoading;
|
|
2364
2539
|
private initialEditorConfig?;
|
|
2540
|
+
private committedBaselineConfig?;
|
|
2541
|
+
private committedBaselineDocument?;
|
|
2365
2542
|
private sourceDraft?;
|
|
2366
|
-
|
|
2543
|
+
private resourcePathDraft?;
|
|
2544
|
+
selectedCatalogResource: DiscoveredResourceOption | null;
|
|
2545
|
+
private optionalInject;
|
|
2546
|
+
get configurationSource(): 'local-first' | 'input-first' | 'volatile';
|
|
2547
|
+
get effectiveResourcePath(): string;
|
|
2548
|
+
get effectiveEndpointKey(): ApiEndpoint | undefined;
|
|
2549
|
+
get effectiveApiUrlEntry(): ApiUrlEntry | null | undefined;
|
|
2550
|
+
get effectiveDiscoveryIntent(): 'crud' | 'filter';
|
|
2551
|
+
get hasReadOnlyModeWarning(): boolean;
|
|
2552
|
+
switchToReadOnlyViewMode(): void;
|
|
2553
|
+
onCatalogResourceSelected(resource: DiscoveredResourceOption | null): void;
|
|
2367
2554
|
changeConfigurationSource(value: string): void;
|
|
2555
|
+
onResourceQuickConnect(resourcePath: string): void;
|
|
2556
|
+
onResourceQuickClear(): void;
|
|
2557
|
+
private baselineResourcePath;
|
|
2368
2558
|
private updateDirtyState;
|
|
2369
|
-
private
|
|
2559
|
+
private publishBusy;
|
|
2370
2560
|
ngAfterViewInit(): void;
|
|
2371
2561
|
ngOnDestroy(): void;
|
|
2372
2562
|
getSettingsValue(): PraxisDynamicFormWidgetEditorValue;
|
|
@@ -2374,6 +2564,12 @@ declare class PraxisDynamicFormWidgetConfigEditor implements SettingsValueProvid
|
|
|
2374
2564
|
acceptAppliedValue(value: unknown): void;
|
|
2375
2565
|
reset(): void;
|
|
2376
2566
|
private initializeChildEditor;
|
|
2567
|
+
private applyBaselineDocumentToChildEditor;
|
|
2568
|
+
private applyDraftDocumentToChildEditor;
|
|
2569
|
+
private loadResourceSchemaFieldsIfNeeded;
|
|
2570
|
+
private extractCatalogFallbackFields;
|
|
2571
|
+
private applyFieldMetadataHydration;
|
|
2572
|
+
private buildDiscoveryOptions;
|
|
2377
2573
|
private buildValue;
|
|
2378
2574
|
private createDocumentFromInputs;
|
|
2379
2575
|
static ɵfac: i0.ɵɵFactoryDeclaration<PraxisDynamicFormWidgetConfigEditor, never>;
|
|
@@ -2409,6 +2605,30 @@ declare class DomainRuleFormRulesService {
|
|
|
2409
2605
|
static ɵprov: i0.ɵɵInjectableDeclaration<DomainRuleFormRulesService>;
|
|
2410
2606
|
}
|
|
2411
2607
|
|
|
2608
|
+
/**
|
|
2609
|
+
* DynamicFormSchemaCacheService
|
|
2610
|
+
* ------------------------------
|
|
2611
|
+
* Serviço canônico de conveniência em `@praxisui/dynamic-form` para orquestração
|
|
2612
|
+
* de cache de primeiro nível (L1) de esquemas OpenAPI compilados (Issue #2).
|
|
2613
|
+
*
|
|
2614
|
+
* Delega o ciclo de vida do cache em memória ao DynamicFormService (@praxisui/core),
|
|
2615
|
+
* garantindo consistência referencial entre módulos e transições de abas em 0ms.
|
|
2616
|
+
*/
|
|
2617
|
+
declare class DynamicFormSchemaCacheService {
|
|
2618
|
+
private readonly dynamicFormService;
|
|
2619
|
+
buildCacheKey(params: SchemaIdParams & {
|
|
2620
|
+
baseUrl?: string;
|
|
2621
|
+
}): string;
|
|
2622
|
+
get(cacheKey: string): CompiledDynamicFormSchema | undefined;
|
|
2623
|
+
set(cacheKey: string, compiled: CompiledDynamicFormSchema, customTtlMs?: number): void;
|
|
2624
|
+
has(cacheKey: string): boolean;
|
|
2625
|
+
invalidate(cacheKey?: string): void;
|
|
2626
|
+
clear(): void;
|
|
2627
|
+
size(): number;
|
|
2628
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DynamicFormSchemaCacheService, never>;
|
|
2629
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<DynamicFormSchemaCacheService>;
|
|
2630
|
+
}
|
|
2631
|
+
|
|
2412
2632
|
declare class Ergadm00034CompactPresentationExampleComponent {
|
|
2413
2633
|
private readonly dynamicLayout;
|
|
2414
2634
|
readonly legacyFrequencyExample: _praxisui_dynamic_form.Ergadm00034CompactPresentationExample;
|
|
@@ -2463,14 +2683,15 @@ declare function applyVisibilityRules(rules: FormLayoutRule[], data: any): Recor
|
|
|
2463
2683
|
/**
|
|
2464
2684
|
* Converts a RuleBuilderState produced by the visual builder into
|
|
2465
2685
|
* an array of FormLayoutRule objects understood by the dynamic form.
|
|
2686
|
+
* Throws when a referenced condition graph cannot be serialized without losing semantics.
|
|
2466
2687
|
*/
|
|
2467
2688
|
declare function ruleBuilderStateToFormLayoutRules(state: RuleBuilderState | null | undefined): FormLayoutRule[];
|
|
2468
2689
|
/**
|
|
2469
2690
|
* Converts an array of FormLayoutRule back into a RuleBuilderState
|
|
2470
2691
|
* so that the visual builder can display the saved rules.
|
|
2471
2692
|
*
|
|
2472
|
-
*
|
|
2473
|
-
*
|
|
2693
|
+
* Every canonical effect reopens as a propertyRule, with all targets and both
|
|
2694
|
+
* branches intact. Conditions outside the visual vocabulary stay inline.
|
|
2474
2695
|
*/
|
|
2475
2696
|
declare function formLayoutRulesToBuilderState(rules: FormLayoutRule[] | null | undefined): RuleBuilderState;
|
|
2476
2697
|
|
|
@@ -3044,7 +3265,50 @@ declare const PRAXIS_FILTER_FORM_AUTHORING_PROJECTION: {
|
|
|
3044
3265
|
readonly operationIds: readonly ["field.label.set", "field.placeholder.set", "field.required.set", "field.readOnly.set", "field.disabled.set", "field.hidden.set", "field.controlType.set", "field.optionSource.set", "field.local.add", "field.local.remove", "layout.section.add", "layout.section.remove", "layout.row.add", "layout.column.add", "layout.field.move"];
|
|
3045
3266
|
readonly roundTripRequirements: readonly ["strip-undefined", "stable-field-order", "preserve-local-field-source", "preserve-section-row-column-ids"];
|
|
3046
3267
|
};
|
|
3047
|
-
declare const PRAXIS_FILTER_FORM_AUTHORING_MANIFEST:
|
|
3268
|
+
declare const PRAXIS_FILTER_FORM_AUTHORING_MANIFEST: {
|
|
3269
|
+
runtimeInputs: _praxisui_core.ManifestInput[];
|
|
3270
|
+
schemaVersion: string;
|
|
3271
|
+
componentId: string;
|
|
3272
|
+
ownerPackage: string;
|
|
3273
|
+
configSchemaId: string;
|
|
3274
|
+
manifestVersion: string;
|
|
3275
|
+
editableTargets: _praxisui_core.ManifestTarget[];
|
|
3276
|
+
operations: _praxisui_core.ManifestOperation[];
|
|
3277
|
+
validators: _praxisui_core.ManifestValidator[];
|
|
3278
|
+
roundTripRequirements?: string[];
|
|
3279
|
+
presentationAffordances?: _praxisui_core.ManifestPresentationAffordanceCatalog;
|
|
3280
|
+
examples: _praxisui_core.ManifestExample[];
|
|
3281
|
+
controlProfiles?: _praxisui_core.ManifestControlProfile[];
|
|
3282
|
+
};
|
|
3283
|
+
|
|
3284
|
+
/** Reconstruct raw native authorship. Normalized editor/runtime defaults are never the source. */
|
|
3285
|
+
declare function decodeDynamicFormPageInputs(value: unknown): {
|
|
3286
|
+
document: DynamicFormAuthoringDocument | null;
|
|
3287
|
+
diagnostics: EditorDiagnostic[];
|
|
3288
|
+
};
|
|
3289
|
+
/** Owner callback for Core admission; no component loading or second config authority. */
|
|
3290
|
+
declare function validateDynamicFormPageWidget(widget: WidgetInstance): readonly {
|
|
3291
|
+
code: string;
|
|
3292
|
+
path: string;
|
|
3293
|
+
}[];
|
|
3294
|
+
/** Inverse native projection. Explicit unrepresentable authoring blocks fail instead of being filtered. */
|
|
3295
|
+
declare function encodeDynamicFormPageInputs(value: unknown): {
|
|
3296
|
+
inputs: Record<string, unknown> | null;
|
|
3297
|
+
diagnostics: EditorDiagnostic[];
|
|
3298
|
+
};
|
|
3299
|
+
/** Persist only explicit deltas from the mounted native editor; bindings/context stay pinned to the seed. */
|
|
3300
|
+
declare function projectDynamicFormPageEditorChanges(authoredInputs: unknown, editorBaseline: unknown, editorValue: unknown): {
|
|
3301
|
+
inputs: Record<string, unknown> | null;
|
|
3302
|
+
diagnostics: EditorDiagnostic[];
|
|
3303
|
+
};
|
|
3304
|
+
/** Derive execution-only identity and disable independent preferences. Never persist this projection. */
|
|
3305
|
+
declare function materializeDynamicFormPageRuntimeInputs(value: unknown, pageId: string, widgetKey: string, options?: {
|
|
3306
|
+
preview?: boolean;
|
|
3307
|
+
}): {
|
|
3308
|
+
inputs: Record<string, unknown> | null;
|
|
3309
|
+
diagnostics: EditorDiagnostic[];
|
|
3310
|
+
};
|
|
3311
|
+
declare const DYNAMIC_FORM_GOVERNED_PAGE_PREVIEW_ADAPTER: GovernedPagePreviewWidgetAdapter;
|
|
3048
3312
|
|
|
3049
|
-
export { ActionsEditorComponent, CORPORATE_PRESENTATION_FORMAT_GALLERY, CanvasStateService, CanvasToolbarComponent, ColumnEditorComponent, DomainRuleFormRulesService, DynamicFormLayoutService, ERGADM00034_COMPACT_PRESENTATION_EXAMPLE, Ergadm00034CompactPresentationExampleComponent, FORM_AI_CAPABILITIES, FORM_COMPONENT_AI_CAPABILITIES, FieldConfiguratorComponent, FieldEditorComponent, FormConfigService, FormContextService, FormLayoutService, FormRulesService, JsonConfigEditorComponent, LayoutColorToken, LayoutEditorComponent, LayoutPrefsService, PRAXIS_DYNAMIC_FORM_AUTHORING_MANIFEST, PRAXIS_DYNAMIC_FORM_COMPONENT_METADATA, PRAXIS_FILTER_FORM_AUTHORING_MANIFEST, PRAXIS_FILTER_FORM_AUTHORING_PROJECTION, PRAXIS_FILTER_FORM_COMPONENT_METADATA, PraxisDynamicForm, PraxisDynamicFormConfigEditor, PraxisDynamicFormWidgetConfigEditor, PraxisFilterForm, PraxisFilterFormWidgetConfigEditor, PraxisFormActionsComponent, RowConfiguratorComponent, RowEditorComponent, SETTINGS_PANEL_DYNAMIC_FORM_PROVIDER, SectionEditorComponent, TASK_PRESETS, applyVisibilityRules, buildCorporatePresentationFormatGalleryConfig, buildDynamicFormApplyPlan, buildDynamicFormRuleAuthoringContext, buildErgadm00034CompactPresentationConfig, createDynamicFormAuthoringDocument, formLayoutRulesToBuilderState, getFormAiCatalog, getFormCapabilities, getFormEnum, isRuleSatisfied, normalizeDateArrays, normalizeDynamicFormAuthoringDocument, parseLegacyOrDynamicFormDocument, providePraxisDynamicFormMetadata, providePraxisFilterFormMetadata, provideSettingsPanelDynamicForm, ruleBuilderStateToFormLayoutRules, serializeDynamicFormAuthoringDocument, stripLegacyFieldMetadata, toCanonicalDynamicFormConfig, validateDynamicFormAuthoringDocument, validateDynamicFormAuthoringInput };
|
|
3050
|
-
export type { CanvasElement, CanvasElementType, CanvasPathPart, Capability$1 as Capability, CapabilityCatalog$1 as CapabilityCatalog, CapabilityCategory$1 as CapabilityCategory, CorporatePresentationExample, DomainRuleFormRulesRequestOptions, DomainRuleMaterializedFormLayoutRule, DynamicFieldRenderErrorEvent, DynamicFormAllowedRuleProperties, DynamicFormApplyPlan, DynamicFormAuthoringDocument, DynamicFormBindings, DynamicFormConfigPatchChangeEvent, DynamicFormContextSnapshot, DynamicFormGeneratedLayoutPreset,
|
|
3313
|
+
export { ActionsEditorComponent, CORPORATE_PRESENTATION_FORMAT_GALLERY, CanvasStateService, CanvasToolbarComponent, ColumnEditorComponent, DYNAMIC_FORM_GOVERNED_PAGE_PREVIEW_ADAPTER, DomainRuleFormRulesService, DynamicFormLayoutService, DynamicFormSchemaCacheService, ERGADM00034_COMPACT_PRESENTATION_EXAMPLE, Ergadm00034CompactPresentationExampleComponent, FORM_AI_CAPABILITIES, FORM_COMPONENT_AI_CAPABILITIES, FieldConfiguratorComponent, FieldEditorComponent, FormConfigService, FormContextService, FormLayoutService, FormRulesService, JsonConfigEditorComponent, LayoutColorToken, LayoutEditorComponent, LayoutPrefsService, PRAXIS_DYNAMIC_FORM_AUTHORING_MANIFEST, PRAXIS_DYNAMIC_FORM_COMPONENT_METADATA, PRAXIS_FILTER_FORM_AUTHORING_MANIFEST, PRAXIS_FILTER_FORM_AUTHORING_PROJECTION, PRAXIS_FILTER_FORM_COMPONENT_METADATA, PraxisDynamicForm, PraxisDynamicFormConfigEditor, PraxisDynamicFormWidgetConfigEditor, PraxisFilterForm, PraxisFilterFormWidgetConfigEditor, PraxisFormActionsComponent, RowConfiguratorComponent, RowEditorComponent, SETTINGS_PANEL_DYNAMIC_FORM_PROVIDER, SectionEditorComponent, TASK_PRESETS, applyVisibilityRules, buildCorporatePresentationFormatGalleryConfig, buildDynamicFormApplyPlan, buildDynamicFormRuleAuthoringContext, buildErgadm00034CompactPresentationConfig, createDynamicFormAuthoringDocument, decodeDynamicFormPageInputs, encodeDynamicFormPageInputs, formLayoutRulesToBuilderState, getFormAiCatalog, getFormCapabilities, getFormEnum, isRuleSatisfied, materializeDynamicFormPageRuntimeInputs, normalizeDateArrays, normalizeDynamicFormAuthoringDocument, parseLegacyOrDynamicFormDocument, projectDynamicFormPageEditorChanges, providePraxisDynamicFormMetadata, providePraxisFilterFormMetadata, provideSettingsPanelDynamicForm, ruleBuilderStateToFormLayoutRules, serializeDynamicFormAuthoringDocument, stripLegacyFieldMetadata, toCanonicalDynamicFormConfig, validateDynamicFormAuthoringDocument, validateDynamicFormAuthoringInput, validateDynamicFormPageWidget };
|
|
3314
|
+
export type { CanvasElement, CanvasElementType, CanvasPathPart, Capability$1 as Capability, CapabilityCatalog$1 as CapabilityCatalog, CapabilityCategory$1 as CapabilityCategory, CorporatePresentationExample, DomainRuleFormRulesRequestOptions, DomainRuleMaterializedFormLayoutRule, DynamicFieldRenderErrorEvent, DynamicFormAllowedRuleProperties, DynamicFormApplyPlan, DynamicFormAuthoringDocument, DynamicFormBindings, DynamicFormConfigPatchChangeEvent, DynamicFormContextSnapshot, DynamicFormGeneratedLayoutPreset, DynamicFormPresentationSnapshot, DynamicFormProjectionContext, DynamicFormResolvedRuntimeContract, DynamicFormRuleAuthoringContext, DynamicFormRuleAuthoringField, DynamicFormRuleAuthoringTarget, DynamicFormRuleAuthoringTargetDetails, DynamicFormRuleAuthoringTargets, DynamicFormRuleAuthoringVisualBlockNode, DynamicFormRuleTargetType, DynamicFormRuntimeContext, DynamicFormRuntimeValueSource, DynamicFormSchemaPrefsSnapshot, DynamicFormValidationContext, EditorDiagnostic, EditorDocument, Ergadm00034CompactPresentationExample, Ergadm00034LegacyFrequencyRow, FieldPath, FieldPathContainer, FieldPathWithIndex, Capability as FormComponentCapability, CapabilityCatalog as FormComponentCapabilityCatalog, CapabilityCategory as FormComponentCapabilityCategory, ValueKind as FormComponentValueKind, FormConfigLike, GenerateFormConfigFromMetadataOptions, IdPath, InsertLocalFieldOptions, InsertLocalFieldResult, JsonEditorEvent, JsonValidationResult, LayoutChange, LayoutResult, LocalFieldInsertionDiagnostic, LocalFieldInsertionDiagnosticCode, Operation, Path, PathWithIndex, PraxisDynamicFormDomainRulesOptions, PraxisDynamicFormEmptyState, PraxisDynamicFormWidgetEditorInputs, PraxisDynamicFormWidgetEditorValue, PraxisFilterFormWidgetEditorInputs, PraxisFilterFormWidgetEditorValue, PraxisFormActionEvent, RemovePolicy, RuleApplicationContext, RuleApplicationDiagnostic, RuleApplicationDiagnosticCode, RuleApplicationResult, RuleApplicationTargetIndex, RuleApplicationTargetType, ValidationReport, ValueKind$1 as ValueKind };
|