@tedi-design-system/angular 6.5.0-rc.9 → 7.0.0-rc.2
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 +2 -4
- package/community/index.d.ts +28 -2
- package/community/index.d.ts.map +1 -1
- package/fesm2022/tedi-design-system-angular-community.mjs +55 -31
- package/fesm2022/tedi-design-system-angular-community.mjs.map +1 -1
- package/fesm2022/tedi-design-system-angular-tedi.mjs +9107 -3839
- package/fesm2022/tedi-design-system-angular-tedi.mjs.map +1 -1
- package/index.css +1 -1
- package/package.json +3 -5
- package/tedi/index.d.ts +2529 -315
- package/tedi/index.d.ts.map +1 -1
package/tedi/index.d.ts
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { AfterContentChecked, InputSignal, Signal, PipeTransform,
|
|
2
|
+
import { AfterContentChecked, AfterViewInit, InputSignal, Signal, PipeTransform, ElementRef, TemplateRef, OnDestroy, Injector, InjectionToken, WritableSignal, OnInit, AfterViewChecked, AfterContentInit, QueryList, EnvironmentProviders } from '@angular/core';
|
|
3
3
|
import * as _tedi_design_system_angular_tedi from '@tedi-design-system/angular/tedi';
|
|
4
|
+
import { ControlValueAccessor, NgControl } from '@angular/forms';
|
|
4
5
|
import * as _tanstack_table_core from '@tanstack/table-core';
|
|
5
6
|
import { CdkDragDrop } from '@angular/cdk/drag-drop';
|
|
6
|
-
import { Table, VisibilityState, ColumnOrderState, ColumnSizingState, RowSelectionState, ExpandedState, ColumnFiltersState, SortingState, PaginationState, ColumnDef, CellContext,
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
7
|
+
import { Table, VisibilityState, ColumnOrderState, ColumnSizingState, RowSelectionState, ExpandedState, ColumnFiltersState, SortingState, PaginationState, ColumnDef, CellContext, Row, Column } from '@tanstack/angular-table';
|
|
8
|
+
import * as _angular_cdk_overlay from '@angular/cdk/overlay';
|
|
9
|
+
import { ConnectedOverlayPositionChange, ConnectedPosition, CdkOverlayOrigin, CdkConnectedOverlay } from '@angular/cdk/overlay';
|
|
10
|
+
import { _IdGenerator } from '@angular/cdk/a11y';
|
|
10
11
|
import { CdkListbox } from '@angular/cdk/listbox';
|
|
11
12
|
import { Observable } from 'rxjs';
|
|
12
13
|
import { DialogRef } from '@angular/cdk/dialog';
|
|
13
14
|
import { ComponentType } from '@angular/cdk/portal';
|
|
14
15
|
import * as i1 from '@angular/cdk/scrolling';
|
|
15
|
-
import { _IdGenerator } from '@angular/cdk/a11y';
|
|
16
16
|
|
|
17
|
-
type IconSize = 8 | 12 | 16 | 18 | 24 | 36 | 48 | "inherit";
|
|
17
|
+
type IconSize = 8 | 12 | 16 | 18 | 22 | 24 | 36 | 48 | "inherit";
|
|
18
18
|
type IconVariant = "filled" | "outlined";
|
|
19
19
|
type IconType = "outlined" | "sharp" | "rounded";
|
|
20
20
|
type IconColor = "primary" | "secondary" | "tertiary" | "brand" | "brand-dark" | "success" | "warning" | "warning-dark" | "danger" | "white" | "inherit";
|
|
@@ -26,10 +26,12 @@ declare class IconComponent {
|
|
|
26
26
|
*/
|
|
27
27
|
name: _angular_core.InputSignal<string>;
|
|
28
28
|
/**
|
|
29
|
-
* Size of the icon in pixels.
|
|
29
|
+
* Size of the icon in pixels. When unset, the icon uses the contextual
|
|
30
|
+
* default of its host (e.g. `tedi-button`/`tedi-link`), falling back to 24.
|
|
31
|
+
* An explicit value always takes precedence over the contextual default.
|
|
30
32
|
* @default 24
|
|
31
33
|
*/
|
|
32
|
-
size: _angular_core.InputSignal<IconSize>;
|
|
34
|
+
size: _angular_core.InputSignal<IconSize | undefined>;
|
|
33
35
|
/**
|
|
34
36
|
* Color of the icon.
|
|
35
37
|
* @default primary
|
|
@@ -55,13 +57,15 @@ declare class IconComponent {
|
|
|
55
57
|
* If omitted then the icon is hidden for screen-readers.
|
|
56
58
|
*/
|
|
57
59
|
label: _angular_core.InputSignal<string | undefined>;
|
|
60
|
+
iconSizeVar: _angular_core.Signal<string | null>;
|
|
61
|
+
iconBgPadding: _angular_core.Signal<string | null>;
|
|
58
62
|
classes: _angular_core.Signal<string>;
|
|
59
63
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IconComponent, never>;
|
|
60
64
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<IconComponent, "tedi-icon", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "background": { "alias": "background"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
61
65
|
}
|
|
62
66
|
|
|
63
|
-
type TextModifiers = "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "normal" | "small" | "bold" | "thin" | "italic" | "center" | "left" | "right" | "nowrap" | "break-all" | "break-word" | "break-spaces" | "uppercase" | "lowercase" | "capitalize" | "capitalize-first" | "inline-block" | "inline" | "line-normal" | "line-condensed" | "subtitle";
|
|
64
|
-
type TextColor = "primary" | "secondary" | "tertiary" | "white" | "disabled" | "brand" | "success" | "warning" | "danger" | "info" | "neutral";
|
|
67
|
+
type TextModifiers = "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "normal" | "small" | "extra-small" | "bold" | "thin" | "italic" | "center" | "left" | "right" | "nowrap" | "break-all" | "break-word" | "break-spaces" | "uppercase" | "lowercase" | "capitalize" | "capitalize-first" | "inline-block" | "inline" | "line-normal" | "line-condensed" | "subtitle";
|
|
68
|
+
type TextColor = "primary" | "secondary" | "tertiary" | "white" | "disabled" | "brand" | "success" | "warning" | "danger" | "info" | "neutral" | "inherit";
|
|
65
69
|
declare class TextComponent {
|
|
66
70
|
/**
|
|
67
71
|
* Single or multiple modifiers to change the text behavior
|
|
@@ -94,11 +98,15 @@ declare class BaseButtonDirective implements AfterContentChecked {
|
|
|
94
98
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BaseButtonDirective, never, never, {}, {}, never, never, true, never>;
|
|
95
99
|
}
|
|
96
100
|
|
|
97
|
-
type ButtonVariant = "primary" | "secondary" | "neutral" | "success" | "danger" | "danger-neutral" | "primary-inverted" | "secondary-inverted" | "neutral-inverted";
|
|
101
|
+
type ButtonVariant = "primary" | "secondary" | "neutral" | "success" | "danger" | "danger-neutral" | "primary-inverted" | "secondary-inverted" | "neutral-inverted" | "primary-button-group" | "secondary-button-group";
|
|
98
102
|
type ButtonSize = "default" | "small";
|
|
99
103
|
declare class ButtonComponent {
|
|
100
104
|
/**
|
|
101
105
|
* Specifies the color theme of the button. The color should meet accessibility standards for color contrast.
|
|
106
|
+
*
|
|
107
|
+
* `primary-button-group` and `secondary-button-group` are intended for items inside
|
|
108
|
+
* `tedi-button-group`: they use the small (`button-radius-sm`) corner radius and show
|
|
109
|
+
* their selected state via `aria-pressed`.
|
|
102
110
|
* @default primary
|
|
103
111
|
*/
|
|
104
112
|
variant: _angular_core.InputSignal<ButtonVariant>;
|
|
@@ -112,13 +120,156 @@ declare class ButtonComponent {
|
|
|
112
120
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ButtonComponent, "[tedi-button]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof BaseButtonDirective; inputs: {}; outputs: {}; }]>;
|
|
113
121
|
}
|
|
114
122
|
|
|
123
|
+
/**
|
|
124
|
+
* Turns a `<button>` inside `tedi-button-group` into a styled, selectable item.
|
|
125
|
+
* Extends `tedi-button` (composes `BaseButtonDirective` and applies the
|
|
126
|
+
* `tedi-button` variant classes), inherits `variant`/`size` from the parent
|
|
127
|
+
* group (overridable per item), and derives its selected state from the group's
|
|
128
|
+
* `value`. The `iconLeft`/`iconRight`/`icon` inputs are auto-rendered as
|
|
129
|
+
* `tedi-icon` elements and reused by the mobile dropdown.
|
|
130
|
+
*/
|
|
131
|
+
declare class ButtonGroupButtonDirective implements AfterViewInit {
|
|
132
|
+
/** Identity contributing to the group's selected value. */
|
|
133
|
+
readonly value: _angular_core.InputSignal<string>;
|
|
134
|
+
/** Visible text; used by the mobile dropdown and as the accessible name in icon-only mode. */
|
|
135
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
136
|
+
/** Disables interaction via the native `disabled` attribute. */
|
|
137
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
138
|
+
/** Icon rendered before the label (and in the dropdown item). */
|
|
139
|
+
readonly iconLeft: _angular_core.InputSignal<string | undefined>;
|
|
140
|
+
/** Icon rendered after the label (and in the dropdown item). */
|
|
141
|
+
readonly iconRight: _angular_core.InputSignal<string | undefined>;
|
|
142
|
+
/** Icon-only mode: icon for the button, dropdown trigger and dropdown item. */
|
|
143
|
+
readonly icon: _angular_core.InputSignal<string | undefined>;
|
|
144
|
+
/** Overrides the group's `variant` for this item. */
|
|
145
|
+
readonly variant: _angular_core.InputSignal<ButtonVariant | undefined>;
|
|
146
|
+
/** Overrides the group's `size` for this item. */
|
|
147
|
+
readonly size: _angular_core.InputSignal<ButtonSize | undefined>;
|
|
148
|
+
/** Fires on user activation (click). Disabled items don't emit. */
|
|
149
|
+
readonly clicked: _angular_core.OutputEmitterRef<MouseEvent>;
|
|
150
|
+
private readonly host;
|
|
151
|
+
private readonly viewContainer;
|
|
152
|
+
private readonly renderer;
|
|
153
|
+
private readonly parent;
|
|
154
|
+
private readonly iconRefs;
|
|
155
|
+
readonly effectiveVariant: _angular_core.Signal<ButtonVariant>;
|
|
156
|
+
readonly effectiveSize: _angular_core.Signal<ButtonSize>;
|
|
157
|
+
readonly selected: _angular_core.Signal<boolean>;
|
|
158
|
+
protected readonly hostClasses: _angular_core.Signal<string>;
|
|
159
|
+
constructor();
|
|
160
|
+
ngAfterViewInit(): void;
|
|
161
|
+
/** Wraps the projected text in a padded span so the gap to an adjacent icon
|
|
162
|
+
* comes from the label (the icon itself stays flush), matching the design. */
|
|
163
|
+
private wrapLabel;
|
|
164
|
+
private syncIcon;
|
|
165
|
+
protected onClick(event: MouseEvent): void;
|
|
166
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ButtonGroupButtonDirective, never>;
|
|
167
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ButtonGroupButtonDirective, "button[tedi-button-group-button]", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "iconLeft": { "alias": "iconLeft"; "required": false; "isSignal": true; }; "iconRight": { "alias": "iconRight"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, never, true, [{ directive: typeof BaseButtonDirective; inputs: {}; outputs: {}; }]>;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
type ButtonGroupDropdownLabelMode = "selected" | "static";
|
|
171
|
+
declare class ButtonGroupComponent {
|
|
172
|
+
/**
|
|
173
|
+
* Variant applied to every item button (each item may override via its own
|
|
174
|
+
* `variant`). Accepts the full `ButtonVariant` union. Only the
|
|
175
|
+
* `*-button-group` variants get the connected/segmented strip geometry; other
|
|
176
|
+
* variants keep their own radius and show their active colors when selected.
|
|
177
|
+
* @default primary-button-group
|
|
178
|
+
*/
|
|
179
|
+
readonly variant: _angular_core.InputSignal<ButtonVariant>;
|
|
180
|
+
/**
|
|
181
|
+
* Size applied to every item button.
|
|
182
|
+
* @default default
|
|
183
|
+
*/
|
|
184
|
+
readonly size: _angular_core.InputSignal<ButtonSize>;
|
|
185
|
+
/**
|
|
186
|
+
* When true, multiple items can be toggled on and `value` is a string array.
|
|
187
|
+
* @default false
|
|
188
|
+
*/
|
|
189
|
+
readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
190
|
+
/**
|
|
191
|
+
* Selected value(s). A single `string` (or `undefined`) in single mode, a
|
|
192
|
+
* `string[]` in `multiple` mode. Two-way bindable via `[(value)]`.
|
|
193
|
+
*/
|
|
194
|
+
readonly value: _angular_core.ModelSignal<string | string[] | undefined>;
|
|
195
|
+
/**
|
|
196
|
+
* When true, items share the available horizontal space equally.
|
|
197
|
+
* @default false
|
|
198
|
+
*/
|
|
199
|
+
readonly stretch: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
200
|
+
/** Accessible name for the group. Required if no visible heading labels it. */
|
|
201
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
202
|
+
/**
|
|
203
|
+
* When true, the strip collapses into a dropdown below `mobileBreakpoint`.
|
|
204
|
+
* @default false
|
|
205
|
+
*/
|
|
206
|
+
readonly enableMobileDropdown: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
207
|
+
/**
|
|
208
|
+
* Viewport breakpoint at which the strip switches to a dropdown.
|
|
209
|
+
* @default md
|
|
210
|
+
*/
|
|
211
|
+
readonly mobileBreakpoint: _angular_core.InputSignal<"xs" | "sm" | "md" | "lg" | "xl" | "xxl">;
|
|
212
|
+
/** Label for the dropdown trigger. Falls back to the `buttonGroup.menu` translation. */
|
|
213
|
+
readonly dropdownLabel: _angular_core.InputSignal<string | undefined>;
|
|
214
|
+
/**
|
|
215
|
+
* Source for the dropdown trigger label.
|
|
216
|
+
* - `static` (default) — always show `dropdownLabel`.
|
|
217
|
+
* - `selected` — show the selected item's label (single mode only).
|
|
218
|
+
* @default static
|
|
219
|
+
*/
|
|
220
|
+
readonly dropdownLabelMode: _angular_core.InputSignal<ButtonGroupDropdownLabelMode>;
|
|
221
|
+
/** Emits the value of the item the user toggled. */
|
|
222
|
+
readonly selectionChange: _angular_core.OutputEmitterRef<string>;
|
|
223
|
+
protected readonly items: _angular_core.Signal<readonly any[]>;
|
|
224
|
+
private readonly breakpointService;
|
|
225
|
+
private readonly translations;
|
|
226
|
+
private readonly isBelowMobile;
|
|
227
|
+
protected readonly isDropdownMode: _angular_core.Signal<boolean>;
|
|
228
|
+
/** Trigger variant derived from the group `variant` (button-group variants map
|
|
229
|
+
* to their plain counterpart; any other variant is used as-is). */
|
|
230
|
+
readonly triggerVariant: _angular_core.Signal<ButtonVariant>;
|
|
231
|
+
/** Whether the group uses a *-button-group variant (drives the trigger radius). */
|
|
232
|
+
protected readonly isButtonGroupVariant: _angular_core.Signal<boolean>;
|
|
233
|
+
protected readonly selectedItem: _angular_core.Signal<any>;
|
|
234
|
+
protected readonly triggerLabel: _angular_core.Signal<any>;
|
|
235
|
+
protected readonly triggerIcon: _angular_core.Signal<any>;
|
|
236
|
+
protected readonly hostClasses: _angular_core.Signal<string>;
|
|
237
|
+
isSelected(value: string): boolean;
|
|
238
|
+
toggle(value: string): void;
|
|
239
|
+
protected onDropdownItemSelect(item: ButtonGroupButtonDirective): void;
|
|
240
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ButtonGroupComponent, never>;
|
|
241
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ButtonGroupComponent, "tedi-button-group", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "stretch": { "alias": "stretch"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "enableMobileDropdown": { "alias": "enableMobileDropdown"; "required": false; "isSignal": true; }; "mobileBreakpoint": { "alias": "mobileBreakpoint"; "required": false; "isSignal": true; }; "dropdownLabel": { "alias": "dropdownLabel"; "required": false; "isSignal": true; }; "dropdownLabelMode": { "alias": "dropdownLabelMode"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "selectionChange": "selectionChange"; }, ["items"], ["*"], true, never>;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Interactive wrapper around a `tedi-card`. Apply to an anchor (with `href`
|
|
246
|
+
* or `routerLink`) for navigation or to a button for actions — the host
|
|
247
|
+
* element provides the interaction semantics and applies the hover, active,
|
|
248
|
+
* focus and disabled states to the card and its blocks inside.
|
|
249
|
+
*
|
|
250
|
+
* Only a projected `tedi-card` is rendered — other content is ignored. The
|
|
251
|
+
* card may use any card sub-components (content, rows, icon cells). Do not
|
|
252
|
+
* place other interactive elements inside.
|
|
253
|
+
*/
|
|
254
|
+
declare class CardButtonComponent {
|
|
255
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardButtonComponent, never>;
|
|
256
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardButtonComponent, "a[tedi-card-button], button[tedi-card-button]", never, {}, {}, never, ["tedi-card"], true, never>;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Grid breakpoints in `rem`, mirroring `$grid-breakpoints` in
|
|
261
|
+
* `@tedi-design-system/core`. `rem` is used (instead of `px`) so breakpoints
|
|
262
|
+
* resolve against the browser's base font size and scale with the user's font
|
|
263
|
+
* preference — keeping these JS breakpoints aligned with the rem-based CSS
|
|
264
|
+
* tokens at any zoom / font-size setting.
|
|
265
|
+
*/
|
|
115
266
|
declare const BREAKPOINTS: {
|
|
116
267
|
readonly xs: 0;
|
|
117
|
-
readonly sm:
|
|
118
|
-
readonly md:
|
|
119
|
-
readonly lg:
|
|
120
|
-
readonly xl:
|
|
121
|
-
readonly xxl:
|
|
268
|
+
readonly sm: 36;
|
|
269
|
+
readonly md: 48;
|
|
270
|
+
readonly lg: 62;
|
|
271
|
+
readonly xl: 75;
|
|
272
|
+
readonly xxl: 87.5;
|
|
122
273
|
};
|
|
123
274
|
type Breakpoint = keyof typeof BREAKPOINTS;
|
|
124
275
|
type BreakpointInputs<TInputs> = {
|
|
@@ -262,6 +413,13 @@ declare const translationsMap: {
|
|
|
262
413
|
en: string;
|
|
263
414
|
ru: string;
|
|
264
415
|
};
|
|
416
|
+
"header.role-search.organization": {
|
|
417
|
+
description: string;
|
|
418
|
+
components: string[];
|
|
419
|
+
et: string;
|
|
420
|
+
en: string;
|
|
421
|
+
ru: string;
|
|
422
|
+
};
|
|
265
423
|
"header.role-no-representatives": {
|
|
266
424
|
description: string;
|
|
267
425
|
components: string[];
|
|
@@ -276,7 +434,7 @@ declare const translationsMap: {
|
|
|
276
434
|
en: string;
|
|
277
435
|
ru: string;
|
|
278
436
|
};
|
|
279
|
-
"header.login
|
|
437
|
+
"header.login.mobile": {
|
|
280
438
|
description: string;
|
|
281
439
|
components: string[];
|
|
282
440
|
et: string;
|
|
@@ -290,6 +448,13 @@ declare const translationsMap: {
|
|
|
290
448
|
en: string;
|
|
291
449
|
ru: string;
|
|
292
450
|
};
|
|
451
|
+
"header.logout.mobile": {
|
|
452
|
+
description: string;
|
|
453
|
+
components: string[];
|
|
454
|
+
et: string;
|
|
455
|
+
en: string;
|
|
456
|
+
ru: string;
|
|
457
|
+
};
|
|
293
458
|
"header.logo": {
|
|
294
459
|
description: string;
|
|
295
460
|
components: string[];
|
|
@@ -304,6 +469,20 @@ declare const translationsMap: {
|
|
|
304
469
|
en: string;
|
|
305
470
|
ru: string;
|
|
306
471
|
};
|
|
472
|
+
"header.profile.mobile": {
|
|
473
|
+
description: string;
|
|
474
|
+
components: string[];
|
|
475
|
+
et: string;
|
|
476
|
+
en: string;
|
|
477
|
+
ru: string;
|
|
478
|
+
};
|
|
479
|
+
"header.search": {
|
|
480
|
+
description: string;
|
|
481
|
+
components: string[];
|
|
482
|
+
et: string;
|
|
483
|
+
en: string;
|
|
484
|
+
ru: string;
|
|
485
|
+
};
|
|
307
486
|
"file-upload.add": {
|
|
308
487
|
description: string;
|
|
309
488
|
components: string[];
|
|
@@ -374,6 +553,13 @@ declare const translationsMap: {
|
|
|
374
553
|
en: string;
|
|
375
554
|
ru: string;
|
|
376
555
|
};
|
|
556
|
+
"file-attachment.uploading": {
|
|
557
|
+
description: string;
|
|
558
|
+
components: string[];
|
|
559
|
+
et: string;
|
|
560
|
+
en: string;
|
|
561
|
+
ru: string;
|
|
562
|
+
};
|
|
377
563
|
"modal.close": {
|
|
378
564
|
description: string;
|
|
379
565
|
components: string[];
|
|
@@ -871,6 +1057,13 @@ declare const translationsMap: {
|
|
|
871
1057
|
en: (value: string, isOpen: boolean) => string;
|
|
872
1058
|
ru: (value: string, isOpen: boolean) => string;
|
|
873
1059
|
};
|
|
1060
|
+
"buttonGroup.menu": {
|
|
1061
|
+
description: string;
|
|
1062
|
+
components: string[];
|
|
1063
|
+
et: string;
|
|
1064
|
+
en: string;
|
|
1065
|
+
ru: string;
|
|
1066
|
+
};
|
|
874
1067
|
carousel: {
|
|
875
1068
|
description: string;
|
|
876
1069
|
components: string[];
|
|
@@ -1172,6 +1365,13 @@ declare const translationsMap: {
|
|
|
1172
1365
|
en: string;
|
|
1173
1366
|
ru: string;
|
|
1174
1367
|
};
|
|
1368
|
+
"date-picker.today": {
|
|
1369
|
+
description: string;
|
|
1370
|
+
components: string[];
|
|
1371
|
+
et: string;
|
|
1372
|
+
en: string;
|
|
1373
|
+
ru: string;
|
|
1374
|
+
};
|
|
1175
1375
|
"date-picker.go-next-month": {
|
|
1176
1376
|
description: string;
|
|
1177
1377
|
components: string[];
|
|
@@ -1179,6 +1379,41 @@ declare const translationsMap: {
|
|
|
1179
1379
|
en: string;
|
|
1180
1380
|
ru: string;
|
|
1181
1381
|
};
|
|
1382
|
+
"date-picker.calendar-nav": {
|
|
1383
|
+
description: string;
|
|
1384
|
+
components: string[];
|
|
1385
|
+
et: string;
|
|
1386
|
+
en: string;
|
|
1387
|
+
ru: string;
|
|
1388
|
+
};
|
|
1389
|
+
"date-picker.choose-month": {
|
|
1390
|
+
description: string;
|
|
1391
|
+
components: string[];
|
|
1392
|
+
et: string;
|
|
1393
|
+
en: string;
|
|
1394
|
+
ru: string;
|
|
1395
|
+
};
|
|
1396
|
+
"date-picker.choose-year": {
|
|
1397
|
+
description: string;
|
|
1398
|
+
components: string[];
|
|
1399
|
+
et: string;
|
|
1400
|
+
en: string;
|
|
1401
|
+
ru: string;
|
|
1402
|
+
};
|
|
1403
|
+
"date-picker.week-number": {
|
|
1404
|
+
description: string;
|
|
1405
|
+
components: string[];
|
|
1406
|
+
et: (n: number) => string;
|
|
1407
|
+
en: (n: number) => string;
|
|
1408
|
+
ru: (n: number) => string;
|
|
1409
|
+
};
|
|
1410
|
+
"date-picker.week-number-header": {
|
|
1411
|
+
description: string;
|
|
1412
|
+
components: string[];
|
|
1413
|
+
et: string;
|
|
1414
|
+
en: string;
|
|
1415
|
+
ru: string;
|
|
1416
|
+
};
|
|
1182
1417
|
"date-picker.go-prev-month": {
|
|
1183
1418
|
description: string;
|
|
1184
1419
|
components: string[];
|
|
@@ -1228,6 +1463,41 @@ declare const translationsMap: {
|
|
|
1228
1463
|
en: string;
|
|
1229
1464
|
ru: string;
|
|
1230
1465
|
};
|
|
1466
|
+
"date-field.remove-chip": {
|
|
1467
|
+
description: string;
|
|
1468
|
+
components: string[];
|
|
1469
|
+
et: (label: string) => string;
|
|
1470
|
+
en: (label: string) => string;
|
|
1471
|
+
ru: (label: string) => string;
|
|
1472
|
+
};
|
|
1473
|
+
"date-field.calendar-dialog": {
|
|
1474
|
+
description: string;
|
|
1475
|
+
components: string[];
|
|
1476
|
+
et: string;
|
|
1477
|
+
en: string;
|
|
1478
|
+
ru: string;
|
|
1479
|
+
};
|
|
1480
|
+
"date-field.modal-title": {
|
|
1481
|
+
description: string;
|
|
1482
|
+
components: string[];
|
|
1483
|
+
et: string;
|
|
1484
|
+
en: string;
|
|
1485
|
+
ru: string;
|
|
1486
|
+
};
|
|
1487
|
+
"date-field.confirm": {
|
|
1488
|
+
description: string;
|
|
1489
|
+
components: string[];
|
|
1490
|
+
et: string;
|
|
1491
|
+
en: string;
|
|
1492
|
+
ru: string;
|
|
1493
|
+
};
|
|
1494
|
+
"date-field.cancel": {
|
|
1495
|
+
description: string;
|
|
1496
|
+
components: string[];
|
|
1497
|
+
et: string;
|
|
1498
|
+
en: string;
|
|
1499
|
+
ru: string;
|
|
1500
|
+
};
|
|
1231
1501
|
"time-picker.hours": {
|
|
1232
1502
|
description: string;
|
|
1233
1503
|
components: string[];
|
|
@@ -1371,6 +1641,9 @@ declare class AlertComponent {
|
|
|
1371
1641
|
icon: _angular_core.InputSignal<string>;
|
|
1372
1642
|
/**
|
|
1373
1643
|
* If true, a close button will be displayed.
|
|
1644
|
+
*
|
|
1645
|
+
* Ignored when a `[tedi-alert-action]` element is projected — the action
|
|
1646
|
+
* slot wins, and is responsible for any close affordance it wants to expose.
|
|
1374
1647
|
* @default false
|
|
1375
1648
|
*/
|
|
1376
1649
|
showClose: _angular_core.InputSignal<boolean>;
|
|
@@ -1417,7 +1690,7 @@ declare class AlertComponent {
|
|
|
1417
1690
|
}>;
|
|
1418
1691
|
handleClose(): void;
|
|
1419
1692
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AlertComponent, never>;
|
|
1420
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertComponent, "tedi-alert", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "titleElement": { "alias": "titleElement"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "closeClick": "closeClick"; }, never, ["*"], true, never>;
|
|
1693
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AlertComponent, "tedi-alert", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "titleElement": { "alias": "titleElement"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "closeClick": "closeClick"; }, never, ["[tedi-alert-action]", "*"], true, never>;
|
|
1421
1694
|
}
|
|
1422
1695
|
|
|
1423
1696
|
declare const TOAST_DEFAULT_DURATION = 6000;
|
|
@@ -1775,14 +2048,228 @@ declare class ClosingButtonComponent {
|
|
|
1775
2048
|
* @default 24
|
|
1776
2049
|
*/
|
|
1777
2050
|
iconSize: _angular_core.InputSignal<ClosingButtonIconSize>;
|
|
2051
|
+
/**
|
|
2052
|
+
* Material Symbols icon rendered inside the button. Override for other
|
|
2053
|
+
* closing-like actions such as delete/remove (e.g. `delete`). When
|
|
2054
|
+
* overriding, also provide a matching `ariaLabel` — the default label
|
|
2055
|
+
* is "close".
|
|
2056
|
+
* @default close
|
|
2057
|
+
*/
|
|
2058
|
+
icon: _angular_core.InputSignal<string>;
|
|
1778
2059
|
/**
|
|
1779
2060
|
* ARIA label to override default label "close"
|
|
1780
2061
|
*/
|
|
1781
2062
|
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
2063
|
+
/**
|
|
2064
|
+
* Render the label as a native `title` attribute (browser tooltip on
|
|
2065
|
+
* hover). Set to `false` when the button is wrapped in a `tedi-tooltip`
|
|
2066
|
+
* so the native tooltip does not double the custom one. The `aria-label`
|
|
2067
|
+
* is kept either way.
|
|
2068
|
+
* @default true
|
|
2069
|
+
*/
|
|
2070
|
+
showTitle: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1782
2071
|
private translationService;
|
|
1783
2072
|
private readonly _defaultLabel;
|
|
1784
2073
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ClosingButtonComponent, never>;
|
|
1785
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClosingButtonComponent, "button[tedi-closing-button]", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
2074
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ClosingButtonComponent, "button[tedi-closing-button]", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "showTitle": { "alias": "showTitle"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
2075
|
+
}
|
|
2076
|
+
|
|
2077
|
+
type CardBorderPlacement = "top" | "left";
|
|
2078
|
+
type CardBackground = "primary" | "secondary" | "tertiary" | "accent" | "brand-primary" | "brand-secondary" | "brand-tertiary" | "brand-quaternary" | "danger-primary" | "danger-secondary" | "success-primary" | "success-secondary" | "info-primary" | "info-secondary" | "warning-primary" | "warning-secondary" | "neutral-primary" | "neutral-secondary";
|
|
2079
|
+
type CardBorderType = `${CardBorderPlacement}-${CardBackground}` | CardBackground;
|
|
2080
|
+
type CardPaddingNumber = 0 | 0.25 | 0.5 | 0.75 | 1 | 1.25 | 1.5 | 2 | 2.5 | 3;
|
|
2081
|
+
type CardPadding = CardPaddingNumber | {
|
|
2082
|
+
vertical: CardPaddingNumber;
|
|
2083
|
+
horizontal: CardPaddingNumber;
|
|
2084
|
+
} | {
|
|
2085
|
+
top?: CardPaddingNumber;
|
|
2086
|
+
right?: CardPaddingNumber;
|
|
2087
|
+
bottom?: CardPaddingNumber;
|
|
2088
|
+
left?: CardPaddingNumber;
|
|
2089
|
+
};
|
|
2090
|
+
type CardBorderRadius = false | {
|
|
2091
|
+
top?: boolean;
|
|
2092
|
+
right?: boolean;
|
|
2093
|
+
bottom?: boolean;
|
|
2094
|
+
left?: boolean;
|
|
2095
|
+
topLeft?: boolean;
|
|
2096
|
+
topRight?: boolean;
|
|
2097
|
+
bottomRight?: boolean;
|
|
2098
|
+
bottomLeft?: boolean;
|
|
2099
|
+
};
|
|
2100
|
+
type CardResolvedCorners = {
|
|
2101
|
+
topLeft: boolean;
|
|
2102
|
+
topRight: boolean;
|
|
2103
|
+
bottomRight: boolean;
|
|
2104
|
+
bottomLeft: boolean;
|
|
2105
|
+
};
|
|
2106
|
+
declare function getCardBorderPlacementColor(border?: CardBorderType): [CardBorderPlacement | undefined, CardBackground | undefined];
|
|
2107
|
+
declare function getPaddingCssVariables(padding: CardPadding): Record<string, string>;
|
|
2108
|
+
declare function resolveCardBorderRadius(config?: CardBorderRadius): CardResolvedCorners;
|
|
2109
|
+
|
|
2110
|
+
type CardInputs = {
|
|
2111
|
+
background?: CardBackground;
|
|
2112
|
+
padding?: CardPadding;
|
|
2113
|
+
borderRadius?: CardBorderRadius;
|
|
2114
|
+
borderless?: boolean;
|
|
2115
|
+
border?: CardBorderType;
|
|
2116
|
+
};
|
|
2117
|
+
/**
|
|
2118
|
+
* Card is a container for grouping related content. Compose it from
|
|
2119
|
+
* `tedi-card-header`, `tedi-card-content` and `tedi-card-notification` blocks.
|
|
2120
|
+
* `background` and `padding` set here act as defaults for all child blocks.
|
|
2121
|
+
*/
|
|
2122
|
+
declare class CardComponent implements BreakpointInputs<CardInputs> {
|
|
2123
|
+
/**
|
|
2124
|
+
* Default background color for child content blocks.
|
|
2125
|
+
*/
|
|
2126
|
+
background: _angular_core.InputSignal<CardBackground | undefined>;
|
|
2127
|
+
/**
|
|
2128
|
+
* Default padding for child content blocks.
|
|
2129
|
+
* Value is either a predefined number in rems or an object of
|
|
2130
|
+
* vertical/horizontal or top/right/bottom/left number values in rems.
|
|
2131
|
+
*/
|
|
2132
|
+
padding: _angular_core.InputSignal<CardPadding | undefined>;
|
|
2133
|
+
/**
|
|
2134
|
+
* Controls card border radius.
|
|
2135
|
+
* Accepts `false` to remove all radius or an object to control
|
|
2136
|
+
* sides or individual corners. Corner values take precedence over sides.
|
|
2137
|
+
*/
|
|
2138
|
+
borderRadius: _angular_core.InputSignal<CardBorderRadius | undefined>;
|
|
2139
|
+
/**
|
|
2140
|
+
* Removes border from card.
|
|
2141
|
+
* @default false
|
|
2142
|
+
*/
|
|
2143
|
+
borderless: _angular_core.InputSignal<boolean | undefined>;
|
|
2144
|
+
/**
|
|
2145
|
+
* Type of border. Plain background value colors the whole border,
|
|
2146
|
+
* `top-` or `left-` prefixed value draws a thick accent border on that side.
|
|
2147
|
+
*/
|
|
2148
|
+
border: _angular_core.InputSignal<CardBorderType | undefined>;
|
|
2149
|
+
xs: _angular_core.InputSignal<CardInputs | undefined>;
|
|
2150
|
+
sm: _angular_core.InputSignal<CardInputs | undefined>;
|
|
2151
|
+
md: _angular_core.InputSignal<CardInputs | undefined>;
|
|
2152
|
+
lg: _angular_core.InputSignal<CardInputs | undefined>;
|
|
2153
|
+
xl: _angular_core.InputSignal<CardInputs | undefined>;
|
|
2154
|
+
xxl: _angular_core.InputSignal<CardInputs | undefined>;
|
|
2155
|
+
private breakpointService;
|
|
2156
|
+
breakpointInputs: _angular_core.Signal<CardInputs>;
|
|
2157
|
+
classes: _angular_core.Signal<string>;
|
|
2158
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardComponent, never>;
|
|
2159
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardComponent, "tedi-card", never, { "background": { "alias": "background"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; "borderRadius": { "alias": "borderRadius"; "required": false; "isSignal": true; }; "borderless": { "alias": "borderless"; "required": false; "isSignal": true; }; "border": { "alias": "border"; "required": false; "isSignal": true; }; "xs": { "alias": "xs"; "required": false; "isSignal": true; }; "sm": { "alias": "sm"; "required": false; "isSignal": true; }; "md": { "alias": "md"; "required": false; "isSignal": true; }; "lg": { "alias": "lg"; "required": false; "isSignal": true; }; "xl": { "alias": "xl"; "required": false; "isSignal": true; }; "xxl": { "alias": "xxl"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
2160
|
+
}
|
|
2161
|
+
|
|
2162
|
+
type CardContentInputs = {
|
|
2163
|
+
background?: CardBackground;
|
|
2164
|
+
padding?: CardPadding;
|
|
2165
|
+
backgroundImage?: string;
|
|
2166
|
+
backgroundPosition?: string;
|
|
2167
|
+
backgroundSize?: string;
|
|
2168
|
+
backgroundRepeat?: string;
|
|
2169
|
+
autoWidth?: boolean;
|
|
2170
|
+
};
|
|
2171
|
+
/**
|
|
2172
|
+
* Content block of a card. Inherits unset `background` and `padding`
|
|
2173
|
+
* from the parent `tedi-card`.
|
|
2174
|
+
*/
|
|
2175
|
+
declare class CardContentComponent implements BreakpointInputs<CardContentInputs> {
|
|
2176
|
+
/**
|
|
2177
|
+
* Background color.
|
|
2178
|
+
* @default primary
|
|
2179
|
+
*/
|
|
2180
|
+
background: _angular_core.InputSignal<CardBackground | undefined>;
|
|
2181
|
+
/**
|
|
2182
|
+
* Content padding.
|
|
2183
|
+
* Value is either a predefined number in rems or an object of
|
|
2184
|
+
* vertical/horizontal or top/right/bottom/left number values in rems.
|
|
2185
|
+
* @default 1
|
|
2186
|
+
*/
|
|
2187
|
+
padding: _angular_core.InputSignal<CardPadding | undefined>;
|
|
2188
|
+
/**
|
|
2189
|
+
* Background image url.
|
|
2190
|
+
*/
|
|
2191
|
+
backgroundImage: _angular_core.InputSignal<string | undefined>;
|
|
2192
|
+
/**
|
|
2193
|
+
* Background position for the image.
|
|
2194
|
+
*/
|
|
2195
|
+
backgroundPosition: _angular_core.InputSignal<string | undefined>;
|
|
2196
|
+
/**
|
|
2197
|
+
* Background size for the image.
|
|
2198
|
+
*/
|
|
2199
|
+
backgroundSize: _angular_core.InputSignal<string | undefined>;
|
|
2200
|
+
/**
|
|
2201
|
+
* Background repeat for the image.
|
|
2202
|
+
*/
|
|
2203
|
+
backgroundRepeat: _angular_core.InputSignal<string | undefined>;
|
|
2204
|
+
/**
|
|
2205
|
+
* Takes only as much width as its content needs instead of growing.
|
|
2206
|
+
* Useful for icon or date cells inside `tedi-card-row`.
|
|
2207
|
+
* @default false
|
|
2208
|
+
*/
|
|
2209
|
+
autoWidth: _angular_core.InputSignal<boolean | undefined>;
|
|
2210
|
+
xs: _angular_core.InputSignal<CardContentInputs | undefined>;
|
|
2211
|
+
sm: _angular_core.InputSignal<CardContentInputs | undefined>;
|
|
2212
|
+
md: _angular_core.InputSignal<CardContentInputs | undefined>;
|
|
2213
|
+
lg: _angular_core.InputSignal<CardContentInputs | undefined>;
|
|
2214
|
+
xl: _angular_core.InputSignal<CardContentInputs | undefined>;
|
|
2215
|
+
xxl: _angular_core.InputSignal<CardContentInputs | undefined>;
|
|
2216
|
+
protected blockClass: string;
|
|
2217
|
+
protected defaultBackground: CardBackground;
|
|
2218
|
+
private breakpointService;
|
|
2219
|
+
private card;
|
|
2220
|
+
breakpointInputs: _angular_core.Signal<CardContentInputs>;
|
|
2221
|
+
classes: _angular_core.Signal<string>;
|
|
2222
|
+
styles: _angular_core.Signal<Record<string, string>>;
|
|
2223
|
+
protected inheritedBackground(): CardBackground | undefined;
|
|
2224
|
+
protected defaultPadding(): CardPadding;
|
|
2225
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardContentComponent, never>;
|
|
2226
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardContentComponent, "tedi-card-content", never, { "background": { "alias": "background"; "required": false; "isSignal": true; }; "padding": { "alias": "padding"; "required": false; "isSignal": true; }; "backgroundImage": { "alias": "backgroundImage"; "required": false; "isSignal": true; }; "backgroundPosition": { "alias": "backgroundPosition"; "required": false; "isSignal": true; }; "backgroundSize": { "alias": "backgroundSize"; "required": false; "isSignal": true; }; "backgroundRepeat": { "alias": "backgroundRepeat"; "required": false; "isSignal": true; }; "autoWidth": { "alias": "autoWidth"; "required": false; "isSignal": true; }; "xs": { "alias": "xs"; "required": false; "isSignal": true; }; "sm": { "alias": "sm"; "required": false; "isSignal": true; }; "md": { "alias": "md"; "required": false; "isSignal": true; }; "lg": { "alias": "lg"; "required": false; "isSignal": true; }; "xl": { "alias": "xl"; "required": false; "isSignal": true; }; "xxl": { "alias": "xxl"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
2227
|
+
}
|
|
2228
|
+
|
|
2229
|
+
type CardIconType = "default" | "brand";
|
|
2230
|
+
type CardIconSize = "default" | "small";
|
|
2231
|
+
/**
|
|
2232
|
+
* Icon cell for a card row. The projected icon is aligned to the top of the
|
|
2233
|
+
* cell and inherits the cell color. Pair the small size with a 16px icon.
|
|
2234
|
+
*/
|
|
2235
|
+
declare class CardIconComponent extends CardContentComponent {
|
|
2236
|
+
/**
|
|
2237
|
+
* Visual type of the icon cell.
|
|
2238
|
+
* @default default
|
|
2239
|
+
*/
|
|
2240
|
+
type: _angular_core.InputSignal<CardIconType>;
|
|
2241
|
+
/**
|
|
2242
|
+
* Size of the icon cell.
|
|
2243
|
+
* @default default
|
|
2244
|
+
*/
|
|
2245
|
+
size: _angular_core.InputSignal<CardIconSize>;
|
|
2246
|
+
protected blockClass: string;
|
|
2247
|
+
protected inheritedBackground(): CardBackground | undefined;
|
|
2248
|
+
protected defaultPadding(): CardPadding;
|
|
2249
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardIconComponent, never>;
|
|
2250
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardIconComponent, "tedi-card-icon", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
2251
|
+
}
|
|
2252
|
+
|
|
2253
|
+
/**
|
|
2254
|
+
* Lays out card content cells horizontally inside a card.
|
|
2255
|
+
* Place a `tedi-separator` between cells (vertical, `size="auto"`) or
|
|
2256
|
+
* between rows (horizontal) to draw dividers.
|
|
2257
|
+
*/
|
|
2258
|
+
declare class CardRowComponent {
|
|
2259
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardRowComponent, never>;
|
|
2260
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardRowComponent, "tedi-card-row", never, {}, {}, never, ["*"], true, never>;
|
|
2261
|
+
}
|
|
2262
|
+
|
|
2263
|
+
/**
|
|
2264
|
+
* Header block of a card. Same API as `tedi-card-content`, but defaults to
|
|
2265
|
+
* the brand-primary background and does not inherit background from the card.
|
|
2266
|
+
*/
|
|
2267
|
+
declare class CardHeaderComponent extends CardContentComponent {
|
|
2268
|
+
protected blockClass: string;
|
|
2269
|
+
protected defaultBackground: CardBackground;
|
|
2270
|
+
protected inheritedBackground(): CardBackground | undefined;
|
|
2271
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardHeaderComponent, never>;
|
|
2272
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardHeaderComponent, "tedi-card-header", never, {}, {}, never, ["*"], true, never>;
|
|
1786
2273
|
}
|
|
1787
2274
|
|
|
1788
2275
|
type BulletColor = "primary" | "secondary" | "tertiary" | "brand" | "brand-dark" | "success" | "warning" | "warning-dark" | "danger" | "white";
|
|
@@ -1969,50 +2456,481 @@ declare class CarouselNavigationComponent {
|
|
|
1969
2456
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CarouselNavigationComponent, "tedi-carousel-navigation", never, {}, {}, never, never, true, never>;
|
|
1970
2457
|
}
|
|
1971
2458
|
|
|
1972
|
-
type PaginationBackground = "white" | "transparent";
|
|
1973
2459
|
/**
|
|
1974
|
-
*
|
|
1975
|
-
*
|
|
1976
|
-
|
|
1977
|
-
|
|
2460
|
+
* A date range with an inclusive start (`from`) and optional inclusive end (`to`).
|
|
2461
|
+
* When `to` is undefined the range degenerates to the single day `from`.
|
|
2462
|
+
*/
|
|
2463
|
+
type DateRange = {
|
|
2464
|
+
from: Date;
|
|
2465
|
+
to?: Date;
|
|
2466
|
+
};
|
|
2467
|
+
/**
|
|
2468
|
+
* Formats a Date object to dd.MM.yyyy string format.
|
|
1978
2469
|
*
|
|
1979
|
-
*
|
|
1980
|
-
* `
|
|
2470
|
+
* Thin wrapper around `formatLocaleDate(date, 'et-EE')` kept for back-compat.
|
|
2471
|
+
* New code should call `formatLocaleDate` directly with the desired locale.
|
|
1981
2472
|
*/
|
|
1982
|
-
|
|
2473
|
+
declare function formatDate(date: Date): string;
|
|
1983
2474
|
/**
|
|
1984
|
-
*
|
|
1985
|
-
*
|
|
1986
|
-
*
|
|
1987
|
-
*
|
|
2475
|
+
* Parses a dd.MM.yyyy string to a Date object.
|
|
2476
|
+
* Returns null if the string is invalid.
|
|
2477
|
+
*
|
|
2478
|
+
* Thin wrapper around `parseLocaleDate(str, 'et-EE')` kept for back-compat.
|
|
2479
|
+
* Note: `parseLocaleDate` returns `Date | undefined`; this wrapper normalizes
|
|
2480
|
+
* undefined to null so existing callers asserting `=== null` still work.
|
|
1988
2481
|
*/
|
|
1989
|
-
|
|
1990
|
-
type PaginationItemType = "page" | "previous" | "next" | "ellipsis";
|
|
2482
|
+
declare function parseDate(str: string): Date | null;
|
|
1991
2483
|
/**
|
|
1992
|
-
*
|
|
1993
|
-
* `pageSizeOptions` when the visible text should differ from the value —
|
|
1994
|
-
* most commonly a "Show all" entry: `{ value: totalItems, label: 'Show all' }`.
|
|
1995
|
-
* The label is rendered as-is, so supply it already translated.
|
|
2484
|
+
* Checks if two dates represent the same calendar day.
|
|
1996
2485
|
*/
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
2000
|
-
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2486
|
+
declare function isSameDay(a: Date, b: Date): boolean;
|
|
2487
|
+
/**
|
|
2488
|
+
* Checks if date a is before date b (day-level, time ignored).
|
|
2489
|
+
*/
|
|
2490
|
+
declare function isBeforeDay(a: Date, b: Date): boolean;
|
|
2491
|
+
/**
|
|
2492
|
+
* Checks if date a is after date b (day-level, time ignored).
|
|
2493
|
+
*/
|
|
2494
|
+
declare function isAfterDay(a: Date, b: Date): boolean;
|
|
2495
|
+
/**
|
|
2496
|
+
* Returns the ISO week number for a given date.
|
|
2497
|
+
*/
|
|
2498
|
+
declare function getISOWeek(date: Date): number;
|
|
2499
|
+
/**
|
|
2500
|
+
* Returns a new Date offset by `n` days from `date`. `n` may be negative.
|
|
2501
|
+
*/
|
|
2502
|
+
declare function addDays(date: Date, n: number): Date;
|
|
2503
|
+
/**
|
|
2504
|
+
* Returns a new Date offset by `n` months from `date`. Clamps the day to the
|
|
2505
|
+
* last day of the target month (e.g. Jan 31 + 1 month → Feb 28/29).
|
|
2506
|
+
*/
|
|
2507
|
+
declare function addMonths(date: Date, n: number): Date;
|
|
2508
|
+
/**
|
|
2509
|
+
* Returns a new Date offset by `n` years from `date`. Clamps Feb 29 to Feb 28
|
|
2510
|
+
* in non-leap target years.
|
|
2511
|
+
*/
|
|
2512
|
+
declare function addYears(date: Date, n: number): Date;
|
|
2513
|
+
/**
|
|
2514
|
+
* Returns the first day of the month for `date` at 00:00 local time.
|
|
2515
|
+
*/
|
|
2516
|
+
declare function startOfMonth(date: Date): Date;
|
|
2517
|
+
/**
|
|
2518
|
+
* Returns the last day of the month for `date` at 00:00 local time.
|
|
2519
|
+
*/
|
|
2520
|
+
declare function endOfMonth(date: Date): Date;
|
|
2521
|
+
/**
|
|
2522
|
+
* Returns the first day of the week containing `date`, given a locale's
|
|
2523
|
+
* first day of week (0=Sun..6=Sat).
|
|
2524
|
+
*/
|
|
2525
|
+
declare function startOfWeek(date: Date, firstDayOfWeek: number): Date;
|
|
2526
|
+
/**
|
|
2527
|
+
* Returns the number of days in the given month/year. `monthIndex` is 0-based.
|
|
2528
|
+
*/
|
|
2529
|
+
declare function getDaysInMonth(year: number, monthIndex: number): number;
|
|
2530
|
+
/**
|
|
2531
|
+
* Checks if two dates fall in the same calendar month and year.
|
|
2532
|
+
*/
|
|
2533
|
+
declare function isSameMonth(a: Date, b: Date): boolean;
|
|
2534
|
+
/**
|
|
2535
|
+
* Checks if two dates fall in the same calendar year.
|
|
2536
|
+
*/
|
|
2537
|
+
declare function isSameYear(a: Date, b: Date): boolean;
|
|
2538
|
+
/**
|
|
2539
|
+
* Returns the locale's first day of week as a JS day index (0=Sun..6=Sat).
|
|
2540
|
+
*
|
|
2541
|
+
* Reads `Intl.Locale(localeCode).getWeekInfo()` when available, falling back
|
|
2542
|
+
* to 1 (Monday) when unavailable. Intl returns 1-7 (1=Mon..7=Sun); this
|
|
2543
|
+
* function converts to JS's 0-6 convention.
|
|
2544
|
+
*/
|
|
2545
|
+
declare function getFirstDayOfWeek(localeCode: string): number;
|
|
2546
|
+
/**
|
|
2547
|
+
* Returns 12 month names (January..December) in the requested locale and format.
|
|
2548
|
+
*/
|
|
2549
|
+
declare function getMonthNames(localeCode: string, format: "long" | "short"): string[];
|
|
2550
|
+
/**
|
|
2551
|
+
* Returns 7 weekday names starting at `firstDayOfWeek` (0=Sun..6=Sat) in the
|
|
2552
|
+
* requested locale and format.
|
|
2553
|
+
*/
|
|
2554
|
+
declare function getWeekdayNames(localeCode: string, format: "long" | "short" | "narrow", firstDayOfWeek: number): string[];
|
|
2555
|
+
/**
|
|
2556
|
+
* Formats a Date according to the given locale's short numeric form.
|
|
2557
|
+
* For `et-EE` produces `dd.MM.yyyy`; for `en-US` `MM/dd/yyyy`; for `en-GB`
|
|
2558
|
+
* `dd/MM/yyyy`; etc.
|
|
2559
|
+
*/
|
|
2560
|
+
declare function formatLocaleDate(date: Date, localeCode: string): string;
|
|
2561
|
+
/**
|
|
2562
|
+
* Formats a Date as a long-form, locale-aware string suitable for
|
|
2563
|
+
* `aria-label` use — e.g. for `en-US` produces "Friday, May 16, 2026" and for
|
|
2564
|
+
* `et-EE` "reede, 16. mai 2026". Matches react-day-picker's `labelDay` shape.
|
|
2565
|
+
*/
|
|
2566
|
+
declare function formatLocaleDateLong(date: Date, localeCode: string): string;
|
|
2567
|
+
/**
|
|
2568
|
+
* Formats a Date as a locale-aware "Month Year" string — e.g. "May 2026" for
|
|
2569
|
+
* `en-US` and "mai 2026" for `et-EE`. Used as the aria-label for the day
|
|
2570
|
+
* grid and inside the calendar header's aria-live region so screen readers
|
|
2571
|
+
* announce the visible month/year on navigation.
|
|
2572
|
+
*/
|
|
2573
|
+
declare function formatMonthYear(date: Date, localeCode: string): string;
|
|
2574
|
+
/**
|
|
2575
|
+
* Builds a locale-aware manual-entry hint such as `pp.kk.aaaa` (et-EE),
|
|
2576
|
+
* `dd.mm.yyyy` (en) or `дд.мм.гггг` (ru). Field order and separators are
|
|
2577
|
+
* derived from `Intl.DateTimeFormat` (so they always match what the field
|
|
2578
|
+
* formats and parses), while the letter tokens are localized per language.
|
|
2579
|
+
* Falls back to English tokens for unknown languages.
|
|
2580
|
+
*/
|
|
2581
|
+
declare function formatLocaleDateHint(localeCode: string): string;
|
|
2582
|
+
/**
|
|
2583
|
+
* Parses a locale-formatted date string back into a Date.
|
|
2584
|
+
*
|
|
2585
|
+
* Algorithm (mirrors React's defaultParseDate):
|
|
2586
|
+
* 1. Format a reference date with distinct y/m/d digits via Intl.DateTimeFormat.
|
|
2587
|
+
* 2. Walk `formatToParts` to discover the field order and the literal
|
|
2588
|
+
* separators the locale uses.
|
|
2589
|
+
* 3. Build a regex from that ordering using field-aware digit ranges
|
|
2590
|
+
* (day/month: 1-2 digits, year: 2 or 4 digits) and the actual escaped
|
|
2591
|
+
* separators. 3-digit years are rejected.
|
|
2592
|
+
* 4. Match the (trimmed) input; reject if no match.
|
|
2593
|
+
* 5. Validate ranges and check the constructed Date round-trips (so e.g.
|
|
2594
|
+
* Feb 30 is rejected).
|
|
2595
|
+
*
|
|
2596
|
+
* Returns `undefined` on any failure — silent, caller decides UX.
|
|
2597
|
+
*/
|
|
2598
|
+
declare function parseLocaleDate(value: string, localeCode: string): Date | undefined;
|
|
2599
|
+
/**
|
|
2600
|
+
* Returns true if `date` falls within the inclusive `[from, to]` range
|
|
2601
|
+
* (day-level). When `to` is undefined, only `from` matters (same-day check).
|
|
2602
|
+
*/
|
|
2603
|
+
declare function isDateInRange(date: Date, range: DateRange): boolean;
|
|
2604
|
+
/**
|
|
2605
|
+
* Toggles a date in an array of dates (day-level). If a same-day entry exists
|
|
2606
|
+
* it is removed; otherwise the date is appended. Returns a new array.
|
|
2607
|
+
*/
|
|
2608
|
+
declare function toggleDateInArray(dates: Date[], date: Date): Date[];
|
|
2609
|
+
/**
|
|
2610
|
+
* Builds a 6×7 grid of Date cells for the calendar day view.
|
|
2611
|
+
*
|
|
2612
|
+
* - The first weekday of the month is found, then we walk back to
|
|
2613
|
+
* `firstDayOfWeek` to fill leading cells.
|
|
2614
|
+
* - Cells outside the current month are real Date objects when
|
|
2615
|
+
* `showOutsideDays` is true, otherwise `null`.
|
|
2616
|
+
* - Always returns 6 rows × 7 cells (42 cells total).
|
|
2617
|
+
*/
|
|
2618
|
+
declare function buildMonthGrid(month: Date, firstDayOfWeek: number, showOutsideDays: boolean): (Date | null)[][];
|
|
2619
|
+
|
|
2620
|
+
type DateBefore = {
|
|
2621
|
+
before: Date;
|
|
2622
|
+
};
|
|
2623
|
+
type DateAfter = {
|
|
2624
|
+
after: Date;
|
|
2625
|
+
};
|
|
2626
|
+
type DateInterval = {
|
|
2627
|
+
before: Date;
|
|
2628
|
+
after: Date;
|
|
2629
|
+
};
|
|
2630
|
+
type DayOfWeek = {
|
|
2631
|
+
dayOfWeek: number[];
|
|
2632
|
+
};
|
|
2633
|
+
type Matcher = boolean | Date | Date[] | DateBefore | DateAfter | DateInterval | DateRange | DayOfWeek | ((date: Date) => boolean);
|
|
2634
|
+
/**
|
|
2635
|
+
* Returns whether `date` matches the given matcher.
|
|
2636
|
+
*
|
|
2637
|
+
* Semantics mirror react-day-picker:
|
|
2638
|
+
* - `boolean` — returned as-is.
|
|
2639
|
+
* - `Date` — true if same day.
|
|
2640
|
+
* - `Date[]` — true if any entry is the same day.
|
|
2641
|
+
* - `{ before }` — true if date is strictly before `before` (day-level).
|
|
2642
|
+
* - `{ after }` — true if date is strictly after `after` (day-level).
|
|
2643
|
+
* - `{ before, after }` — true if date is OUTSIDE the interval `(after, before)`
|
|
2644
|
+
* (i.e. `date <= after || date >= before`, day-level).
|
|
2645
|
+
* - `{ from, to? }` — true if date is within `[from, to]` inclusive (day-level).
|
|
2646
|
+
* If `to` is omitted, only `from` matters.
|
|
2647
|
+
* - `{ dayOfWeek }` — true if `date.getDay()` is in the array.
|
|
2648
|
+
* - function — called with the date.
|
|
2649
|
+
*/
|
|
2650
|
+
declare function matchDate(date: Date, matcher: Matcher): boolean;
|
|
2651
|
+
/**
|
|
2652
|
+
* Returns true if any matcher in the list matches the given date.
|
|
2653
|
+
* An empty array returns false.
|
|
2654
|
+
*/
|
|
2655
|
+
declare function matchAny(date: Date, matchers: Matcher[]): boolean;
|
|
2656
|
+
|
|
2657
|
+
type StatusIndicatorType = "success" | "danger" | "warning" | "inactive";
|
|
2658
|
+
type StatusIndicatorSize = "sm" | "lg";
|
|
2659
|
+
type StatusIndicatorPosition = "default" | "top-right";
|
|
2660
|
+
declare class StatusIndicatorComponent {
|
|
2661
|
+
/**
|
|
2662
|
+
* Accessible label for the indicator. When provided, the indicator is
|
|
2663
|
+
* exposed to assistive technology with `role="img"`. When omitted, the
|
|
2664
|
+
* indicator is treated as decorative (`aria-hidden="true"`).
|
|
2665
|
+
*/
|
|
2666
|
+
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
2667
|
+
/**
|
|
2668
|
+
* The status type, which determines the indicator color.
|
|
2669
|
+
* @default success
|
|
2670
|
+
*/
|
|
2671
|
+
readonly type: _angular_core.InputSignal<StatusIndicatorType>;
|
|
2672
|
+
/**
|
|
2673
|
+
* The size of the indicator.
|
|
2674
|
+
* @default sm
|
|
2675
|
+
*/
|
|
2676
|
+
readonly size: _angular_core.InputSignal<StatusIndicatorSize>;
|
|
2677
|
+
/**
|
|
2678
|
+
* Whether the indicator has a white border ring.
|
|
2679
|
+
* @default false
|
|
2680
|
+
*/
|
|
2681
|
+
readonly hasBorder: _angular_core.InputSignal<boolean>;
|
|
2682
|
+
/**
|
|
2683
|
+
* Controls positioning of the indicator.
|
|
2684
|
+
* - `'default'` — inline, no absolute positioning
|
|
2685
|
+
* - `'top-right'` — absolutely positioned at the top-right corner of the parent
|
|
2686
|
+
* @default default
|
|
2687
|
+
*/
|
|
2688
|
+
readonly position: _angular_core.InputSignal<StatusIndicatorPosition>;
|
|
2689
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StatusIndicatorComponent, never>;
|
|
2690
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StatusIndicatorComponent, "tedi-status-indicator", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hasBorder": { "alias": "hasBorder"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
2691
|
+
}
|
|
2692
|
+
|
|
2693
|
+
type CalendarView = "days" | "months" | "years";
|
|
2694
|
+
type DateFieldMode = "single" | "multiple" | "range";
|
|
2695
|
+
|
|
2696
|
+
interface DayStatus {
|
|
2697
|
+
type: StatusIndicatorType;
|
|
2698
|
+
/**
|
|
2699
|
+
* Accessible label for the status. Surfaced on the day button's `aria-label`
|
|
2700
|
+
* so screen readers announce the date together with its status — required to
|
|
2701
|
+
* meet WCAG 1.1.1 / 1.4.1 since the indicator dot alone is decorative.
|
|
2702
|
+
*/
|
|
2703
|
+
label: string;
|
|
2704
|
+
}
|
|
2705
|
+
type DayStatusFn = (date: Date) => DayStatus | null | undefined;
|
|
2706
|
+
|
|
2707
|
+
type CalendarValue = Date | Date[] | DateRange | null;
|
|
2708
|
+
type DayPredicate = (date: Date) => boolean;
|
|
2709
|
+
type DayAvailabilityInput$1 = Date[] | DayPredicate | undefined;
|
|
2710
|
+
type MonthPredicate$1 = (month: Date) => boolean;
|
|
2711
|
+
type YearPredicate$1 = (year: Date) => boolean;
|
|
2712
|
+
declare class CalendarComponent implements ControlValueAccessor {
|
|
2713
|
+
/**
|
|
2714
|
+
* Active view (two-way). `days` shows the day grid, `months` the month grid,
|
|
2715
|
+
* `years` the year grid. Driven by `selectionLevel` and the header navigation,
|
|
2716
|
+
* but can be set directly to open the calendar on a specific level.
|
|
2717
|
+
*/
|
|
2718
|
+
readonly view: _angular_core.ModelSignal<CalendarView>;
|
|
2719
|
+
/**
|
|
2720
|
+
* The first (left-most) month shown (two-way). Drives which month grid is
|
|
2721
|
+
* rendered and is updated by header navigation and keyboard paging. For
|
|
2722
|
+
* multi-month layouts the additional months follow this one.
|
|
2723
|
+
*/
|
|
2724
|
+
readonly currentMonth: _angular_core.ModelSignal<Date>;
|
|
2725
|
+
/**
|
|
2726
|
+
* The selected value (two-way / `ControlValueAccessor`). Shape follows `mode`:
|
|
2727
|
+
* `single` → `Date | null`, `multiple` → `Date[]`, `range` → `{ from, to }`.
|
|
2728
|
+
*/
|
|
2729
|
+
readonly value: _angular_core.ModelSignal<CalendarValue>;
|
|
2730
|
+
/**
|
|
2731
|
+
* Selection mode. `single` selects one date, `multiple` toggles dates in an
|
|
2732
|
+
* array, `range` builds a `{ from, to }` range across two clicks.
|
|
2733
|
+
*/
|
|
2734
|
+
readonly mode: _angular_core.InputSignal<DateFieldMode>;
|
|
2735
|
+
/**
|
|
2736
|
+
* Lowest level the user can commit to. `days` shows the day grid as the final
|
|
2737
|
+
* step; `months` and `years` commit at that level instead.
|
|
2738
|
+
*/
|
|
2739
|
+
readonly selectionLevel: _angular_core.InputSignal<CalendarView>;
|
|
2740
|
+
/**
|
|
2741
|
+
* BCP-47 locale used for weekday/month names and the first day of the week.
|
|
2742
|
+
*/
|
|
2743
|
+
readonly localeCode: _angular_core.InputSignal<string>;
|
|
2744
|
+
/**
|
|
2745
|
+
* Render the trailing/leading days from the adjacent month inside the current
|
|
2746
|
+
* month's grid.
|
|
2747
|
+
*/
|
|
2748
|
+
readonly showOutsideDays: _angular_core.InputSignal<boolean>;
|
|
2749
|
+
/** Render the ISO week-number column at the start of each row. */
|
|
2750
|
+
readonly showWeekNumbers: _angular_core.InputSignal<boolean>;
|
|
2751
|
+
/** Show the previous/next navigation chevrons in the header. */
|
|
2752
|
+
readonly showNavigation: _angular_core.InputSignal<boolean>;
|
|
2753
|
+
/**
|
|
2754
|
+
* Render the calendar with its own outer border and rounded corners. Disable
|
|
2755
|
+
* when embedding inside a surface that already has a border (e.g. the
|
|
2756
|
+
* DateField overlay).
|
|
2757
|
+
*/
|
|
2758
|
+
readonly bordered: _angular_core.InputSignal<boolean>;
|
|
2759
|
+
/**
|
|
2760
|
+
* Matchers that mark dates as disabled. Each matcher can be a `Date`, `Date[]`,
|
|
2761
|
+
* `{ before }`, `{ after }`, `{ before, after }`, `{ from, to? }`,
|
|
2762
|
+
* `{ dayOfWeek: number[] }`, or a `(date) => boolean` predicate.
|
|
2763
|
+
*/
|
|
2764
|
+
readonly disabledMatchers: _angular_core.InputSignal<Matcher[]>;
|
|
2765
|
+
/**
|
|
2766
|
+
* Whitelist of selectable days — an explicit `Date[]` or a predicate
|
|
2767
|
+
* `(date) => boolean`. Days outside the whitelist are disabled.
|
|
2768
|
+
*/
|
|
2769
|
+
readonly availableDays: _angular_core.InputSignal<DayAvailabilityInput$1>;
|
|
2770
|
+
/**
|
|
2771
|
+
* Blacklist of unavailable days — a `Date[]` or a predicate `(date) => boolean`.
|
|
2772
|
+
* Takes precedence over `availableDays`.
|
|
2773
|
+
*/
|
|
2774
|
+
readonly unavailableDays: _angular_core.InputSignal<DayAvailabilityInput$1>;
|
|
2775
|
+
/**
|
|
2776
|
+
* Function `(date) => { type, label } | null | undefined` that overlays a
|
|
2777
|
+
* `tedi-status-indicator` dot on specific days. The `label` is surfaced on the
|
|
2778
|
+
* day button's `aria-label` for screen readers.
|
|
2779
|
+
*/
|
|
2780
|
+
readonly dayStatus: _angular_core.InputSignal<DayStatusFn | undefined>;
|
|
2781
|
+
/**
|
|
2782
|
+
* How the header exposes month/year picking. `dropdown` shows two dropdowns;
|
|
2783
|
+
* `grid` switches the body to a month or year grid when the header label is
|
|
2784
|
+
* clicked; `static` renders just the label — only the prev/next chevrons can
|
|
2785
|
+
* change the month.
|
|
2786
|
+
*/
|
|
2787
|
+
readonly monthYearSelectType: _angular_core.InputSignal<"static" | "dropdown" | "grid">;
|
|
2788
|
+
/**
|
|
2789
|
+
* When `mode='multiple'`, prevents clearing the last selected date — at least
|
|
2790
|
+
* one date must remain selected.
|
|
2791
|
+
*/
|
|
2792
|
+
readonly required: _angular_core.InputSignal<boolean>;
|
|
2793
|
+
/**
|
|
2794
|
+
* How many consecutive months to render side by side. Useful for range
|
|
2795
|
+
* selection. The visible count is capped to what fits the viewport width.
|
|
2796
|
+
*/
|
|
2797
|
+
readonly numberOfMonths: _angular_core.InputSignal<number>;
|
|
2798
|
+
/**
|
|
2799
|
+
* Disables all interactions. Combines with the reactive-forms disabled state.
|
|
2800
|
+
*/
|
|
2801
|
+
readonly inputDisabled: _angular_core.InputSignal<boolean>;
|
|
2802
|
+
/**
|
|
2803
|
+
* Predicate `(month) => boolean` returning `true` to disable a whole month
|
|
2804
|
+
* (header navigation and the month grid). Leave `undefined` to disable nothing.
|
|
2805
|
+
*/
|
|
2806
|
+
readonly shouldDisableMonth: _angular_core.InputSignal<MonthPredicate$1 | undefined>;
|
|
2807
|
+
/**
|
|
2808
|
+
* Predicate `(year) => boolean` returning `true` to disable a whole year
|
|
2809
|
+
* (header navigation and the year grid). Leave `undefined` to disable nothing.
|
|
2810
|
+
*/
|
|
2811
|
+
readonly shouldDisableYear: _angular_core.InputSignal<YearPredicate$1 | undefined>;
|
|
2812
|
+
/**
|
|
2813
|
+
* Earliest year offered in the year grid/dropdown. Defaults to 10 years before
|
|
2814
|
+
* the current year when `null`.
|
|
2815
|
+
*/
|
|
2816
|
+
readonly minYear: _angular_core.InputSignal<number | null>;
|
|
2817
|
+
/**
|
|
2818
|
+
* Latest year offered in the year grid/dropdown. Defaults to 10 years after
|
|
2819
|
+
* the current year when `null`.
|
|
2820
|
+
*/
|
|
2821
|
+
readonly maxYear: _angular_core.InputSignal<number | null>;
|
|
2822
|
+
/**
|
|
2823
|
+
* Emitted whenever a value is committed. `date` is the new full value (shape
|
|
2824
|
+
* follows `mode`); `day` is the specific day/month/year that was clicked.
|
|
2825
|
+
*/
|
|
2826
|
+
readonly select: _angular_core.OutputEmitterRef<{
|
|
2827
|
+
date: CalendarValue;
|
|
2828
|
+
day: Date;
|
|
2829
|
+
}>;
|
|
2830
|
+
private readonly hostEl;
|
|
2831
|
+
private readonly injector;
|
|
2832
|
+
private readonly destroyRef;
|
|
2833
|
+
readonly yearPageSize = 12;
|
|
2834
|
+
private readonly cvaDisabled;
|
|
2835
|
+
private readonly internalYearPageStart;
|
|
2836
|
+
readonly hoveredDay: _angular_core.WritableSignal<Date | null>;
|
|
2837
|
+
private readonly viewportWidth;
|
|
2838
|
+
private onChange;
|
|
2839
|
+
private onTouched;
|
|
2840
|
+
constructor();
|
|
2841
|
+
private static readonly VIEWPORT_MARGIN_PX;
|
|
2842
|
+
private updateFitColumns;
|
|
2843
|
+
readonly effectiveDisabled: _angular_core.Signal<boolean>;
|
|
2844
|
+
readonly firstDayOfWeek: _angular_core.Signal<number>;
|
|
2845
|
+
readonly monthDates: _angular_core.Signal<Date[]>;
|
|
2846
|
+
readonly resolvedMinYear: _angular_core.Signal<number>;
|
|
2847
|
+
readonly resolvedMaxYear: _angular_core.Signal<number>;
|
|
2848
|
+
readonly yearPageStart: _angular_core.Signal<number>;
|
|
2849
|
+
readonly selectedSingle: _angular_core.Signal<Date | null>;
|
|
2850
|
+
readonly computedDisabledMatchers: _angular_core.Signal<Matcher[]>;
|
|
2851
|
+
readonly effectiveIsMonthDisabled: _angular_core.Signal<MonthPredicate$1>;
|
|
2852
|
+
readonly effectiveIsYearDisabled: _angular_core.Signal<YearPredicate$1>;
|
|
2853
|
+
writeValue(value: CalendarValue): void;
|
|
2854
|
+
registerOnChange(fn: (value: CalendarValue) => void): void;
|
|
2855
|
+
registerOnTouched(fn: () => void): void;
|
|
2856
|
+
setDisabledState(disabled: boolean): void;
|
|
2857
|
+
handlePrev(): void;
|
|
2858
|
+
handleNext(): void;
|
|
2859
|
+
handleHeaderMonthChange(monthStartDate: Date, index?: number): void;
|
|
2860
|
+
handleHeaderYearChange(yearStartDate: Date, index?: number): void;
|
|
2861
|
+
handleHeaderViewChange(nextView: CalendarView): void;
|
|
2862
|
+
handleDaySelect(day: Date): void;
|
|
2863
|
+
handleMonthSelect(monthStartDate: Date): void;
|
|
2864
|
+
handleYearSelect(yearStartDate: Date): void;
|
|
2865
|
+
private applyModeSelection;
|
|
2866
|
+
handleKeydown(event: KeyboardEvent): void;
|
|
2867
|
+
private handleDaysKeydown;
|
|
2868
|
+
private computeDayKeyTarget;
|
|
2869
|
+
private skipDisabledDays;
|
|
2870
|
+
private adjustCurrentMonthForFocus;
|
|
2871
|
+
private handleMonthsKeydown;
|
|
2872
|
+
private handleYearsKeydown;
|
|
2873
|
+
private focusGridIndex;
|
|
2874
|
+
private queryGridButtons;
|
|
2875
|
+
/**
|
|
2876
|
+
* Moves focus to the calendar's active cell — the roving-tabindex day in the
|
|
2877
|
+
* day view, or the first enabled control in the month/year views. Used by
|
|
2878
|
+
* popover hosts (e.g. date-field) to pull focus into the calendar when it
|
|
2879
|
+
* opens, since the CDK overlay is detached from the trigger in DOM order.
|
|
2880
|
+
*/
|
|
2881
|
+
focusActiveCell(): void;
|
|
2882
|
+
private focusDayCell;
|
|
2883
|
+
private commit;
|
|
2884
|
+
private partialRange;
|
|
2885
|
+
private deriveAnchor;
|
|
2886
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CalendarComponent, never>;
|
|
2887
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CalendarComponent, "tedi-calendar", never, { "view": { "alias": "view"; "required": false; "isSignal": true; }; "currentMonth": { "alias": "currentMonth"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "selectionLevel": { "alias": "selectionLevel"; "required": false; "isSignal": true; }; "localeCode": { "alias": "localeCode"; "required": false; "isSignal": true; }; "showOutsideDays": { "alias": "showOutsideDays"; "required": false; "isSignal": true; }; "showWeekNumbers": { "alias": "showWeekNumbers"; "required": false; "isSignal": true; }; "showNavigation": { "alias": "showNavigation"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "disabledMatchers": { "alias": "disabledMatchers"; "required": false; "isSignal": true; }; "availableDays": { "alias": "availableDays"; "required": false; "isSignal": true; }; "unavailableDays": { "alias": "unavailableDays"; "required": false; "isSignal": true; }; "dayStatus": { "alias": "dayStatus"; "required": false; "isSignal": true; }; "monthYearSelectType": { "alias": "monthYearSelectType"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "numberOfMonths": { "alias": "numberOfMonths"; "required": false; "isSignal": true; }; "inputDisabled": { "alias": "inputDisabled"; "required": false; "isSignal": true; }; "shouldDisableMonth": { "alias": "shouldDisableMonth"; "required": false; "isSignal": true; }; "shouldDisableYear": { "alias": "shouldDisableYear"; "required": false; "isSignal": true; }; "minYear": { "alias": "minYear"; "required": false; "isSignal": true; }; "maxYear": { "alias": "maxYear"; "required": false; "isSignal": true; }; }, { "view": "viewChange"; "currentMonth": "currentMonthChange"; "value": "valueChange"; "select": "select"; }, never, ["[tediCalendarFooter]"], true, never>;
|
|
2888
|
+
}
|
|
2889
|
+
|
|
2890
|
+
type PaginationBackground = "white" | "transparent";
|
|
2891
|
+
/**
|
|
2892
|
+
* Visibility toggle for the results / page-size / pager / arrow slots.
|
|
2893
|
+
* - `true` — always hidden
|
|
2894
|
+
* - `false` (default) — always visible
|
|
2895
|
+
* - `'sm'` / `'md'` / `'lg'` / `'xl'` / `'xxl'` — hidden below that breakpoint
|
|
2896
|
+
*
|
|
2897
|
+
* Mirrors the `boolean | breakpoint` pattern used by `tedi-modal`'s
|
|
2898
|
+
* `fullscreen` input.
|
|
2899
|
+
*/
|
|
2900
|
+
type PaginationVisibility = boolean | "sm" | "md" | "lg" | "xl" | "xxl";
|
|
2901
|
+
/**
|
|
2902
|
+
* Where the divider sits relative to the pagination row.
|
|
2903
|
+
* - `'top'` (default) — border on top, matches single-row layouts under content
|
|
2904
|
+
* - `'bottom'` — border on bottom, for above-content placements
|
|
2905
|
+
* - `'none'` — no divider, useful when the surrounding container already has one
|
|
2906
|
+
*/
|
|
2907
|
+
type PaginationDividerPosition = "top" | "bottom" | "none";
|
|
2908
|
+
type PaginationItemType = "page" | "previous" | "next" | "ellipsis";
|
|
2909
|
+
/**
|
|
2910
|
+
* A labelled page-size option. Use it alongside plain numbers in
|
|
2911
|
+
* `pageSizeOptions` when the visible text should differ from the value —
|
|
2912
|
+
* most commonly a "Show all" entry: `{ value: totalItems, label: 'Show all' }`.
|
|
2913
|
+
* The label is rendered as-is, so supply it already translated.
|
|
2914
|
+
*/
|
|
2915
|
+
interface PaginationPageSizeOption {
|
|
2916
|
+
value: number;
|
|
2917
|
+
label: string;
|
|
2918
|
+
}
|
|
2919
|
+
interface PaginationItem {
|
|
2920
|
+
type: PaginationItemType;
|
|
2921
|
+
page: number | null;
|
|
2922
|
+
selected: boolean;
|
|
2923
|
+
disabled: boolean;
|
|
2924
|
+
}
|
|
2925
|
+
interface PaginationLabels {
|
|
2926
|
+
/** Accessible label for the nav wrapper. @default 'Pagination' */
|
|
2927
|
+
ariaLabel: string;
|
|
2928
|
+
/** Previous button label (icon-only, used as aria-label). @default 'Previous page' */
|
|
2929
|
+
previous: string;
|
|
2930
|
+
/** Next button label (icon-only, used as aria-label). @default 'Next page' */
|
|
2931
|
+
next: string;
|
|
2932
|
+
/** aria-label for a numeric page button. @default (page) => 'Go to page {page}' */
|
|
2933
|
+
pageAriaLabel: (page: number) => string;
|
|
2016
2934
|
/** aria-label for the currently active page. @default (page) => 'Current page, page {page}' */
|
|
2017
2935
|
currentPageAriaLabel: (page: number) => string;
|
|
2018
2936
|
/** Rendered to the left of the nav when `totalItems` is set. @default (count) => '{count} results' */
|
|
@@ -2027,6 +2945,30 @@ interface PaginationLabels {
|
|
|
2027
2945
|
pageSizeTitle: string;
|
|
2028
2946
|
}
|
|
2029
2947
|
|
|
2948
|
+
type OverlayPosition = "top" | "top-start" | "top-end" | "bottom" | "bottom-start" | "bottom-end" | "left" | "left-start" | "left-end" | "right" | "right-start" | "right-end" | "auto" | "auto-start" | "auto-end";
|
|
2949
|
+
declare function toConnectedPositions(placement: OverlayPosition, preventOverflow: boolean, extraOffset?: number): ConnectedPosition[];
|
|
2950
|
+
/** The side of the trigger an overlay resolved to after positioning. */
|
|
2951
|
+
type OverlaySide = "top" | "bottom" | "left" | "right";
|
|
2952
|
+
declare function getPlacementFromPositionChange(change: ConnectedOverlayPositionChange): OverlaySide;
|
|
2953
|
+
interface ArrowOffset {
|
|
2954
|
+
left: number | null;
|
|
2955
|
+
top: number | null;
|
|
2956
|
+
}
|
|
2957
|
+
/**
|
|
2958
|
+
* Manages horizontal-only push and resize recalculation for CDK overlays.
|
|
2959
|
+
*/
|
|
2960
|
+
declare class HorizontalPushHandler {
|
|
2961
|
+
private readonly getOverlayEl;
|
|
2962
|
+
private readonly onAfterPush?;
|
|
2963
|
+
private resizeCleanup?;
|
|
2964
|
+
private rafId?;
|
|
2965
|
+
constructor(getOverlayEl: () => HTMLElement | undefined, onAfterPush?: (() => void) | undefined);
|
|
2966
|
+
apply(): void;
|
|
2967
|
+
attach(): void;
|
|
2968
|
+
detach(): void;
|
|
2969
|
+
}
|
|
2970
|
+
declare function calculateArrowOffset(placement: OverlaySide, triggerEl: HTMLElement, overlayEl: HTMLElement, arrowSize: number, padding?: number): ArrowOffset;
|
|
2971
|
+
|
|
2030
2972
|
declare class PopoverTriggerDirective {
|
|
2031
2973
|
/**
|
|
2032
2974
|
* Should add underline class to trigger element?
|
|
@@ -2035,85 +2977,98 @@ declare class PopoverTriggerDirective {
|
|
|
2035
2977
|
readonly underline: _angular_core.InputSignal<boolean>;
|
|
2036
2978
|
readonly host: ElementRef<HTMLElement>;
|
|
2037
2979
|
readonly popover: PopoverComponent;
|
|
2980
|
+
readonly overlayOrigin: CdkOverlayOrigin;
|
|
2038
2981
|
onClick(): void;
|
|
2039
2982
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverTriggerDirective, never>;
|
|
2040
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PopoverTriggerDirective, "[tedi-popover-trigger]", never, { "underline": { "alias": "underline"; "required": false; "isSignal": true; }; }, {}, never, never, true,
|
|
2983
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PopoverTriggerDirective, "[tedi-popover-trigger]", never, { "underline": { "alias": "underline"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _angular_cdk_overlay.CdkOverlayOrigin; inputs: {}; outputs: {}; }]>;
|
|
2041
2984
|
}
|
|
2042
2985
|
|
|
2043
|
-
type PopoverPosition =
|
|
2044
|
-
declare class PopoverComponent
|
|
2986
|
+
type PopoverPosition = OverlayPosition;
|
|
2987
|
+
declare class PopoverComponent {
|
|
2045
2988
|
/**
|
|
2046
2989
|
* The position of the popover relative to the trigger element.
|
|
2047
2990
|
* @default top
|
|
2048
2991
|
*/
|
|
2049
|
-
position: _angular_core.InputSignal<
|
|
2992
|
+
readonly position: _angular_core.InputSignal<OverlayPosition>;
|
|
2050
2993
|
/**
|
|
2051
2994
|
* Should position flip to opposite direction when overflowing screen?
|
|
2052
2995
|
* @default false
|
|
2053
2996
|
*/
|
|
2054
|
-
preventOverflow: _angular_core.InputSignal<boolean>;
|
|
2997
|
+
readonly preventOverflow: _angular_core.InputSignal<boolean>;
|
|
2055
2998
|
/**
|
|
2056
2999
|
* Is dismissible by clicking outside of content?
|
|
2057
3000
|
* @default true
|
|
2058
3001
|
*/
|
|
2059
|
-
dismissible: _angular_core.InputSignal<boolean>;
|
|
3002
|
+
readonly dismissible: _angular_core.InputSignal<boolean>;
|
|
2060
3003
|
/**
|
|
2061
3004
|
* Does popover content hide on scroll?
|
|
2062
3005
|
* @default false
|
|
2063
3006
|
*/
|
|
2064
|
-
hideOnScroll: _angular_core.InputSignal<boolean>;
|
|
3007
|
+
readonly hideOnScroll: _angular_core.InputSignal<boolean>;
|
|
2065
3008
|
/**
|
|
2066
3009
|
* Does popover have illustrative border on the arrow side?
|
|
2067
3010
|
* @default false
|
|
2068
3011
|
*/
|
|
2069
|
-
withBorder: _angular_core.InputSignal<boolean>;
|
|
3012
|
+
readonly withBorder: _angular_core.InputSignal<boolean>;
|
|
2070
3013
|
/**
|
|
2071
3014
|
* Should show arrow?
|
|
2072
3015
|
*/
|
|
2073
|
-
withArrow: _angular_core.InputSignal<boolean>;
|
|
3016
|
+
readonly withArrow: _angular_core.InputSignal<boolean>;
|
|
2074
3017
|
/**
|
|
2075
3018
|
* Lock scrolling on rest of the page?
|
|
2076
3019
|
* @default false
|
|
2077
3020
|
*/
|
|
2078
|
-
lockScroll: _angular_core.InputSignal<boolean>;
|
|
2079
|
-
/**
|
|
2080
|
-
* Append floating element to given selector.
|
|
2081
|
-
* Use 'body' to append at the end of DOM or empty string to append next to trigger element.
|
|
2082
|
-
* @default "body"
|
|
2083
|
-
*/
|
|
2084
|
-
readonly appendTo: _angular_core.InputSignal<string>;
|
|
3021
|
+
readonly lockScroll: _angular_core.InputSignal<boolean>;
|
|
2085
3022
|
/** Delay time (in ms) for closing popover when not hovering trigger or content.
|
|
2086
3023
|
* @default 100
|
|
2087
3024
|
*/
|
|
2088
3025
|
readonly timeoutDelay: _angular_core.InputSignal<number>;
|
|
2089
3026
|
private readonly document;
|
|
2090
3027
|
private readonly renderer;
|
|
2091
|
-
readonly
|
|
3028
|
+
private readonly connectedOverlay;
|
|
2092
3029
|
readonly popoverTrigger: _angular_core.Signal<PopoverTriggerDirective>;
|
|
2093
3030
|
private readonly popoverContent;
|
|
3031
|
+
readonly isOpen: _angular_core.WritableSignal<boolean>;
|
|
3032
|
+
readonly currentPlacement: _angular_core.WritableSignal<OverlaySide>;
|
|
2094
3033
|
readonly containerId: _angular_core.WritableSignal<string>;
|
|
2095
3034
|
readonly isContentHovered: _angular_core.WritableSignal<boolean>;
|
|
3035
|
+
readonly arrowLeft: _angular_core.WritableSignal<number | null>;
|
|
3036
|
+
readonly arrowTop: _angular_core.WritableSignal<number | null>;
|
|
3037
|
+
readonly overlayOrigin: _angular_core.Signal<_angular_cdk_overlay.CdkOverlayOrigin>;
|
|
3038
|
+
private readonly arrowOffset;
|
|
3039
|
+
readonly overlayPositions: _angular_core.Signal<_angular_cdk_overlay.ConnectedPosition[]>;
|
|
3040
|
+
readonly panelClasses: _angular_core.Signal<string>;
|
|
3041
|
+
readonly ariaLabelledBy: _angular_core.Signal<string>;
|
|
2096
3042
|
hideTimeout?: ReturnType<typeof setTimeout>;
|
|
3043
|
+
/** Whether this popover locked body scroll when it opened — read on close
|
|
3044
|
+
* so a mid-open change to the lockScroll input can't leave the lock stuck. */
|
|
3045
|
+
private lockedScrollAtOpen;
|
|
2097
3046
|
private keydownListener?;
|
|
2098
3047
|
private scrollListener?;
|
|
2099
3048
|
private focusinListener?;
|
|
2100
3049
|
private mousedownListener?;
|
|
2101
|
-
|
|
3050
|
+
private readonly horizontalPush;
|
|
3051
|
+
constructor();
|
|
2102
3052
|
showPopover(): void;
|
|
3053
|
+
onOverlayAttach(): void;
|
|
3054
|
+
onPositionChange(change: ConnectedOverlayPositionChange): void;
|
|
2103
3055
|
hidePopover(focusTrigger?: boolean): void;
|
|
2104
3056
|
togglePopover(): void;
|
|
2105
|
-
|
|
3057
|
+
private updateArrowPosition;
|
|
2106
3058
|
private setupKeyboardNavigation;
|
|
2107
3059
|
private cleanupKeyboardNavigation;
|
|
2108
3060
|
private setupScrollListener;
|
|
2109
3061
|
private cleanupScrollListener;
|
|
2110
3062
|
private setupDismissListeners;
|
|
2111
3063
|
private cleanupDismissListeners;
|
|
3064
|
+
/** Focusable elements on the page, excluding the popover's own overlay —
|
|
3065
|
+
* those are detached on close, so focusing them would drop focus to body. */
|
|
3066
|
+
private getPageFocusableElements;
|
|
2112
3067
|
private focusElementAfterTrigger;
|
|
2113
3068
|
private focusElementBeforeTrigger;
|
|
2114
3069
|
private handleClosePopoverEvent;
|
|
2115
3070
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverComponent, never>;
|
|
2116
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PopoverComponent, "tedi-popover", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "preventOverflow": { "alias": "preventOverflow"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "hideOnScroll": { "alias": "hideOnScroll"; "required": false; "isSignal": true; }; "withBorder": { "alias": "withBorder"; "required": false; "isSignal": true; }; "withArrow": { "alias": "withArrow"; "required": false; "isSignal": true; }; "lockScroll": { "alias": "lockScroll"; "required": false; "isSignal": true; }; "
|
|
3071
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PopoverComponent, "tedi-popover", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "preventOverflow": { "alias": "preventOverflow"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "hideOnScroll": { "alias": "hideOnScroll"; "required": false; "isSignal": true; }; "withBorder": { "alias": "withBorder"; "required": false; "isSignal": true; }; "withArrow": { "alias": "withArrow"; "required": false; "isSignal": true; }; "lockScroll": { "alias": "lockScroll"; "required": false; "isSignal": true; }; "timeoutDelay": { "alias": "timeoutDelay"; "required": false; "isSignal": true; }; }, {}, ["popoverTrigger", "popoverContent"], ["[tedi-popover-trigger]", "tedi-popover-content"], true, never>;
|
|
2117
3072
|
}
|
|
2118
3073
|
|
|
2119
3074
|
/**
|
|
@@ -2325,6 +3280,12 @@ type ComponentInputs<TComponent> = {
|
|
|
2325
3280
|
};
|
|
2326
3281
|
|
|
2327
3282
|
type TableSize = "medium" | "small";
|
|
3283
|
+
/**
|
|
3284
|
+
* The auto-injected control columns, in the order they may appear. Used by the
|
|
3285
|
+
* table's `controlColumnOrder` input to let consumers reorder them (e.g. place
|
|
3286
|
+
* the selection checkbox before the expand chevron).
|
|
3287
|
+
*/
|
|
3288
|
+
type TableControlColumn = "drag" | "select" | "expand";
|
|
2328
3289
|
/** Phases of keyboard-driven column reordering. */
|
|
2329
3290
|
type ColumnReorderPhase = "idle" | "picked-up" | "moving";
|
|
2330
3291
|
/**
|
|
@@ -2461,6 +3422,19 @@ type TediColumnDef<TData, TValue = unknown> = ColumnDef<TData, TValue> & {
|
|
|
2461
3422
|
* entirely (covered by a previous spanning cell). Defaults to `1`.
|
|
2462
3423
|
*/
|
|
2463
3424
|
rowSpan?: number | ((info: CellContext<TData, TValue>) => number);
|
|
3425
|
+
/**
|
|
3426
|
+
* Row grouping for this column: consecutive rendered rows with an equal key
|
|
3427
|
+
* are merged into a single spanning cell (computed internally against the
|
|
3428
|
+
* live, post-filter / sort / pagination row model — no manual
|
|
3429
|
+
* `groupRowSpan` wiring).
|
|
3430
|
+
*
|
|
3431
|
+
* - A function `(row) => key` groups this column by its own key.
|
|
3432
|
+
* - `true` reuses the table-level `groupRowsBy` key (shared grouping that
|
|
3433
|
+
* also drives the control columns, group selection, and group borders).
|
|
3434
|
+
*
|
|
3435
|
+
* Takes precedence over `rowSpan` when both are set.
|
|
3436
|
+
*/
|
|
3437
|
+
groupBy?: boolean | ((row: Row<TData>) => unknown);
|
|
2464
3438
|
/**
|
|
2465
3439
|
* Opts the column into the built-in sort affordance. When `true` and the
|
|
2466
3440
|
* column's `header` is a string, the table renders a clickable sort button
|
|
@@ -2689,6 +3663,38 @@ declare class TediTableComponent<TData> {
|
|
|
2689
3663
|
* @default undefined
|
|
2690
3664
|
*/
|
|
2691
3665
|
readonly getSubRows: _angular_core.InputSignal<((row: TData) => TData[] | undefined) | undefined>;
|
|
3666
|
+
/**
|
|
3667
|
+
* Table-level row grouping key. When set, consecutive rendered rows with an
|
|
3668
|
+
* equal key form a group, and:
|
|
3669
|
+
* - the control columns (select / expand / drag) span each group — one
|
|
3670
|
+
* checkbox and one chevron per group instead of per row,
|
|
3671
|
+
* - row selection operates per group (see `enableRowSelection`),
|
|
3672
|
+
* - group boundaries drive `rowGroupDividers`.
|
|
3673
|
+
*
|
|
3674
|
+
* Data columns opt into spanning the same groups with `groupBy: true`; a
|
|
3675
|
+
* column can also group independently with its own `groupBy: (row) => key`.
|
|
3676
|
+
* @default undefined
|
|
3677
|
+
*/
|
|
3678
|
+
readonly groupRowsBy: _angular_core.InputSignal<((row: Row<TData>) => unknown) | undefined>;
|
|
3679
|
+
/**
|
|
3680
|
+
* How row dividers are drawn when the table is grouped via `groupRowsBy`:
|
|
3681
|
+
* - `"all"` (default) — a divider under every row, as usual.
|
|
3682
|
+
* - `"between"` — dividers only at group boundaries; rows within a group
|
|
3683
|
+
* read as one block.
|
|
3684
|
+
* - `"none"` — no row dividers.
|
|
3685
|
+
*
|
|
3686
|
+
* No effect when `groupRowsBy` is not set.
|
|
3687
|
+
* @default "all"
|
|
3688
|
+
*/
|
|
3689
|
+
readonly rowGroupDividers: _angular_core.InputSignal<"none" | "all" | "between">;
|
|
3690
|
+
/**
|
|
3691
|
+
* Order of the auto-injected control columns (drag handle, selection
|
|
3692
|
+
* checkbox, expand chevron). Only the controls that are actually enabled
|
|
3693
|
+
* render; any enabled control omitted from this list is appended at the end.
|
|
3694
|
+
* Use it to e.g. place the checkbox before the expand chevron.
|
|
3695
|
+
* @default ["drag", "select", "expand"]
|
|
3696
|
+
*/
|
|
3697
|
+
readonly controlColumnOrder: _angular_core.InputSignal<TableControlColumn[]>;
|
|
2692
3698
|
/**
|
|
2693
3699
|
* Enables pagination and configures the bottom paginator slot. This is also
|
|
2694
3700
|
* the source of truth for `pageSize` / `pageSizeOptions` — the top slot
|
|
@@ -2884,6 +3890,20 @@ declare class TediTableComponent<TData> {
|
|
|
2884
3890
|
*/
|
|
2885
3891
|
private readonly hasFilterableColumns;
|
|
2886
3892
|
private readonly augmentedColumns;
|
|
3893
|
+
/**
|
|
3894
|
+
* Per-column group spans (`columnId → (rowId → span)`), computed from the
|
|
3895
|
+
* live row model for every column that opts into grouping via `groupBy`.
|
|
3896
|
+
* A `groupBy: true` column reuses the table-level `groupRowsBy` key.
|
|
3897
|
+
*/
|
|
3898
|
+
protected readonly groupSpansByColumn: Signal<Map<string, Map<string, number>>>;
|
|
3899
|
+
/**
|
|
3900
|
+
* Table-level row groups keyed by `groupRowsBy`: maps every row id to the
|
|
3901
|
+
* full set of rows in its (consecutive) group. Empty when the table is not
|
|
3902
|
+
* grouped. Drives group selection and group dividers.
|
|
3903
|
+
*/
|
|
3904
|
+
protected readonly rowGroups: Signal<Map<string, Row<TData>[]>>;
|
|
3905
|
+
/** Row ids that start a group — used to draw dividers at group boundaries. */
|
|
3906
|
+
protected readonly groupStartRowIds: Signal<Set<string>>;
|
|
2887
3907
|
private buildStateChangeHandlers;
|
|
2888
3908
|
private readonly defaultPagination;
|
|
2889
3909
|
private buildResolvedState;
|
|
@@ -2917,7 +3937,12 @@ declare class TediTableComponent<TData> {
|
|
|
2917
3937
|
protected readonly isSomePageRowsSelected: Signal<boolean>;
|
|
2918
3938
|
constructor();
|
|
2919
3939
|
private applyPatch;
|
|
2920
|
-
protected handleRowClick(row: Row<TData>): void;
|
|
3940
|
+
protected handleRowClick(event: Event, row: Row<TData>): void;
|
|
3941
|
+
/**
|
|
3942
|
+
* True when the click originated on an interactive control between the event
|
|
3943
|
+
* target and the row element (exclusive), so row-level handlers can bow out.
|
|
3944
|
+
*/
|
|
3945
|
+
private isInteractiveTarget;
|
|
2921
3946
|
private hasTextSelection;
|
|
2922
3947
|
/** Accessible name for an interactive row, from `rowAriaLabel`. `null` when
|
|
2923
3948
|
* the row is not interactive or no resolver is provided. */
|
|
@@ -2952,6 +3977,22 @@ declare class TediTableComponent<TData> {
|
|
|
2952
3977
|
protected columnMaxWidth(column: {
|
|
2953
3978
|
id: string;
|
|
2954
3979
|
}): number | null;
|
|
3980
|
+
/**
|
|
3981
|
+
* Columns frozen by `stickyFirstColumn`, keyed by id: the leading control
|
|
3982
|
+
* columns (select / expand / drag) plus the first content column, pinned
|
|
3983
|
+
* together as one block. `left` is the cumulative offset; `start` / `edge`
|
|
3984
|
+
* mark the block's left and right edges (the right edge draws the divider).
|
|
3985
|
+
* Empty when `stickyFirstColumn` is off.
|
|
3986
|
+
*/
|
|
3987
|
+
protected readonly stickyLeftColumns: Signal<Map<string, {
|
|
3988
|
+
left: number;
|
|
3989
|
+
start: boolean;
|
|
3990
|
+
edge: boolean;
|
|
3991
|
+
}>>;
|
|
3992
|
+
/** Sticky `left` (px) for a frozen column; `null` when the column isn't frozen. */
|
|
3993
|
+
protected stickyLeft(id: string): number | null;
|
|
3994
|
+
/** Sticky-column class fragment for a cell (`""` when not frozen). */
|
|
3995
|
+
protected stickyLeftClass(id: string): string;
|
|
2955
3996
|
protected handleRowKeydown(event: KeyboardEvent, row: Row<TData>): void;
|
|
2956
3997
|
protected handleRowDrop(event: CdkDragDrop<TData[]>): void;
|
|
2957
3998
|
/** Stable id for a row's reorder handle button — used to restore keyboard
|
|
@@ -3036,7 +4077,18 @@ declare class TediTableComponent<TData> {
|
|
|
3036
4077
|
/** Visible label shown while a row is expanded (`close` action). */
|
|
3037
4078
|
protected readonly expandButtonCloseText: Signal<string | undefined>;
|
|
3038
4079
|
protected handleSelectAll(checked: boolean): void;
|
|
4080
|
+
/**
|
|
4081
|
+
* Selectable rows that a single checkbox controls. For a real group (>1
|
|
4082
|
+
* member) that's the whole group; otherwise it's the row itself — which
|
|
4083
|
+
* keeps TanStack's parent→sub-row cascade (`row.toggleSelected`) intact for
|
|
4084
|
+
* `getSubRows` parents that happen to be singleton groups.
|
|
4085
|
+
*/
|
|
4086
|
+
private selectionGroup;
|
|
3039
4087
|
protected handleSelectRow(row: Row<TData>, checked: boolean): void;
|
|
4088
|
+
/** Whether the (group) checkbox for `row` should render as checked. */
|
|
4089
|
+
protected isRowSelected(row: Row<TData>): boolean;
|
|
4090
|
+
/** Whether the (group) checkbox for `row` should render as indeterminate. */
|
|
4091
|
+
protected isRowIndeterminate(row: Row<TData>): boolean;
|
|
3040
4092
|
protected handleExpandToggle(row: Row<TData>): void;
|
|
3041
4093
|
protected handleExpandKeydown(event: KeyboardEvent): void;
|
|
3042
4094
|
protected handleColumnFilter(column: ReturnType<Table<TData>["getAllLeafColumns"]>[number], value: string): void;
|
|
@@ -3143,11 +4195,12 @@ declare class TediTableComponent<TData> {
|
|
|
3143
4195
|
*/
|
|
3144
4196
|
protected resolveRowSpan(cell: {
|
|
3145
4197
|
column: {
|
|
4198
|
+
id: string;
|
|
3146
4199
|
columnDef: TediColumnDef<TData>;
|
|
3147
4200
|
};
|
|
3148
4201
|
}, cellContext: CellContext<TData, unknown>): number | null;
|
|
3149
4202
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TediTableComponent<any>, never>;
|
|
3150
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TediTableComponent<any>, "tedi-table", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": true; "isSignal": true; }; "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "verticalBorders": { "alias": "verticalBorders"; "required": false; "isSignal": true; }; "borderless": { "alias": "borderless"; "required": false; "isSignal": true; }; "stickyFirstColumn": { "alias": "stickyFirstColumn"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "fixedLayout": { "alias": "fixedLayout"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "activeRowId": { "alias": "activeRowId"; "required": false; "isSignal": true; }; "selectedRowHighlight": { "alias": "selectedRowHighlight"; "required": false; "isSignal": true; }; "rowHover": { "alias": "rowHover"; "required": false; "isSignal": true; }; "enableRowSelection": { "alias": "enableRowSelection"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "enableColumnFilters": { "alias": "enableColumnFilters"; "required": false; "isSignal": true; }; "renderSubComponent": { "alias": "renderSubComponent"; "required": false; "isSignal": true; }; "getRowCanExpand": { "alias": "getRowCanExpand"; "required": false; "isSignal": true; }; "expandTrigger": { "alias": "expandTrigger"; "required": false; "isSignal": true; }; "expandButtonVariant": { "alias": "expandButtonVariant"; "required": false; "isSignal": true; }; "expandButtonLabel": { "alias": "expandButtonLabel"; "required": false; "isSignal": true; }; "getSubRows": { "alias": "getSubRows"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "paginationTop": { "alias": "paginationTop"; "required": false; "isSignal": true; }; "manualPagination": { "alias": "manualPagination"; "required": false; "isSignal": true; }; "manualSorting": { "alias": "manualSorting"; "required": false; "isSignal": true; }; "manualFiltering": { "alias": "manualFiltering"; "required": false; "isSignal": true; }; "pageCount": { "alias": "pageCount"; "required": false; "isSignal": true; }; "rowCount": { "alias": "rowCount"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "defaultState": { "alias": "defaultState"; "required": false; "isSignal": true; }; "persist": { "alias": "persist"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "placeholderRole": { "alias": "placeholderRole"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "rowAriaLabel": { "alias": "rowAriaLabel"; "required": false; "isSignal": true; }; "reorderableRows": { "alias": "reorderableRows"; "required": false; "isSignal": true; }; "reorderableColumns": { "alias": "reorderableColumns"; "required": false; "isSignal": true; }; }, { "stateChange": "stateChange"; "rowClick": "rowClick"; "rowDrop": "rowDrop"; }, ["customResultsTemplateRef"], ["tedi-table-toolbar", "tedi-table-columns-menu"], true, never>;
|
|
4203
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TediTableComponent<any>, "tedi-table", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": true; "isSignal": true; }; "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "verticalBorders": { "alias": "verticalBorders"; "required": false; "isSignal": true; }; "borderless": { "alias": "borderless"; "required": false; "isSignal": true; }; "stickyFirstColumn": { "alias": "stickyFirstColumn"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "fixedLayout": { "alias": "fixedLayout"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "activeRowId": { "alias": "activeRowId"; "required": false; "isSignal": true; }; "selectedRowHighlight": { "alias": "selectedRowHighlight"; "required": false; "isSignal": true; }; "rowHover": { "alias": "rowHover"; "required": false; "isSignal": true; }; "enableRowSelection": { "alias": "enableRowSelection"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "enableColumnFilters": { "alias": "enableColumnFilters"; "required": false; "isSignal": true; }; "renderSubComponent": { "alias": "renderSubComponent"; "required": false; "isSignal": true; }; "getRowCanExpand": { "alias": "getRowCanExpand"; "required": false; "isSignal": true; }; "expandTrigger": { "alias": "expandTrigger"; "required": false; "isSignal": true; }; "expandButtonVariant": { "alias": "expandButtonVariant"; "required": false; "isSignal": true; }; "expandButtonLabel": { "alias": "expandButtonLabel"; "required": false; "isSignal": true; }; "getSubRows": { "alias": "getSubRows"; "required": false; "isSignal": true; }; "groupRowsBy": { "alias": "groupRowsBy"; "required": false; "isSignal": true; }; "rowGroupDividers": { "alias": "rowGroupDividers"; "required": false; "isSignal": true; }; "controlColumnOrder": { "alias": "controlColumnOrder"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; "paginationTop": { "alias": "paginationTop"; "required": false; "isSignal": true; }; "manualPagination": { "alias": "manualPagination"; "required": false; "isSignal": true; }; "manualSorting": { "alias": "manualSorting"; "required": false; "isSignal": true; }; "manualFiltering": { "alias": "manualFiltering"; "required": false; "isSignal": true; }; "pageCount": { "alias": "pageCount"; "required": false; "isSignal": true; }; "rowCount": { "alias": "rowCount"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "defaultState": { "alias": "defaultState"; "required": false; "isSignal": true; }; "persist": { "alias": "persist"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "placeholderRole": { "alias": "placeholderRole"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "rowAriaLabel": { "alias": "rowAriaLabel"; "required": false; "isSignal": true; }; "reorderableRows": { "alias": "reorderableRows"; "required": false; "isSignal": true; }; "reorderableColumns": { "alias": "reorderableColumns"; "required": false; "isSignal": true; }; }, { "stateChange": "stateChange"; "rowClick": "rowClick"; "rowDrop": "rowDrop"; }, ["customResultsTemplateRef"], ["tedi-table-toolbar", "tedi-table-columns-menu"], true, never>;
|
|
3151
4204
|
}
|
|
3152
4205
|
|
|
3153
4206
|
declare const TEDI_TABLE_CONTEXT: InjectionToken<TediTableContextValue<unknown>>;
|
|
@@ -3177,12 +4230,23 @@ declare function createTablePersistence(options: {
|
|
|
3177
4230
|
onStateChange?: (state: TableState) => void;
|
|
3178
4231
|
}): TablePersistenceController;
|
|
3179
4232
|
|
|
4233
|
+
/**
|
|
4234
|
+
* Collapse consecutive rows with an equal key into row spans, keyed by row id.
|
|
4235
|
+
* The first row of each run maps to the run length (`N`); the rows it covers
|
|
4236
|
+
* map to `0`. Pass the **rendered** row set (typically
|
|
4237
|
+
* `table.getRowModel().rows`) so spans operate post-filter / sort / pagination.
|
|
4238
|
+
*/
|
|
4239
|
+
declare function computeGroupSpans<TData>(rows: Row<TData>[], keyFn: (row: Row<TData>) => unknown): Map<string, number>;
|
|
3180
4240
|
/**
|
|
3181
4241
|
* Build a `rowSpan` callback that auto-collapses consecutive equal keys.
|
|
3182
4242
|
* Returns `N > 1` for the first row in a run and `0` for the covered rows.
|
|
3183
4243
|
* Pass the **same** array of rows the table is rendering — typically
|
|
3184
4244
|
* `table.getRowModel().rows` — so spans operate on the post-filter / sort /
|
|
3185
4245
|
* pagination row set.
|
|
4246
|
+
*
|
|
4247
|
+
* Prefer the column-level `groupBy` option, which computes this internally
|
|
4248
|
+
* against the live row model; reach for this helper only when you need a
|
|
4249
|
+
* standalone `rowSpan` callback.
|
|
3186
4250
|
*/
|
|
3187
4251
|
declare function groupRowSpan<TData>(rows: Row<TData>[], keyFn: (row: Row<TData>) => unknown): (info: CellContext<TData, unknown>) => number;
|
|
3188
4252
|
|
|
@@ -3248,6 +4312,7 @@ declare class DropdownTriggerDirective implements AfterViewInit {
|
|
|
3248
4312
|
readonly ariaHaspopup: _angular_core.InputSignal<DropdownTriggerAriaHasPopup>;
|
|
3249
4313
|
readonly host: ElementRef<HTMLElement>;
|
|
3250
4314
|
readonly dropdown: DropdownComponent;
|
|
4315
|
+
readonly overlayOrigin: CdkOverlayOrigin;
|
|
3251
4316
|
private readonly renderer;
|
|
3252
4317
|
/**
|
|
3253
4318
|
* The element that actually receives focus and ARIA semantics. When the directive
|
|
@@ -3270,13 +4335,13 @@ declare class DropdownTriggerDirective implements AfterViewInit {
|
|
|
3270
4335
|
private openAndFocusFirst;
|
|
3271
4336
|
private openAndFocusLast;
|
|
3272
4337
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownTriggerDirective, never>;
|
|
3273
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DropdownTriggerDirective, "[tedi-dropdown-trigger]", never, { "ariaHaspopup": { "alias": "ariaHaspopup"; "required": false; "isSignal": true; }; }, {}, never, never, true,
|
|
4338
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DropdownTriggerDirective, "[tedi-dropdown-trigger]", never, { "ariaHaspopup": { "alias": "ariaHaspopup"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _angular_cdk_overlay.CdkOverlayOrigin; inputs: {}; outputs: {}; }]>;
|
|
3274
4339
|
}
|
|
3275
4340
|
|
|
3276
4341
|
interface DropdownApi {
|
|
3277
4342
|
/** Current value of the dropdown. Used to track the selected option in listbox mode. */
|
|
3278
4343
|
value: WritableSignal<string | undefined>;
|
|
3279
|
-
/** ID of the
|
|
4344
|
+
/** ID of the overlay container element. Used to link trigger and content for accessibility. */
|
|
3280
4345
|
containerId: WritableSignal<string>;
|
|
3281
4346
|
/** Move focus to the next enabled item after the given element. */
|
|
3282
4347
|
focusNextItem(fromEl: HTMLLIElement): void;
|
|
@@ -3346,6 +4411,13 @@ declare class DropdownItemComponent {
|
|
|
3346
4411
|
readonly value: _angular_core.InputSignal<string | undefined>;
|
|
3347
4412
|
/** Is item disabled? */
|
|
3348
4413
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
4414
|
+
/**
|
|
4415
|
+
* Whether the item's label clips overflowing content (for text ellipsis).
|
|
4416
|
+
* Set `false` when projecting content with decorations that intentionally
|
|
4417
|
+
* sit outside the line box, e.g. status indicator.
|
|
4418
|
+
* @default true
|
|
4419
|
+
*/
|
|
4420
|
+
readonly clipContent: _angular_core.InputSignal<boolean>;
|
|
3349
4421
|
/**
|
|
3350
4422
|
* Whether selecting this item closes the dropdown. Set `false` for items
|
|
3351
4423
|
* that should keep the dropdown open after selection (e.g. multi-select
|
|
@@ -3367,10 +4439,11 @@ declare class DropdownItemComponent {
|
|
|
3367
4439
|
isSelected(): boolean;
|
|
3368
4440
|
focus(): void;
|
|
3369
4441
|
onClick(): void;
|
|
4442
|
+
onMousedown(event: MouseEvent): void;
|
|
3370
4443
|
onKeydown(event: KeyboardEvent): void;
|
|
3371
4444
|
private onItemSelect;
|
|
3372
4445
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownItemComponent, never>;
|
|
3373
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownItemComponent, "li[tedi-dropdown-item]", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; }, { "itemSelect": "itemSelect"; }, ["customItemValue"], ["tedi-dropdown-item-value", "*"], true, never>;
|
|
4446
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownItemComponent, "li[tedi-dropdown-item]", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "clipContent": { "alias": "clipContent"; "required": false; "isSignal": true; }; "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; }, { "itemSelect": "itemSelect"; }, ["customItemValue"], ["tedi-dropdown-item-value", "*"], true, never>;
|
|
3374
4447
|
}
|
|
3375
4448
|
|
|
3376
4449
|
type DropdownRole = "menu" | "listbox";
|
|
@@ -3380,6 +4453,7 @@ declare class DropdownContentComponent {
|
|
|
3380
4453
|
* @default menu
|
|
3381
4454
|
*/
|
|
3382
4455
|
readonly dropdownRole: _angular_core.InputSignal<DropdownRole>;
|
|
4456
|
+
readonly host: ElementRef<HTMLElement>;
|
|
3383
4457
|
private readonly dropdownApi;
|
|
3384
4458
|
readonly containerId: _angular_core.Signal<string>;
|
|
3385
4459
|
readonly items: _angular_core.Signal<readonly DropdownItemComponent[]>;
|
|
@@ -3387,26 +4461,25 @@ declare class DropdownContentComponent {
|
|
|
3387
4461
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownContentComponent, "tedi-dropdown-content", never, { "dropdownRole": { "alias": "dropdownRole"; "required": false; "isSignal": true; }; }, {}, ["items"], ["*", "li[tedi-dropdown-item]"], true, never>;
|
|
3388
4462
|
}
|
|
3389
4463
|
|
|
3390
|
-
type DropdownPosition =
|
|
3391
|
-
declare class DropdownComponent implements
|
|
4464
|
+
type DropdownPosition = OverlayPosition;
|
|
4465
|
+
declare class DropdownComponent implements OnDestroy {
|
|
3392
4466
|
/** Current value of dropdown (used with listbox) */
|
|
3393
4467
|
readonly value: _angular_core.ModelSignal<string | undefined>;
|
|
3394
4468
|
/**
|
|
3395
4469
|
* The position of the dropdown relative to the trigger element.
|
|
3396
4470
|
* @default bottom-start
|
|
3397
4471
|
*/
|
|
3398
|
-
readonly position: _angular_core.InputSignal<
|
|
4472
|
+
readonly position: _angular_core.InputSignal<OverlayPosition>;
|
|
3399
4473
|
/**
|
|
3400
4474
|
* Should position to opposite direction when overflowing screen?
|
|
3401
4475
|
* @default true
|
|
3402
4476
|
*/
|
|
3403
4477
|
readonly preventOverflow: _angular_core.InputSignal<boolean>;
|
|
3404
4478
|
/**
|
|
3405
|
-
*
|
|
3406
|
-
*
|
|
3407
|
-
* @default ""
|
|
4479
|
+
* Gap in px between the trigger and the dropdown panel.
|
|
4480
|
+
* @default 4
|
|
3408
4481
|
*/
|
|
3409
|
-
readonly
|
|
4482
|
+
readonly offset: _angular_core.InputSignal<number>;
|
|
3410
4483
|
/**
|
|
3411
4484
|
* Does the dropdown hide when the page scrolls?
|
|
3412
4485
|
* @default false
|
|
@@ -3414,23 +4487,32 @@ declare class DropdownComponent implements AfterContentChecked, OnDestroy {
|
|
|
3414
4487
|
readonly hideOnScroll: _angular_core.InputSignal<boolean>;
|
|
3415
4488
|
readonly dropdownTrigger: _angular_core.Signal<DropdownTriggerDirective>;
|
|
3416
4489
|
readonly dropdownContent: _angular_core.Signal<DropdownContentComponent>;
|
|
3417
|
-
readonly floatUiComponent: _angular_core.Signal<NgxFloatUiContentComponent>;
|
|
3418
4490
|
private readonly activeIndex;
|
|
3419
4491
|
readonly containerId: _angular_core.WritableSignal<string>;
|
|
3420
|
-
readonly
|
|
3421
|
-
readonly
|
|
3422
|
-
readonly
|
|
4492
|
+
readonly isOpen: _angular_core.WritableSignal<boolean>;
|
|
4493
|
+
readonly triggerWidth: _angular_core.WritableSignal<number | null>;
|
|
4494
|
+
readonly overlayOrigin: _angular_core.Signal<_angular_cdk_overlay.CdkOverlayOrigin>;
|
|
4495
|
+
readonly overlayPositions: _angular_core.Signal<{
|
|
4496
|
+
offsetX: number | undefined;
|
|
4497
|
+
offsetY: number | undefined;
|
|
4498
|
+
originX: "start" | "center" | "end";
|
|
4499
|
+
originY: "top" | "center" | "bottom";
|
|
4500
|
+
overlayX: "start" | "center" | "end";
|
|
4501
|
+
overlayY: "top" | "center" | "bottom";
|
|
4502
|
+
weight?: number;
|
|
4503
|
+
panelClass?: string | string[];
|
|
4504
|
+
}[]>;
|
|
4505
|
+
readonly triggerWidthVar: _angular_core.Signal<string | null>;
|
|
3423
4506
|
private readonly platformId;
|
|
3424
4507
|
private readonly document;
|
|
3425
4508
|
private readonly renderer;
|
|
3426
4509
|
private scrollListener?;
|
|
3427
4510
|
constructor();
|
|
3428
4511
|
ngOnDestroy(): void;
|
|
3429
|
-
|
|
3430
|
-
showDropdown(): void;
|
|
4512
|
+
showDropdown(initialFocus?: "selected" | "first" | "last"): void;
|
|
3431
4513
|
hideDropdown(): void;
|
|
3432
4514
|
toggleDropdown(): void;
|
|
3433
|
-
|
|
4515
|
+
onOutsideClick(): void;
|
|
3434
4516
|
handleFocusOut: (event: FocusEvent) => void;
|
|
3435
4517
|
tabOutOfDropdown(shiftKey: boolean): void;
|
|
3436
4518
|
focusFirstItem(): void;
|
|
@@ -3446,7 +4528,7 @@ declare class DropdownComponent implements AfterContentChecked, OnDestroy {
|
|
|
3446
4528
|
private getNextEnabledIndex;
|
|
3447
4529
|
private getPrevEnabledIndex;
|
|
3448
4530
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownComponent, never>;
|
|
3449
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownComponent, "tedi-dropdown", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "preventOverflow": { "alias": "preventOverflow"; "required": false; "isSignal": true; }; "
|
|
4531
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownComponent, "tedi-dropdown", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "preventOverflow": { "alias": "preventOverflow"; "required": false; "isSignal": true; }; "offset": { "alias": "offset"; "required": false; "isSignal": true; }; "hideOnScroll": { "alias": "hideOnScroll"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, ["dropdownTrigger", "dropdownContent"], ["[tedi-dropdown-trigger]", "tedi-dropdown-content"], true, never>;
|
|
3450
4532
|
}
|
|
3451
4533
|
|
|
3452
4534
|
type FilterVariant = "primary" | "secondary";
|
|
@@ -3537,12 +4619,6 @@ declare class FilterComponent implements ControlValueAccessor {
|
|
|
3537
4619
|
* @default false
|
|
3538
4620
|
*/
|
|
3539
4621
|
readonly preserveLabel: _angular_core.InputSignal<boolean>;
|
|
3540
|
-
/**
|
|
3541
|
-
* Append dropdown to given selector.
|
|
3542
|
-
* Use 'body' to append at the end of DOM or empty string to append next to trigger.
|
|
3543
|
-
* @default ""
|
|
3544
|
-
*/
|
|
3545
|
-
readonly appendTo: _angular_core.InputSignal<string>;
|
|
3546
4622
|
/**
|
|
3547
4623
|
* Whether the filter is disabled. Also set automatically when used with a disabled FormControl
|
|
3548
4624
|
* or when nested in a disabled FilterGroup.
|
|
@@ -3614,7 +4690,7 @@ declare class FilterComponent implements ControlValueAccessor {
|
|
|
3614
4690
|
private setActiveOption;
|
|
3615
4691
|
private getTabStops;
|
|
3616
4692
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FilterComponent, never>;
|
|
3617
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FilterComponent, "tedi-filter", never, { "text": { "alias": "text"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "allowMultiple": { "alias": "allowMultiple"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "searchClearable": { "alias": "searchClearable"; "required": false; "isSignal": true; }; "clearSearchOnSelect": { "alias": "clearSearchOnSelect"; "required": false; "isSignal": true; }; "showSelectAll": { "alias": "showSelectAll"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "selectAllLabel": { "alias": "selectAllLabel"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "preserveLabel": { "alias": "preserveLabel"; "required": false; "isSignal": true; }; "
|
|
4693
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FilterComponent, "tedi-filter", never, { "text": { "alias": "text"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "allowMultiple": { "alias": "allowMultiple"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "searchClearable": { "alias": "searchClearable"; "required": false; "isSignal": true; }; "clearSearchOnSelect": { "alias": "clearSearchOnSelect"; "required": false; "isSignal": true; }; "showSelectAll": { "alias": "showSelectAll"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "selectAllLabel": { "alias": "selectAllLabel"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "preserveLabel": { "alias": "preserveLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "selected": "selectedChange"; "value": "valueChange"; "cleared": "cleared"; }, ["customContent", "filterPrepend"], ["[tediFilterContent]", "[tediFilterPrepend]", "[tediFilterAppend]"], true, never>;
|
|
3618
4694
|
}
|
|
3619
4695
|
|
|
3620
4696
|
declare class FilterContentDirective {
|
|
@@ -3930,6 +5006,402 @@ declare class RadioCardGroupComponent {
|
|
|
3930
5006
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RadioCardGroupComponent, "tedi-radio-card-group", never, { "grouped": { "alias": "grouped"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
3931
5007
|
}
|
|
3932
5008
|
|
|
5009
|
+
type EllipsisPosition = "start" | "end";
|
|
5010
|
+
declare class EllipsisComponent {
|
|
5011
|
+
/** Maximum number of lines before truncating. End (multi-line) only. */
|
|
5012
|
+
readonly lineClamp: _angular_core.InputSignal<number>;
|
|
5013
|
+
/** Whether truncated content shows a hover/focus tooltip with full text. */
|
|
5014
|
+
readonly tooltip: _angular_core.InputSignal<boolean>;
|
|
5015
|
+
/** Ellipsis position. 'start' = leading, single-line. 'end' = trailing, multi-line. */
|
|
5016
|
+
readonly position: _angular_core.InputSignal<EllipsisPosition>;
|
|
5017
|
+
readonly content: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
|
|
5018
|
+
readonly isEllipsed: _angular_core.WritableSignal<boolean>;
|
|
5019
|
+
readonly fullText: _angular_core.WritableSignal<string>;
|
|
5020
|
+
constructor();
|
|
5021
|
+
readonly contentClasses: _angular_core.Signal<string>;
|
|
5022
|
+
readonly clampStyle: _angular_core.Signal<string | null>;
|
|
5023
|
+
private updateEllipsedState;
|
|
5024
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<EllipsisComponent, never>;
|
|
5025
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EllipsisComponent, "tedi-ellipsis", never, { "lineClamp": { "alias": "lineClamp"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
5026
|
+
}
|
|
5027
|
+
|
|
5028
|
+
type TagType = "primary" | "secondary" | "danger";
|
|
5029
|
+
type TagEllipsis = "start" | "end" | false;
|
|
5030
|
+
declare class TagComponent {
|
|
5031
|
+
readonly idGenerator: _IdGenerator;
|
|
5032
|
+
readonly uniqueId: string;
|
|
5033
|
+
/**
|
|
5034
|
+
* Whether the tag is in loading state.
|
|
5035
|
+
* When true, a spinner will be displayed inside the tag.
|
|
5036
|
+
* @default false
|
|
5037
|
+
*/
|
|
5038
|
+
loading: _angular_core.InputSignal<boolean>;
|
|
5039
|
+
/**
|
|
5040
|
+
* Whether the tag can be closed.
|
|
5041
|
+
* When true, a close button will be displayed that emits the 'closed' event when clicked.
|
|
5042
|
+
* @default false
|
|
5043
|
+
*/
|
|
5044
|
+
closable: _angular_core.InputSignal<boolean>;
|
|
5045
|
+
/**
|
|
5046
|
+
* The visual style of the tag.
|
|
5047
|
+
* Possible values: 'primary', 'secondary', 'danger'
|
|
5048
|
+
* @default "primary"
|
|
5049
|
+
*/
|
|
5050
|
+
type: _angular_core.InputSignal<TagType>;
|
|
5051
|
+
/**
|
|
5052
|
+
* Which end the label truncates from when it doesn't fit. `false` (default)
|
|
5053
|
+
* never truncates — the label wraps and the tag keeps its full width. `end`
|
|
5054
|
+
* shows an ellipsis at the end (`Long label…`); `start` shows it at the start
|
|
5055
|
+
* (`…label`), which keeps the most significant part of values like dates
|
|
5056
|
+
* visible. Truncation only kicks in when the tag is width-constrained, and the
|
|
5057
|
+
* full label is revealed in a tooltip on hover/focus.
|
|
5058
|
+
* @default false
|
|
5059
|
+
*/
|
|
5060
|
+
ellipsis: _angular_core.InputSignal<TagEllipsis>;
|
|
5061
|
+
/**
|
|
5062
|
+
* Event emitted when the close button is clicked.
|
|
5063
|
+
*/
|
|
5064
|
+
closed: _angular_core.OutputEmitterRef<Event>;
|
|
5065
|
+
classes: _angular_core.Signal<string>;
|
|
5066
|
+
ellipsisPosition: _angular_core.Signal<EllipsisPosition>;
|
|
5067
|
+
handleClose(event: Event): void;
|
|
5068
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TagComponent, never>;
|
|
5069
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagComponent, "tedi-tag", never, { "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "ellipsis": { "alias": "ellipsis"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, ["*"], true, never>;
|
|
5070
|
+
}
|
|
5071
|
+
|
|
5072
|
+
interface DateInputTag {
|
|
5073
|
+
id: string;
|
|
5074
|
+
label: string;
|
|
5075
|
+
}
|
|
5076
|
+
declare class DateInputComponent implements AfterViewChecked {
|
|
5077
|
+
readonly inputId: _angular_core.InputSignal<string>;
|
|
5078
|
+
readonly value: _angular_core.InputSignal<string>;
|
|
5079
|
+
readonly tags: _angular_core.InputSignal<readonly DateInputTag[]>;
|
|
5080
|
+
readonly mode: _angular_core.InputSignal<DateFieldMode>;
|
|
5081
|
+
/**
|
|
5082
|
+
* Multiple mode: when `true` (default) the tags wrap to multiple rows and the
|
|
5083
|
+
* field grows in height. When `false` the tags stay on a single row and the
|
|
5084
|
+
* overflow collapses into a "+N" counter tag.
|
|
5085
|
+
*/
|
|
5086
|
+
readonly multiRow: _angular_core.InputSignal<boolean>;
|
|
5087
|
+
/** Which end the tag labels truncate from when they don't fit (`false` = no truncation). */
|
|
5088
|
+
readonly ellipsis: _angular_core.InputSignal<TagEllipsis>;
|
|
5089
|
+
/** Whether the tags show a remove (close) button. */
|
|
5090
|
+
readonly removable: _angular_core.InputSignal<boolean>;
|
|
5091
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
5092
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
5093
|
+
readonly readOnly: _angular_core.InputSignal<boolean>;
|
|
5094
|
+
readonly required: _angular_core.InputSignal<boolean>;
|
|
5095
|
+
readonly iconActive: _angular_core.InputSignal<boolean>;
|
|
5096
|
+
readonly iconDisabled: _angular_core.InputSignal<boolean>;
|
|
5097
|
+
readonly useNativePicker: _angular_core.InputSignal<boolean>;
|
|
5098
|
+
readonly nativeIsoValue: _angular_core.InputSignal<string>;
|
|
5099
|
+
readonly clearable: _angular_core.InputSignal<boolean>;
|
|
5100
|
+
readonly inputChange: _angular_core.OutputEmitterRef<string>;
|
|
5101
|
+
readonly iconClick: _angular_core.OutputEmitterRef<void>;
|
|
5102
|
+
readonly tagRemove: _angular_core.OutputEmitterRef<string>;
|
|
5103
|
+
readonly clear: _angular_core.OutputEmitterRef<void>;
|
|
5104
|
+
private readonly translationService;
|
|
5105
|
+
private readonly ngZone;
|
|
5106
|
+
private readonly inputElement;
|
|
5107
|
+
private readonly fieldElement;
|
|
5108
|
+
private readonly tagElements;
|
|
5109
|
+
/** Number of tags that fit on a single row; `null` until measured. */
|
|
5110
|
+
readonly visibleTagsCount: _angular_core.WritableSignal<number | null>;
|
|
5111
|
+
constructor();
|
|
5112
|
+
ngAfterViewChecked(): void;
|
|
5113
|
+
onResize(): void;
|
|
5114
|
+
readonly hasTags: _angular_core.Signal<boolean>;
|
|
5115
|
+
readonly visibleTags: _angular_core.Signal<readonly DateInputTag[]>;
|
|
5116
|
+
readonly hiddenTagsCount: _angular_core.Signal<number>;
|
|
5117
|
+
readonly inputType: _angular_core.Signal<"date" | "text">;
|
|
5118
|
+
readonly inputValue: _angular_core.Signal<string>;
|
|
5119
|
+
readonly showClear: _angular_core.Signal<boolean>;
|
|
5120
|
+
readonly iconAriaLabel: _angular_core.Signal<string>;
|
|
5121
|
+
readonly clearAriaLabel: _angular_core.Signal<string>;
|
|
5122
|
+
handleInput(event: Event): void;
|
|
5123
|
+
handleIconClick(): void;
|
|
5124
|
+
handleTagRemove(id: string): void;
|
|
5125
|
+
handleClear(): void;
|
|
5126
|
+
private calculateVisibleTags;
|
|
5127
|
+
private getAvailableTagWidth;
|
|
5128
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateInputComponent, never>;
|
|
5129
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateInputComponent, "tedi-date-input", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "tags": { "alias": "tags"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "multiRow": { "alias": "multiRow"; "required": false; "isSignal": true; }; "ellipsis": { "alias": "ellipsis"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "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; }; "iconActive": { "alias": "iconActive"; "required": false; "isSignal": true; }; "iconDisabled": { "alias": "iconDisabled"; "required": false; "isSignal": true; }; "useNativePicker": { "alias": "useNativePicker"; "required": false; "isSignal": true; }; "nativeIsoValue": { "alias": "nativeIsoValue"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; }, { "inputChange": "inputChange"; "iconClick": "iconClick"; "tagRemove": "tagRemove"; "clear": "clear"; }, never, never, true, never>;
|
|
5130
|
+
}
|
|
5131
|
+
|
|
5132
|
+
/**
|
|
5133
|
+
* Interface implemented by controls that can be used inside `tedi-form-field`.
|
|
5134
|
+
* Allows the form field container to interact with the underlying control.
|
|
5135
|
+
*/
|
|
5136
|
+
interface FormFieldControl<T = unknown> {
|
|
5137
|
+
/**
|
|
5138
|
+
* Current value of the control.
|
|
5139
|
+
*/
|
|
5140
|
+
value: Signal<T>;
|
|
5141
|
+
/**
|
|
5142
|
+
* Whether the control is disabled.
|
|
5143
|
+
*/
|
|
5144
|
+
disabled: Signal<boolean>;
|
|
5145
|
+
/** Reactive invalid state (driven by FormField) */
|
|
5146
|
+
invalid: Signal<boolean>;
|
|
5147
|
+
/** Called by FormField to update invalid state */
|
|
5148
|
+
setInvalidState(isInvalid: boolean): void;
|
|
5149
|
+
/**
|
|
5150
|
+
* Optional method used by the form field clear button.
|
|
5151
|
+
* If implemented, the form field can trigger clearing the value.
|
|
5152
|
+
*/
|
|
5153
|
+
clearField?(): void;
|
|
5154
|
+
}
|
|
5155
|
+
/**
|
|
5156
|
+
* Injection token used by `tedi-form-field` to obtain
|
|
5157
|
+
* the associated control instance.
|
|
5158
|
+
*/
|
|
5159
|
+
declare const TEDI_FORM_FIELD_CONTROL: InjectionToken<FormFieldControl<unknown>>;
|
|
5160
|
+
|
|
5161
|
+
type DateFieldValue = Date | Date[] | DateRange | null;
|
|
5162
|
+
type DateFieldFormatter = (value: DateFieldValue) => string;
|
|
5163
|
+
type DateFieldParser = (value: string) => DateFieldValue | undefined;
|
|
5164
|
+
type DayAvailabilityInput = Date[] | ((d: Date) => boolean) | undefined;
|
|
5165
|
+
type MonthPredicate = (month: Date) => boolean;
|
|
5166
|
+
type YearPredicate = (year: Date) => boolean;
|
|
5167
|
+
type DateFieldCalendarTrigger = "input" | "button";
|
|
5168
|
+
type DateFieldModalInput = boolean | "sm" | "md" | "lg" | "xl";
|
|
5169
|
+
type DateFieldUseNativePicker = boolean | "sm" | "md" | "lg" | "xl";
|
|
5170
|
+
type DateFieldSize = "default" | "small";
|
|
5171
|
+
declare class DateFieldComponent implements ControlValueAccessor, FormFieldControl<DateFieldValue> {
|
|
5172
|
+
/**
|
|
5173
|
+
* Unique ID for label association and accessibility. Bind the sibling
|
|
5174
|
+
* `<label tedi-label [for]>` to the same value.
|
|
5175
|
+
*/
|
|
5176
|
+
readonly inputId: _angular_core.InputSignal<string>;
|
|
5177
|
+
/**
|
|
5178
|
+
* The selected value (two-way / `ControlValueAccessor`). Shape follows `mode`:
|
|
5179
|
+
* `single` → `Date | null`, `multiple` → `Date[]`, `range` → `{ from, to }`.
|
|
5180
|
+
*/
|
|
5181
|
+
readonly value: _angular_core.ModelSignal<DateFieldValue>;
|
|
5182
|
+
/**
|
|
5183
|
+
* Selection mode. `single` selects one date, `multiple` toggles dates in an
|
|
5184
|
+
* array (rendered as tags), `range` builds a `{ from, to }` range across two
|
|
5185
|
+
* clicks.
|
|
5186
|
+
*/
|
|
5187
|
+
readonly mode: _angular_core.InputSignal<DateFieldMode>;
|
|
5188
|
+
/**
|
|
5189
|
+
* `multiple` mode tag layout. `true` (default) wraps tags across rows and
|
|
5190
|
+
* grows the field height; `false` keeps a single row and collapses overflow
|
|
5191
|
+
* into a "+N" counter.
|
|
5192
|
+
*/
|
|
5193
|
+
readonly multiRow: _angular_core.InputSignal<boolean>;
|
|
5194
|
+
/**
|
|
5195
|
+
* Which end the `multiple`-mode tags truncate from when a label doesn't fit.
|
|
5196
|
+
* `false` (default) never truncates; `end` → `05.06…`; `start` → `…06.2026`
|
|
5197
|
+
* (keeps the year visible).
|
|
5198
|
+
*/
|
|
5199
|
+
readonly tagEllipsis: _angular_core.InputSignal<TagEllipsis>;
|
|
5200
|
+
/**
|
|
5201
|
+
* Whether `multiple`-mode tags show a remove button. `true` (default) lets
|
|
5202
|
+
* users remove a selected date by closing its tag; `false` renders them as
|
|
5203
|
+
* read-only chips.
|
|
5204
|
+
*/
|
|
5205
|
+
readonly isTagRemovable: _angular_core.InputSignal<boolean>;
|
|
5206
|
+
/** Placeholder rendered in the input when there is no value. */
|
|
5207
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
5208
|
+
/**
|
|
5209
|
+
* Disables specific days via matchers (does not disable the whole field).
|
|
5210
|
+
* Accepts a `Date`, `Date[]`, `{ before }`, `{ after }`, `{ from, to? }`,
|
|
5211
|
+
* `{ dayOfWeek: number[] }`, or a `(date) => boolean` predicate (single or
|
|
5212
|
+
* array). Named `disabledMatchers` (not `disabled`) so it doesn't clash with
|
|
5213
|
+
* `FormControlDirective`'s boolean `disabled` when used with `[formControl]`.
|
|
5214
|
+
*/
|
|
5215
|
+
readonly disabledMatchers: _angular_core.InputSignal<Matcher | Matcher[] | undefined>;
|
|
5216
|
+
/** Disables the field entirely — text input, icon button, and calendar. */
|
|
5217
|
+
readonly inputDisabled: _angular_core.InputSignal<boolean>;
|
|
5218
|
+
/**
|
|
5219
|
+
* Blocks typing into the input but leaves the calendar interactive — useful
|
|
5220
|
+
* for guided picking.
|
|
5221
|
+
*/
|
|
5222
|
+
readonly readOnly: _angular_core.InputSignal<boolean>;
|
|
5223
|
+
/**
|
|
5224
|
+
* Marks the input as required (sets the native `required` attribute). In
|
|
5225
|
+
* `multiple` mode it also prevents clearing the last selected date. The
|
|
5226
|
+
* asterisk indicator lives on the sibling `<label tedi-label [required]>` —
|
|
5227
|
+
* bind it there too, since DateField owns no label.
|
|
5228
|
+
*/
|
|
5229
|
+
readonly required: _angular_core.InputSignal<boolean>;
|
|
5230
|
+
/** Field size — matches the surrounding `tedi-form-field`. */
|
|
5231
|
+
readonly size: _angular_core.InputSignal<DateFieldSize>;
|
|
5232
|
+
/** Disables all dates before this date (inclusive boundary stays enabled). */
|
|
5233
|
+
readonly minDate: _angular_core.InputSignal<Date | undefined>;
|
|
5234
|
+
/** Disables all dates after this date (inclusive boundary stays enabled). */
|
|
5235
|
+
readonly maxDate: _angular_core.InputSignal<Date | undefined>;
|
|
5236
|
+
/** Disable all dates before today. */
|
|
5237
|
+
readonly disablePast: _angular_core.InputSignal<boolean>;
|
|
5238
|
+
/** Disable all dates after today. */
|
|
5239
|
+
readonly disableFuture: _angular_core.InputSignal<boolean>;
|
|
5240
|
+
/**
|
|
5241
|
+
* Predicate `(month) => boolean` returning `true` to disable a whole month in
|
|
5242
|
+
* the calendar's month navigation/grid. Leave `undefined` to disable nothing.
|
|
5243
|
+
*/
|
|
5244
|
+
readonly shouldDisableMonth: _angular_core.InputSignal<MonthPredicate | undefined>;
|
|
5245
|
+
/**
|
|
5246
|
+
* Predicate `(year) => boolean` returning `true` to disable a whole year in
|
|
5247
|
+
* the calendar's year navigation/grid. Leave `undefined` to disable nothing.
|
|
5248
|
+
*/
|
|
5249
|
+
readonly shouldDisableYear: _angular_core.InputSignal<YearPredicate | undefined>;
|
|
5250
|
+
/**
|
|
5251
|
+
* Whitelist of selectable days — an explicit `Date[]` or a predicate
|
|
5252
|
+
* `(date) => boolean`. Every other day is disabled.
|
|
5253
|
+
*/
|
|
5254
|
+
readonly availableDays: _angular_core.InputSignal<DayAvailabilityInput>;
|
|
5255
|
+
/**
|
|
5256
|
+
* Blacklist of unavailable days — a `Date[]` or a predicate `(date) => boolean`.
|
|
5257
|
+
* Takes precedence over `availableDays`.
|
|
5258
|
+
*/
|
|
5259
|
+
readonly unavailableDays: _angular_core.InputSignal<DayAvailabilityInput>;
|
|
5260
|
+
/**
|
|
5261
|
+
* Lowest level the user can commit to. `days` shows the day grid as the final
|
|
5262
|
+
* step; `months` and `years` commit at that level instead.
|
|
5263
|
+
*/
|
|
5264
|
+
readonly selectionLevel: _angular_core.InputSignal<CalendarView>;
|
|
5265
|
+
/**
|
|
5266
|
+
* How the calendar header exposes month/year picking. `dropdown` shows two
|
|
5267
|
+
* dropdowns; `grid` drills into a month/year grid when the header label is
|
|
5268
|
+
* clicked.
|
|
5269
|
+
*/
|
|
5270
|
+
readonly monthYearSelectType: _angular_core.InputSignal<"dropdown" | "grid">;
|
|
5271
|
+
/**
|
|
5272
|
+
* Month the calendar opens on when there is no value. Ignored once a value is
|
|
5273
|
+
* set (the calendar anchors to the selected date).
|
|
5274
|
+
*/
|
|
5275
|
+
readonly initialMonth: _angular_core.InputSignal<Date | undefined>;
|
|
5276
|
+
/**
|
|
5277
|
+
* BCP-47 locale for weekday/month names, the first day of the week, and the
|
|
5278
|
+
* default `formatDate`/`parseDate` behaviour.
|
|
5279
|
+
*/
|
|
5280
|
+
readonly localeCode: _angular_core.InputSignal<string>;
|
|
5281
|
+
/**
|
|
5282
|
+
* Whether to close the picker after a selection. Defaults to `true` in
|
|
5283
|
+
* `single` mode and `false` in `multiple`/`range` when left `undefined`.
|
|
5284
|
+
*/
|
|
5285
|
+
readonly closeOnSelect: _angular_core.InputSignal<boolean | undefined>;
|
|
5286
|
+
/**
|
|
5287
|
+
* Render the trailing/leading days from the adjacent month inside the current
|
|
5288
|
+
* month's grid.
|
|
5289
|
+
*/
|
|
5290
|
+
readonly showOutsideDays: _angular_core.InputSignal<boolean>;
|
|
5291
|
+
/** Render an ISO week-number column on the left of the day grid. */
|
|
5292
|
+
readonly showWeekNumbers: _angular_core.InputSignal<boolean>;
|
|
5293
|
+
/**
|
|
5294
|
+
* Number of month grids shown side by side. Accepts a `BreakpointInput<number>`:
|
|
5295
|
+
* a plain number (e.g. `2`) applies at every breakpoint; pass a per-breakpoint
|
|
5296
|
+
* object (e.g. `{ xs: 1, lg: 2 }`) to narrow it on small screens.
|
|
5297
|
+
*/
|
|
5298
|
+
readonly numberOfMonths: _angular_core.InputSignalWithTransform<BreakpointObject<number>, BreakpointInput<number>>;
|
|
5299
|
+
/**
|
|
5300
|
+
* Enables the calendar picker UI. When resolved to `false`, hides the icon
|
|
5301
|
+
* button and disables the popover/modal — the user can only type a date.
|
|
5302
|
+
* Accepts a `BreakpointInput<boolean>` for per-breakpoint behaviour.
|
|
5303
|
+
*/
|
|
5304
|
+
readonly enableCalendar: _angular_core.InputSignalWithTransform<BreakpointObject<boolean>, BreakpointInput<boolean>>;
|
|
5305
|
+
/**
|
|
5306
|
+
* What opens the calendar. `button` opens it from the icon button; `input`
|
|
5307
|
+
* also opens it when the text input is clicked (and blocks typing). Accepts a
|
|
5308
|
+
* `BreakpointInput` for per-breakpoint behaviour.
|
|
5309
|
+
*/
|
|
5310
|
+
readonly calendarTrigger: _angular_core.InputSignalWithTransform<BreakpointObject<DateFieldCalendarTrigger>, BreakpointInput<DateFieldCalendarTrigger>>;
|
|
5311
|
+
/**
|
|
5312
|
+
* Use the OS native date picker instead of the custom popover (single mode only).
|
|
5313
|
+
* `true` always, `false` never, breakpoint name → native below that breakpoint
|
|
5314
|
+
* (custom popover from that breakpoint up).
|
|
5315
|
+
*/
|
|
5316
|
+
readonly useNativePicker: _angular_core.InputSignal<DateFieldUseNativePicker>;
|
|
5317
|
+
/** Open the calendar in a modal: `true` always, `false` never, breakpoint name → modal below that breakpoint. */
|
|
5318
|
+
readonly modal: _angular_core.InputSignal<DateFieldModalInput>;
|
|
5319
|
+
/** Make the modal fullscreen: `true` always, `false` never, breakpoint name → fullscreen below that breakpoint. Only applies when the calendar actually opens as a modal. */
|
|
5320
|
+
readonly fullscreen: _angular_core.InputSignal<_tedi_design_system_angular_tedi.BreakpointFlag>;
|
|
5321
|
+
/**
|
|
5322
|
+
* Custom formatter for the input's display string. Overrides the locale-aware
|
|
5323
|
+
* default. Receives the `DateFieldValue` and returns a string.
|
|
5324
|
+
*/
|
|
5325
|
+
readonly formatDate: _angular_core.InputSignal<DateFieldFormatter | undefined>;
|
|
5326
|
+
/**
|
|
5327
|
+
* Custom parser for turning typed input into a value. Overrides the
|
|
5328
|
+
* locale-aware default. Receives the raw string and returns a `DateFieldValue`,
|
|
5329
|
+
* or `undefined` when the input can't be parsed.
|
|
5330
|
+
*/
|
|
5331
|
+
readonly parseDate: _angular_core.InputSignal<DateFieldParser | undefined>;
|
|
5332
|
+
/** Emitted whenever the picker (popover/modal) open state changes. */
|
|
5333
|
+
readonly openChange: _angular_core.OutputEmitterRef<boolean>;
|
|
5334
|
+
private readonly breakpointService;
|
|
5335
|
+
private readonly modalService;
|
|
5336
|
+
private readonly hostEl;
|
|
5337
|
+
readonly calendar: _angular_core.Signal<CalendarComponent | undefined>;
|
|
5338
|
+
readonly dateInput: _angular_core.Signal<DateInputComponent>;
|
|
5339
|
+
readonly currentMonth: _angular_core.WritableSignal<Date>;
|
|
5340
|
+
readonly overlayOpen: _angular_core.WritableSignal<boolean>;
|
|
5341
|
+
private readonly openedBy;
|
|
5342
|
+
readonly overlayPositions: _angular_core.Signal<ConnectedPosition[]>;
|
|
5343
|
+
private readonly cvaDisabled;
|
|
5344
|
+
private readonly formInvalid;
|
|
5345
|
+
private modalRef;
|
|
5346
|
+
private onChange;
|
|
5347
|
+
private onTouched;
|
|
5348
|
+
readonly fieldDisabled: _angular_core.Signal<boolean>;
|
|
5349
|
+
readonly disabled: _angular_core.Signal<boolean>;
|
|
5350
|
+
readonly invalid: _angular_core.Signal<boolean>;
|
|
5351
|
+
readonly resolvedDisabledMatchers: _angular_core.Signal<Matcher[]>;
|
|
5352
|
+
readonly useNativePickerResolved: _angular_core.Signal<boolean>;
|
|
5353
|
+
readonly useNativePickerEffective: _angular_core.Signal<boolean>;
|
|
5354
|
+
readonly numberOfMonthsResolved: _angular_core.Signal<number>;
|
|
5355
|
+
readonly enableCalendarResolved: _angular_core.Signal<boolean>;
|
|
5356
|
+
readonly calendarTriggerResolved: _angular_core.Signal<DateFieldCalendarTrigger>;
|
|
5357
|
+
readonly modalEnabled: _angular_core.Signal<boolean>;
|
|
5358
|
+
readonly closeOnSelectEffective: _angular_core.Signal<boolean>;
|
|
5359
|
+
readonly showCalendar: _angular_core.Signal<boolean>;
|
|
5360
|
+
readonly useModal: _angular_core.Signal<boolean>;
|
|
5361
|
+
readonly usePopover: _angular_core.Signal<boolean>;
|
|
5362
|
+
readonly nativeIsoValue: _angular_core.Signal<string>;
|
|
5363
|
+
readonly effectivePlaceholder: _angular_core.Signal<string>;
|
|
5364
|
+
readonly displayValue: _angular_core.Signal<string>;
|
|
5365
|
+
readonly tagsForMultipleMode: _angular_core.Signal<DateInputTag[]>;
|
|
5366
|
+
readonly canClear: _angular_core.Signal<boolean>;
|
|
5367
|
+
readonly inputIsTrigger: _angular_core.Signal<boolean>;
|
|
5368
|
+
private initialOpenEmit;
|
|
5369
|
+
constructor();
|
|
5370
|
+
writeValue(value: DateFieldValue): void;
|
|
5371
|
+
registerOnChange(fn: (value: DateFieldValue) => void): void;
|
|
5372
|
+
registerOnTouched(fn: () => void): void;
|
|
5373
|
+
setDisabledState(isDisabled: boolean): void;
|
|
5374
|
+
setInvalidState(isInvalid: boolean): void;
|
|
5375
|
+
clearField(): void;
|
|
5376
|
+
handleClear(): void;
|
|
5377
|
+
handleIconClick(): void;
|
|
5378
|
+
private togglePicker;
|
|
5379
|
+
handleInputChange(value: string): void;
|
|
5380
|
+
handleTagRemove(id: string): void;
|
|
5381
|
+
handleInputClick(event: Event): void;
|
|
5382
|
+
handleCalendarSelect(): void;
|
|
5383
|
+
handleCurrentMonthChange(month: Date): void;
|
|
5384
|
+
closeOverlay(): void;
|
|
5385
|
+
handleOverlayOutsideClick(event: MouseEvent): void;
|
|
5386
|
+
handleOverlayAttached(): void;
|
|
5387
|
+
handleOverlayKeydown(event: KeyboardEvent): void;
|
|
5388
|
+
private focusIconButton;
|
|
5389
|
+
private openNativePicker;
|
|
5390
|
+
private openModal;
|
|
5391
|
+
private handleNativeInputChange;
|
|
5392
|
+
private handleSingleParseInput;
|
|
5393
|
+
private parsedValueIsDisabled;
|
|
5394
|
+
private commitValue;
|
|
5395
|
+
private defaultFormat;
|
|
5396
|
+
private deriveAnchor;
|
|
5397
|
+
private resolveBreakpointInput;
|
|
5398
|
+
private startOfToday;
|
|
5399
|
+
private toIsoDate;
|
|
5400
|
+
private queryNativeInput;
|
|
5401
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateFieldComponent, never>;
|
|
5402
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateFieldComponent, "tedi-date-field", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "multiRow": { "alias": "multiRow"; "required": false; "isSignal": true; }; "tagEllipsis": { "alias": "tagEllipsis"; "required": false; "isSignal": true; }; "isTagRemovable": { "alias": "isTagRemovable"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabledMatchers": { "alias": "disabledMatchers"; "required": false; "isSignal": true; }; "inputDisabled": { "alias": "inputDisabled"; "required": false; "isSignal": true; }; "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "disablePast": { "alias": "disablePast"; "required": false; "isSignal": true; }; "disableFuture": { "alias": "disableFuture"; "required": false; "isSignal": true; }; "shouldDisableMonth": { "alias": "shouldDisableMonth"; "required": false; "isSignal": true; }; "shouldDisableYear": { "alias": "shouldDisableYear"; "required": false; "isSignal": true; }; "availableDays": { "alias": "availableDays"; "required": false; "isSignal": true; }; "unavailableDays": { "alias": "unavailableDays"; "required": false; "isSignal": true; }; "selectionLevel": { "alias": "selectionLevel"; "required": false; "isSignal": true; }; "monthYearSelectType": { "alias": "monthYearSelectType"; "required": false; "isSignal": true; }; "initialMonth": { "alias": "initialMonth"; "required": false; "isSignal": true; }; "localeCode": { "alias": "localeCode"; "required": false; "isSignal": true; }; "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; "showOutsideDays": { "alias": "showOutsideDays"; "required": false; "isSignal": true; }; "showWeekNumbers": { "alias": "showWeekNumbers"; "required": false; "isSignal": true; }; "numberOfMonths": { "alias": "numberOfMonths"; "required": false; "isSignal": true; }; "enableCalendar": { "alias": "enableCalendar"; "required": false; "isSignal": true; }; "calendarTrigger": { "alias": "calendarTrigger"; "required": false; "isSignal": true; }; "useNativePicker": { "alias": "useNativePicker"; "required": false; "isSignal": true; }; "modal": { "alias": "modal"; "required": false; "isSignal": true; }; "fullscreen": { "alias": "fullscreen"; "required": false; "isSignal": true; }; "formatDate": { "alias": "formatDate"; "required": false; "isSignal": true; }; "parseDate": { "alias": "parseDate"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "openChange": "openChange"; }, never, ["[tediCalendarFooter]"], true, never>;
|
|
5403
|
+
}
|
|
5404
|
+
|
|
3933
5405
|
declare class DatePickerCalendarGridComponent {
|
|
3934
5406
|
private readonly gridElement;
|
|
3935
5407
|
/** Grid element unique ID for ARIA */
|
|
@@ -3994,8 +5466,20 @@ declare class DatePickerComponent implements OnInit, ControlValueAccessor {
|
|
|
3994
5466
|
readonly selected: _angular_core.ModelSignal<Date | null>;
|
|
3995
5467
|
/** Currently shown month */
|
|
3996
5468
|
readonly month: _angular_core.ModelSignal<Date>;
|
|
3997
|
-
/**
|
|
5469
|
+
/**
|
|
5470
|
+
* Disabled dates that cannot be selected.
|
|
5471
|
+
*
|
|
5472
|
+
* @deprecated Use `disabledMatchers` instead. This input shares the public
|
|
5473
|
+
* binding name `disabled` with `FormControlDirective`, so binding `[disabled]`
|
|
5474
|
+
* on a date-picker that also uses `[formControl]` raises a template type error
|
|
5475
|
+
* (`Type 'DatePickerMatcher[]' is not assignable to type 'boolean'`).
|
|
5476
|
+
*/
|
|
3998
5477
|
readonly disabled: _angular_core.InputSignal<DatePickerMatcher | DatePickerMatcher[] | null>;
|
|
5478
|
+
/**
|
|
5479
|
+
* Disabled dates that cannot be selected (`Date`, `Date[]`, `{ before }`,
|
|
5480
|
+
* `{ after }`, `{ from, to? }`, or a `(date) => boolean` predicate).
|
|
5481
|
+
*/
|
|
5482
|
+
readonly disabledMatchers: _angular_core.InputSignal<DatePickerMatcher | DatePickerMatcher[] | null>;
|
|
3999
5483
|
/** Shows or hides the calendar navigation controls (previous/next month buttons). */
|
|
4000
5484
|
readonly showNavigation: _angular_core.InputSignal<boolean>;
|
|
4001
5485
|
/** Month selector mode: none | label | grid | dropdown */
|
|
@@ -4095,7 +5579,7 @@ declare class DatePickerComponent implements OnInit, ControlValueAccessor {
|
|
|
4095
5579
|
*/
|
|
4096
5580
|
private findNextEnabledDate;
|
|
4097
5581
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatePickerComponent, never>;
|
|
4098
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatePickerComponent, "tedi-date-picker", never, { "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "month": { "alias": "month"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "showNavigation": { "alias": "showNavigation"; "required": false; "isSignal": true; }; "monthMode": { "alias": "monthMode"; "required": false; "isSignal": true; }; "yearMode": { "alias": "yearMode"; "required": false; "isSignal": true; }; "startYear": { "alias": "startYear"; "required": false; "isSignal": true; }; "endYear": { "alias": "endYear"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "inputPlaceholder": { "alias": "inputPlaceholder"; "required": false; "isSignal": true; }; "inputState": { "alias": "inputState"; "required": false; "isSignal": true; }; "inputSize": { "alias": "inputSize"; "required": false; "isSignal": true; }; "inputDisabled": { "alias": "inputDisabled"; "required": false; "isSignal": true; }; "allowManualInput": { "alias": "allowManualInput"; "required": false; "isSignal": true; }; "showWeekNumbers": { "alias": "showWeekNumbers"; "required": false; "isSignal": true; }; "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; }, { "selected": "selectedChange"; "month": "monthChange"; }, never, never, true, never>;
|
|
5582
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatePickerComponent, "tedi-date-picker", never, { "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "month": { "alias": "month"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "disabledMatchers": { "alias": "disabledMatchers"; "required": false; "isSignal": true; }; "showNavigation": { "alias": "showNavigation"; "required": false; "isSignal": true; }; "monthMode": { "alias": "monthMode"; "required": false; "isSignal": true; }; "yearMode": { "alias": "yearMode"; "required": false; "isSignal": true; }; "startYear": { "alias": "startYear"; "required": false; "isSignal": true; }; "endYear": { "alias": "endYear"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "inputPlaceholder": { "alias": "inputPlaceholder"; "required": false; "isSignal": true; }; "inputState": { "alias": "inputState"; "required": false; "isSignal": true; }; "inputSize": { "alias": "inputSize"; "required": false; "isSignal": true; }; "inputDisabled": { "alias": "inputDisabled"; "required": false; "isSignal": true; }; "allowManualInput": { "alias": "allowManualInput"; "required": false; "isSignal": true; }; "showWeekNumbers": { "alias": "showWeekNumbers"; "required": false; "isSignal": true; }; "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; }, { "selected": "selectedChange"; "month": "monthChange"; }, never, never, true, never>;
|
|
4099
5583
|
}
|
|
4100
5584
|
|
|
4101
5585
|
type FeedbackTextType = "hint" | "valid" | "error";
|
|
@@ -4297,35 +5781,6 @@ declare class SelectValueTemplateDirective<T = unknown> {
|
|
|
4297
5781
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectValueTemplateDirective<any>, "[tediSelectValue]", never, {}, {}, never, never, true, never>;
|
|
4298
5782
|
}
|
|
4299
5783
|
|
|
4300
|
-
/**
|
|
4301
|
-
* Interface implemented by controls that can be used inside `tedi-form-field`.
|
|
4302
|
-
* Allows the form field container to interact with the underlying control.
|
|
4303
|
-
*/
|
|
4304
|
-
interface FormFieldControl<T = unknown> {
|
|
4305
|
-
/**
|
|
4306
|
-
* Current value of the control.
|
|
4307
|
-
*/
|
|
4308
|
-
value: Signal<T>;
|
|
4309
|
-
/**
|
|
4310
|
-
* Whether the control is disabled.
|
|
4311
|
-
*/
|
|
4312
|
-
disabled: Signal<boolean>;
|
|
4313
|
-
/** Reactive invalid state (driven by FormField) */
|
|
4314
|
-
invalid: Signal<boolean>;
|
|
4315
|
-
/** Called by FormField to update invalid state */
|
|
4316
|
-
setInvalidState(isInvalid: boolean): void;
|
|
4317
|
-
/**
|
|
4318
|
-
* Optional method used by the form field clear button.
|
|
4319
|
-
* If implemented, the form field can trigger clearing the value.
|
|
4320
|
-
*/
|
|
4321
|
-
clearField?(): void;
|
|
4322
|
-
}
|
|
4323
|
-
/**
|
|
4324
|
-
* Injection token used by `tedi-form-field` to obtain
|
|
4325
|
-
* the associated control instance.
|
|
4326
|
-
*/
|
|
4327
|
-
declare const TEDI_FORM_FIELD_CONTROL: InjectionToken<FormFieldControl<unknown>>;
|
|
4328
|
-
|
|
4329
5784
|
type InputSize = "small" | "large" | "default";
|
|
4330
5785
|
type InputState = "valid" | "error" | "default";
|
|
4331
5786
|
type ValidationState = "invalid" | "valid" | "neutral";
|
|
@@ -4379,7 +5834,7 @@ declare class FormFieldComponent implements AfterContentInit {
|
|
|
4379
5834
|
}>;
|
|
4380
5835
|
clear(): void;
|
|
4381
5836
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormFieldComponent, never>;
|
|
4382
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormFieldComponent, "tedi-form-field", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "inputClass": { "alias": "inputClass"; "required": false; "isSignal": true; }; }, {}, ["control", "ngControl", "feedback"], ["label[tedi-label]", "input[tedi-text-field], tedi-time-field", "tedi-feedback-text"], true, never>;
|
|
5837
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FormFieldComponent, "tedi-form-field", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "inputClass": { "alias": "inputClass"; "required": false; "isSignal": true; }; }, {}, ["control", "ngControl", "feedback"], ["label[tedi-label]", "input[tedi-text-field], tedi-time-field, tedi-date-field", "tedi-feedback-text", "*"], true, never>;
|
|
4383
5838
|
}
|
|
4384
5839
|
|
|
4385
5840
|
type SelectInputSize = Exclude<InputSize, "large">;
|
|
@@ -4446,7 +5901,7 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
|
|
|
4446
5901
|
* inward instead of overflowing.
|
|
4447
5902
|
* @default "start"
|
|
4448
5903
|
*/
|
|
4449
|
-
dropdownAlign: _angular_core.InputSignal<"
|
|
5904
|
+
dropdownAlign: _angular_core.InputSignal<"start" | "end">;
|
|
4450
5905
|
/**
|
|
4451
5906
|
* Configuration for the feedback text displayed below the select.
|
|
4452
5907
|
*/
|
|
@@ -4500,6 +5955,12 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
|
|
|
4500
5955
|
* @default false
|
|
4501
5956
|
*/
|
|
4502
5957
|
multiRow: _angular_core.InputSignal<boolean>;
|
|
5958
|
+
/**
|
|
5959
|
+
* Which end a selected tag's label truncates from when it doesn't fit.
|
|
5960
|
+
* `false` (default) never truncates; `end` → `label…`; `start` → `…label`.
|
|
5961
|
+
* @default false
|
|
5962
|
+
*/
|
|
5963
|
+
tagEllipsis: _angular_core.InputSignal<TagEllipsis>;
|
|
4503
5964
|
/**
|
|
4504
5965
|
* Function used to compare option values for equality.
|
|
4505
5966
|
* Used to determine which options are selected.
|
|
@@ -4656,7 +6117,7 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
|
|
|
4656
6117
|
registerOnTouched(fn: () => void): void;
|
|
4657
6118
|
setDisabledState(isDisabled: boolean): void;
|
|
4658
6119
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectComponent<any>, never>;
|
|
4659
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectComponent<any>, "tedi-select", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "dropdownWidthRef": { "alias": "dropdownWidthRef"; "required": false; "isSignal": true; }; "dropdownAlign": { "alias": "dropdownAlign"; "required": false; "isSignal": true; }; "feedbackText": { "alias": "feedbackText"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "bindLabel": { "alias": "bindLabel"; "required": false; "isSignal": true; }; "bindValue": { "alias": "bindValue"; "required": false; "isSignal": true; }; "allowMultiple": { "alias": "allowMultiple"; "required": false; "isSignal": true; }; "groupBy": { "alias": "groupBy"; "required": false; "isSignal": true; }; "showSelectAll": { "alias": "showSelectAll"; "required": false; "isSignal": true; }; "selectableGroups": { "alias": "selectableGroups"; "required": false; "isSignal": true; }; "isTagRemovable": { "alias": "isTagRemovable"; "required": false; "isSignal": true; }; "multiRow": { "alias": "multiRow"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; "disabledKey": { "alias": "disabledKey"; "required": false; "isSignal": true; }; "noOptionsMessage": { "alias": "noOptionsMessage"; "required": false; "isSignal": true; }; "maxDropdownHeight": { "alias": "maxDropdownHeight"; "required": false; "isSignal": true; }; "dropdownType": { "alias": "dropdownType"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "searchFn": { "alias": "searchFn"; "required": false; "isSignal": true; }; "clearSearchOnSelect": { "alias": "clearSearchOnSelect"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "searchChange": "searchChange"; "opened": "opened"; "closed": "closed"; "cleared": "cleared"; }, ["optionTemplate", "valueTemplate"], never, true, never>;
|
|
6120
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectComponent<any>, "tedi-select", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "state": { "alias": "state"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "dropdownWidthRef": { "alias": "dropdownWidthRef"; "required": false; "isSignal": true; }; "dropdownAlign": { "alias": "dropdownAlign"; "required": false; "isSignal": true; }; "feedbackText": { "alias": "feedbackText"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "bindLabel": { "alias": "bindLabel"; "required": false; "isSignal": true; }; "bindValue": { "alias": "bindValue"; "required": false; "isSignal": true; }; "allowMultiple": { "alias": "allowMultiple"; "required": false; "isSignal": true; }; "groupBy": { "alias": "groupBy"; "required": false; "isSignal": true; }; "showSelectAll": { "alias": "showSelectAll"; "required": false; "isSignal": true; }; "selectableGroups": { "alias": "selectableGroups"; "required": false; "isSignal": true; }; "isTagRemovable": { "alias": "isTagRemovable"; "required": false; "isSignal": true; }; "multiRow": { "alias": "multiRow"; "required": false; "isSignal": true; }; "tagEllipsis": { "alias": "tagEllipsis"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; "disabledKey": { "alias": "disabledKey"; "required": false; "isSignal": true; }; "noOptionsMessage": { "alias": "noOptionsMessage"; "required": false; "isSignal": true; }; "maxDropdownHeight": { "alias": "maxDropdownHeight"; "required": false; "isSignal": true; }; "dropdownType": { "alias": "dropdownType"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "searchFn": { "alias": "searchFn"; "required": false; "isSignal": true; }; "clearSearchOnSelect": { "alias": "clearSearchOnSelect"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; "searchChange": "searchChange"; "opened": "opened"; "closed": "closed"; "cleared": "cleared"; }, ["optionTemplate", "valueTemplate"], never, true, never>;
|
|
4660
6121
|
}
|
|
4661
6122
|
|
|
4662
6123
|
type ToggleVariant = "primary" | "colored";
|
|
@@ -4737,6 +6198,7 @@ declare class TextFieldComponent implements ControlValueAccessor, FormFieldContr
|
|
|
4737
6198
|
private formDisabled;
|
|
4738
6199
|
private onChange;
|
|
4739
6200
|
private onTouched;
|
|
6201
|
+
constructor();
|
|
4740
6202
|
private setValue;
|
|
4741
6203
|
writeValue(value: string | null): void;
|
|
4742
6204
|
registerOnChange(fn: (value: string) => void): void;
|
|
@@ -4952,7 +6414,7 @@ declare class TimeFieldComponent implements ControlValueAccessor, FormFieldContr
|
|
|
4952
6414
|
readonly hasPicker: _angular_core.Signal<boolean>;
|
|
4953
6415
|
readonly hasNativePicker: _angular_core.Signal<boolean>;
|
|
4954
6416
|
readonly customPickerVariant: _angular_core.Signal<TimePickerVariant>;
|
|
4955
|
-
readonly inputType: _angular_core.Signal<"
|
|
6417
|
+
readonly inputType: _angular_core.Signal<"text" | "time">;
|
|
4956
6418
|
readonly inputIsTrigger: _angular_core.Signal<boolean>;
|
|
4957
6419
|
readonly useMobileModal: _angular_core.Signal<boolean>;
|
|
4958
6420
|
readonly usePopover: _angular_core.Signal<boolean>;
|
|
@@ -4983,48 +6445,216 @@ declare class TimeFieldComponent implements ControlValueAccessor, FormFieldContr
|
|
|
4983
6445
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TimeFieldComponent, "tedi-time-field", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "invalidInput": { "alias": "invalid"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "pickerVariant": { "alias": "pickerVariant"; "required": false; "isSignal": true; }; "useNativePicker": { "alias": "useNativePicker"; "required": false; "isSignal": true; }; "pickerTrigger": { "alias": "pickerTrigger"; "required": false; "isSignal": true; }; "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; "timeSlots": { "alias": "timeSlots"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "showSlotIndicator": { "alias": "showSlotIndicator"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "modal": { "alias": "modal"; "required": false; "isSignal": true; }; "fullscreen": { "alias": "fullscreen"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
4984
6446
|
}
|
|
4985
6447
|
|
|
4986
|
-
type
|
|
4987
|
-
type
|
|
6448
|
+
type ProgressBarSize = "default" | "small";
|
|
6449
|
+
type ProgressBarLabelPosition = "top" | "horizontal";
|
|
6450
|
+
type ProgressBarValuePosition = "horizontal" | "bottom";
|
|
4988
6451
|
/**
|
|
4989
|
-
*
|
|
4990
|
-
*
|
|
4991
|
-
*
|
|
4992
|
-
*
|
|
4993
|
-
* Description is projected via `<ng-content>`. Actions are projected via
|
|
4994
|
-
* `<ng-content select="[tedi-empty-state-actions]">`.
|
|
6452
|
+
* The subset of inputs that can be overridden per breakpoint via the
|
|
6453
|
+
* `xs`–`xxl` inputs. Every field is optional — only the ones you set override
|
|
6454
|
+
* the base value at that breakpoint.
|
|
4995
6455
|
*/
|
|
4996
|
-
|
|
6456
|
+
type ProgressBarInputs = {
|
|
6457
|
+
/** Overrides {@link ProgressBarComponent.size}. */
|
|
6458
|
+
size?: ProgressBarSize;
|
|
6459
|
+
/** Overrides {@link ProgressBarComponent.labelPosition}. */
|
|
6460
|
+
labelPosition?: ProgressBarLabelPosition;
|
|
6461
|
+
/** Overrides {@link ProgressBarComponent.showValue}. */
|
|
6462
|
+
showValue?: boolean;
|
|
6463
|
+
/** Overrides {@link ProgressBarComponent.valuePosition}. */
|
|
6464
|
+
valuePosition?: ProgressBarValuePosition;
|
|
6465
|
+
/** Overrides {@link ProgressBarComponent.valueLabel}. */
|
|
6466
|
+
valueLabel?: string;
|
|
6467
|
+
};
|
|
6468
|
+
declare class ProgressBarComponent {
|
|
4997
6469
|
/**
|
|
4998
|
-
*
|
|
4999
|
-
*
|
|
5000
|
-
* - `'attached'` — top border omitted so the block sits flush beneath a
|
|
5001
|
-
* preceding card or table (same width + same bottom-radius).
|
|
5002
|
-
* - `'inside'` — no border, no radius; intended to be placed inside another
|
|
5003
|
-
* container such as a `<tedi-card>` or `<tedi-table>`.
|
|
5004
|
-
* @default separate
|
|
6470
|
+
* Optional id for the underlying `<progress>` element. Useful when an
|
|
6471
|
+
* external `<label for=…>` should bind to it.
|
|
5005
6472
|
*/
|
|
5006
|
-
|
|
6473
|
+
progressId: _angular_core.InputSignal<string | undefined>;
|
|
5007
6474
|
/**
|
|
5008
|
-
*
|
|
5009
|
-
* @default
|
|
6475
|
+
* Progress value between 0 and 100. Values are clamped.
|
|
6476
|
+
* @default 0
|
|
5010
6477
|
*/
|
|
5011
|
-
|
|
6478
|
+
value: _angular_core.InputSignalWithTransform<number, number>;
|
|
5012
6479
|
/**
|
|
5013
|
-
*
|
|
5014
|
-
*
|
|
6480
|
+
* Size of the bar. `small` renders a 4px bar height instead of the
|
|
6481
|
+
* default 8px.
|
|
6482
|
+
* @default default
|
|
5015
6483
|
*/
|
|
5016
|
-
|
|
6484
|
+
size: _angular_core.InputSignal<ProgressBarSize>;
|
|
5017
6485
|
/**
|
|
5018
|
-
*
|
|
5019
|
-
* "fresh canvas" cue rather than a destructive state.
|
|
5020
|
-
* @default brand
|
|
6486
|
+
* Optional title rendered above (default) or to the left of the bar.
|
|
5021
6487
|
*/
|
|
5022
|
-
|
|
6488
|
+
label: _angular_core.InputSignal<string | undefined>;
|
|
5023
6489
|
/**
|
|
5024
|
-
*
|
|
5025
|
-
*
|
|
6490
|
+
* Where to place the label relative to the bar.
|
|
6491
|
+
* Has no effect when `label` is not set.
|
|
6492
|
+
* @default top
|
|
5026
6493
|
*/
|
|
5027
|
-
|
|
6494
|
+
labelPosition: _angular_core.InputSignal<ProgressBarLabelPosition>;
|
|
6495
|
+
/**
|
|
6496
|
+
* Render a red `*` after the label to indicate a required field.
|
|
6497
|
+
* Has no effect when `label` is not set.
|
|
6498
|
+
* @default false
|
|
6499
|
+
*/
|
|
6500
|
+
required: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
6501
|
+
/**
|
|
6502
|
+
* Show or hide the percentage value.
|
|
6503
|
+
* @default true
|
|
6504
|
+
*/
|
|
6505
|
+
showValue: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
6506
|
+
/**
|
|
6507
|
+
* Where to place the percentage value.
|
|
6508
|
+
* - `horizontal` – next to the bar.
|
|
6509
|
+
* - `bottom` – on the hint row beneath the bar.
|
|
6510
|
+
* @default horizontal
|
|
6511
|
+
*/
|
|
6512
|
+
valuePosition: _angular_core.InputSignal<ProgressBarValuePosition>;
|
|
6513
|
+
/**
|
|
6514
|
+
* Override the rendered value text. Defaults to `"{value}%"`.
|
|
6515
|
+
*
|
|
6516
|
+
* Use this when the progress represents something other than a percentage —
|
|
6517
|
+
* e.g. `value=20` with `valueLabel="1/5"` shows the bar at 20% but renders
|
|
6518
|
+
* the label as "1/5". `value` still drives the bar fill; the label is also
|
|
6519
|
+
* exposed to assistive technology via `aria-valuetext`.
|
|
6520
|
+
*/
|
|
6521
|
+
valueLabel: _angular_core.InputSignal<string | undefined>;
|
|
6522
|
+
/**
|
|
6523
|
+
* Accessible label for the progress bar. Falls back to `label()` when omitted.
|
|
6524
|
+
*/
|
|
6525
|
+
ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
6526
|
+
/** Overrides applied from the `xs` breakpoint (≥ 0px) and up. */
|
|
6527
|
+
xs: _angular_core.InputSignal<ProgressBarInputs | undefined>;
|
|
6528
|
+
/** Overrides applied from the `sm` breakpoint (≥ 576px) and up. */
|
|
6529
|
+
sm: _angular_core.InputSignal<ProgressBarInputs | undefined>;
|
|
6530
|
+
/** Overrides applied from the `md` breakpoint (≥ 768px) and up. */
|
|
6531
|
+
md: _angular_core.InputSignal<ProgressBarInputs | undefined>;
|
|
6532
|
+
/** Overrides applied from the `lg` breakpoint (≥ 992px) and up. */
|
|
6533
|
+
lg: _angular_core.InputSignal<ProgressBarInputs | undefined>;
|
|
6534
|
+
/** Overrides applied from the `xl` breakpoint (≥ 1200px) and up. */
|
|
6535
|
+
xl: _angular_core.InputSignal<ProgressBarInputs | undefined>;
|
|
6536
|
+
/** Overrides applied from the `xxl` breakpoint (≥ 1400px) and up. */
|
|
6537
|
+
xxl: _angular_core.InputSignal<ProgressBarInputs | undefined>;
|
|
6538
|
+
private breakpointService;
|
|
6539
|
+
protected currentProps: _angular_core.Signal<ProgressBarInputs>;
|
|
6540
|
+
protected formattedValue: _angular_core.Signal<string>;
|
|
6541
|
+
protected accessibleLabel: _angular_core.Signal<string | undefined>;
|
|
6542
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProgressBarComponent, never>;
|
|
6543
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ProgressBarComponent, "tedi-progress-bar", never, { "progressId": { "alias": "progressId"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "labelPosition": { "alias": "labelPosition"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "valuePosition": { "alias": "valuePosition"; "required": false; "isSignal": true; }; "valueLabel": { "alias": "valueLabel"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "xs": { "alias": "xs"; "required": false; "isSignal": true; }; "sm": { "alias": "sm"; "required": false; "isSignal": true; }; "md": { "alias": "md"; "required": false; "isSignal": true; }; "lg": { "alias": "lg"; "required": false; "isSignal": true; }; "xl": { "alias": "xl"; "required": false; "isSignal": true; }; "xxl": { "alias": "xxl"; "required": false; "isSignal": true; }; }, {}, never, ["tedi-feedback-text"], true, never>;
|
|
6544
|
+
}
|
|
6545
|
+
|
|
6546
|
+
type AttachmentDirection = "horizontal" | "vertical";
|
|
6547
|
+
declare class AttachmentComponent {
|
|
6548
|
+
protected projectedProgress: _angular_core.Signal<ProgressBarComponent | undefined>;
|
|
6549
|
+
private breakpointService;
|
|
6550
|
+
/**
|
|
6551
|
+
* File name to display.
|
|
6552
|
+
*/
|
|
6553
|
+
name: _angular_core.InputSignal<string>;
|
|
6554
|
+
/**
|
|
6555
|
+
* Pre-formatted file size string (e.g. `"0.9 MB"`). Consumer formats the
|
|
6556
|
+
* value; the component renders it as-is to the right of the name.
|
|
6557
|
+
*/
|
|
6558
|
+
fileSize: _angular_core.InputSignal<string | undefined>;
|
|
6559
|
+
/**
|
|
6560
|
+
* Leading file-type icon shown before the file name. Pass a Material Symbol
|
|
6561
|
+
* name (e.g. `"description"`, `"picture_as_pdf"`, `"imagesmode"`).
|
|
6562
|
+
*/
|
|
6563
|
+
icon: _angular_core.InputSignal<string | undefined>;
|
|
6564
|
+
/**
|
|
6565
|
+
* Error feedback message. When set, the attachment switches to its error
|
|
6566
|
+
* visual: red card background, error icon next to the name, and the
|
|
6567
|
+
* message rendered as feedback text below the card. Implies `invalid`.
|
|
6568
|
+
*/
|
|
6569
|
+
error: _angular_core.InputSignal<string | undefined>;
|
|
6570
|
+
/**
|
|
6571
|
+
* Mark the attachment as invalid. Switches to the error visual (red card
|
|
6572
|
+
* background, error icon next to the name) but does **not** render any
|
|
6573
|
+
* feedback text below the card. Use when the validation message is
|
|
6574
|
+
* shown elsewhere (e.g. as an aggregate error on the parent control).
|
|
6575
|
+
* Implied automatically when `error` is set.
|
|
6576
|
+
* @default false
|
|
6577
|
+
*/
|
|
6578
|
+
invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
6579
|
+
/**
|
|
6580
|
+
* Content layout direction.
|
|
6581
|
+
* - `horizontal` – name/size and progress sit on a single row beside the
|
|
6582
|
+
* actions (the default desktop layout).
|
|
6583
|
+
* - `vertical` – name, size and progress stack in a column with the actions
|
|
6584
|
+
* pinned top-right. Useful in narrow containers (mobile, sidebars).
|
|
6585
|
+
*
|
|
6586
|
+
* When `undefined`, the direction is auto-derived from the viewport: it
|
|
6587
|
+
* switches to `vertical` below the `verticalBelow` breakpoint.
|
|
6588
|
+
*/
|
|
6589
|
+
direction: _angular_core.InputSignal<AttachmentDirection | undefined>;
|
|
6590
|
+
/**
|
|
6591
|
+
* Viewport breakpoint below which the layout auto-switches to `vertical`
|
|
6592
|
+
* when `direction` is not set explicitly.
|
|
6593
|
+
* @default "sm"
|
|
6594
|
+
*/
|
|
6595
|
+
verticalBelow: _angular_core.InputSignal<"xs" | "sm" | "md" | "lg" | "xl" | "xxl">;
|
|
6596
|
+
private _autoVertical;
|
|
6597
|
+
protected isVertical: _angular_core.Signal<boolean>;
|
|
6598
|
+
protected hasErrorVisual: _angular_core.Signal<boolean>;
|
|
6599
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AttachmentComponent, never>;
|
|
6600
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AttachmentComponent, "tedi-attachment", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "fileSize": { "alias": "fileSize"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "verticalBelow": { "alias": "verticalBelow"; "required": false; "isSignal": true; }; }, {}, ["projectedProgress"], ["tedi-progress-bar", "tedi-attachment-actions"], true, never>;
|
|
6601
|
+
}
|
|
6602
|
+
|
|
6603
|
+
declare class AttachmentActionsComponent {
|
|
6604
|
+
/**
|
|
6605
|
+
* Adds a 12px gap between the actions and 8px inline padding to the group.
|
|
6606
|
+
* Enable for labeled (text) buttons, whose neutral variant has no horizontal
|
|
6607
|
+
* padding of its own and would otherwise touch the card edge. Leave off for
|
|
6608
|
+
* icon-only buttons, which sit flush.
|
|
6609
|
+
* @default false
|
|
6610
|
+
*/
|
|
6611
|
+
padded: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
6612
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AttachmentActionsComponent, never>;
|
|
6613
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AttachmentActionsComponent, "tedi-attachment-actions", never, { "padded": { "alias": "padded"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
6614
|
+
}
|
|
6615
|
+
|
|
6616
|
+
type EmptyStateType = "separate" | "attached" | "inside";
|
|
6617
|
+
type EmptyStateSize = "default" | "small";
|
|
6618
|
+
/**
|
|
6619
|
+
* Communicates that there is nothing to display — empty search results, an
|
|
6620
|
+
* unpopulated list, a freshly-created workspace — and optionally guides the
|
|
6621
|
+
* user toward the next step via action buttons or a link.
|
|
6622
|
+
*
|
|
6623
|
+
* Description is projected via `<ng-content>`. Actions are projected via
|
|
6624
|
+
* `<ng-content select="[tedi-empty-state-actions]">`.
|
|
6625
|
+
*/
|
|
6626
|
+
declare class EmptyStateComponent {
|
|
6627
|
+
/**
|
|
6628
|
+
* Container variant — matches the Figma "Types" section.
|
|
6629
|
+
* - `'separate'` (default) — full border + radius, stands on its own.
|
|
6630
|
+
* - `'attached'` — top border omitted so the block sits flush beneath a
|
|
6631
|
+
* preceding card or table (same width + same bottom-radius).
|
|
6632
|
+
* - `'inside'` — no border, no radius; intended to be placed inside another
|
|
6633
|
+
* container such as a `<tedi-card>` or `<tedi-table>`.
|
|
6634
|
+
* @default separate
|
|
6635
|
+
*/
|
|
6636
|
+
readonly type: _angular_core.InputSignal<EmptyStateType>;
|
|
6637
|
+
/**
|
|
6638
|
+
* Padding scale. `default` = 24px, `small` = 16px.
|
|
6639
|
+
* @default default
|
|
6640
|
+
*/
|
|
6641
|
+
readonly size: _angular_core.InputSignal<EmptyStateSize>;
|
|
6642
|
+
/**
|
|
6643
|
+
* Material icon name rendered above the text block. Pass `null` to hide.
|
|
6644
|
+
* @default spa
|
|
6645
|
+
*/
|
|
6646
|
+
readonly icon: _angular_core.InputSignal<string | null>;
|
|
6647
|
+
/**
|
|
6648
|
+
* Color of the icon. Defaults to brand so the empty state reads as a
|
|
6649
|
+
* "fresh canvas" cue rather than a destructive state.
|
|
6650
|
+
* @default brand
|
|
6651
|
+
*/
|
|
6652
|
+
readonly iconColor: _angular_core.InputSignal<IconColor>;
|
|
6653
|
+
/**
|
|
6654
|
+
* Size of the icon, in pixels.
|
|
6655
|
+
* @default 36
|
|
6656
|
+
*/
|
|
6657
|
+
readonly iconSize: _angular_core.InputSignal<IconSize>;
|
|
5028
6658
|
/**
|
|
5029
6659
|
* Optional heading rendered above the description — appears as an `<h3>` in
|
|
5030
6660
|
* brand-primary text color.
|
|
@@ -5035,25 +6665,6 @@ declare class EmptyStateComponent {
|
|
|
5035
6665
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EmptyStateComponent, "tedi-empty-state", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconColor": { "alias": "iconColor"; "required": false; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; }, {}, never, ["*", "[tedi-empty-state-actions]"], true, never>;
|
|
5036
6666
|
}
|
|
5037
6667
|
|
|
5038
|
-
type EllipsisPosition = "start" | "end";
|
|
5039
|
-
declare class EllipsisComponent {
|
|
5040
|
-
/** Maximum number of lines before truncating. End (multi-line) only. */
|
|
5041
|
-
readonly lineClamp: _angular_core.InputSignal<number>;
|
|
5042
|
-
/** Whether truncated content shows a hover/focus tooltip with full text. */
|
|
5043
|
-
readonly tooltip: _angular_core.InputSignal<boolean>;
|
|
5044
|
-
/** Ellipsis position. 'start' = leading, single-line. 'end' = trailing, multi-line. */
|
|
5045
|
-
readonly position: _angular_core.InputSignal<EllipsisPosition>;
|
|
5046
|
-
readonly content: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
|
|
5047
|
-
readonly isEllipsed: _angular_core.WritableSignal<boolean>;
|
|
5048
|
-
readonly fullText: _angular_core.WritableSignal<string>;
|
|
5049
|
-
constructor();
|
|
5050
|
-
readonly contentClasses: _angular_core.Signal<string>;
|
|
5051
|
-
readonly clampStyle: _angular_core.Signal<string | null>;
|
|
5052
|
-
private updateEllipsedState;
|
|
5053
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<EllipsisComponent, never>;
|
|
5054
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EllipsisComponent, "tedi-ellipsis", never, { "lineClamp": { "alias": "lineClamp"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
5055
|
-
}
|
|
5056
|
-
|
|
5057
6668
|
type ColWidth = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
|
|
5058
6669
|
type JustifySelf = "start" | "end" | "center" | "stretch";
|
|
5059
6670
|
type AlignSelf = "start" | "end" | "center" | "stretch";
|
|
@@ -5230,28 +6841,55 @@ declare class SeparatorComponent {
|
|
|
5230
6841
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SeparatorComponent, "tedi-separator", never, { "axis": { "alias": "axis"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "dotSize": { "alias": "dotSize"; "required": false; "isSignal": true; }; "dotFilled": { "alias": "dotFilled"; "required": false; "isSignal": true; }; "thickness": { "alias": "thickness"; "required": false; "isSignal": true; }; "spacing": { "alias": "spacing"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5231
6842
|
}
|
|
5232
6843
|
|
|
6844
|
+
/**
|
|
6845
|
+
* Marks content that is pinned to the bottom of a timeline item's timings
|
|
6846
|
+
* column on desktop and rendered after the item content on mobile.
|
|
6847
|
+
*
|
|
6848
|
+
* Usage: `<p *tediTimelineTimingsBottom>Muudetud 08.02.2024</p>`
|
|
6849
|
+
*/
|
|
6850
|
+
declare class TimelineTimingsBottomDirective {
|
|
6851
|
+
templateRef: TemplateRef<any>;
|
|
6852
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TimelineTimingsBottomDirective, never>;
|
|
6853
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TimelineTimingsBottomDirective, "[tediTimelineTimingsBottom]", never, {}, {}, never, never, true, never>;
|
|
6854
|
+
}
|
|
6855
|
+
|
|
5233
6856
|
type TimelineItemState = "current" | "past" | "future";
|
|
5234
6857
|
declare class TimelineItemComponent implements OnInit, OnDestroy {
|
|
5235
6858
|
/** Item timings */
|
|
5236
6859
|
timings: _angular_core.InputSignal<string[]>;
|
|
5237
6860
|
timeline: TimelineComponent | null;
|
|
6861
|
+
protected isMobile: _angular_core.Signal<boolean>;
|
|
6862
|
+
protected timingsBottom: _angular_core.Signal<TimelineTimingsBottomDirective | undefined>;
|
|
5238
6863
|
ngOnInit(): void;
|
|
5239
6864
|
ngOnDestroy(): void;
|
|
5240
6865
|
isLast: _angular_core.Signal<boolean>;
|
|
5241
6866
|
state: _angular_core.Signal<TimelineItemState>;
|
|
5242
6867
|
color: _angular_core.Signal<SeparatorColor>;
|
|
5243
6868
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TimelineItemComponent, never>;
|
|
5244
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TimelineItemComponent, "tedi-timeline-item", never, { "timings": { "alias": "timings"; "required": false; "isSignal": true; }; }, {},
|
|
6869
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TimelineItemComponent, "tedi-timeline-item", never, { "timings": { "alias": "timings"; "required": false; "isSignal": true; }; }, {}, ["timingsBottom"], ["tedi-timeline-title", "tedi-timeline-description", "*"], true, never>;
|
|
5245
6870
|
}
|
|
5246
6871
|
|
|
6872
|
+
type TimelineVariant = "default" | "card";
|
|
6873
|
+
type TimelineCardPadding = CardPaddingNumber;
|
|
5247
6874
|
declare class TimelineComponent {
|
|
5248
6875
|
/** Index of active item */
|
|
5249
6876
|
activeIndex: _angular_core.InputSignal<number | undefined>;
|
|
6877
|
+
/**
|
|
6878
|
+
* Visual variant. "card" wraps the timeline in the borders and paddings
|
|
6879
|
+
* of a card.
|
|
6880
|
+
* @default default
|
|
6881
|
+
*/
|
|
6882
|
+
variant: _angular_core.InputSignal<TimelineVariant>;
|
|
6883
|
+
/**
|
|
6884
|
+
* Item padding in rems for the card variant.
|
|
6885
|
+
* @default 1
|
|
6886
|
+
*/
|
|
6887
|
+
cardPadding: _angular_core.InputSignal<CardPaddingNumber | undefined>;
|
|
5250
6888
|
items: _angular_core.WritableSignal<TimelineItemComponent[]>;
|
|
5251
6889
|
registerItem(item: TimelineItemComponent): void;
|
|
5252
6890
|
unregisterItem(item: TimelineItemComponent): void;
|
|
5253
6891
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TimelineComponent, never>;
|
|
5254
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TimelineComponent, "tedi-timeline", never, { "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
6892
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TimelineComponent, "tedi-timeline", never, { "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "cardPadding": { "alias": "cardPadding"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
5255
6893
|
}
|
|
5256
6894
|
|
|
5257
6895
|
declare class TimelineDescriptionComponent {
|
|
@@ -5341,7 +6979,7 @@ declare class FooterBottomComponent implements AfterContentInit {
|
|
|
5341
6979
|
|
|
5342
6980
|
declare class HeaderComponent {
|
|
5343
6981
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderComponent, never>;
|
|
5344
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderComponent, "header[tedi-header]", never, {}, {}, never, ["button[tedi-sidenav-toggle]", "*"], true, never>;
|
|
6982
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderComponent, "header[tedi-header]", never, {}, {}, never, ["button[tedi-sidenav-toggle]", "*", "tedi-header-bottom"], true, never>;
|
|
5345
6983
|
}
|
|
5346
6984
|
|
|
5347
6985
|
declare class HeaderActionsComponent {
|
|
@@ -5349,9 +6987,40 @@ declare class HeaderActionsComponent {
|
|
|
5349
6987
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderActionsComponent, "tedi-header-actions", never, {}, {}, never, ["*"], true, never>;
|
|
5350
6988
|
}
|
|
5351
6989
|
|
|
6990
|
+
/**
|
|
6991
|
+
* Mobile-only secondary row rendered below the main header bar.
|
|
6992
|
+
*
|
|
6993
|
+
* Typical use: a compact search bar or mobile-specific navigation that only
|
|
6994
|
+
* appears below the `md` breakpoint. Above `md` the component is hidden via
|
|
6995
|
+
* CSS, so consumers can include it unconditionally — desktop users won't see it.
|
|
6996
|
+
*
|
|
6997
|
+
* @example
|
|
6998
|
+
* <header tedi-header>
|
|
6999
|
+
* <!-- main content -->
|
|
7000
|
+
* <tedi-header-bottom>
|
|
7001
|
+
* <tedi-header-search mobileVariant="inline">
|
|
7002
|
+
* <tedi-search inputId="search" placeholder="Search..." />
|
|
7003
|
+
* </tedi-header-search>
|
|
7004
|
+
* </tedi-header-bottom>
|
|
7005
|
+
* </header>
|
|
7006
|
+
*/
|
|
7007
|
+
declare class HeaderBottomComponent {
|
|
7008
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderBottomComponent, never>;
|
|
7009
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderBottomComponent, "tedi-header-bottom", never, {}, {}, never, ["*"], true, never>;
|
|
7010
|
+
}
|
|
7011
|
+
|
|
7012
|
+
type HeaderContentAlignment = "flex-start" | "center" | "space-between";
|
|
5352
7013
|
declare class HeaderContentComponent {
|
|
7014
|
+
/**
|
|
7015
|
+
* Controls the horizontal alignment of the projected content (`justify-content`).
|
|
7016
|
+
* Useful when the center area mixes nav links with another component (e.g. a
|
|
7017
|
+
* `<tedi-header-search>`) and you want to push them apart or align them to one edge.
|
|
7018
|
+
* @default "center"
|
|
7019
|
+
*/
|
|
7020
|
+
readonly alignment: _angular_core.InputSignal<HeaderContentAlignment>;
|
|
7021
|
+
protected readonly classes: _angular_core.Signal<string>;
|
|
5353
7022
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderContentComponent, never>;
|
|
5354
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderContentComponent, "tedi-header-content", never, {}, {}, never, ["*"], true, never>;
|
|
7023
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderContentComponent, "tedi-header-content", never, { "alignment": { "alias": "alignment"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
5355
7024
|
}
|
|
5356
7025
|
|
|
5357
7026
|
type HeaderLanguage = {
|
|
@@ -5368,7 +7037,7 @@ declare class HeaderLanguageComponent {
|
|
|
5368
7037
|
* This is event emitter for changing language
|
|
5369
7038
|
*/
|
|
5370
7039
|
languageChange: _angular_core.OutputEmitterRef<Language>;
|
|
5371
|
-
popover
|
|
7040
|
+
readonly popover: _angular_core.Signal<PopoverComponent | undefined>;
|
|
5372
7041
|
translationService: TediTranslationService;
|
|
5373
7042
|
languageKeys: _angular_core.Signal<Language[]>;
|
|
5374
7043
|
handleChangeLang(lang: Language): void;
|
|
@@ -5376,82 +7045,507 @@ declare class HeaderLanguageComponent {
|
|
|
5376
7045
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderLanguageComponent, "tedi-header-language", never, { "languages": { "alias": "languages"; "required": true; "isSignal": true; }; }, { "languageChange": "languageChange"; }, never, never, true, never>;
|
|
5377
7046
|
}
|
|
5378
7047
|
|
|
5379
|
-
|
|
7048
|
+
type HeaderLoginSize = "default" | "small";
|
|
7049
|
+
/**
|
|
7050
|
+
* Subset of `HeaderLoginComponent` inputs that can be overridden per breakpoint
|
|
7051
|
+
* via the `[xs]` / `[sm]` / `[md]` / `[lg]` / `[xl]` / `[xxl]` inputs. Mirrors
|
|
7052
|
+
* React's `HeaderLoginBreakpointProps`.
|
|
7053
|
+
*/
|
|
7054
|
+
type HeaderLoginInputs = {
|
|
7055
|
+
size: HeaderLoginSize | undefined;
|
|
7056
|
+
label: string;
|
|
7057
|
+
};
|
|
7058
|
+
declare class HeaderLoginComponent implements BreakpointInputs<HeaderLoginInputs> {
|
|
5380
7059
|
breakpointService: BreakpointService;
|
|
5381
7060
|
translationService: TediTranslationService;
|
|
5382
|
-
isMobile
|
|
5383
|
-
|
|
5384
|
-
|
|
5385
|
-
|
|
7061
|
+
private isMobile;
|
|
7062
|
+
/**
|
|
7063
|
+
* Visual size of the login button.
|
|
7064
|
+
* - `'small'` renders a compact icon-and-caption button (the
|
|
7065
|
+
* `<tedi-header-mobile-button>` variant).
|
|
7066
|
+
* - `'default'` renders a primary button or anchor with text only.
|
|
7067
|
+
*
|
|
7068
|
+
* When left unset, the size is chosen automatically based on the viewport:
|
|
7069
|
+
* `'small'` below the `md` breakpoint, `'default'` from `md` up. Pass an
|
|
7070
|
+
* explicit value to force a variant regardless of viewport.
|
|
7071
|
+
*/
|
|
7072
|
+
size: _angular_core.InputSignal<HeaderLoginSize | undefined>;
|
|
7073
|
+
/**
|
|
7074
|
+
* Custom label text for the login button. When provided, used as-is — not
|
|
7075
|
+
* translated. When omitted or empty, falls back to the `header.login.mobile`
|
|
7076
|
+
* translation key for the compact variant and `header.login` for the full
|
|
7077
|
+
* variant.
|
|
7078
|
+
*/
|
|
7079
|
+
label: _angular_core.InputSignal<string>;
|
|
7080
|
+
/**
|
|
7081
|
+
* If provided, the login button renders as an `<a>` navigating to this URL.
|
|
7082
|
+
* Otherwise renders as a `<button>`.
|
|
7083
|
+
*/
|
|
7084
|
+
href: _angular_core.InputSignal<string | undefined>;
|
|
7085
|
+
xs: _angular_core.InputSignal<HeaderLoginInputs | undefined>;
|
|
7086
|
+
sm: _angular_core.InputSignal<HeaderLoginInputs | undefined>;
|
|
7087
|
+
md: _angular_core.InputSignal<HeaderLoginInputs | undefined>;
|
|
7088
|
+
lg: _angular_core.InputSignal<HeaderLoginInputs | undefined>;
|
|
7089
|
+
xl: _angular_core.InputSignal<HeaderLoginInputs | undefined>;
|
|
7090
|
+
xxl: _angular_core.InputSignal<HeaderLoginInputs | undefined>;
|
|
7091
|
+
protected readonly breakpointInputs: _angular_core.Signal<HeaderLoginInputs>;
|
|
7092
|
+
isSmall: _angular_core.Signal<boolean>;
|
|
7093
|
+
resolvedLabel: _angular_core.Signal<string>;
|
|
5386
7094
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderLoginComponent, never>;
|
|
5387
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderLoginComponent, "tedi-header-login", never, {}, {}, never, never, true, never>;
|
|
7095
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderLoginComponent, "tedi-header-login", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "xs": { "alias": "xs"; "required": false; "isSignal": true; }; "sm": { "alias": "sm"; "required": false; "isSignal": true; }; "md": { "alias": "md"; "required": false; "isSignal": true; }; "lg": { "alias": "lg"; "required": false; "isSignal": true; }; "xl": { "alias": "xl"; "required": false; "isSignal": true; }; "xxl": { "alias": "xxl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5388
7096
|
}
|
|
5389
7097
|
|
|
5390
|
-
declare class
|
|
5391
|
-
|
|
5392
|
-
|
|
5393
|
-
|
|
7098
|
+
declare class HeaderLogoComponent {
|
|
7099
|
+
/**
|
|
7100
|
+
* Optional link URL. When set, the logo is wrapped in an anchor element.
|
|
7101
|
+
*/
|
|
7102
|
+
readonly href: _angular_core.InputSignal<string | undefined>;
|
|
7103
|
+
/**
|
|
7104
|
+
* Controls visibility of the logo. Useful for conditionally hiding the logo
|
|
7105
|
+
* based on application state, feature flags, or custom media queries that
|
|
7106
|
+
* fall between standard breakpoints (e.g. 360px). For responsive hiding at
|
|
7107
|
+
* standard breakpoints, prefer wrapping `<tedi-header-logo>` with `*hideAt`
|
|
7108
|
+
* or `*showAt`.
|
|
7109
|
+
* @default true
|
|
7110
|
+
*/
|
|
7111
|
+
readonly showLogo: _angular_core.InputSignal<boolean>;
|
|
7112
|
+
private readonly darkSlot;
|
|
7113
|
+
private readonly themeService;
|
|
7114
|
+
protected readonly useDark: _angular_core.Signal<boolean>;
|
|
7115
|
+
protected readonly classes: _angular_core.Signal<string>;
|
|
7116
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderLogoComponent, never>;
|
|
7117
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderLogoComponent, "tedi-header-logo", never, { "href": { "alias": "href"; "required": false; "isSignal": true; }; "showLogo": { "alias": "showLogo"; "required": false; "isSignal": true; }; }, {}, ["darkSlot"], ["*", "[tedi-header-logo-dark]"], true, never>;
|
|
7118
|
+
}
|
|
7119
|
+
|
|
7120
|
+
/**
|
|
7121
|
+
* Marks a projected child of `<tedi-header-logo>` as the dark-theme variant.
|
|
7122
|
+
* `HeaderLogoComponent` detects it via `contentChild` and swaps to the dark
|
|
7123
|
+
* slot when the active theme is `dark`.
|
|
7124
|
+
*/
|
|
7125
|
+
declare class HeaderLogoDarkDirective {
|
|
7126
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderLogoDarkDirective, never>;
|
|
7127
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<HeaderLogoDarkDirective, "[tedi-header-logo-dark]", never, {}, {}, never, never, true, never>;
|
|
7128
|
+
}
|
|
7129
|
+
|
|
7130
|
+
type HeaderLogoutSize = "default" | "small";
|
|
7131
|
+
/**
|
|
7132
|
+
* Subset of `HeaderLogoutComponent` inputs that can be overridden per
|
|
7133
|
+
* breakpoint via the `[xs]` / `[sm]` / `[md]` / `[lg]` / `[xl]` / `[xxl]`
|
|
7134
|
+
* inputs. Mirrors React's `HeaderLogoutBreakpointProps`.
|
|
7135
|
+
*/
|
|
7136
|
+
type HeaderLogoutInputs = {
|
|
7137
|
+
size: HeaderLogoutSize | undefined;
|
|
7138
|
+
label: string;
|
|
7139
|
+
};
|
|
7140
|
+
declare class HeaderLogoutComponent implements BreakpointInputs<HeaderLogoutInputs> {
|
|
7141
|
+
private readonly translationService;
|
|
7142
|
+
private readonly breakpointService;
|
|
7143
|
+
private isMobile;
|
|
7144
|
+
/**
|
|
7145
|
+
* Visual size of the logout button.
|
|
7146
|
+
* - `'small'` renders a compact icon-and-caption button (the
|
|
7147
|
+
* `<tedi-header-mobile-button>` variant).
|
|
7148
|
+
* - `'default'` renders a full-width link with inline icon and text.
|
|
7149
|
+
*
|
|
7150
|
+
* When left unset (the default), the size is chosen automatically based on
|
|
7151
|
+
* the viewport: `'small'` below the `md` breakpoint, `'default'` from `md`
|
|
7152
|
+
* up. Pass an explicit value to force a variant regardless of viewport —
|
|
7153
|
+
* useful inside tight containers (sidebar panel, dropdown) where the
|
|
7154
|
+
* desktop layout has no room.
|
|
7155
|
+
*/
|
|
7156
|
+
size: _angular_core.InputSignal<HeaderLogoutSize | undefined>;
|
|
7157
|
+
/**
|
|
7158
|
+
* Custom label text for the logout button. When provided, used as-is — not
|
|
7159
|
+
* translated. When omitted or empty, falls back to the `header.logout.mobile`
|
|
7160
|
+
* translation key for the compact variant and `header.logout` for the full
|
|
7161
|
+
* variant.
|
|
7162
|
+
*/
|
|
7163
|
+
label: _angular_core.InputSignal<string>;
|
|
7164
|
+
/**
|
|
7165
|
+
* If provided, the logout button renders as an `<a>` navigating to this URL.
|
|
7166
|
+
* Otherwise renders as a `<button>`.
|
|
7167
|
+
*/
|
|
7168
|
+
href: _angular_core.InputSignal<string | undefined>;
|
|
7169
|
+
xs: _angular_core.InputSignal<HeaderLogoutInputs | undefined>;
|
|
7170
|
+
sm: _angular_core.InputSignal<HeaderLogoutInputs | undefined>;
|
|
7171
|
+
md: _angular_core.InputSignal<HeaderLogoutInputs | undefined>;
|
|
7172
|
+
lg: _angular_core.InputSignal<HeaderLogoutInputs | undefined>;
|
|
7173
|
+
xl: _angular_core.InputSignal<HeaderLogoutInputs | undefined>;
|
|
7174
|
+
xxl: _angular_core.InputSignal<HeaderLogoutInputs | undefined>;
|
|
7175
|
+
protected readonly breakpointInputs: _angular_core.Signal<HeaderLogoutInputs>;
|
|
7176
|
+
isSmall: _angular_core.Signal<boolean>;
|
|
7177
|
+
resolvedLabel: _angular_core.Signal<string>;
|
|
5394
7178
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderLogoutComponent, never>;
|
|
5395
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderLogoutComponent, "
|
|
7179
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderLogoutComponent, "tedi-header-logout", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "xs": { "alias": "xs"; "required": false; "isSignal": true; }; "sm": { "alias": "sm"; "required": false; "isSignal": true; }; "md": { "alias": "md"; "required": false; "isSignal": true; }; "lg": { "alias": "lg"; "required": false; "isSignal": true; }; "xl": { "alias": "xl"; "required": false; "isSignal": true; }; "xxl": { "alias": "xxl"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
5396
7180
|
}
|
|
5397
7181
|
|
|
5398
|
-
|
|
5399
|
-
|
|
5400
|
-
|
|
5401
|
-
|
|
5402
|
-
|
|
7182
|
+
/**
|
|
7183
|
+
* Compact icon + label button used inside the mobile header row
|
|
7184
|
+
* (`<tedi-header-bottom>` or a mobile-specific section of
|
|
7185
|
+
* `<tedi-header-actions>`).
|
|
7186
|
+
*
|
|
7187
|
+
* Renders as an `<a>` when `href` is provided and `disabled` is false,
|
|
7188
|
+
* otherwise as a `<button>` — mirroring the React `HeaderMobileButton`.
|
|
7189
|
+
*
|
|
7190
|
+
* @example
|
|
7191
|
+
* <tedi-header-mobile-button icon="menu" label="Menu" />
|
|
7192
|
+
* <tedi-header-mobile-button icon="search" label="Search" href="/search" />
|
|
7193
|
+
* <tedi-header-mobile-button icon="notifications" label="Alerts" [selected]="true" />
|
|
7194
|
+
*/
|
|
7195
|
+
declare class HeaderMobileButtonComponent {
|
|
7196
|
+
/** Material icon name displayed inside the button. */
|
|
7197
|
+
icon: _angular_core.InputSignal<string>;
|
|
7198
|
+
/** Label text displayed below the icon. */
|
|
7199
|
+
label: _angular_core.InputSignal<string | undefined>;
|
|
7200
|
+
/**
|
|
7201
|
+
* If provided (and not disabled), the button renders as an `<a>`
|
|
7202
|
+
* navigating to this URL. Otherwise renders as a `<button>`.
|
|
7203
|
+
*/
|
|
7204
|
+
href: _angular_core.InputSignal<string | undefined>;
|
|
7205
|
+
/** Whether the button is in a selected state. */
|
|
7206
|
+
selected: _angular_core.InputSignal<boolean>;
|
|
7207
|
+
/** Whether the button is disabled. */
|
|
7208
|
+
disabled: _angular_core.InputSignal<boolean>;
|
|
7209
|
+
/**
|
|
7210
|
+
* Accessible name override forwarded to the inner `<button>`/`<a>`.
|
|
7211
|
+
* Useful when the visible label needs to be augmented for screen readers
|
|
7212
|
+
* (e.g. when the button only renders an icon).
|
|
7213
|
+
*/
|
|
7214
|
+
ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
7215
|
+
/**
|
|
7216
|
+
* Forwarded to the inner `<button>` as `aria-haspopup`. Set to `'dialog'`
|
|
7217
|
+
* when the button opens a modal dialog, `'menu'` for menus, etc.
|
|
7218
|
+
*
|
|
7219
|
+
* Only applied when the component renders as a `<button>` (i.e. when
|
|
7220
|
+
* `href` is not set). A real navigation link with popup-trigger semantics
|
|
7221
|
+
* is confusing to assistive tech — if a popup is involved, omit `href`
|
|
7222
|
+
* so the component renders as a button.
|
|
7223
|
+
*/
|
|
7224
|
+
ariaHasPopup: _angular_core.InputSignal<"menu" | "listbox" | "dialog" | "true" | "grid" | "false" | "tree" | undefined>;
|
|
7225
|
+
/**
|
|
7226
|
+
* Forwarded to the inner `<button>` as `aria-expanded`. Pair with
|
|
7227
|
+
* `ariaHasPopup` when this button toggles a dialog/menu open.
|
|
7228
|
+
*
|
|
7229
|
+
* Only applied when the component renders as a `<button>` (i.e. when
|
|
7230
|
+
* `href` is not set).
|
|
7231
|
+
*/
|
|
7232
|
+
ariaExpanded: _angular_core.InputSignal<boolean | undefined>;
|
|
7233
|
+
renderAsLink: _angular_core.Signal<boolean>;
|
|
7234
|
+
classes: _angular_core.Signal<string>;
|
|
7235
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderMobileButtonComponent, never>;
|
|
7236
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderMobileButtonComponent, "tedi-header-mobile-button", never, { "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaHasPopup": { "alias": "ariaHasPopup"; "required": false; "isSignal": true; }; "ariaExpanded": { "alias": "ariaExpanded"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
7237
|
+
}
|
|
7238
|
+
|
|
7239
|
+
type HeaderProfileSize = "default" | "small";
|
|
7240
|
+
/**
|
|
7241
|
+
* Subset of `HeaderProfileComponent` inputs that can be overridden per
|
|
7242
|
+
* breakpoint via the `[xs]` / `[sm]` / `[md]` / `[lg]` / `[xl]` / `[xxl]` inputs.
|
|
7243
|
+
*/
|
|
7244
|
+
type HeaderProfileInputs = {
|
|
7245
|
+
label: string;
|
|
7246
|
+
showPopover: Breakpoint;
|
|
7247
|
+
};
|
|
7248
|
+
declare class HeaderProfileComponent implements BreakpointInputs<HeaderProfileInputs>, AfterContentInit {
|
|
7249
|
+
/**
|
|
7250
|
+
* Custom label text for the profile button. Falls back to the `header.profile`
|
|
7251
|
+
* translation key on desktop, or `header.profile.mobile` on mobile.
|
|
7252
|
+
*/
|
|
7253
|
+
label: _angular_core.InputSignal<string>;
|
|
7254
|
+
/**
|
|
7255
|
+
* Whether to display a text label next to the profile icon on non-mobile
|
|
7256
|
+
* viewports. When `false` the desktop trigger renders as an icon-only button
|
|
7257
|
+
* and the label (custom or translated) is used as the `aria-label` only.
|
|
7258
|
+
* When `true` the label is visible and a chevron is shown next to it.
|
|
7259
|
+
*
|
|
7260
|
+
* Has no effect on the mobile/small variant — the mobile button always
|
|
7261
|
+
* shows its label.
|
|
7262
|
+
* @default false
|
|
7263
|
+
*/
|
|
7264
|
+
showLabel: _angular_core.InputSignal<boolean>;
|
|
7265
|
+
/**
|
|
7266
|
+
* Defines the breakpoint from which the profile menu is displayed as a popover.
|
|
7267
|
+
* Below this breakpoint, it is rendered as a modal.
|
|
7268
|
+
*
|
|
7269
|
+
* @default 'lg'
|
|
7270
|
+
*/
|
|
7271
|
+
showPopover: _angular_core.InputSignal<"xs" | "sm" | "md" | "lg" | "xl" | "xxl">;
|
|
7272
|
+
/**
|
|
7273
|
+
* Removes default item styles from the mobile modal content. When `true`,
|
|
7274
|
+
* projected children render without the padding, border, or background that
|
|
7275
|
+
* `<tedi-header-profile>` normally applies to each direct child of the
|
|
7276
|
+
* modal. Use when the content requires custom item styling.
|
|
7277
|
+
*
|
|
7278
|
+
* Only affects the mobile/modal branch. The desktop popover uses
|
|
7279
|
+
* `<tedi-popover-content>`'s own styling and is unaffected.
|
|
7280
|
+
*
|
|
7281
|
+
* @default false
|
|
7282
|
+
*/
|
|
7283
|
+
noStyle: _angular_core.InputSignal<boolean>;
|
|
7284
|
+
/**
|
|
7285
|
+
* Visual size of the profile button.
|
|
7286
|
+
* - `'small'` renders a compact icon-and-caption button (the
|
|
7287
|
+
* `<tedi-header-mobile-button>` variant).
|
|
7288
|
+
* - `'default'` renders a button with the user's name + icon.
|
|
7289
|
+
*
|
|
7290
|
+
* When left unset, the size is chosen automatically based on the viewport:
|
|
7291
|
+
* `'small'` below the `md` breakpoint, `'default'` from `md` up. Pass an
|
|
7292
|
+
* explicit value to force a variant regardless of viewport.
|
|
7293
|
+
*/
|
|
7294
|
+
size: _angular_core.InputSignal<HeaderProfileSize | undefined>;
|
|
7295
|
+
xs: _angular_core.InputSignal<HeaderProfileInputs | undefined>;
|
|
7296
|
+
sm: _angular_core.InputSignal<HeaderProfileInputs | undefined>;
|
|
7297
|
+
md: _angular_core.InputSignal<HeaderProfileInputs | undefined>;
|
|
7298
|
+
lg: _angular_core.InputSignal<HeaderProfileInputs | undefined>;
|
|
7299
|
+
xl: _angular_core.InputSignal<HeaderProfileInputs | undefined>;
|
|
7300
|
+
xxl: _angular_core.InputSignal<HeaderProfileInputs | undefined>;
|
|
5403
7301
|
readonly breakpointService: BreakpointService;
|
|
5404
7302
|
readonly translationService: TediTranslationService;
|
|
5405
7303
|
private readonly document;
|
|
5406
7304
|
private readonly host;
|
|
5407
7305
|
private readonly renderer;
|
|
5408
|
-
private readonly
|
|
7306
|
+
private readonly destroyRef;
|
|
7307
|
+
readonly isMobile: _angular_core.Signal<boolean>;
|
|
7308
|
+
readonly isSmall: _angular_core.Signal<boolean>;
|
|
7309
|
+
protected readonly breakpointInputs: _angular_core.Signal<HeaderProfileInputs>;
|
|
7310
|
+
readonly resolvedLabel: _angular_core.Signal<string>;
|
|
5409
7311
|
constructor();
|
|
5410
7312
|
modalOpen: _angular_core.WritableSignal<boolean>;
|
|
7313
|
+
/**
|
|
7314
|
+
* Tracks which `HeaderRoleComponent` instance currently has its
|
|
7315
|
+
* accordion open. When a role opens, it writes its own reference here;
|
|
7316
|
+
* other roles watch this signal and close themselves when it changes.
|
|
7317
|
+
* @internal
|
|
7318
|
+
*/
|
|
7319
|
+
readonly activeRole: _angular_core.WritableSignal<unknown>;
|
|
5411
7320
|
readonly buttonVariant: _angular_core.Signal<ButtonVariant>;
|
|
5412
|
-
readonly buttonClass: _angular_core.Signal<"tedi-header-profile--mobile" | null>;
|
|
5413
7321
|
ngAfterContentInit(): void;
|
|
5414
7322
|
handleModalOpen(): void;
|
|
5415
7323
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderProfileComponent, never>;
|
|
5416
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderProfileComponent, "tedi-header-profile", never, { "
|
|
7324
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderProfileComponent, "tedi-header-profile", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "showPopover": { "alias": "showPopover"; "required": false; "isSignal": true; }; "noStyle": { "alias": "noStyle"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "xs": { "alias": "xs"; "required": false; "isSignal": true; }; "sm": { "alias": "sm"; "required": false; "isSignal": true; }; "md": { "alias": "md"; "required": false; "isSignal": true; }; "lg": { "alias": "lg"; "required": false; "isSignal": true; }; "xl": { "alias": "xl"; "required": false; "isSignal": true; }; "xxl": { "alias": "xxl"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
7325
|
+
}
|
|
7326
|
+
|
|
7327
|
+
/**
|
|
7328
|
+
* Marker directive applied to a projected child of `<tedi-header-role>` to mark it
|
|
7329
|
+
* as the title content (e.g. a `<tedi-tag>`). The directive itself adds no DOM or
|
|
7330
|
+
* behavior — it only exists so `HeaderRoleComponent` can detect, via `contentChild`,
|
|
7331
|
+
* whether a consumer has projected title content. When projected, the title slot
|
|
7332
|
+
* replaces the bold `role` string fallback.
|
|
7333
|
+
*
|
|
7334
|
+
* @example
|
|
7335
|
+
* <tedi-header-role [representatives]="..." [currentRepresentative]="...">
|
|
7336
|
+
* <tedi-tag tedi-header-role-title>Esindatav</tedi-tag>
|
|
7337
|
+
* </tedi-header-role>
|
|
7338
|
+
*/
|
|
7339
|
+
declare class HeaderRoleTitleDirective {
|
|
7340
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderRoleTitleDirective, never>;
|
|
7341
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<HeaderRoleTitleDirective, "[tedi-header-role-title]", never, {}, {}, never, never, true, never>;
|
|
5417
7342
|
}
|
|
5418
7343
|
|
|
7344
|
+
type RepresentativeIcon = {
|
|
7345
|
+
/** Material Icon name. */
|
|
7346
|
+
name: string;
|
|
7347
|
+
/** Size in px. Falls back to `<tedi-icon>`'s default (24) when omitted. */
|
|
7348
|
+
size?: IconSize;
|
|
7349
|
+
};
|
|
5419
7350
|
type Representative = {
|
|
7351
|
+
/**
|
|
7352
|
+
* Stable identifier. Required for selection comparison and for re-syncing
|
|
7353
|
+
* the current representative when the `representatives` input changes.
|
|
7354
|
+
*/
|
|
7355
|
+
id: string;
|
|
5420
7356
|
name: string;
|
|
5421
|
-
|
|
7357
|
+
/**
|
|
7358
|
+
* Icon shown next to the representative. Accepts either a Material Icon name
|
|
7359
|
+
* as a string (`'person'`) for the common case, or a full
|
|
7360
|
+
* `RepresentativeIcon` object (`{ name: 'person', size: 18 }`) when an
|
|
7361
|
+
* explicit size is needed. The two forms are equivalent when only `name` is
|
|
7362
|
+
* relevant.
|
|
7363
|
+
*/
|
|
7364
|
+
icon?: string | RepresentativeIcon;
|
|
5422
7365
|
description?: string;
|
|
5423
7366
|
};
|
|
7367
|
+
/**
|
|
7368
|
+
* Structural marker for custom content projected into the role selection
|
|
7369
|
+
* popover (desktop) or accordion (tablet/mobile).
|
|
7370
|
+
*
|
|
7371
|
+
* When present, replaces the default representative list entirely.
|
|
7372
|
+
*
|
|
7373
|
+
* Usage:
|
|
7374
|
+
* ```html
|
|
7375
|
+
* <tedi-header-role ...>
|
|
7376
|
+
* <ng-template tedi-header-role-content>
|
|
7377
|
+
* <div>Custom content here</div>
|
|
7378
|
+
* </ng-template>
|
|
7379
|
+
* </tedi-header-role>
|
|
7380
|
+
* ```
|
|
7381
|
+
*/
|
|
7382
|
+
declare class HeaderRoleContentDirective {
|
|
7383
|
+
readonly templateRef: TemplateRef<any>;
|
|
7384
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderRoleContentDirective, never>;
|
|
7385
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<HeaderRoleContentDirective, "[tedi-header-role-content]", never, {}, {}, never, never, true, never>;
|
|
7386
|
+
}
|
|
7387
|
+
/**
|
|
7388
|
+
* Structural marker for custom "no results" content shown when the search
|
|
7389
|
+
* filter produces an empty representative list.
|
|
7390
|
+
*
|
|
7391
|
+
* When absent, the component falls back to a default translated string.
|
|
7392
|
+
*
|
|
7393
|
+
* Usage:
|
|
7394
|
+
* ```html
|
|
7395
|
+
* <tedi-header-role ...>
|
|
7396
|
+
* <ng-template tedi-header-role-no-results>
|
|
7397
|
+
* <tedi-empty-state description="No matches found" />
|
|
7398
|
+
* </ng-template>
|
|
7399
|
+
* </tedi-header-role>
|
|
7400
|
+
* ```
|
|
7401
|
+
*/
|
|
7402
|
+
declare class HeaderRoleNoResultsDirective {
|
|
7403
|
+
readonly templateRef: TemplateRef<any>;
|
|
7404
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderRoleNoResultsDirective, never>;
|
|
7405
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<HeaderRoleNoResultsDirective, "[tedi-header-role-no-results]", never, {}, {}, never, never, true, never>;
|
|
7406
|
+
}
|
|
5424
7407
|
declare class HeaderRoleComponent {
|
|
5425
7408
|
/**
|
|
5426
|
-
*
|
|
7409
|
+
* Label text. Rendered as bold text in the title position when no title content is
|
|
7410
|
+
* projected via `[tedi-header-role-title]`. Projected content takes precedence and
|
|
7411
|
+
* replaces this string.
|
|
5427
7412
|
*/
|
|
5428
|
-
|
|
7413
|
+
label: _angular_core.InputSignal<string>;
|
|
5429
7414
|
/**
|
|
5430
7415
|
* Description text
|
|
5431
7416
|
*/
|
|
5432
7417
|
description: _angular_core.InputSignal<string>;
|
|
5433
|
-
/**
|
|
7418
|
+
/**
|
|
7419
|
+
* Whether the consumer projected title content (e.g. `<tedi-tag tedi-header-role-title>`)
|
|
7420
|
+
* via the `[tedi-header-role-title]` slot. Used by the template to know whether the
|
|
7421
|
+
* title position has content even when `label` is empty.
|
|
7422
|
+
*/
|
|
7423
|
+
protected readonly titleContent: _angular_core.Signal<HeaderRoleTitleDirective | undefined>;
|
|
7424
|
+
protected readonly hasTitle: _angular_core.Signal<boolean>;
|
|
7425
|
+
/**
|
|
7426
|
+
* Projected custom content that replaces the default representative list.
|
|
7427
|
+
*/
|
|
7428
|
+
protected readonly customContent: _angular_core.Signal<HeaderRoleContentDirective | undefined>;
|
|
7429
|
+
protected readonly hasCustomContent: _angular_core.Signal<boolean>;
|
|
7430
|
+
protected readonly customContentTemplate: _angular_core.Signal<TemplateRef<any> | null>;
|
|
7431
|
+
protected readonly noResultsContent: _angular_core.Signal<HeaderRoleNoResultsDirective | undefined>;
|
|
7432
|
+
protected readonly hasNoResultsContent: _angular_core.Signal<boolean>;
|
|
7433
|
+
protected readonly noResultsTemplate: _angular_core.Signal<TemplateRef<any> | null>;
|
|
7434
|
+
/**
|
|
7435
|
+
* Whether to display the search input above the representative list.
|
|
5434
7436
|
* @default false
|
|
5435
7437
|
*/
|
|
5436
|
-
|
|
7438
|
+
showSearch: _angular_core.InputSignal<boolean>;
|
|
7439
|
+
/**
|
|
7440
|
+
* Whether the search input shows a clear button.
|
|
7441
|
+
* @default false
|
|
7442
|
+
*/
|
|
7443
|
+
searchClearable: _angular_core.InputSignal<boolean>;
|
|
7444
|
+
/**
|
|
7445
|
+
* Whether to clear the search input when a representative is selected.
|
|
7446
|
+
* @default true
|
|
7447
|
+
*/
|
|
7448
|
+
clearSearchOnSelect: _angular_core.InputSignal<boolean>;
|
|
7449
|
+
/**
|
|
7450
|
+
* Whether the role represents an organization.
|
|
7451
|
+
* Affects the search input label.
|
|
7452
|
+
*/
|
|
7453
|
+
isOrganization: _angular_core.InputSignal<boolean>;
|
|
7454
|
+
/**
|
|
7455
|
+
* Label for the search input when selecting a representative.
|
|
7456
|
+
* Falls back to i18n labels when not provided.
|
|
7457
|
+
*/
|
|
7458
|
+
searchLabel: _angular_core.InputSignal<string | undefined>;
|
|
7459
|
+
/**
|
|
7460
|
+
* Label for the search input when selecting an organization representative.
|
|
7461
|
+
* Overrides both the default and `searchLabel` when `isOrganization` is true.
|
|
7462
|
+
*/
|
|
7463
|
+
organizationSearchLabel: _angular_core.InputSignal<string | undefined>;
|
|
7464
|
+
/**
|
|
7465
|
+
* Whether to show the role selection toggle and dropdown.
|
|
7466
|
+
* When not set, defaults to showing the selection when there are multiple representatives.
|
|
7467
|
+
*/
|
|
7468
|
+
showRoleSwitch: _angular_core.InputSignal<boolean | undefined>;
|
|
5437
7469
|
/** List of representatives */
|
|
5438
7470
|
representatives: _angular_core.InputSignal<Representative[]>;
|
|
5439
7471
|
/** Current representative */
|
|
5440
7472
|
currentRepresentative: _angular_core.ModelSignal<Representative>;
|
|
7473
|
+
/**
|
|
7474
|
+
* Emits when the role selection (mobile collapse on tablet/mobile, popover on
|
|
7475
|
+
* desktop) opens or closes.
|
|
7476
|
+
*/
|
|
7477
|
+
readonly roleSelectionToggle: _angular_core.OutputEmitterRef<boolean>;
|
|
5441
7478
|
mobileOpen: _angular_core.WritableSignal<boolean>;
|
|
5442
7479
|
inputValue: _angular_core.WritableSignal<string>;
|
|
7480
|
+
protected readonly inputId: string;
|
|
7481
|
+
readonly breakpointService: BreakpointService;
|
|
7482
|
+
readonly isTabletView: _angular_core.Signal<boolean>;
|
|
7483
|
+
protected readonly hasRoleSelection: _angular_core.Signal<boolean>;
|
|
7484
|
+
private readonly popover;
|
|
7485
|
+
private readonly searchInput;
|
|
7486
|
+
private previousPopoverOpen;
|
|
7487
|
+
private readonly parentProfile;
|
|
7488
|
+
constructor();
|
|
5443
7489
|
translationService: TediTranslationService;
|
|
5444
7490
|
switchRoleText: _angular_core.Signal<string>;
|
|
5445
7491
|
closeText: _angular_core.Signal<string>;
|
|
7492
|
+
private defaultSearchText;
|
|
7493
|
+
private defaultOrgSearchText;
|
|
5446
7494
|
searchText: _angular_core.Signal<string>;
|
|
5447
7495
|
noResultsText: _angular_core.Signal<string>;
|
|
5448
7496
|
collapseText: _angular_core.Signal<string>;
|
|
5449
7497
|
filteredRepresentatives: _angular_core.Signal<Representative[]>;
|
|
7498
|
+
closeIfOtherRoleActive(active: unknown, isOpen: boolean): void;
|
|
5450
7499
|
handleMobileOpen(): void;
|
|
5451
7500
|
handleSelectRepresentative(r: Representative): void;
|
|
5452
7501
|
handleInputChange(event: Event): void;
|
|
7502
|
+
trackById: (_: number, r: Representative) => string;
|
|
7503
|
+
protected resolveIcon(icon: string | RepresentativeIcon | undefined): {
|
|
7504
|
+
name: string;
|
|
7505
|
+
size: IconSize;
|
|
7506
|
+
} | null;
|
|
5453
7507
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderRoleComponent, never>;
|
|
5454
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderRoleComponent, "tedi-header-role", never, { "
|
|
7508
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderRoleComponent, "tedi-header-role", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "searchClearable": { "alias": "searchClearable"; "required": false; "isSignal": true; }; "clearSearchOnSelect": { "alias": "clearSearchOnSelect"; "required": false; "isSignal": true; }; "isOrganization": { "alias": "isOrganization"; "required": false; "isSignal": true; }; "searchLabel": { "alias": "searchLabel"; "required": false; "isSignal": true; }; "organizationSearchLabel": { "alias": "organizationSearchLabel"; "required": false; "isSignal": true; }; "showRoleSwitch": { "alias": "showRoleSwitch"; "required": false; "isSignal": true; }; "representatives": { "alias": "representatives"; "required": true; "isSignal": true; }; "currentRepresentative": { "alias": "currentRepresentative"; "required": true; "isSignal": true; }; }, { "currentRepresentative": "currentRepresentativeChange"; "roleSelectionToggle": "roleSelectionToggle"; }, ["titleContent", "customContent", "noResultsContent"], ["[tedi-header-role-title]"], true, never>;
|
|
7509
|
+
}
|
|
7510
|
+
|
|
7511
|
+
type HeaderSearchMobileVariant = "modal" | "inline";
|
|
7512
|
+
interface HeaderSearchMobileLabels {
|
|
7513
|
+
/** Label shown on the mobile toggle button. Falls back to the `header.search` translation. */
|
|
7514
|
+
button?: string;
|
|
7515
|
+
/** Title shown in the mobile modal heading. Falls back to the `header.search` translation. */
|
|
7516
|
+
modalTitle?: string;
|
|
7517
|
+
}
|
|
7518
|
+
declare class HeaderSearchComponent {
|
|
7519
|
+
/**
|
|
7520
|
+
* Behavior on mobile viewports (below the `md` breakpoint).
|
|
7521
|
+
* - `'modal'` shows a toggle button that opens a fullscreen native dialog containing the projected content.
|
|
7522
|
+
* - `'inline'` renders the projected content inline at all breakpoints (no toggle, no dialog).
|
|
7523
|
+
* @default "modal"
|
|
7524
|
+
*/
|
|
7525
|
+
readonly mobileVariant: _angular_core.InputSignal<HeaderSearchMobileVariant>;
|
|
7526
|
+
/**
|
|
7527
|
+
* Mobile-specific labels for the toggle button and the modal title.
|
|
7528
|
+
* When omitted, both fall back to the `header.search` translation key.
|
|
7529
|
+
*/
|
|
7530
|
+
readonly mobileLabels: _angular_core.InputSignal<HeaderSearchMobileLabels>;
|
|
7531
|
+
/**
|
|
7532
|
+
* Disables the mobile toggle button. Has no effect on desktop or in the `inline` variant.
|
|
7533
|
+
* @default false
|
|
7534
|
+
*/
|
|
7535
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
7536
|
+
protected readonly translationService: TediTranslationService;
|
|
7537
|
+
protected readonly isMobile: _angular_core.Signal<boolean>;
|
|
7538
|
+
protected readonly modalOpen: _angular_core.WritableSignal<boolean>;
|
|
7539
|
+
protected readonly dialogEl: _angular_core.Signal<ElementRef<HTMLDialogElement> | undefined>;
|
|
7540
|
+
protected readonly buttonLabel: _angular_core.Signal<string>;
|
|
7541
|
+
protected readonly modalTitle: _angular_core.Signal<string>;
|
|
7542
|
+
protected readonly closeLabel: _angular_core.Signal<string>;
|
|
7543
|
+
constructor();
|
|
7544
|
+
protected open(): void;
|
|
7545
|
+
protected close(): void;
|
|
7546
|
+
protected onDialogClose(): void;
|
|
7547
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderSearchComponent, never>;
|
|
7548
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderSearchComponent, "tedi-header-search", never, { "mobileVariant": { "alias": "mobileVariant"; "required": false; "isSignal": true; }; "mobileLabels": { "alias": "mobileLabels"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
5455
7549
|
}
|
|
5456
7550
|
|
|
5457
7551
|
declare class SideNavDropdownComponent implements AfterViewInit {
|
|
@@ -5735,9 +7829,132 @@ interface UsePaginationArgs {
|
|
|
5735
7829
|
*/
|
|
5736
7830
|
declare function usePagination({ page, pageCount, boundaryCount, siblingCount, }: UsePaginationArgs): PaginationItem[];
|
|
5737
7831
|
|
|
7832
|
+
/**
|
|
7833
|
+
* Root of the Tabs compound component. Wraps `tedi-tabs-list` and
|
|
7834
|
+
* `tedi-tabs-content` elements and owns the active-tab state, which the list,
|
|
7835
|
+
* triggers and panels read by injecting this component.
|
|
7836
|
+
*
|
|
7837
|
+
* Use `defaultValue` for uncontrolled usage, or bind `[(value)]`
|
|
7838
|
+
* (or `[value]` + `(valueChange)`) for controlled usage.
|
|
7839
|
+
*/
|
|
7840
|
+
declare class TabsComponent {
|
|
7841
|
+
/** Controlled active tab id. Use with `(valueChange)` or `[(value)]`. */
|
|
7842
|
+
readonly value: _angular_core.InputSignal<string | undefined>;
|
|
7843
|
+
/** Initial active tab id for uncontrolled usage. */
|
|
7844
|
+
readonly defaultValue: _angular_core.InputSignal<string>;
|
|
7845
|
+
/** Emitted when the active tab changes. */
|
|
7846
|
+
readonly valueChange: _angular_core.OutputEmitterRef<string>;
|
|
7847
|
+
/** Currently active tab id, read by the list, triggers and panels. */
|
|
7848
|
+
readonly activeTab: _angular_core.WritableSignal<string>;
|
|
7849
|
+
private initialized;
|
|
7850
|
+
constructor();
|
|
7851
|
+
/**
|
|
7852
|
+
* Requests activation of a tab. In uncontrolled mode the active tab updates
|
|
7853
|
+
* immediately; in controlled mode only `valueChange` fires and the consumer
|
|
7854
|
+
* is expected to update the bound value.
|
|
7855
|
+
*/
|
|
7856
|
+
select(id: string): void;
|
|
7857
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabsComponent, never>;
|
|
7858
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabsComponent, "tedi-tabs", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, ["*"], true, never>;
|
|
7859
|
+
}
|
|
7860
|
+
|
|
7861
|
+
/**
|
|
7862
|
+
* A single tab button inside `tedi-tabs-list`. Applied to a native `<button>`
|
|
7863
|
+
* so it inherits native focus, disabled and activation behaviour.
|
|
7864
|
+
*/
|
|
7865
|
+
declare class TabsTriggerComponent {
|
|
7866
|
+
private readonly tabs;
|
|
7867
|
+
private readonly host;
|
|
7868
|
+
/**
|
|
7869
|
+
* Unique identifier for this tab. Used as the element id and to link to the
|
|
7870
|
+
* corresponding `tedi-tabs-content` panel (`aria-controls="{id}-panel"`).
|
|
7871
|
+
*/
|
|
7872
|
+
readonly id: _angular_core.InputSignal<string>;
|
|
7873
|
+
/** Icon displayed before the label. */
|
|
7874
|
+
readonly icon: _angular_core.InputSignal<string | undefined>;
|
|
7875
|
+
/** Whether the tab is disabled. */
|
|
7876
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
7877
|
+
readonly isSelected: _angular_core.Signal<boolean>;
|
|
7878
|
+
/** Plain-text label, used as the accessible name of the overflow dropdown item. */
|
|
7879
|
+
get label(): string;
|
|
7880
|
+
get contentNodes(): Node[];
|
|
7881
|
+
/** Scrolls this trigger into view within a horizontally scrolling tablist. */
|
|
7882
|
+
scrollIntoView(): void;
|
|
7883
|
+
handleClick(): void;
|
|
7884
|
+
handleKeydown(event: KeyboardEvent): void;
|
|
7885
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabsTriggerComponent, never>;
|
|
7886
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabsTriggerComponent, "button[tedi-tabs-trigger]", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
7887
|
+
}
|
|
7888
|
+
|
|
7889
|
+
type TabsOverflowMode = "dropdown" | "scroll";
|
|
7890
|
+
interface OverflowItem {
|
|
7891
|
+
id: string;
|
|
7892
|
+
disabled: boolean;
|
|
7893
|
+
trigger: TabsTriggerComponent;
|
|
7894
|
+
}
|
|
7895
|
+
/**
|
|
7896
|
+
* Container for the tab triggers. Renders the `role="tablist"` element and
|
|
7897
|
+
* handles tab overflow either through a "More" dropdown or horizontal scroll.
|
|
7898
|
+
*/
|
|
7899
|
+
declare class TabsListComponent implements AfterViewInit, OnDestroy {
|
|
7900
|
+
private readonly tabs;
|
|
7901
|
+
private readonly platformId;
|
|
7902
|
+
private readonly host;
|
|
7903
|
+
private readonly injector;
|
|
7904
|
+
/** Accessible label for the tablist. */
|
|
7905
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
7906
|
+
/** Id of the element labelling the tablist. */
|
|
7907
|
+
readonly ariaLabelledby: _angular_core.InputSignal<string | undefined>;
|
|
7908
|
+
/**
|
|
7909
|
+
* How to handle tab overflow when tabs do not fit in the available space.
|
|
7910
|
+
* - `dropdown`: overflowing tabs move into a "More" dropdown (default)
|
|
7911
|
+
* - `scroll`: enables horizontal scrolling with a fade indicator
|
|
7912
|
+
*/
|
|
7913
|
+
readonly overflowMode: _angular_core.InputSignal<TabsOverflowMode>;
|
|
7914
|
+
/** Label for the overflow dropdown trigger. Defaults to the `more` translation. */
|
|
7915
|
+
readonly dropdownLabel: _angular_core.InputSignal<string | undefined>;
|
|
7916
|
+
private readonly listRef;
|
|
7917
|
+
private readonly triggers;
|
|
7918
|
+
private readonly isOverflowing;
|
|
7919
|
+
private resizeObserver?;
|
|
7920
|
+
readonly canScrollStart: _angular_core.WritableSignal<boolean>;
|
|
7921
|
+
readonly canScrollEnd: _angular_core.WritableSignal<boolean>;
|
|
7922
|
+
readonly showMore: _angular_core.Signal<boolean>;
|
|
7923
|
+
readonly dropdownItems: _angular_core.Signal<OverflowItem[]>;
|
|
7924
|
+
constructor();
|
|
7925
|
+
ngAfterViewInit(): void;
|
|
7926
|
+
ngOnDestroy(): void;
|
|
7927
|
+
selectTab(id: string): void;
|
|
7928
|
+
updateScrollFade(): void;
|
|
7929
|
+
private checkOverflow;
|
|
7930
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabsListComponent, never>;
|
|
7931
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabsListComponent, "tedi-tabs-list", never, { "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "overflowMode": { "alias": "overflowMode"; "required": false; "isSignal": true; }; "dropdownLabel": { "alias": "dropdownLabel"; "required": false; "isSignal": true; }; }, {}, ["triggers"], ["*"], true, never>;
|
|
7932
|
+
}
|
|
7933
|
+
|
|
7934
|
+
/**
|
|
7935
|
+
* A tab panel. When `id` matches a trigger, the panel is only shown while that
|
|
7936
|
+
* tab is active. When `id` is omitted the content is always rendered (useful
|
|
7937
|
+
* for router outlets).
|
|
7938
|
+
*/
|
|
7939
|
+
declare class TabsContentComponent {
|
|
7940
|
+
private readonly tabs;
|
|
7941
|
+
/** Unique identifier matching the corresponding trigger id. */
|
|
7942
|
+
readonly id: _angular_core.InputSignal<string | undefined>;
|
|
7943
|
+
readonly isActive: _angular_core.Signal<boolean>;
|
|
7944
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabsContentComponent, never>;
|
|
7945
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabsContentComponent, "tedi-tabs-content", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
7946
|
+
}
|
|
7947
|
+
|
|
5738
7948
|
declare class DropdownItemValueLabelComponent {
|
|
7949
|
+
/**
|
|
7950
|
+
* Whether the label clips overflowing content for text ellipsis. Set `false`
|
|
7951
|
+
* when the label holds content with decorations that intentionally sit
|
|
7952
|
+
* outside the line box (e.g. status indicator), so they are not cut off.
|
|
7953
|
+
* @default true
|
|
7954
|
+
*/
|
|
7955
|
+
readonly clipContent: _angular_core.InputSignal<boolean>;
|
|
5739
7956
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownItemValueLabelComponent, never>;
|
|
5740
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownItemValueLabelComponent, "tedi-dropdown-item-value-label", never, {}, {}, never, ["*"], true, never>;
|
|
7957
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownItemValueLabelComponent, "tedi-dropdown-item-value-label", never, { "clipContent": { "alias": "clipContent"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
5741
7958
|
}
|
|
5742
7959
|
|
|
5743
7960
|
declare class DropdownItemValueMetaComponent {
|
|
@@ -5879,6 +8096,7 @@ declare class ModalHeaderComponent {
|
|
|
5879
8096
|
|
|
5880
8097
|
declare class TooltipTriggerComponent implements AfterContentChecked {
|
|
5881
8098
|
readonly host: ElementRef<HTMLElement>;
|
|
8099
|
+
readonly overlayOrigin: CdkOverlayOrigin;
|
|
5882
8100
|
private renderer;
|
|
5883
8101
|
readonly tooltip: TooltipComponent;
|
|
5884
8102
|
private interactiveElement;
|
|
@@ -5893,18 +8111,28 @@ declare class TooltipTriggerComponent implements AfterContentChecked {
|
|
|
5893
8111
|
onFocusOut(): void;
|
|
5894
8112
|
onEscape(): void;
|
|
5895
8113
|
ngAfterContentChecked(): void;
|
|
8114
|
+
/**
|
|
8115
|
+
* The element that actually receives focus and ARIA semantics. When the
|
|
8116
|
+
* projected child is itself focusable (a `<button>`/`<a href>`) it is used
|
|
8117
|
+
* directly. When it is a non-focusable wrapper that renders its own
|
|
8118
|
+
* interactive element (e.g. a `tedi-dropdown` projecting a trigger button),
|
|
8119
|
+
* the first focusable descendant is used instead — otherwise focus and the
|
|
8120
|
+
* tooltip description would land on the non-interactive wrapper.
|
|
8121
|
+
*/
|
|
8122
|
+
private resolveInteractiveElement;
|
|
8123
|
+
private isFocusable;
|
|
5896
8124
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipTriggerComponent, never>;
|
|
5897
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TooltipTriggerComponent, "tedi-tooltip-trigger", never, {}, {}, never, ["*"], true,
|
|
8125
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TooltipTriggerComponent, "tedi-tooltip-trigger", never, {}, {}, never, ["*"], true, [{ directive: typeof _angular_cdk_overlay.CdkOverlayOrigin; inputs: {}; outputs: {}; }]>;
|
|
5898
8126
|
}
|
|
5899
8127
|
|
|
5900
|
-
type TooltipPosition =
|
|
8128
|
+
type TooltipPosition = OverlayPosition;
|
|
5901
8129
|
type TooltipOpenWith = "hover" | "click" | "both";
|
|
5902
8130
|
declare class TooltipComponent implements AfterContentChecked {
|
|
5903
8131
|
/**
|
|
5904
8132
|
* The position of the tooltip relative to the trigger element.
|
|
5905
8133
|
* @default top
|
|
5906
8134
|
*/
|
|
5907
|
-
readonly position: _angular_core.InputSignal<
|
|
8135
|
+
readonly position: _angular_core.InputSignal<OverlayPosition>;
|
|
5908
8136
|
/**
|
|
5909
8137
|
* Should position to opposite direction when overflowing screen?
|
|
5910
8138
|
* @default true
|
|
@@ -5915,12 +8143,6 @@ declare class TooltipComponent implements AfterContentChecked {
|
|
|
5915
8143
|
* @default both
|
|
5916
8144
|
*/
|
|
5917
8145
|
readonly openWith: _angular_core.InputSignal<TooltipOpenWith>;
|
|
5918
|
-
/**
|
|
5919
|
-
* Append floating element to given selector.
|
|
5920
|
-
* Use 'body' to append at the end of DOM or empty string to append next to trigger element.
|
|
5921
|
-
* @default body
|
|
5922
|
-
*/
|
|
5923
|
-
readonly appendTo: _angular_core.InputSignal<string>;
|
|
5924
8146
|
/** Delay time (in ms) for closing tooltip when not hovering trigger or content.
|
|
5925
8147
|
* @default 100
|
|
5926
8148
|
*/
|
|
@@ -5929,19 +8151,29 @@ declare class TooltipComponent implements AfterContentChecked {
|
|
|
5929
8151
|
readonly tooltipTrigger: _angular_core.Signal<TooltipTriggerComponent>;
|
|
5930
8152
|
/** Tooltip content component */
|
|
5931
8153
|
readonly tooltipContent: _angular_core.Signal<ElementRef<any>>;
|
|
8154
|
+
private readonly connectedOverlay;
|
|
5932
8155
|
readonly descriptionId: string;
|
|
5933
8156
|
readonly contentText: _angular_core.WritableSignal<string>;
|
|
5934
8157
|
readonly isOpen: _angular_core.WritableSignal<boolean>;
|
|
5935
|
-
|
|
5936
|
-
|
|
5937
|
-
|
|
8158
|
+
readonly currentPlacement: _angular_core.WritableSignal<OverlaySide>;
|
|
8159
|
+
readonly arrowLeft: _angular_core.WritableSignal<number | null>;
|
|
8160
|
+
readonly arrowTop: _angular_core.WritableSignal<number | null>;
|
|
8161
|
+
readonly overlayPositions: _angular_core.Signal<_angular_cdk_overlay.ConnectedPosition[]>;
|
|
8162
|
+
readonly overlayOrigin: _angular_core.Signal<_angular_cdk_overlay.CdkOverlayOrigin>;
|
|
8163
|
+
readonly isContentHovered: _angular_core.WritableSignal<boolean>;
|
|
5938
8164
|
hideTimeout?: ReturnType<typeof setTimeout>;
|
|
8165
|
+
private readonly horizontalPush;
|
|
8166
|
+
constructor();
|
|
5939
8167
|
showTooltip(): void;
|
|
5940
8168
|
hideTooltip(): void;
|
|
5941
8169
|
toggleTooltip(): void;
|
|
8170
|
+
onPositionChange(change: ConnectedOverlayPositionChange): void;
|
|
8171
|
+
onOverlayAttach(): void;
|
|
8172
|
+
private updateArrowPosition;
|
|
5942
8173
|
ngAfterContentChecked(): void;
|
|
8174
|
+
private syncContentText;
|
|
5943
8175
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipComponent, never>;
|
|
5944
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TooltipComponent, "tedi-tooltip", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "preventOverflow": { "alias": "preventOverflow"; "required": false; "isSignal": true; }; "openWith": { "alias": "openWith"; "required": false; "isSignal": true; }; "
|
|
8176
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TooltipComponent, "tedi-tooltip", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "preventOverflow": { "alias": "preventOverflow"; "required": false; "isSignal": true; }; "openWith": { "alias": "openWith"; "required": false; "isSignal": true; }; "timeoutDelay": { "alias": "timeoutDelay"; "required": false; "isSignal": true; }; }, {}, ["tooltipTrigger", "tooltipContent"], ["tedi-tooltip-trigger", "tedi-tooltip-content"], true, never>;
|
|
5945
8177
|
}
|
|
5946
8178
|
|
|
5947
8179
|
type TooltipWidth = "none" | "small" | "medium" | "large";
|
|
@@ -5983,50 +8215,6 @@ declare class PopoverContentComponent {
|
|
|
5983
8215
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PopoverContentComponent, "tedi-popover-content", never, { "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
5984
8216
|
}
|
|
5985
8217
|
|
|
5986
|
-
type TagType = "primary" | "secondary" | "danger";
|
|
5987
|
-
type TagEllipsis = "start" | "end" | false;
|
|
5988
|
-
declare class TagComponent {
|
|
5989
|
-
readonly idGenerator: _IdGenerator;
|
|
5990
|
-
readonly uniqueId: string;
|
|
5991
|
-
/**
|
|
5992
|
-
* Whether the tag is in loading state.
|
|
5993
|
-
* When true, a spinner will be displayed inside the tag.
|
|
5994
|
-
* @default false
|
|
5995
|
-
*/
|
|
5996
|
-
loading: _angular_core.InputSignal<boolean>;
|
|
5997
|
-
/**
|
|
5998
|
-
* Whether the tag can be closed.
|
|
5999
|
-
* When true, a close button will be displayed that emits the 'closed' event when clicked.
|
|
6000
|
-
* @default false
|
|
6001
|
-
*/
|
|
6002
|
-
closable: _angular_core.InputSignal<boolean>;
|
|
6003
|
-
/**
|
|
6004
|
-
* The visual style of the tag.
|
|
6005
|
-
* Possible values: 'primary', 'secondary', 'danger'
|
|
6006
|
-
* @default "primary"
|
|
6007
|
-
*/
|
|
6008
|
-
type: _angular_core.InputSignal<TagType>;
|
|
6009
|
-
/**
|
|
6010
|
-
* Which end the label truncates from when it doesn't fit. `false` (default)
|
|
6011
|
-
* never truncates — the label wraps and the tag keeps its full width. `end`
|
|
6012
|
-
* shows an ellipsis at the end (`Long label…`); `start` shows it at the start
|
|
6013
|
-
* (`…label`), which keeps the most significant part of values like dates
|
|
6014
|
-
* visible. Truncation only kicks in when the tag is width-constrained, and the
|
|
6015
|
-
* full label is revealed in a tooltip on hover/focus.
|
|
6016
|
-
* @default false
|
|
6017
|
-
*/
|
|
6018
|
-
ellipsis: _angular_core.InputSignal<TagEllipsis>;
|
|
6019
|
-
/**
|
|
6020
|
-
* Event emitted when the close button is clicked.
|
|
6021
|
-
*/
|
|
6022
|
-
closed: _angular_core.OutputEmitterRef<Event>;
|
|
6023
|
-
classes: _angular_core.Signal<string>;
|
|
6024
|
-
ellipsisPosition: _angular_core.Signal<EllipsisPosition>;
|
|
6025
|
-
handleClose(event: Event): void;
|
|
6026
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TagComponent, never>;
|
|
6027
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagComponent, "tedi-tag", never, { "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "ellipsis": { "alias": "ellipsis"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, ["*"], true, never>;
|
|
6028
|
-
}
|
|
6029
|
-
|
|
6030
8218
|
type StatusBadgeColor = "neutral" | "brand" | "accent" | "success" | "danger" | "warning" | "transparent";
|
|
6031
8219
|
type StatusBadgeVariant = "filled" | "filled-bordered" | "bordered";
|
|
6032
8220
|
type StatusBadgeSize = "default" | "large";
|
|
@@ -6080,42 +8268,6 @@ declare class StatusBadgeComponent {
|
|
|
6080
8268
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StatusBadgeComponent, "tedi-status-badge", never, { "text": { "alias": "text"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6081
8269
|
}
|
|
6082
8270
|
|
|
6083
|
-
type StatusIndicatorType = "success" | "danger" | "warning" | "inactive";
|
|
6084
|
-
type StatusIndicatorSize = "sm" | "lg";
|
|
6085
|
-
type StatusIndicatorPosition = "default" | "top-right";
|
|
6086
|
-
declare class StatusIndicatorComponent {
|
|
6087
|
-
/**
|
|
6088
|
-
* Accessible label for the indicator. When provided, the indicator is
|
|
6089
|
-
* exposed to assistive technology with `role="img"`. When omitted, the
|
|
6090
|
-
* indicator is treated as decorative (`aria-hidden="true"`).
|
|
6091
|
-
*/
|
|
6092
|
-
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
6093
|
-
/**
|
|
6094
|
-
* The status type, which determines the indicator color.
|
|
6095
|
-
* @default success
|
|
6096
|
-
*/
|
|
6097
|
-
readonly type: _angular_core.InputSignal<StatusIndicatorType>;
|
|
6098
|
-
/**
|
|
6099
|
-
* The size of the indicator.
|
|
6100
|
-
* @default sm
|
|
6101
|
-
*/
|
|
6102
|
-
readonly size: _angular_core.InputSignal<StatusIndicatorSize>;
|
|
6103
|
-
/**
|
|
6104
|
-
* Whether the indicator has a white border ring.
|
|
6105
|
-
* @default false
|
|
6106
|
-
*/
|
|
6107
|
-
readonly hasBorder: _angular_core.InputSignal<boolean>;
|
|
6108
|
-
/**
|
|
6109
|
-
* Controls positioning of the indicator.
|
|
6110
|
-
* - `'default'` — inline, no absolute positioning
|
|
6111
|
-
* - `'top-right'` — absolutely positioned at the top-right corner of the parent
|
|
6112
|
-
* @default default
|
|
6113
|
-
*/
|
|
6114
|
-
readonly position: _angular_core.InputSignal<StatusIndicatorPosition>;
|
|
6115
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<StatusIndicatorComponent, never>;
|
|
6116
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<StatusIndicatorComponent, "tedi-status-indicator", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "hasBorder": { "alias": "hasBorder"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
6117
|
-
}
|
|
6118
|
-
|
|
6119
8271
|
/**
|
|
6120
8272
|
* A single item inside a `tedi-accordion`. Owns the item's state (expanded)
|
|
6121
8273
|
* and the inputs shared by header and content (selected, showIconCard,
|
|
@@ -6205,7 +8357,7 @@ declare class AccordionItemHeaderComponent {
|
|
|
6205
8357
|
/**
|
|
6206
8358
|
* Position of the expand action relative to the header content.
|
|
6207
8359
|
*/
|
|
6208
|
-
expandActionPosition: _angular_core.InputSignal<"
|
|
8360
|
+
expandActionPosition: _angular_core.InputSignal<"start" | "end">;
|
|
6209
8361
|
/**
|
|
6210
8362
|
* Custom CSS classes for the accordion header.
|
|
6211
8363
|
*/
|
|
@@ -6239,6 +8391,14 @@ declare class HideAtDirective {
|
|
|
6239
8391
|
private templateRef;
|
|
6240
8392
|
private viewContainerRef;
|
|
6241
8393
|
private breakpointService;
|
|
8394
|
+
private visible;
|
|
8395
|
+
/**
|
|
8396
|
+
* Attribute usage (`hideAt` on a real element) toggles `display` so the
|
|
8397
|
+
* element stays in the DOM and remains eligible for content projection.
|
|
8398
|
+
* Structural usage (`*hideAt`) creates/clears the view instead and leaves
|
|
8399
|
+
* `display` untouched (returns `null`).
|
|
8400
|
+
*/
|
|
8401
|
+
protected hostDisplay: _angular_core.Signal<"none" | null>;
|
|
6242
8402
|
constructor();
|
|
6243
8403
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<HideAtDirective, never>;
|
|
6244
8404
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<HideAtDirective, "[hideAt]", never, { "hideAt": { "alias": "hideAt"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
@@ -6249,6 +8409,14 @@ declare class ShowAtDirective {
|
|
|
6249
8409
|
private templateRef;
|
|
6250
8410
|
private viewContainerRef;
|
|
6251
8411
|
private breakpointService;
|
|
8412
|
+
private visible;
|
|
8413
|
+
/**
|
|
8414
|
+
* Attribute usage (`showAt` on a real element) toggles `display` so the
|
|
8415
|
+
* element stays in the DOM and remains eligible for content projection.
|
|
8416
|
+
* Structural usage (`*showAt`) creates/clears the view instead and leaves
|
|
8417
|
+
* `display` untouched (returns `null`).
|
|
8418
|
+
*/
|
|
8419
|
+
protected hostDisplay: _angular_core.Signal<"none" | null>;
|
|
6252
8420
|
constructor();
|
|
6253
8421
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShowAtDirective, never>;
|
|
6254
8422
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ShowAtDirective, "[showAt]", never, { "showAt": { "alias": "showAt"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
@@ -6291,6 +8459,52 @@ declare const TEDI_THEME_DEFAULT_TOKEN: InjectionToken<string>;
|
|
|
6291
8459
|
|
|
6292
8460
|
declare const TEDI_TRANSLATION_DEFAULT_TOKEN: InjectionToken<Language>;
|
|
6293
8461
|
|
|
6294
|
-
|
|
6295
|
-
|
|
8462
|
+
declare function cookieSignal<T>(key: string, initialValue: T): _angular_core.WritableSignal<T>;
|
|
8463
|
+
|
|
8464
|
+
declare function getFocusableElements(container: HTMLElement): HTMLElement[];
|
|
8465
|
+
|
|
8466
|
+
/** Horizontal gap (px) between tags in a single row. */
|
|
8467
|
+
declare const TAG_GAP = 8;
|
|
8468
|
+
/** Reserved width (px) for the "+N" counter tag. */
|
|
8469
|
+
declare const COUNTER_TAG_WIDTH = 40;
|
|
8470
|
+
interface TagOverflowOptions {
|
|
8471
|
+
/** Gap between adjacent tags. Defaults to {@link TAG_GAP}. */
|
|
8472
|
+
gap?: number;
|
|
8473
|
+
/** Width reserved for the "+N" counter tag. Defaults to {@link COUNTER_TAG_WIDTH}. */
|
|
8474
|
+
counterWidth?: number;
|
|
8475
|
+
}
|
|
8476
|
+
/**
|
|
8477
|
+
* Given the measured widths of single-row tags and the available width, returns
|
|
8478
|
+
* how many tags fit before the overflow collapses into a "+N" counter.
|
|
8479
|
+
*
|
|
8480
|
+
* Space for the counter is reserved while more tags remain, so the counter
|
|
8481
|
+
* stays visible. At least one tag is always shown when any exist, even if it
|
|
8482
|
+
* overflows on its own.
|
|
8483
|
+
*/
|
|
8484
|
+
declare function calculateVisibleTagCount(tagWidths: readonly number[], availableWidth: number, { gap, counterWidth }?: TagOverflowOptions): number;
|
|
8485
|
+
|
|
8486
|
+
/**
|
|
8487
|
+
* Checks if a string is a valid `HH:mm` time (00:00 – 23:59).
|
|
8488
|
+
*/
|
|
8489
|
+
declare function isValidTime(time: string | null | undefined): boolean;
|
|
8490
|
+
/**
|
|
8491
|
+
* Normalizes common typing patterns into `HH:mm`.
|
|
8492
|
+
*
|
|
8493
|
+
* Returns:
|
|
8494
|
+
* - the canonical `HH:mm` string when the input can be normalized
|
|
8495
|
+
* - `""` when the input is empty
|
|
8496
|
+
* - `null` when the input is non-empty but cannot be normalized
|
|
8497
|
+
*
|
|
8498
|
+
* Examples:
|
|
8499
|
+
* `"9:5"` → `"09:05"`
|
|
8500
|
+
* `"14:5"` → `"14:05"`
|
|
8501
|
+
* `"2359"` → `"23:59"`
|
|
8502
|
+
* `"930"` → `"09:30"`
|
|
8503
|
+
* `"11.55"` / `"11-55"` → `"11:55"` (any non-digit treated as separator)
|
|
8504
|
+
* `"4:89"` / `"24:00"` → `null`
|
|
8505
|
+
*/
|
|
8506
|
+
declare function normalizeTime(input: string): string | null;
|
|
8507
|
+
|
|
8508
|
+
export { AVAILABLE_LANGUAGES, AccordionComponent, AccordionItemComponent, AccordionItemContentComponent, AccordionItemHeaderComponent, AlertComponent, AttachmentActionsComponent, AttachmentComponent, BREAKPOINTS, BaseButtonDirective, BreakpointService, ButtonComponent, ButtonGroupButtonDirective, ButtonGroupComponent, COUNTER_TAG_WIDTH, CalendarComponent, CardButtonComponent, CardComponent, CardContentComponent, CardHeaderComponent, CardIconComponent, CardRowComponent, CarouselComponent, CarouselContentComponent, CarouselFooterComponent, CarouselHeaderComponent, CarouselIndicatorsComponent, CarouselNavigationComponent, CarouselSlideDirective, CheckboxCardComponent, CheckboxCardGroupComponent, CheckboxComponent, CheckboxGroupComponent, ClosingButtonComponent, ColComponent, CollapseButtonComponent, CollapseComponent, DROPDOWN_API, DROPDOWN_CONTENT_API, DateFieldComponent, DatePickerComponent, DropdownComponent, DropdownContentComponent, DropdownItemComponent, DropdownItemValueComponent, DropdownItemValueLabelComponent, DropdownItemValueMetaComponent, DropdownTriggerDirective, EllipsisComponent, EmptyStateComponent, FeedbackTextComponent, FilterComponent, FilterContentDirective, FilterGroupComponent, FilterPrependDirective, FooterBodyComponent, FooterBottomComponent, FooterComponent, FooterSectionComponent, FooterSideComponent, FormFieldComponent, HeaderActionsComponent, HeaderBottomComponent, HeaderComponent, HeaderContentComponent, HeaderLanguageComponent, HeaderLoginComponent, HeaderLogoComponent, HeaderLogoDarkDirective, HeaderLogoutComponent, HeaderMobileButtonComponent, HeaderProfileComponent, HeaderRoleComponent, HeaderRoleContentDirective, HeaderRoleNoResultsDirective, HeaderRoleTitleDirective, HeaderSearchComponent, HideAtDirective, HorizontalPushHandler, HorizontalStepperComponent, HorizontalStepperItemComponent, IconComponent, InfoButtonComponent, LANGUAGE_COOKIE_NAME, LANGUAGE_FALLBACK_VALUE, LabelComponent, LinkComponent, ListComponent, MODAL_DATA, MODAL_SIZE, ModalComponent, ModalContentComponent, ModalFooterComponent, ModalHeaderComponent, ModalRef, ModalService, NumberFieldComponent, PaginationComponent, PopoverComponent, PopoverContentComponent, PopoverTriggerDirective, ProgressBarComponent, RadioCardComponent, RadioCardGroupComponent, RadioComponent, RadioGroupComponent, RowComponent, ScrollFadeComponent, SelectComponent, SelectOptionTemplateDirective, SelectValueTemplateDirective, SeparatorComponent, ShowAtDirective, SideNavComponent, SideNavDropdownComponent, SideNavDropdownGroupComponent, SideNavDropdownItemComponent, SideNavGroupTitleComponent, SideNavItemComponent, SideNavOverlayComponent, SideNavToggleComponent, SpecialOptionControls, SpinnerComponent, StatusBadgeComponent, StatusIndicatorComponent, TAG_GAP, TEDI_FORM_FIELD_CONTROL, TEDI_TABLE_CONTEXT, TEDI_THEME_DEFAULT_TOKEN, TEDI_TRANSLATION_DEFAULT_TOKEN, THEME_CLASS_PREFIX, THEME_COOKIE_NAME, THEME_FALLBACK_VALUE, TOAST_DEFAULT_DURATION, TabsComponent, TabsContentComponent, TabsListComponent, TabsTriggerComponent, TagComponent, TediPaginationResultsDirective, TediTableColumnsMenuComponent, TediTableComponent, TediTableHeaderButtonComponent, TediTableToolbarComponent, TediTranslationPipe, TediTranslationService, TextComponent, TextFieldComponent, TextGroupComponent, TextGroupLabelComponent, TextGroupValueComponent, ThemeService, TimeFieldComponent, TimePickerComponent, TimelineComponent, TimelineDescriptionComponent, TimelineItemComponent, TimelineTimingsBottomDirective, TimelineTitleComponent, ToastComponent, ToastService, ToggleComponent, TooltipComponent, TooltipContentComponent, TooltipTriggerComponent, VerticalSpacingDirective, VerticalSpacingItemDirective, addDays, addMonths, addYears, breakpointInput, buildMonthGrid, calculateArrowOffset, calculateVisibleTagCount, computeGroupSpans, cookieSignal, createTablePersistence, endOfMonth, formatDate, formatLocaleDate, formatLocaleDateHint, formatLocaleDateLong, formatMonthYear, generateUUID, getCardBorderPlacementColor, getDaysInMonth, getFirstDayOfWeek, getFocusableElements, getISOWeek, getMonthNames, getPaddingCssVariables, getPlacementFromPositionChange, getWeekdayNames, groupRowSpan, injectTediTableContext, isAfterDay, isBeforeDay, isDateInRange, isSameDay, isSameMonth, isSameYear, isValidTime, matchAny, matchDate, normalizeTime, parseDate, parseLocaleDate, provideTedi, resolveCardBorderRadius, startOfMonth, startOfWeek, toConnectedPositions, toggleDateInArray, usePagination };
|
|
8509
|
+
export type { AlertRole, AlertTitleType, AlertType, AlertVariant, AlignItems, AlignSelf, ArrowOffset, ArrowType, AttachmentDirection, Breakpoint, BreakpointFlag, BreakpointInput, BreakpointInputs, BreakpointInputsWithoutSignals, BreakpointObject, BulletColor, ButtonGroupDropdownLabelMode, ButtonSize, ButtonVariant, CalendarView, CardBackground, CardBorderPlacement, CardBorderRadius, CardBorderType, CardContentInputs, CardIconSize, CardIconType, CardInputs, CardPadding, CardPaddingNumber, CardResolvedCorners, CarouselIndicatorsVariant, CheckboxCardVariant, CheckboxGroupDirection, CheckboxSize, ClosingButtonIconSize, ClosingButtonSize, ColInputs, ColWidth, CollapseButtonArrowType, CollapseButtonSize, CollapseSize, Cols, ColumnReorderPhase, CompareWithFn, ComponentInputs, DateAfter, DateBefore, DateFieldMode, DateInterval, DatePickerDay, DatePickerInputSize, DatePickerInputState, DatePickerMatcher, DatePickerSelectorMode, DatePickerView, DateRange, DayOfWeek, DropdownApi, DropdownContentApi, DropdownItemValueLayout, DropdownItemValueType, DropdownPosition, DropdownRole, DropdownTriggerAriaHasPopup, EllipsisPosition, EmptyStateSize, EmptyStateType, FeedbackTextPosition, FeedbackTextType, FilterOption, FilterSize, FilterVariant, FooterSidePlacement, FooterSidePosition, FormFieldControl, FormFieldIcon, Gap, GroupByFn, HeaderContentAlignment, HeaderLanguage, HeaderLoginInputs, HeaderLoginSize, HeaderLogoutInputs, HeaderLogoutSize, HeaderProfileInputs, HeaderProfileSize, HeaderSearchMobileLabels, HeaderSearchMobileVariant, HorizontalStepperBackground, IconBackgroundColor, IconColor, IconSize, IconType, IconVariant, InputSize, InputState, JustifyItems, JustifySelf, LabelColor, LabelSize, Language, LinkInputs, LinkSize, LinkVariant, Matcher, ModalConfig, ModalFullscreen, ModalPosition, ModalScrollBehavior, ModalSize, ModalWidth, ModalWidthPreset, NumberFieldSize, OverlayPosition, OverlaySide, PaginationBackground, PaginationDividerPosition, PaginationItem, PaginationItemType, PaginationLabels, PaginationVisibility, PopoverPosition, PopoverWidth, ProgressBarInputs, ProgressBarLabelPosition, ProgressBarSize, ProgressBarValuePosition, RadioCardVariant, RadioGroupDirection, RadioSize, Representative, RepresentativeIcon, RowInputs, ScrollFadePosition, ScrollFadeScrollbar, ScrollFadeSize, SelectInputSize, SelectOption, SelectOptionContext, SelectOptionGroup, SelectValueContext, SeparatorAxis, SeparatorColor, SeparatorDotSize, SeparatorSpacing, SeparatorSpacingValue, SeparatorThickness, SeparatorVariant, SideNavItemSize, SpinnerColor, SpinnerSize, StatusBadgeColor, StatusBadgeSize, StatusBadgeStatus, StatusBadgeVariant, StatusIndicatorPosition, StatusIndicatorSize, StatusIndicatorType, TEDITheme, TableColumnMeta, TableControlColumn, TableExpandTrigger, TableFilterOptions, TablePaginationOptions, TablePersistOptions, TablePersistenceController, TableSelectionMode, TableSize, TableState, TableStatePatch, TabsOverflowMode, TagEllipsis, TagOverflowOptions, TagType, TediColumnDef, TediConfig, TediTableContextValue, TediTableFilterContext, TextColor, TextGroupInputs, TextGroupType, TextModifiers, Theme, TimeFieldFullscreen, TimeFieldModal, TimeFieldPickerTrigger, TimeFieldPickerVariant, TimeFieldUseNativePicker, TimePickerVariant, TimelineCardPadding, TimelineVariant, ToastConfig, ToastPosition, ToastRole, ToastType, ToggleSize, ToggleType, ToggleVariant, TooltipOpenWith, TooltipPosition, TooltipWidth, UsePaginationArgs, VerticalSpacingSize };
|
|
6296
8510
|
//# sourceMappingURL=index.d.ts.map
|