@eagami/ui 0.11.1 → 1.0.0
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/README.md +41 -616
- package/fesm2022/eagami-ui.mjs +1050 -196
- package/fesm2022/eagami-ui.mjs.map +1 -1
- package/package.json +4 -1
- package/src/styles/tokens/_colors.scss +3 -1
- package/types/eagami-ui.d.ts +600 -78
package/types/eagami-ui.d.ts
CHANGED
|
@@ -3,6 +3,11 @@ import { OnDestroy, ElementRef, TemplateRef, AfterViewInit, OnInit } from '@angu
|
|
|
3
3
|
import { ControlValueAccessor } from '@angular/forms';
|
|
4
4
|
import * as _eagami_ui from '@eagami/ui';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Container for expandable content sections. By default only one item can be
|
|
8
|
+
* open at a time; set `multi` to allow several to stay expanded together.
|
|
9
|
+
* Provides a built-in chevron animation and supports per-item disabling.
|
|
10
|
+
*/
|
|
6
11
|
declare class AccordionComponent {
|
|
7
12
|
readonly multi: _angular_core.InputSignal<boolean>;
|
|
8
13
|
readonly expandedItems: _angular_core.WritableSignal<Set<string>>;
|
|
@@ -12,43 +17,70 @@ declare class AccordionComponent {
|
|
|
12
17
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AccordionComponent, "ea-accordion", never, { "multi": { "alias": "multi"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
13
18
|
}
|
|
14
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Single expandable section within an `ea-accordion`. Each item exposes a
|
|
22
|
+
* header button with the supplied `label` and reveals its projected content
|
|
23
|
+
* when expanded. Must be rendered inside an `ea-accordion`.
|
|
24
|
+
*/
|
|
15
25
|
declare class AccordionItemComponent {
|
|
16
26
|
private readonly accordion;
|
|
17
27
|
readonly value: _angular_core.InputSignal<string>;
|
|
18
28
|
readonly label: _angular_core.InputSignal<string>;
|
|
19
29
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
30
|
+
readonly id: _angular_core.InputSignal<string>;
|
|
20
31
|
readonly isExpanded: _angular_core.Signal<boolean>;
|
|
21
32
|
toggle(): void;
|
|
22
33
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AccordionItemComponent, never>;
|
|
23
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AccordionItemComponent, "ea-accordion-item", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
34
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AccordionItemComponent, "ea-accordion-item", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
24
35
|
}
|
|
25
36
|
|
|
37
|
+
/** Semantic colour scheme of an alert. Drives icon and palette. */
|
|
26
38
|
type AlertVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
|
|
39
|
+
/**
|
|
40
|
+
* Inline banner for surfacing semantic messages such as success confirmations,
|
|
41
|
+
* warnings, or errors. Optionally dismissible, with a two-way `visible`
|
|
42
|
+
* binding and an automatically chosen ARIA role based on severity.
|
|
43
|
+
*/
|
|
27
44
|
declare class AlertComponent {
|
|
28
45
|
readonly variant: _angular_core.InputSignal<AlertVariant>;
|
|
29
46
|
readonly dismissible: _angular_core.InputSignal<boolean>;
|
|
30
47
|
readonly visible: _angular_core.ModelSignal<boolean>;
|
|
48
|
+
/** Fires when the user dismisses the alert via its close button. */
|
|
31
49
|
readonly dismissed: _angular_core.OutputEmitterRef<void>;
|
|
32
50
|
readonly alertClasses: _angular_core.Signal<{
|
|
33
51
|
[x: string]: boolean;
|
|
34
52
|
}>;
|
|
53
|
+
readonly role: _angular_core.Signal<"alert" | "status">;
|
|
54
|
+
/** Hides the alert and emits `dismissed`. */
|
|
35
55
|
dismiss(): void;
|
|
36
56
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AlertComponent, never>;
|
|
37
57
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertComponent, "ea-alert", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "visible": { "alias": "visible"; "required": false; "isSignal": true; }; }, { "visible": "visibleChange"; "dismissed": "dismissed"; }, never, ["*"], true, never>;
|
|
38
58
|
}
|
|
39
59
|
|
|
40
|
-
|
|
41
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Common option shape used by single-select form controls
|
|
62
|
+
* (autocomplete, dropdown, segmented).
|
|
63
|
+
*/
|
|
64
|
+
interface SelectOption {
|
|
42
65
|
value: string;
|
|
43
66
|
label: string;
|
|
44
67
|
disabled?: boolean;
|
|
45
68
|
}
|
|
69
|
+
|
|
70
|
+
/** Visual size of the autocomplete input. */
|
|
71
|
+
type AutocompleteSize = 'sm' | 'md' | 'lg';
|
|
72
|
+
/**
|
|
73
|
+
* Text input paired with a filtered suggestion list. Filters options by
|
|
74
|
+
* case-insensitive substring match, supports arrow-key navigation, and
|
|
75
|
+
* implements `ControlValueAccessor` for use with reactive and template-driven
|
|
76
|
+
* forms.
|
|
77
|
+
*/
|
|
46
78
|
declare class AutocompleteComponent implements ControlValueAccessor {
|
|
47
79
|
private readonly inputEl;
|
|
48
80
|
private readonly hostEl;
|
|
49
81
|
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
50
82
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
51
|
-
readonly options: _angular_core.InputSignal<
|
|
83
|
+
readonly options: _angular_core.InputSignal<SelectOption[]>;
|
|
52
84
|
readonly size: _angular_core.InputSignal<AutocompleteSize>;
|
|
53
85
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
54
86
|
readonly readonly: _angular_core.InputSignal<boolean>;
|
|
@@ -60,24 +92,31 @@ declare class AutocompleteComponent implements ControlValueAccessor {
|
|
|
60
92
|
readonly emptyMessage: _angular_core.InputSignal<string>;
|
|
61
93
|
readonly id: _angular_core.InputSignal<string>;
|
|
62
94
|
readonly value: _angular_core.ModelSignal<string>;
|
|
63
|
-
|
|
64
|
-
readonly
|
|
95
|
+
/** Fires when the user picks an option from the suggestion list. */
|
|
96
|
+
readonly selected: _angular_core.OutputEmitterRef<SelectOption>;
|
|
97
|
+
/** Fires whenever the input text changes, including on free-text edits. */
|
|
98
|
+
readonly changed: _angular_core.OutputEmitterRef<string>;
|
|
99
|
+
/** Fires when the input receives focus. */
|
|
100
|
+
readonly focused: _angular_core.OutputEmitterRef<FocusEvent>;
|
|
101
|
+
/** Fires when the input loses focus. */
|
|
102
|
+
readonly blurred: _angular_core.OutputEmitterRef<FocusEvent>;
|
|
65
103
|
readonly isOpen: _angular_core.WritableSignal<boolean>;
|
|
66
|
-
readonly
|
|
104
|
+
readonly isFocused: _angular_core.WritableSignal<boolean>;
|
|
67
105
|
readonly focusedIndex: _angular_core.WritableSignal<number>;
|
|
68
106
|
private readonly _formDisabled;
|
|
69
107
|
private justSelected;
|
|
70
108
|
private onChange;
|
|
71
109
|
private onTouched;
|
|
72
110
|
readonly isDisabled: _angular_core.Signal<boolean>;
|
|
73
|
-
readonly
|
|
111
|
+
readonly hasError: _angular_core.Signal<boolean>;
|
|
74
112
|
readonly showError: _angular_core.Signal<boolean>;
|
|
75
113
|
readonly showHint: _angular_core.Signal<boolean>;
|
|
76
|
-
readonly filteredOptions: _angular_core.Signal<
|
|
114
|
+
readonly filteredOptions: _angular_core.Signal<SelectOption[]>;
|
|
77
115
|
readonly showList: _angular_core.Signal<boolean>;
|
|
78
116
|
readonly showEmpty: _angular_core.Signal<boolean>;
|
|
79
117
|
readonly wrapperClasses: _angular_core.Signal<{
|
|
80
118
|
[x: string]: boolean;
|
|
119
|
+
'ea-autocomplete__wrapper--error': boolean;
|
|
81
120
|
'ea-autocomplete__wrapper--focused': boolean;
|
|
82
121
|
'ea-autocomplete__wrapper--disabled': boolean;
|
|
83
122
|
}>;
|
|
@@ -86,27 +125,39 @@ declare class AutocompleteComponent implements ControlValueAccessor {
|
|
|
86
125
|
registerOnTouched(fn: () => void): void;
|
|
87
126
|
setDisabledState(isDisabled: boolean): void;
|
|
88
127
|
handleInput(event: Event): void;
|
|
89
|
-
handleFocus(): void;
|
|
90
|
-
handleBlur(): void;
|
|
128
|
+
handleFocus(event: FocusEvent): void;
|
|
129
|
+
handleBlur(event: FocusEvent): void;
|
|
91
130
|
handleKeydown(event: KeyboardEvent): void;
|
|
92
|
-
|
|
131
|
+
/** Programmatically selects the given option, updating the value and closing the list. */
|
|
132
|
+
selectOption(option: SelectOption): void;
|
|
133
|
+
/** Closes the suggestion list without changing the current value. */
|
|
93
134
|
close(): void;
|
|
135
|
+
/** Moves keyboard focus to the underlying text input. */
|
|
136
|
+
focus(): void;
|
|
94
137
|
private moveFocus;
|
|
95
138
|
onDocumentClick(event: Event): void;
|
|
96
139
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AutocompleteComponent, never>;
|
|
97
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AutocompleteComponent, "ea-autocomplete", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "
|
|
140
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AutocompleteComponent, "ea-autocomplete", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "minLength": { "alias": "minLength"; "required": false; "isSignal": true; }; "maxResults": { "alias": "maxResults"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "selected": "selected"; "changed": "changed"; "focused": "focused"; "blurred": "blurred"; }, never, ["[slot=prefix]", "[slot=suffix]"], true, never>;
|
|
98
141
|
}
|
|
99
142
|
|
|
143
|
+
/** Crop mask shape applied to the exported image. */
|
|
100
144
|
type AvatarEditorShape = 'circle' | 'square';
|
|
145
|
+
/** Result of a successful crop, providing both a `Blob` and a data URL. */
|
|
101
146
|
interface AvatarEditorCropEvent {
|
|
102
147
|
blob: Blob;
|
|
103
148
|
dataUrl: string;
|
|
104
149
|
}
|
|
150
|
+
/** Persisted pan/zoom state, suitable for restoring an in-progress edit. */
|
|
105
151
|
interface AvatarEditorCropState {
|
|
106
152
|
zoom: number;
|
|
107
153
|
offsetX: number;
|
|
108
154
|
offsetY: number;
|
|
109
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* Canvas-based image editor for cropping avatars. Supports drag-and-drop
|
|
158
|
+
* upload, mouse/touch panning, zoom via slider or scroll wheel, and exports
|
|
159
|
+
* the cropped image as either a `Blob` or a data URL.
|
|
160
|
+
*/
|
|
110
161
|
declare class AvatarEditorComponent implements OnDestroy {
|
|
111
162
|
readonly canvasEl: _angular_core.Signal<ElementRef<HTMLCanvasElement> | undefined>;
|
|
112
163
|
readonly fileInputEl: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
@@ -121,11 +172,16 @@ declare class AvatarEditorComponent implements OnDestroy {
|
|
|
121
172
|
readonly exportQuality: _angular_core.InputSignal<number>;
|
|
122
173
|
readonly exportType: _angular_core.InputSignal<string>;
|
|
123
174
|
readonly cropState: _angular_core.InputSignal<AvatarEditorCropState | null | undefined>;
|
|
175
|
+
/** Fires when the user finalises a crop via {@link exportCrop}; payload contains both `Blob` and data URL. */
|
|
124
176
|
readonly cropped: _angular_core.OutputEmitterRef<AvatarEditorCropEvent>;
|
|
177
|
+
/** Fires when a file is chosen from disk or dropped onto the editor. */
|
|
125
178
|
readonly fileSelected: _angular_core.OutputEmitterRef<File>;
|
|
179
|
+
/** Fires when the current image is cleared via the remove control. */
|
|
126
180
|
readonly removed: _angular_core.OutputEmitterRef<void>;
|
|
127
|
-
|
|
128
|
-
readonly
|
|
181
|
+
/** Fires with a human-readable message when validation fails (wrong type, oversized file, etc.). */
|
|
182
|
+
readonly errored: _angular_core.OutputEmitterRef<string>;
|
|
183
|
+
/** Fires whenever the user pans or zooms the image; useful for persisting in-progress crops. */
|
|
184
|
+
readonly cropStateChanged: _angular_core.OutputEmitterRef<AvatarEditorCropState>;
|
|
129
185
|
readonly hasImage: _angular_core.WritableSignal<boolean>;
|
|
130
186
|
readonly isDragOver: _angular_core.WritableSignal<boolean>;
|
|
131
187
|
readonly isAtOriginal: _angular_core.WritableSignal<boolean>;
|
|
@@ -159,6 +215,7 @@ declare class AvatarEditorComponent implements OnDestroy {
|
|
|
159
215
|
onDragLeave(event: DragEvent): void;
|
|
160
216
|
onDrop(event: DragEvent): void;
|
|
161
217
|
onFileSelected(event: Event): void;
|
|
218
|
+
/** Opens the native file picker dialog. */
|
|
162
219
|
openFilePicker(): void;
|
|
163
220
|
onMouseDown(event: MouseEvent): void;
|
|
164
221
|
onTouchStart(event: TouchEvent): void;
|
|
@@ -171,11 +228,17 @@ declare class AvatarEditorComponent implements OnDestroy {
|
|
|
171
228
|
private onTouchMove;
|
|
172
229
|
private onTouchEnd;
|
|
173
230
|
private onWheel;
|
|
231
|
+
onCanvasKeydown(event: KeyboardEvent): void;
|
|
232
|
+
/** Sets the zoom level, clamped to the configured `minZoom`/`maxZoom` range. */
|
|
174
233
|
setZoom(value: number): void;
|
|
175
234
|
onZoomInput(event: Event): void;
|
|
235
|
+
/** Clears the loaded image and resets pan/zoom to defaults. */
|
|
176
236
|
removeImage(): void;
|
|
237
|
+
/** Marks the current image and crop state as the baseline for {@link revertImage}. */
|
|
177
238
|
captureOriginal(): void;
|
|
239
|
+
/** Restores the image and crop state captured by the most recent {@link captureOriginal}. */
|
|
178
240
|
revertImage(): void;
|
|
241
|
+
/** Renders the current crop to an offscreen canvas, emits `cropped`, and resolves with the resulting `Blob`. */
|
|
179
242
|
exportCrop(): Promise<Blob>;
|
|
180
243
|
private loadFromUrl;
|
|
181
244
|
private loadFile;
|
|
@@ -188,11 +251,18 @@ declare class AvatarEditorComponent implements OnDestroy {
|
|
|
188
251
|
private emitCropStateChange;
|
|
189
252
|
private clearCanvas;
|
|
190
253
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AvatarEditorComponent, never>;
|
|
191
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AvatarEditorComponent, "ea-avatar-editor", never, { "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "canvasSize": { "alias": "canvasSize"; "required": false; "isSignal": true; }; "currentSrc": { "alias": "currentSrc"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "minZoom": { "alias": "minZoom"; "required": false; "isSignal": true; }; "maxZoom": { "alias": "maxZoom"; "required": false; "isSignal": true; }; "exportQuality": { "alias": "exportQuality"; "required": false; "isSignal": true; }; "exportType": { "alias": "exportType"; "required": false; "isSignal": true; }; "cropState": { "alias": "cropState"; "required": false; "isSignal": true; }; }, { "cropped": "cropped"; "fileSelected": "fileSelected"; "removed": "removed"; "
|
|
254
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AvatarEditorComponent, "ea-avatar-editor", never, { "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "canvasSize": { "alias": "canvasSize"; "required": false; "isSignal": true; }; "currentSrc": { "alias": "currentSrc"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "minZoom": { "alias": "minZoom"; "required": false; "isSignal": true; }; "maxZoom": { "alias": "maxZoom"; "required": false; "isSignal": true; }; "exportQuality": { "alias": "exportQuality"; "required": false; "isSignal": true; }; "exportType": { "alias": "exportType"; "required": false; "isSignal": true; }; "cropState": { "alias": "cropState"; "required": false; "isSignal": true; }; }, { "cropped": "cropped"; "fileSelected": "fileSelected"; "removed": "removed"; "errored": "errored"; "cropStateChanged": "cropStateChanged"; }, never, never, true, never>;
|
|
192
255
|
}
|
|
193
256
|
|
|
257
|
+
/** Diameter (or side length) preset for an avatar. */
|
|
194
258
|
type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
259
|
+
/** Outline of the avatar — round or rounded-square. */
|
|
195
260
|
type AvatarShape = 'circle' | 'square';
|
|
261
|
+
/**
|
|
262
|
+
* Compact image used to represent a user or entity. Falls back to initials
|
|
263
|
+
* when no `src` is provided, then to a generic user icon when neither image
|
|
264
|
+
* nor initials are available.
|
|
265
|
+
*/
|
|
196
266
|
declare class AvatarComponent {
|
|
197
267
|
readonly src: _angular_core.InputSignal<string | undefined>;
|
|
198
268
|
readonly alt: _angular_core.InputSignal<string>;
|
|
@@ -210,8 +280,14 @@ declare class AvatarComponent {
|
|
|
210
280
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AvatarComponent, "ea-avatar", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; "initials": { "alias": "initials"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
211
281
|
}
|
|
212
282
|
|
|
283
|
+
/** Semantic colour scheme of a badge. */
|
|
213
284
|
type BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
|
|
285
|
+
/** Visual size of a badge. */
|
|
214
286
|
type BadgeSize = 'sm' | 'md' | 'lg';
|
|
287
|
+
/**
|
|
288
|
+
* Compact pill-shaped indicator used to communicate status, counts, or labels
|
|
289
|
+
* inline with surrounding content.
|
|
290
|
+
*/
|
|
215
291
|
declare class BadgeComponent {
|
|
216
292
|
readonly variant: _angular_core.InputSignal<BadgeVariant>;
|
|
217
293
|
readonly size: _angular_core.InputSignal<BadgeSize>;
|
|
@@ -222,31 +298,48 @@ declare class BadgeComponent {
|
|
|
222
298
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<BadgeComponent, "ea-badge", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
223
299
|
}
|
|
224
300
|
|
|
301
|
+
/** Visual style of the separator rendered between breadcrumb items. */
|
|
225
302
|
type BreadcrumbsSeparator = 'chevron' | 'slash';
|
|
303
|
+
/** Single entry in a breadcrumb trail. */
|
|
226
304
|
interface BreadcrumbItem {
|
|
227
305
|
label: string;
|
|
228
306
|
href?: string;
|
|
229
307
|
disabled?: boolean;
|
|
230
308
|
}
|
|
309
|
+
/** Payload emitted when a breadcrumb is activated. */
|
|
231
310
|
interface BreadcrumbClickEvent {
|
|
232
311
|
item: BreadcrumbItem;
|
|
233
312
|
index: number;
|
|
234
313
|
event: MouseEvent;
|
|
235
314
|
}
|
|
315
|
+
/**
|
|
316
|
+
* Navigation trail that shows the user's location within a hierarchy. Items
|
|
317
|
+
* with an `href` render as links, others render as buttons; the final item is
|
|
318
|
+
* always treated as the current page and is non-interactive.
|
|
319
|
+
*/
|
|
236
320
|
declare class BreadcrumbsComponent {
|
|
237
321
|
readonly items: _angular_core.InputSignal<BreadcrumbItem[]>;
|
|
238
322
|
readonly separator: _angular_core.InputSignal<BreadcrumbsSeparator>;
|
|
239
323
|
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
240
|
-
|
|
324
|
+
/** Fires when a non-disabled, non-final breadcrumb is activated. */
|
|
325
|
+
readonly clicked: _angular_core.OutputEmitterRef<BreadcrumbClickEvent>;
|
|
241
326
|
isLast(index: number): boolean;
|
|
242
327
|
handleClick(item: BreadcrumbItem, index: number, event: MouseEvent): void;
|
|
243
328
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BreadcrumbsComponent, never>;
|
|
244
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<BreadcrumbsComponent, "ea-breadcrumbs", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "separator": { "alias": "separator"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; }, { "
|
|
329
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<BreadcrumbsComponent, "ea-breadcrumbs", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "separator": { "alias": "separator"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, never, true, never>;
|
|
245
330
|
}
|
|
246
331
|
|
|
332
|
+
/** Visual style of a button — drives colour and emphasis. */
|
|
247
333
|
type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger';
|
|
334
|
+
/** Visual size of a button. */
|
|
248
335
|
type ButtonSize = 'sm' | 'md' | 'lg';
|
|
336
|
+
/** HTML `type` attribute applied to the underlying `<button>` element. */
|
|
249
337
|
type ButtonType = 'button' | 'submit' | 'reset';
|
|
338
|
+
/**
|
|
339
|
+
* Standard action button supporting primary, secondary, ghost, and danger
|
|
340
|
+
* variants. Includes a loading state that swaps the label for a spinner while
|
|
341
|
+
* preserving the rendered width.
|
|
342
|
+
*/
|
|
250
343
|
declare class ButtonComponent {
|
|
251
344
|
readonly variant: _angular_core.InputSignal<ButtonVariant>;
|
|
252
345
|
readonly size: _angular_core.InputSignal<ButtonSize>;
|
|
@@ -256,6 +349,7 @@ declare class ButtonComponent {
|
|
|
256
349
|
readonly fullWidth: _angular_core.InputSignal<boolean>;
|
|
257
350
|
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
258
351
|
readonly ariaCurrent: _angular_core.InputSignal<string | undefined>;
|
|
352
|
+
/** Fires when the button is activated; suppressed while disabled or loading. */
|
|
259
353
|
readonly clicked: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
260
354
|
readonly isDisabled: _angular_core.Signal<boolean>;
|
|
261
355
|
readonly hostClasses: _angular_core.Signal<{
|
|
@@ -269,9 +363,18 @@ declare class ButtonComponent {
|
|
|
269
363
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ButtonComponent, "ea-button", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "ariaCurrent": { "alias": "aria-current"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, ["[slot=prefix]", "*", "[slot=suffix]"], true, never>;
|
|
270
364
|
}
|
|
271
365
|
|
|
366
|
+
/** Visual style of a card surface. */
|
|
272
367
|
type CardVariant = 'elevated' | 'outlined' | 'filled';
|
|
368
|
+
/** Padding preset applied to the card's content area. */
|
|
273
369
|
type CardPadding = 'none' | 'sm' | 'md' | 'lg' | 'xl';
|
|
370
|
+
/** Horizontal alignment of card header content. */
|
|
274
371
|
type CardHeaderAlign = 'start' | 'center' | 'end';
|
|
372
|
+
/**
|
|
373
|
+
* Surface for grouping related content. Provides optional `header` and
|
|
374
|
+
* `footer` content slots and supports elevated, outlined, and filled
|
|
375
|
+
* variants. The card shadow can be customised per instance via the
|
|
376
|
+
* `--ea-card-shadow` CSS custom property.
|
|
377
|
+
*/
|
|
275
378
|
declare class CardComponent {
|
|
276
379
|
readonly variant: _angular_core.InputSignal<CardVariant>;
|
|
277
380
|
readonly padding: _angular_core.InputSignal<CardPadding>;
|
|
@@ -283,26 +386,40 @@ declare class CardComponent {
|
|
|
283
386
|
'ea-card--full-width': boolean;
|
|
284
387
|
}>;
|
|
285
388
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardComponent, never>;
|
|
286
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardComponent, "ea-card", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "headerAlign": { "alias": "headerAlign"; "required": false; "isSignal": true; }; "headerDivider": { "alias": "headerDivider"; "required": false; "isSignal": true; }; }, {}, never, ["[
|
|
389
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardComponent, "ea-card", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "headerAlign": { "alias": "headerAlign"; "required": false; "isSignal": true; }; "headerDivider": { "alias": "headerDivider"; "required": false; "isSignal": true; }; }, {}, never, ["[slot=header]", "*", "[slot=footer]"], true, never>;
|
|
287
390
|
}
|
|
288
391
|
|
|
392
|
+
/** Visual size of a checkbox. */
|
|
289
393
|
type CheckboxSize = 'sm' | 'md' | 'lg';
|
|
394
|
+
/**
|
|
395
|
+
* Boolean form control with support for an indeterminate visual state. Pairs
|
|
396
|
+
* a visually hidden native input with a custom checkmark and integrates with
|
|
397
|
+
* Angular forms via `ControlValueAccessor`.
|
|
398
|
+
*/
|
|
290
399
|
declare class CheckboxComponent implements ControlValueAccessor {
|
|
291
400
|
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
401
|
+
readonly hint: _angular_core.InputSignal<string | undefined>;
|
|
402
|
+
readonly errorMsg: _angular_core.InputSignal<string | undefined>;
|
|
292
403
|
readonly size: _angular_core.InputSignal<CheckboxSize>;
|
|
293
404
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
294
405
|
readonly required: _angular_core.InputSignal<boolean>;
|
|
295
406
|
readonly indeterminate: _angular_core.InputSignal<boolean>;
|
|
407
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
296
408
|
readonly id: _angular_core.InputSignal<string>;
|
|
297
409
|
readonly checked: _angular_core.ModelSignal<boolean>;
|
|
410
|
+
/** Fires with the new checked state whenever the user toggles the checkbox. */
|
|
298
411
|
readonly changed: _angular_core.OutputEmitterRef<boolean>;
|
|
299
412
|
private readonly _formDisabled;
|
|
300
413
|
readonly isDisabled: _angular_core.Signal<boolean>;
|
|
414
|
+
readonly hasError: _angular_core.Signal<boolean>;
|
|
415
|
+
readonly showError: _angular_core.Signal<boolean>;
|
|
416
|
+
readonly showHint: _angular_core.Signal<boolean>;
|
|
301
417
|
readonly hostClasses: _angular_core.Signal<{
|
|
302
418
|
[x: string]: boolean;
|
|
303
419
|
'ea-checkbox--disabled': boolean;
|
|
304
420
|
'ea-checkbox--checked': boolean;
|
|
305
421
|
'ea-checkbox--indeterminate': boolean;
|
|
422
|
+
'ea-checkbox--error': boolean;
|
|
306
423
|
}>;
|
|
307
424
|
private onChange;
|
|
308
425
|
private onTouched;
|
|
@@ -312,11 +429,14 @@ declare class CheckboxComponent implements ControlValueAccessor {
|
|
|
312
429
|
setDisabledState(isDisabled: boolean): void;
|
|
313
430
|
handleChange(): void;
|
|
314
431
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CheckboxComponent, never>;
|
|
315
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckboxComponent, "ea-checkbox", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "changed": "changed"; }, never, never, true, never>;
|
|
432
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CheckboxComponent, "ea-checkbox", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "changed": "changed"; }, never, never, true, never>;
|
|
316
433
|
}
|
|
317
434
|
|
|
435
|
+
/** Vertical density preset for table rows and header cells. */
|
|
318
436
|
type DataTableDensity = 'compact' | 'comfortable' | 'spacious';
|
|
319
|
-
|
|
437
|
+
/** Sort direction; `null` means no sort is applied. */
|
|
438
|
+
type DataTableSortDirection = 'asc' | 'desc' | null;
|
|
439
|
+
/** Column definition for the data table, including optional cell/header templates. */
|
|
320
440
|
interface DataTableColumn<T = Record<string, unknown>> {
|
|
321
441
|
key: string;
|
|
322
442
|
label: string;
|
|
@@ -332,10 +452,17 @@ interface DataTableColumn<T = Record<string, unknown>> {
|
|
|
332
452
|
$implicit: DataTableColumn<T>;
|
|
333
453
|
}>;
|
|
334
454
|
}
|
|
455
|
+
/** Current sort state — which column is sorted and in which direction. */
|
|
335
456
|
interface DataTableSortState {
|
|
336
457
|
column: string;
|
|
337
|
-
direction:
|
|
338
|
-
}
|
|
458
|
+
direction: DataTableSortDirection;
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Table for tabular data with sortable columns, sticky headers, and density
|
|
462
|
+
* presets. Supports striping, borders, hoverable rows, and custom cell or
|
|
463
|
+
* header templates via `ng-template`. Sort state is exposed as a two-way
|
|
464
|
+
* `model()` binding.
|
|
465
|
+
*/
|
|
339
466
|
declare class DataTableComponent<T = Record<string, unknown>> {
|
|
340
467
|
readonly columns: _angular_core.InputSignal<DataTableColumn<T>[]>;
|
|
341
468
|
readonly data: _angular_core.InputSignal<T[]>;
|
|
@@ -347,7 +474,8 @@ declare class DataTableComponent<T = Record<string, unknown>> {
|
|
|
347
474
|
readonly bordered: _angular_core.InputSignal<boolean>;
|
|
348
475
|
readonly noDataText: _angular_core.InputSignal<string>;
|
|
349
476
|
readonly sort: _angular_core.ModelSignal<DataTableSortState>;
|
|
350
|
-
|
|
477
|
+
/** Fires whenever the sort column or direction changes via header click. */
|
|
478
|
+
readonly sorted: _angular_core.OutputEmitterRef<DataTableSortState>;
|
|
351
479
|
readonly noDataTemplate: _angular_core.Signal<TemplateRef<unknown> | undefined>;
|
|
352
480
|
readonly hostClasses: _angular_core.Signal<{
|
|
353
481
|
[x: string]: boolean;
|
|
@@ -361,30 +489,37 @@ declare class DataTableComponent<T = Record<string, unknown>> {
|
|
|
361
489
|
onHeaderClick(col: DataTableColumn<T>): void;
|
|
362
490
|
trackByFn(_index: number, item: T): unknown;
|
|
363
491
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DataTableComponent<any>, never>;
|
|
364
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DataTableComponent<any>, "ea-data-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": true; "isSignal": true; }; "trackBy": { "alias": "trackBy"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "hoverable": { "alias": "hoverable"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "noDataText": { "alias": "noDataText"; "required": false; "isSignal": true; }; "sort": { "alias": "sort"; "required": false; "isSignal": true; }; }, { "sort": "sortChange"; "
|
|
492
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DataTableComponent<any>, "ea-data-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": true; "isSignal": true; }; "trackBy": { "alias": "trackBy"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "hoverable": { "alias": "hoverable"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "noDataText": { "alias": "noDataText"; "required": false; "isSignal": true; }; "sort": { "alias": "sort"; "required": false; "isSignal": true; }; }, { "sort": "sortChange"; "sorted": "sorted"; }, ["noDataTemplate"], ["ea-paginator"], true, never>;
|
|
365
493
|
}
|
|
366
494
|
|
|
495
|
+
/** Visual size of each digit cell. */
|
|
367
496
|
type CodeInputSize = 'sm' | 'md' | 'lg';
|
|
368
|
-
|
|
497
|
+
/**
|
|
498
|
+
* Verification code entry made up of one input per digit. Auto-advances on
|
|
499
|
+
* input, supports paste of the full code at once, and integrates with Angular
|
|
500
|
+
* forms via `ControlValueAccessor`.
|
|
501
|
+
*/
|
|
369
502
|
declare class CodeInputComponent implements ControlValueAccessor {
|
|
370
503
|
readonly digitEls: _angular_core.Signal<readonly ElementRef<HTMLInputElement>[]>;
|
|
371
504
|
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
505
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
372
506
|
readonly length: _angular_core.InputSignal<number>;
|
|
373
507
|
readonly size: _angular_core.InputSignal<CodeInputSize>;
|
|
374
|
-
readonly status: _angular_core.InputSignal<CodeInputStatus>;
|
|
375
508
|
readonly hint: _angular_core.InputSignal<string | undefined>;
|
|
376
509
|
readonly errorMsg: _angular_core.InputSignal<string | undefined>;
|
|
377
510
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
511
|
+
readonly readonly: _angular_core.InputSignal<boolean>;
|
|
378
512
|
readonly required: _angular_core.InputSignal<boolean>;
|
|
379
513
|
readonly id: _angular_core.InputSignal<string>;
|
|
380
514
|
readonly value: _angular_core.ModelSignal<string>;
|
|
381
515
|
readonly focusedIndex: _angular_core.WritableSignal<number>;
|
|
382
516
|
private readonly _formDisabled;
|
|
517
|
+
/** Fires with the full code once every digit has been entered. */
|
|
383
518
|
readonly completed: _angular_core.OutputEmitterRef<string>;
|
|
384
519
|
private onChange;
|
|
385
520
|
private onTouched;
|
|
386
521
|
readonly isDisabled: _angular_core.Signal<boolean>;
|
|
387
|
-
readonly
|
|
522
|
+
readonly hasError: _angular_core.Signal<boolean>;
|
|
388
523
|
readonly showError: _angular_core.Signal<boolean>;
|
|
389
524
|
readonly showHint: _angular_core.Signal<boolean>;
|
|
390
525
|
readonly digits: _angular_core.Signal<string[]>;
|
|
@@ -398,15 +533,20 @@ declare class CodeInputComponent implements ControlValueAccessor {
|
|
|
398
533
|
handlePaste(event: ClipboardEvent): void;
|
|
399
534
|
handleFocus(index: number): void;
|
|
400
535
|
handleBlur(): void;
|
|
536
|
+
/** Moves keyboard focus to the next empty digit (or the last one when full). */
|
|
401
537
|
focus(): void;
|
|
402
538
|
private focusDigit;
|
|
403
539
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CodeInputComponent, never>;
|
|
404
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CodeInputComponent, "ea-code-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "
|
|
540
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CodeInputComponent, "ea-code-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "length": { "alias": "length"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "completed": "completed"; }, never, never, true, never>;
|
|
405
541
|
}
|
|
406
542
|
|
|
543
|
+
/** Visual size of the date picker trigger. */
|
|
407
544
|
type DatePickerSize = 'sm' | 'md' | 'lg';
|
|
545
|
+
/** Locale-aware date format used for the displayed value. */
|
|
408
546
|
type DatePickerFormat = 'short' | 'medium' | 'long';
|
|
547
|
+
/** First day of the week in the calendar grid (0 = Sunday, 1 = Monday). */
|
|
409
548
|
type DatePickerWeekStart = 0 | 1;
|
|
549
|
+
/** Value accepted via `writeValue` — a `Date`, ISO/parseable string, or `null`. */
|
|
410
550
|
type DatePickerValue = Date | string | null;
|
|
411
551
|
interface CalendarDay {
|
|
412
552
|
date: Date;
|
|
@@ -417,13 +557,21 @@ interface CalendarDay {
|
|
|
417
557
|
isDisabled: boolean;
|
|
418
558
|
isFocused: boolean;
|
|
419
559
|
}
|
|
560
|
+
/**
|
|
561
|
+
* Calendar popover for selecting a single date. Supports `min`/`max` bounds,
|
|
562
|
+
* configurable week start, locale-aware formatting via `Intl.DateTimeFormat`,
|
|
563
|
+
* and full keyboard navigation (arrows, PageUp/PageDown, Home/End, Enter,
|
|
564
|
+
* Escape). Integrates with Angular forms via `ControlValueAccessor`.
|
|
565
|
+
*/
|
|
420
566
|
declare class DatePickerComponent implements ControlValueAccessor {
|
|
421
567
|
private readonly hostEl;
|
|
422
568
|
private readonly triggerEl;
|
|
569
|
+
private readonly injector;
|
|
423
570
|
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
424
571
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
425
572
|
readonly size: _angular_core.InputSignal<DatePickerSize>;
|
|
426
573
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
574
|
+
readonly readonly: _angular_core.InputSignal<boolean>;
|
|
427
575
|
readonly required: _angular_core.InputSignal<boolean>;
|
|
428
576
|
readonly hint: _angular_core.InputSignal<string | undefined>;
|
|
429
577
|
readonly errorMsg: _angular_core.InputSignal<string | undefined>;
|
|
@@ -434,6 +582,7 @@ declare class DatePickerComponent implements ControlValueAccessor {
|
|
|
434
582
|
readonly locale: _angular_core.InputSignal<string | undefined>;
|
|
435
583
|
readonly id: _angular_core.InputSignal<string>;
|
|
436
584
|
readonly value: _angular_core.ModelSignal<Date | null>;
|
|
585
|
+
/** Fires when the selected date changes, including when cleared. */
|
|
437
586
|
readonly changed: _angular_core.OutputEmitterRef<Date | null>;
|
|
438
587
|
readonly isOpen: _angular_core.WritableSignal<boolean>;
|
|
439
588
|
readonly viewYear: _angular_core.WritableSignal<number>;
|
|
@@ -443,11 +592,12 @@ declare class DatePickerComponent implements ControlValueAccessor {
|
|
|
443
592
|
private onChange;
|
|
444
593
|
private onTouched;
|
|
445
594
|
readonly isDisabled: _angular_core.Signal<boolean>;
|
|
446
|
-
readonly
|
|
595
|
+
readonly hasError: _angular_core.Signal<boolean>;
|
|
447
596
|
readonly showError: _angular_core.Signal<boolean>;
|
|
448
597
|
readonly showHint: _angular_core.Signal<boolean>;
|
|
449
598
|
readonly triggerClasses: _angular_core.Signal<{
|
|
450
599
|
[x: string]: boolean;
|
|
600
|
+
'ea-date-picker__trigger--error': boolean;
|
|
451
601
|
'ea-date-picker__trigger--open': boolean;
|
|
452
602
|
'ea-date-picker__trigger--disabled': boolean;
|
|
453
603
|
}>;
|
|
@@ -459,10 +609,17 @@ declare class DatePickerComponent implements ControlValueAccessor {
|
|
|
459
609
|
registerOnChange(fn: (value: Date | null) => void): void;
|
|
460
610
|
registerOnTouched(fn: () => void): void;
|
|
461
611
|
setDisabledState(isDisabled: boolean): void;
|
|
612
|
+
/** Toggles the calendar popover between open and closed. */
|
|
462
613
|
toggle(): void;
|
|
614
|
+
/** Opens the calendar popover and moves focus to the focused day cell. */
|
|
463
615
|
open(): void;
|
|
616
|
+
/** Closes the calendar popover. */
|
|
464
617
|
close(): void;
|
|
618
|
+
private focusFocusedDayCell;
|
|
619
|
+
/** Moves keyboard focus to the trigger button. */
|
|
620
|
+
focus(): void;
|
|
465
621
|
selectDay(day: CalendarDay): void;
|
|
622
|
+
/** Clears the selected date and emits `changed` with `null`. */
|
|
466
623
|
clear(event: Event): void;
|
|
467
624
|
goToPrevMonth(): void;
|
|
468
625
|
goToNextMonth(): void;
|
|
@@ -479,19 +636,30 @@ declare class DatePickerComponent implements ControlValueAccessor {
|
|
|
479
636
|
private addDays;
|
|
480
637
|
private addMonths;
|
|
481
638
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatePickerComponent, never>;
|
|
482
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatePickerComponent, "ea-date-picker", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "
|
|
639
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatePickerComponent, "ea-date-picker", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "weekStartsOn": { "alias": "weekStartsOn"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "changed": "changed"; }, never, never, true, never>;
|
|
483
640
|
}
|
|
484
641
|
|
|
642
|
+
/** Width preset of the dialog panel. */
|
|
485
643
|
type DialogSize = 'sm' | 'md' | 'lg' | 'full';
|
|
644
|
+
/**
|
|
645
|
+
* Modal dialog backed by the native `<dialog>` element. Uses `showModal()`
|
|
646
|
+
* for browser-managed focus trapping, supports backdrop and Escape dismissal,
|
|
647
|
+
* and exposes `header`, default, and `footer` content slots. The `open` state
|
|
648
|
+
* is a two-way `model()` binding.
|
|
649
|
+
*/
|
|
486
650
|
declare class DialogComponent {
|
|
487
651
|
private readonly dialogEl;
|
|
652
|
+
private previouslyFocused;
|
|
488
653
|
readonly size: _angular_core.InputSignal<DialogSize>;
|
|
489
654
|
readonly closeOnBackdrop: _angular_core.InputSignal<boolean>;
|
|
490
655
|
readonly closeOnEscape: _angular_core.InputSignal<boolean>;
|
|
491
656
|
readonly showClose: _angular_core.InputSignal<boolean>;
|
|
492
657
|
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
658
|
+
readonly id: _angular_core.InputSignal<string>;
|
|
493
659
|
readonly open: _angular_core.ModelSignal<boolean>;
|
|
660
|
+
/** Fires once the dialog has been shown via `showModal()`. */
|
|
494
661
|
readonly opened: _angular_core.OutputEmitterRef<void>;
|
|
662
|
+
/** Fires when the dialog closes (via close button, backdrop, or Escape). */
|
|
495
663
|
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
496
664
|
readonly panelClasses: _angular_core.Signal<{
|
|
497
665
|
[x: string]: boolean;
|
|
@@ -501,10 +669,15 @@ declare class DialogComponent {
|
|
|
501
669
|
handleBackdropClick(event: MouseEvent): void;
|
|
502
670
|
handleCancel(event: Event): void;
|
|
503
671
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DialogComponent, never>;
|
|
504
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogComponent, "ea-dialog", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "closeOnBackdrop": { "alias": "closeOnBackdrop"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "opened": "opened"; "closed": "closed"; }, never, ["[slot=header]", "*", "[slot=footer]"], true, never>;
|
|
672
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DialogComponent, "ea-dialog", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "closeOnBackdrop": { "alias": "closeOnBackdrop"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "opened": "opened"; "closed": "closed"; }, never, ["[slot=header]", "*", "[slot=footer]"], true, never>;
|
|
505
673
|
}
|
|
506
674
|
|
|
675
|
+
/** Orientation of the divider rule. */
|
|
507
676
|
type DividerOrientation = 'horizontal' | 'vertical';
|
|
677
|
+
/**
|
|
678
|
+
* Thin separator used to visually divide content. Renders horizontally by
|
|
679
|
+
* default and may include an optional centred label (e.g. "or").
|
|
680
|
+
*/
|
|
508
681
|
declare class DividerComponent {
|
|
509
682
|
readonly orientation: _angular_core.InputSignal<DividerOrientation>;
|
|
510
683
|
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
@@ -516,18 +689,30 @@ declare class DividerComponent {
|
|
|
516
689
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DividerComponent, "ea-divider", never, { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
517
690
|
}
|
|
518
691
|
|
|
692
|
+
/** Edge of the viewport from which the drawer slides in. */
|
|
519
693
|
type DrawerPosition = 'left' | 'right' | 'top' | 'bottom';
|
|
694
|
+
/** Size of the drawer panel along its primary axis. */
|
|
520
695
|
type DrawerSize = 'sm' | 'md' | 'lg' | 'full';
|
|
696
|
+
/**
|
|
697
|
+
* Side panel backed by the native `<dialog>` element for browser-managed
|
|
698
|
+
* focus trapping. Slides in from a configurable edge, supports backdrop and
|
|
699
|
+
* Escape dismissal, and exposes `header`, default, and `footer` content
|
|
700
|
+
* slots. The `open` state is a two-way `model()` binding.
|
|
701
|
+
*/
|
|
521
702
|
declare class DrawerComponent {
|
|
522
703
|
private readonly drawerEl;
|
|
704
|
+
private previouslyFocused;
|
|
523
705
|
readonly position: _angular_core.InputSignal<DrawerPosition>;
|
|
524
706
|
readonly size: _angular_core.InputSignal<DrawerSize>;
|
|
525
707
|
readonly closeOnBackdrop: _angular_core.InputSignal<boolean>;
|
|
526
708
|
readonly closeOnEscape: _angular_core.InputSignal<boolean>;
|
|
527
709
|
readonly showClose: _angular_core.InputSignal<boolean>;
|
|
528
710
|
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
711
|
+
readonly id: _angular_core.InputSignal<string>;
|
|
529
712
|
readonly open: _angular_core.ModelSignal<boolean>;
|
|
713
|
+
/** Fires once the drawer has been shown via `showModal()`. */
|
|
530
714
|
readonly opened: _angular_core.OutputEmitterRef<void>;
|
|
715
|
+
/** Fires when the drawer closes (via close button, backdrop, or Escape). */
|
|
531
716
|
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
532
717
|
readonly panelClasses: _angular_core.Signal<{
|
|
533
718
|
[x: string]: boolean;
|
|
@@ -537,29 +722,33 @@ declare class DrawerComponent {
|
|
|
537
722
|
handleBackdropClick(event: MouseEvent): void;
|
|
538
723
|
handleCancel(event: Event): void;
|
|
539
724
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DrawerComponent, never>;
|
|
540
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DrawerComponent, "ea-drawer", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "closeOnBackdrop": { "alias": "closeOnBackdrop"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "opened": "opened"; "closed": "closed"; }, never, ["[slot=header]", "*", "[slot=footer]"], true, never>;
|
|
725
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DrawerComponent, "ea-drawer", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "closeOnBackdrop": { "alias": "closeOnBackdrop"; "required": false; "isSignal": true; }; "closeOnEscape": { "alias": "closeOnEscape"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "opened": "opened"; "closed": "closed"; }, never, ["[slot=header]", "*", "[slot=footer]"], true, never>;
|
|
541
726
|
}
|
|
542
727
|
|
|
728
|
+
/** Visual size of the dropdown trigger. */
|
|
543
729
|
type DropdownSize = 'sm' | 'md' | 'lg';
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
730
|
+
/**
|
|
731
|
+
* Single-select dropdown with a custom popup list. Supports keyboard
|
|
732
|
+
* navigation (arrow keys, Enter/Space to select, Escape to close), closes
|
|
733
|
+
* on outside click or viewport scroll/resize, and integrates with Angular
|
|
734
|
+
* forms via `ControlValueAccessor`.
|
|
735
|
+
*/
|
|
549
736
|
declare class DropdownComponent implements ControlValueAccessor {
|
|
550
737
|
private readonly elRef;
|
|
551
738
|
private readonly menuEl;
|
|
552
739
|
private readonly destroyRef;
|
|
553
740
|
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
554
741
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
555
|
-
readonly options: _angular_core.InputSignal<
|
|
742
|
+
readonly options: _angular_core.InputSignal<SelectOption[]>;
|
|
556
743
|
readonly size: _angular_core.InputSignal<DropdownSize>;
|
|
557
744
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
745
|
+
readonly readonly: _angular_core.InputSignal<boolean>;
|
|
558
746
|
readonly required: _angular_core.InputSignal<boolean>;
|
|
559
747
|
readonly hint: _angular_core.InputSignal<string | undefined>;
|
|
560
748
|
readonly errorMsg: _angular_core.InputSignal<string | undefined>;
|
|
561
749
|
readonly id: _angular_core.InputSignal<string>;
|
|
562
750
|
readonly value: _angular_core.ModelSignal<string>;
|
|
751
|
+
/** Fires with the new value when the user selects an option. */
|
|
563
752
|
readonly changed: _angular_core.OutputEmitterRef<string>;
|
|
564
753
|
readonly isOpen: _angular_core.WritableSignal<boolean>;
|
|
565
754
|
readonly focusedIndex: _angular_core.WritableSignal<number>;
|
|
@@ -567,12 +756,13 @@ declare class DropdownComponent implements ControlValueAccessor {
|
|
|
567
756
|
private onChange;
|
|
568
757
|
private onTouched;
|
|
569
758
|
readonly isDisabled: _angular_core.Signal<boolean>;
|
|
570
|
-
readonly
|
|
759
|
+
readonly hasError: _angular_core.Signal<boolean>;
|
|
571
760
|
readonly showError: _angular_core.Signal<boolean>;
|
|
572
761
|
readonly showHint: _angular_core.Signal<boolean>;
|
|
573
762
|
readonly selectedLabel: _angular_core.Signal<string>;
|
|
574
763
|
readonly triggerClasses: _angular_core.Signal<{
|
|
575
764
|
[x: string]: boolean;
|
|
765
|
+
'ea-dropdown__trigger--error': boolean;
|
|
576
766
|
'ea-dropdown__trigger--open': boolean;
|
|
577
767
|
'ea-dropdown__trigger--disabled': boolean;
|
|
578
768
|
}>;
|
|
@@ -581,18 +771,30 @@ declare class DropdownComponent implements ControlValueAccessor {
|
|
|
581
771
|
registerOnChange(fn: (value: string) => void): void;
|
|
582
772
|
registerOnTouched(fn: () => void): void;
|
|
583
773
|
setDisabledState(isDisabled: boolean): void;
|
|
774
|
+
/** Toggles the dropdown list between open and closed. */
|
|
584
775
|
toggle(): void;
|
|
585
|
-
|
|
776
|
+
/** Programmatically selects the given option, closing the list. */
|
|
777
|
+
select(option: SelectOption): void;
|
|
778
|
+
/** Closes the dropdown list without changing the current value. */
|
|
586
779
|
close(): void;
|
|
780
|
+
/** Moves keyboard focus to the dropdown trigger. */
|
|
781
|
+
focus(): void;
|
|
587
782
|
handleKeydown(event: KeyboardEvent): void;
|
|
588
783
|
private moveFocus;
|
|
589
784
|
onDocumentClick(event: Event): void;
|
|
590
785
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownComponent, never>;
|
|
591
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownComponent, "ea-dropdown", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "
|
|
786
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownComponent, "ea-dropdown", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "changed": "changed"; }, never, never, true, never>;
|
|
592
787
|
}
|
|
593
788
|
|
|
789
|
+
/** Variant of the wordmark — 1: "eagami", 2: "handcrafted by eagami", 3: "eagami design system", 4: with tagline. */
|
|
594
790
|
type EagamiWordmarkVariant = 1 | 2 | 3 | 4;
|
|
791
|
+
/** Layout of the wordmark — `stacked` for multi-line, `inline` for a single line with em-dash separators. */
|
|
595
792
|
type EagamiWordmarkLayout = 'stacked' | 'inline';
|
|
793
|
+
/**
|
|
794
|
+
* Branded eagami wordmark logo. Scales continuously from a single `size`
|
|
795
|
+
* pixel value and supports four content variants paired with stacked or
|
|
796
|
+
* inline layouts.
|
|
797
|
+
*/
|
|
596
798
|
declare class EagamiWordmarkComponent {
|
|
597
799
|
readonly variant: _angular_core.InputSignal<EagamiWordmarkVariant>;
|
|
598
800
|
readonly layout: _angular_core.InputSignal<EagamiWordmarkLayout>;
|
|
@@ -605,6 +807,27 @@ declare class EagamiWordmarkComponent {
|
|
|
605
807
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EagamiWordmarkComponent, "ea-eagami-wordmark", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
606
808
|
}
|
|
607
809
|
|
|
810
|
+
/** Visual size of the empty-state block. */
|
|
811
|
+
type EmptyStateSize = 'sm' | 'md' | 'lg';
|
|
812
|
+
/** Heading level used for the title so it fits the surrounding document outline. */
|
|
813
|
+
type EmptyStateHeadingLevel = 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
|
|
814
|
+
/**
|
|
815
|
+
* Pattern for "no results" or "nothing here yet" screens. Combines an
|
|
816
|
+
* optional title and description with `[slot=media]` (icon or illustration)
|
|
817
|
+
* and `[slot=actions]` (follow-up buttons) content slots.
|
|
818
|
+
*/
|
|
819
|
+
declare class EmptyStateComponent {
|
|
820
|
+
readonly title: _angular_core.InputSignal<string | undefined>;
|
|
821
|
+
readonly description: _angular_core.InputSignal<string | undefined>;
|
|
822
|
+
readonly size: _angular_core.InputSignal<EmptyStateSize>;
|
|
823
|
+
readonly headingLevel: _angular_core.InputSignal<EmptyStateHeadingLevel>;
|
|
824
|
+
readonly hostClasses: _angular_core.Signal<{
|
|
825
|
+
[x: string]: boolean;
|
|
826
|
+
}>;
|
|
827
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmptyStateComponent, never>;
|
|
828
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EmptyStateComponent, "ea-empty-state", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "headingLevel": { "alias": "headingLevel"; "required": false; "isSignal": true; }; }, {}, never, ["[slot=media]", "[slot=actions]"], true, never>;
|
|
829
|
+
}
|
|
830
|
+
|
|
608
831
|
declare class AlertCircleIconComponent {
|
|
609
832
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AlertCircleIconComponent, never>;
|
|
610
833
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertCircleIconComponent, "ea-icon-alert-circle", never, {}, {}, never, never, true, never>;
|
|
@@ -865,16 +1088,22 @@ declare class XIconComponent {
|
|
|
865
1088
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<XIconComponent, "ea-icon-x", never, {}, {}, never, never, true, never>;
|
|
866
1089
|
}
|
|
867
1090
|
|
|
1091
|
+
/** Visual size of the input. */
|
|
868
1092
|
type InputSize = 'sm' | 'md' | 'lg';
|
|
869
|
-
type
|
|
1093
|
+
/** HTML `type` attribute applied to the underlying `<input>`. */
|
|
870
1094
|
type InputType = 'text' | 'email' | 'password' | 'number' | 'search' | 'tel' | 'url';
|
|
1095
|
+
/**
|
|
1096
|
+
* Single-line text field with label, hint, and error message support.
|
|
1097
|
+
* Includes a built-in show/hide toggle for `password` inputs and integrates
|
|
1098
|
+
* with Angular forms via `ControlValueAccessor`. Prefix and suffix content
|
|
1099
|
+
* can be projected via the `prefix` and `suffix` slots.
|
|
1100
|
+
*/
|
|
871
1101
|
declare class InputComponent implements ControlValueAccessor, AfterViewInit {
|
|
872
1102
|
readonly inputEl: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
873
1103
|
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
874
1104
|
readonly type: _angular_core.InputSignal<InputType>;
|
|
875
1105
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
876
1106
|
readonly size: _angular_core.InputSignal<InputSize>;
|
|
877
|
-
readonly status: _angular_core.InputSignal<InputStatus>;
|
|
878
1107
|
readonly hint: _angular_core.InputSignal<string | undefined>;
|
|
879
1108
|
readonly errorMsg: _angular_core.InputSignal<string | undefined>;
|
|
880
1109
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
@@ -885,20 +1114,23 @@ declare class InputComponent implements ControlValueAccessor, AfterViewInit {
|
|
|
885
1114
|
readonly showPasswordToggle: _angular_core.InputSignal<boolean>;
|
|
886
1115
|
readonly id: _angular_core.InputSignal<string>;
|
|
887
1116
|
readonly value: _angular_core.ModelSignal<string>;
|
|
888
|
-
readonly
|
|
1117
|
+
readonly isFocused: _angular_core.WritableSignal<boolean>;
|
|
889
1118
|
readonly passwordVisible: _angular_core.WritableSignal<boolean>;
|
|
890
1119
|
private readonly _formDisabled;
|
|
891
|
-
|
|
892
|
-
readonly
|
|
1120
|
+
/** Fires when the input receives focus. */
|
|
1121
|
+
readonly focused: _angular_core.OutputEmitterRef<FocusEvent>;
|
|
1122
|
+
/** Fires when the input loses focus. */
|
|
1123
|
+
readonly blurred: _angular_core.OutputEmitterRef<FocusEvent>;
|
|
893
1124
|
private onChange;
|
|
894
1125
|
private onTouched;
|
|
895
1126
|
readonly isDisabled: _angular_core.Signal<boolean>;
|
|
896
1127
|
readonly effectiveType: _angular_core.Signal<InputType>;
|
|
897
|
-
readonly
|
|
1128
|
+
readonly hasError: _angular_core.Signal<boolean>;
|
|
898
1129
|
readonly showError: _angular_core.Signal<boolean>;
|
|
899
1130
|
readonly showHint: _angular_core.Signal<boolean>;
|
|
900
1131
|
readonly wrapperClasses: _angular_core.Signal<{
|
|
901
1132
|
[x: string]: boolean;
|
|
1133
|
+
'ea-input-wrapper--error': boolean;
|
|
902
1134
|
'ea-input-wrapper--focused': boolean;
|
|
903
1135
|
'ea-input-wrapper--disabled': boolean;
|
|
904
1136
|
'ea-input-wrapper--readonly': boolean;
|
|
@@ -911,59 +1143,115 @@ declare class InputComponent implements ControlValueAccessor, AfterViewInit {
|
|
|
911
1143
|
handleInput(event: Event): void;
|
|
912
1144
|
handleFocus(event: FocusEvent): void;
|
|
913
1145
|
handleBlur(event: FocusEvent): void;
|
|
1146
|
+
/** Toggles the password reveal state for `type="password"` inputs. */
|
|
914
1147
|
togglePasswordVisibility(): void;
|
|
1148
|
+
/** Moves keyboard focus to the underlying native input element. */
|
|
915
1149
|
focus(): void;
|
|
916
1150
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<InputComponent, never>;
|
|
917
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputComponent, "ea-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "
|
|
1151
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputComponent, "ea-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "showPasswordToggle": { "alias": "showPasswordToggle"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "focused": "focused"; "blurred": "blurred"; }, never, ["[slot=prefix]", "[slot=suffix]"], true, never>;
|
|
918
1152
|
}
|
|
919
1153
|
|
|
1154
|
+
/** Placement of the menu list relative to its trigger. */
|
|
920
1155
|
type MenuPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';
|
|
1156
|
+
/**
|
|
1157
|
+
* Popup action menu attached to any focusable element via the
|
|
1158
|
+
* `[eaMenuTrigger]` directive. Supports keyboard navigation
|
|
1159
|
+
* (arrow keys, Home/End), closes on outside click or Escape, and restores
|
|
1160
|
+
* focus to the trigger on close.
|
|
1161
|
+
*/
|
|
921
1162
|
declare class MenuComponent {
|
|
922
|
-
private readonly
|
|
1163
|
+
private readonly injector;
|
|
1164
|
+
private readonly listEl;
|
|
923
1165
|
readonly placement: _angular_core.InputSignal<MenuPlacement>;
|
|
924
1166
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
925
1167
|
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
1168
|
+
readonly id: _angular_core.InputSignal<string>;
|
|
926
1169
|
readonly open: _angular_core.ModelSignal<boolean>;
|
|
1170
|
+
/** Fires when the menu opens. */
|
|
927
1171
|
readonly opened: _angular_core.OutputEmitterRef<void>;
|
|
1172
|
+
/** Fires when the menu closes. */
|
|
928
1173
|
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
929
|
-
|
|
930
|
-
readonly
|
|
1174
|
+
private triggerEl;
|
|
1175
|
+
private readonly triggerRect;
|
|
1176
|
+
readonly listClasses: _angular_core.Signal<{
|
|
931
1177
|
[x: string]: boolean;
|
|
932
1178
|
}>;
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
1179
|
+
readonly listStyle: _angular_core.Signal<Record<string, string>>;
|
|
1180
|
+
/** Toggles the menu open state, anchoring it to the given trigger element. */
|
|
1181
|
+
toggleAt(triggerEl: HTMLElement): void;
|
|
1182
|
+
/** Opens the menu anchored to the given trigger element and focuses the first item. */
|
|
1183
|
+
openAt(triggerEl: HTMLElement): void;
|
|
1184
|
+
/**
|
|
1185
|
+
* Closes the menu if it is open. Pass `restoreFocus: true` to return focus
|
|
1186
|
+
* to the trigger element (used when closing via Escape or item activation;
|
|
1187
|
+
* not used on outside click, where the user has chosen a new focus target).
|
|
1188
|
+
*/
|
|
1189
|
+
close(restoreFocus?: boolean): void;
|
|
1190
|
+
private getEnabledItems;
|
|
1191
|
+
private focusFirstItem;
|
|
1192
|
+
onKeydown(event: KeyboardEvent): void;
|
|
936
1193
|
onDocumentClick(event: Event): void;
|
|
937
1194
|
onEscape(): void;
|
|
1195
|
+
onViewportChange(): void;
|
|
938
1196
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuComponent, never>;
|
|
939
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuComponent, "ea-menu", never, { "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "opened": "opened"; "closed": "closed"; }, never, ["
|
|
1197
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuComponent, "ea-menu", never, { "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "opened": "opened"; "closed": "closed"; }, never, ["*"], true, never>;
|
|
940
1198
|
}
|
|
941
1199
|
|
|
1200
|
+
/** Visual style of a menu item — `danger` for destructive actions. */
|
|
942
1201
|
type MenuItemVariant = 'default' | 'danger';
|
|
1202
|
+
/**
|
|
1203
|
+
* Selectable row inside an `ea-menu`. Supports leading icons via the `icon`
|
|
1204
|
+
* content slot, a disabled state, and a `danger` variant for destructive
|
|
1205
|
+
* actions. Activating an item closes its parent menu.
|
|
1206
|
+
*/
|
|
943
1207
|
declare class MenuItemComponent {
|
|
944
1208
|
private readonly menu;
|
|
945
1209
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
946
1210
|
readonly variant: _angular_core.InputSignal<MenuItemVariant>;
|
|
947
|
-
|
|
1211
|
+
/** Fires when the item is activated; the parent menu closes immediately afterwards. */
|
|
1212
|
+
readonly clicked: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
948
1213
|
handleClick(event: MouseEvent): void;
|
|
949
1214
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuItemComponent, never>;
|
|
950
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuItemComponent, "ea-menu-item", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, { "
|
|
1215
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MenuItemComponent, "ea-menu-item", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, ["[slot=icon]", "*"], true, never>;
|
|
1216
|
+
}
|
|
1217
|
+
|
|
1218
|
+
/**
|
|
1219
|
+
* Wires a focusable host element (typically a button) to an `ea-menu`,
|
|
1220
|
+
* handling click and keyboard activation (ArrowDown/Enter/Space to open,
|
|
1221
|
+
* Escape to close) and applying the appropriate ARIA attributes.
|
|
1222
|
+
*/
|
|
1223
|
+
declare class MenuTriggerDirective {
|
|
1224
|
+
private readonly el;
|
|
1225
|
+
readonly menu: _angular_core.InputSignal<MenuComponent>;
|
|
1226
|
+
handleClick(): void;
|
|
1227
|
+
handleKeydown(event: KeyboardEvent): void;
|
|
1228
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MenuTriggerDirective, never>;
|
|
1229
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<MenuTriggerDirective, "[eaMenuTrigger]", never, { "menu": { "alias": "eaMenuTrigger"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
951
1230
|
}
|
|
952
1231
|
|
|
953
|
-
|
|
1232
|
+
/** Horizontal alignment of paginator controls within their container. */
|
|
1233
|
+
type PaginatorAlign = 'left' | 'center' | 'right';
|
|
1234
|
+
/** Snapshot of the paginator's page and page size. */
|
|
954
1235
|
interface PaginatorState {
|
|
955
1236
|
page: number;
|
|
956
1237
|
pageSize: number;
|
|
957
1238
|
}
|
|
1239
|
+
/**
|
|
1240
|
+
* Page navigation control with previous/next buttons, numbered page jumps,
|
|
1241
|
+
* an optional page-size selector, and a range label. Exposes `page` and
|
|
1242
|
+
* `pageSize` as two-way `model()` bindings and emits a single `changed`
|
|
1243
|
+
* event whenever either changes.
|
|
1244
|
+
*/
|
|
958
1245
|
declare class PaginatorComponent {
|
|
959
1246
|
readonly totalItems: _angular_core.InputSignal<number>;
|
|
960
1247
|
readonly pageSizeOptions: _angular_core.InputSignal<number[]>;
|
|
961
1248
|
readonly showPageSizeSelector: _angular_core.InputSignal<boolean>;
|
|
962
1249
|
readonly showRangeLabel: _angular_core.InputSignal<boolean>;
|
|
963
|
-
readonly
|
|
1250
|
+
readonly align: _angular_core.InputSignal<PaginatorAlign>;
|
|
964
1251
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
965
1252
|
readonly page: _angular_core.ModelSignal<number>;
|
|
966
1253
|
readonly pageSize: _angular_core.ModelSignal<number>;
|
|
1254
|
+
/** Fires when the user changes either the current page or the page size. */
|
|
967
1255
|
readonly changed: _angular_core.OutputEmitterRef<PaginatorState>;
|
|
968
1256
|
readonly totalPages: _angular_core.Signal<number>;
|
|
969
1257
|
readonly rangeStart: _angular_core.Signal<number>;
|
|
@@ -971,22 +1259,32 @@ declare class PaginatorComponent {
|
|
|
971
1259
|
readonly canGoPrev: _angular_core.Signal<boolean>;
|
|
972
1260
|
readonly canGoNext: _angular_core.Signal<boolean>;
|
|
973
1261
|
readonly visiblePages: _angular_core.Signal<(number | "ellipsis")[]>;
|
|
1262
|
+
/** Navigates to the given page, clamped into the valid range. */
|
|
974
1263
|
goToPage(page: number): void;
|
|
1264
|
+
/** Navigates to the previous page if one exists. */
|
|
975
1265
|
prevPage(): void;
|
|
1266
|
+
/** Navigates to the next page if one exists. */
|
|
976
1267
|
nextPage(): void;
|
|
977
1268
|
onPageSizeChange(event: Event): void;
|
|
978
1269
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PaginatorComponent, never>;
|
|
979
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PaginatorComponent, "ea-paginator", never, { "totalItems": { "alias": "totalItems"; "required": true; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "showPageSizeSelector": { "alias": "showPageSizeSelector"; "required": false; "isSignal": true; }; "showRangeLabel": { "alias": "showRangeLabel"; "required": false; "isSignal": true; }; "
|
|
1270
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PaginatorComponent, "ea-paginator", never, { "totalItems": { "alias": "totalItems"; "required": true; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "showPageSizeSelector": { "alias": "showPageSizeSelector"; "required": false; "isSignal": true; }; "showRangeLabel": { "alias": "showRangeLabel"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "page": { "alias": "page"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; }, { "page": "pageChange"; "pageSize": "pageSizeChange"; "changed": "changed"; }, never, never, true, never>;
|
|
980
1271
|
}
|
|
981
1272
|
|
|
1273
|
+
/** Semantic colour scheme of the progress bar. */
|
|
982
1274
|
type ProgressBarVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
|
|
1275
|
+
/** Visual height of the progress bar. */
|
|
983
1276
|
type ProgressBarSize = 'sm' | 'md' | 'lg';
|
|
1277
|
+
/**
|
|
1278
|
+
* Linear progress indicator supporting both determinate (driven by `value`
|
|
1279
|
+
* and `max`) and indeterminate modes. Optionally renders an inline label
|
|
1280
|
+
* and/or the current percentage.
|
|
1281
|
+
*/
|
|
984
1282
|
declare class ProgressBarComponent {
|
|
985
1283
|
readonly value: _angular_core.InputSignal<number>;
|
|
986
1284
|
readonly max: _angular_core.InputSignal<number>;
|
|
987
1285
|
readonly variant: _angular_core.InputSignal<ProgressBarVariant>;
|
|
988
1286
|
readonly size: _angular_core.InputSignal<ProgressBarSize>;
|
|
989
|
-
readonly label: _angular_core.InputSignal<string>;
|
|
1287
|
+
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
990
1288
|
readonly showValue: _angular_core.InputSignal<boolean>;
|
|
991
1289
|
readonly indeterminate: _angular_core.InputSignal<boolean>;
|
|
992
1290
|
readonly percentage: _angular_core.Signal<number>;
|
|
@@ -999,29 +1297,51 @@ declare class ProgressBarComponent {
|
|
|
999
1297
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ProgressBarComponent, "ea-progress-bar", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1000
1298
|
}
|
|
1001
1299
|
|
|
1300
|
+
/** Visual size shared by all radios in the group. */
|
|
1002
1301
|
type RadioSize = 'sm' | 'md' | 'lg';
|
|
1302
|
+
/** Layout direction for radios within the group. */
|
|
1003
1303
|
type RadioOrientation = 'vertical' | 'horizontal';
|
|
1304
|
+
/**
|
|
1305
|
+
* Composite single-select control made up of `ea-radio` children. Manages
|
|
1306
|
+
* shared state (name, size, disabled) for its options and integrates with
|
|
1307
|
+
* Angular forms via `ControlValueAccessor`.
|
|
1308
|
+
*/
|
|
1004
1309
|
declare class RadioGroupComponent implements ControlValueAccessor {
|
|
1310
|
+
readonly id: _angular_core.InputSignal<string>;
|
|
1005
1311
|
readonly name: _angular_core.InputSignal<string>;
|
|
1006
1312
|
readonly size: _angular_core.InputSignal<RadioSize>;
|
|
1007
1313
|
readonly orientation: _angular_core.InputSignal<RadioOrientation>;
|
|
1008
1314
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
1315
|
+
readonly required: _angular_core.InputSignal<boolean>;
|
|
1316
|
+
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
1317
|
+
readonly hint: _angular_core.InputSignal<string | undefined>;
|
|
1318
|
+
readonly errorMsg: _angular_core.InputSignal<string | undefined>;
|
|
1009
1319
|
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
1010
1320
|
readonly value: _angular_core.ModelSignal<string>;
|
|
1321
|
+
/** Fires with the new value when an option is selected. */
|
|
1011
1322
|
readonly changed: _angular_core.OutputEmitterRef<string>;
|
|
1012
1323
|
private readonly _formDisabled;
|
|
1013
1324
|
readonly isDisabled: _angular_core.Signal<boolean>;
|
|
1325
|
+
readonly hasError: _angular_core.Signal<boolean>;
|
|
1326
|
+
readonly showError: _angular_core.Signal<boolean>;
|
|
1327
|
+
readonly showHint: _angular_core.Signal<boolean>;
|
|
1014
1328
|
private onChange;
|
|
1015
1329
|
private onTouched;
|
|
1016
1330
|
writeValue(val: string): void;
|
|
1017
1331
|
registerOnChange(fn: (value: string) => void): void;
|
|
1018
1332
|
registerOnTouched(fn: () => void): void;
|
|
1019
1333
|
setDisabledState(isDisabled: boolean): void;
|
|
1334
|
+
/** Programmatically selects the option with the given value. */
|
|
1020
1335
|
select(val: string): void;
|
|
1021
1336
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RadioGroupComponent, never>;
|
|
1022
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadioGroupComponent, "ea-radio-group", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "changed": "changed"; }, never, ["*"], true, never>;
|
|
1337
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadioGroupComponent, "ea-radio-group", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "changed": "changed"; }, never, ["*"], true, never>;
|
|
1023
1338
|
}
|
|
1024
1339
|
|
|
1340
|
+
/**
|
|
1341
|
+
* Single radio option used inside an `ea-radio-group`. Inherits its size and
|
|
1342
|
+
* disabled state from the parent group and selecting it updates the group's
|
|
1343
|
+
* value.
|
|
1344
|
+
*/
|
|
1025
1345
|
declare class RadioComponent {
|
|
1026
1346
|
private readonly group;
|
|
1027
1347
|
readonly value: _angular_core.InputSignal<string>;
|
|
@@ -1042,7 +1362,63 @@ declare class RadioComponent {
|
|
|
1042
1362
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadioComponent, "ea-radio", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1043
1363
|
}
|
|
1044
1364
|
|
|
1365
|
+
/** Visual size of the segmented control. */
|
|
1366
|
+
type SegmentedSize = 'sm' | 'md' | 'lg';
|
|
1367
|
+
/**
|
|
1368
|
+
* Compact toggle button group for picking one of a small set of options
|
|
1369
|
+
* (e.g. List/Grid/Kanban or Light/Dark). Implements `radiogroup` semantics
|
|
1370
|
+
* and `ControlValueAccessor`, with full keyboard support
|
|
1371
|
+
* (arrow keys, Home/End, Enter/Space).
|
|
1372
|
+
*/
|
|
1373
|
+
declare class SegmentedComponent implements ControlValueAccessor {
|
|
1374
|
+
readonly buttonEls: _angular_core.Signal<readonly ElementRef<HTMLButtonElement>[]>;
|
|
1375
|
+
readonly options: _angular_core.InputSignal<SelectOption[]>;
|
|
1376
|
+
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
1377
|
+
readonly hint: _angular_core.InputSignal<string | undefined>;
|
|
1378
|
+
readonly errorMsg: _angular_core.InputSignal<string | undefined>;
|
|
1379
|
+
readonly size: _angular_core.InputSignal<SegmentedSize>;
|
|
1380
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
1381
|
+
readonly required: _angular_core.InputSignal<boolean>;
|
|
1382
|
+
readonly fullWidth: _angular_core.InputSignal<boolean>;
|
|
1383
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
1384
|
+
readonly id: _angular_core.InputSignal<string>;
|
|
1385
|
+
readonly value: _angular_core.ModelSignal<string>;
|
|
1386
|
+
/** Fires with the new value when the user selects a different option. */
|
|
1387
|
+
readonly changed: _angular_core.OutputEmitterRef<string>;
|
|
1388
|
+
private readonly _formDisabled;
|
|
1389
|
+
private onChange;
|
|
1390
|
+
private onTouched;
|
|
1391
|
+
readonly isDisabled: _angular_core.Signal<boolean>;
|
|
1392
|
+
readonly hasError: _angular_core.Signal<boolean>;
|
|
1393
|
+
readonly showError: _angular_core.Signal<boolean>;
|
|
1394
|
+
readonly showHint: _angular_core.Signal<boolean>;
|
|
1395
|
+
readonly enabledOptions: _angular_core.Signal<SelectOption[]>;
|
|
1396
|
+
readonly hostClasses: _angular_core.Signal<{
|
|
1397
|
+
[x: string]: boolean;
|
|
1398
|
+
'ea-segmented--full-width': boolean;
|
|
1399
|
+
'ea-segmented--disabled': boolean;
|
|
1400
|
+
'ea-segmented--error': boolean;
|
|
1401
|
+
}>;
|
|
1402
|
+
writeValue(val: string): void;
|
|
1403
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
1404
|
+
registerOnTouched(fn: () => void): void;
|
|
1405
|
+
setDisabledState(isDisabled: boolean): void;
|
|
1406
|
+
isSelected(option: SelectOption): boolean;
|
|
1407
|
+
isOptionDisabled(option: SelectOption): boolean;
|
|
1408
|
+
/** Programmatically selects the given option. */
|
|
1409
|
+
select(option: SelectOption): void;
|
|
1410
|
+
handleKeydown(event: KeyboardEvent, index: number): void;
|
|
1411
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SegmentedComponent, never>;
|
|
1412
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SegmentedComponent, "ea-segmented", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "changed": "changed"; }, never, never, true, never>;
|
|
1413
|
+
}
|
|
1414
|
+
|
|
1415
|
+
/** Shape preset of a skeleton placeholder. */
|
|
1045
1416
|
type SkeletonVariant = 'text' | 'circle' | 'rect';
|
|
1417
|
+
/**
|
|
1418
|
+
* Loading placeholder rendered as a pulsing block in one of three shapes.
|
|
1419
|
+
* Honours `prefers-reduced-motion` by suppressing the pulse animation when
|
|
1420
|
+
* the user has expressed that preference.
|
|
1421
|
+
*/
|
|
1046
1422
|
declare class SkeletonComponent {
|
|
1047
1423
|
readonly variant: _angular_core.InputSignal<SkeletonVariant>;
|
|
1048
1424
|
readonly width: _angular_core.InputSignal<string | undefined>;
|
|
@@ -1057,7 +1433,70 @@ declare class SkeletonComponent {
|
|
|
1057
1433
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkeletonComponent, "ea-skeleton", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "animated": { "alias": "animated"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1058
1434
|
}
|
|
1059
1435
|
|
|
1436
|
+
/** Visual size of the slider track and thumb. */
|
|
1437
|
+
type SliderSize = 'sm' | 'md' | 'lg';
|
|
1438
|
+
/**
|
|
1439
|
+
* Single-value range input controlled with pointer drag or full keyboard
|
|
1440
|
+
* navigation (arrows, PageUp/PageDown, Home/End). Supports configurable
|
|
1441
|
+
* `min`, `max`, and `step`, optional value display, and integrates with
|
|
1442
|
+
* Angular forms via `ControlValueAccessor`.
|
|
1443
|
+
*/
|
|
1444
|
+
declare class SliderComponent implements ControlValueAccessor {
|
|
1445
|
+
readonly trackEl: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
|
|
1446
|
+
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
1447
|
+
readonly hint: _angular_core.InputSignal<string | undefined>;
|
|
1448
|
+
readonly errorMsg: _angular_core.InputSignal<string | undefined>;
|
|
1449
|
+
readonly min: _angular_core.InputSignal<number>;
|
|
1450
|
+
readonly max: _angular_core.InputSignal<number>;
|
|
1451
|
+
readonly step: _angular_core.InputSignal<number>;
|
|
1452
|
+
readonly size: _angular_core.InputSignal<SliderSize>;
|
|
1453
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
1454
|
+
readonly required: _angular_core.InputSignal<boolean>;
|
|
1455
|
+
readonly showValue: _angular_core.InputSignal<boolean>;
|
|
1456
|
+
readonly showMinMaxLabels: _angular_core.InputSignal<boolean>;
|
|
1457
|
+
readonly formatValue: _angular_core.InputSignal<(value: number) => string>;
|
|
1458
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
1459
|
+
readonly id: _angular_core.InputSignal<string>;
|
|
1460
|
+
readonly value: _angular_core.ModelSignal<number>;
|
|
1461
|
+
/** Fires with the new (snapped, clamped) numeric value whenever the slider moves. */
|
|
1462
|
+
readonly changed: _angular_core.OutputEmitterRef<number>;
|
|
1463
|
+
private readonly _formDisabled;
|
|
1464
|
+
readonly dragging: _angular_core.WritableSignal<boolean>;
|
|
1465
|
+
private onChange;
|
|
1466
|
+
private onTouched;
|
|
1467
|
+
readonly isDisabled: _angular_core.Signal<boolean>;
|
|
1468
|
+
readonly clampedValue: _angular_core.Signal<number>;
|
|
1469
|
+
readonly percent: _angular_core.Signal<number>;
|
|
1470
|
+
readonly hasError: _angular_core.Signal<boolean>;
|
|
1471
|
+
readonly showError: _angular_core.Signal<boolean>;
|
|
1472
|
+
readonly showHint: _angular_core.Signal<boolean>;
|
|
1473
|
+
readonly hostClasses: _angular_core.Signal<{
|
|
1474
|
+
[x: string]: boolean;
|
|
1475
|
+
'ea-slider--error': boolean;
|
|
1476
|
+
'ea-slider--disabled': boolean;
|
|
1477
|
+
'ea-slider--dragging': boolean;
|
|
1478
|
+
}>;
|
|
1479
|
+
writeValue(val: number): void;
|
|
1480
|
+
registerOnChange(fn: (value: number) => void): void;
|
|
1481
|
+
registerOnTouched(fn: () => void): void;
|
|
1482
|
+
setDisabledState(isDisabled: boolean): void;
|
|
1483
|
+
handleKeydown(event: KeyboardEvent): void;
|
|
1484
|
+
handlePointerDown(event: PointerEvent): void;
|
|
1485
|
+
handlePointerMove(event: PointerEvent): void;
|
|
1486
|
+
handlePointerUp(event: PointerEvent): void;
|
|
1487
|
+
handleBlur(): void;
|
|
1488
|
+
private updateFromPointer;
|
|
1489
|
+
private commitValue;
|
|
1490
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SliderComponent, never>;
|
|
1491
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SliderComponent, "ea-slider", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "showMinMaxLabels": { "alias": "showMinMaxLabels"; "required": false; "isSignal": true; }; "formatValue": { "alias": "formatValue"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "changed": "changed"; }, never, never, true, never>;
|
|
1492
|
+
}
|
|
1493
|
+
|
|
1494
|
+
/** Visual size of the spinner. */
|
|
1060
1495
|
type SpinnerSize = 'sm' | 'md' | 'lg';
|
|
1496
|
+
/**
|
|
1497
|
+
* SVG loading indicator with an accessible `role="status"`. Uses the `label`
|
|
1498
|
+
* input as the accessible name announced to assistive technology.
|
|
1499
|
+
*/
|
|
1061
1500
|
declare class SpinnerComponent {
|
|
1062
1501
|
readonly size: _angular_core.InputSignal<SpinnerSize>;
|
|
1063
1502
|
readonly label: _angular_core.InputSignal<string>;
|
|
@@ -1068,22 +1507,37 @@ declare class SpinnerComponent {
|
|
|
1068
1507
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SpinnerComponent, "ea-spinner", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1069
1508
|
}
|
|
1070
1509
|
|
|
1510
|
+
/** Visual size of the switch. */
|
|
1071
1511
|
type SwitchSize = 'sm' | 'md' | 'lg';
|
|
1512
|
+
/**
|
|
1513
|
+
* On/off toggle styled as a sliding switch. Backed by a visually hidden
|
|
1514
|
+
* native checkbox and integrates with Angular forms via
|
|
1515
|
+
* `ControlValueAccessor`.
|
|
1516
|
+
*/
|
|
1072
1517
|
declare class SwitchComponent implements ControlValueAccessor {
|
|
1073
1518
|
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
1519
|
+
readonly hint: _angular_core.InputSignal<string | undefined>;
|
|
1520
|
+
readonly errorMsg: _angular_core.InputSignal<string | undefined>;
|
|
1074
1521
|
readonly size: _angular_core.InputSignal<SwitchSize>;
|
|
1075
1522
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
1523
|
+
readonly required: _angular_core.InputSignal<boolean>;
|
|
1524
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
1076
1525
|
readonly id: _angular_core.InputSignal<string>;
|
|
1077
1526
|
readonly checked: _angular_core.ModelSignal<boolean>;
|
|
1527
|
+
/** Fires with the new checked state whenever the user toggles the switch. */
|
|
1078
1528
|
readonly changed: _angular_core.OutputEmitterRef<boolean>;
|
|
1079
1529
|
private readonly _formDisabled;
|
|
1080
1530
|
private onChange;
|
|
1081
1531
|
private onTouched;
|
|
1082
1532
|
readonly isDisabled: _angular_core.Signal<boolean>;
|
|
1533
|
+
readonly hasError: _angular_core.Signal<boolean>;
|
|
1534
|
+
readonly showError: _angular_core.Signal<boolean>;
|
|
1535
|
+
readonly showHint: _angular_core.Signal<boolean>;
|
|
1083
1536
|
readonly hostClasses: _angular_core.Signal<{
|
|
1084
1537
|
[x: string]: boolean;
|
|
1085
1538
|
'ea-switch--checked': boolean;
|
|
1086
1539
|
'ea-switch--disabled': boolean;
|
|
1540
|
+
'ea-switch--error': boolean;
|
|
1087
1541
|
}>;
|
|
1088
1542
|
writeValue(val: boolean): void;
|
|
1089
1543
|
registerOnChange(fn: (value: boolean) => void): void;
|
|
@@ -1091,44 +1545,71 @@ declare class SwitchComponent implements ControlValueAccessor {
|
|
|
1091
1545
|
setDisabledState(isDisabled: boolean): void;
|
|
1092
1546
|
handleChange(): void;
|
|
1093
1547
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SwitchComponent, never>;
|
|
1094
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SwitchComponent, "ea-switch", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "changed": "changed"; }, never, never, true, never>;
|
|
1548
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SwitchComponent, "ea-switch", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "changed": "changed"; }, never, never, true, never>;
|
|
1095
1549
|
}
|
|
1096
1550
|
|
|
1551
|
+
/**
|
|
1552
|
+
* Single tab within an `ea-tabs` group. Registers itself with the parent on
|
|
1553
|
+
* init, exposes its `value` and `label`, and shows its projected content
|
|
1554
|
+
* when active.
|
|
1555
|
+
*/
|
|
1097
1556
|
declare class TabComponent implements OnInit, OnDestroy {
|
|
1098
1557
|
private readonly tabs;
|
|
1099
1558
|
readonly value: _angular_core.InputSignal<string>;
|
|
1100
1559
|
readonly label: _angular_core.InputSignal<string>;
|
|
1101
1560
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
1561
|
+
readonly id: _angular_core.InputSignal<string>;
|
|
1102
1562
|
readonly isActive: _angular_core.Signal<boolean>;
|
|
1103
1563
|
ngOnInit(): void;
|
|
1104
1564
|
ngOnDestroy(): void;
|
|
1105
1565
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabComponent, never>;
|
|
1106
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabComponent, "ea-tab", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
1566
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabComponent, "ea-tab", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
1107
1567
|
}
|
|
1108
1568
|
|
|
1569
|
+
/** Visual style of the tab bar. */
|
|
1109
1570
|
type TabsVariant = 'underline' | 'filled';
|
|
1571
|
+
/** Visual size of the tabs. */
|
|
1110
1572
|
type TabsSize = 'sm' | 'md' | 'lg';
|
|
1573
|
+
/**
|
|
1574
|
+
* Tab bar paired with content panels. Child `ea-tab` components register
|
|
1575
|
+
* themselves automatically and the active panel is shown based on the
|
|
1576
|
+
* `activeTab` two-way binding. Supports keyboard navigation
|
|
1577
|
+
* (arrow keys, Home/End).
|
|
1578
|
+
*/
|
|
1111
1579
|
declare class TabsComponent {
|
|
1112
1580
|
readonly registeredTabs: _angular_core.WritableSignal<TabComponent[]>;
|
|
1113
1581
|
readonly variant: _angular_core.InputSignal<TabsVariant>;
|
|
1114
1582
|
readonly size: _angular_core.InputSignal<TabsSize>;
|
|
1115
1583
|
readonly activeTab: _angular_core.ModelSignal<string>;
|
|
1116
|
-
|
|
1584
|
+
/** Fires with the value of the newly active tab. */
|
|
1585
|
+
readonly changed: _angular_core.OutputEmitterRef<string>;
|
|
1586
|
+
/** Registers a child tab so it appears in the tab bar; called automatically by `ea-tab`. */
|
|
1117
1587
|
registerTab(tab: TabComponent): void;
|
|
1588
|
+
/** Removes a previously registered child tab; called automatically by `ea-tab`. */
|
|
1118
1589
|
unregisterTab(tab: TabComponent): void;
|
|
1590
|
+
/** Programmatically activates the tab with the given value. */
|
|
1119
1591
|
selectTab(value: string): void;
|
|
1120
1592
|
handleKeydown(event: KeyboardEvent): void;
|
|
1121
1593
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabsComponent, never>;
|
|
1122
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabsComponent, "ea-tabs", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "activeTab": { "alias": "activeTab"; "required": false; "isSignal": true; }; }, { "activeTab": "activeTabChange"; "
|
|
1594
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabsComponent, "ea-tabs", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "activeTab": { "alias": "activeTab"; "required": false; "isSignal": true; }; }, { "activeTab": "activeTabChange"; "changed": "changed"; }, never, ["*"], true, never>;
|
|
1123
1595
|
}
|
|
1124
1596
|
|
|
1125
|
-
|
|
1597
|
+
/** Semantic colour scheme of a tag. */
|
|
1598
|
+
type TagVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
|
|
1599
|
+
/** Visual size of a tag. */
|
|
1126
1600
|
type TagSize = 'sm' | 'md' | 'lg';
|
|
1601
|
+
/**
|
|
1602
|
+
* Inline label commonly used to represent filters, categories, or selected
|
|
1603
|
+
* items. When `removable`, renders a close button that emits `removed`; the
|
|
1604
|
+
* accessible name of that button is configurable via `removeLabel`.
|
|
1605
|
+
*/
|
|
1127
1606
|
declare class TagComponent {
|
|
1128
1607
|
readonly variant: _angular_core.InputSignal<TagVariant>;
|
|
1129
1608
|
readonly size: _angular_core.InputSignal<TagSize>;
|
|
1130
1609
|
readonly removable: _angular_core.InputSignal<boolean>;
|
|
1131
1610
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
1611
|
+
readonly removeLabel: _angular_core.InputSignal<string>;
|
|
1612
|
+
/** Fires when the user activates the remove button on a `removable` tag. */
|
|
1132
1613
|
readonly removed: _angular_core.OutputEmitterRef<void>;
|
|
1133
1614
|
readonly hostClasses: _angular_core.Signal<{
|
|
1134
1615
|
[x: string]: boolean;
|
|
@@ -1136,18 +1617,23 @@ declare class TagComponent {
|
|
|
1136
1617
|
}>;
|
|
1137
1618
|
onRemove(event: MouseEvent): void;
|
|
1138
1619
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TagComponent, never>;
|
|
1139
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagComponent, "ea-tag", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "removed": "removed"; }, never, ["*"], true, never>;
|
|
1620
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagComponent, "ea-tag", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; }, { "removed": "removed"; }, never, ["*"], true, never>;
|
|
1140
1621
|
}
|
|
1141
1622
|
|
|
1623
|
+
/** Visual size of the textarea. */
|
|
1142
1624
|
type TextareaSize = 'sm' | 'md' | 'lg';
|
|
1143
|
-
|
|
1625
|
+
/** Axis along which the user is allowed to resize the textarea. */
|
|
1144
1626
|
type TextareaResize = 'none' | 'vertical' | 'horizontal' | 'both';
|
|
1627
|
+
/**
|
|
1628
|
+
* Multiline text field that mirrors the `ea-input` API. Supports configurable
|
|
1629
|
+
* `rows`, `resize` direction, and `maxlength`, and integrates with Angular
|
|
1630
|
+
* forms via `ControlValueAccessor`.
|
|
1631
|
+
*/
|
|
1145
1632
|
declare class TextareaComponent implements ControlValueAccessor {
|
|
1146
1633
|
readonly textareaEl: _angular_core.Signal<ElementRef<HTMLTextAreaElement> | undefined>;
|
|
1147
1634
|
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
1148
1635
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
1149
1636
|
readonly size: _angular_core.InputSignal<TextareaSize>;
|
|
1150
|
-
readonly status: _angular_core.InputSignal<TextareaStatus>;
|
|
1151
1637
|
readonly hint: _angular_core.InputSignal<string | undefined>;
|
|
1152
1638
|
readonly errorMsg: _angular_core.InputSignal<string | undefined>;
|
|
1153
1639
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
@@ -1158,18 +1644,21 @@ declare class TextareaComponent implements ControlValueAccessor {
|
|
|
1158
1644
|
readonly maxlength: _angular_core.InputSignal<number | undefined>;
|
|
1159
1645
|
readonly id: _angular_core.InputSignal<string>;
|
|
1160
1646
|
readonly value: _angular_core.ModelSignal<string>;
|
|
1161
|
-
readonly
|
|
1647
|
+
readonly isFocused: _angular_core.WritableSignal<boolean>;
|
|
1162
1648
|
private readonly _formDisabled;
|
|
1163
|
-
|
|
1164
|
-
readonly
|
|
1649
|
+
/** Fires when the textarea receives focus. */
|
|
1650
|
+
readonly focused: _angular_core.OutputEmitterRef<FocusEvent>;
|
|
1651
|
+
/** Fires when the textarea loses focus. */
|
|
1652
|
+
readonly blurred: _angular_core.OutputEmitterRef<FocusEvent>;
|
|
1165
1653
|
private onChange;
|
|
1166
1654
|
private onTouched;
|
|
1167
1655
|
readonly isDisabled: _angular_core.Signal<boolean>;
|
|
1168
|
-
readonly
|
|
1656
|
+
readonly hasError: _angular_core.Signal<boolean>;
|
|
1169
1657
|
readonly showError: _angular_core.Signal<boolean>;
|
|
1170
1658
|
readonly showHint: _angular_core.Signal<boolean>;
|
|
1171
1659
|
readonly wrapperClasses: _angular_core.Signal<{
|
|
1172
1660
|
[x: string]: boolean;
|
|
1661
|
+
'ea-textarea-wrapper--error': boolean;
|
|
1173
1662
|
'ea-textarea-wrapper--focused': boolean;
|
|
1174
1663
|
'ea-textarea-wrapper--disabled': boolean;
|
|
1175
1664
|
'ea-textarea-wrapper--readonly': boolean;
|
|
@@ -1181,59 +1670,92 @@ declare class TextareaComponent implements ControlValueAccessor {
|
|
|
1181
1670
|
handleInput(event: Event): void;
|
|
1182
1671
|
handleFocus(event: FocusEvent): void;
|
|
1183
1672
|
handleBlur(event: FocusEvent): void;
|
|
1673
|
+
/** Moves keyboard focus to the underlying native textarea element. */
|
|
1184
1674
|
focus(): void;
|
|
1185
1675
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextareaComponent, never>;
|
|
1186
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextareaComponent, "ea-textarea", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "
|
|
1676
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextareaComponent, "ea-textarea", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "resize": { "alias": "resize"; "required": false; "isSignal": true; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "focused": "focused"; "blurred": "blurred"; }, never, never, true, never>;
|
|
1187
1677
|
}
|
|
1188
1678
|
|
|
1679
|
+
/** Semantic colour scheme of a toast. */
|
|
1189
1680
|
type ToastVariant = 'default' | 'success' | 'warning' | 'error' | 'info';
|
|
1681
|
+
/** A single live toast notification rendered by `ea-toast`. */
|
|
1190
1682
|
interface Toast {
|
|
1191
1683
|
id: number;
|
|
1192
1684
|
message: string;
|
|
1193
1685
|
variant: ToastVariant;
|
|
1194
1686
|
duration: number;
|
|
1195
1687
|
}
|
|
1688
|
+
/** Optional configuration for a toast — defaults to `default` variant and 4s duration. */
|
|
1196
1689
|
interface ToastOptions {
|
|
1197
1690
|
variant?: ToastVariant;
|
|
1198
1691
|
duration?: number;
|
|
1199
1692
|
}
|
|
1693
|
+
/**
|
|
1694
|
+
* Application-wide notification service. Use the convenience methods
|
|
1695
|
+
* (`success`, `error`, `warning`, `info`) to push a toast, or call
|
|
1696
|
+
* {@link show} for full control. A single `<ea-toast />` outlet must be
|
|
1697
|
+
* present in the app for toasts to appear.
|
|
1698
|
+
*/
|
|
1200
1699
|
declare class ToastService {
|
|
1201
1700
|
private nextId;
|
|
1202
1701
|
readonly toasts: _angular_core.WritableSignal<Toast[]>;
|
|
1702
|
+
/** Shows a toast and returns its id; pass `duration: 0` to disable auto-dismiss. */
|
|
1203
1703
|
show(message: string, options?: ToastOptions): number;
|
|
1704
|
+
/** Shows a `success` toast and returns its id. */
|
|
1204
1705
|
success(message: string, duration?: number): number;
|
|
1706
|
+
/** Shows an `error` toast and returns its id. */
|
|
1205
1707
|
error(message: string, duration?: number): number;
|
|
1708
|
+
/** Shows a `warning` toast and returns its id. */
|
|
1206
1709
|
warning(message: string, duration?: number): number;
|
|
1710
|
+
/** Shows an `info` toast and returns its id. */
|
|
1207
1711
|
info(message: string, duration?: number): number;
|
|
1712
|
+
/** Removes the toast with the given id, if it is still active. */
|
|
1208
1713
|
dismiss(id: number): void;
|
|
1714
|
+
/** Removes all currently visible toasts. */
|
|
1209
1715
|
clear(): void;
|
|
1210
1716
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastService, never>;
|
|
1211
1717
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ToastService>;
|
|
1212
1718
|
}
|
|
1213
1719
|
|
|
1720
|
+
/**
|
|
1721
|
+
* Outlet that renders the stack of active toasts produced by
|
|
1722
|
+
* {@link ToastService}. Place a single `<ea-toast />` once in the root
|
|
1723
|
+
* template so toasts created from anywhere in the app are surfaced.
|
|
1724
|
+
*/
|
|
1214
1725
|
declare class ToastComponent {
|
|
1215
1726
|
protected readonly toastService: ToastService;
|
|
1727
|
+
protected getRole(toast: Toast): 'alert' | 'status';
|
|
1216
1728
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastComponent, never>;
|
|
1217
1729
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToastComponent, "ea-toast", never, {}, {}, never, never, true, never>;
|
|
1218
1730
|
}
|
|
1219
1731
|
|
|
1732
|
+
/** Placement of the tooltip relative to its host element. */
|
|
1220
1733
|
type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';
|
|
1734
|
+
/**
|
|
1735
|
+
* Attaches a positioned tooltip to its host element. Shows on hover and
|
|
1736
|
+
* focus, hides on leave/blur or Escape, and wires up `aria-describedby` so
|
|
1737
|
+
* the tooltip text is announced to assistive technology.
|
|
1738
|
+
*/
|
|
1221
1739
|
declare class TooltipDirective implements OnDestroy {
|
|
1222
1740
|
private readonly el;
|
|
1223
1741
|
private readonly renderer;
|
|
1224
1742
|
readonly eaTooltip: _angular_core.InputSignal<string>;
|
|
1225
1743
|
readonly tooltipPosition: _angular_core.InputSignal<TooltipPosition>;
|
|
1226
1744
|
private tooltipEl;
|
|
1745
|
+
private readonly tooltipId;
|
|
1227
1746
|
private readonly showHandler;
|
|
1228
1747
|
private readonly hideHandler;
|
|
1748
|
+
private readonly keydownHandler;
|
|
1229
1749
|
constructor();
|
|
1230
1750
|
ngOnDestroy(): void;
|
|
1231
1751
|
private show;
|
|
1232
1752
|
private hide;
|
|
1753
|
+
private appendDescribedBy;
|
|
1754
|
+
private removeDescribedBy;
|
|
1233
1755
|
private positionTooltip;
|
|
1234
1756
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipDirective, never>;
|
|
1235
1757
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TooltipDirective, "[eaTooltip]", never, { "eaTooltip": { "alias": "eaTooltip"; "required": true; "isSignal": true; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1236
1758
|
}
|
|
1237
1759
|
|
|
1238
|
-
export { AccordionComponent, AccordionItemComponent, AlertCircleIconComponent, AlertComponent, AlertTriangleIconComponent, AppleIconComponent, ArrowDownIconComponent, ArrowLeftIconComponent, ArrowRightIconComponent, ArrowUpIconComponent, AutocompleteComponent, AvatarComponent, AvatarEditorComponent, BadgeComponent, BellIconComponent, BreadcrumbsComponent, ButtonComponent, CalendarIconComponent, CameraIconComponent, CardComponent, CheckCircleIconComponent, CheckIconComponent, CheckboxComponent, ChevronDownIconComponent, ChevronLeftIconComponent, ChevronRightIconComponent, ChevronUpIconComponent, ChevronsUpDownIconComponent, ClockIconComponent, CodeInputComponent, CopyIconComponent, DataTableComponent, DatePickerComponent, DialogComponent, DividerComponent, DownloadIconComponent, DrawerComponent, DropdownComponent, EagamiIconComponent, EagamiWordmarkComponent, ExternalLinkIconComponent, EyeIconComponent, EyeOffIconComponent, FacebookIconComponent, FileIconComponent, FilterIconComponent, GithubIconComponent, GoogleIconComponent, HeartIconComponent, ImageIconComponent, InfoIconComponent, InputComponent, LinkIconComponent, LoaderIconComponent, LogOutIconComponent, MailIconComponent, MenuComponent, MenuIconComponent, MenuItemComponent, MicrosoftIconComponent, MinusIconComponent, MoreHorizontalIconComponent, PaginatorComponent, PencilIconComponent, PlusIconComponent, ProgressBarComponent, RadioComponent, RadioGroupComponent, RotateCcwIconComponent, SearchIconComponent, SettingsIconComponent, SkeletonComponent, SpinnerComponent, StarIconComponent, SwitchComponent, TabComponent, TabsComponent, TagComponent, TextareaComponent, ToastComponent, ToastService, TooltipDirective, TrashIconComponent, UploadIconComponent, UserIconComponent, XCircleIconComponent, XIconComponent, XTwitterIconComponent };
|
|
1239
|
-
export type { AlertVariant,
|
|
1760
|
+
export { AccordionComponent, AccordionItemComponent, AlertCircleIconComponent, AlertComponent, AlertTriangleIconComponent, AppleIconComponent, ArrowDownIconComponent, ArrowLeftIconComponent, ArrowRightIconComponent, ArrowUpIconComponent, AutocompleteComponent, AvatarComponent, AvatarEditorComponent, BadgeComponent, BellIconComponent, BreadcrumbsComponent, ButtonComponent, CalendarIconComponent, CameraIconComponent, CardComponent, CheckCircleIconComponent, CheckIconComponent, CheckboxComponent, ChevronDownIconComponent, ChevronLeftIconComponent, ChevronRightIconComponent, ChevronUpIconComponent, ChevronsUpDownIconComponent, ClockIconComponent, CodeInputComponent, CopyIconComponent, DataTableComponent, DatePickerComponent, DialogComponent, DividerComponent, DownloadIconComponent, DrawerComponent, DropdownComponent, EagamiIconComponent, EagamiWordmarkComponent, EmptyStateComponent, ExternalLinkIconComponent, EyeIconComponent, EyeOffIconComponent, FacebookIconComponent, FileIconComponent, FilterIconComponent, GithubIconComponent, GoogleIconComponent, HeartIconComponent, ImageIconComponent, InfoIconComponent, InputComponent, LinkIconComponent, LoaderIconComponent, LogOutIconComponent, MailIconComponent, MenuComponent, MenuIconComponent, MenuItemComponent, MenuTriggerDirective, MicrosoftIconComponent, MinusIconComponent, MoreHorizontalIconComponent, PaginatorComponent, PencilIconComponent, PlusIconComponent, ProgressBarComponent, RadioComponent, RadioGroupComponent, RotateCcwIconComponent, SearchIconComponent, SegmentedComponent, SettingsIconComponent, SkeletonComponent, SliderComponent, SpinnerComponent, StarIconComponent, SwitchComponent, TabComponent, TabsComponent, TagComponent, TextareaComponent, ToastComponent, ToastService, TooltipDirective, TrashIconComponent, UploadIconComponent, UserIconComponent, XCircleIconComponent, XIconComponent, XTwitterIconComponent };
|
|
1761
|
+
export type { AlertVariant, AutocompleteSize, AvatarEditorCropEvent, AvatarEditorCropState, AvatarEditorShape, AvatarShape, AvatarSize, BadgeSize, BadgeVariant, BreadcrumbClickEvent, BreadcrumbItem, BreadcrumbsSeparator, ButtonSize, ButtonType, ButtonVariant, CardHeaderAlign, CardPadding, CardVariant, CheckboxSize, CodeInputSize, DataTableColumn, DataTableDensity, DataTableSortDirection, DataTableSortState, DatePickerFormat, DatePickerSize, DatePickerValue, DatePickerWeekStart, DialogSize, DividerOrientation, DrawerPosition, DrawerSize, DropdownSize, EagamiWordmarkLayout, EagamiWordmarkVariant, EmptyStateHeadingLevel, EmptyStateSize, InputSize, InputType, MenuItemVariant, MenuPlacement, PaginatorAlign, PaginatorState, ProgressBarSize, ProgressBarVariant, RadioOrientation, RadioSize, SegmentedSize, SelectOption, SkeletonVariant, SliderSize, SpinnerSize, SwitchSize, TabsSize, TabsVariant, TagSize, TagVariant, TextareaResize, TextareaSize, Toast, ToastOptions, ToastVariant, TooltipPosition };
|