@praxisui/dynamic-form 10.0.0-rc.31 → 10.0.0-rc.33

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@praxisui/dynamic-form",
3
- "version": "10.0.0-rc.31",
3
+ "version": "10.0.0-rc.33",
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": "^21.0.0",
@@ -9,13 +9,13 @@
9
9
  "@angular/forms": "^21.0.0",
10
10
  "@angular/material": "^21.0.0",
11
11
  "@angular/router": "^21.0.0",
12
- "@praxisui/ai": "^10.0.0-rc.31",
13
- "@praxisui/dynamic-fields": "^10.0.0-rc.31",
14
- "@praxisui/metadata-editor": "^10.0.0-rc.31",
15
- "@praxisui/rich-content": "^10.0.0-rc.31",
16
- "@praxisui/settings-panel": "^10.0.0-rc.31",
17
- "@praxisui/visual-builder": "^10.0.0-rc.31",
18
- "@praxisui/core": "^10.0.0-rc.31",
12
+ "@praxisui/ai": "^10.0.0-rc.33",
13
+ "@praxisui/dynamic-fields": "^10.0.0-rc.33",
14
+ "@praxisui/metadata-editor": "^10.0.0-rc.33",
15
+ "@praxisui/rich-content": "^10.0.0-rc.33",
16
+ "@praxisui/settings-panel": "^10.0.0-rc.33",
17
+ "@praxisui/visual-builder": "^10.0.0-rc.33",
18
+ "@praxisui/core": "^10.0.0-rc.33",
19
19
  "rxjs": "^7.8.0"
20
20
  },
