@forgeroute/ui 0.4.33 → 0.4.34
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
|
@@ -1999,7 +1999,7 @@ export declare class SidePanelComponent implements OnDestroy {
|
|
|
1999
1999
|
readonly cancelLabel: import("@angular/core").InputSignal<string>;
|
|
2000
2000
|
/** Right-aligned primary action button label. Empty string = hidden. */
|
|
2001
2001
|
readonly primaryLabel: import("@angular/core").InputSignal<string>;
|
|
2002
|
-
readonly primaryVariant: import("@angular/core").InputSignal<"
|
|
2002
|
+
readonly primaryVariant: import("@angular/core").InputSignal<"primary" | "danger" | "warning">;
|
|
2003
2003
|
readonly primaryLoading: import("@angular/core").InputSignal<boolean>;
|
|
2004
2004
|
readonly primaryDisabled: import("@angular/core").InputSignal<boolean>;
|
|
2005
2005
|
/** `data-testid` of the Cancel button; none when empty (default). */
|
|
@@ -2571,6 +2571,8 @@ export declare class SkeletonComponent {
|
|
|
2571
2571
|
/**
|
|
2572
2572
|
* Hover / focus tooltip for any element: `<span uiTooltip="Saved">`.
|
|
2573
2573
|
* Empty text shows nothing. Line breaks (`\n`) are kept. Escape or leaving the element closes it.
|
|
2574
|
+
* Only one tooltip is open at a time anywhere on the page: opening one closes the previous (e.g. a tooltip on a container and on a control inside
|
|
2575
|
+
* it never both show; the innermost one the pointer entered last wins).
|
|
2574
2576
|
* The bubble is rendered on `document.body` (position: fixed) so table/panel overflow never clips it.
|
|
2575
2577
|
*/
|
|
2576
2578
|
export declare class TooltipDirective {
|
|
@@ -2741,7 +2743,7 @@ export declare class CheckboxComponent implements ControlValueAccessor, Validato
|
|
|
2741
2743
|
* 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.
|
|
2742
2744
|
* Default null: plain label text, exactly as before. Single mode only.
|
|
2743
2745
|
*/
|
|
2744
|
-
readonly headingLevel: import("@angular/core").InputSignal<1 | 2 |
|
|
2746
|
+
readonly headingLevel: import("@angular/core").InputSignal<1 | 2 | 3 | 4 | 5 | 6 | null>;
|
|
2745
2747
|
readonly indeterminate: import("@angular/core").InputSignal<boolean>;
|
|
2746
2748
|
readonly checked: import("@angular/core").ModelSignal<boolean>;
|
|
2747
2749
|
/**
|
|
@@ -3139,7 +3141,7 @@ export declare class StepperComponent {
|
|
|
3139
3141
|
* its circle, one continuous line behind the circles that fills as steps complete; a complete step shows a check, the current step an
|
|
3140
3142
|
* accent ring with a dot, an upcoming step an empty circle (no numbers). Circles are 40px (32px with `size="sm"`).
|
|
3141
3143
|
*/
|
|
3142
|
-
readonly labelPosition: import("@angular/core").InputSignal<"
|
|
3144
|
+
readonly labelPosition: import("@angular/core").InputSignal<"beside" | "below">;
|
|
3143
3145
|
/** Viewport width in px below which a horizontal stepper is drawn vertical (labels beside the circles), e.g. `640`. null (default) = never. */
|
|
3144
3146
|
readonly stackBelow: import("@angular/core").InputSignal<number | null>;
|
|
3145
3147
|
/** CSS length (e.g. `10.5rem`): horizontal only - the list gets `min-width: calc(<step count> * <value>)`. Empty (default) = no minimum. */
|
|
@@ -3766,7 +3768,7 @@ export declare class ButtonComponent {
|
|
|
3766
3768
|
* `ghost-start`: a ghost button for list / section toggles - a full-width row with its content aligned to the start, transparent
|
|
3767
3769
|
* background, hover tint and the normal focus ring. Pair it with `ariaExpanded` / `ariaPressed`; the label may contain a heading element.
|
|
3768
3770
|
*/
|
|
3769
|
-
readonly variant: import("@angular/core").InputSignal<"
|
|
3771
|
+
readonly variant: import("@angular/core").InputSignal<"primary" | "secondary" | "danger" | "warning" | "link" | "ghost" | "ghost-start" | "tab" | "icon" | "icon-danger">;
|
|
3770
3772
|
/** 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`). */
|
|
3771
3773
|
readonly routerLink: import("@angular/core").InputSignal<string | readonly unknown[] | null>;
|
|
3772
3774
|
/** Query params of the `routerLink` (e.g. `{ section: 'deal-defaults' }`). */
|
|
@@ -3963,6 +3965,11 @@ export declare class ToggleBadgeComponent {
|
|
|
3963
3965
|
readonly active: import("@angular/core").InputSignal<boolean>;
|
|
3964
3966
|
/** Icon buttons shown inside the pill after the label. Empty (default) = a plain pill, exactly as before. */
|
|
3965
3967
|
readonly actions: import("@angular/core").InputSignal<ToggleBadgeAction[]>;
|
|
3968
|
+
/**
|
|
3969
|
+
* Hover / focus tooltip of the LABEL button only. Use this instead of `uiTooltip` on `<ui-toggle-badge>` when the badge has `actions`:
|
|
3970
|
+
* a tooltip on the host would also open while the pointer is over an icon button and stack on top of that icon's own tooltip.
|
|
3971
|
+
*/
|
|
3972
|
+
readonly tooltip: import("@angular/core").InputSignal<string>;
|
|
3966
3973
|
readonly toggle: import("@angular/core").OutputEmitterRef<void>;
|
|
3967
3974
|
/** An icon button was clicked: its `id`. Never emits `toggle`. */
|
|
3968
3975
|
readonly action: import("@angular/core").OutputEmitterRef<string>;
|
|
@@ -3983,6 +3990,11 @@ export declare class ToggleBadgeComponent {
|
|
|
3983
3990
|
"required": false;
|
|
3984
3991
|
"isSignal": true;
|
|
3985
3992
|
};
|
|
3993
|
+
"tooltip": {
|
|
3994
|
+
"alias": "tooltip";
|
|
3995
|
+
"required": false;
|
|
3996
|
+
"isSignal": true;
|
|
3997
|
+
};
|
|
3986
3998
|
}, {
|
|
3987
3999
|
"toggle": "toggle";
|
|
3988
4000
|
"action": "action";
|
|
@@ -4234,7 +4246,7 @@ export declare class BulkMessagePanelComponent {
|
|
|
4234
4246
|
readonly sending: import("@angular/core").InputSignal<boolean>;
|
|
4235
4247
|
readonly closed: import("@angular/core").OutputEmitterRef<void>;
|
|
4236
4248
|
readonly send: import("@angular/core").OutputEmitterRef<BulkMessageSendEvent>;
|
|
4237
|
-
readonly channel: import("@angular/core").WritableSignal<"
|
|
4249
|
+
readonly channel: import("@angular/core").WritableSignal<"text" | "email">;
|
|
4238
4250
|
private readonly _subject;
|
|
4239
4251
|
private readonly _body;
|
|
4240
4252
|
get subject(): string;
|
|
@@ -4510,7 +4522,7 @@ export declare class TextInputComponent implements ControlValueAccessor, Validat
|
|
|
4510
4522
|
readonly passwordRequirements: import("@angular/core").InputSignal<boolean>;
|
|
4511
4523
|
/** Rules for `passwordRequirements`; default = the library's five rules (8+ characters, upper, lower, digit, special). */
|
|
4512
4524
|
readonly passwordRules: import("@angular/core").InputSignal<readonly PasswordRule[] | undefined>;
|
|
4513
|
-
readonly type: import("@angular/core").InputSignal<"number" | "
|
|
4525
|
+
readonly type: import("@angular/core").InputSignal<"number" | "text" | "email" | "tel" | "password" | "url">;
|
|
4514
4526
|
readonly maxlength: import("@angular/core").InputSignal<number | undefined>;
|
|
4515
4527
|
readonly required: import("@angular/core").InputSignal<boolean>;
|
|
4516
4528
|
readonly autocomplete: import("@angular/core").InputSignal<string>;
|
|
@@ -4519,7 +4531,7 @@ export declare class TextInputComponent implements ControlValueAccessor, Validat
|
|
|
4519
4531
|
* `search`, `text`, `none`). Empty (default) = the browser's default for the field, except `type="tel"`, which keeps `tel`.
|
|
4520
4532
|
* It only picks the keyboard; it does not restrict what can be typed or pasted.
|
|
4521
4533
|
*/
|
|
4522
|
-
readonly inputmode: import("@angular/core").InputSignal<"" | "
|
|
4534
|
+
readonly inputmode: import("@angular/core").InputSignal<"" | "none" | "text" | "search" | "email" | "tel" | "url" | "decimal" | "numeric">;
|
|
4523
4535
|
readonly readonly: import("@angular/core").InputSignal<boolean>;
|
|
4524
4536
|
readonly hint: import("@angular/core").InputSignal<string>;
|
|
4525
4537
|
readonly error: import("@angular/core").InputSignal<string>;
|
|
@@ -4583,7 +4595,7 @@ export declare class TextInputComponent implements ControlValueAccessor, Validat
|
|
|
4583
4595
|
protected readonly _stepAttr: import("@angular/core").Signal<string | null>;
|
|
4584
4596
|
protected readonly _revealable: import("@angular/core").Signal<boolean>;
|
|
4585
4597
|
protected readonly _shown: import("@angular/core").WritableSignal<boolean>;
|
|
4586
|
-
protected readonly _inputType: import("@angular/core").Signal<"number" | "
|
|
4598
|
+
protected readonly _inputType: import("@angular/core").Signal<"number" | "text" | "email" | "tel" | "password" | "url">;
|
|
4587
4599
|
protected readonly _eyePath: string;
|
|
4588
4600
|
protected readonly _eyeOffPath: string;
|
|
4589
4601
|
protected readonly _showRequirements: import("@angular/core").Signal<boolean>;
|
|
@@ -6129,7 +6141,7 @@ export declare class FormRowComponent {
|
|
|
6129
6141
|
* child simply takes the full width. Keep a numeric span within the row's `cols` (use `all` for the whole row).
|
|
6130
6142
|
*/
|
|
6131
6143
|
export declare class FormColSpanDirective {
|
|
6132
|
-
readonly uiColSpan: import("@angular/core").InputSignal<"" | 2 | 3 |
|
|
6144
|
+
readonly uiColSpan: import("@angular/core").InputSignal<"" | "2" | "3" | 2 | 3 | "all">;
|
|
6133
6145
|
protected readonly _class: import("@angular/core").Signal<string>;
|
|
6134
6146
|
static ɵfac: i0.ɵɵFactoryDeclaration<FormColSpanDirective, never>;
|
|
6135
6147
|
static ɵdir: i0.ɵɵDirectiveDeclaration<FormColSpanDirective, "[uiColSpan]", never, {
|
|
@@ -6179,7 +6191,7 @@ export type ListItemDetail = string | {
|
|
|
6179
6191
|
export type ListItemIconColor = 'slate' | 'amber' | 'red' | 'blue' | 'green' | 'purple' | 'teal' | 'orange';
|
|
6180
6192
|
export declare class ListItemComponent {
|
|
6181
6193
|
/** Show a radio button, checkbox, or nothing on the left. */
|
|
6182
|
-
readonly leading: import("@angular/core").InputSignal<"
|
|
6194
|
+
readonly leading: import("@angular/core").InputSignal<"none" | "checkbox" | "radio">;
|
|
6183
6195
|
/** `name` attribute for the radio/checkbox (groups radios together). */
|
|
6184
6196
|
readonly inputName: import("@angular/core").InputSignal<string>;
|
|
6185
6197
|
/** `id` attribute for the radio/checkbox (links the label). */
|
|
@@ -7156,9 +7168,9 @@ export declare class ChipGroupComponent {
|
|
|
7156
7168
|
/** Space between each chip. */
|
|
7157
7169
|
readonly gap: import("@angular/core").InputSignal<"sm" | "md" | "lg">;
|
|
7158
7170
|
/** Space above the chip group. */
|
|
7159
|
-
readonly spaceAbove: import("@angular/core").InputSignal<"
|
|
7171
|
+
readonly spaceAbove: import("@angular/core").InputSignal<"none" | "sm" | "md">;
|
|
7160
7172
|
/** Space below the chip group. */
|
|
7161
|
-
readonly spaceBelow: import("@angular/core").InputSignal<"
|
|
7173
|
+
readonly spaceBelow: import("@angular/core").InputSignal<"none" | "sm" | "md">;
|
|
7162
7174
|
protected readonly _gap: import("@angular/core").Signal<"6px" | "12px" | "8px">;
|
|
7163
7175
|
protected readonly _spaceAbove: import("@angular/core").Signal<"0" | "6px" | "12px">;
|
|
7164
7176
|
protected readonly _spaceBelow: import("@angular/core").Signal<"0" | "6px" | "12px">;
|
|
@@ -7490,7 +7502,7 @@ export declare class IconComponent {
|
|
|
7490
7502
|
readonly ariaLabel: import("@angular/core").InputSignal<string>;
|
|
7491
7503
|
/** Icon size in px. */
|
|
7492
7504
|
readonly size: import("@angular/core").InputSignal<number>;
|
|
7493
|
-
readonly variant: import("@angular/core").InputSignal<"
|
|
7505
|
+
readonly variant: import("@angular/core").InputSignal<"danger" | "default">;
|
|
7494
7506
|
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
7495
7507
|
/** The host is running the request this icon started: a spinner replaces the picture and the button is disabled (no click) until it is false again. */
|
|
7496
7508
|
readonly loading: import("@angular/core").InputSignal<boolean>;
|
|
@@ -7602,7 +7614,7 @@ export declare class TimelineComponent {
|
|
|
7602
7614
|
/** Any CSS length (e.g. `600px`). When set, the list scrolls inside a keyboard-focusable region of at most this height. Empty = no wrapper. */
|
|
7603
7615
|
readonly maxHeight: import("@angular/core").InputSignal<string>;
|
|
7604
7616
|
/** `below` (default): the time is under the title / description. `end`: the time sits right-aligned on the title row. */
|
|
7605
|
-
readonly timePosition: import("@angular/core").InputSignal<"
|
|
7617
|
+
readonly timePosition: import("@angular/core").InputSignal<"end" | "below">;
|
|
7606
7618
|
/**
|
|
7607
7619
|
* Group the items under a heading per calendar day of `dateTime` ("Today", "Yesterday", "Oct 3", "Oct 3, 2025"). Default false = no headings,
|
|
7608
7620
|
* DOM unchanged. The given order is kept: consecutive items of one day share a heading, the same day appearing again later starts a new group.
|
|
@@ -8932,7 +8944,7 @@ export declare class PdfHotspotComponent {
|
|
|
8932
8944
|
/** `ready`: clickable; `blocked`: disabled (a prerequisite is missing); `signed`: shows `image`. */
|
|
8933
8945
|
readonly state: import("@angular/core").InputSignal<"ready" | "blocked" | "signed">;
|
|
8934
8946
|
/** `warning` gives the ready state an amber look (e.g. for initials), default is blue. */
|
|
8935
|
-
readonly tone: import("@angular/core").InputSignal<"
|
|
8947
|
+
readonly tone: import("@angular/core").InputSignal<"primary" | "warning">;
|
|
8936
8948
|
/** Text of the ready button (e.g. "Sign Here"). */
|
|
8937
8949
|
readonly label: import("@angular/core").InputSignal<string>;
|
|
8938
8950
|
/** Text of the blocked button (e.g. "Add signature above"). */
|
|
@@ -9066,7 +9078,7 @@ export declare class DetailCardComponent {
|
|
|
9066
9078
|
/** true (default) = the title is displayed in capitals (CSS only); false = shown as written. The text, aria-label and heading name are never changed. */
|
|
9067
9079
|
readonly uppercaseTitle: import("@angular/core").InputSignal<boolean>;
|
|
9068
9080
|
/** 1-6 makes the title a real heading for screen readers (role=heading, aria-level); null keeps it plain text. */
|
|
9069
|
-
readonly headingLevel: import("@angular/core").InputSignal<1 | 2 |
|
|
9081
|
+
readonly headingLevel: import("@angular/core").InputSignal<1 | 2 | 3 | 4 | 5 | 6 | null>;
|
|
9070
9082
|
/** Optional id for the title text; the card is then labelled by it. Without it the title is the card's aria-label. */
|
|
9071
9083
|
readonly titleId: import("@angular/core").InputSignal<string>;
|
|
9072
9084
|
/** Accessible name of the card when the header gives none (no header, or no title). A visible title wins; blank = no name. */
|
|
@@ -11142,8 +11154,12 @@ export interface SetupIntegration {
|
|
|
11142
11154
|
title: string;
|
|
11143
11155
|
/** Shown while the integration is not connected. */
|
|
11144
11156
|
description: string;
|
|
11145
|
-
/** Library
|
|
11157
|
+
/** Library icon name drawn in the tile when there is no `letter` (default 'link'). */
|
|
11146
11158
|
icon?: string;
|
|
11159
|
+
/** One letter shown in the coloured tile (like the source cards of an import step); takes the place of `icon`. */
|
|
11160
|
+
letter?: string;
|
|
11161
|
+
/** Background of the tile (any CSS colour; default slate). */
|
|
11162
|
+
color?: string;
|
|
11147
11163
|
/** GET answering `{ connected: boolean, ... }` (relative to the API base URL of `FORGEROUTE_CONFIG`). */
|
|
11148
11164
|
statusEndpoint: string;
|
|
11149
11165
|
/** When one status endpoint answers several providers (`{ gmail: {...}, outlook: {...} }`), the property that belongs to this one. */
|
|
@@ -11206,7 +11222,7 @@ export interface SetupStep {
|
|
|
11206
11222
|
cardTitle?: string;
|
|
11207
11223
|
/** The paragraph under the heading. */
|
|
11208
11224
|
description?: string;
|
|
11209
|
-
/** `custom` shows the app's own `<ng-template uiSetupStep="key">`; `import` and `integrations` are built in. */
|
|
11225
|
+
/** `custom` shows the app's own `<ng-template uiSetupStep="key">`; `import` and `integrations` are built in (an app template with the step's key is shown above the built-in content). */
|
|
11210
11226
|
kind: 'custom' | 'import' | 'integrations';
|
|
11211
11227
|
/** Shows "Skip for now" (default true). The first step of a wizard usually sets this to false. */
|
|
11212
11228
|
skippable?: boolean;
|
|
@@ -11235,6 +11251,8 @@ export interface SetupWizardApi {
|
|
|
11235
11251
|
saveAndContinue(): Promise<void>;
|
|
11236
11252
|
/** True while a save is running. */
|
|
11237
11253
|
readonly busy: () => boolean;
|
|
11254
|
+
/** Marks steps as done (check mark, counted in the progress) without the user visiting them; unknown keys are ignored. For example a live sync that already brought in the data of later steps. */
|
|
11255
|
+
markCompleted(...keys: string[]): void;
|
|
11238
11256
|
}
|
|
11239
11257
|
/**
|
|
11240
11258
|
* The integrations every app can offer in a setup step. The endpoints follow the convention the apps' backends already use (`GET <x>/status`,
|
|
@@ -11251,6 +11269,8 @@ export declare function setupIntegrations(...keys: (keyof typeof SETUP_INTEGRATI
|
|
|
11251
11269
|
* <ng-template uiSetupStep="profile"> …the app's own form… </ng-template>
|
|
11252
11270
|
* </ui-setup-wizard>
|
|
11253
11271
|
*
|
|
11272
|
+
* An `import` or `integrations` step with a template of its key shows it ABOVE the built-in content (for example a "connect your CRM" panel above the source cards).
|
|
11273
|
+
*
|
|
11254
11274
|
* A step with `ownActions: true` draws its own continue button: `<ng-template uiSetupStep="profile" let-wizard>` … `(click)="wizard.saveAndContinue()"`.
|
|
11255
11275
|
*/
|
|
11256
11276
|
export declare class SetupWizardStepDirective {
|
|
@@ -11373,6 +11393,8 @@ export declare class SetupWizardComponent {
|
|
|
11373
11393
|
private advanceFrom;
|
|
11374
11394
|
protected back(): void;
|
|
11375
11395
|
protected skip(): void;
|
|
11396
|
+
/** Marks the given steps done (ignoring keys that are not steps of this wizard). */
|
|
11397
|
+
private markStepsCompleted;
|
|
11376
11398
|
private markCompleted;
|
|
11377
11399
|
/** "Save & Continue" of a custom or integrations step: runs the step's hook, then moves on. */
|
|
11378
11400
|
saveAndContinue(): Promise<void>;
|
|
@@ -11422,12 +11444,6 @@ export interface EmailTemplateAssignmentOption {
|
|
|
11422
11444
|
name: string;
|
|
11423
11445
|
description: string;
|
|
11424
11446
|
}
|
|
11425
|
-
/** The channels a template is assigned to for one trigger. */
|
|
11426
|
-
export interface EmailTemplateAssignmentChannels {
|
|
11427
|
-
key: string;
|
|
11428
|
-
email: boolean;
|
|
11429
|
-
text: boolean;
|
|
11430
|
-
}
|
|
11431
11447
|
/** A template as the editor shows it. `id` is null/absent for a template that is not stored yet (new, or a copy of another). */
|
|
11432
11448
|
export interface EmailTemplateValue {
|
|
11433
11449
|
id?: string | null;
|
|
@@ -11443,8 +11459,8 @@ export interface EmailTemplateValue {
|
|
|
11443
11459
|
body: string;
|
|
11444
11460
|
videoId?: string | null;
|
|
11445
11461
|
videoTitle?: string | null;
|
|
11446
|
-
/** The
|
|
11447
|
-
assignments?:
|
|
11462
|
+
/** The keys of the triggers (`EmailTemplateAssignmentOption.key`) this template is assigned to. */
|
|
11463
|
+
assignments?: string[];
|
|
11448
11464
|
}
|
|
11449
11465
|
/** What `(save)` emits. Dates are the raw `YYYY-MM-DD` values (null while "all year" is on); the host maps them to its API. */
|
|
11450
11466
|
export interface EmailTemplateSavePayload {
|
|
@@ -11456,8 +11472,8 @@ export interface EmailTemplateSavePayload {
|
|
|
11456
11472
|
activeFrom: string | null;
|
|
11457
11473
|
activeTo: string | null;
|
|
11458
11474
|
videoId: string | null;
|
|
11459
|
-
/**
|
|
11460
|
-
assignments:
|
|
11475
|
+
/** The keys of the triggers this template is assigned to. */
|
|
11476
|
+
assignments: string[];
|
|
11461
11477
|
}
|
|
11462
11478
|
export interface EmailTemplateBlock {
|
|
11463
11479
|
key: string;
|
|
@@ -11506,8 +11522,7 @@ interface EmailBlock {
|
|
|
11506
11522
|
spacing?: string;
|
|
11507
11523
|
}
|
|
11508
11524
|
interface AssignmentView extends EmailTemplateAssignmentOption {
|
|
11509
|
-
|
|
11510
|
-
text: boolean;
|
|
11525
|
+
assigned: boolean;
|
|
11511
11526
|
}
|
|
11512
11527
|
type EditorTab = 'edit' | 'preview' | 'mobile';
|
|
11513
11528
|
type RightTab = 'blocks' | 'variables' | 'video';
|
|
@@ -11526,7 +11541,6 @@ type RightTab = 'blocks' | 'variables' | 'video';
|
|
|
11526
11541
|
export declare class EmailTemplateEditorComponent {
|
|
11527
11542
|
private readonly host;
|
|
11528
11543
|
private readonly injector;
|
|
11529
|
-
private readonly toast;
|
|
11530
11544
|
/** The template to edit. `null` = a blank new template. An object without `id` is a new template that starts from those values (e.g. a copy). */
|
|
11531
11545
|
readonly template: import("@angular/core").InputSignal<EmailTemplateValue | null>;
|
|
11532
11546
|
readonly categories: import("@angular/core").InputSignal<SelectOption<string>[]>;
|
|
@@ -11535,9 +11549,10 @@ export declare class EmailTemplateEditorComponent {
|
|
|
11535
11549
|
/** The assignment shown first (e.g. the trigger the user came from). */
|
|
11536
11550
|
readonly featuredAssignmentKey: import("@angular/core").InputSignal<string | null>;
|
|
11537
11551
|
readonly assignmentsDescription: import("@angular/core").InputSignal<string>;
|
|
11538
|
-
readonly textEnabled: import("@angular/core").InputSignal<boolean>;
|
|
11539
11552
|
readonly variableGroups: import("@angular/core").InputSignal<EmailTemplateVariableGroup[]>;
|
|
11540
11553
|
readonly blockGroups: import("@angular/core").InputSignal<EmailTemplateBlockGroup[]>;
|
|
11554
|
+
/** Page heading shown at the start of the actions row (e.g. "Create Your Template"). Empty (default) = no heading; the buttons stay right aligned. */
|
|
11555
|
+
readonly heading: import("@angular/core").InputSignal<string>;
|
|
11541
11556
|
readonly namePlaceholder: import("@angular/core").InputSignal<string>;
|
|
11542
11557
|
readonly subjectPlaceholder: import("@angular/core").InputSignal<string>;
|
|
11543
11558
|
readonly systemNote: import("@angular/core").InputSignal<string>;
|
|
@@ -11582,8 +11597,8 @@ export declare class EmailTemplateEditorComponent {
|
|
|
11582
11597
|
readonly activeTo: import("@angular/core").WritableSignal<string>;
|
|
11583
11598
|
readonly videoId: import("@angular/core").WritableSignal<string | null>;
|
|
11584
11599
|
readonly videoTitle: import("@angular/core").WritableSignal<string | null>;
|
|
11585
|
-
/** The
|
|
11586
|
-
private readonly
|
|
11600
|
+
/** The triggers this template is assigned to (an email template is only ever assigned for email); the rows shown are `assignmentOptions` with this applied. */
|
|
11601
|
+
private readonly assignedKeys;
|
|
11587
11602
|
private readonly assignmentState;
|
|
11588
11603
|
readonly blocks: import("@angular/core").WritableSignal<EmailBlock[]>;
|
|
11589
11604
|
readonly selectedBlockId: import("@angular/core").WritableSignal<string | null>;
|
|
@@ -11621,10 +11636,6 @@ export declare class EmailTemplateEditorComponent {
|
|
|
11621
11636
|
readonly imageAlt: import("@angular/core").WritableSignal<string>;
|
|
11622
11637
|
readonly showTestSendDialog: import("@angular/core").WritableSignal<boolean>;
|
|
11623
11638
|
readonly testSendEmail: import("@angular/core").WritableSignal<string>;
|
|
11624
|
-
readonly showAssignmentConfig: import("@angular/core").WritableSignal<boolean>;
|
|
11625
|
-
readonly configTarget: import("@angular/core").WritableSignal<AssignmentView | null>;
|
|
11626
|
-
readonly configEmail: import("@angular/core").WritableSignal<boolean>;
|
|
11627
|
-
readonly configText: import("@angular/core").WritableSignal<boolean>;
|
|
11628
11639
|
readonly activeEditorTab: import("@angular/core").WritableSignal<EditorTab>;
|
|
11629
11640
|
readonly activeRightTab: import("@angular/core").WritableSignal<RightTab>;
|
|
11630
11641
|
readonly blockSearch: import("@angular/core").WritableSignal<string>;
|
|
@@ -11753,8 +11764,8 @@ export declare class EmailTemplateEditorComponent {
|
|
|
11753
11764
|
insertVideo(video: EmailTemplateVideo): void;
|
|
11754
11765
|
formatDuration(seconds: number | null | undefined): string;
|
|
11755
11766
|
categoryLabel(cat: string | null | undefined): string;
|
|
11756
|
-
|
|
11757
|
-
|
|
11767
|
+
/** Click / Enter / Space on a row: assign this template to that automation, or take it off again. */
|
|
11768
|
+
toggleAssignment(item: AssignmentView): void;
|
|
11758
11769
|
isOpen(id: string): boolean;
|
|
11759
11770
|
toggleGroup(id: string): void;
|
|
11760
11771
|
insertBlock(block: EmailTemplateBlock): void;
|
|
@@ -11792,11 +11803,6 @@ export declare class EmailTemplateEditorComponent {
|
|
|
11792
11803
|
"required": false;
|
|
11793
11804
|
"isSignal": true;
|
|
11794
11805
|
};
|
|
11795
|
-
"textEnabled": {
|
|
11796
|
-
"alias": "textEnabled";
|
|
11797
|
-
"required": false;
|
|
11798
|
-
"isSignal": true;
|
|
11799
|
-
};
|
|
11800
11806
|
"variableGroups": {
|
|
11801
11807
|
"alias": "variableGroups";
|
|
11802
11808
|
"required": false;
|
|
@@ -11807,6 +11813,11 @@ export declare class EmailTemplateEditorComponent {
|
|
|
11807
11813
|
"required": false;
|
|
11808
11814
|
"isSignal": true;
|
|
11809
11815
|
};
|
|
11816
|
+
"heading": {
|
|
11817
|
+
"alias": "heading";
|
|
11818
|
+
"required": false;
|
|
11819
|
+
"isSignal": true;
|
|
11820
|
+
};
|
|
11810
11821
|
"namePlaceholder": {
|
|
11811
11822
|
"alias": "namePlaceholder";
|
|
11812
11823
|
"required": false;
|