@life-cockpit/angular-ui-kit 2.13.1 → 2.15.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.
@@ -6535,6 +6535,7 @@ interface LayoutEdge {
6535
6535
  * - Color-coded edges per relationship type
6536
6536
  * - Node status colors (default, active, success, warning, error, muted)
6537
6537
  * - Pan and zoom controls with mouse wheel support
6538
+ * - Auto-fit (`autoFit`) and a static, non-navigable mode (`interactive: false`)
6538
6539
  * - Collapsible sub-trees
6539
6540
  * - Interactive node selection with detail panel
6540
6541
  * - Legend showing active relationship types
@@ -6559,6 +6560,17 @@ interface LayoutEdge {
6559
6560
  * <lc-dependency-viewer [root]="specTree" direction="horizontal" />
6560
6561
  * ```
6561
6562
  *
6563
+ * @example Static overview — the whole graph at a glance, click-through only
6564
+ * ```html
6565
+ * <lc-dependency-viewer
6566
+ * [root]="graph()"
6567
+ * [autoFit]="true"
6568
+ * [interactive]="false"
6569
+ * height="360px"
6570
+ * (nodeSelect)="openDetail($event)"
6571
+ * />
6572
+ * ```
6573
+ *
6562
6574
  * @example Incremental graph exploration
6563
6575
  * ```html
6564
6576
  * <lc-dependency-viewer
@@ -6577,6 +6589,23 @@ declare class DependencyViewerComponent {
6577
6589
  readonly showToolbar: _angular_core.InputSignal<boolean>;
6578
6590
  readonly showEdgeLabels: _angular_core.InputSignal<boolean>;
6579
6591
  readonly edgeWidth: _angular_core.InputSignal<number>;
6592
+ /**
6593
+ * Scales and centres the graph so that all of it fits the canvas, and re-fits
6594
+ * whenever the container or the graph changes size. Turns the viewer into an
6595
+ * overview: nothing to pan or zoom to, everything visible at once.
6596
+ *
6597
+ * Shrinks only — the fit never enlarges past 100%, so a two-node graph keeps its
6598
+ * natural size instead of ballooning to fill the frame.
6599
+ *
6600
+ * Pair with `interactive: false` for a purely static display.
6601
+ */
6602
+ readonly autoFit: _angular_core.InputSignal<boolean>;
6603
+ /**
6604
+ * Viewport navigation: drag-to-pan, wheel-zoom and the toolbar's zoom buttons.
6605
+ * `false` freezes the viewport — node selection, expansion and collapse keep
6606
+ * working, so `nodeSelect` still fires in a static viewer.
6607
+ */
6608
+ readonly interactive: _angular_core.InputSignal<boolean>;
6580
6609
  /**
6581
6610
  * Node the viewport holds still across `root` updates. Defaults to the node the
6582
6611
  * user last selected, which keeps click-to-expand steady without any wiring.
@@ -6602,6 +6631,7 @@ declare class DependencyViewerComponent {
6602
6631
  private lastMouseX;
6603
6632
  private lastMouseY;
6604
6633
  private readonly hostEl;
6634
+ private readonly canvasRef;
6605
6635
  /** Last known layout position of the anchor, to compensate pan after a relayout. */
6606
6636
  private anchorPos;
6607
6637
  protected effectiveRoot: _angular_core.Signal<DependencyNode>;
@@ -6618,6 +6648,7 @@ declare class DependencyViewerComponent {
6618
6648
  protected svgHeight: _angular_core.Signal<number>;
6619
6649
  protected viewBox: _angular_core.Signal<string>;
6620
6650
  protected transform: _angular_core.Signal<string>;
6651
+ protected zoomLabel: _angular_core.Signal<number>;
6621
6652
  protected selectedNode: _angular_core.Signal<LayoutNode | null>;
6622
6653
  protected selectedDependsOn: _angular_core.Signal<DependencyEdgeDef[]>;
6623
6654
  protected legendItems: _angular_core.Signal<{
@@ -6642,7 +6673,18 @@ declare class DependencyViewerComponent {
6642
6673
  protected resetZoom(): void;
6643
6674
  /** Centres the viewport on a node. No-op for an id that isn't laid out. */
6644
6675
  focusNode(id: string): void;
6645
- /** Restores the initial zoom and pan. */
6676
+ /**
6677
+ * Scales and centres the graph so all of it fits the canvas. Called for you when
6678
+ * `autoFit` is set; public so a caller can fit on demand without it.
6679
+ *
6680
+ * No-op while the canvas has no size (before the first render, or in a detached
6681
+ * / `display: none` container) — the `autoFit` observers re-run once it does.
6682
+ */
6683
+ fit(): void;
6684
+ /**
6685
+ * Restores the initial view — the fitted one under `autoFit`, otherwise the
6686
+ * default zoom and pan.
6687
+ */
6646
6688
  resetView(): void;
6647
6689
  /** Expands a collapsed node. */
6648
6690
  expand(id: string): void;
@@ -6652,6 +6694,15 @@ declare class DependencyViewerComponent {
6652
6694
  expandAll(): void;
6653
6695
  /** Collapses every node that has children. */
6654
6696
  collapseAll(): void;
6697
+ private canvasEl;
6698
+ /**
6699
+ * Bounding box of everything drawn, in layout units.
6700
+ *
6701
+ * Edge label points stand in for the edges themselves. A parent→child edge stays
6702
+ * inside the node boxes anyway, and a bowed cross-reference puts its label at the
6703
+ * apex of the bow — the only part of it that reaches outside them.
6704
+ */
6705
+ private contentBox;
6655
6706
  protected onMouseDown(event: MouseEvent): void;
6656
6707
  protected onMouseMove(event: MouseEvent): void;
6657
6708
  protected onMouseUp(): void;
@@ -6660,7 +6711,7 @@ declare class DependencyViewerComponent {
6660
6711
  protected getNodeBorder(node: LayoutNode): string;
6661
6712
  protected getNodeText(node: LayoutNode): string;
6662
6713
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DependencyViewerComponent, never>;
6663
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DependencyViewerComponent, "lc-dependency-viewer", never, { "root": { "alias": "root"; "required": true; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "showEdgeLabels": { "alias": "showEdgeLabels"; "required": false; "isSignal": true; }; "edgeWidth": { "alias": "edgeWidth"; "required": false; "isSignal": true; }; "anchorNodeId": { "alias": "anchorNodeId"; "required": false; "isSignal": true; }; "typeColors": { "alias": "typeColors"; "required": false; "isSignal": true; }; "hiddenRelations": { "alias": "hiddenRelations"; "required": false; "isSignal": true; }; "hiddenTypes": { "alias": "hiddenTypes"; "required": false; "isSignal": true; }; }, { "nodeSelect": "nodeSelect"; "nodeExpand": "nodeExpand"; }, never, never, true, never>;
6714
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DependencyViewerComponent, "lc-dependency-viewer", never, { "root": { "alias": "root"; "required": true; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "showEdgeLabels": { "alias": "showEdgeLabels"; "required": false; "isSignal": true; }; "edgeWidth": { "alias": "edgeWidth"; "required": false; "isSignal": true; }; "autoFit": { "alias": "autoFit"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "anchorNodeId": { "alias": "anchorNodeId"; "required": false; "isSignal": true; }; "typeColors": { "alias": "typeColors"; "required": false; "isSignal": true; }; "hiddenRelations": { "alias": "hiddenRelations"; "required": false; "isSignal": true; }; "hiddenTypes": { "alias": "hiddenTypes"; "required": false; "isSignal": true; }; }, { "nodeSelect": "nodeSelect"; "nodeExpand": "nodeExpand"; }, never, never, true, never>;
6664
6715
  }
6665
6716
 
6666
6717
  /**