@truenas/ui-components 0.8.9 → 0.8.11

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.
@@ -17529,6 +17529,37 @@ export declare class TnSidePanelHeaderActionDirective {
17529
17529
  static ɵfac: i0.ɵɵFactoryDeclaration<TnSidePanelHeaderActionDirective, never>;
17530
17530
  static ɵdir: i0.ɵɵDirectiveDeclaration<TnSidePanelHeaderActionDirective, "[tnSidePanelHeaderAction]", never, {}, {}, never, never, true, never>;
17531
17531
  }
17532
+ /**
17533
+ * Directive to mark an element as the side-panel's heading, for a heading that
17534
+ * `title` cannot express — one with an image or a status beside the text (#372).
17535
+ *
17536
+ * It takes the place `title` takes: the start of the header, growing into the
17537
+ * free space and shrinking below its content width, with the header actions
17538
+ * and the close button still at the far end. It is not inside
17539
+ * `.tn-side-panel__header-actions`, so a consumer has no private class to
17540
+ * override to get it there.
17541
+ *
17542
+ * The panel renders no `<h2>` of its own unless `title` is set as well, so the
17543
+ * heading is yours to write — and so is the dialog's name: point
17544
+ * `ariaLabelledby` at it.
17545
+ *
17546
+ * @example
17547
+ * ```html
17548
+ * <tn-side-panel [(open)]="isOpen" ariaLabelledby="assistant-heading">
17549
+ * <div tnSidePanelTitle>
17550
+ * <h2 id="assistant-heading">
17551
+ * <img src="logo.svg" alt="TrueNAS" /> Assistant
17552
+ * </h2>
17553
+ * <span role="status">3 of 3 systems reachable</span>
17554
+ * </div>
17555
+ * Content here
17556
+ * </tn-side-panel>
17557
+ * ```
17558
+ */
17559
+ export declare class TnSidePanelTitleDirective {
17560
+ static ɵfac: i0.ɵɵFactoryDeclaration<TnSidePanelTitleDirective, never>;
17561
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TnSidePanelTitleDirective, "[tnSidePanelTitle]", never, {}, {}, never, never, true, never>;
17562
+ }
17532
17563
  /**
17533
17564
  * A modal side panel: `role="dialog"` with `aria-modal="true"`, focus trapped
17534
17565
  * while it is open and restored to the opener when it closes.
@@ -17723,6 +17754,13 @@ export declare class TnSidePanelComponent implements OnDestroy {
17723
17754
  closed: import("@angular/core").OutputEmitterRef<void>;
17724
17755
  private actionContent;
17725
17756
  protected hasActions: import("@angular/core").Signal<boolean>;
17757
+ /**
17758
+ * Whether a `tnSidePanelTitle` was projected (#372). The slot's wrapper is
17759
+ * rendered only then, because it grows into the header's free space: an
17760
+ * empty one beside a `title` heading would take half of the heading's room.
17761
+ */
17762
+ private titleSlotContent;
17763
+ protected hasTitleSlot: import("@angular/core").Signal<boolean>;
17726
17764
  readonly panelId: string;
17727
17765
  readonly titleId: string;
17728
17766
  /**
@@ -17892,7 +17930,7 @@ export declare class TnSidePanelComponent implements OnDestroy {
17892
17930
  "open": "openChange";
17893
17931
  "opened": "opened";
17894
17932
  "closed": "closed";
17895
- }, ["actionContent"], ["[tnSidePanelHeaderAction]", "*", "[tnSidePanelAction]"], true, never>;
17933
+ }, ["actionContent", "titleSlotContent"], ["[tnSidePanelTitle]", "[tnSidePanelHeaderAction]", "*", "[tnSidePanelAction]"], true, never>;
17896
17934
  }
17897
17935
  export interface SidePanelHarnessFilters extends BaseHarnessFilters {
17898
17936
  /** Filter by title text. */
@@ -17921,6 +17959,13 @@ export declare class TnSidePanelHarness extends ComponentHarness {
17921
17959
  /**
17922
17960
  * Get the panel title text, or `''` for a panel that renders no title.
17923
17961
  *
17962
+ * The title is the `title` heading when there is one, and otherwise the
17963
+ * heading inside a projected `tnSidePanelTitle` (#372) — the first `h1`–`h6`
17964
+ * or `role="heading"` element there, which may be the projected element
17965
+ * itself. Only the heading: a status beside it in the slot is not the title.
17966
+ * Its text is the heading's text content, so an image's `alt` is not part of
17967
+ * it.
17968
+ *
17924
17969
  * `locatorForOptional`, not `locatorFor`: since #214 a panel with no `title`
17925
17970
  * renders no heading element at all — an `<h2>` with nothing in it is an
17926
17971
  * `empty-heading` violation — and `locatorFor` throws on a selector that