@forgeroute/ui 0.4.73 → 0.4.75
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 +1766 -285
- 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 +482 -36
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; colorName?: string }[]. `colorName` is the colour (or state) in words, e.g. 'red' or 'error': it is read by screen readers after the tag name (hidden visually) so the colour is never the only signal; omit it and nothing changes. `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
|
/**
|
|
@@ -1153,7 +1170,7 @@ export declare class SelectComponent implements ControlValueAccessor, Validator,
|
|
|
1153
1170
|
readonly error: import("@angular/core").InputSignal<string>;
|
|
1154
1171
|
/** Reveal the built-in error messages now (e.g. after a failed Save click), without waiting for blur. */
|
|
1155
1172
|
readonly showErrors: import("@angular/core").InputSignal<boolean>;
|
|
1156
|
-
readonly size: import("@angular/core").InputSignal<"
|
|
1173
|
+
readonly size: import("@angular/core").InputSignal<"default" | "sm">;
|
|
1157
1174
|
readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
|
|
1158
1175
|
private readonly _cvaDisabled;
|
|
1159
1176
|
protected readonly disabled: import("@angular/core").Signal<boolean>;
|
|
@@ -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
|
|
@@ -2257,7 +2283,7 @@ export declare class SidePanelComponent implements OnDestroy {
|
|
|
2257
2283
|
readonly cancelLabel: import("@angular/core").InputSignal<string>;
|
|
2258
2284
|
/** Right-aligned primary action button label. Empty string = hidden. */
|
|
2259
2285
|
readonly primaryLabel: import("@angular/core").InputSignal<string>;
|
|
2260
|
-
readonly primaryVariant: import("@angular/core").InputSignal<"
|
|
2286
|
+
readonly primaryVariant: import("@angular/core").InputSignal<"warning" | "danger" | "primary">;
|
|
2261
2287
|
readonly primaryLoading: import("@angular/core").InputSignal<boolean>;
|
|
2262
2288
|
readonly primaryDisabled: import("@angular/core").InputSignal<boolean>;
|
|
2263
2289
|
/** `data-testid` of the Cancel button; none when empty (default). */
|
|
@@ -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
|
|
@@ -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 | 2 | 3 | 4 | 5 | 6 | null>;
|
|
3220
3246
|
readonly indeterminate: import("@angular/core").InputSignal<boolean>;
|
|
3221
3247
|
readonly checked: import("@angular/core").ModelSignal<boolean>;
|
|
3222
3248
|
/**
|
|
@@ -3972,7 +3998,7 @@ export declare class RadioGroupComponent implements ControlValueAccessor, Valida
|
|
|
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;
|
|
@@ -4255,7 +4281,7 @@ export declare class ButtonComponent {
|
|
|
4255
4281
|
* `ghost-start`: a ghost button for list / section toggles - a full-width row with its content aligned to the start, transparent
|
|
4256
4282
|
* background, hover tint and the normal focus ring. Pair it with `ariaExpanded` / `ariaPressed`; the label may contain a heading element.
|
|
4257
4283
|
*/
|
|
4258
|
-
readonly variant: import("@angular/core").InputSignal<"link" | "
|
|
4284
|
+
readonly variant: import("@angular/core").InputSignal<"link" | "icon" | "warning" | "danger" | "primary" | "secondary" | "ghost" | "ghost-start" | "tab" | "icon-danger">;
|
|
4259
4285
|
/** 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`). */
|
|
4260
4286
|
readonly routerLink: import("@angular/core").InputSignal<string | readonly unknown[] | null>;
|
|
4261
4287
|
/** Query params of the `routerLink` (e.g. `{ section: 'deal-defaults' }`). */
|
|
@@ -4276,7 +4302,7 @@ export declare class ButtonComponent {
|
|
|
4276
4302
|
*/
|
|
4277
4303
|
readonly href: import("@angular/core").InputSignal<string | null>;
|
|
4278
4304
|
/** Where to open the `href` (`_blank` = a new tab). */
|
|
4279
|
-
readonly target: import("@angular/core").InputSignal<"
|
|
4305
|
+
readonly target: import("@angular/core").InputSignal<"_self" | "_blank" | "_parent" | "_top" | null>;
|
|
4280
4306
|
/** `rel` of the `href` link. A `_blank` target always gets `noopener noreferrer` added. */
|
|
4281
4307
|
readonly rel: import("@angular/core").InputSignal<string | null>;
|
|
4282
4308
|
/** The href when it is allowed (http, https, mailto, tel, sms or a relative URL), else null. */
|
|
@@ -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">,
|
|
@@ -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<"" | "none" | "
|
|
5450
|
+
readonly inputmode: import("@angular/core").InputSignal<"" | "none" | "email" | "search" | "text" | "numeric" | "tel" | "url" | "decimal">;
|
|
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>;
|
|
@@ -6026,6 +6091,14 @@ export declare class FileInputComponent implements ControlValueAccessor, Validat
|
|
|
6026
6091
|
* Default `false`: nothing is toasted (the field message and `(fileRejected)` are unchanged). Needs a `ui-toast` outlet like any toast.
|
|
6027
6092
|
*/
|
|
6028
6093
|
readonly toastOnReject: import("@angular/core").InputSignal<boolean>;
|
|
6094
|
+
/**
|
|
6095
|
+
* When several files are refused in one pick or drop, show EVERY one inside the field as a list (each line
|
|
6096
|
+
* `"name" was not added. <reason>`) instead of only the first refusal message. No toast is raised. The same list is available to the
|
|
6097
|
+
* host through `rejections` and `(filesRejected)`. Default `false`: the field shows the first refusal message only (unchanged).
|
|
6098
|
+
*/
|
|
6099
|
+
readonly listRejections: import("@angular/core").InputSignal<boolean>;
|
|
6100
|
+
/** Id(s) of host elements that describe the picker (space-separated), added after the field's own error text, like `ui-text-input`'s `ariaDescribedBy`. Empty: nothing is added. */
|
|
6101
|
+
readonly ariaDescribedBy: import("@angular/core").InputSignal<string>;
|
|
6029
6102
|
/** Show a Remove button next to the chosen file. */
|
|
6030
6103
|
readonly clearable: import("@angular/core").InputSignal<boolean>;
|
|
6031
6104
|
readonly removeLabel: import("@angular/core").InputSignal<string>;
|
|
@@ -6059,11 +6132,13 @@ export declare class FileInputComponent implements ControlValueAccessor, Validat
|
|
|
6059
6132
|
readonly filesSelected: import("@angular/core").OutputEmitterRef<File[]>;
|
|
6060
6133
|
/** A picked or dropped file was refused (wrong type or too big). */
|
|
6061
6134
|
readonly fileRejected: import("@angular/core").OutputEmitterRef<FileRejection>;
|
|
6135
|
+
/** Every file refused by ONE pick or drop, in one event (fires only when at least one file was refused; `(fileRejected)` still fires per file). */
|
|
6136
|
+
readonly filesRejected: import("@angular/core").OutputEmitterRef<FileRejection[]>;
|
|
6062
6137
|
/** The Remove button cleared the selection. */
|
|
6063
6138
|
readonly fileRemoved: import("@angular/core").OutputEmitterRef<void>;
|
|
6064
6139
|
/** Emits whenever the field becomes invalid / valid. */
|
|
6065
6140
|
readonly invalidChange: import("@angular/core").OutputEmitterRef<boolean>;
|
|
6066
|
-
|
|
6141
|
+
readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
|
|
6067
6142
|
private readonly _cvaDisabled;
|
|
6068
6143
|
protected readonly disabled: import("@angular/core").Signal<boolean>;
|
|
6069
6144
|
protected readonly _files: import("@angular/core").WritableSignal<File[]>;
|
|
@@ -6073,6 +6148,15 @@ export declare class FileInputComponent implements ControlValueAccessor, Validat
|
|
|
6073
6148
|
/** Message of the last refused file ('' when the last pick was fine); shown in every mode. */
|
|
6074
6149
|
private readonly _toast;
|
|
6075
6150
|
private readonly _rejection;
|
|
6151
|
+
/** `aria-describedby` of the native input and the drop zone: the shown error text, then the host's ids. Absent when neither exists. */
|
|
6152
|
+
protected readonly _describedBy: import("@angular/core").Signal<string | null>;
|
|
6153
|
+
private readonly _rejected;
|
|
6154
|
+
/** The files refused by the last pick or drop (empty when the last pick was fine, after Remove / clear, and when files are set from the form). */
|
|
6155
|
+
readonly rejections: import("@angular/core").Signal<FileRejection[]>;
|
|
6156
|
+
/** One line per refused file: `"name" was not added. <reason>`. */
|
|
6157
|
+
readonly rejectionLines: import("@angular/core").Signal<string[]>;
|
|
6158
|
+
/** The list replaces the single message only while it is the refusal that is shown (a host `[error]` on a visible field wins). */
|
|
6159
|
+
protected readonly _showRejectList: import("@angular/core").Signal<boolean>;
|
|
6076
6160
|
private readonly _reveal;
|
|
6077
6161
|
private readonly _issue;
|
|
6078
6162
|
/** True while a required field is empty, the last pick was refused, or the host passed an `[error]`. */
|
|
@@ -6109,6 +6193,8 @@ export declare class FileInputComponent implements ControlValueAccessor, Validat
|
|
|
6109
6193
|
protected onDragOver(event: DragEvent): void;
|
|
6110
6194
|
protected onDragLeave(event: DragEvent): void;
|
|
6111
6195
|
protected onDrop(event: DragEvent): void;
|
|
6196
|
+
/** Keeps the first-message string (the `invalid` state) and the full list in step. */
|
|
6197
|
+
private setRejections;
|
|
6112
6198
|
private rejectionFor;
|
|
6113
6199
|
/** Applies picked / dropped files: refused ones raise the message and `fileRejected`, accepted ones become the value. */
|
|
6114
6200
|
private accept$;
|
|
@@ -6174,6 +6260,16 @@ export declare class FileInputComponent implements ControlValueAccessor, Validat
|
|
|
6174
6260
|
"required": false;
|
|
6175
6261
|
"isSignal": true;
|
|
6176
6262
|
};
|
|
6263
|
+
"listRejections": {
|
|
6264
|
+
"alias": "listRejections";
|
|
6265
|
+
"required": false;
|
|
6266
|
+
"isSignal": true;
|
|
6267
|
+
};
|
|
6268
|
+
"ariaDescribedBy": {
|
|
6269
|
+
"alias": "ariaDescribedBy";
|
|
6270
|
+
"required": false;
|
|
6271
|
+
"isSignal": true;
|
|
6272
|
+
};
|
|
6177
6273
|
"clearable": {
|
|
6178
6274
|
"alias": "clearable";
|
|
6179
6275
|
"required": false;
|
|
@@ -6257,10 +6353,125 @@ export declare class FileInputComponent implements ControlValueAccessor, Validat
|
|
|
6257
6353
|
}, {
|
|
6258
6354
|
"filesSelected": "filesSelected";
|
|
6259
6355
|
"fileRejected": "fileRejected";
|
|
6356
|
+
"filesRejected": "filesRejected";
|
|
6260
6357
|
"fileRemoved": "fileRemoved";
|
|
6261
6358
|
"invalidChange": "invalidChange";
|
|
6262
6359
|
}, never, never, true, never>;
|
|
6263
6360
|
}
|
|
6361
|
+
/**
|
|
6362
|
+
* A read-only text field with a Copy button (a feed address, an API URL, an invite link).
|
|
6363
|
+
*
|
|
6364
|
+
* <ui-copy-field label="Feed address" [value]="feedUrl()" (copied)="toast.success('Address copied')" />
|
|
6365
|
+
*
|
|
6366
|
+
* The button copies `value` with the Clipboard API; where that is missing or refused (older Safari / Firefox settings, an insecure page) it
|
|
6367
|
+
* selects the text and uses `document.execCommand('copy')`. If that fails too, the text stays selected and a status line asks the user to
|
|
6368
|
+
* press Ctrl/Cmd + C, and `(copyFailed)` is emitted. A polite live region announces the result. The button's accessible name contains its
|
|
6369
|
+
* visible text (WCAG 2.5.3). The field shows the full value (it scrolls inside the field); it never changes `value`.
|
|
6370
|
+
*/
|
|
6371
|
+
export declare class CopyFieldComponent implements OnDestroy {
|
|
6372
|
+
/** The text shown and copied. */
|
|
6373
|
+
readonly value: import("@angular/core").InputSignal<string>;
|
|
6374
|
+
readonly label: import("@angular/core").InputSignal<string>;
|
|
6375
|
+
/** Visible button text (default "Copy"). */
|
|
6376
|
+
readonly copyLabel: import("@angular/core").InputSignal<string>;
|
|
6377
|
+
/** Visible button text for 2 seconds after a successful copy (default "Copied"). */
|
|
6378
|
+
readonly copiedLabel: import("@angular/core").InputSignal<string>;
|
|
6379
|
+
/** Accessible name of the button; default `<copyLabel> <label>`. Keep the visible text inside it. */
|
|
6380
|
+
readonly buttonAriaLabel: import("@angular/core").InputSignal<string>;
|
|
6381
|
+
/** Announced after a successful copy (default "Copied to clipboard"). */
|
|
6382
|
+
readonly copiedMessage: import("@angular/core").InputSignal<string>;
|
|
6383
|
+
/** Shown and announced when copying was refused (default asks for Ctrl/Cmd + C). */
|
|
6384
|
+
readonly failedMessage: import("@angular/core").InputSignal<string>;
|
|
6385
|
+
readonly hint: import("@angular/core").InputSignal<string>;
|
|
6386
|
+
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
6387
|
+
/** Id(s) of host elements that also describe the field (space-separated). */
|
|
6388
|
+
readonly ariaDescribedBy: import("@angular/core").InputSignal<string>;
|
|
6389
|
+
readonly inputTestId: import("@angular/core").InputSignal<string>;
|
|
6390
|
+
readonly buttonTestId: import("@angular/core").InputSignal<string>;
|
|
6391
|
+
/** The text was copied. */
|
|
6392
|
+
readonly copied: import("@angular/core").OutputEmitterRef<string>;
|
|
6393
|
+
/** Neither the Clipboard API nor the fallback could copy. */
|
|
6394
|
+
readonly copyFailed: import("@angular/core").OutputEmitterRef<void>;
|
|
6395
|
+
protected readonly _id: string;
|
|
6396
|
+
protected readonly _state: import("@angular/core").WritableSignal<"idle" | "copied" | "failed">;
|
|
6397
|
+
protected readonly _announcement: import("@angular/core").Signal<string>;
|
|
6398
|
+
protected readonly _buttonName: import("@angular/core").Signal<string>;
|
|
6399
|
+
protected readonly _describedBy: import("@angular/core").Signal<string | null>;
|
|
6400
|
+
private readonly fieldEl;
|
|
6401
|
+
private _timer;
|
|
6402
|
+
ngOnDestroy(): void;
|
|
6403
|
+
/** Selects the whole text (also done on focus, so a manual copy is one keystroke away). */
|
|
6404
|
+
selectAll(): void;
|
|
6405
|
+
/** Copies `value`; the button calls this. Resolves to true when the text reached the clipboard. */
|
|
6406
|
+
copy(): Promise<boolean>;
|
|
6407
|
+
private legacyCopy;
|
|
6408
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CopyFieldComponent, never>;
|
|
6409
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CopyFieldComponent, "ui-copy-field", never, {
|
|
6410
|
+
"value": {
|
|
6411
|
+
"alias": "value";
|
|
6412
|
+
"required": false;
|
|
6413
|
+
"isSignal": true;
|
|
6414
|
+
};
|
|
6415
|
+
"label": {
|
|
6416
|
+
"alias": "label";
|
|
6417
|
+
"required": false;
|
|
6418
|
+
"isSignal": true;
|
|
6419
|
+
};
|
|
6420
|
+
"copyLabel": {
|
|
6421
|
+
"alias": "copyLabel";
|
|
6422
|
+
"required": false;
|
|
6423
|
+
"isSignal": true;
|
|
6424
|
+
};
|
|
6425
|
+
"copiedLabel": {
|
|
6426
|
+
"alias": "copiedLabel";
|
|
6427
|
+
"required": false;
|
|
6428
|
+
"isSignal": true;
|
|
6429
|
+
};
|
|
6430
|
+
"buttonAriaLabel": {
|
|
6431
|
+
"alias": "buttonAriaLabel";
|
|
6432
|
+
"required": false;
|
|
6433
|
+
"isSignal": true;
|
|
6434
|
+
};
|
|
6435
|
+
"copiedMessage": {
|
|
6436
|
+
"alias": "copiedMessage";
|
|
6437
|
+
"required": false;
|
|
6438
|
+
"isSignal": true;
|
|
6439
|
+
};
|
|
6440
|
+
"failedMessage": {
|
|
6441
|
+
"alias": "failedMessage";
|
|
6442
|
+
"required": false;
|
|
6443
|
+
"isSignal": true;
|
|
6444
|
+
};
|
|
6445
|
+
"hint": {
|
|
6446
|
+
"alias": "hint";
|
|
6447
|
+
"required": false;
|
|
6448
|
+
"isSignal": true;
|
|
6449
|
+
};
|
|
6450
|
+
"disabled": {
|
|
6451
|
+
"alias": "disabled";
|
|
6452
|
+
"required": false;
|
|
6453
|
+
"isSignal": true;
|
|
6454
|
+
};
|
|
6455
|
+
"ariaDescribedBy": {
|
|
6456
|
+
"alias": "ariaDescribedBy";
|
|
6457
|
+
"required": false;
|
|
6458
|
+
"isSignal": true;
|
|
6459
|
+
};
|
|
6460
|
+
"inputTestId": {
|
|
6461
|
+
"alias": "inputTestId";
|
|
6462
|
+
"required": false;
|
|
6463
|
+
"isSignal": true;
|
|
6464
|
+
};
|
|
6465
|
+
"buttonTestId": {
|
|
6466
|
+
"alias": "buttonTestId";
|
|
6467
|
+
"required": false;
|
|
6468
|
+
"isSignal": true;
|
|
6469
|
+
};
|
|
6470
|
+
}, {
|
|
6471
|
+
"copied": "copied";
|
|
6472
|
+
"copyFailed": "copyFailed";
|
|
6473
|
+
}, never, never, true, never>;
|
|
6474
|
+
}
|
|
6264
6475
|
export declare class DateInputComponent implements ControlValueAccessor, Validator, UiFieldValidity {
|
|
6265
6476
|
readonly label: import("@angular/core").InputSignal<string>;
|
|
6266
6477
|
readonly required: import("@angular/core").InputSignal<boolean>;
|
|
@@ -6369,7 +6580,7 @@ export declare class DatetimeInputComponent implements ControlValueAccessor, Val
|
|
|
6369
6580
|
readonly error: import("@angular/core").InputSignal<string>;
|
|
6370
6581
|
/** Reveal the built-in error messages now (e.g. after a failed Save click), without waiting for blur. */
|
|
6371
6582
|
readonly showErrors: import("@angular/core").InputSignal<boolean>;
|
|
6372
|
-
|
|
6583
|
+
readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
|
|
6373
6584
|
private readonly _cvaDisabled;
|
|
6374
6585
|
protected readonly disabled: import("@angular/core").Signal<boolean>;
|
|
6375
6586
|
protected readonly _value: import("@angular/core").WritableSignal<string>;
|
|
@@ -6645,7 +6856,8 @@ export declare class ComboboxComponent<T = unknown> implements ControlValueAcces
|
|
|
6645
6856
|
readonly invalidChange: import("@angular/core").OutputEmitterRef<boolean>;
|
|
6646
6857
|
readonly focused: import("@angular/core").OutputEmitterRef<void>;
|
|
6647
6858
|
readonly blurred: import("@angular/core").OutputEmitterRef<void>;
|
|
6648
|
-
|
|
6859
|
+
/** Disables the field (`[disabled]="x()"`). Public so templates compile; ngModel / FormControl `disable()` still works (effective disabled = this OR the forms API). */
|
|
6860
|
+
readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
|
|
6649
6861
|
private readonly _cvaDisabled;
|
|
6650
6862
|
protected readonly disabled: import("@angular/core").Signal<boolean>;
|
|
6651
6863
|
private readonly _field;
|
|
@@ -7280,7 +7492,7 @@ export declare class FormSectionComponent {
|
|
|
7280
7492
|
}, {}, never, ["*"], true, never>;
|
|
7281
7493
|
}
|
|
7282
7494
|
export declare class FormRowComponent {
|
|
7283
|
-
readonly cols: import("@angular/core").InputSignal<
|
|
7495
|
+
readonly cols: import("@angular/core").InputSignal<1 | 2 | 3 | 4>;
|
|
7284
7496
|
static ɵfac: i0.ɵɵFactoryDeclaration<FormRowComponent, never>;
|
|
7285
7497
|
static ɵcmp: i0.ɵɵComponentDeclaration<FormRowComponent, "ui-form-row", never, {
|
|
7286
7498
|
"cols": {
|
|
@@ -8495,9 +8707,9 @@ export declare class ChipGroupComponent {
|
|
|
8495
8707
|
readonly spaceAbove: import("@angular/core").InputSignal<"none" | "sm" | "md">;
|
|
8496
8708
|
/** Space below the chip group. */
|
|
8497
8709
|
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" | "
|
|
8710
|
+
protected readonly _gap: import("@angular/core").Signal<"6px" | "12px" | "8px">;
|
|
8711
|
+
protected readonly _spaceAbove: import("@angular/core").Signal<"0" | "6px" | "12px">;
|
|
8712
|
+
protected readonly _spaceBelow: import("@angular/core").Signal<"0" | "6px" | "12px">;
|
|
8501
8713
|
static ɵfac: i0.ɵɵFactoryDeclaration<ChipGroupComponent, never>;
|
|
8502
8714
|
static ɵcmp: i0.ɵɵComponentDeclaration<ChipGroupComponent, "ui-chip-group", never, {
|
|
8503
8715
|
"gap": {
|
|
@@ -8875,13 +9087,13 @@ export declare class AlertComponent {
|
|
|
8875
9087
|
}
|
|
8876
9088
|
/**
|
|
8877
9089
|
* Every key `<ui-icon>` draws by itself (the data-table action keys such as `view` / `edit` / `call` are accepted too, see `builtInActionIcon`).
|
|
8878
|
-
* Each resolves with `iconPath(key)`. Includes `search`, `cup` (food / drink) and `wrench` (rental / tools), library source 2026-11-04, not yet published.
|
|
9090
|
+
* Each resolves with `iconPath(key)`. Includes `search`, `cup` (food / drink) and `wrench` (rental / tools), library source 2026-11-04, and `cash` (banknote) and `dollar` (payment methods / amounts), library source 2026-11-05, not yet published.
|
|
8879
9091
|
*/
|
|
8880
9092
|
export declare const ICON_NAMES: readonly string[];
|
|
8881
9093
|
/** The SVG path (24×24 stroke icon) for an icon key, or undefined when the key is unknown. */
|
|
8882
9094
|
export declare function iconPath(name: string): string | undefined;
|
|
8883
9095
|
/** 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';
|
|
9096
|
+
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' | 'cash' | 'dollar' | 'history' | 'move-up' | 'move-down';
|
|
8885
9097
|
/**
|
|
8886
9098
|
* A clickable icon. The host passes a key (`name="delete"`) and the library draws that icon; clicking it emits
|
|
8887
9099
|
* `iconClick`, and the host does the actual work (delete the row, open a panel, …).
|
|
@@ -8908,7 +9120,7 @@ export declare class IconComponent {
|
|
|
8908
9120
|
readonly ariaLabel: import("@angular/core").InputSignal<string>;
|
|
8909
9121
|
/** Icon size in px. */
|
|
8910
9122
|
readonly size: import("@angular/core").InputSignal<number>;
|
|
8911
|
-
readonly variant: import("@angular/core").InputSignal<"
|
|
9123
|
+
readonly variant: import("@angular/core").InputSignal<"default" | "danger">;
|
|
8912
9124
|
readonly disabled: import("@angular/core").InputSignal<boolean>;
|
|
8913
9125
|
/** 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. */
|
|
8914
9126
|
readonly loading: import("@angular/core").InputSignal<boolean>;
|
|
@@ -9020,7 +9232,7 @@ export declare class TimelineComponent {
|
|
|
9020
9232
|
/** 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
9233
|
readonly maxHeight: import("@angular/core").InputSignal<string>;
|
|
9022
9234
|
/** `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<"
|
|
9235
|
+
readonly timePosition: import("@angular/core").InputSignal<"below" | "end">;
|
|
9024
9236
|
/**
|
|
9025
9237
|
* Group the items under a heading per calendar day of `dateTime` ("Today", "Yesterday", "Oct 3", "Oct 3, 2025"). Default false = no headings,
|
|
9026
9238
|
* 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.
|
|
@@ -10142,7 +10354,7 @@ export declare class RichTextEditorComponent implements ControlValueAccessor {
|
|
|
10142
10354
|
readonly maxHeight: import("@angular/core").InputSignal<number>;
|
|
10143
10355
|
/** Toolbar controls to remove. Everything is shown by default. */
|
|
10144
10356
|
readonly hide: import("@angular/core").InputSignal<RichTextOption[]>;
|
|
10145
|
-
|
|
10357
|
+
readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
|
|
10146
10358
|
private readonly _cvaDisabled;
|
|
10147
10359
|
protected readonly disabled: import("@angular/core").Signal<boolean>;
|
|
10148
10360
|
/** Disabled or read-only: the editor is not editable and every toolbar control is disabled. */
|
|
@@ -10403,6 +10615,240 @@ export declare class RadioComponent {
|
|
|
10403
10615
|
"selected": "selected";
|
|
10404
10616
|
}, never, ["*"], true, never>;
|
|
10405
10617
|
}
|
|
10618
|
+
export interface SwatchOption {
|
|
10619
|
+
value: string;
|
|
10620
|
+
/** Accessible name and tooltip of the swatch (e.g. "Ocean blue"). */
|
|
10621
|
+
label: string;
|
|
10622
|
+
/** Any CSS colour (`#2563eb`, `rgb(...)`, `var(--x)`). */
|
|
10623
|
+
color: string;
|
|
10624
|
+
disabled?: boolean;
|
|
10625
|
+
/** `data-testid` of this option's native radio input; none when omitted. */
|
|
10626
|
+
testId?: string;
|
|
10627
|
+
}
|
|
10628
|
+
/**
|
|
10629
|
+
* (library source 2026-11-05, not yet published) Colour swatch picker: a `<fieldset role="radiogroup">` of native radio inputs
|
|
10630
|
+
* (arrow keys move + select natively, Home / End jump to the first / last enabled swatch), ControlValueAccessor with a string value
|
|
10631
|
+
* (`''` = nothing selected). The selected swatch shows a check mark and a ring (never colour alone); every swatch is named by its `label`
|
|
10632
|
+
* (accessible name + `title` tooltip). Built-in validation like `ui-radio-group`: `required` -> "<label> is required."; a value that is not one
|
|
10633
|
+
* of the `options` -> "Select a valid option." (not checked while `options` is empty); a disabled picker is never invalid.
|
|
10634
|
+
* `disabled` combines with the forms API (`setDisabledState`). 44px touch targets on touch devices and phones; the swatches wrap.
|
|
10635
|
+
*/
|
|
10636
|
+
export declare class SwatchPickerComponent implements ControlValueAccessor, Validator, UiFieldValidity {
|
|
10637
|
+
private readonly _el;
|
|
10638
|
+
readonly label: import("@angular/core").InputSignal<string>;
|
|
10639
|
+
readonly options: import("@angular/core").InputSignal<SwatchOption[]>;
|
|
10640
|
+
readonly required: import("@angular/core").InputSignal<boolean>;
|
|
10641
|
+
readonly hint: import("@angular/core").InputSignal<string>;
|
|
10642
|
+
readonly error: import("@angular/core").InputSignal<string>;
|
|
10643
|
+
/** Reveal the built-in error messages now (e.g. after a failed Save click), without waiting for blur. */
|
|
10644
|
+
readonly showErrors: import("@angular/core").InputSignal<boolean>;
|
|
10645
|
+
/** Fixed number of swatches per row (0 = wrap freely, the default). On a phone the row wraps by width instead. */
|
|
10646
|
+
readonly columns: import("@angular/core").InputSignal<number>;
|
|
10647
|
+
/** Native `name` shared by the radios; a unique one is generated when omitted. */
|
|
10648
|
+
readonly name: import("@angular/core").InputSignal<string>;
|
|
10649
|
+
readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
|
|
10650
|
+
private readonly _cvaDisabled;
|
|
10651
|
+
protected readonly disabled: import("@angular/core").Signal<boolean>;
|
|
10652
|
+
private readonly _generatedName;
|
|
10653
|
+
protected get _name(): string;
|
|
10654
|
+
protected readonly _descId: string;
|
|
10655
|
+
protected readonly _value: import("@angular/core").WritableSignal<string>;
|
|
10656
|
+
private readonly _reveal;
|
|
10657
|
+
private readonly _issue;
|
|
10658
|
+
readonly invalid: import("@angular/core").Signal<boolean>;
|
|
10659
|
+
readonly errorMessage: import("@angular/core").Signal<string>;
|
|
10660
|
+
readonly invalidChange: import("@angular/core").OutputEmitterRef<boolean>;
|
|
10661
|
+
/** Emits the chosen value on a user pick. */
|
|
10662
|
+
readonly valueChange: import("@angular/core").OutputEmitterRef<string>;
|
|
10663
|
+
protected readonly _activeError: import("@angular/core").Signal<string>;
|
|
10664
|
+
private _onValidatorChange;
|
|
10665
|
+
constructor();
|
|
10666
|
+
ngOnChanges(): void;
|
|
10667
|
+
validate(control: AbstractControl): ValidationErrors | null;
|
|
10668
|
+
registerOnValidatorChange(fn: () => void): void;
|
|
10669
|
+
private _onChange;
|
|
10670
|
+
private _onTouched;
|
|
10671
|
+
writeValue(val: string): void;
|
|
10672
|
+
registerOnChange(fn: (v: string) => void): void;
|
|
10673
|
+
registerOnTouched(fn: () => void): void;
|
|
10674
|
+
setDisabledState(d: boolean): void;
|
|
10675
|
+
protected onSelect(value: string): void;
|
|
10676
|
+
/** Home / End select the first / last enabled swatch (arrow keys are native radio behaviour). */
|
|
10677
|
+
protected onKeydown(e: KeyboardEvent): void;
|
|
10678
|
+
/** Touched once focus leaves the whole group. */
|
|
10679
|
+
protected onFocusOut(event: FocusEvent): void;
|
|
10680
|
+
private _check;
|
|
10681
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SwatchPickerComponent, never>;
|
|
10682
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SwatchPickerComponent, "ui-swatch-picker", never, {
|
|
10683
|
+
"label": {
|
|
10684
|
+
"alias": "label";
|
|
10685
|
+
"required": false;
|
|
10686
|
+
"isSignal": true;
|
|
10687
|
+
};
|
|
10688
|
+
"options": {
|
|
10689
|
+
"alias": "options";
|
|
10690
|
+
"required": false;
|
|
10691
|
+
"isSignal": true;
|
|
10692
|
+
};
|
|
10693
|
+
"required": {
|
|
10694
|
+
"alias": "required";
|
|
10695
|
+
"required": false;
|
|
10696
|
+
"isSignal": true;
|
|
10697
|
+
};
|
|
10698
|
+
"hint": {
|
|
10699
|
+
"alias": "hint";
|
|
10700
|
+
"required": false;
|
|
10701
|
+
"isSignal": true;
|
|
10702
|
+
};
|
|
10703
|
+
"error": {
|
|
10704
|
+
"alias": "error";
|
|
10705
|
+
"required": false;
|
|
10706
|
+
"isSignal": true;
|
|
10707
|
+
};
|
|
10708
|
+
"showErrors": {
|
|
10709
|
+
"alias": "showErrors";
|
|
10710
|
+
"required": false;
|
|
10711
|
+
"isSignal": true;
|
|
10712
|
+
};
|
|
10713
|
+
"columns": {
|
|
10714
|
+
"alias": "columns";
|
|
10715
|
+
"required": false;
|
|
10716
|
+
"isSignal": true;
|
|
10717
|
+
};
|
|
10718
|
+
"name": {
|
|
10719
|
+
"alias": "name";
|
|
10720
|
+
"required": false;
|
|
10721
|
+
"isSignal": true;
|
|
10722
|
+
};
|
|
10723
|
+
"_disabledInput": {
|
|
10724
|
+
"alias": "disabled";
|
|
10725
|
+
"required": false;
|
|
10726
|
+
"isSignal": true;
|
|
10727
|
+
};
|
|
10728
|
+
}, {
|
|
10729
|
+
"invalidChange": "invalidChange";
|
|
10730
|
+
"valueChange": "valueChange";
|
|
10731
|
+
}, never, never, true, never>;
|
|
10732
|
+
}
|
|
10733
|
+
export interface IconPickerOption {
|
|
10734
|
+
value: string;
|
|
10735
|
+
/** Accessible name and tooltip of the icon (e.g. "Wrench"). */
|
|
10736
|
+
label: string;
|
|
10737
|
+
/** Key of a library icon (`<ui-icon>` / action key such as `wrench`, `history`). Defaults to `value` when neither `iconKey` nor `path` is given. */
|
|
10738
|
+
iconKey?: string;
|
|
10739
|
+
/** Raw SVG path (`d` value, 24x24 stroke icon); wins over `iconKey`. */
|
|
10740
|
+
path?: string;
|
|
10741
|
+
disabled?: boolean;
|
|
10742
|
+
/** `data-testid` of this option's native radio input; none when omitted. */
|
|
10743
|
+
testId?: string;
|
|
10744
|
+
}
|
|
10745
|
+
/**
|
|
10746
|
+
* (library source 2026-11-05, not yet published) Icon picker: a `<fieldset role="radiogroup">` of native radio inputs
|
|
10747
|
+
* (arrow keys move + select natively, Home / End jump to the first / last enabled icon), ControlValueAccessor with a string value
|
|
10748
|
+
* (`''` = nothing selected). The selected icon is inverted and shows a check mark (never colour alone); every icon is named by its `label`
|
|
10749
|
+
* (accessible name + `title` tooltip). Built-in validation like `ui-radio-group`: `required` -> "<label> is required."; a value that is not one
|
|
10750
|
+
* of the `options` -> "Select a valid option." (not checked while `options` is empty); a disabled picker is never invalid.
|
|
10751
|
+
* `disabled` combines with the forms API (`setDisabledState`). 44px touch targets on touch devices and phones; the icons wrap.
|
|
10752
|
+
*/
|
|
10753
|
+
export declare class IconPickerComponent implements ControlValueAccessor, Validator, UiFieldValidity {
|
|
10754
|
+
private readonly _el;
|
|
10755
|
+
readonly label: import("@angular/core").InputSignal<string>;
|
|
10756
|
+
readonly options: import("@angular/core").InputSignal<IconPickerOption[]>;
|
|
10757
|
+
readonly required: import("@angular/core").InputSignal<boolean>;
|
|
10758
|
+
readonly hint: import("@angular/core").InputSignal<string>;
|
|
10759
|
+
readonly error: import("@angular/core").InputSignal<string>;
|
|
10760
|
+
/** Reveal the built-in error messages now (e.g. after a failed Save click), without waiting for blur. */
|
|
10761
|
+
readonly showErrors: import("@angular/core").InputSignal<boolean>;
|
|
10762
|
+
/** SVG path drawn for an option: its `path`, else the library icon `iconKey` (default: the option's `value`); '' when unknown. */
|
|
10763
|
+
protected _path(o: IconPickerOption): string;
|
|
10764
|
+
/** Fixed number of icons per row (0 = wrap freely, the default). On a phone the row wraps by width instead. */
|
|
10765
|
+
readonly columns: import("@angular/core").InputSignal<number>;
|
|
10766
|
+
/** Native `name` shared by the radios; a unique one is generated when omitted. */
|
|
10767
|
+
readonly name: import("@angular/core").InputSignal<string>;
|
|
10768
|
+
readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
|
|
10769
|
+
private readonly _cvaDisabled;
|
|
10770
|
+
protected readonly disabled: import("@angular/core").Signal<boolean>;
|
|
10771
|
+
private readonly _generatedName;
|
|
10772
|
+
protected get _name(): string;
|
|
10773
|
+
protected readonly _descId: string;
|
|
10774
|
+
protected readonly _value: import("@angular/core").WritableSignal<string>;
|
|
10775
|
+
private readonly _reveal;
|
|
10776
|
+
private readonly _issue;
|
|
10777
|
+
readonly invalid: import("@angular/core").Signal<boolean>;
|
|
10778
|
+
readonly errorMessage: import("@angular/core").Signal<string>;
|
|
10779
|
+
readonly invalidChange: import("@angular/core").OutputEmitterRef<boolean>;
|
|
10780
|
+
/** Emits the chosen value on a user pick. */
|
|
10781
|
+
readonly valueChange: import("@angular/core").OutputEmitterRef<string>;
|
|
10782
|
+
protected readonly _activeError: import("@angular/core").Signal<string>;
|
|
10783
|
+
private _onValidatorChange;
|
|
10784
|
+
constructor();
|
|
10785
|
+
ngOnChanges(): void;
|
|
10786
|
+
validate(control: AbstractControl): ValidationErrors | null;
|
|
10787
|
+
registerOnValidatorChange(fn: () => void): void;
|
|
10788
|
+
private _onChange;
|
|
10789
|
+
private _onTouched;
|
|
10790
|
+
writeValue(val: string): void;
|
|
10791
|
+
registerOnChange(fn: (v: string) => void): void;
|
|
10792
|
+
registerOnTouched(fn: () => void): void;
|
|
10793
|
+
setDisabledState(d: boolean): void;
|
|
10794
|
+
protected onSelect(value: string): void;
|
|
10795
|
+
/** Home / End select the first / last enabled icon (arrow keys are native radio behaviour). */
|
|
10796
|
+
protected onKeydown(e: KeyboardEvent): void;
|
|
10797
|
+
/** Touched once focus leaves the whole group. */
|
|
10798
|
+
protected onFocusOut(event: FocusEvent): void;
|
|
10799
|
+
private _check;
|
|
10800
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<IconPickerComponent, never>;
|
|
10801
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<IconPickerComponent, "ui-icon-picker", never, {
|
|
10802
|
+
"label": {
|
|
10803
|
+
"alias": "label";
|
|
10804
|
+
"required": false;
|
|
10805
|
+
"isSignal": true;
|
|
10806
|
+
};
|
|
10807
|
+
"options": {
|
|
10808
|
+
"alias": "options";
|
|
10809
|
+
"required": false;
|
|
10810
|
+
"isSignal": true;
|
|
10811
|
+
};
|
|
10812
|
+
"required": {
|
|
10813
|
+
"alias": "required";
|
|
10814
|
+
"required": false;
|
|
10815
|
+
"isSignal": true;
|
|
10816
|
+
};
|
|
10817
|
+
"hint": {
|
|
10818
|
+
"alias": "hint";
|
|
10819
|
+
"required": false;
|
|
10820
|
+
"isSignal": true;
|
|
10821
|
+
};
|
|
10822
|
+
"error": {
|
|
10823
|
+
"alias": "error";
|
|
10824
|
+
"required": false;
|
|
10825
|
+
"isSignal": true;
|
|
10826
|
+
};
|
|
10827
|
+
"showErrors": {
|
|
10828
|
+
"alias": "showErrors";
|
|
10829
|
+
"required": false;
|
|
10830
|
+
"isSignal": true;
|
|
10831
|
+
};
|
|
10832
|
+
"columns": {
|
|
10833
|
+
"alias": "columns";
|
|
10834
|
+
"required": false;
|
|
10835
|
+
"isSignal": true;
|
|
10836
|
+
};
|
|
10837
|
+
"name": {
|
|
10838
|
+
"alias": "name";
|
|
10839
|
+
"required": false;
|
|
10840
|
+
"isSignal": true;
|
|
10841
|
+
};
|
|
10842
|
+
"_disabledInput": {
|
|
10843
|
+
"alias": "disabled";
|
|
10844
|
+
"required": false;
|
|
10845
|
+
"isSignal": true;
|
|
10846
|
+
};
|
|
10847
|
+
}, {
|
|
10848
|
+
"invalidChange": "invalidChange";
|
|
10849
|
+
"valueChange": "valueChange";
|
|
10850
|
+
}, never, never, true, never>;
|
|
10851
|
+
}
|
|
10406
10852
|
/**
|
|
10407
10853
|
* Content shown directly under ONE option of a `ui-radio-group`, only while that option is selected (e.g. an address form under
|
|
10408
10854
|
* "Ship to an alternate address"). Put an `<ng-template>` inside the group and name the option's value:
|
|
@@ -10465,7 +10911,7 @@ export declare class RadioMatrixComponent implements ControlValueAccessor, Valid
|
|
|
10465
10911
|
readonly showErrors: import("@angular/core").InputSignal<boolean>;
|
|
10466
10912
|
/** Prefix of the native radio `name`s (one name per row); a unique one is generated when omitted. */
|
|
10467
10913
|
readonly name: import("@angular/core").InputSignal<string>;
|
|
10468
|
-
|
|
10914
|
+
readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
|
|
10469
10915
|
private readonly _cvaDisabled;
|
|
10470
10916
|
protected readonly disabled: import("@angular/core").Signal<boolean>;
|
|
10471
10917
|
private readonly _generatedName;
|
|
@@ -10767,7 +11213,7 @@ export declare class PdfHotspotComponent {
|
|
|
10767
11213
|
/** `ready`: clickable; `blocked`: disabled (a prerequisite is missing); `signed`: shows `image`. */
|
|
10768
11214
|
readonly state: import("@angular/core").InputSignal<"ready" | "blocked" | "signed">;
|
|
10769
11215
|
/** `warning` gives the ready state an amber look (e.g. for initials), default is blue. */
|
|
10770
|
-
readonly tone: import("@angular/core").InputSignal<"
|
|
11216
|
+
readonly tone: import("@angular/core").InputSignal<"warning" | "primary">;
|
|
10771
11217
|
/** Text of the ready button (e.g. "Sign Here"). */
|
|
10772
11218
|
readonly label: import("@angular/core").InputSignal<string>;
|
|
10773
11219
|
/** Text of the blocked button (e.g. "Add signature above"). */
|
|
@@ -10904,7 +11350,7 @@ export declare class DetailCardComponent {
|
|
|
10904
11350
|
/** 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
11351
|
readonly uppercaseTitle: import("@angular/core").InputSignal<boolean>;
|
|
10906
11352
|
/** 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<
|
|
11353
|
+
readonly headingLevel: import("@angular/core").InputSignal<1 | 2 | 3 | 4 | 5 | 6 | null>;
|
|
10908
11354
|
/** Optional id for the title text; the card is then labelled by it. Without it the title is the card's aria-label. */
|
|
10909
11355
|
readonly titleId: import("@angular/core").InputSignal<string>;
|
|
10910
11356
|
/** Accessible name of the card when the header gives none (no header, or no title). A visible title wins; blank = no name. */
|
|
@@ -11547,7 +11993,7 @@ export declare class ColorInputComponent implements ControlValueAccessor, Valida
|
|
|
11547
11993
|
readonly presets: import("@angular/core").InputSignal<ColorPreset[]>;
|
|
11548
11994
|
/** Emits whenever the field becomes invalid / valid. */
|
|
11549
11995
|
readonly invalidChange: import("@angular/core").OutputEmitterRef<boolean>;
|
|
11550
|
-
|
|
11996
|
+
readonly _disabledInput: import("@angular/core").InputSignal<boolean>;
|
|
11551
11997
|
private readonly _cvaDisabled;
|
|
11552
11998
|
protected readonly disabled: import("@angular/core").Signal<boolean>;
|
|
11553
11999
|
/** Current model value (what the form control holds). */
|
|
@@ -13521,7 +13967,7 @@ export declare class SetupWizardComponent {
|
|
|
13521
13967
|
protected customHintId(): string;
|
|
13522
13968
|
protected readonly importBlocked: import("@angular/core").Signal<boolean>;
|
|
13523
13969
|
/** 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<"
|
|
13970
|
+
protected readonly splitTab: import("@angular/core").WritableSignal<"main" | "extra">;
|
|
13525
13971
|
protected readonly splitTabs: import("@angular/core").Signal<{
|
|
13526
13972
|
key: string;
|
|
13527
13973
|
label: string;
|
|
@@ -15688,7 +16134,7 @@ export declare class PaymentSidePanelComponent {
|
|
|
15688
16134
|
private readonly terminalAvailable;
|
|
15689
16135
|
/** value -> label of every live method the rendered plugins contribute (the first plugin wins a duplicate value). */
|
|
15690
16136
|
private readonly liveMethods;
|
|
15691
|
-
protected readonly kind: import("@angular/core").Signal<"none" | "
|
|
16137
|
+
protected readonly kind: import("@angular/core").Signal<"none" | "live" | "terminal" | "manual">;
|
|
15692
16138
|
private kindOf;
|
|
15693
16139
|
/** 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
16140
|
readonly methodList: import("@angular/core").Signal<PaymentMethodOption[]>;
|