@forgeroute/ui 0.4.61 → 0.4.62

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.61",
3
+ "version": "0.4.62",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=22.0.0",
6
6
  "@angular/core": ">=22.0.0",
@@ -2682,7 +2682,7 @@ export declare class AudioPlayerComponent {
2682
2682
  /** Accessible name of the player. */
2683
2683
  readonly ariaLabel: import("@angular/core").InputSignal<string>;
2684
2684
  /** How much to load before play: 'metadata' (default), 'auto' or 'none'. */
2685
- readonly preload: import("@angular/core").InputSignal<"none" | "auto" | "metadata">;
2685
+ readonly preload: import("@angular/core").InputSignal<"metadata" | "none" | "auto">;
2686
2686
  /** Fires when the browser can't load or decode the source. */
2687
2687
  readonly playbackError: import("@angular/core").OutputEmitterRef<void>;
2688
2688
  protected readonly failed: import("@angular/core").WritableSignal<boolean>;
@@ -3963,7 +3963,7 @@ export declare class ButtonComponent {
3963
3963
  * `ghost-start`: a ghost button for list / section toggles - a full-width row with its content aligned to the start, transparent
3964
3964
  * background, hover tint and the normal focus ring. Pair it with `ariaExpanded` / `ariaPressed`; the label may contain a heading element.
3965
3965
  */
3966
- readonly variant: import("@angular/core").InputSignal<"primary" | "secondary" | "danger" | "warning" | "link" | "ghost" | "ghost-start" | "tab" | "icon" | "icon-danger">;
3966
+ readonly variant: import("@angular/core").InputSignal<"link" | "primary" | "secondary" | "danger" | "warning" | "ghost" | "ghost-start" | "tab" | "icon" | "icon-danger">;
3967
3967
  /** Renders an anchor to this route instead of a button (use with `variant="link"` for an inline text link). `['/settings']` or `'/settings'`. While `disabled` or `loading` it renders a non-clickable `<span role="link" aria-disabled>` with no href (like `href`). */
3968
3968
  readonly routerLink: import("@angular/core").InputSignal<string | readonly unknown[] | null>;
3969
3969
  /** Query params of the `routerLink` (e.g. `{ section: 'deal-defaults' }`). */
@@ -4009,7 +4009,7 @@ export declare class ButtonComponent {
4009
4009
  readonly color: import("@angular/core").InputSignal<string | undefined>;
4010
4010
  readonly active: import("@angular/core").InputSignal<boolean>;
4011
4011
  readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | "xs">;
4012
- readonly type: import("@angular/core").InputSignal<"reset" | "submit" | "button">;
4012
+ readonly type: import("@angular/core").InputSignal<"button" | "reset" | "submit">;
4013
4013
  readonly disabled: import("@angular/core").InputSignal<boolean>;
4014
4014
  readonly loading: import("@angular/core").InputSignal<boolean>;
4015
4015
  readonly fullWidth: import("@angular/core").InputSignal<boolean>;
@@ -4957,7 +4957,7 @@ export declare class TextInputComponent implements ControlValueAccessor, Validat
4957
4957
  * `search`, `text`, `none`). Empty (default) = the browser's default for the field, except `type="tel"`, which keeps `tel`.
4958
4958
  * It only picks the keyboard; it does not restrict what can be typed or pasted.
4959
4959
  */
4960
- readonly inputmode: import("@angular/core").InputSignal<"" | "none" | "text" | "search" | "email" | "tel" | "url" | "decimal" | "numeric">;
4960
+ readonly inputmode: import("@angular/core").InputSignal<"" | "search" | "text" | "numeric" | "none" | "email" | "tel" | "url" | "decimal">;
4961
4961
  readonly readonly: import("@angular/core").InputSignal<boolean>;
4962
4962
  readonly hint: import("@angular/core").InputSignal<string>;
4963
4963
  /** Id(s) of an external element that also describes this control (e.g. one shared error text for a group of fields). Space separated; MERGED after the control's own hint / error id in `aria-describedby`, never replacing it. Empty = unchanged. */
@@ -6424,7 +6424,7 @@ export declare class DropdownComponent {
6424
6424
  readonly loader: import("@angular/core").InputSignal<(() => Promise<DropdownItem[]>) | null>;
6425
6425
  readonly active: import("@angular/core").InputSignal<boolean>;
6426
6426
  readonly activeValue: import("@angular/core").InputSignal<string>;
6427
- readonly variant: import("@angular/core").InputSignal<"badge" | "button">;
6427
+ readonly variant: import("@angular/core").InputSignal<"button" | "badge">;
6428
6428
  readonly menuWidth: import("@angular/core").InputSignal<string>;
6429
6429
  /**
6430
6430
  * Fixed width of the trigger as a CSS length (e.g. `'280px'`). Empty (default) = the trigger is as wide as its label. When set, the trigger keeps that
@@ -6745,7 +6745,7 @@ export declare class FormRowComponent {
6745
6745
  * child simply takes the full width. Keep a numeric span within the row's `cols` (use `all` for the whole row).
6746
6746
  */
6747
6747
  export declare class FormColSpanDirective {
6748
- readonly uiColSpan: import("@angular/core").InputSignal<"" | "2" | "3" | 2 | 3 | "all">;
6748
+ readonly uiColSpan: import("@angular/core").InputSignal<"" | 2 | 3 | "2" | "3" | "all">;
6749
6749
  protected readonly _class: import("@angular/core").Signal<string>;
6750
6750
  static ɵfac: i0.ɵɵFactoryDeclaration<FormColSpanDirective, never>;
6751
6751
  static ɵdir: i0.ɵɵDirectiveDeclaration<FormColSpanDirective, "[uiColSpan]", never, {
@@ -13238,9 +13238,9 @@ export interface ConversationAttachment {
13238
13238
  }
13239
13239
  /** What `(send)` reports. */
13240
13240
  export interface ConversationSendEvent {
13241
- /** The message as plain text (trimmed). With `[richText]`, the text of the formatted message. */
13241
+ /** The message as plain text (trimmed): the text of the formatted message. */
13242
13242
  text: string;
13243
- /** With `[richText]`: the formatted message as sanitised HTML (bold, italic, underline, links, lists). Absent for a plain-text composer. */
13243
+ /** Only with `[richText]="true"`: the formatted message as sanitised HTML (bold, italic, underline, links, lists). */
13244
13244
  html?: string;
13245
13245
  }
13246
13246
  /** A message with the date separator that goes above it ('' when it shares the day of the previous message). */
@@ -13411,9 +13411,14 @@ export declare class ConversationsComponent {
13411
13411
  readonly composerStatus: import("@angular/core").InputSignal<string>;
13412
13412
  /** An error on the message box. */
13413
13413
  readonly composerError: import("@angular/core").InputSignal<string>;
13414
- /** Longest message the box accepts (1600 = the SMS provider's limit for one send). */
13414
+ /** Longest message (in plain text) Send accepts; longer disables Send, the host words the reason in `composerError` (1600 = the SMS provider's limit for one send). */
13415
13415
  readonly maxLength: import("@angular/core").InputSignal<number>;
13416
- /** The composer is the library's rich text editor (bold, italic, underline, links, lists) and `[(draft)]` holds its HTML; `(send)` reports `text` and `html`. Messages show their `bodyHtml`. Default false: a plain text box. */
13416
+ /**
13417
+ * Opt-in formatted composer (`ui-rich-text-editor`: bold, italic, underline, link, lists). Default false = the plain textarea, Enter sends and
13418
+ * Shift+Enter is a new line. In rich mode `[(draft)]` still holds the PLAIN text (so a host's length and merge-field checks and a template
13419
+ * insert work on text), Enter starts a new paragraph / list item and the message is sent with the Send button or Ctrl/Cmd+Enter;
13420
+ * `(send)` carries `text` (plain) and `html` (sanitised). Messages with `bodyHtml` show formatted in either mode.
13421
+ */
13417
13422
  readonly richText: import("@angular/core").InputSignal<boolean>;
13418
13423
  readonly attachment: import("@angular/core").InputSignal<ConversationAttachment | null>;
13419
13424
  readonly uploading: import("@angular/core").InputSignal<boolean>;
@@ -13478,8 +13483,8 @@ export declare class ConversationsComponent {
13478
13483
  protected readonly contextVisible: import("@angular/core").Signal<boolean>;
13479
13484
  /** Something to send (text or a file), the composer is open and no request is running. */
13480
13485
  readonly canSend: import("@angular/core").Signal<boolean>;
13481
- /** The draft as plain text: the draft itself, or the text of its HTML in the rich composer. */
13482
- protected readonly draftText: import("@angular/core").Signal<string>;
13486
+ /** The composer's formatted content. `draft` is always its plain text, so a host that reads or sets `[(draft)]` never sees markup. */
13487
+ protected readonly editorHtml: import("@angular/core").WritableSignal<string>;
13483
13488
  protected readonly richHide: RichTextOption[];
13484
13489
  constructor();
13485
13490
  protected relativeTime(iso: string | null | undefined): string;
@@ -13494,6 +13499,7 @@ export declare class ConversationsComponent {
13494
13499
  protected closeContext(restoreFocus?: boolean): void;
13495
13500
  protected openFilePicker(): void;
13496
13501
  protected onComposeKeydown(event: KeyboardEvent): void;
13502
+ protected onEditorChange(html: string): void;
13497
13503
  protected sendMessage(): void;
13498
13504
  private clock;
13499
13505
  private singleColumn;