ng-form-foundry 0.3.4 → 0.4.0
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 +7 -1
- package/fesm2022/ng-form-foundry.mjs +338 -36
- package/fesm2022/ng-form-foundry.mjs.map +1 -1
- package/index.d.ts +187 -11
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -79,6 +79,51 @@ type Appearance = {
|
|
|
79
79
|
noBorder?: boolean;
|
|
80
80
|
/** Start this node's section panel collapsed. Ignored when `flatten` is set. */
|
|
81
81
|
collapsed?: boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Fixed grid for the node's scalar fields: `cols` fields per row, filling
|
|
84
|
+
* left-to-right; `rows` alone fills top-to-bottom into that many rows,
|
|
85
|
+
* adding columns as needed. Overrides {@link minFieldWidth}.
|
|
86
|
+
*/
|
|
87
|
+
grid?: {
|
|
88
|
+
rows?: number;
|
|
89
|
+
cols?: number;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Narrowest a scalar field may get (a CSS length, e.g. `'12rem'`): each row
|
|
93
|
+
* fits as many equal-width fields as stay at least this wide and wraps the
|
|
94
|
+
* rest. Ignored when {@link grid} is set. With neither option the fields
|
|
95
|
+
* share one wrapping row, shrinking down to 10% of it.
|
|
96
|
+
*/
|
|
97
|
+
minFieldWidth?: string;
|
|
98
|
+
/**
|
|
99
|
+
* Where boolean (checkbox-rendered) fields go. A checkbox doesn't need a
|
|
100
|
+
* field-sized slot — in a {@link grid} it would claim a whole track —
|
|
101
|
+
* so `'beginning'`/`'end'` gathers them into a compact wrapping row of
|
|
102
|
+
* natural-width items before/after the node's other fields. `'default'`
|
|
103
|
+
* (or unset) keeps them in declaration order within the field flow.
|
|
104
|
+
*/
|
|
105
|
+
booleanFields?: 'beginning' | 'end' | 'default';
|
|
106
|
+
/**
|
|
107
|
+
* Narrowest a **text (string) field** may get in the flex flow (a CSS
|
|
108
|
+
* length): the row wraps rather than shrink such a field further. Enum
|
|
109
|
+
* fields (rendered as a select) are text-like and follow it too, as do a
|
|
110
|
+
* string/enum leaf-list's entries. No effect under {@link grid} /
|
|
111
|
+
* {@link minFieldWidth}, whose tracks size every field alike.
|
|
112
|
+
*/
|
|
113
|
+
minTextFieldWidth?: string;
|
|
114
|
+
/**
|
|
115
|
+
* Narrowest a **number field** may get in the flex flow (a CSS length) —
|
|
116
|
+
* the numeric counterpart of {@link minTextFieldWidth}, typically smaller.
|
|
117
|
+
* Also bounds a number leaf-list's entries.
|
|
118
|
+
*/
|
|
119
|
+
minNumberFieldWidth?: string;
|
|
120
|
+
/**
|
|
121
|
+
* Widest a **number field** may grow in the flex flow (a CSS length):
|
|
122
|
+
* numbers are short, so capping them keeps a lone number from stretching
|
|
123
|
+
* across space a text field could use. Also caps a number leaf-list's
|
|
124
|
+
* entries. No effect under {@link grid} / {@link minFieldWidth}.
|
|
125
|
+
*/
|
|
126
|
+
maxNumberFieldWidth?: string;
|
|
82
127
|
};
|
|
83
128
|
type Leaf = LeafString | LeafNumber | LeafBoolean | LeafEnum;
|
|
84
129
|
type LeafList<TKind extends Leaf['type'] = Leaf['type']> = {
|
|
@@ -153,6 +198,8 @@ type NodeChoice = {
|
|
|
153
198
|
/**
|
|
154
199
|
* Display labels for cases, keyed by case name — for anonymous/auto-named
|
|
155
200
|
* branches whose keys are not human-friendly. Falls back to the case name.
|
|
201
|
+
* Selectors render these through `caseDisplayLabels`, which disambiguates
|
|
202
|
+
* colliding entries by each case's distinguishing fields.
|
|
156
203
|
*/
|
|
157
204
|
caseLabels?: Record<string, string>;
|
|
158
205
|
default?: string;
|
|
@@ -212,6 +259,19 @@ type DFormGroup<T extends NodeGroup> = FormGroup<FormGroupType<T>>;
|
|
|
212
259
|
* clobber the active-case control.
|
|
213
260
|
*/
|
|
214
261
|
declare function caseFields(body: ChoiceCase): Record<string, NodeType>;
|
|
262
|
+
/**
|
|
263
|
+
* Display labels for a choice's cases, keyed by case name, with colliding
|
|
264
|
+
* labels made unique. Schema-supplied `caseLabels` can repeat (e.g. two
|
|
265
|
+
* O-RAN A1 scope branches labeled from the same discriminating field), which
|
|
266
|
+
* makes the case selector ambiguous. Unique labels pass through untouched;
|
|
267
|
+
* each colliding case first gains the fields that set it apart from its
|
|
268
|
+
* same-labeled peers — "UE ID (Group ID)" vs "UE ID (Slice ID)" — and any
|
|
269
|
+
* cases the field suffix cannot separate (no distinguishing fields, peers
|
|
270
|
+
* with identical field sets among a larger clash group, or distinguishing
|
|
271
|
+
* fields that share one display label) fall back to their case name, which
|
|
272
|
+
* is unique by construction.
|
|
273
|
+
*/
|
|
274
|
+
declare function caseDisplayLabels(choice: NodeChoice): Record<string, string>;
|
|
215
275
|
/**
|
|
216
276
|
* The active case of a choice: an explicit `__case` in the initial value, else
|
|
217
277
|
* the case {@link inferChoiceCase} ranks best against the initial data (inline
|
|
@@ -320,6 +380,14 @@ declare function serializeForm(schema: NodeGroup, form: FormGroup): Record<strin
|
|
|
320
380
|
*/
|
|
321
381
|
declare function defineSchema<const S extends NodeGroup>(schema: S): S;
|
|
322
382
|
|
|
383
|
+
/**
|
|
384
|
+
* Inline CSS declarations (property → value) for a node's `.fields` area,
|
|
385
|
+
* derived from its {@link Appearance} (see the form component's
|
|
386
|
+
* `fieldsLayout`) and bound via `[style]`. Also handed to a stacked
|
|
387
|
+
* leaf-list's `layout` input so its entries repeat the same grid tracks.
|
|
388
|
+
*/
|
|
389
|
+
type LayoutStyles = Record<string, string>;
|
|
390
|
+
|
|
323
391
|
declare function asFormControl(control: any): FormControl;
|
|
324
392
|
declare function asFormArray(control: any): FormArray;
|
|
325
393
|
declare function asFormGroup(control: any): FormGroup;
|
|
@@ -349,8 +417,67 @@ declare class DynamicRecursiveFormComponent implements OnInit {
|
|
|
349
417
|
* menu) hand focus to the new field, like the form's own add button does.
|
|
350
418
|
*/
|
|
351
419
|
readonly focusLeaf: _angular_core.InputSignal<string | null>;
|
|
420
|
+
/**
|
|
421
|
+
* Field-layout appearance cascading down from the parent group. The node's
|
|
422
|
+
* own `appearance` wins per property — see {@link mergeAppearance}.
|
|
423
|
+
*/
|
|
424
|
+
readonly inheritedAppearance: _angular_core.InputSignal<Appearance | null>;
|
|
352
425
|
/** True when the schema is a root group (rendered flat, without a wrapping card). */
|
|
353
426
|
readonly root: _angular_core.Signal<boolean>;
|
|
427
|
+
/** The node's own `appearance` with inherited layout gaps filled in. */
|
|
428
|
+
protected readonly effectiveAppearance: _angular_core.Signal<Appearance | undefined>;
|
|
429
|
+
/** The layout subset this node's children inherit. */
|
|
430
|
+
protected readonly childAppearance: _angular_core.Signal<Appearance | null>;
|
|
431
|
+
/**
|
|
432
|
+
* The per-type width bounds are flex-flow-only, and their CSS custom
|
|
433
|
+
* properties inherit into leaf-list internals that the grid-mode resets
|
|
434
|
+
* cannot reach across the encapsulation boundary — so under a grid layout
|
|
435
|
+
* the variables are simply not set at all.
|
|
436
|
+
*/
|
|
437
|
+
private flexOnly;
|
|
438
|
+
/** `minTextFieldWidth` for the `.fields` CSS custom property, or null. */
|
|
439
|
+
protected readonly textFieldMin: _angular_core.Signal<string | null>;
|
|
440
|
+
/** `minNumberFieldWidth` for the `.fields` CSS custom property, or null. */
|
|
441
|
+
protected readonly numberFieldMin: _angular_core.Signal<string | null>;
|
|
442
|
+
/** `maxNumberFieldWidth` for the `.fields` CSS custom property, or null. */
|
|
443
|
+
protected readonly numberFieldMax: _angular_core.Signal<string | null>;
|
|
444
|
+
/**
|
|
445
|
+
* True when the active grid defines explicit column tracks. Only then can a
|
|
446
|
+
* stacked leaf-list meaningfully span the row (`grid-column: 1 / -1`
|
|
447
|
+
* resolves `-1` to line 1 without an explicit column template) and repeat
|
|
448
|
+
* the tracks for its entries; in a rows-only grid the list stays a normal
|
|
449
|
+
* auto-flowed item.
|
|
450
|
+
*/
|
|
451
|
+
protected readonly gridHasCols: _angular_core.Signal<boolean>;
|
|
452
|
+
/**
|
|
453
|
+
* Inline grid styles for the `.fields` area, from `appearance`: `grid`
|
|
454
|
+
* becomes explicit tracks (`cols` fields per row; `rows` alone fills
|
|
455
|
+
* top-to-bottom, adding columns as needed) and `minFieldWidth` becomes
|
|
456
|
+
* as-many-as-fit equal columns of at least that width. `grid` wins over
|
|
457
|
+
* `minFieldWidth`; with neither, `null` keeps the stylesheet's wrapping
|
|
458
|
+
* flex flow. Non-positive `rows`/`cols` are ignored.
|
|
459
|
+
*/
|
|
460
|
+
protected readonly fieldsLayout: _angular_core.Signal<LayoutStyles | null>;
|
|
461
|
+
/**
|
|
462
|
+
* Whether the gathered boolean row would show anything: a plain boolean, an
|
|
463
|
+
* enabled presence boolean, or (while editable) an absent one's add button.
|
|
464
|
+
* Keeps a read-only form from rendering an empty `.boolean-fields` div,
|
|
465
|
+
* which would add a stray container gap.
|
|
466
|
+
*/
|
|
467
|
+
protected booleanAreaVisible(): boolean;
|
|
468
|
+
/**
|
|
469
|
+
* Whether a leaf renders in the regular `.fields` flow: always, unless it is
|
|
470
|
+
* a boolean that {@link booleanPlacement} gathers into the `.boolean-fields`
|
|
471
|
+
* row instead.
|
|
472
|
+
*/
|
|
473
|
+
protected inFieldFlow(child: Leaf): boolean;
|
|
474
|
+
/**
|
|
475
|
+
* Where `appearance.booleanFields` places the checkbox fields: `'beginning'`
|
|
476
|
+
* or `'end'` renders them grouped in the `.boolean-fields` row and excludes
|
|
477
|
+
* them from the regular field flow; `'default'` (also when the group has no
|
|
478
|
+
* boolean leaf to move) leaves the flow untouched.
|
|
479
|
+
*/
|
|
480
|
+
protected readonly booleanPlacement: _angular_core.Signal<"beginning" | "end" | "default">;
|
|
354
481
|
ngOnInit(): void;
|
|
355
482
|
protected get nodeGroupChildrenList(): Array<{
|
|
356
483
|
key: string;
|
|
@@ -374,9 +501,17 @@ declare class DynamicRecursiveFormComponent implements OnInit {
|
|
|
374
501
|
protected objectKeys(obj: Record<string, unknown>): string[];
|
|
375
502
|
/** The active case name of a choice control, or null if none is selected. */
|
|
376
503
|
protected activeCase(key: string): string | null;
|
|
377
|
-
/**
|
|
504
|
+
/**
|
|
505
|
+
* A synthetic flattened NodeGroup used to render the active case's fields
|
|
506
|
+
* against the choice's FormGroup. Carries the choice's own `appearance`
|
|
507
|
+
* (grid / field-width layout) onto the case fields.
|
|
508
|
+
*/
|
|
378
509
|
protected caseAsGroup(choice: NodeChoice, caseName: string): NodeGroup;
|
|
379
|
-
/**
|
|
510
|
+
/**
|
|
511
|
+
* The display label for a case: the schema's `caseLabels` entry (colliding
|
|
512
|
+
* labels disambiguated by their distinguishing fields — see
|
|
513
|
+
* {@link caseDisplayLabels}), else the case name.
|
|
514
|
+
*/
|
|
380
515
|
caseLabel(choice: NodeChoice, caseName: string): string;
|
|
381
516
|
/**
|
|
382
517
|
* A copy of a group flagged to render its fields inline (no inner panel). Used
|
|
@@ -390,7 +525,7 @@ declare class DynamicRecursiveFormComponent implements OnInit {
|
|
|
390
525
|
protected readonly asFormArray: typeof asFormArray;
|
|
391
526
|
protected readonly asFormControl: typeof asFormControl;
|
|
392
527
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DynamicRecursiveFormComponent, never>;
|
|
393
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DynamicRecursiveFormComponent, "nff-dynamic-recursive-form", never, { "schema": { "alias": "schema"; "required": true; "isSignal": true; }; "initialValue": { "alias": "initialValue"; "required": false; "isSignal": true; }; "formGroup": { "alias": "formGroup"; "required": false; "isSignal": true; }; "index": { "alias": "index"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "addButtonCallback": { "alias": "addButtonCallback"; "required": false; "isSignal": true; }; "focusLeaf": { "alias": "focusLeaf"; "required": false; "isSignal": true; }; }, { "remove": "remove"; "editable": "editableChange"; }, never, never, true, never>;
|
|
528
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DynamicRecursiveFormComponent, "nff-dynamic-recursive-form", never, { "schema": { "alias": "schema"; "required": true; "isSignal": true; }; "initialValue": { "alias": "initialValue"; "required": false; "isSignal": true; }; "formGroup": { "alias": "formGroup"; "required": false; "isSignal": true; }; "index": { "alias": "index"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "addButtonCallback": { "alias": "addButtonCallback"; "required": false; "isSignal": true; }; "focusLeaf": { "alias": "focusLeaf"; "required": false; "isSignal": true; }; "inheritedAppearance": { "alias": "inheritedAppearance"; "required": false; "isSignal": true; }; }, { "remove": "remove"; "editable": "editableChange"; }, never, never, true, never>;
|
|
394
529
|
}
|
|
395
530
|
|
|
396
531
|
/** Metadata on a list-container node that lets the tree add items to its FormArray. */
|
|
@@ -453,6 +588,8 @@ interface TreeNode {
|
|
|
453
588
|
presenceRemovable?: {
|
|
454
589
|
key: string;
|
|
455
590
|
};
|
|
591
|
+
/** Field-layout appearance inherited from ancestor groups, for the node's detail-section form. */
|
|
592
|
+
inherited?: Appearance | null;
|
|
456
593
|
/** Present on a choice node: the choice schema and its FormGroup (holding `__case` + the active case's fields). */
|
|
457
594
|
choice?: {
|
|
458
595
|
schema: NodeChoice;
|
|
@@ -504,6 +641,12 @@ declare class ConfigEditorComponent implements OnDestroy {
|
|
|
504
641
|
* can flip it itself and the host observes the change.
|
|
505
642
|
*/
|
|
506
643
|
readonly editable: _angular_core.ModelSignal<boolean>;
|
|
644
|
+
/**
|
|
645
|
+
* Title for the root tree row and breadcrumb origin, overriding the schema's
|
|
646
|
+
* own `label`/`name`. Read when the tree is (re)built, so a later change
|
|
647
|
+
* shows on the next rebind or structural rebuild, not immediately.
|
|
648
|
+
*/
|
|
649
|
+
readonly rootTitle: _angular_core.InputSignal<string | undefined>;
|
|
507
650
|
root: TreeNode;
|
|
508
651
|
selected: TreeNode | null;
|
|
509
652
|
/** The selected subtree as a flat, breadcrumb-separated section list. */
|
|
@@ -563,7 +706,11 @@ declare class ConfigEditorComponent implements OnDestroy {
|
|
|
563
706
|
activeCase(node: TreeNode): string | null;
|
|
564
707
|
/** The display label of a choice node's active case, or null when no case is selected. */
|
|
565
708
|
activeCaseLabel(node: TreeNode): string | null;
|
|
566
|
-
/**
|
|
709
|
+
/**
|
|
710
|
+
* The display label for a case: the schema's `caseLabels` entry (colliding
|
|
711
|
+
* labels disambiguated by their distinguishing fields — see
|
|
712
|
+
* {@link caseDisplayLabels}), else the case name.
|
|
713
|
+
*/
|
|
567
714
|
protected caseLabel(choice: NodeChoice, caseName: string): string;
|
|
568
715
|
/**
|
|
569
716
|
* Switch a choice node's active case from its detail selector; the
|
|
@@ -620,6 +767,8 @@ declare class ConfigEditorComponent implements OnDestroy {
|
|
|
620
767
|
private shapeOf;
|
|
621
768
|
/** The instance id a container contributes to the shape signature. */
|
|
622
769
|
private uidOf;
|
|
770
|
+
/** Root row title: host override, else schema label, else its name — with the {@link ROOT_SENTINEL} swapped for a generic title. */
|
|
771
|
+
private rootLabelOf;
|
|
623
772
|
/** Rebuild the whole tree from schema + form and refresh the shape signature. */
|
|
624
773
|
private rebuild;
|
|
625
774
|
/** Re-point `selected` at the rebuilt tree: same path, else the closest surviving ancestor. */
|
|
@@ -664,13 +813,19 @@ declare class ConfigEditorComponent implements OnDestroy {
|
|
|
664
813
|
/**
|
|
665
814
|
* The node's own fields as a flattened schema: leaf and leafList children
|
|
666
815
|
* only. Complex children are rendered as sections of their own, so the
|
|
667
|
-
* embedded form never draws nested section chrome.
|
|
816
|
+
* embedded form never draws nested section chrome. The node's `appearance`
|
|
817
|
+
* (grid / field-width layout) carries into the slice. Null when there are
|
|
818
|
+
* no own fields.
|
|
668
819
|
*/
|
|
669
820
|
private leafOnly;
|
|
670
821
|
private buildTree;
|
|
671
822
|
/** Build the tree node for a single non-leaf child, dispatching on its kind. Null when its control is missing. */
|
|
672
823
|
private buildChildNode;
|
|
673
|
-
/**
|
|
824
|
+
/**
|
|
825
|
+
* Synthetic group over a case's normalized fields, so a case body builds
|
|
826
|
+
* like any group. Carries the choice's own `appearance` so its layout
|
|
827
|
+
* reaches the case fields.
|
|
828
|
+
*/
|
|
674
829
|
private caseAsGroup;
|
|
675
830
|
/** A node's display label: its schema `label`, else its record key. */
|
|
676
831
|
private labelOf;
|
|
@@ -683,7 +838,7 @@ declare class ConfigEditorComponent implements OnDestroy {
|
|
|
683
838
|
*/
|
|
684
839
|
private escapeSeg;
|
|
685
840
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConfigEditorComponent, never>;
|
|
686
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConfigEditorComponent, "nff-config-editor", never, { "schema": { "alias": "schema"; "required": true; "isSignal": true; }; "formGroup": { "alias": "formGroup"; "required": true; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; }, { "editable": "editableChange"; }, never, never, true, never>;
|
|
841
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConfigEditorComponent, "nff-config-editor", never, { "schema": { "alias": "schema"; "required": true; "isSignal": true; }; "formGroup": { "alias": "formGroup"; "required": true; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "rootTitle": { "alias": "rootTitle"; "required": false; "isSignal": true; }; }, { "editable": "editableChange"; }, never, never, true, never>;
|
|
687
842
|
}
|
|
688
843
|
|
|
689
844
|
declare class LeafRendererComponent implements AfterViewInit {
|
|
@@ -716,6 +871,13 @@ declare class LeafListRendererComponent implements OnInit {
|
|
|
716
871
|
formArray: any;
|
|
717
872
|
editable: boolean;
|
|
718
873
|
minItems: number;
|
|
874
|
+
/**
|
|
875
|
+
* The parent group's grid layout (its `fieldsLayout` styles). A stacked list
|
|
876
|
+
* spans the parent's full row, so its entries repeat the same tracks and
|
|
877
|
+
* stay aligned with the columns above; an inline (single-entry) list sits in
|
|
878
|
+
* one track and ignores it.
|
|
879
|
+
*/
|
|
880
|
+
layout: LayoutStyles | null;
|
|
719
881
|
message: EventEmitter<any>;
|
|
720
882
|
matDialog: MatDialog;
|
|
721
883
|
/**
|
|
@@ -725,11 +887,15 @@ declare class LeafListRendererComponent implements OnInit {
|
|
|
725
887
|
* cannot. Consumed by the `:host(.stacked)` rule.
|
|
726
888
|
*/
|
|
727
889
|
get stacked(): boolean;
|
|
890
|
+
/** The entries' value type as a host class, so type-scoped min-widths (`--nff-min-*-field-width`) can target them. */
|
|
891
|
+
get typeClass(): string;
|
|
892
|
+
/** Applies {@link layout} to the host (the entries' container) while stacked. */
|
|
893
|
+
get hostLayout(): LayoutStyles | null;
|
|
728
894
|
ngOnInit(): void;
|
|
729
895
|
removeItem($index: number): void;
|
|
730
896
|
addItem(): void;
|
|
731
897
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LeafListRendererComponent, never>;
|
|
732
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LeafListRendererComponent, "nff-leaf-list-renderer", never, { "leaf_": { "alias": "leaf_"; "required": false; }; "initialValue": { "alias": "initialValue"; "required": false; }; "formArray": { "alias": "formArray"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "minItems": { "alias": "minItems"; "required": false; }; }, { "message": "message"; }, never, never, true, never>;
|
|
898
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<LeafListRendererComponent, "nff-leaf-list-renderer", never, { "leaf_": { "alias": "leaf_"; "required": false; }; "initialValue": { "alias": "initialValue"; "required": false; }; "formArray": { "alias": "formArray"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "minItems": { "alias": "minItems"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; }, { "message": "message"; }, never, never, true, never>;
|
|
733
899
|
}
|
|
734
900
|
|
|
735
901
|
declare class LeafEnumRendererComponent {
|
|
@@ -750,6 +916,8 @@ declare class NodeGroupListRendererComponent implements OnInit, AfterViewInit {
|
|
|
750
916
|
editable: boolean;
|
|
751
917
|
minItems: number;
|
|
752
918
|
maxItems: number;
|
|
919
|
+
/** Field-layout appearance from the enclosing group, forwarded to every item form. */
|
|
920
|
+
inheritedAppearance: Appearance | null;
|
|
753
921
|
message: EventEmitter<any>;
|
|
754
922
|
items: QueryList<DynamicRecursiveFormComponent>;
|
|
755
923
|
cdr: ChangeDetectorRef;
|
|
@@ -761,7 +929,7 @@ declare class NodeGroupListRendererComponent implements OnInit, AfterViewInit {
|
|
|
761
929
|
asFormGroup(group: any): FormGroup;
|
|
762
930
|
getTitle($index: number): string;
|
|
763
931
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeGroupListRendererComponent, never>;
|
|
764
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeGroupListRendererComponent, "nff-node-group-list-renderer", never, { "nodeGroupList": { "alias": "nodeGroupList"; "required": false; }; "initialValue": { "alias": "initialValue"; "required": false; }; "formArray": { "alias": "formArray"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "minItems": { "alias": "minItems"; "required": false; }; "maxItems": { "alias": "maxItems"; "required": false; }; }, { "message": "message"; }, never, never, true, never>;
|
|
932
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeGroupListRendererComponent, "nff-node-group-list-renderer", never, { "nodeGroupList": { "alias": "nodeGroupList"; "required": false; }; "initialValue": { "alias": "initialValue"; "required": false; }; "formArray": { "alias": "formArray"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "minItems": { "alias": "minItems"; "required": false; }; "maxItems": { "alias": "maxItems"; "required": false; }; "inheritedAppearance": { "alias": "inheritedAppearance"; "required": false; }; }, { "message": "message"; }, never, never, true, never>;
|
|
765
933
|
}
|
|
766
934
|
|
|
767
935
|
/**
|
|
@@ -775,9 +943,17 @@ declare class NodeMapRendererComponent implements OnChanges {
|
|
|
775
943
|
nodeMap: NodeMap;
|
|
776
944
|
formGroup: FormGroup<any>;
|
|
777
945
|
editable: boolean;
|
|
946
|
+
/** Field-layout appearance from the enclosing group, forwarded to group-valued entry forms. */
|
|
947
|
+
inheritedAppearance: Appearance | null;
|
|
778
948
|
/** Ordered view of entry keys, kept stable across renames (`addControl` appends). */
|
|
779
949
|
entryKeys: string[];
|
|
780
950
|
ngOnChanges(changes: SimpleChanges): void;
|
|
951
|
+
/**
|
|
952
|
+
* What entry forms inherit: the enclosing group's layout with the map's own
|
|
953
|
+
* `appearance` merged over it. Counterpart of the config editor's map-entry
|
|
954
|
+
* threading in `buildChildNode`.
|
|
955
|
+
*/
|
|
956
|
+
get entryAppearance(): Appearance | null;
|
|
781
957
|
/** The value schema as a leaf (used when `value.kind === 'leaf'`). */
|
|
782
958
|
get valueLeaf(): Leaf;
|
|
783
959
|
/** The value schema as a group (used when `value.kind === 'nodeGroup'`). */
|
|
@@ -797,8 +973,8 @@ declare class NodeMapRendererComponent implements OnChanges {
|
|
|
797
973
|
protected readonly asFormControl: typeof asFormControl;
|
|
798
974
|
protected readonly asFormGroup: typeof asFormGroup;
|
|
799
975
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NodeMapRendererComponent, never>;
|
|
800
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeMapRendererComponent, "nff-node-map-renderer", never, { "nodeMap": { "alias": "nodeMap"; "required": false; }; "formGroup": { "alias": "formGroup"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; }, {}, never, never, true, never>;
|
|
976
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NodeMapRendererComponent, "nff-node-map-renderer", never, { "nodeMap": { "alias": "nodeMap"; "required": false; }; "formGroup": { "alias": "formGroup"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "inheritedAppearance": { "alias": "inheritedAppearance"; "required": false; }; }, {}, never, never, true, never>;
|
|
801
977
|
}
|
|
802
978
|
|
|
803
|
-
export { CASE_KEY, ConfigEditorComponent, DynamicRecursiveFormComponent, LeafEnumRendererComponent, LeafListRendererComponent, LeafRendererComponent, NodeGroupListRendererComponent, NodeMapRendererComponent, addMapEntry, buildControl, buildFormFromSchema, caseFields, defineSchema, removeMapEntry, renameMapEntry, resolveChoiceCase, serializeForm, switchChoiceCase, toWireValue };
|
|
979
|
+
export { CASE_KEY, ConfigEditorComponent, DynamicRecursiveFormComponent, LeafEnumRendererComponent, LeafListRendererComponent, LeafRendererComponent, NodeGroupListRendererComponent, NodeMapRendererComponent, addMapEntry, buildControl, buildFormFromSchema, caseDisplayLabels, caseFields, defineSchema, removeMapEntry, renameMapEntry, resolveChoiceCase, serializeForm, switchChoiceCase, toWireValue };
|
|
804
980
|
export type { AnonLeaf, Appearance, ChoiceCase, DFormControl, DFormGroup, FormGroupType, Leaf, LeafBase, LeafBoolean, LeafEnum, LeafList, LeafNumber, LeafRuntimeType, LeafString, NodeChoice, NodeGroup, NodeGroupList, NodeMap, NodeType };
|
package/package.json
CHANGED