ng-form-foundry 0.6.0 → 0.7.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/index.d.ts CHANGED
@@ -2,6 +2,7 @@ import { FormControl, FormArray, FormGroup, ControlValueAccessor, Validator, Abs
2
2
  import * as _angular_core from '@angular/core';
3
3
  import { OnInit, OnDestroy, AfterViewInit, ElementRef, EventEmitter, OnChanges, QueryList, ChangeDetectorRef, SimpleChanges } from '@angular/core';
4
4
  import { MatDialog } from '@angular/material/dialog';
5
+ import * as i1 from '@angular/material/tooltip';
5
6
 
6
7
  type LeafRuntimeType<T> = T extends 'string' ? string : T extends 'number' ? number : T extends 'boolean' ? boolean : T extends 'enum' ? string | number : never;
7
8
  type LeafBase = {
@@ -744,6 +745,16 @@ declare class ConfigEditorComponent implements OnDestroy {
744
745
  * always expanded — the selected row itself must stay visible.
745
746
  */
746
747
  readonly expandOnClick: _angular_core.InputSignal<boolean>;
748
+ /**
749
+ * Whether the tree starts **fully expanded** when it (re)binds to a
750
+ * schema/form pair — every node with children unfolded, as if the user had
751
+ * hit expand-all. Off by default (only the root row is open). Read at bind
752
+ * time, so it sets the *initial* state: the user's later collapses/expands
753
+ * and the root row's expand-all toggle take over from there, and a
754
+ * structural rebuild preserves whatever is currently expanded rather than
755
+ * re-expanding.
756
+ */
757
+ readonly initiallyExpanded: _angular_core.InputSignal<boolean>;
747
758
  /**
748
759
  * Whether the detail pane shows its top breadcrumb (the selected node's
749
760
  * path, with the member remove control beside it). Hosts whose tree
@@ -918,6 +929,12 @@ declare class ConfigEditorComponent implements OnDestroy {
918
929
  * collapse keeps the root open — a tree reduced to one row reads as empty.
919
930
  */
920
931
  protected toggleExpandAll(): void;
932
+ /**
933
+ * Mark every expandable node in the current tree as expanded (the root
934
+ * included). Shared by the expand-all toggle and the `initiallyExpanded`
935
+ * bind-time seed.
936
+ */
937
+ private expandAll;
921
938
  /** The selected member's container (list / map), for the breadcrumb's remove control. */
922
939
  protected selectedMemberParent(): TreeNode | null;
923
940
  /** The section node's container (list / map), for member controls in its heading. */
@@ -959,7 +976,7 @@ declare class ConfigEditorComponent implements OnDestroy {
959
976
  */
960
977
  private escapeSeg;
961
978
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConfigEditorComponent, never>;
962
- 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; }; "expandOnClick": { "alias": "expandOnClick"; "required": false; "isSignal": true; }; "showBreadcrumb": { "alias": "showBreadcrumb"; "required": false; "isSignal": true; }; }, { "editable": "editableChange"; }, never, never, true, never>;
979
+ 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; }; "expandOnClick": { "alias": "expandOnClick"; "required": false; "isSignal": true; }; "initiallyExpanded": { "alias": "initiallyExpanded"; "required": false; "isSignal": true; }; "showBreadcrumb": { "alias": "showBreadcrumb"; "required": false; "isSignal": true; }; }, { "editable": "editableChange"; }, never, never, true, never>;
963
980
  }
964
981
 
965
982
  declare class LeafRendererComponent implements AfterViewInit {
@@ -1106,6 +1123,41 @@ declare class RadixInputDirective implements ControlValueAccessor, Validator, On
1106
1123
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<RadixInputDirective, "input[nffRadixInput]", never, { "radix": { "alias": "nffRadixInput"; "required": true; }; "valueType": { "alias": "nffRadixValueType"; "required": false; }; }, {}, never, never, true, never>;
1107
1124
  }
1108
1125
 
