@forgeroute/ui 0.4.43 → 0.4.45
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/fesm2022/forgeroute-ui-messaging.mjs +211 -7
- package/fesm2022/forgeroute-ui-messaging.mjs.map +1 -1
- package/fesm2022/forgeroute-ui.mjs +6 -6
- package/fesm2022/forgeroute-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/types/forgeroute-ui-messaging.d.ts +62 -3
- package/types/forgeroute-ui.d.ts +13 -13
package/package.json
CHANGED
|
@@ -1375,18 +1375,36 @@ interface SendInAppPayload {
|
|
|
1375
1375
|
contactId?: string;
|
|
1376
1376
|
/** Only present when the Subject field is shown. */
|
|
1377
1377
|
subject?: string;
|
|
1378
|
+
/** The Message: plain text, or sanitized HTML when `richText` is on (then `bodyIsHtml` is true). */
|
|
1378
1379
|
body: string;
|
|
1380
|
+
/** Only present (true) when the Message was written in the rich-text editor. */
|
|
1381
|
+
bodyIsHtml?: true;
|
|
1382
|
+
/** Only present when attachments are on and the sender added at least one (base64 contents, like the email form). */
|
|
1383
|
+
attachments?: SendInAppAttachment[];
|
|
1384
|
+
}
|
|
1385
|
+
/** A file the sender attached, read as base64 (the same shape the email form sends). */
|
|
1386
|
+
interface SendInAppAttachment {
|
|
1387
|
+
filename: string;
|
|
1388
|
+
content: string;
|
|
1389
|
+
contentType: string;
|
|
1379
1390
|
}
|
|
1380
1391
|
/**
|
|
1381
1392
|
* The form of a message that is not delivered by email or text but handed to the host's own function (e.g. a client portal message to the
|
|
1382
|
-
* agent): "To" card with the name
|
|
1383
|
-
* no request of its own: `sendFn` does the sending. Used by `<ui-send-message-panel recipientMode="in-app">`.
|
|
1393
|
+
* agent): "To" card with the name (and the address when the host gives one), an optional Subject, the Message (plain, or the rich-text editor with
|
|
1394
|
+
* `richText`) and optional attachments (`allowAttachments`). No templates, video or scheduling, and it makes no request of its own: `sendFn` does the sending. Used by `<ui-send-message-panel recipientMode="in-app">`.
|
|
1384
1395
|
*/
|
|
1385
1396
|
declare class SendInAppComponent implements OnInit {
|
|
1386
1397
|
private readonly destroyRef;
|
|
1387
1398
|
private readonly toast;
|
|
1399
|
+
private readonly cdr;
|
|
1388
1400
|
readonly contactName: import("@angular/core").InputSignal<string>;
|
|
1389
1401
|
readonly contactId: import("@angular/core").InputSignal<string>;
|
|
1402
|
+
/** The address the message reaches the recipient at; shown under the name when given (the form never asks for one). */
|
|
1403
|
+
readonly contactEmail: import("@angular/core").InputSignal<string>;
|
|
1404
|
+
/** true shows "Attach Files" (any number of files); they are sent in the payload as base64. */
|
|
1405
|
+
readonly allowAttachments: import("@angular/core").InputSignal<boolean>;
|
|
1406
|
+
/** true writes the Message in the rich-text editor (bold, lists, ...); the payload body is then sanitized HTML. */
|
|
1407
|
+
readonly richText: import("@angular/core").InputSignal<boolean>;
|
|
1390
1408
|
/** Prefills Subject / Message. */
|
|
1391
1409
|
readonly defaultSubject: import("@angular/core").InputSignal<string>;
|
|
1392
1410
|
readonly defaultBody: import("@angular/core").InputSignal<string>;
|
|
@@ -1404,8 +1422,20 @@ declare class SendInAppComponent implements OnInit {
|
|
|
1404
1422
|
readonly sending: import("@angular/core").WritableSignal<boolean>;
|
|
1405
1423
|
subject: string;
|
|
1406
1424
|
body: string;
|
|
1425
|
+
attachments: {
|
|
1426
|
+
filename: string;
|
|
1427
|
+
content: string;
|
|
1428
|
+
contentType: string;
|
|
1429
|
+
sizeLabel: string;
|
|
1430
|
+
}[];
|
|
1407
1431
|
ngOnInit(): void;
|
|
1432
|
+
/** The Message as the limit and the "is it empty" check see it: the text of the rich-text HTML, or the plain text. */
|
|
1433
|
+
private bodyText;
|
|
1434
|
+
/** Rich text only: the HTML is longer than the host's limit (the limit is on what the server stores). */
|
|
1435
|
+
protected richTooLong(): boolean;
|
|
1408
1436
|
get canSend(): boolean;
|
|
1437
|
+
onFilesSelected(event: Event): void;
|
|
1438
|
+
removeAttachment(index: number): void;
|
|
1409
1439
|
notifyValid(): void;
|
|
1410
1440
|
submit(): void;
|
|
1411
1441
|
static ɵfac: i0.ɵɵFactoryDeclaration<SendInAppComponent, never>;
|
|
@@ -1420,6 +1450,21 @@ declare class SendInAppComponent implements OnInit {
|
|
|
1420
1450
|
"required": false;
|
|
1421
1451
|
"isSignal": true;
|
|
1422
1452
|
};
|
|
1453
|
+
"contactEmail": {
|
|
1454
|
+
"alias": "contactEmail";
|
|
1455
|
+
"required": false;
|
|
1456
|
+
"isSignal": true;
|
|
1457
|
+
};
|
|
1458
|
+
"allowAttachments": {
|
|
1459
|
+
"alias": "allowAttachments";
|
|
1460
|
+
"required": false;
|
|
1461
|
+
"isSignal": true;
|
|
1462
|
+
};
|
|
1463
|
+
"richText": {
|
|
1464
|
+
"alias": "richText";
|
|
1465
|
+
"required": false;
|
|
1466
|
+
"isSignal": true;
|
|
1467
|
+
};
|
|
1423
1468
|
"defaultSubject": {
|
|
1424
1469
|
"alias": "defaultSubject";
|
|
1425
1470
|
"required": false;
|
|
@@ -1825,6 +1870,10 @@ export declare class SendMessagePanelComponent {
|
|
|
1825
1870
|
readonly sendMessage: import("@angular/core").InputSignal<((payload: SendInAppPayload) => Observable<unknown>) | null>;
|
|
1826
1871
|
/** `recipientMode="in-app"` only: the longest Message the host's backend accepts; null (default) = no limit. */
|
|
1827
1872
|
readonly maxBodyLength: import("@angular/core").InputSignal<number | null>;
|
|
1873
|
+
/** `recipientMode="in-app"` only: shows "Attach Files" (any number of files, sent in the payload as base64). Default false. */
|
|
1874
|
+
readonly inAppAttachments: import("@angular/core").InputSignal<boolean>;
|
|
1875
|
+
/** `recipientMode="in-app"` only: the Message is written in the rich-text editor and the payload body is sanitized HTML (`bodyIsHtml`). Default false. */
|
|
1876
|
+
readonly inAppRichText: import("@angular/core").InputSignal<boolean>;
|
|
1828
1877
|
/** false hides the Subject field in the email form and the in-app form (Send then needs only a Message). Default true. */
|
|
1829
1878
|
readonly showSubject: import("@angular/core").InputSignal<boolean>;
|
|
1830
1879
|
/** false hides the "Use Existing Template" tab in the email and text forms (Create Message only; the template picker, `GET /templates`, is never used). Default true. */
|
|
@@ -2063,6 +2112,16 @@ export declare class SendMessagePanelComponent {
|
|
|
2063
2112
|
"required": false;
|
|
2064
2113
|
"isSignal": true;
|
|
2065
2114
|
};
|
|
2115
|
+
"inAppAttachments": {
|
|
2116
|
+
"alias": "inAppAttachments";
|
|
2117
|
+
"required": false;
|
|
2118
|
+
"isSignal": true;
|
|
2119
|
+
};
|
|
2120
|
+
"inAppRichText": {
|
|
2121
|
+
"alias": "inAppRichText";
|
|
2122
|
+
"required": false;
|
|
2123
|
+
"isSignal": true;
|
|
2124
|
+
};
|
|
2066
2125
|
"showSubject": {
|
|
2067
2126
|
"alias": "showSubject";
|
|
2068
2127
|
"required": false;
|
|
@@ -2327,4 +2386,4 @@ export declare class DocumentMergeCheckComponent {
|
|
|
2327
2386
|
"warningsChange": "warningsChange";
|
|
2328
2387
|
}, never, never, true, never>;
|
|
2329
2388
|
}
|
|
2330
|
-
export type { CreateDocumentRequestBody, DocuSignSendBody, DocumentSentInfo, DocumentSentMessage, DocumentsPayloadExtras, ExistingEnvelopeSendBody, SendDocumentsPayload, SendEmailPayload, SendInAppPayload, SendTextPayload, VideoDefaults, VideoLinkOptions };
|
|
2389
|
+
export type { CreateDocumentRequestBody, DocuSignSendBody, DocumentSentInfo, DocumentSentMessage, DocumentsPayloadExtras, ExistingEnvelopeSendBody, SendDocumentsPayload, SendEmailPayload, SendInAppAttachment, SendInAppPayload, SendTextPayload, VideoDefaults, VideoLinkOptions };
|
package/types/forgeroute-ui.d.ts
CHANGED
|
@@ -2206,7 +2206,7 @@ export declare class ModalComponent implements OnInit, OnDestroy {
|
|
|
2206
2206
|
readonly title: import("@angular/core").InputSignal<string>;
|
|
2207
2207
|
readonly description: import("@angular/core").InputSignal<string>;
|
|
2208
2208
|
readonly maxWidth: import("@angular/core").InputSignal<string>;
|
|
2209
|
-
readonly bodyOverflow: import("@angular/core").InputSignal<"hidden" | "
|
|
2209
|
+
readonly bodyOverflow: import("@angular/core").InputSignal<"hidden" | "auto" | "visible">;
|
|
2210
2210
|
/** `data-testid` of the dialog element itself (the host `<ui-modal>` is always in the page, the dialog only while open). None when empty. */
|
|
2211
2211
|
readonly dialogTestId: import("@angular/core").InputSignal<string>;
|
|
2212
2212
|
/** Hides the header X button (e.g. while a request is running). Escape and a backdrop click still close unless `closable` is false. */
|
|
@@ -2844,7 +2844,7 @@ export declare class CheckboxComponent implements ControlValueAccessor, Validato
|
|
|
2844
2844
|
* clicking it still toggles the box - e.g. a product name that is both the heading of its card and the label of its checkbox.
|
|
2845
2845
|
* Default null: plain label text, exactly as before. Single mode only.
|
|
2846
2846
|
*/
|
|
2847
|
-
readonly headingLevel: import("@angular/core").InputSignal<1 |
|
|
2847
|
+
readonly headingLevel: import("@angular/core").InputSignal<1 | 2 | 3 | 4 | 5 | 6 | null>;
|
|
2848
2848
|
readonly indeterminate: import("@angular/core").InputSignal<boolean>;
|
|
2849
2849
|
readonly checked: import("@angular/core").ModelSignal<boolean>;
|
|
2850
2850
|
/**
|
|
@@ -3755,7 +3755,7 @@ export declare class PhoneNumberPickerComponent {
|
|
|
3755
3755
|
protected readonly modeCtl: FormControl<string>;
|
|
3756
3756
|
protected readonly zipCtl: FormControl<string>;
|
|
3757
3757
|
protected readonly areaCtl: FormControl<string>;
|
|
3758
|
-
protected readonly step: import("@angular/core").WritableSignal<1 |
|
|
3758
|
+
protected readonly step: import("@angular/core").WritableSignal<1 | 2 | 3>;
|
|
3759
3759
|
protected readonly mode: import("@angular/core").WritableSignal<PhoneNumberSearchMode>;
|
|
3760
3760
|
private readonly _zip;
|
|
3761
3761
|
private readonly _area;
|
|
@@ -3869,7 +3869,7 @@ export declare class ButtonComponent {
|
|
|
3869
3869
|
* `ghost-start`: a ghost button for list / section toggles - a full-width row with its content aligned to the start, transparent
|
|
3870
3870
|
* background, hover tint and the normal focus ring. Pair it with `ariaExpanded` / `ariaPressed`; the label may contain a heading element.
|
|
3871
3871
|
*/
|
|
3872
|
-
readonly variant: import("@angular/core").InputSignal<"
|
|
3872
|
+
readonly variant: import("@angular/core").InputSignal<"primary" | "secondary" | "danger" | "warning" | "link" | "ghost" | "ghost-start" | "tab" | "icon" | "icon-danger">;
|
|
3873
3873
|
/** 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`). */
|
|
3874
3874
|
readonly routerLink: import("@angular/core").InputSignal<string | readonly unknown[] | null>;
|
|
3875
3875
|
/** Query params of the `routerLink` (e.g. `{ section: 'deal-defaults' }`). */
|
|
@@ -3890,7 +3890,7 @@ export declare class ButtonComponent {
|
|
|
3890
3890
|
*/
|
|
3891
3891
|
readonly href: import("@angular/core").InputSignal<string | null>;
|
|
3892
3892
|
/** Where to open the `href` (`_blank` = a new tab). */
|
|
3893
|
-
readonly target: import("@angular/core").InputSignal<"
|
|
3893
|
+
readonly target: import("@angular/core").InputSignal<"_self" | "_blank" | "_parent" | "_top" | null>;
|
|
3894
3894
|
/** `rel` of the `href` link. A `_blank` target always gets `noopener noreferrer` added. */
|
|
3895
3895
|
readonly rel: import("@angular/core").InputSignal<string | null>;
|
|
3896
3896
|
/** The href when it is allowed (http, https, mailto, tel, sms or a relative URL), else null. */
|
|
@@ -3915,7 +3915,7 @@ export declare class ButtonComponent {
|
|
|
3915
3915
|
readonly color: import("@angular/core").InputSignal<string | undefined>;
|
|
3916
3916
|
readonly active: import("@angular/core").InputSignal<boolean>;
|
|
3917
3917
|
readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | "xs">;
|
|
3918
|
-
readonly type: import("@angular/core").InputSignal<"
|
|
3918
|
+
readonly type: import("@angular/core").InputSignal<"reset" | "submit" | "button">;
|
|
3919
3919
|
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
3920
3920
|
readonly loading: import("@angular/core").InputSignal<boolean>;
|
|
3921
3921
|
readonly fullWidth: import("@angular/core").InputSignal<boolean>;
|
|
@@ -4711,7 +4711,7 @@ export declare class TextInputComponent implements ControlValueAccessor, Validat
|
|
|
4711
4711
|
readonly passwordRequirements: import("@angular/core").InputSignal<boolean>;
|
|
4712
4712
|
/** Rules for `passwordRequirements`; default = the library's five rules (8+ characters, upper, lower, digit, special). */
|
|
4713
4713
|
readonly passwordRules: import("@angular/core").InputSignal<readonly PasswordRule[] | undefined>;
|
|
4714
|
-
readonly type: import("@angular/core").InputSignal<"number" | "text" | "email" | "
|
|
4714
|
+
readonly type: import("@angular/core").InputSignal<"number" | "text" | "email" | "tel" | "password" | "url">;
|
|
4715
4715
|
readonly maxlength: import("@angular/core").InputSignal<number | undefined>;
|
|
4716
4716
|
readonly required: import("@angular/core").InputSignal<boolean>;
|
|
4717
4717
|
readonly autocomplete: import("@angular/core").InputSignal<string>;
|
|
@@ -4720,7 +4720,7 @@ export declare class TextInputComponent implements ControlValueAccessor, Validat
|
|
|
4720
4720
|
* `search`, `text`, `none`). Empty (default) = the browser's default for the field, except `type="tel"`, which keeps `tel`.
|
|
4721
4721
|
* It only picks the keyboard; it does not restrict what can be typed or pasted.
|
|
4722
4722
|
*/
|
|
4723
|
-
readonly inputmode: import("@angular/core").InputSignal<"" | "
|
|
4723
|
+
readonly inputmode: import("@angular/core").InputSignal<"" | "text" | "search" | "none" | "email" | "tel" | "url" | "decimal" | "numeric">;
|
|
4724
4724
|
readonly readonly: import("@angular/core").InputSignal<boolean>;
|
|
4725
4725
|
readonly hint: import("@angular/core").InputSignal<string>;
|
|
4726
4726
|
readonly error: import("@angular/core").InputSignal<string>;
|
|
@@ -4784,7 +4784,7 @@ export declare class TextInputComponent implements ControlValueAccessor, Validat
|
|
|
4784
4784
|
protected readonly _stepAttr: import("@angular/core").Signal<string | null>;
|
|
4785
4785
|
protected readonly _revealable: import("@angular/core").Signal<boolean>;
|
|
4786
4786
|
protected readonly _shown: import("@angular/core").WritableSignal<boolean>;
|
|
4787
|
-
protected readonly _inputType: import("@angular/core").Signal<"number" | "text" | "email" | "
|
|
4787
|
+
protected readonly _inputType: import("@angular/core").Signal<"number" | "text" | "email" | "tel" | "password" | "url">;
|
|
4788
4788
|
protected readonly _eyePath: string;
|
|
4789
4789
|
protected readonly _eyeOffPath: string;
|
|
4790
4790
|
protected readonly _showRequirements: import("@angular/core").Signal<boolean>;
|
|
@@ -6136,7 +6136,7 @@ export declare class DropdownComponent {
|
|
|
6136
6136
|
readonly loader: import("@angular/core").InputSignal<(() => Promise<DropdownItem[]>) | null>;
|
|
6137
6137
|
readonly active: import("@angular/core").InputSignal<boolean>;
|
|
6138
6138
|
readonly activeValue: import("@angular/core").InputSignal<string>;
|
|
6139
|
-
readonly variant: import("@angular/core").InputSignal<"
|
|
6139
|
+
readonly variant: import("@angular/core").InputSignal<"badge" | "button">;
|
|
6140
6140
|
readonly menuWidth: import("@angular/core").InputSignal<string>;
|
|
6141
6141
|
/**
|
|
6142
6142
|
* Accessible name. Set it when the trigger has no meaningful visible text. Applied as `aria-label` on the
|
|
@@ -6335,7 +6335,7 @@ export declare class FormSectionComponent {
|
|
|
6335
6335
|
}, {}, never, ["*"], true, never>;
|
|
6336
6336
|
}
|
|
6337
6337
|
export declare class FormRowComponent {
|
|
6338
|
-
readonly cols: import("@angular/core").InputSignal<1 |
|
|
6338
|
+
readonly cols: import("@angular/core").InputSignal<1 | 2 | 3 | 4>;
|
|
6339
6339
|
static ɵfac: i0.ɵɵFactoryDeclaration<FormRowComponent, never>;
|
|
6340
6340
|
static ɵcmp: i0.ɵɵComponentDeclaration<FormRowComponent, "ui-form-row", never, {
|
|
6341
6341
|
"cols": {
|
|
@@ -6352,7 +6352,7 @@ export declare class FormRowComponent {
|
|
|
6352
6352
|
* child simply takes the full width. Keep a numeric span within the row's `cols` (use `all` for the whole row).
|
|
6353
6353
|
*/
|
|
6354
6354
|
export declare class FormColSpanDirective {
|
|
6355
|
-
readonly uiColSpan: import("@angular/core").InputSignal<"" | "2" | "3" |
|
|
6355
|
+
readonly uiColSpan: import("@angular/core").InputSignal<"" | "2" | "3" | 2 | 3 | "all">;
|
|
6356
6356
|
protected readonly _class: import("@angular/core").Signal<string>;
|
|
6357
6357
|
static ɵfac: i0.ɵɵFactoryDeclaration<FormColSpanDirective, never>;
|
|
6358
6358
|
static ɵdir: i0.ɵɵDirectiveDeclaration<FormColSpanDirective, "[uiColSpan]", never, {
|
|
@@ -9293,7 +9293,7 @@ export declare class DetailCardComponent {
|
|
|
9293
9293
|
/** true (default) = the title is displayed in capitals (CSS only); false = shown as written. The text, aria-label and heading name are never changed. */
|
|
9294
9294
|
readonly uppercaseTitle: import("@angular/core").InputSignal<boolean>;
|
|
9295
9295
|
/** 1-6 makes the title a real heading for screen readers (role=heading, aria-level); null keeps it plain text. */
|
|
9296
|
-
readonly headingLevel: import("@angular/core").InputSignal<1 |
|
|
9296
|
+
readonly headingLevel: import("@angular/core").InputSignal<1 | 2 | 3 | 4 | 5 | 6 | null>;
|
|
9297
9297
|
/** Optional id for the title text; the card is then labelled by it. Without it the title is the card's aria-label. */
|
|
9298
9298
|
readonly titleId: import("@angular/core").InputSignal<string>;
|
|
9299
9299
|
/** Accessible name of the card when the header gives none (no header, or no title). A visible title wins; blank = no name. */
|