@forgeroute/ui 0.4.36 → 0.4.38
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
|
@@ -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<"" | "
|
|
118
|
+
readonly channel: import("@angular/core").InputSignal<"" | "text" | "email">;
|
|
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<"
|
|
546
|
+
readonly channel: import("@angular/core").InputSignal<"text" | "email">;
|
|
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<"
|
|
611
|
+
readonly envelopeStatus: import("@angular/core").WritableSignal<"error" | "loading" | "ready" | "idle">;
|
|
612
612
|
private envelopeSub;
|
|
613
613
|
private readonly roleSubs;
|
|
614
614
|
/** The sender opened the collapsed "Signing options" line. */
|
|
@@ -1813,7 +1813,7 @@ export declare class SendMessagePanelComponent {
|
|
|
1813
1813
|
readonly activeContact: import("@angular/core").WritableSignal<MessageContact | null>;
|
|
1814
1814
|
/** What the sender should know about the picked contact before sending (why a channel is missing, what to add). */
|
|
1815
1815
|
readonly contactNotices: import("@angular/core").Signal<string[]>;
|
|
1816
|
-
readonly channel: import("@angular/core").WritableSignal<"
|
|
1816
|
+
readonly channel: import("@angular/core").WritableSignal<"text" | "email">;
|
|
1817
1817
|
readonly valid: import("@angular/core").WritableSignal<boolean>;
|
|
1818
1818
|
/** Bumped on every fresh open / new contact — re-creates the email and text forms so no draft carries over. */
|
|
1819
1819
|
readonly formEpoch: import("@angular/core").WritableSignal<number>;
|
package/types/forgeroute-ui.d.ts
CHANGED
|
@@ -11279,7 +11279,15 @@ export interface SetupWizardTexts {
|
|
|
11279
11279
|
selectSource: string;
|
|
11280
11280
|
connected: string;
|
|
11281
11281
|
importMore: string;
|
|
11282
|
+
/** Shown (and described by the disabled Continue) on an import step with `requireImport` until data came in. */
|
|
11283
|
+
importRequired: string;
|
|
11284
|
+
/** An import where some rows were refused: the warning's title and text (rows that failed must be fixed and imported again before Continue) and the button that returns to the sources. */
|
|
11285
|
+
importErrorsTitle: (errors: number) => string;
|
|
11286
|
+
importErrorsText: (imported: number, errors: number) => string;
|
|
11287
|
+
importAgain: string;
|
|
11282
11288
|
whatGetsImported: string;
|
|
11289
|
+
/** Title of the card with the summary on the last page. */
|
|
11290
|
+
summaryTitle: string;
|
|
11283
11291
|
doneTitle: string;
|
|
11284
11292
|
doneDescription: string;
|
|
11285
11293
|
doneHint: string;
|
|
@@ -11327,14 +11335,23 @@ export interface SetupStep {
|
|
|
11327
11335
|
canContinue?: () => boolean;
|
|
11328
11336
|
/** `custom`: text of the continue button (default "Save & Continue"). */
|
|
11329
11337
|
saveLabel?: string;
|
|
11338
|
+
/**
|
|
11339
|
+
* Import / integrations steps with app content (`<ng-template uiSetupStep>`): show two tabs below the intro, one card at a time. The first tab holds the app's
|
|
11340
|
+
* content in a card titled `extraTitle`, the second the step's own card. Tab labels: `extraTab` / `mainTab` (default `extraTitle` / `cardTitle`).
|
|
11341
|
+
*/
|
|
11342
|
+
splitLayout?: boolean;
|
|
11343
|
+
extraTitle?: string;
|
|
11344
|
+
extraTab?: string;
|
|
11345
|
+
mainTab?: string;
|
|
11346
|
+
/** Status line under the app content of a `splitLayout` step (e.g. "Not connected yet"); read on every render, so it can follow signals. */
|
|
11347
|
+
extraFooter?: () => string;
|
|
11348
|
+
/** Import steps: Continue stays disabled until the data came in (CSV import done with no refused rows, or the app called `markCompleted(key)` after a live sync). Skip stays available. */
|
|
11349
|
+
requireImport?: boolean;
|
|
11330
11350
|
/**
|
|
11331
11351
|
* `custom`: the step draws its own continue button (for example in the footer of a `ui-detail-card`), so the wizard does not show its own. The step's
|
|
11332
11352
|
* template receives the wizard as `let-wizard` and calls `wizard.saveAndContinue()` (runs `save`, then moves on) and reads `wizard.busy()`.
|
|
11333
11353
|
* Back / Skip stay the wizard's.
|
|
11334
11354
|
*/
|
|
11335
|
-
/** Import / integrations steps with app content: show that content in its own card (titled `extraTitle`) beside the step card on a wide screen, stacked on a phone. */
|
|
11336
|
-
splitLayout?: boolean;
|
|
11337
|
-
extraTitle?: string;
|
|
11338
11355
|
ownActions?: boolean;
|
|
11339
11356
|
import?: SetupImportStep;
|
|
11340
11357
|
integrations?: SetupIntegration[];
|
|
@@ -11442,6 +11459,14 @@ export declare class SetupWizardComponent {
|
|
|
11442
11459
|
/** Phone layout: the step's Back / Skip / Continue buttons fill the width and stack (primary on top). */
|
|
11443
11460
|
protected readonly narrow: import("@angular/core").WritableSignal<boolean>;
|
|
11444
11461
|
/** A step with `splitLayout`: the app's own content gets its own card, side by side with the step card on a wide screen. */
|
|
11462
|
+
/** An import step with `requireImport` keeps Continue off until something came in (a CSV import or `markCompleted`, e.g. a live sync). */
|
|
11463
|
+
protected readonly importBlocked: import("@angular/core").Signal<boolean>;
|
|
11464
|
+
/** The step's own two parts (`splitLayout`) show as two tabs, one card at a time; this is the open one (it starts on the app's part on every visit). */
|
|
11465
|
+
protected readonly splitTab: import("@angular/core").WritableSignal<"main" | "extra">;
|
|
11466
|
+
protected readonly splitTabs: import("@angular/core").Signal<{
|
|
11467
|
+
key: string;
|
|
11468
|
+
label: string;
|
|
11469
|
+
}[]>;
|
|
11445
11470
|
protected readonly split: import("@angular/core").Signal<boolean>;
|
|
11446
11471
|
/** The steps in walking order. A `done` summary step is appended automatically. */
|
|
11447
11472
|
readonly steps: import("@angular/core").InputSignal<SetupStep[]>;
|
|
@@ -11463,6 +11488,7 @@ export declare class SetupWizardComponent {
|
|
|
11463
11488
|
private readonly completed;
|
|
11464
11489
|
private readonly skipped;
|
|
11465
11490
|
private readonly imports;
|
|
11491
|
+
private readonly importErrors;
|
|
11466
11492
|
private readonly statuses;
|
|
11467
11493
|
readonly busy: import("@angular/core").WritableSignal<boolean>;
|
|
11468
11494
|
/** What a custom step's template receives (`let-wizard`). */
|
|
@@ -11510,6 +11536,7 @@ export declare class SetupWizardComponent {
|
|
|
11510
11536
|
protected openImport(key: string): void;
|
|
11511
11537
|
protected onImported(key: string): void;
|
|
11512
11538
|
protected importResult(key: string): number | null;
|
|
11539
|
+
protected importErrorCount(key: string): number;
|
|
11513
11540
|
protected clearImport(key: string): void;
|
|
11514
11541
|
protected importTitle(key: string): string;
|
|
11515
11542
|
protected continueFromImport(): void;
|
|
@@ -11728,6 +11755,8 @@ export declare class EmailTemplateEditorComponent {
|
|
|
11728
11755
|
readonly headingOptions: SelectOption<string>[];
|
|
11729
11756
|
readonly fontSizeOptions: SelectOption<string>[];
|
|
11730
11757
|
readonly spacingTabs: PillTab[];
|
|
11758
|
+
/** The grey hint shown in the empty first block. */
|
|
11759
|
+
protected readonly startPlaceholder = "Start writing your email...";
|
|
11731
11760
|
readonly ctaTypeOptions: SelectOption<string>[];
|
|
11732
11761
|
readonly playbackOptions: {
|
|
11733
11762
|
value: string;
|
|
@@ -11762,6 +11791,9 @@ export declare class EmailTemplateEditorComponent {
|
|
|
11762
11791
|
readonly filteredBlockGroups: import("@angular/core").Signal<EmailTemplateBlockGroup[]>;
|
|
11763
11792
|
private readonly serialized;
|
|
11764
11793
|
readonly previewHtml: import("@angular/core").Signal<string>;
|
|
11794
|
+
private readonly sanitizer;
|
|
11795
|
+
/** The Preview / Mobile document: a full page with the email's own styles. It is shown in a sandboxed iframe (no scripts, no popups), so trusting the markup here cannot run anything. */
|
|
11796
|
+
readonly previewDoc: import("@angular/core").Signal<SafeHtml>;
|
|
11765
11797
|
/** Characters in the body as it is saved. */
|
|
11766
11798
|
readonly bodyLength: import("@angular/core").Signal<number>;
|
|
11767
11799
|
readonly bodyHasContent: import("@angular/core").Signal<boolean>;
|
|
@@ -12076,4 +12108,9 @@ export declare const DEFAULT_EMAIL_TEMPLATE_VARIABLE_GROUPS: {
|
|
|
12076
12108
|
example: string;
|
|
12077
12109
|
}[];
|
|
12078
12110
|
}[];
|
|
12111
|
+
/**
|
|
12112
|
+
* The document the Preview / Mobile tabs show (inside a sandboxed iframe): the serialised message with the base look of a sent email. A
|
|
12113
|
+
* Content-Security-Policy meta blocks scripts and anything but images / inline styles, and links open nowhere (sandbox, no popups).
|
|
12114
|
+
*/
|
|
12115
|
+
export declare function buildPreviewDocument(bodyHtml: string): string;
|
|
12079
12116
|
export type { CalendarDay, CalendarRange, CalendarViewMode };
|