21
21
  "dependencies": {
@@ -2001,6 +2001,14 @@ declare class PraxisFilterForm implements OnChanges, OnDestroy {
2001
2001
  config: FormConfig;
2002
2002
  formId?: string;
2003
2003
  resourcePath?: string;
2004
+ /**
2005
+ * Optional logical endpoint key for multi-gateway filter schema resolution.
2006
+ */
2007
+ endpointKey?: ApiEndpoint;
2008
+ /**
2009
+ * Optional explicit API URL entry override for filter schema resolution.
2010
+ */
2011
+ apiUrlEntry?: ApiUrlEntry | null;
2004
2012
  mode?: string;
2005
2013
  formReady: EventEmitter<{
2006
2014
  formGroup: FormGroup<Record<string, any>>;
@@ -2018,11 +2026,18 @@ declare class PraxisFilterForm implements OnChanges, OnDestroy {
2018
2026
  form: FormGroup<Record<string, any>>;
2019
2027
  private valueChangesSub?;
2020
2028
  private statusChangesSub?;
2029
+ private schemaSub?;
2030
+ private hydratedFieldMetadata;
2031
+ private lastHydratedResourceKey;
2021
2032
  private columnFieldsCache;
2022
2033
  private singleFieldCache;
2034
+ private readonly crudService;
2035
+ private readonly resourceDiscovery;
2036
+ private readonly cdr;
2023
2037
  constructor(dynamicForm: DynamicFormService);
2024
2038
  ngOnChanges(changes: SimpleChanges): void;
2025
2039
  ngOnDestroy(): void;
2040
+ private loadFilterSchemaFieldsIfNeeded;
2026
2041
  private buildForm;
2027
2042
  private buildRestorableValues;
2028
2043
  private hasExplicitDefaultValue;
@@ -2036,7 +2051,7 @@ declare class PraxisFilterForm implements OnChanges, OnDestroy {
2036
2051
  trackByRow(i: number, _row: FormRow): string;
2037
2052
  trackByColumn(i: number, col: FormColumn): string;
2038
2053
  static ɵfac: i0.ɵɵFactoryDeclaration<PraxisFilterForm, never>;
2039
- 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>;
2054
+ 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>;
2040
2055
  }
2041
2056
 
2042
2057
  /** Metadata for PraxisFilterForm component */
@@ -2048,6 +2063,9 @@ interface PraxisFilterFormWidgetEditorInputs {
2048
2063
  config?: FormConfig | null;
2049
2064
  formId?: string;
2050
2065
  resourcePath?: string;
2066
+ apiEndpointKey?: ApiEndpoint | string | null;
2067
+ endpointKey?: ApiEndpoint;
2068
+ apiUrlEntry?: ApiUrlEntry | null;
2051
2069
  mode?: DynamicFormMode | string;
2052
2070
  [key: string]: unknown;
2053
2071
  }
@@ -2061,13 +2079,31 @@ declare class PraxisFilterFormWidgetConfigEditor implements SettingsValueProvide
2061
2079
  readonly isDirty$: BehaviorSubject<boolean>;
2062
2080
  readonly isValid$: BehaviorSubject<boolean>;
2063
2081
  readonly isBusy$: BehaviorSubject<boolean>;
2082
+ schemaWarning: string;
2064
2083
  private readonly subscription;
2084
+ private schemaSubscription?;
2085
+ private childBusy;
2086
+ private schemaLoading;
2087
+ private resourcePathDraft?;
2088
+ private readonly crudService;
2089
+ private readonly resourceDiscovery;
2090
+ private readonly cdr;
2091
+ get effectiveResourcePath(): string;
2092
+ get effectiveEndpointKey(): ApiEndpoint | undefined;
2093
+ get effectiveApiUrlEntry(): ApiUrlEntry | null | undefined;
2094
+ onResourceQuickConnect(resourcePath: string): void;
2095
+ onResourceQuickClear(): void;
2096
+ private updateDirtyState;
2065
2097
  ngAfterViewInit(): void;
2066
2098
  ngOnDestroy(): void;
2067
2099
  getSettingsValue(): PraxisFilterFormWidgetEditorValue;
2068
2100
  onSave(): PraxisFilterFormWidgetEditorValue;
2069
2101
  reset(): void;
2102
+ private publishBusy;
2070
2103
  private initializeChildEditor;
2104
+ private applyBaselineDocumentToChildEditor;
2105
+ private loadFilterSchemaFieldsIfNeeded;
2106
+ private buildDiscoveryOptions;
2071
2107
  private buildValue;
2072
2108
  private createDocumentFromInputs;
2073
2109
  private normalizeMode;
@@ -2415,6 +2451,11 @@ declare class FieldConfiguratorComponent {
2415
2451
 
2416
2452
  interface PraxisDynamicFormWidgetEditorInputs {
2417
2453
  config?: FormConfig | null;
2454
+ resourcePath?: string | null;
2455
+ apiEndpointKey?: ApiEndpoint | string | null;
2456
+ endpointKey?: ApiEndpoint;
2457
+ apiUrlEntry?: ApiUrlEntry | null;
2458
+ schemaSource?: 'resource' | 'filter';
2418
2459
  layoutPolicy?: DynamicFormLayoutPolicy | null;
2419
2460
  configPersistenceStrategy?: 'local-first' | 'input-first';
2420
2461
  mode?: DynamicFormMode;
@@ -2433,23 +2474,40 @@ interface PraxisDynamicFormWidgetEditorValue {
2433
2474
  inputs: PraxisDynamicFormWidgetEditorInputs;
2434
2475
  }
2435
2476
  declare class PraxisDynamicFormWidgetConfigEditor implements SettingsValueProvider, AfterViewInit, OnDestroy {
2477
+ private readonly crudService;
2478
+ private readonly resourceDiscovery;
2479
+ private readonly cdr;
2436
2480
  inputs: PraxisDynamicFormWidgetEditorInputs | null;
2437
2481
  widgetKey?: string;
2438
2482
  appliedValues$?: Observable<unknown>;
2439
2483
  private appliedSource?;
2484
+ private appliedResourcePath?;
2440
2485
  /** Runtime evidence supplied by the existing component editor context resolver. */
2441
2486
  context: Record<string, unknown>;
2442
2487
  formEditor?: PraxisDynamicFormConfigEditor;
2443
2488
  readonly isDirty$: BehaviorSubject<boolean>;
2444
2489
  readonly isValid$: BehaviorSubject<boolean>;
2445
2490
  readonly isBusy$: BehaviorSubject<boolean>;
2491
+ schemaWarning: string;
2446
2492
  private readonly subscription;
2493
+ private schemaSubscription?;
2494
+ private childBusy;
2495
+ private schemaLoading;
2447
2496
  private initialEditorConfig?;
2448
2497
  private sourceDraft?;
2498
+ private resourcePathDraft?;
2499
+ private optionalInject;
2449
2500
  get configurationSource(): 'local-first' | 'input-first';
2501
+ get effectiveResourcePath(): string;
2502
+ get effectiveEndpointKey(): ApiEndpoint | undefined;
2503
+ get effectiveApiUrlEntry(): ApiUrlEntry | null | undefined;
2504
+ get effectiveDiscoveryIntent(): 'crud' | 'filter';
2450
2505
  changeConfigurationSource(value: string): void;
2506
+ onResourceQuickConnect(resourcePath: string): void;
2507
+ onResourceQuickClear(): void;
2508
+ private baselineResourcePath;
2451
2509
  private updateDirtyState;
2452
- private readonly cdr;
2510
+ private publishBusy;
2453
2511
  ngAfterViewInit(): void;
2454
2512
  ngOnDestroy(): void;
2455
2513
  getSettingsValue(): PraxisDynamicFormWidgetEditorValue;
@@ -2457,6 +2515,9 @@ declare class PraxisDynamicFormWidgetConfigEditor implements SettingsValueProvid
2457
2515
  acceptAppliedValue(value: unknown): void;
2458
2516
  reset(): void;
2459
2517
  private initializeChildEditor;
2518
+ private applyBaselineDocumentToChildEditor;
2519
+ private loadResourceSchemaFieldsIfNeeded;
2520
+ private buildDiscoveryOptions;
2460
2521
  private buildValue;
2461
2522
  private createDocumentFromInputs;
2462
2523
  static ɵfac: i0.ɵɵFactoryDeclaration<PraxisDynamicFormWidgetConfigEditor, never>;