@forgeroute/ui 0.4.73 → 0.4.74
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 +139 -7
- package/fesm2022/forgeroute-ui-messaging.mjs.map +1 -1
- package/fesm2022/forgeroute-ui-stripe.mjs +10 -2
- package/fesm2022/forgeroute-ui-stripe.mjs.map +1 -1
- package/fesm2022/forgeroute-ui.mjs +1200 -143
- package/fesm2022/forgeroute-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/types/forgeroute-ui-messaging.d.ts +51 -2
- package/types/forgeroute-ui-stripe.d.ts +1 -1
- package/types/forgeroute-ui.d.ts +341 -41
package/types/forgeroute-ui.d.ts
CHANGED
|
@@ -202,7 +202,9 @@ export interface ColumnDef {
|
|
|
202
202
|
ariaLabel?: string;
|
|
203
203
|
} | null;
|
|
204
204
|
/** Key in item holding the tags array. Defaults to col.key.
|
|
205
|
-
* Expected shape: { name: string; variant?: BadgeVariant }[]
|
|
205
|
+
* Expected shape: { name: string; variant?: BadgeVariant; color?: string }[]. `color` is a custom hex colour (`#rgb` / `#rrggbb`,
|
|
206
|
+
* e.g. the colour a user picked for the tag): it becomes the chip background with dark or white text for contrast and wins over `variant`;
|
|
207
|
+
* an invalid value is ignored. */
|
|
206
208
|
tagsKey?: string;
|
|
207
209
|
/**
|
|
208
210
|
* `cellType: 'link'` — returns where the cell points for a row (`value` is `item[key]`), or null / undefined /
|
|
@@ -736,7 +738,17 @@ export declare class BadgeComponent {
|
|
|
736
738
|
* 2. Fall back to auto-color based on the label string
|
|
737
739
|
*/
|
|
738
740
|
readonly variant: import("@angular/core").InputSignal<BadgeVariant | null>;
|
|
741
|
+
/**
|
|
742
|
+
* A custom hex colour (`#rgb` or `#rrggbb`), e.g. the colour a user picked for a tag. It becomes the background and the text is
|
|
743
|
+
* dark or white, whichever reads better (WCAG contrast). It wins over `variant`; anything that is not a valid hex colour is
|
|
744
|
+
* ignored (the variant / automatic colour applies). Omit it and nothing changes.
|
|
745
|
+
*/
|
|
746
|
+
readonly color: import("@angular/core").InputSignal<string | null>;
|
|
739
747
|
protected readonly resolvedVariant: import("@angular/core").Signal<BadgeVariant>;
|
|
748
|
+
protected readonly customStyles: import("@angular/core").Signal<{
|
|
749
|
+
bg: string;
|
|
750
|
+
color: string;
|
|
751
|
+
} | null>;
|
|
740
752
|
protected readonly styles: import("@angular/core").Signal<{
|
|
741
753
|
bg: string;
|
|
742
754
|
color: string;
|
|
@@ -753,6 +765,11 @@ export declare class BadgeComponent {
|
|
|
753
765
|
"required": false;
|
|
754
766
|
"isSignal": true;
|
|
755
767
|
};
|
|
768
|
+
"color": {
|
|
769
|
+
"alias": "color";
|
|
770
|
+
"required": false;
|
|
771
|
+
"isSignal": true;
|
|
772
|
+
};
|
|
756
773
|
}, {}, never, never, true, never>;
|
|
757
774
|
}
|
|
758
775
|
/**
|
|
@@ -1286,6 +1303,11 @@ export interface ImportFieldDef {
|
|
|
1286
1303
|
key: string;
|
|
1287
1304
|
label: string;
|
|
1288
1305
|
required?: boolean;
|
|
1306
|
+
/**
|
|
1307
|
+
* An example of what the column should contain (e.g. `VACANT, OCCUPIED`, `500.00`, `YYYY-MM-DD`). It is shown under the field's
|
|
1308
|
+
* label in the column-mapping step as "e.g. <example>" and linked to the column dropdown for screen readers. Omit it and nothing changes.
|
|
1309
|
+
*/
|
|
1310
|
+
example?: string;
|
|
1289
1311
|
}
|
|
1290
1312
|
export interface ImportSource {
|
|
1291
1313
|
value: string;
|
|
@@ -1406,6 +1428,10 @@ export declare class ImportExportComponent {
|
|
|
1406
1428
|
private csvFile;
|
|
1407
1429
|
private readCsvFile;
|
|
1408
1430
|
private autoMap;
|
|
1431
|
+
private static nextId;
|
|
1432
|
+
private readonly idPrefix;
|
|
1433
|
+
/** Id of a field's example hint (the column dropdown points at it with aria-describedby). */
|
|
1434
|
+
protected exampleId(field: ImportFieldDef): string;
|
|
1409
1435
|
get canSubmit(): boolean;
|
|
1410
1436
|
get unmappedRequiredFields(): string[];
|
|
1411
1437
|
get unmatchedCsvHeaders(): string[];
|
|
@@ -1620,7 +1646,6 @@ export declare class DataTableComponent<T extends Record<string, any>> implement
|
|
|
1620
1646
|
* own panel for `rows` and, when it has finished, calls `clearSelection()` and `refresh()` on the table.
|
|
1621
1647
|
*/
|
|
1622
1648
|
readonly bulkPanelClick: import("@angular/core").OutputEmitterRef<BulkPanelEvent<T>>;
|
|
1623
|
-
/** Emitted after a built-in single-row delete completes successfully. */
|
|
1624
1649
|
/**
|
|
1625
1650
|
* Emitted after every rows request that completes (a request superseded by a newer one emits nothing; first load, page, sort, search, tab, filter, `refresh()` ...): `{ ok: true, total }` when the rows
|
|
1626
1651
|
* arrived (`total` = all matching rows), `{ ok: false, total }` when the request failed (the rows on screen are kept, `total` is the last known).
|
|
@@ -1630,6 +1655,7 @@ export declare class DataTableComponent<T extends Record<string, any>> implement
|
|
|
1630
1655
|
ok: boolean;
|
|
1631
1656
|
total: number;
|
|
1632
1657
|
}>;
|
|
1658
|
+
/** Emitted after a built-in single-row delete completes successfully. */
|
|
1633
1659
|
readonly rowDeleted: import("@angular/core").OutputEmitterRef<T>;
|
|
1634
1660
|
/**
|
|
1635
1661
|
* Optional drag-and-drop ordering of the rows. Off by default; when `true` (and the user has full access) every row gets a grip
|
|
@@ -2388,7 +2414,7 @@ export declare class ModalComponent implements OnInit, OnDestroy {
|
|
|
2388
2414
|
*/
|
|
2389
2415
|
readonly describedBy: import("@angular/core").InputSignal<string | null>;
|
|
2390
2416
|
readonly maxWidth: import("@angular/core").InputSignal<string>;
|
|
2391
|
-
readonly bodyOverflow: import("@angular/core").InputSignal<"
|
|
2417
|
+
readonly bodyOverflow: import("@angular/core").InputSignal<"auto" | "hidden" | "visible">;
|
|
2392
2418
|
/** `data-testid` of the dialog element itself (the host `<ui-modal>` is always in the page, the dialog only while open). None when empty. */
|
|
2393
2419
|
readonly dialogTestId: import("@angular/core").InputSignal<string>;
|
|
2394
2420
|
/** Hides the header X button (e.g. while a request is running). Escape and a backdrop click still close unless `closable` is false. */
|
|
@@ -2756,7 +2782,7 @@ export declare class ToastComponent {
|
|
|
2756
2782
|
"action": "action";
|
|
2757
2783
|
}, never, never, true, never>;
|
|
2758
2784
|
}
|
|
2759
|
-
export type ProgressBarVariant = 'blue' | 'green' | 'amber' | 'red' | 'slate';
|
|
2785
|
+
export type ProgressBarVariant = 'blue' | 'green' | 'amber' | 'orange' | 'red' | 'slate';
|
|
2760
2786
|
/**
|
|
2761
2787
|
* Horizontal progress bar with an optional trailing label (e.g. "3/5").
|
|
2762
2788
|
* Pass `value` and `max`; the fill width is clamped to 0–100%, rounded to whole percents, and a value above 0 is never drawn narrower
|
|
@@ -2962,7 +2988,7 @@ export declare class AudioPlayerComponent {
|
|
|
2962
2988
|
/** Accessible name of the player. */
|
|
2963
2989
|
readonly ariaLabel: import("@angular/core").InputSignal<string>;
|
|
2964
2990
|
/** How much to load before play: 'metadata' (default), 'auto' or 'none'. */
|
|
2965
|
-
readonly preload: import("@angular/core").InputSignal<"
|
|
2991
|
+
readonly preload: import("@angular/core").InputSignal<"auto" | "none" | "metadata">;
|
|
2966
2992
|
/** Fires when the browser can't load or decode the source. */
|
|
2967
2993
|
readonly playbackError: import("@angular/core").OutputEmitterRef<void>;
|
|
2968
2994
|
protected readonly failed: import("@angular/core").WritableSignal<boolean>;
|
|
@@ -3216,7 +3242,7 @@ export declare class CheckboxComponent implements ControlValueAccessor, Validato
|
|
|
3216
3242
|
* 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.
|
|
3217
3243
|
* Default null: plain label text, exactly as before. Single mode only.
|
|
3218
3244
|
*/
|
|
3219
|
-
readonly headingLevel: import("@angular/core").InputSignal<
|
|
3245
|
+
readonly headingLevel: import("@angular/core").InputSignal<1 | 4 | 2 | 3 | 5 | 6 | null>;
|
|
3220
3246
|
readonly indeterminate: import("@angular/core").InputSignal<boolean>;
|
|
3221
3247
|
readonly checked: import("@angular/core").ModelSignal<boolean>;
|
|
3222
3248
|
/**
|
|
@@ -3234,7 +3260,7 @@ export declare class CheckboxComponent implements ControlValueAccessor, Validato
|
|
|
3234
3260
|
*/
|
|
3235
3261
|
protected readonly _legend: import("@angular/core").Signal<string>;
|
|
3236
3262
|
/** Group mode: lay the options out in a column (default) or in a wrapping row. */
|
|
3237
|
-
readonly orientation: import("@angular/core").InputSignal<"
|
|
3263
|
+
readonly orientation: import("@angular/core").InputSignal<"horizontal" | "vertical">;
|
|
3238
3264
|
/**
|
|
3239
3265
|
* Group mode: the ticked option values as a two-way model (`[(values)]`), an alternative to ngModel / forms. Unset (default) = the
|
|
3240
3266
|
* group is driven by ngModel / FormControl only. Values that are not an option are dropped and the order follows `options`.
|
|
@@ -3615,13 +3641,13 @@ export declare class StepperComponent {
|
|
|
3615
3641
|
/** Accessible name of the list. */
|
|
3616
3642
|
readonly ariaLabel: import("@angular/core").InputSignal<string>;
|
|
3617
3643
|
/** Horizontal, <= 480px: show only the current step's label (`'current'`, default) or every label (`'all'`). */
|
|
3618
|
-
readonly labelsOnSmallScreens: import("@angular/core").InputSignal<"
|
|
3644
|
+
readonly labelsOnSmallScreens: import("@angular/core").InputSignal<"current" | "all">;
|
|
3619
3645
|
/**
|
|
3620
3646
|
* Horizontal only. `'beside'` (default): the label sits to the right of its circle. `'below'`: equal-width columns, the label centred under
|
|
3621
3647
|
* its circle, one continuous line behind the circles that fills as steps complete; a complete step shows a check, the current step an
|
|
3622
3648
|
* accent ring with a dot, an upcoming step an empty circle (no numbers). Circles are 40px (32px with `size="sm"`).
|
|
3623
3649
|
*/
|
|
3624
|
-
readonly labelPosition: import("@angular/core").InputSignal<"
|
|
3650
|
+
readonly labelPosition: import("@angular/core").InputSignal<"beside" | "below">;
|
|
3625
3651
|
/** Viewport width in px below which a horizontal stepper is drawn vertical (labels beside the circles), e.g. `640`. null (default) = never. */
|
|
3626
3652
|
readonly stackBelow: import("@angular/core").InputSignal<number | null>;
|
|
3627
3653
|
/** CSS length (e.g. `10.5rem`): horizontal only - the list gets `min-width: calc(<step count> * <value>)`. Empty (default) = no minimum. */
|
|
@@ -3653,7 +3679,7 @@ export declare class StepperComponent {
|
|
|
3653
3679
|
protected readonly rows: import("@angular/core").Signal<{
|
|
3654
3680
|
step: StepperStep;
|
|
3655
3681
|
index: number;
|
|
3656
|
-
state: "
|
|
3682
|
+
state: "current" | "complete" | "upcoming";
|
|
3657
3683
|
error: boolean;
|
|
3658
3684
|
errorMessage: string;
|
|
3659
3685
|
selectable: boolean;
|
|
@@ -3966,13 +3992,13 @@ export declare class RadioGroupComponent implements ControlValueAccessor, Valida
|
|
|
3966
3992
|
readonly error: import("@angular/core").InputSignal<string>;
|
|
3967
3993
|
/** Reveal the built-in error messages now (e.g. after a failed Save click), without waiting for blur. */
|
|
3968
3994
|
readonly showErrors: import("@angular/core").InputSignal<boolean>;
|
|
3969
|
-
readonly orientation: import("@angular/core").InputSignal<"
|
|
3995
|
+
readonly orientation: import("@angular/core").InputSignal<"horizontal" | "vertical">;
|
|
3970
3996
|
/** Native `name` shared by the radios; a unique one is generated when omitted. */
|
|
3971
3997
|
readonly name: import("@angular/core").InputSignal<string>;
|
|
3972
3998
|
/** `<ng-template uiRadioOptionContent="value">` children: content shown under that option while it is selected. */
|
|
3973
3999
|
private readonly _optionContent;
|
|
3974
4000
|
protected readonly _nestedContent: import("@angular/core").Signal<Map<string, TemplateRef<unknown>>>;
|
|
3975
|
-
|
|
4001
|
+
readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
|
|
3976
4002
|
private readonly _cvaDisabled;
|
|
3977
4003
|
protected readonly disabled: import("@angular/core").Signal<boolean>;
|
|
3978
4004
|
private readonly _generatedName;
|
|
@@ -4139,7 +4165,7 @@ export declare class PhoneNumberPickerComponent {
|
|
|
4139
4165
|
protected readonly modeCtl: FormControl<string>;
|
|
4140
4166
|
protected readonly zipCtl: FormControl<string>;
|
|
4141
4167
|
protected readonly areaCtl: FormControl<string>;
|
|
4142
|
-
protected readonly step: import("@angular/core").WritableSignal<
|
|
4168
|
+
protected readonly step: import("@angular/core").WritableSignal<1 | 2 | 3>;
|
|
4143
4169
|
protected readonly mode: import("@angular/core").WritableSignal<PhoneNumberSearchMode>;
|
|
4144
4170
|
private readonly _zip;
|
|
4145
4171
|
private readonly _area;
|
|
@@ -4301,7 +4327,7 @@ export declare class ButtonComponent {
|
|
|
4301
4327
|
readonly color: import("@angular/core").InputSignal<string | undefined>;
|
|
4302
4328
|
readonly active: import("@angular/core").InputSignal<boolean>;
|
|
4303
4329
|
readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | "xs">;
|
|
4304
|
-
readonly type: import("@angular/core").InputSignal<"
|
|
4330
|
+
readonly type: import("@angular/core").InputSignal<"button" | "reset" | "submit">;
|
|
4305
4331
|
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
4306
4332
|
readonly loading: import("@angular/core").InputSignal<boolean>;
|
|
4307
4333
|
readonly fullWidth: import("@angular/core").InputSignal<boolean>;
|
|
@@ -4510,6 +4536,10 @@ export interface PillTab {
|
|
|
4510
4536
|
* its name. The tooltip is not shown in the horizontally scrolling mobile layout (it would be clipped).
|
|
4511
4537
|
*/
|
|
4512
4538
|
info?: string;
|
|
4539
|
+
/** (library source 2026-11-05) Heading shown under the tab list while this tab is active, when the tabs' `showDescription` input is on. */
|
|
4540
|
+
title?: string;
|
|
4541
|
+
/** (library source 2026-11-05) Explanatory paragraph shown under the heading while this tab is active (`showDescription`). */
|
|
4542
|
+
description?: string;
|
|
4513
4543
|
}
|
|
4514
4544
|
/**
|
|
4515
4545
|
* Pill-style tabs following the WAI-ARIA tabs pattern: each tab is a real <button role="tab">,
|
|
@@ -4526,7 +4556,7 @@ export declare class PillTabsComponent {
|
|
|
4526
4556
|
/** Keep every pill at its own width on one line (default false: pills may shrink and wrap their text). On a phone the row scrolls sideways, as it always does. */
|
|
4527
4557
|
readonly noWrap: import("@angular/core").InputSignal<boolean>;
|
|
4528
4558
|
/** 'vertical' stacks the tabs in a column (Up/Down arrows move between them, `aria-orientation="vertical"`). Default 'horizontal' = unchanged. */
|
|
4529
|
-
readonly orientation: import("@angular/core").InputSignal<"
|
|
4559
|
+
readonly orientation: import("@angular/core").InputSignal<"horizontal" | "vertical">;
|
|
4530
4560
|
protected readonly vertical: () => boolean;
|
|
4531
4561
|
/**
|
|
4532
4562
|
* (library source 2026-11-04, not yet published) Associate the tabs with their panels: every tab gets
|
|
@@ -4539,7 +4569,18 @@ export declare class PillTabsComponent {
|
|
|
4539
4569
|
* `panel-` when this is on; in development mode a `console.warn` names such a key.
|
|
4540
4570
|
*/
|
|
4541
4571
|
readonly controlsPanels: import("@angular/core").InputSignal<boolean>;
|
|
4572
|
+
/**
|
|
4573
|
+
* (library source 2026-11-05) Show the ACTIVE tab's `title` (heading) and `description` (paragraph) under the tab list. Default false = no extra DOM.
|
|
4574
|
+
* A tab with only one of them renders only that one; a tab with neither renders nothing. The ids are `<name>--title` / `<name>--description`
|
|
4575
|
+
* (`pillTabTitleId` / `pillTabDescriptionId`); `[uiTabPanel] [describedByHeader]="true"` points the panel's `aria-describedby` at the description.
|
|
4576
|
+
*/
|
|
4577
|
+
readonly showDescription: import("@angular/core").InputSignal<boolean>;
|
|
4578
|
+
/** Heading level of the active tab's title when `showDescription` is on: 2 (default) or 3. */
|
|
4579
|
+
readonly headingLevel: import("@angular/core").InputSignal<2 | 3>;
|
|
4542
4580
|
readonly tabChange: import("@angular/core").OutputEmitterRef<string>;
|
|
4581
|
+
protected readonly activeTab: import("@angular/core").Signal<PillTab | null>;
|
|
4582
|
+
protected titleId(): string;
|
|
4583
|
+
protected descriptionId(): string;
|
|
4543
4584
|
/** True while pills are hidden past the start / end edge of the scroll area (drives the fade hints). */
|
|
4544
4585
|
protected readonly canScrollStart: import("@angular/core").WritableSignal<boolean>;
|
|
4545
4586
|
protected readonly canScrollEnd: import("@angular/core").WritableSignal<boolean>;
|
|
@@ -4590,6 +4631,16 @@ export declare class PillTabsComponent {
|
|
|
4590
4631
|
"required": false;
|
|
4591
4632
|
"isSignal": true;
|
|
4592
4633
|
};
|
|
4634
|
+
"showDescription": {
|
|
4635
|
+
"alias": "showDescription";
|
|
4636
|
+
"required": false;
|
|
4637
|
+
"isSignal": true;
|
|
4638
|
+
};
|
|
4639
|
+
"headingLevel": {
|
|
4640
|
+
"alias": "headingLevel";
|
|
4641
|
+
"required": false;
|
|
4642
|
+
"isSignal": true;
|
|
4643
|
+
};
|
|
4593
4644
|
}, {
|
|
4594
4645
|
"tabChange": "tabChange";
|
|
4595
4646
|
}, never, never, true, never>;
|
|
@@ -4598,6 +4649,10 @@ export declare class PillTabsComponent {
|
|
|
4598
4649
|
export declare function pillTabId(name: string, key: string): string;
|
|
4599
4650
|
/** Id a `uiTabPanel` element gets, and the id every tab's `aria-controls` points at when `controlsPanels` is on: `<name>-panel-<key>`. */
|
|
4600
4651
|
export declare function pillTabPanelId(name: string, key: string): string;
|
|
4652
|
+
/** Id of the heading `ui-pill-tabs` renders for the active tab when `showDescription` is on: `<name>--title`. */
|
|
4653
|
+
export declare function pillTabTitleId(name: string): string;
|
|
4654
|
+
/** Id of the description paragraph `ui-pill-tabs` renders for the active tab when `showDescription` is on: `<name>--description`. */
|
|
4655
|
+
export declare function pillTabDescriptionId(name: string): string;
|
|
4601
4656
|
/**
|
|
4602
4657
|
* (library source 2026-11-04, not yet published) The panel that belongs to one `ui-pill-tabs` tab: a correct
|
|
4603
4658
|
* WAI-ARIA tablist / tabpanel association with the smallest possible markup.
|
|
@@ -4614,6 +4669,8 @@ export declare function pillTabPanelId(name: string, key: string): string;
|
|
|
4614
4669
|
* - `activeKey` the tabs' active key. When given (not null), the panel gets the `hidden` attribute while another tab is active
|
|
4615
4670
|
* (the panels stay in the DOM, so their state survives a tab change). Leave it unset when the page renders only the
|
|
4616
4671
|
* active panel itself (`@if`), then no `hidden` attribute is ever set.
|
|
4672
|
+
* - `describedByHeader` default false. true adds `aria-describedby="<tabsName>--description"` (the description `ui-pill-tabs` shows under the
|
|
4673
|
+
* tab list with `showDescription`) while the panel is not hidden. Turn it on only when the active tab has a `description`.
|
|
4617
4674
|
* - `tabbable` default false. true adds `tabindex="0"` so a panel without any focusable content can be reached by keyboard
|
|
4618
4675
|
* (WAI-ARIA tabs pattern).
|
|
4619
4676
|
*
|
|
@@ -4632,6 +4689,9 @@ export declare class PillTabPanelDirective {
|
|
|
4632
4689
|
readonly activeKey: import("@angular/core").InputSignal<string | null>;
|
|
4633
4690
|
/** Makes the panel itself a Tab stop (for panels with no focusable content). Default false. */
|
|
4634
4691
|
readonly tabbable: import("@angular/core").InputSignal<boolean>;
|
|
4692
|
+
/** Adds `aria-describedby` pointing at the description `ui-pill-tabs` renders under the tab list (`showDescription`). Default false. */
|
|
4693
|
+
readonly describedByHeader: import("@angular/core").InputSignal<boolean>;
|
|
4694
|
+
protected describedId(): string | null;
|
|
4635
4695
|
protected panelId(): string;
|
|
4636
4696
|
protected tabId(): string;
|
|
4637
4697
|
protected isHidden(): boolean;
|
|
@@ -4657,6 +4717,11 @@ export declare class PillTabPanelDirective {
|
|
|
4657
4717
|
"required": false;
|
|
4658
4718
|
"isSignal": true;
|
|
4659
4719
|
};
|
|
4720
|
+
"describedByHeader": {
|
|
4721
|
+
"alias": "describedByHeader";
|
|
4722
|
+
"required": false;
|
|
4723
|
+
"isSignal": true;
|
|
4724
|
+
};
|
|
4660
4725
|
}, {}, never, never, true, never>;
|
|
4661
4726
|
}
|
|
4662
4727
|
export interface ContactLookup {
|
|
@@ -4845,7 +4910,7 @@ export declare class BulkMessagePanelComponent {
|
|
|
4845
4910
|
readonly sending: import("@angular/core").InputSignal<boolean>;
|
|
4846
4911
|
readonly closed: import("@angular/core").OutputEmitterRef<void>;
|
|
4847
4912
|
readonly send: import("@angular/core").OutputEmitterRef<BulkMessageSendEvent>;
|
|
4848
|
-
readonly channel: import("@angular/core").WritableSignal<"
|
|
4913
|
+
readonly channel: import("@angular/core").WritableSignal<"email" | "text">;
|
|
4849
4914
|
private readonly _subject;
|
|
4850
4915
|
private readonly _body;
|
|
4851
4916
|
get subject(): string;
|
|
@@ -4900,7 +4965,7 @@ export declare class ImportSourceGridComponent {
|
|
|
4900
4965
|
/** The `value` of the picked source (highlighted). `tile` only: the `card` appearance does not keep a selection. */
|
|
4901
4966
|
readonly selected: import("@angular/core").InputSignal<string>;
|
|
4902
4967
|
/** `tile`: the compact buttons of the import window. `card`: one `ui-detail-card` per source with its own select button (used on a page). */
|
|
4903
|
-
readonly appearance: import("@angular/core").InputSignal<"
|
|
4968
|
+
readonly appearance: import("@angular/core").InputSignal<"card" | "tile">;
|
|
4904
4969
|
/** `card`: disables every card's button (for example while the page is saving). */
|
|
4905
4970
|
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
4906
4971
|
/** `card`: the text of each card's button. */
|
|
@@ -5097,7 +5162,7 @@ export declare class BankAccountFormComponent implements UiFieldValidity {
|
|
|
5097
5162
|
protected readonly accountError: import("@angular/core").Signal<"" | "Account number must be at least 4 digits.">;
|
|
5098
5163
|
protected readonly confirmError: import("@angular/core").Signal<"" | "Account numbers do not match.">;
|
|
5099
5164
|
/** First reason the form cannot be submitted ('' when it can). */
|
|
5100
|
-
readonly errorMessage: import("@angular/core").Signal<"" | "
|
|
5165
|
+
readonly errorMessage: import("@angular/core").Signal<"" | "Account holder name is required." | "Routing number is required." | "Routing number must be 9 digits." | "Account number is required." | "Account number must be at least 4 digits." | "Confirm account number is required." | "Account numbers do not match." | "Select a valid account type." | "Select a valid holder type." | "You must authorize ACH debits to continue.">;
|
|
5101
5166
|
/** True while the form cannot be submitted (`UiFieldValidity`). */
|
|
5102
5167
|
readonly invalid: import("@angular/core").Signal<boolean>;
|
|
5103
5168
|
/** True when the form can be submitted (ignores `disabled` / `busy`). */
|
|
@@ -5373,7 +5438,7 @@ export declare class TextInputComponent implements ControlValueAccessor, Validat
|
|
|
5373
5438
|
readonly passwordRequirements: import("@angular/core").InputSignal<boolean>;
|
|
5374
5439
|
/** Rules for `passwordRequirements`; default = the library's five rules (8+ characters, upper, lower, digit, special). */
|
|
5375
5440
|
readonly passwordRules: import("@angular/core").InputSignal<readonly PasswordRule[] | undefined>;
|
|
5376
|
-
readonly type: import("@angular/core").InputSignal<"number" | "
|
|
5441
|
+
readonly type: import("@angular/core").InputSignal<"number" | "email" | "text" | "tel" | "password" | "url">;
|
|
5377
5442
|
readonly maxlength: import("@angular/core").InputSignal<number | undefined>;
|
|
5378
5443
|
readonly required: import("@angular/core").InputSignal<boolean>;
|
|
5379
5444
|
readonly autocomplete: import("@angular/core").InputSignal<string>;
|
|
@@ -5382,7 +5447,7 @@ export declare class TextInputComponent implements ControlValueAccessor, Validat
|
|
|
5382
5447
|
* `search`, `text`, `none`). Empty (default) = the browser's default for the field, except `type="tel"`, which keeps `tel`.
|
|
5383
5448
|
* It only picks the keyboard; it does not restrict what can be typed or pasted.
|
|
5384
5449
|
*/
|
|
5385
|
-
readonly inputmode: import("@angular/core").InputSignal<"" | "
|
|
5450
|
+
readonly inputmode: import("@angular/core").InputSignal<"" | "email" | "search" | "none" | "text" | "tel" | "url" | "decimal" | "numeric">;
|
|
5386
5451
|
readonly readonly: import("@angular/core").InputSignal<boolean>;
|
|
5387
5452
|
readonly hint: import("@angular/core").InputSignal<string>;
|
|
5388
5453
|
/** 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. */
|
|
@@ -5454,7 +5519,7 @@ export declare class TextInputComponent implements ControlValueAccessor, Validat
|
|
|
5454
5519
|
protected readonly _stepAttr: import("@angular/core").Signal<string | null>;
|
|
5455
5520
|
protected readonly _revealable: import("@angular/core").Signal<boolean>;
|
|
5456
5521
|
protected readonly _shown: import("@angular/core").WritableSignal<boolean>;
|
|
5457
|
-
protected readonly _inputType: import("@angular/core").Signal<"number" | "
|
|
5522
|
+
protected readonly _inputType: import("@angular/core").Signal<"number" | "email" | "text" | "tel" | "password" | "url">;
|
|
5458
5523
|
protected readonly _eyePath: string;
|
|
5459
5524
|
protected readonly _eyeOffPath: string;
|
|
5460
5525
|
protected readonly _showRequirements: import("@angular/core").Signal<boolean>;
|
|
@@ -5773,7 +5838,7 @@ export declare class TextareaInputComponent implements ControlValueAccessor, Val
|
|
|
5773
5838
|
readonly monospace: import("@angular/core").InputSignal<boolean>;
|
|
5774
5839
|
/** Reveal the built-in error messages now (e.g. after a failed Save click), without waiting for blur. */
|
|
5775
5840
|
readonly showErrors: import("@angular/core").InputSignal<boolean>;
|
|
5776
|
-
|
|
5841
|
+
readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
|
|
5777
5842
|
private readonly _cvaDisabled;
|
|
5778
5843
|
protected readonly disabled: import("@angular/core").Signal<boolean>;
|
|
5779
5844
|
protected readonly _value: import("@angular/core").WritableSignal<string>;
|
|
@@ -6063,7 +6128,7 @@ export declare class FileInputComponent implements ControlValueAccessor, Validat
|
|
|
6063
6128
|
readonly fileRemoved: import("@angular/core").OutputEmitterRef<void>;
|
|
6064
6129
|
/** Emits whenever the field becomes invalid / valid. */
|
|
6065
6130
|
readonly invalidChange: import("@angular/core").OutputEmitterRef<boolean>;
|
|
6066
|
-
|
|
6131
|
+
readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
|
|
6067
6132
|
private readonly _cvaDisabled;
|
|
6068
6133
|
protected readonly disabled: import("@angular/core").Signal<boolean>;
|
|
6069
6134
|
protected readonly _files: import("@angular/core").WritableSignal<File[]>;
|
|
@@ -6369,7 +6434,7 @@ export declare class DatetimeInputComponent implements ControlValueAccessor, Val
|
|
|
6369
6434
|
readonly error: import("@angular/core").InputSignal<string>;
|
|
6370
6435
|
/** Reveal the built-in error messages now (e.g. after a failed Save click), without waiting for blur. */
|
|
6371
6436
|
readonly showErrors: import("@angular/core").InputSignal<boolean>;
|
|
6372
|
-
|
|
6437
|
+
readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
|
|
6373
6438
|
private readonly _cvaDisabled;
|
|
6374
6439
|
protected readonly disabled: import("@angular/core").Signal<boolean>;
|
|
6375
6440
|
protected readonly _value: import("@angular/core").WritableSignal<string>;
|
|
@@ -6645,7 +6710,8 @@ export declare class ComboboxComponent<T = unknown> implements ControlValueAcces
|
|
|
6645
6710
|
readonly invalidChange: import("@angular/core").OutputEmitterRef<boolean>;
|
|
6646
6711
|
readonly focused: import("@angular/core").OutputEmitterRef<void>;
|
|
6647
6712
|
readonly blurred: import("@angular/core").OutputEmitterRef<void>;
|
|
6648
|
-
|
|
6713
|
+
/** Disables the field (`[disabled]="x()"`). Public so templates compile; ngModel / FormControl `disable()` still works (effective disabled = this OR the forms API). */
|
|
6714
|
+
readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
|
|
6649
6715
|
private readonly _cvaDisabled;
|
|
6650
6716
|
protected readonly disabled: import("@angular/core").Signal<boolean>;
|
|
6651
6717
|
private readonly _field;
|
|
@@ -6967,7 +7033,7 @@ export declare class DropdownComponent {
|
|
|
6967
7033
|
readonly loader: import("@angular/core").InputSignal<(() => Promise<DropdownItem[]>) | null>;
|
|
6968
7034
|
readonly active: import("@angular/core").InputSignal<boolean>;
|
|
6969
7035
|
readonly activeValue: import("@angular/core").InputSignal<string>;
|
|
6970
|
-
readonly variant: import("@angular/core").InputSignal<"
|
|
7036
|
+
readonly variant: import("@angular/core").InputSignal<"button" | "badge">;
|
|
6971
7037
|
/** Trigger size for `variant="button"`: `sm` (default, the compact toolbar look) or `md` (same padding and type as a medium `ui-button`). */
|
|
6972
7038
|
readonly size: import("@angular/core").InputSignal<"sm" | "md">;
|
|
6973
7039
|
readonly menuWidth: import("@angular/core").InputSignal<string>;
|
|
@@ -7280,7 +7346,7 @@ export declare class FormSectionComponent {
|
|
|
7280
7346
|
}, {}, never, ["*"], true, never>;
|
|
7281
7347
|
}
|
|
7282
7348
|
export declare class FormRowComponent {
|
|
7283
|
-
readonly cols: import("@angular/core").InputSignal<
|
|
7349
|
+
readonly cols: import("@angular/core").InputSignal<1 | 4 | 2 | 3>;
|
|
7284
7350
|
static ɵfac: i0.ɵɵFactoryDeclaration<FormRowComponent, never>;
|
|
7285
7351
|
static ɵcmp: i0.ɵɵComponentDeclaration<FormRowComponent, "ui-form-row", never, {
|
|
7286
7352
|
"cols": {
|
|
@@ -7297,7 +7363,7 @@ export declare class FormRowComponent {
|
|
|
7297
7363
|
* child simply takes the full width. Keep a numeric span within the row's `cols` (use `all` for the whole row).
|
|
7298
7364
|
*/
|
|
7299
7365
|
export declare class FormColSpanDirective {
|
|
7300
|
-
readonly uiColSpan: import("@angular/core").InputSignal<"" | 2 | 3 | "
|
|
7366
|
+
readonly uiColSpan: import("@angular/core").InputSignal<"" | 2 | 3 | "all" | "2" | "3">;
|
|
7301
7367
|
protected readonly _class: import("@angular/core").Signal<string>;
|
|
7302
7368
|
static ɵfac: i0.ɵɵFactoryDeclaration<FormColSpanDirective, never>;
|
|
7303
7369
|
static ɵdir: i0.ɵɵDirectiveDeclaration<FormColSpanDirective, "[uiColSpan]", never, {
|
|
@@ -8495,9 +8561,9 @@ export declare class ChipGroupComponent {
|
|
|
8495
8561
|
readonly spaceAbove: import("@angular/core").InputSignal<"none" | "sm" | "md">;
|
|
8496
8562
|
/** Space below the chip group. */
|
|
8497
8563
|
readonly spaceBelow: import("@angular/core").InputSignal<"none" | "sm" | "md">;
|
|
8498
|
-
protected readonly _gap: import("@angular/core").Signal<"
|
|
8499
|
-
protected readonly _spaceAbove: import("@angular/core").Signal<"0" | "
|
|
8500
|
-
protected readonly _spaceBelow: import("@angular/core").Signal<"0" | "
|
|
8564
|
+
protected readonly _gap: import("@angular/core").Signal<"6px" | "12px" | "8px">;
|
|
8565
|
+
protected readonly _spaceAbove: import("@angular/core").Signal<"0" | "6px" | "12px">;
|
|
8566
|
+
protected readonly _spaceBelow: import("@angular/core").Signal<"0" | "6px" | "12px">;
|
|
8501
8567
|
static ɵfac: i0.ɵɵFactoryDeclaration<ChipGroupComponent, never>;
|
|
8502
8568
|
static ɵcmp: i0.ɵɵComponentDeclaration<ChipGroupComponent, "ui-chip-group", never, {
|
|
8503
8569
|
"gap": {
|
|
@@ -8881,7 +8947,7 @@ export declare const ICON_NAMES: readonly string[];
|
|
|
8881
8947
|
/** The SVG path (24×24 stroke icon) for an icon key, or undefined when the key is unknown. */
|
|
8882
8948
|
export declare function iconPath(name: string): string | undefined;
|
|
8883
8949
|
/** Keys with an icon of their own (the data-table action keys are accepted too — see `builtInActionIcon`). */
|
|
8884
|
-
export type IconName = 'add' | 'close' | 'check' | 'upload' | 'image' | 'chevron-up' | 'chevron-down' | 'arrow-left' | 'bell' | 'print' | 'lock' | 'shield' | 'arrow-up' | 'arrow-down' | 'arrow-right' | 'document' | 'grip' | 'card' | 'bank' | 'view' | 'view-off' | 'edit' | 'delete' | 'download' | 'duplicate' | 'archive' | 'restore' | 'share' | 'email' | 'message' | 'call' | 'refund' | 'chevron-right' | 'link' | 'save' | 'chart' | 'clipboard' | 'unlink' | 'send' | 'refresh' | 'search' | 'cup' | 'wrench';
|
|
8950
|
+
export type IconName = 'add' | 'close' | 'check' | 'upload' | 'image' | 'chevron-up' | 'chevron-down' | 'arrow-left' | 'bell' | 'print' | 'lock' | 'shield' | 'arrow-up' | 'arrow-down' | 'arrow-right' | 'document' | 'grip' | 'card' | 'bank' | 'view' | 'view-off' | 'edit' | 'delete' | 'download' | 'duplicate' | 'archive' | 'restore' | 'share' | 'email' | 'message' | 'call' | 'refund' | 'chevron-right' | 'link' | 'save' | 'chart' | 'clipboard' | 'unlink' | 'send' | 'refresh' | 'search' | 'cup' | 'wrench' | 'history' | 'move-up' | 'move-down';
|
|
8885
8951
|
/**
|
|
8886
8952
|
* A clickable icon. The host passes a key (`name="delete"`) and the library draws that icon; clicking it emits
|
|
8887
8953
|
* `iconClick`, and the host does the actual work (delete the row, open a panel, …).
|
|
@@ -9020,7 +9086,7 @@ export declare class TimelineComponent {
|
|
|
9020
9086
|
/** Any CSS length (e.g. `600px`). When set, the list scrolls inside a keyboard-focusable region of at most this height. Empty = no wrapper. */
|
|
9021
9087
|
readonly maxHeight: import("@angular/core").InputSignal<string>;
|
|
9022
9088
|
/** `below` (default): the time is under the title / description. `end`: the time sits right-aligned on the title row. */
|
|
9023
|
-
readonly timePosition: import("@angular/core").InputSignal<"
|
|
9089
|
+
readonly timePosition: import("@angular/core").InputSignal<"below" | "end">;
|
|
9024
9090
|
/**
|
|
9025
9091
|
* Group the items under a heading per calendar day of `dateTime` ("Today", "Yesterday", "Oct 3", "Oct 3, 2025"). Default false = no headings,
|
|
9026
9092
|
* 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.
|
|
@@ -9219,7 +9285,7 @@ export declare class AddressInputComponent implements ControlValueAccessor, Vali
|
|
|
9219
9285
|
* the object. `valueChange` always emits the object. A written string is read with `parseAddressValue` for display only: the control keeps
|
|
9220
9286
|
* the original text until the user edits a field (so a text the parser cannot split is not rewritten on load).
|
|
9221
9287
|
*/
|
|
9222
|
-
readonly valueFormat: import("@angular/core").InputSignal<"object" | "
|
|
9288
|
+
readonly valueFormat: import("@angular/core").InputSignal<"object" | "auto" | "text">;
|
|
9223
9289
|
/** ZIP rule; the default is the US 5 digits / 5+4 rule. `null` accepts any non-empty ZIP. The ZIP is validated and stored trimmed. */
|
|
9224
9290
|
readonly zipPattern: import("@angular/core").InputSignal<RegExp | null>;
|
|
9225
9291
|
/** Message shown when the ZIP breaks `zipPattern`. */
|
|
@@ -10142,7 +10208,7 @@ export declare class RichTextEditorComponent implements ControlValueAccessor {
|
|
|
10142
10208
|
readonly maxHeight: import("@angular/core").InputSignal<number>;
|
|
10143
10209
|
/** Toolbar controls to remove. Everything is shown by default. */
|
|
10144
10210
|
readonly hide: import("@angular/core").InputSignal<RichTextOption[]>;
|
|
10145
|
-
|
|
10211
|
+
readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
|
|
10146
10212
|
private readonly _cvaDisabled;
|
|
10147
10213
|
protected readonly disabled: import("@angular/core").Signal<boolean>;
|
|
10148
10214
|
/** Disabled or read-only: the editor is not editable and every toolbar control is disabled. */
|
|
@@ -10403,6 +10469,240 @@ export declare class RadioComponent {
|
|
|
10403
10469
|
"selected": "selected";
|
|
10404
10470
|
}, never, ["*"], true, never>;
|
|
10405
10471
|
}
|
|
10472
|
+
export interface SwatchOption {
|
|
10473
|
+
value: string;
|
|
10474
|
+
/** Accessible name and tooltip of the swatch (e.g. "Ocean blue"). */
|
|
10475
|
+
label: string;
|
|
10476
|
+
/** Any CSS colour (`#2563eb`, `rgb(...)`, `var(--x)`). */
|
|
10477
|
+
color: string;
|
|
10478
|
+
disabled?: boolean;
|
|
10479
|
+
/** `data-testid` of this option's native radio input; none when omitted. */
|
|
10480
|
+
testId?: string;
|
|
10481
|
+
}
|
|
10482
|
+
/**
|
|
10483
|
+
* (library source 2026-11-05, not yet published) Colour swatch picker: a `<fieldset role="radiogroup">` of native radio inputs
|
|
10484
|
+
* (arrow keys move + select natively, Home / End jump to the first / last enabled swatch), ControlValueAccessor with a string value
|
|
10485
|
+
* (`''` = nothing selected). The selected swatch shows a check mark and a ring (never colour alone); every swatch is named by its `label`
|
|
10486
|
+
* (accessible name + `title` tooltip). Built-in validation like `ui-radio-group`: `required` -> "<label> is required."; a value that is not one
|
|
10487
|
+
* of the `options` -> "Select a valid option." (not checked while `options` is empty); a disabled picker is never invalid.
|
|
10488
|
+
* `disabled` combines with the forms API (`setDisabledState`). 44px touch targets on touch devices and phones; the swatches wrap.
|
|
10489
|
+
*/
|
|
10490
|
+
export declare class SwatchPickerComponent implements ControlValueAccessor, Validator, UiFieldValidity {
|
|
10491
|
+
private readonly _el;
|
|
10492
|
+
readonly label: import("@angular/core").InputSignal<string>;
|
|
10493
|
+
readonly options: import("@angular/core").InputSignal<SwatchOption[]>;
|
|
10494
|
+
readonly required: import("@angular/core").InputSignal<boolean>;
|
|
10495
|
+
readonly hint: import("@angular/core").InputSignal<string>;
|
|
10496
|
+
readonly error: import("@angular/core").InputSignal<string>;
|
|
10497
|
+
/** Reveal the built-in error messages now (e.g. after a failed Save click), without waiting for blur. */
|
|
10498
|
+
readonly showErrors: import("@angular/core").InputSignal<boolean>;
|
|
10499
|
+
/** Fixed number of swatches per row (0 = wrap freely, the default). On a phone the row wraps by width instead. */
|
|
10500
|
+
readonly columns: import("@angular/core").InputSignal<number>;
|
|
10501
|
+
/** Native `name` shared by the radios; a unique one is generated when omitted. */
|
|
10502
|
+
readonly name: import("@angular/core").InputSignal<string>;
|
|
10503
|
+
readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
|
|
10504
|
+
private readonly _cvaDisabled;
|
|
10505
|
+
protected readonly disabled: import("@angular/core").Signal<boolean>;
|
|
10506
|
+
private readonly _generatedName;
|
|
10507
|
+
protected get _name(): string;
|
|
10508
|
+
protected readonly _descId: string;
|
|
10509
|
+
protected readonly _value: import("@angular/core").WritableSignal<string>;
|
|
10510
|
+
private readonly _reveal;
|
|
10511
|
+
private readonly _issue;
|
|
10512
|
+
readonly invalid: import("@angular/core").Signal<boolean>;
|
|
10513
|
+
readonly errorMessage: import("@angular/core").Signal<string>;
|
|
10514
|
+
readonly invalidChange: import("@angular/core").OutputEmitterRef<boolean>;
|
|
10515
|
+
/** Emits the chosen value on a user pick. */
|
|
10516
|
+
readonly valueChange: import("@angular/core").OutputEmitterRef<string>;
|
|
10517
|
+
protected readonly _activeError: import("@angular/core").Signal<string>;
|
|
10518
|
+
private _onValidatorChange;
|
|
10519
|
+
constructor();
|
|
10520
|
+
ngOnChanges(): void;
|
|
10521
|
+
validate(control: AbstractControl): ValidationErrors | null;
|
|
10522
|
+
registerOnValidatorChange(fn: () => void): void;
|
|
10523
|
+
private _onChange;
|
|
10524
|
+
private _onTouched;
|
|
10525
|
+
writeValue(val: string): void;
|
|
10526
|
+
registerOnChange(fn: (v: string) => void): void;
|
|
10527
|
+
registerOnTouched(fn: () => void): void;
|
|
10528
|
+
setDisabledState(d: boolean): void;
|
|
10529
|
+
protected onSelect(value: string): void;
|
|
10530
|
+
/** Home / End select the first / last enabled swatch (arrow keys are native radio behaviour). */
|
|
10531
|
+
protected onKeydown(e: KeyboardEvent): void;
|
|
10532
|
+
/** Touched once focus leaves the whole group. */
|
|
10533
|
+
protected onFocusOut(event: FocusEvent): void;
|
|
10534
|
+
private _check;
|
|
10535
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SwatchPickerComponent, never>;
|
|
10536
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SwatchPickerComponent, "ui-swatch-picker", never, {
|
|
10537
|
+
"label": {
|
|
10538
|
+
"alias": "label";
|
|
10539
|
+
"required": false;
|
|
10540
|
+
"isSignal": true;
|
|
10541
|
+
};
|
|
10542
|
+
"options": {
|
|
10543
|
+
"alias": "options";
|
|
10544
|
+
"required": false;
|
|
10545
|
+
"isSignal": true;
|
|
10546
|
+
};
|
|
10547
|
+
"required": {
|
|
10548
|
+
"alias": "required";
|
|
10549
|
+
"required": false;
|
|
10550
|
+
"isSignal": true;
|
|
10551
|
+
};
|
|
10552
|
+
"hint": {
|
|
10553
|
+
"alias": "hint";
|
|
10554
|
+
"required": false;
|
|
10555
|
+
"isSignal": true;
|
|
10556
|
+
};
|
|
10557
|
+
"error": {
|
|
10558
|
+
"alias": "error";
|
|
10559
|
+
"required": false;
|
|
10560
|
+
"isSignal": true;
|
|
10561
|
+
};
|
|
10562
|
+
"showErrors": {
|
|
10563
|
+
"alias": "showErrors";
|
|
10564
|
+
"required": false;
|
|
10565
|
+
"isSignal": true;
|
|
10566
|
+
};
|
|
10567
|
+
"columns": {
|
|
10568
|
+
"alias": "columns";
|
|
10569
|
+
"required": false;
|
|
10570
|
+
"isSignal": true;
|
|
10571
|
+
};
|
|
10572
|
+
"name": {
|
|
10573
|
+
"alias": "name";
|
|
10574
|
+
"required": false;
|
|
10575
|
+
"isSignal": true;
|
|
10576
|
+
};
|
|
10577
|
+
"_disabledInput": {
|
|
10578
|
+
"alias": "disabled";
|
|
10579
|
+
"required": false;
|
|
10580
|
+
"isSignal": true;
|
|
10581
|
+
};
|
|
10582
|
+
}, {
|
|
10583
|
+
"invalidChange": "invalidChange";
|
|
10584
|
+
"valueChange": "valueChange";
|
|
10585
|
+
}, never, never, true, never>;
|
|
10586
|
+
}
|
|
10587
|
+
export interface IconPickerOption {
|
|
10588
|
+
value: string;
|
|
10589
|
+
/** Accessible name and tooltip of the icon (e.g. "Wrench"). */
|
|
10590
|
+
label: string;
|
|
10591
|
+
/** Key of a library icon (`<ui-icon>` / action key such as `wrench`, `history`). Defaults to `value` when neither `iconKey` nor `path` is given. */
|
|
10592
|
+
iconKey?: string;
|
|
10593
|
+
/** Raw SVG path (`d` value, 24x24 stroke icon); wins over `iconKey`. */
|
|
10594
|
+
path?: string;
|
|
10595
|
+
disabled?: boolean;
|
|
10596
|
+
/** `data-testid` of this option's native radio input; none when omitted. */
|
|
10597
|
+
testId?: string;
|
|
10598
|
+
}
|
|
10599
|
+
/**
|
|
10600
|
+
* (library source 2026-11-05, not yet published) Icon picker: a `<fieldset role="radiogroup">` of native radio inputs
|
|
10601
|
+
* (arrow keys move + select natively, Home / End jump to the first / last enabled icon), ControlValueAccessor with a string value
|
|
10602
|
+
* (`''` = nothing selected). The selected icon is inverted and shows a check mark (never colour alone); every icon is named by its `label`
|
|
10603
|
+
* (accessible name + `title` tooltip). Built-in validation like `ui-radio-group`: `required` -> "<label> is required."; a value that is not one
|
|
10604
|
+
* of the `options` -> "Select a valid option." (not checked while `options` is empty); a disabled picker is never invalid.
|
|
10605
|
+
* `disabled` combines with the forms API (`setDisabledState`). 44px touch targets on touch devices and phones; the icons wrap.
|
|
10606
|
+
*/
|
|
10607
|
+
export declare class IconPickerComponent implements ControlValueAccessor, Validator, UiFieldValidity {
|
|
10608
|
+
private readonly _el;
|
|
10609
|
+
readonly label: import("@angular/core").InputSignal<string>;
|
|
10610
|
+
readonly options: import("@angular/core").InputSignal<IconPickerOption[]>;
|
|
10611
|
+
readonly required: import("@angular/core").InputSignal<boolean>;
|
|
10612
|
+
readonly hint: import("@angular/core").InputSignal<string>;
|
|
10613
|
+
readonly error: import("@angular/core").InputSignal<string>;
|
|
10614
|
+
/** Reveal the built-in error messages now (e.g. after a failed Save click), without waiting for blur. */
|
|
10615
|
+
readonly showErrors: import("@angular/core").InputSignal<boolean>;
|
|
10616
|
+
/** SVG path drawn for an option: its `path`, else the library icon `iconKey` (default: the option's `value`); '' when unknown. */
|
|
10617
|
+
protected _path(o: IconPickerOption): string;
|
|
10618
|
+
/** Fixed number of icons per row (0 = wrap freely, the default). On a phone the row wraps by width instead. */
|
|
10619
|
+
readonly columns: import("@angular/core").InputSignal<number>;
|
|
10620
|
+
/** Native `name` shared by the radios; a unique one is generated when omitted. */
|
|
10621
|
+
readonly name: import("@angular/core").InputSignal<string>;
|
|
10622
|
+
readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
|
|
10623
|
+
private readonly _cvaDisabled;
|
|
10624
|
+
protected readonly disabled: import("@angular/core").Signal<boolean>;
|
|
10625
|
+
private readonly _generatedName;
|
|
10626
|
+
protected get _name(): string;
|
|
10627
|
+
protected readonly _descId: string;
|
|
10628
|
+
protected readonly _value: import("@angular/core").WritableSignal<string>;
|
|
10629
|
+
private readonly _reveal;
|
|
10630
|
+
private readonly _issue;
|
|
10631
|
+
readonly invalid: import("@angular/core").Signal<boolean>;
|
|
10632
|
+
readonly errorMessage: import("@angular/core").Signal<string>;
|
|
10633
|
+
readonly invalidChange: import("@angular/core").OutputEmitterRef<boolean>;
|
|
10634
|
+
/** Emits the chosen value on a user pick. */
|
|
10635
|
+
readonly valueChange: import("@angular/core").OutputEmitterRef<string>;
|
|
10636
|
+
protected readonly _activeError: import("@angular/core").Signal<string>;
|
|
10637
|
+
private _onValidatorChange;
|
|
10638
|
+
constructor();
|
|
10639
|
+
ngOnChanges(): void;
|
|
10640
|
+
validate(control: AbstractControl): ValidationErrors | null;
|
|
10641
|
+
registerOnValidatorChange(fn: () => void): void;
|
|
10642
|
+
private _onChange;
|
|
10643
|
+
private _onTouched;
|
|
10644
|
+
writeValue(val: string): void;
|
|
10645
|
+
registerOnChange(fn: (v: string) => void): void;
|
|
10646
|
+
registerOnTouched(fn: () => void): void;
|
|
10647
|
+
setDisabledState(d: boolean): void;
|
|
10648
|
+
protected onSelect(value: string): void;
|
|
10649
|
+
/** Home / End select the first / last enabled icon (arrow keys are native radio behaviour). */
|
|
10650
|
+
protected onKeydown(e: KeyboardEvent): void;
|
|
10651
|
+
/** Touched once focus leaves the whole group. */
|
|
10652
|
+
protected onFocusOut(event: FocusEvent): void;
|
|
10653
|
+
private _check;
|
|
10654
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<IconPickerComponent, never>;
|
|
10655
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<IconPickerComponent, "ui-icon-picker", never, {
|
|
10656
|
+
"label": {
|
|
10657
|
+
"alias": "label";
|
|
10658
|
+
"required": false;
|
|
10659
|
+
"isSignal": true;
|
|
10660
|
+
};
|
|
10661
|
+
"options": {
|
|
10662
|
+
"alias": "options";
|
|
10663
|
+
"required": false;
|
|
10664
|
+
"isSignal": true;
|
|
10665
|
+
};
|
|
10666
|
+
"required": {
|
|
10667
|
+
"alias": "required";
|
|
10668
|
+
"required": false;
|
|
10669
|
+
"isSignal": true;
|
|
10670
|
+
};
|
|
10671
|
+
"hint": {
|
|
10672
|
+
"alias": "hint";
|
|
10673
|
+
"required": false;
|
|
10674
|
+
"isSignal": true;
|
|
10675
|
+
};
|
|
10676
|
+
"error": {
|
|
10677
|
+
"alias": "error";
|
|
10678
|
+
"required": false;
|
|
10679
|
+
"isSignal": true;
|
|
10680
|
+
};
|
|
10681
|
+
"showErrors": {
|
|
10682
|
+
"alias": "showErrors";
|
|
10683
|
+
"required": false;
|
|
10684
|
+
"isSignal": true;
|
|
10685
|
+
};
|
|
10686
|
+
"columns": {
|
|
10687
|
+
"alias": "columns";
|
|
10688
|
+
"required": false;
|
|
10689
|
+
"isSignal": true;
|
|
10690
|
+
};
|
|
10691
|
+
"name": {
|
|
10692
|
+
"alias": "name";
|
|
10693
|
+
"required": false;
|
|
10694
|
+
"isSignal": true;
|
|
10695
|
+
};
|
|
10696
|
+
"_disabledInput": {
|
|
10697
|
+
"alias": "disabled";
|
|
10698
|
+
"required": false;
|
|
10699
|
+
"isSignal": true;
|
|
10700
|
+
};
|
|
10701
|
+
}, {
|
|
10702
|
+
"invalidChange": "invalidChange";
|
|
10703
|
+
"valueChange": "valueChange";
|
|
10704
|
+
}, never, never, true, never>;
|
|
10705
|
+
}
|
|
10406
10706
|
/**
|
|
10407
10707
|
* Content shown directly under ONE option of a `ui-radio-group`, only while that option is selected (e.g. an address form under
|
|
10408
10708
|
* "Ship to an alternate address"). Put an `<ng-template>` inside the group and name the option's value:
|
|
@@ -10465,7 +10765,7 @@ export declare class RadioMatrixComponent implements ControlValueAccessor, Valid
|
|
|
10465
10765
|
readonly showErrors: import("@angular/core").InputSignal<boolean>;
|
|
10466
10766
|
/** Prefix of the native radio `name`s (one name per row); a unique one is generated when omitted. */
|
|
10467
10767
|
readonly name: import("@angular/core").InputSignal<string>;
|
|
10468
|
-
|
|
10768
|
+
readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
|
|
10469
10769
|
private readonly _cvaDisabled;
|
|
10470
10770
|
protected readonly disabled: import("@angular/core").Signal<boolean>;
|
|
10471
10771
|
private readonly _generatedName;
|
|
@@ -10904,7 +11204,7 @@ export declare class DetailCardComponent {
|
|
|
10904
11204
|
/** true (default) = the title is displayed in capitals (CSS only); false = shown as written. The text, aria-label and heading name are never changed. */
|
|
10905
11205
|
readonly uppercaseTitle: import("@angular/core").InputSignal<boolean>;
|
|
10906
11206
|
/** 1-6 makes the title a real heading for screen readers (role=heading, aria-level); null keeps it plain text. */
|
|
10907
|
-
readonly headingLevel: import("@angular/core").InputSignal<
|
|
11207
|
+
readonly headingLevel: import("@angular/core").InputSignal<1 | 4 | 2 | 3 | 5 | 6 | null>;
|
|
10908
11208
|
/** Optional id for the title text; the card is then labelled by it. Without it the title is the card's aria-label. */
|
|
10909
11209
|
readonly titleId: import("@angular/core").InputSignal<string>;
|
|
10910
11210
|
/** Accessible name of the card when the header gives none (no header, or no title). A visible title wins; blank = no name. */
|
|
@@ -10918,7 +11218,7 @@ export declare class DetailCardComponent {
|
|
|
10918
11218
|
/** Background colour of the footer bar (the `[card-footer]` slot) as any CSS colour. Empty = no colour of its own. */
|
|
10919
11219
|
readonly footerBackground: import("@angular/core").InputSignal<string>;
|
|
10920
11220
|
/** Alignment of the `[card-footer]` content: `'start'` (default, unchanged) or `'end'` = a right-aligned action row with an 8px gap. */
|
|
10921
|
-
readonly footerAlign: import("@angular/core").InputSignal<"
|
|
11221
|
+
readonly footerAlign: import("@angular/core").InputSignal<"start" | "end">;
|
|
10922
11222
|
/** Text colour as any CSS colour (`#fff`, `var(--on-dark)` …). Empty = the default colours. Colours the title, subtitle, chevron and body text. */
|
|
10923
11223
|
readonly textColor: import("@angular/core").InputSignal<string>;
|
|
10924
11224
|
/** false = no header at all (no title, edit button, toggle or divider): the card is only the body, always open. */
|
|
@@ -11547,7 +11847,7 @@ export declare class ColorInputComponent implements ControlValueAccessor, Valida
|
|
|
11547
11847
|
readonly presets: import("@angular/core").InputSignal<ColorPreset[]>;
|
|
11548
11848
|
/** Emits whenever the field becomes invalid / valid. */
|
|
11549
11849
|
readonly invalidChange: import("@angular/core").OutputEmitterRef<boolean>;
|
|
11550
|
-
|
|
11850
|
+
readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
|
|
11551
11851
|
private readonly _cvaDisabled;
|
|
11552
11852
|
protected readonly disabled: import("@angular/core").Signal<boolean>;
|
|
11553
11853
|
/** Current model value (what the form control holds). */
|
|
@@ -13521,7 +13821,7 @@ export declare class SetupWizardComponent {
|
|
|
13521
13821
|
protected customHintId(): string;
|
|
13522
13822
|
protected readonly importBlocked: import("@angular/core").Signal<boolean>;
|
|
13523
13823
|
/** 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). */
|
|
13524
|
-
protected readonly splitTab: import("@angular/core").WritableSignal<"
|
|
13824
|
+
protected readonly splitTab: import("@angular/core").WritableSignal<"main" | "extra">;
|
|
13525
13825
|
protected readonly splitTabs: import("@angular/core").Signal<{
|
|
13526
13826
|
key: string;
|
|
13527
13827
|
label: string;
|
|
@@ -15688,7 +15988,7 @@ export declare class PaymentSidePanelComponent {
|
|
|
15688
15988
|
private readonly terminalAvailable;
|
|
15689
15989
|
/** value -> label of every live method the rendered plugins contribute (the first plugin wins a duplicate value). */
|
|
15690
15990
|
private readonly liveMethods;
|
|
15691
|
-
protected readonly kind: import("@angular/core").Signal<"none" | "
|
|
15991
|
+
protected readonly kind: import("@angular/core").Signal<"none" | "live" | "terminal" | "manual">;
|
|
15692
15992
|
private kindOf;
|
|
15693
15993
|
/** The method list as shown: record-only built-ins (a plugin takes over its own values), plugin extras, and only manual ones while a split is being built. */
|
|
15694
15994
|
readonly methodList: import("@angular/core").Signal<PaymentMethodOption[]>;
|