1126
+ /**
1127
+ * Reveals the full text in a Material tooltip only while the labelled element
1128
+ * is actually clipped by its ellipsis — a truncated "Add <field>" button reads
1129
+ * in full on hover or keyboard focus, while a label that fits stays quiet.
1130
+ * Pair with CSS that clips the measured element (`overflow: hidden;
1131
+ * text-overflow: ellipsis; white-space: nowrap`).
1132
+ *
1133
+ * Hosts {@link MatTooltip} and drives its `message` / `disabled` itself. The
1134
+ * clip state is tracked with a `ResizeObserver` and kept current as the
1135
+ * element's box changes, so it is already correct when the pointer arrives —
1136
+ * there is no show-time race with the tooltip's own pointer listeners.
1137
+ */
1138
+ declare class OverflowTooltipDirective implements AfterViewInit, OnDestroy {
1139
+ /** The full text to reveal when the measured element is clipped. */
1140
+ readonly text: _angular_core.InputSignal<string>;
1141
+ /**
1142
+ * Selector of the clipped element to measure, queried within the host; the
1143
+ * host element itself when unset. For a Material button point it at
1144
+ * `.mdc-button__label`, the wrapper that holds the text.
1145
+ */
1146
+ readonly forSelector: _angular_core.InputSignal<string | null>;
1147
+ private readonly tooltip;
1148
+ private readonly host;
1149
+ private observer?;
1150
+ constructor();
1151
+ ngAfterViewInit(): void;
1152
+ ngOnDestroy(): void;
1153
+ /** The element whose overflow decides the tooltip: the `forSelector` match, or the host. */
1154
+ private measured;
1155
+ /** Enable the tooltip only while the measured element's content overflows its box. */
1156
+ private sync;
1157
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OverflowTooltipDirective, never>;
1158
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<OverflowTooltipDirective, "[nffOverflowTooltip]", never, { "text": { "alias": "nffOverflowTooltip"; "required": true; "isSignal": true; }; "forSelector": { "alias": "nffOverflowTooltipFor"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.MatTooltip; inputs: {}; outputs: {}; }]>;
1159
+ }
1160
+
1109
1161
  declare class NodeGroupListRendererComponent implements OnInit, AfterViewInit {
1110
1162
  nodeGroupList: NodeGroupList;
1111
1163
  initialValue: number[] | string[] | boolean[];
@@ -1192,5 +1244,5 @@ declare class NodeMapRendererComponent implements OnChanges {
1192
1244
  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; }; "showAbsentOptionals": { "alias": "showAbsentOptionals"; "required": false; }; "inheritedAppearance": { "alias": "inheritedAppearance"; "required": false; }; }, {}, never, never, true, never>;
1193
1245
  }
1194
1246
 
1195
- export { CASE_KEY, ConfigEditorComponent, DynamicRecursiveFormComponent, LeafEnumRendererComponent, LeafListRendererComponent, LeafRendererComponent, NodeGroupListRendererComponent, NodeMapRendererComponent, RadixInputDirective, addMapEntry, buildControl, buildFormFromSchema, caseDisplayLabels, caseFields, defineSchema, formatRadix, removeMapEntry, renameMapEntry, resolveChoiceCase, serializeForm, setNodePresence, switchChoiceCase, toWireValue };
1247
+ export { CASE_KEY, ConfigEditorComponent, DynamicRecursiveFormComponent, LeafEnumRendererComponent, LeafListRendererComponent, LeafRendererComponent, NodeGroupListRendererComponent, NodeMapRendererComponent, OverflowTooltipDirective, RadixInputDirective, addMapEntry, buildControl, buildFormFromSchema, caseDisplayLabels, caseFields, defineSchema, formatRadix, removeMapEntry, renameMapEntry, resolveChoiceCase, serializeForm, setNodePresence, switchChoiceCase, toWireValue };
1196
1248
  export type { AnonLeaf, Appearance, ChoiceCase, DFormControl, DFormGroup, FormGroupType, Leaf, LeafBase, LeafBoolean, LeafEnum, LeafList, LeafNumber, LeafRuntimeType, LeafString, NodeChoice, NodeGroup, NodeGroupList, NodeMap, NodeType, Radix };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ng-form-foundry",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "Build fully-typed Angular Reactive Forms and Angular Material UI from a declarative, recursive form-description schema.",
5
5
  "keywords": [
6
6
  "angular",