@forgeroute/ui 0.4.59 → 0.4.61
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
package/types/forgeroute-ui.d.ts
CHANGED
|
@@ -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<"
|
|
2685
|
+
readonly preload: import("@angular/core").InputSignal<"none" | "auto" | "metadata">;
|
|
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<"
|
|
3966
|
+
readonly variant: import("@angular/core").InputSignal<"primary" | "secondary" | "danger" | "warning" | "link" | "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<"
|
|
4012
|
+
readonly type: import("@angular/core").InputSignal<"reset" | "submit" | "button">;
|
|
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<"" | "
|
|
4960
|
+
readonly inputmode: import("@angular/core").InputSignal<"" | "none" | "text" | "search" | "email" | "tel" | "url" | "decimal" | "numeric">;
|
|
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<"
|
|
6427
|
+
readonly variant: import("@angular/core").InputSignal<"badge" | "button">;
|
|
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 |
|
|
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, {
|
|
@@ -7364,8 +7364,10 @@ export declare class ListComponent<T = unknown> {
|
|
|
7364
7364
|
/** Announcement after a move; receives the row label, the new position (1-based) and the list size. */
|
|
7365
7365
|
readonly moveAnnouncement: import("@angular/core").InputSignal<(label: string, position: number, total: number) => string>;
|
|
7366
7366
|
/** Fires with the new array when the user moves a row (`[(items)]`). The list does not change `items` itself. */
|
|
7367
|
-
/**
|
|
7367
|
+
/** Makes the row open something: a click or Enter on the row (not on a button or link inside it) emits `itemClick`; the arrow only shows with `[arrow]="true"`. Default false: rows are not clickable. */
|
|
7368
7368
|
readonly navigable: import("@angular/core").InputSignal<boolean>;
|
|
7369
|
+
/** The arrow at the end of each row, drawn only with `[navigable]`. Default false (hidden): not every clickable list wants one. `[navigable]` alone keeps the click / Enter / focus behaviour; add `[arrow]="true"` to show it. */
|
|
7370
|
+
readonly arrow: import("@angular/core").InputSignal<boolean>;
|
|
7369
7371
|
/** The row of `[navigable]` that was clicked (or Enter was pressed on). */
|
|
7370
7372
|
readonly itemClick: import("@angular/core").OutputEmitterRef<T>;
|
|
7371
7373
|
readonly itemsChange: import("@angular/core").OutputEmitterRef<T[]>;
|
|
@@ -7502,6 +7504,11 @@ export declare class ListComponent<T = unknown> {
|
|
|
7502
7504
|
"required": false;
|
|
7503
7505
|
"isSignal": true;
|
|
7504
7506
|
};
|
|
7507
|
+
"arrow": {
|
|
7508
|
+
"alias": "arrow";
|
|
7509
|
+
"required": false;
|
|
7510
|
+
"isSignal": true;
|
|
7511
|
+
};
|
|
7505
7512
|
}, {
|
|
7506
7513
|
"itemClick": "itemClick";
|
|
7507
7514
|
"itemsChange": "itemsChange";
|
|
@@ -7693,13 +7700,15 @@ export interface PanelInfoSection {
|
|
|
7693
7700
|
* A small secondary button at the end of the section's header bar (e.g. "Add item" for a list of line items). `action` runs on
|
|
7694
7701
|
* click; `ariaLabel` is the accessible name when the visible label is not enough (default: the label). The header bar is shown
|
|
7695
7702
|
* for a section with a `headerAction` even when it has no `title`. Not rendered for a section with no visible items unless
|
|
7696
|
-
* `showEmptyState` keeps the section.
|
|
7703
|
+
* `showEmptyState` keeps the section. `icon` is an optional SVG path (the `d` value, 24x24 grid, same convention as a toolbar action's
|
|
7704
|
+
* `icon`) drawn before the label; it is decorative, so the accessible name stays the label / `ariaLabel`.
|
|
7697
7705
|
*/
|
|
7698
7706
|
headerAction?: {
|
|
7699
7707
|
label: string;
|
|
7700
7708
|
action: () => void;
|
|
7701
7709
|
ariaLabel?: string;
|
|
7702
7710
|
disabled?: boolean;
|
|
7711
|
+
icon?: string;
|
|
7703
7712
|
};
|
|
7704
7713
|
items: PanelInfoItem[];
|
|
7705
7714
|
columns?: 2;
|
|
@@ -9036,10 +9045,10 @@ export declare function resolvePreset(key: DatePreset, today: Date): DateRange;
|
|
|
9036
9045
|
* `textColor highlight` | `align` | `bulletList numberedList indent outdent` | `clearFormat`.
|
|
9037
9046
|
* `align` is the three alignment buttons (left, center, right) as one option.
|
|
9038
9047
|
*/
|
|
9039
|
-
export type RichTextOption = 'bold' | 'italic' | 'underline' | 'strikethrough' | 'heading' | 'fontSize' | 'fontFamily' | 'textColor' | 'highlight' | 'align' | 'bulletList' | 'numberedList' | 'indent' | 'outdent' | 'clearFormat';
|
|
9048
|
+
export type RichTextOption = 'bold' | 'italic' | 'underline' | 'strikethrough' | 'link' | 'heading' | 'fontSize' | 'fontFamily' | 'textColor' | 'highlight' | 'align' | 'bulletList' | 'numberedList' | 'indent' | 'outdent' | 'clearFormat';
|
|
9040
9049
|
/** All option keys, in toolbar order. */
|
|
9041
9050
|
export declare const RICH_TEXT_OPTIONS: readonly RichTextOption[];
|
|
9042
|
-
type MenuId = 'heading' | 'size' | 'font';
|
|
9051
|
+
type MenuId = 'heading' | 'size' | 'font' | 'link';
|
|
9043
9052
|
export declare class RichTextEditorComponent implements ControlValueAccessor {
|
|
9044
9053
|
readonly label: import("@angular/core").InputSignal<string>;
|
|
9045
9054
|
/** Accessible name for an editor with no visible label. */
|
|
@@ -9090,6 +9099,10 @@ export declare class RichTextEditorComponent implements ControlValueAccessor {
|
|
|
9090
9099
|
protected readonly activeFont: import("@angular/core").WritableSignal<string>;
|
|
9091
9100
|
protected readonly active: import("@angular/core").WritableSignal<Record<string, boolean>>;
|
|
9092
9101
|
protected readonly empty: import("@angular/core").WritableSignal<boolean>;
|
|
9102
|
+
protected readonly linkUrl: import("@angular/core").WritableSignal<string>;
|
|
9103
|
+
protected readonly linkError: import("@angular/core").WritableSignal<string>;
|
|
9104
|
+
protected readonly hasLink: import("@angular/core").WritableSignal<boolean>;
|
|
9105
|
+
protected readonly _linkId: string;
|
|
9093
9106
|
private readonly hidden;
|
|
9094
9107
|
/** Group id → at least one of its controls is shown. */
|
|
9095
9108
|
private readonly groupVisible;
|
|
@@ -9125,6 +9138,12 @@ export declare class RichTextEditorComponent implements ControlValueAccessor {
|
|
|
9125
9138
|
protected selectHeading(tag: string, label: string): void;
|
|
9126
9139
|
protected selectSize(value: string, label: string): void;
|
|
9127
9140
|
protected selectFont(value: string, label: string): void;
|
|
9141
|
+
/** The `<a>` the saved (or current) selection sits in, if any. */
|
|
9142
|
+
private _anchorAtSelection;
|
|
9143
|
+
protected toggleLink(): void;
|
|
9144
|
+
protected closeLink(): void;
|
|
9145
|
+
protected applyLink(): void;
|
|
9146
|
+
protected removeLink(): void;
|
|
9128
9147
|
protected exec(command: string): void;
|
|
9129
9148
|
protected execWithArg(command: string, value: string): void;
|
|
9130
9149
|
static ɵfac: i0.ɵɵFactoryDeclaration<RichTextEditorComponent, never>;
|
|
@@ -13195,6 +13214,8 @@ export interface ConversationMessage {
|
|
|
13195
13214
|
id: string;
|
|
13196
13215
|
direction: ConversationMessageDirection;
|
|
13197
13216
|
body?: string | null;
|
|
13217
|
+
/** Formatted text (bold, links, lists) of a message written in the rich composer: shown instead of `body`, after the library's allow-list sanitiser. Keep `body` as its plain text. */
|
|
13218
|
+
bodyHtml?: string | null;
|
|
13198
13219
|
/** ISO instant. Drives the time under the bubble and the date separators. */
|
|
13199
13220
|
sentAt: string;
|
|
13200
13221
|
/** Outbound only: `sent` (✓), `delivered` (✓✓), `failed`, `scheduled`. Other values show nothing. */
|
|
@@ -13217,7 +13238,10 @@ export interface ConversationAttachment {
|
|
|
13217
13238
|
}
|
|
13218
13239
|
/** What `(send)` reports. */
|
|
13219
13240
|
export interface ConversationSendEvent {
|
|
13241
|
+
/** The message as plain text (trimmed). With `[richText]`, the text of the formatted message. */
|
|
13220
13242
|
text: string;
|
|
13243
|
+
/** With `[richText]`: the formatted message as sanitised HTML (bold, italic, underline, links, lists). Absent for a plain-text composer. */
|
|
13244
|
+
html?: string;
|
|
13221
13245
|
}
|
|
13222
13246
|
/** A message with the date separator that goes above it ('' when it shares the day of the previous message). */
|
|
13223
13247
|
export interface ConversationMessageRow {
|
|
@@ -13246,6 +13270,24 @@ export declare function groupMessagesByDay(messages: readonly ConversationMessag
|
|
|
13246
13270
|
export declare function conversationMessageStatusLabel(status: string | null | undefined): string;
|
|
13247
13271
|
/** The mark shown beside an outbound message: ticks for sent / delivered, the word for the rest. */
|
|
13248
13272
|
export declare function conversationMessageStatusMark(status: string | null | undefined): string;
|
|
13273
|
+
/**
|
|
13274
|
+
* The plain text of formatted composer HTML, the way it reads: paragraphs, list items and line breaks become line breaks, everything else
|
|
13275
|
+
* is its text. Runs on an inert document, so nothing in `html` is executed. Trimmed; '' for nothing.
|
|
13276
|
+
*/
|
|
13277
|
+
export declare function conversationHtmlToText(html: string | null | undefined): string;
|
|
13278
|
+
/** A message's formatted text. Its own (unencapsulated) component so the styles reach the markup that `innerHTML` creates. */
|
|
13279
|
+
export declare class ConversationRichBodyComponent {
|
|
13280
|
+
readonly html: import("@angular/core").InputSignal<string>;
|
|
13281
|
+
protected readonly safe: import("@angular/core").Signal<string>;
|
|
13282
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ConversationRichBodyComponent, never>;
|
|
13283
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ConversationRichBodyComponent, "ui-conversation-rich-body", never, {
|
|
13284
|
+
"html": {
|
|
13285
|
+
"alias": "html";
|
|
13286
|
+
"required": false;
|
|
13287
|
+
"isSignal": true;
|
|
13288
|
+
};
|
|
13289
|
+
}, {}, never, never, true, never>;
|
|
13290
|
+
}
|
|
13249
13291
|
/**
|
|
13250
13292
|
* The text-message inbox: a conversation list (search, filter tabs, pagination) on the left, the open thread (header, messages with date
|
|
13251
13293
|
* separators and media, composer) in the middle and an optional contact panel on the right. On a phone the list and the thread take turns.
|
|
@@ -13270,9 +13312,9 @@ export declare function conversationMessageStatusMark(status: string | null | un
|
|
|
13270
13312
|
* shows "Load earlier messages" while `[hasEarlier]` (`(loadEarlier)`); a failed thread load shows `[messagesError]` with Retry (`(messagesRetry)`).
|
|
13271
13313
|
*
|
|
13272
13314
|
* Test ids: conversations, conv-search, conv-filters, new-message-btn, conv-loading, conv-error, conv-retry, conv-empty, conv-item, conv-unread,
|
|
13273
|
-
* conv-delete-btn, thread-empty, thread-error, thread-retry, load-earlier, msg-sender, msg-action, back-to-list, thread-name, thread-phone, use-template-btn, context-toggle, status-btn, thread-delete-btn,
|
|
13315
|
+
* conv-arrow, conv-delete-btn, thread-empty, thread-error, thread-retry, load-earlier, msg-sender, msg-action, back-to-list, thread-name, thread-phone, use-template-btn, context-toggle, status-btn, thread-delete-btn,
|
|
13274
13316
|
* messages, messages-loading, messages-empty, message, msg-status, attach-btn, attach-input, attachment-preview, attachment-remove,
|
|
13275
|
-
* compose-input, send-btn, compose-opted-out, compose-loading-contact, context-panel, context-close.
|
|
13317
|
+
* msg-rich-body, compose-input, send-btn, compose-opted-out, compose-loading-contact, context-panel, context-close.
|
|
13276
13318
|
*/
|
|
13277
13319
|
export declare class ConversationsComponent {
|
|
13278
13320
|
readonly conversations: import("@angular/core").InputSignal<readonly ConversationItem[]>;
|
|
@@ -13311,6 +13353,10 @@ export declare class ConversationsComponent {
|
|
|
13311
13353
|
readonly allowNew: import("@angular/core").InputSignal<boolean>;
|
|
13312
13354
|
/** Shows the bins (row and thread header) for a writer. `false` for a host that cannot delete conversations. */
|
|
13313
13355
|
readonly allowDelete: import("@angular/core").InputSignal<boolean>;
|
|
13356
|
+
/** The arrow at the end of each conversation row, drawn inside the row so its highlight covers it. Default false (hidden); `true` where the arrow helps (rows that open a thread on a phone). */
|
|
13357
|
+
readonly showRowArrow: import("@angular/core").InputSignal<boolean>;
|
|
13358
|
+
/** Rows open their conversation on click / Enter (pointer cursor, hover tint, focusable) and the thread has a Back button. `false` for a host with one conversation that is always open: nothing to click, no Back. */
|
|
13359
|
+
readonly selectable: import("@angular/core").InputSignal<boolean>;
|
|
13314
13360
|
readonly newLabel: import("@angular/core").InputSignal<string>;
|
|
13315
13361
|
readonly newTooltip: import("@angular/core").InputSignal<string>;
|
|
13316
13362
|
readonly deleteRowLabel: import("@angular/core").InputSignal<string>;
|
|
@@ -13367,6 +13413,8 @@ export declare class ConversationsComponent {
|
|
|
13367
13413
|
readonly composerError: import("@angular/core").InputSignal<string>;
|
|
13368
13414
|
/** Longest message the box accepts (1600 = the SMS provider's limit for one send). */
|
|
13369
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. */
|
|
13417
|
+
readonly richText: import("@angular/core").InputSignal<boolean>;
|
|
13370
13418
|
readonly attachment: import("@angular/core").InputSignal<ConversationAttachment | null>;
|
|
13371
13419
|
readonly uploading: import("@angular/core").InputSignal<boolean>;
|
|
13372
13420
|
readonly attachEnabled: import("@angular/core").InputSignal<boolean>;
|
|
@@ -13430,6 +13478,9 @@ export declare class ConversationsComponent {
|
|
|
13430
13478
|
protected readonly contextVisible: import("@angular/core").Signal<boolean>;
|
|
13431
13479
|
/** Something to send (text or a file), the composer is open and no request is running. */
|
|
13432
13480
|
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>;
|
|
13483
|
+
protected readonly richHide: RichTextOption[];
|
|
13433
13484
|
constructor();
|
|
13434
13485
|
protected relativeTime(iso: string | null | undefined): string;
|
|
13435
13486
|
protected preview(text: string | null | undefined): string;
|
|
@@ -13584,6 +13635,16 @@ export declare class ConversationsComponent {
|
|
|
13584
13635
|
"required": false;
|
|
13585
13636
|
"isSignal": true;
|
|
13586
13637
|
};
|
|
13638
|
+
"showRowArrow": {
|
|
13639
|
+
"alias": "showRowArrow";
|
|
13640
|
+
"required": false;
|
|
13641
|
+
"isSignal": true;
|
|
13642
|
+
};
|
|
13643
|
+
"selectable": {
|
|
13644
|
+
"alias": "selectable";
|
|
13645
|
+
"required": false;
|
|
13646
|
+
"isSignal": true;
|
|
13647
|
+
};
|
|
13587
13648
|
"newLabel": {
|
|
13588
13649
|
"alias": "newLabel";
|
|
13589
13650
|
"required": false;
|
|
@@ -13789,6 +13850,11 @@ export declare class ConversationsComponent {
|
|
|
13789
13850
|
"required": false;
|
|
13790
13851
|
"isSignal": true;
|
|
13791
13852
|
};
|
|
13853
|
+
"richText": {
|
|
13854
|
+
"alias": "richText";
|
|
13855
|
+
"required": false;
|
|
13856
|
+
"isSignal": true;
|
|
13857
|
+
};
|
|
13792
13858
|
"attachment": {
|
|
13793
13859
|
"alias": "attachment";
|
|
13794
13860
|
"required": false;
|