@forgeroute/ui 0.4.52 → 0.4.53

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": "@forgeroute/ui",
3
- "version": "0.4.52",
3
+ "version": "0.4.53",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=22.0.0",
6
6
  "@angular/core": ">=22.0.0",
@@ -115,7 +115,7 @@ export declare class TemplatePickerComponent {
115
115
  private readonly host;
116
116
  private readonly search$;
117
117
  /** Filter results to a specific channel: 'email', 'text', or omit for all. */
118
- readonly channel: import("@angular/core").InputSignal<"" | "text" | "email">;
118
+ readonly channel: import("@angular/core").InputSignal<"" | "email" | "text">;
119
119
  readonly selectedId: import("@angular/core").InputSignal<string | null>;
120
120
  readonly label: import("@angular/core").InputSignal<string>;
121
121
  /** Shows the red required asterisk (same as the library inputs) — e.g. when a template must be picked to send. */
@@ -543,7 +543,7 @@ export declare class DocumentSendOptionsComponent implements UiFieldValidity {
543
543
  /** API root from FORGEROUTE_CONFIG (e.g. a cross-origin prod API); falls back to same-origin `/api`. */
544
544
  private readonly apiBase;
545
545
  /** `email` → purpose select + attachment allowed; `text` → link only (purpose fixed to e-signature). */
546
- readonly channel: import("@angular/core").InputSignal<"text" | "email">;
546
+ readonly channel: import("@angular/core").InputSignal<"email" | "text">;
547
547
  readonly label: import("@angular/core").InputSignal<string>;
548
548
  /** When true, at least one document must be chosen. The message forms leave it false: documents are optional there. */
549
549
  readonly required: import("@angular/core").InputSignal<boolean>;
@@ -608,7 +608,7 @@ export declare class DocumentSendOptionsComponent implements UiFieldValidity {
608
608
  /** Roles of documents whose row had no `signerRoles` and that the host resolves (`signers().resolveRoles`). */
609
609
  readonly roleStates: import("@angular/core").WritableSignal<Record<string, RoleState>>;
610
610
  /** The envelope's documents: `loading` / `error` while the panel reads them (`loadDocuments`), `ready` once known. */
611
- readonly envelopeStatus: import("@angular/core").WritableSignal<"error" | "loading" | "ready" | "idle">;
611
+ readonly envelopeStatus: import("@angular/core").WritableSignal<"idle" | "loading" | "ready" | "error">;
612
612
  private envelopeSub;
613
613
  private readonly roleSubs;
614
614
  /** The sender opened the collapsed "Signing options" line. */
@@ -1997,7 +1997,7 @@ export declare class SendMessagePanelComponent {
1997
1997
  readonly activeContact: import("@angular/core").WritableSignal<MessageContact | null>;
1998
1998
  /** What the sender should know about the picked contact before sending (why a channel is missing, what to add). */
1999
1999
  readonly contactNotices: import("@angular/core").Signal<string[]>;
2000
- readonly channel: import("@angular/core").WritableSignal<"text" | "email">;
2000
+ readonly channel: import("@angular/core").WritableSignal<"email" | "text">;
2001
2001
  readonly valid: import("@angular/core").WritableSignal<boolean>;
2002
2002
  /** Bumped on every fresh open / new contact — re-creates the email and text forms so no draft carries over. */
2003
2003
  readonly formEpoch: import("@angular/core").WritableSignal<number>;
@@ -1300,7 +1300,7 @@ export declare class StripeConnectComponent {
1300
1300
  readonly navigateTab: import("@angular/core").InputSignal<((url: string) => void) | null>;
1301
1301
  protected readonly visible: import("@angular/core").Signal<boolean>;
1302
1302
  /** Which screen the card shows. */
1303
- protected readonly state: import("@angular/core").Signal<"complete" | "verifying" | "incomplete" | "none">;
1303
+ protected readonly state: import("@angular/core").Signal<"none" | "complete" | "verifying" | "incomplete">;
1304
1304
  /** What the persistent status region says: the current state, plus "Loading." while a request runs. Empty while nothing is shown. */
1305
1305
  protected readonly liveText: import("@angular/core").Signal<string>;
1306
1306
  /** The user pressed a button that started a request: when the screen then changes, focus moves to the new screen (the pressed button is gone). */
@@ -5144,7 +5144,7 @@ export declare class TextareaInputComponent implements ControlValueAccessor, Val
5144
5144
  };
5145
5145
  }, {
5146
5146
  "invalidChange": "invalidChange";
5147
- }, never, never, true, never>;
5147
+ }, never, ["[uiLabelEnd]"], true, never>;
5148
5148
  }
5149
5149
  export type TextSize = 'sm' | 'md' | 'lg';
5150
5150
  export type TextTone = 'default' | 'muted' | 'accent';
@@ -6361,6 +6361,8 @@ export declare class TextTemplatePickerComponent {
6361
6361
  protected readonly _matches: import("@angular/core").Signal<TextTemplateVariable[]>;
6362
6362
  /** Display rows: group headers (when variables carry a `group`) followed by their options, each option numbered for keyboard navigation. */
6363
6363
  protected readonly _rows: import("@angular/core").Signal<Row$1[]>;
6364
+ /** The highlighted row, kept inside the current matches (the list can shrink while open). */
6365
+ protected readonly _activeIndex: import("@angular/core").Signal<number>;
6364
6366
  protected readonly _activeId: import("@angular/core").Signal<string | null>;
6365
6367
  protected readonly _status: import("@angular/core").Signal<string>;
6366
6368
  protected toggle(): void;
@@ -6368,6 +6370,8 @@ export declare class TextTemplatePickerComponent {
6368
6370
  private openList;
6369
6371
  /** Measures the trigger against the viewport: the list goes below it, or above when the room below is smaller, and never grows past the room it has. */
6370
6372
  private place;
6373
+ /** A click on the list's chrome (a group header, the empty text, the padding) must not take the focus from the search box: the keys and Escape depend on it. */
6374
+ protected onPanelMouseDown(event: MouseEvent): void;
6371
6375
  protected onQuery(value: string): void;
6372
6376
  protected onSearchKey(event: KeyboardEvent): void;
6373
6377
  protected pick(variable: TextTemplateVariable): void;
@@ -6376,9 +6380,12 @@ export declare class TextTemplatePickerComponent {
6376
6380
  private close;
6377
6381
  private scrollActive;
6378
6382
  protected onDocumentClick(event: Event): void;
6379
- /** A fixed list would drift from its button when the page resizes (or scrolls, see onAnyScroll); close it instead. */
6383
+ /** The list is fixed to the screen, so it is placed again when the page resizes or scrolls (also the soft keyboard of a phone moves the viewport, which must not close it); it closes only once its button has left the screen. */
6380
6384
  protected onResize(): void;
6381
6385
  private readonly onAnyScroll;
6386
+ private readonly onViewport;
6387
+ private unlisten;
6388
+ private follow;
6382
6389
  static ɵfac: i0.ɵɵFactoryDeclaration<TextTemplatePickerComponent, never>;
6383
6390
  static ɵcmp: i0.ɵɵComponentDeclaration<TextTemplatePickerComponent, "ui-text-template-picker", never, {
6384
6391
  "variables": {
@@ -11849,7 +11856,7 @@ export declare function splitIntro(description: string): {
11849
11856
  export declare const SETUP_DONE_KEY = "done";
11850
11857
  /**
11851
11858
  * `ui-setup-wizard` — the first-run setup wizard every app plugs into. A left stepper with progress, one step at a time on the right, Back / Skip /
11852
- * Save & Continue, and a final summary. The app gives it the list of steps (in the order that user type walks them) and the wording; the library
11859
+ * Save & Continue, and a final summary. The sidebar only reopens an earlier step; later steps and the summary are reached with Continue / Skip. The app gives it the list of steps (in the order that user type walks them) and the wording; the library
11853
11860
  * does the rest:
11854
11861
  *
11855
11862
  * - `kind: 'import'` steps open the library import window (CSV, pasted data, competitor sources) and show the result;
@@ -11944,6 +11951,8 @@ export declare class SetupWizardComponent {
11944
11951
  protected templateFor(key: string): import("@angular/core").TemplateRef<{
11945
11952
  $implicit: SetupWizardApi;
11946
11953
  }> | null;
11954
+ /** The sidebar only reopens a step BEFORE the current one (to look at it again); a later step is reached with Continue or Skip. */
11955
+ protected goToPast(key: string): void;
11947
11956
  protected goTo(key: string): void;
11948
11957
  private enter;
11949
11958
  private advanceFrom;