@tedi-design-system/angular 7.1.0-rc.8 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/tedi/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { AfterContentChecked, AfterViewInit, InputSignal, Signal, PipeTransform, OnInit, OnDestroy, ElementRef, TemplateRef, Injector, InjectionToken, WritableSignal, AfterViewChecked, AfterContentInit, QueryList, EnvironmentProviders } from '@angular/core';
2
+ import { AfterContentChecked, AfterViewInit, InputSignal, Signal, PipeTransform, OnInit, OnDestroy, TemplateRef, ElementRef, Injector, InjectionToken, WritableSignal, AfterViewChecked, AfterContentInit, QueryList, EnvironmentProviders } from '@angular/core';
3
3
  import { _IdGenerator } from '@angular/cdk/a11y';
4
4
  import * as _tedi_design_system_angular_tedi from '@tedi-design-system/angular/tedi';
5
5
  import { ControlValueAccessor, NgControl } from '@angular/forms';
@@ -9,10 +9,11 @@ import { Table, VisibilityState, ColumnOrderState, ColumnSizingState, RowSelecti
9
9
  import * as _angular_cdk_overlay from '@angular/cdk/overlay';
10
10
  import { ConnectedOverlayPositionChange, ConnectedPosition, CdkOverlayOrigin, CdkConnectedOverlay } from '@angular/cdk/overlay';
11
11
  import { CdkListbox } from '@angular/cdk/listbox';
12
+ import * as i1 from '@angular/cdk/scrolling';
13
+ import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
12
14
  import { Observable } from 'rxjs';
13
15
  import { DialogRef } from '@angular/cdk/dialog';
14
16
  import { ComponentType } from '@angular/cdk/portal';
15
- import * as i1 from '@angular/cdk/scrolling';
16
17
 
17
18
  type IconSize = 8 | 12 | 16 | 18 | 22 | 24 | 36 | 48 | "inherit";
18
19
  type IconVariant = "filled" | "outlined";
@@ -819,6 +820,34 @@ declare const translationsMap: {
819
820
  en: string;
820
821
  ru: string;
821
822
  };
823
+ "table.select-column": {
824
+ description: string;
825
+ components: string[];
826
+ et: string;
827
+ en: string;
828
+ ru: string;
829
+ };
830
+ "table.expand-column": {
831
+ description: string;
832
+ components: string[];
833
+ et: string;
834
+ en: string;
835
+ ru: string;
836
+ };
837
+ "table.reorder-column": {
838
+ description: string;
839
+ components: string[];
840
+ et: string;
841
+ en: string;
842
+ ru: string;
843
+ };
844
+ "table.scroll-region": {
845
+ description: string;
846
+ components: string[];
847
+ et: string;
848
+ en: string;
849
+ ru: string;
850
+ };
822
851
  "table.expand-row": {
823
852
  description: string;
824
853
  components: string[];
@@ -917,6 +946,13 @@ declare const translationsMap: {
917
946
  en: string;
918
947
  ru: string;
919
948
  };
949
+ "scroll-fade.label": {
950
+ description: string;
951
+ components: string[];
952
+ et: string;
953
+ en: string;
954
+ ru: string;
955
+ };
920
956
  "pagination.title": {
921
957
  description: string;
922
958
  components: string[];
@@ -1519,6 +1555,13 @@ declare const translationsMap: {
1519
1555
  en: string;
1520
1556
  ru: string;
1521
1557
  };
1558
+ "time-picker.times": {
1559
+ description: string;
1560
+ components: string[];
1561
+ et: string;
1562
+ en: string;
1563
+ ru: string;
1564
+ };
1522
1565
  "time-field.clear": {
1523
1566
  description: string;
1524
1567
  components: string[];
@@ -2578,12 +2621,10 @@ type TextGroupInputs = {
2578
2621
  */
2579
2622
  labelWidth: string | undefined;
2580
2623
  };
2581
- declare class TextGroupComponent implements BreakpointInputs<TextGroupInputs>, AfterContentChecked {
2624
+ declare class TextGroupComponent implements BreakpointInputs<TextGroupInputs> {
2582
2625
  type: _angular_core.InputSignal<TextGroupType>;
2583
2626
  labelWidth: _angular_core.InputSignal<string | undefined>;
2584
2627
  breakpointService: BreakpointService;
2585
- readonly textGroupLabel: _angular_core.Signal<ElementRef<any> | undefined>;
2586
- readonly labelText: _angular_core.WritableSignal<string | null>;
2587
2628
  xs: _angular_core.InputSignal<TextGroupInputs | undefined>;
2588
2629
  sm: _angular_core.InputSignal<TextGroupInputs | undefined>;
2589
2630
  md: _angular_core.InputSignal<TextGroupInputs | undefined>;
@@ -2592,9 +2633,8 @@ declare class TextGroupComponent implements BreakpointInputs<TextGroupInputs>, A
2592
2633
  xxl: _angular_core.InputSignal<TextGroupInputs | undefined>;
2593
2634
  breakpointInputs: _angular_core.Signal<TextGroupInputs>;
2594
2635
  classes: _angular_core.Signal<string>;
2595
- ngAfterContentChecked(): void;
2596
2636
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextGroupComponent, never>;
2597
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextGroupComponent, "tedi-text-group", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "labelWidth": { "alias": "labelWidth"; "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; }; }, {}, ["textGroupLabel"], ["tedi-text-group-label", "tedi-text-group-value"], true, never>;
2637
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextGroupComponent, "tedi-text-group", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "labelWidth": { "alias": "labelWidth"; "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-text-group-label", "tedi-text-group-value"], true, never>;
2598
2638
  }
2599
2639
 
2600
2640
  declare class TextGroupLabelComponent {
@@ -2622,6 +2662,8 @@ declare class CarouselContentComponent implements AfterViewInit, OnDestroy {
2622
2662
  readonly fade: _angular_core.InputSignal<boolean>;
2623
2663
  /** Transition duration in ms */
2624
2664
  readonly transitionMs: _angular_core.InputSignal<number>;
2665
+ /** Accessible label for the carousel region. Falls back to the `carousel` translation. */
2666
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
2625
2667
  readonly translationService: TediTranslationService;
2626
2668
  private readonly breakpointService;
2627
2669
  private readonly host;
@@ -2629,6 +2671,7 @@ declare class CarouselContentComponent implements AfterViewInit, OnDestroy {
2629
2671
  readonly track: _angular_core.Signal<ElementRef<HTMLDivElement>>;
2630
2672
  readonly slideElements: _angular_core.Signal<readonly ElementRef<HTMLDivElement>[]>;
2631
2673
  readonly slides: _angular_core.Signal<readonly CarouselSlideDirective[]>;
2674
+ readonly resolvedAriaLabel: _angular_core.Signal<string>;
2632
2675
  readonly trackIndex: _angular_core.WritableSignal<number>;
2633
2676
  readonly animate: _angular_core.WritableSignal<boolean>;
2634
2677
  readonly viewportWidth: _angular_core.WritableSignal<number>;
@@ -2685,7 +2728,7 @@ declare class CarouselContentComponent implements AfterViewInit, OnDestroy {
2685
2728
  */
2686
2729
  announceSlideChange(): void;
2687
2730
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CarouselContentComponent, never>;
2688
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CarouselContentComponent, "tedi-carousel-content", never, { "slidesPerView": { "alias": "slidesPerView"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "fade": { "alias": "fade"; "required": false; "isSignal": true; }; "transitionMs": { "alias": "transitionMs"; "required": false; "isSignal": true; }; }, {}, ["slides"], never, true, never>;
2731
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CarouselContentComponent, "tedi-carousel-content", never, { "slidesPerView": { "alias": "slidesPerView"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "fade": { "alias": "fade"; "required": false; "isSignal": true; }; "transitionMs": { "alias": "transitionMs"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, ["slides"], never, true, never>;
2689
2732
  }
2690
2733
 
2691
2734
  declare class CarouselComponent {
@@ -3087,12 +3130,12 @@ declare class CalendarComponent implements ControlValueAccessor {
3087
3130
  */
3088
3131
  readonly shouldDisableYear: _angular_core.InputSignal<YearPredicate$1 | undefined>;
3089
3132
  /**
3090
- * Earliest year offered in the year grid/dropdown. Defaults to 10 years before
3091
- * the current year when `null`.
3133
+ * Earliest year offered in the year grid/dropdown. Defaults to 100 years
3134
+ * before the current year when `null`.
3092
3135
  */
3093
3136
  readonly minYear: _angular_core.InputSignal<number | null>;
3094
3137
  /**
3095
- * Latest year offered in the year grid/dropdown. Defaults to 10 years after
3138
+ * Latest year offered in the year grid/dropdown. Defaults to 20 years after
3096
3139
  * the current year when `null`.
3097
3140
  */
3098
3141
  readonly maxYear: _angular_core.InputSignal<number | null>;
@@ -3252,12 +3295,20 @@ declare class PopoverTriggerDirective {
3252
3295
  * @default false
3253
3296
  */
3254
3297
  readonly underline: _angular_core.InputSignal<boolean>;
3298
+ /**
3299
+ * When `false`, the trigger drops its `button` role and dialog ARIA
3300
+ * (`aria-haspopup`, `aria-expanded`, `aria-controls`). Use this when the element
3301
+ * is only a positioning anchor and an inner control is the real, labelled trigger
3302
+ * — e.g. a field wrapper whose icon button opens the popover.
3303
+ * @default true
3304
+ */
3305
+ readonly interactive: _angular_core.InputSignal<boolean>;
3255
3306
  readonly host: ElementRef<HTMLElement>;
3256
3307
  readonly popover: PopoverComponent;
3257
3308
  readonly overlayOrigin: CdkOverlayOrigin;
3258
3309
  onClick(): void;
3259
3310
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverTriggerDirective, never>;
3260
- 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: {}; }]>;
3311
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PopoverTriggerDirective, "[tedi-popover-trigger]", never, { "underline": { "alias": "underline"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof _angular_cdk_overlay.CdkOverlayOrigin; inputs: {}; outputs: {}; }]>;
3261
3312
  }
3262
3313
 
3263
3314
  type PopoverPosition = OverlayPosition;
@@ -3343,6 +3394,16 @@ declare class PopoverComponent {
3343
3394
  private getPageFocusableElements;
3344
3395
  private focusElementAfterTrigger;
3345
3396
  private focusElementBeforeTrigger;
3397
+ /**
3398
+ * Whether the target is inside this popover's own overlay or a child overlay
3399
+ * opened from within it — such interactions must not dismiss the popover.
3400
+ *
3401
+ * Child overlays (e.g. a date-picker month dropdown) share the CDK overlay
3402
+ * container but render in their own pane, stacked ON TOP (after this pane in
3403
+ * DOM order). An overlay stacked BELOW (e.g. a tedi-modal hosting this
3404
+ * popover) precedes this pane, so clicking it must dismiss.
3405
+ */
3406
+ private isInsideOverlay;
3346
3407
  private handleClosePopoverEvent;
3347
3408
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverComponent, never>;
3348
3409
  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>;
@@ -3941,6 +4002,16 @@ declare class TediTableComponent<TData> {
3941
4002
  * @default undefined
3942
4003
  */
3943
4004
  readonly getSubRows: _angular_core.InputSignal<((row: TData) => TData[] | undefined) | undefined>;
4005
+ /**
4006
+ * Accessor returning a stable, unique id for a row, passed straight through
4007
+ * to TanStack's `getRowId`. By default rows are keyed by their index, so
4008
+ * selection / expansion state breaks as soon as the data changes (filtering,
4009
+ * adding, removing, reordering rows). Key by an entity id instead — e.g.
4010
+ * `getRowId: (row) => row.id` — to keep `rowSelection` / `expanded` stable
4011
+ * across data updates and controllable from the outside by that id.
4012
+ * @default undefined
4013
+ */
4014
+ readonly getRowId: _angular_core.InputSignal<((originalRow: TData, index: number, parent?: Row<TData>) => string) | undefined>;
3944
4015
  /**
3945
4016
  * Table-level row grouping key. When set, consecutive rendered rows with an
3946
4017
  * equal key form a group, and:
@@ -4101,6 +4172,7 @@ declare class TediTableComponent<TData> {
4101
4172
  */
4102
4173
  readonly rowDrop: _angular_core.OutputEmitterRef<CdkDragDrop<TData[], TData[], any>>;
4103
4174
  protected readonly injector: Injector;
4175
+ private readonly platformId;
4104
4176
  private readonly translation;
4105
4177
  private readonly _hoveredRowId;
4106
4178
  /**
@@ -4116,6 +4188,10 @@ declare class TediTableComponent<TData> {
4116
4188
  protected readonly rowDetailsLabel: Signal<string>;
4117
4189
  protected readonly dragColumnLabel: Signal<string>;
4118
4190
  protected readonly dragRowLabel: Signal<string>;
4191
+ protected readonly selectColumnLabel: Signal<string>;
4192
+ protected readonly expandColumnLabel: Signal<string>;
4193
+ protected readonly reorderColumnLabel: Signal<string>;
4194
+ protected readonly scrollRegionLabel: Signal<string>;
4119
4195
  /** Currently picked-up column id (during keyboard reordering), or `null`. */
4120
4196
  private readonly _pickedUpColumnId;
4121
4197
  /** Column order snapshot captured when picking up — restored on cancel. */
@@ -4215,6 +4291,14 @@ declare class TediTableComponent<TData> {
4215
4291
  protected readonly isSomePageRowsSelected: Signal<boolean>;
4216
4292
  constructor();
4217
4293
  private applyPatch;
4294
+ /**
4295
+ * Clears every active column filter in one call, resetting all `filterable`
4296
+ * columns at once. Routes through the same state machinery as the per-column
4297
+ * **Clear** buttons, so it updates internal state, respects a controlled
4298
+ * `state` input, and emits `(stateChange)`. Grab a component reference (e.g.
4299
+ * a template ref `#table` or `viewChild`) to call it from consumer code.
4300
+ */
4301
+ clearFilters(): void;
4218
4302
  protected handleRowClick(event: Event, row: Row<TData>): void;
4219
4303
  /**
4220
4304
  * True when the click originated on an interactive control between the event
@@ -4226,6 +4310,7 @@ declare class TediTableComponent<TData> {
4226
4310
  * the row is not interactive or no resolver is provided. */
4227
4311
  protected rowAriaLabelFor(row: Row<TData>): string | null;
4228
4312
  protected rowExpandsOnClick(row: Row<TData>): boolean;
4313
+ protected rowHasNestedInteractive(row: Row<TData>): boolean;
4229
4314
  protected handleRowMouseEnter(row: Row<TData>): void;
4230
4315
  protected handleRowMouseLeave(): void;
4231
4316
  /**
@@ -4327,6 +4412,14 @@ declare class TediTableComponent<TData> {
4327
4412
  protected handleHeaderKeydown(event: KeyboardEvent, header: {
4328
4413
  column: ReturnType<Table<TData>["getAllLeafColumns"]>[number];
4329
4414
  }): void;
4415
+ private readonly scrollContainer;
4416
+ /**
4417
+ * Resets the table's own vertical scroll to the top. Only affects the
4418
+ * internal scroll container (used when `maxHeight` is set); the horizontal
4419
+ * scroll position is preserved since columns are identical across pages, and
4420
+ * the window scroll is intentionally left untouched.
4421
+ */
4422
+ private resetScrollTop;
4330
4423
  protected handlePaginationPageChange(nextPage: number): void;
4331
4424
  protected handlePaginationPageSizeChange(nextSize: number | undefined): void;
4332
4425
  protected getColumnMeta(column: {
@@ -4335,7 +4428,7 @@ declare class TediTableComponent<TData> {
4335
4428
  };
4336
4429
  }): TableColumnMeta | undefined;
4337
4430
  protected getHeaderAriaSort(column: ReturnType<Table<TData>["getAllLeafColumns"]>[number]): "ascending" | "descending" | "none" | null;
4338
- protected getHeaderLabel(column: ReturnType<Table<TData>["getAllLeafColumns"]>[number]): string | null;
4431
+ protected getSrOnlyHeaderLabel(column: ReturnType<Table<TData>["getAllLeafColumns"]>[number]): string | null;
4339
4432
  protected resolveColumnLabel(column: ReturnType<Table<TData>["getAllLeafColumns"]>[number]): string;
4340
4433
  protected filterLabel(column: ReturnType<Table<TData>["getAllLeafColumns"]>[number]): string;
4341
4434
  protected filterPlaceholder(): string;
@@ -4416,6 +4509,7 @@ declare class TediTableComponent<TData> {
4416
4509
  * nothing.
4417
4510
  */
4418
4511
  private readonly filterDrafts;
4512
+ private readonly filterDraftBaselines;
4419
4513
  /**
4420
4514
  * Normalises `filterable: true | TableFilterOptions | undefined | false`
4421
4515
  * into `TableFilterOptions | null`. `null` means the column did not opt in.
@@ -4443,6 +4537,22 @@ declare class TediTableComponent<TData> {
4443
4537
  protected filterApplyLabel(): string;
4444
4538
  protected filterClearLabel(): string;
4445
4539
  private getFilterDraft;
4540
+ /**
4541
+ * Structural equality for filter values (strings, numbers, bigints, arrays,
4542
+ * plain objects). Filter values are consumer-supplied `unknown`, so the
4543
+ * comparison must never throw: reference-equal values (including equal
4544
+ * primitives and bigints) short-circuit, and anything JSON can't serialise
4545
+ * (bigint mismatches, cyclic structures) falls back to "changed".
4546
+ */
4547
+ private filterValuesEqual;
4548
+ /**
4549
+ * Realigns each open/created filter draft with the applied filter state
4550
+ * whenever the latter changes externally (`clearFilters()`, controlled
4551
+ * `state`, a removed filter chip). A draft is only overwritten when its
4552
+ * column's applied value actually moved since the draft last synced — so an
4553
+ * in-progress, unapplied draft (applied value unchanged) is left intact.
4554
+ */
4555
+ private reconcileFilterDrafts;
4446
4556
  /**
4447
4557
  * Called when the filter trigger button is clicked. If `clearOnClose` is
4448
4558
  * set, the draft is reset to the currently-applied value every time the
@@ -4478,7 +4588,7 @@ declare class TediTableComponent<TData> {
4478
4588
  };
4479
4589
  }, cellContext: CellContext<TData, unknown>): number | null;
4480
4590
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TediTableComponent<any>, never>;
4481
- 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>;
4591
+ 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; }; "getRowId": { "alias": "getRowId"; "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>;
4482
4592
  }
4483
4593
 
4484
4594
  declare const TEDI_TABLE_CONTEXT: InjectionToken<TediTableContextValue<unknown>>;
@@ -4680,6 +4790,14 @@ declare class DropdownItemValueComponent {
4680
4790
  * @default false
4681
4791
  */
4682
4792
  readonly disabled: _angular_core.InputSignal<boolean>;
4793
+ /**
4794
+ * The checkbox/radio only pictures the item's state — the item itself owns the
4795
+ * interaction. Cancelling the default action keeps the browser from toggling the
4796
+ * indicator on its own, which would leave it showing the opposite of `selected`.
4797
+ * The click is left to bubble, so hitting the indicator selects the item just
4798
+ * like hitting anywhere else on it.
4799
+ */
4800
+ onIndicatorClick(event: MouseEvent): void;
4683
4801
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownItemValueComponent, never>;
4684
4802
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownItemValueComponent, "tedi-dropdown-item-value", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["tedi-icon, [tediIcon]", "tedi-dropdown-item-value-label", "tedi-dropdown-item-value-meta", "*"], true, never>;
4685
4803
  }
@@ -5398,6 +5516,8 @@ declare class DateInputComponent implements AfterViewChecked {
5398
5516
  readonly showClear: _angular_core.Signal<boolean>;
5399
5517
  readonly iconAriaLabel: _angular_core.Signal<string>;
5400
5518
  readonly clearAriaLabel: _angular_core.Signal<string>;
5519
+ /** Moves focus to the text input. Used by the wrapping field. */
5520
+ focusInput(): void;
5401
5521
  handleInput(event: Event): void;
5402
5522
  handleIconClick(): void;
5403
5523
  handleTagRemove(id: string): void;
@@ -5430,6 +5550,12 @@ interface FormFieldControl<T = unknown> {
5430
5550
  * If implemented, the form field can trigger clearing the value.
5431
5551
  */
5432
5552
  clearField?(): void;
5553
+ /**
5554
+ * Optional method used when the field box itself is clicked. If implemented,
5555
+ * clicking the box padding — which is not part of the control's own hit area —
5556
+ * moves focus into the control, the way clicking the value does.
5557
+ */
5558
+ focus?(): void;
5433
5559
  }
5434
5560
  /**
5435
5561
  * Injection token used by `tedi-form-field` to obtain
@@ -5526,6 +5652,16 @@ declare class DateFieldComponent implements ControlValueAccessor, FormFieldContr
5526
5652
  * the calendar's year navigation/grid. Leave `undefined` to disable nothing.
5527
5653
  */
5528
5654
  readonly shouldDisableYear: _angular_core.InputSignal<YearPredicate | undefined>;
5655
+ /**
5656
+ * Earliest year offered in the calendar's year grid/dropdown. Defaults to 100
5657
+ * years before the current year when `null`.
5658
+ */
5659
+ readonly minYear: _angular_core.InputSignal<number | null>;
5660
+ /**
5661
+ * Latest year offered in the calendar's year grid/dropdown. Defaults to 20
5662
+ * years after the current year when `null`.
5663
+ */
5664
+ readonly maxYear: _angular_core.InputSignal<number | null>;
5529
5665
  /**
5530
5666
  * Whitelist of selectable days — an explicit `Date[]` or a predicate
5531
5667
  * `(date) => boolean`. Every other day is disabled.
@@ -5593,6 +5729,12 @@ declare class DateFieldComponent implements ControlValueAccessor, FormFieldContr
5593
5729
  * (custom popover from that breakpoint up).
5594
5730
  */
5595
5731
  readonly useNativePicker: _angular_core.InputSignal<DateFieldUseNativePicker>;
5732
+ /**
5733
+ * Close the calendar popover when the page (or a scrollable ancestor) scrolls.
5734
+ * Scrolling inside the calendar itself — or its nested year/month dropdown —
5735
+ * keeps it open. Only applies to the popover; the modal is unaffected.
5736
+ */
5737
+ readonly hideOnScroll: _angular_core.InputSignal<boolean>;
5596
5738
  /** Open the calendar in a modal: `true` always, `false` never, breakpoint name → modal below that breakpoint. */
5597
5739
  readonly modal: _angular_core.InputSignal<DateFieldModalInput>;
5598
5740
  /** Make the modal fullscreen: `true` always, `false` never, breakpoint name → fullscreen below that breakpoint. Only applies when the calendar actually opens as a modal. */
@@ -5613,8 +5755,11 @@ declare class DateFieldComponent implements ControlValueAccessor, FormFieldContr
5613
5755
  private readonly breakpointService;
5614
5756
  private readonly modalService;
5615
5757
  private readonly hostEl;
5758
+ private readonly renderer;
5759
+ private readonly document;
5616
5760
  readonly calendar: _angular_core.Signal<CalendarComponent | undefined>;
5617
5761
  readonly dateInput: _angular_core.Signal<DateInputComponent>;
5762
+ private readonly connectedOverlay;
5618
5763
  readonly currentMonth: _angular_core.WritableSignal<Date>;
5619
5764
  readonly overlayOpen: _angular_core.WritableSignal<boolean>;
5620
5765
  private readonly openedBy;
@@ -5622,6 +5767,7 @@ declare class DateFieldComponent implements ControlValueAccessor, FormFieldContr
5622
5767
  private readonly cvaDisabled;
5623
5768
  private readonly formInvalid;
5624
5769
  private modalRef;
5770
+ private scrollListener?;
5625
5771
  private onChange;
5626
5772
  private onTouched;
5627
5773
  readonly fieldDisabled: _angular_core.Signal<boolean>;
@@ -5651,6 +5797,7 @@ declare class DateFieldComponent implements ControlValueAccessor, FormFieldContr
5651
5797
  registerOnTouched(fn: () => void): void;
5652
5798
  setDisabledState(isDisabled: boolean): void;
5653
5799
  setInvalidState(isInvalid: boolean): void;
5800
+ focus(): void;
5654
5801
  clearField(): void;
5655
5802
  handleClear(): void;
5656
5803
  handleIconClick(): void;
@@ -5663,8 +5810,19 @@ declare class DateFieldComponent implements ControlValueAccessor, FormFieldContr
5663
5810
  closeOverlay(): void;
5664
5811
  handleOverlayOutsideClick(event: MouseEvent): void;
5665
5812
  handleOverlayAttached(): void;
5813
+ handleOverlayDetached(): void;
5666
5814
  handleOverlayKeydown(event: KeyboardEvent): void;
5667
5815
  private focusIconButton;
5816
+ private setupScrollListener;
5817
+ private cleanupScrollListener;
5818
+ /**
5819
+ * Whether the scroll target is inside this field's own calendar overlay or a
5820
+ * nested overlay opened from within it (e.g. the year/month dropdown). Nested
5821
+ * overlays share the CDK overlay container but render in their own pane
5822
+ * stacked after this one in DOM order, so a `DOCUMENT_POSITION_FOLLOWING`
5823
+ * check distinguishes them from unrelated ancestors that should dismiss.
5824
+ */
5825
+ private isInsideOverlay;
5668
5826
  private openNativePicker;
5669
5827
  private openModal;
5670
5828
  private handleNativeInputChange;
@@ -5678,7 +5836,7 @@ declare class DateFieldComponent implements ControlValueAccessor, FormFieldContr
5678
5836
  private toIsoDate;
5679
5837
  private queryNativeInput;
5680
5838
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateFieldComponent, never>;
5681
- 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>;
5839
+ 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; }; "minYear": { "alias": "minYear"; "required": false; "isSignal": true; }; "maxYear": { "alias": "maxYear"; "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; }; "hideOnScroll": { "alias": "hideOnScroll"; "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>;
5682
5840
  }
5683
5841
 
5684
5842
  declare class DatePickerCalendarGridComponent {
@@ -5908,6 +6066,11 @@ declare class LabelComponent {
5908
6066
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<LabelComponent, "[tedi-label]", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
5909
6067
  }
5910
6068
 
6069
+ declare class LabelRowComponent {
6070
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LabelRowComponent, never>;
6071
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LabelRowComponent, "tedi-label-row", never, {}, {}, never, ["*"], true, never>;
6072
+ }
6073
+
5911
6074
  type NumberFieldSize = "default" | "small";
5912
6075
  declare class NumberFieldComponent implements ControlValueAccessor {
5913
6076
  /**
@@ -5968,6 +6131,11 @@ declare class NumberFieldComponent implements ControlValueAccessor {
5968
6131
  * @default false
5969
6132
  */
5970
6133
  fullWidth: _angular_core.InputSignal<boolean>;
6134
+ /**
6135
+ * Accessible label for the input, used when no visible `label` is provided
6136
+ * (e.g. when the field is embedded as a compact addon of another control).
6137
+ */
6138
+ ariaLabel: _angular_core.InputSignal<string | undefined>;
5971
6139
  inputRef: ElementRef<HTMLInputElement>;
5972
6140
  private formDisabled;
5973
6141
  private onChange;
@@ -5990,7 +6158,186 @@ declare class NumberFieldComponent implements ControlValueAccessor {
5990
6158
  handleInputChange(event: Event): void;
5991
6159
  handleBlur(): void;
5992
6160
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NumberFieldComponent, never>;
5993
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NumberFieldComponent, "tedi-number-field", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "feedbackText": { "alias": "feedbackText"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
6161
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NumberFieldComponent, "tedi-number-field", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "suffix": { "alias": "suffix"; "required": false; "isSignal": true; }; "feedbackText": { "alias": "feedbackText"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
6162
+ }
6163
+
6164
+ type InputSize = "small" | "large" | "default";
6165
+ type InputState = "valid" | "error" | "default";
6166
+ type ValidationState = "invalid" | "valid" | "neutral";
6167
+ interface FormFieldIcon {
6168
+ name: string;
6169
+ size?: IconSize;
6170
+ color?: IconColor;
6171
+ type?: IconType;
6172
+ variant?: IconVariant;
6173
+ }
6174
+ declare class FormFieldComponent implements AfterContentInit {
6175
+ /**
6176
+ * The size of the form field.
6177
+ * @default "default"
6178
+ */
6179
+ size: _angular_core.InputSignal<InputSize>;
6180
+ /**
6181
+ * Icon name or configuration object.
6182
+ */
6183
+ icon: _angular_core.InputSignal<string | FormFieldIcon | undefined>;
6184
+ /**
6185
+ * Whether the form field includes a clear button.
6186
+ * @default false
6187
+ */
6188
+ clearable: _angular_core.InputSignal<boolean>;
6189
+ /**
6190
+ * Custom CSS classes for the input.
6191
+ */
6192
+ inputClass: _angular_core.InputSignal<string | null>;
6193
+ control?: FormFieldControl;
6194
+ ngControl?: NgControl;
6195
+ feedback?: FeedbackTextComponent;
6196
+ private readonly destroyRef;
6197
+ private readonly inputGroup;
6198
+ constructor();
6199
+ ngAfterContentInit(): void;
6200
+ private updateValidationState;
6201
+ private computeInvalid;
6202
+ readonly resolvedIcon: _angular_core.Signal<FormFieldIcon | undefined>;
6203
+ readonly validationState: _angular_core.Signal<ValidationState>;
6204
+ showClearButton: _angular_core.Signal<boolean>;
6205
+ readonly isDisabled: _angular_core.Signal<boolean>;
6206
+ readonly hostClasses: _angular_core.Signal<{
6207
+ "tedi-form-field": boolean;
6208
+ "tedi-form-field--valid": boolean;
6209
+ "tedi-form-field--invalid": boolean;
6210
+ "tedi-form-field--disabled": boolean;
6211
+ "tedi-form-field--small": boolean;
6212
+ "tedi-form-field--large": boolean;
6213
+ "tedi-form-field--with-icon": boolean;
6214
+ }>;
6215
+ readonly inputClasses: _angular_core.Signal<{
6216
+ "tedi-form-field__input": boolean;
6217
+ }>;
6218
+ clear(): void;
6219
+ /**
6220
+ * The control never fills the whole box — the box padding and the layout
6221
+ * wrappers around the control are outside its hit area — so clicking there
6222
+ * would otherwise leave the field unfocused. Focus the control instead, unless
6223
+ * the click landed on something interactive that handles it itself (the
6224
+ * control, the clear/calendar buttons, a tag's close button).
6225
+ */
6226
+ handleBoxMouseDown(event: MouseEvent): void;
6227
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormFieldComponent, never>;
6228
+ 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>;
6229
+ }
6230
+
6231
+ type SearchSize = InputSize;
6232
+ interface SearchButton {
6233
+ /**
6234
+ * Visible button text. When omitted, the button is rendered icon-only.
6235
+ */
6236
+ text?: string;
6237
+ /**
6238
+ * Icon shown inside the button.
6239
+ * @default "search"
6240
+ */
6241
+ icon?: string;
6242
+ /**
6243
+ * Button color variant.
6244
+ * @default "primary"
6245
+ */
6246
+ variant?: ButtonVariant;
6247
+ /**
6248
+ * Accessible label for an icon-only button.
6249
+ * @default translation "search"
6250
+ */
6251
+ ariaLabel?: string;
6252
+ }
6253
+ declare class SearchComponent implements ControlValueAccessor {
6254
+ /**
6255
+ * Unique identifier for the input element, used to associate the label.
6256
+ */
6257
+ inputId: _angular_core.InputSignal<string>;
6258
+ /**
6259
+ * Visible label text. When omitted, provide `ariaLabel` for accessibility.
6260
+ */
6261
+ label: _angular_core.InputSignal<string | undefined>;
6262
+ /**
6263
+ * Value of the search input. Supports two-way binding and reactive forms.
6264
+ */
6265
+ value: _angular_core.ModelSignal<string>;
6266
+ /**
6267
+ * Placeholder text for the search input.
6268
+ */
6269
+ placeholder: _angular_core.InputSignal<string>;
6270
+ /**
6271
+ * Size of the search field.
6272
+ * @default "default"
6273
+ */
6274
+ size: _angular_core.InputSignal<InputSize>;
6275
+ /**
6276
+ * Whether the input shows a clear button once it has a value.
6277
+ * @default true
6278
+ */
6279
+ clearable: _angular_core.InputSignal<boolean>;
6280
+ /**
6281
+ * Icon shown inside the input. Ignored when `button` is set.
6282
+ * @default "search"
6283
+ */
6284
+ searchIcon: _angular_core.InputSignal<string | FormFieldIcon>;
6285
+ /**
6286
+ * Whether the search field is disabled.
6287
+ * @default false
6288
+ */
6289
+ disabled: _angular_core.InputSignal<boolean>;
6290
+ /**
6291
+ * When set, renders a trailing search button and hides the inline icon.
6292
+ */
6293
+ button: _angular_core.InputSignal<SearchButton | undefined>;
6294
+ /**
6295
+ * FeedbackText component inputs (hint / validation message).
6296
+ */
6297
+ feedbackText: _angular_core.InputSignal<ComponentInputs<FeedbackTextComponent> | undefined>;
6298
+ /**
6299
+ * Accessible name for the search region. Falls back to `label`, then
6300
+ * `placeholder`, then the translated "search" label.
6301
+ */
6302
+ ariaLabel: _angular_core.InputSignal<string | undefined>;
6303
+ /**
6304
+ * Emitted when the search is executed (Enter key or button click).
6305
+ */
6306
+ readonly searchEvent: _angular_core.OutputEmitterRef<string>;
6307
+ /**
6308
+ * Emitted when the clear button is clicked.
6309
+ */
6310
+ readonly clear: _angular_core.OutputEmitterRef<void>;
6311
+ private readonly inputRef;
6312
+ private readonly formDisabled;
6313
+ private readonly translationService;
6314
+ private onChange;
6315
+ private onTouched;
6316
+ readonly isDisabled: _angular_core.Signal<boolean>;
6317
+ readonly fieldIcon: _angular_core.Signal<string | FormFieldIcon | undefined>;
6318
+ readonly fieldHeight: _angular_core.Signal<"var(--form-field-height-sm)" | "var(--form-field-height-lg)" | "var(--form-field-height)">;
6319
+ readonly buttonSize: _angular_core.Signal<"small" | "default">;
6320
+ readonly buttonIconSize: _angular_core.Signal<24 | 18>;
6321
+ readonly buttonAriaLabel: _angular_core.Signal<string | null>;
6322
+ readonly feedbackId: _angular_core.Signal<string | null>;
6323
+ readonly searchAriaLabel: _angular_core.Signal<string>;
6324
+ /**
6325
+ * Accessible name for the input itself. A visible `label` already names it
6326
+ * via `for`/`id`, so the attribute is only emitted when there is none —
6327
+ * otherwise `aria-label` would silently override the visible text.
6328
+ */
6329
+ readonly inputAriaLabel: _angular_core.Signal<string | null>;
6330
+ onInputValue(value: string): void;
6331
+ onClear(): void;
6332
+ onBlur(): void;
6333
+ emitSearch(): void;
6334
+ focus(): void;
6335
+ writeValue(value: string | null): void;
6336
+ registerOnChange(fn: (value: string) => void): void;
6337
+ registerOnTouched(fn: () => void): void;
6338
+ setDisabledState(isDisabled: boolean): void;
6339
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SearchComponent, never>;
6340
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SearchComponent, "tedi-search", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "searchIcon": { "alias": "searchIcon"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "button": { "alias": "button"; "required": false; "isSignal": true; }; "feedbackText": { "alias": "feedbackText"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "searchEvent": "searchEvent"; "clear": "clear"; }, never, never, true, never>;
5994
6341
  }
5995
6342
 
5996
6343
  /**
@@ -6059,64 +6406,24 @@ declare class SelectValueTemplateDirective<T = unknown> {
6059
6406
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectValueTemplateDirective<any>, never>;
6060
6407
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectValueTemplateDirective<any>, "[tediSelectValue]", never, {}, {}, never, never, true, never>;
6061
6408
  }
6062
-
6063
- type InputSize = "small" | "large" | "default";
6064
- type InputState = "valid" | "error" | "default";
6065
- type ValidationState = "invalid" | "valid" | "neutral";
6066
- interface FormFieldIcon {
6067
- name: string;
6068
- size?: IconSize;
6069
- color?: IconColor;
6070
- type?: IconType;
6071
- variant?: IconVariant;
6072
- }
6073
- declare class FormFieldComponent implements AfterContentInit {
6074
- /**
6075
- * The size of the form field.
6076
- * @default "default"
6077
- */
6078
- size: _angular_core.InputSignal<InputSize>;
6079
- /**
6080
- * Icon name or configuration object.
6081
- */
6082
- icon: _angular_core.InputSignal<string | FormFieldIcon | undefined>;
6083
- /**
6084
- * Whether the form field includes a clear button.
6085
- * @default false
6086
- */
6087
- clearable: _angular_core.InputSignal<boolean>;
6088
- /**
6089
- * Custom CSS classes for the input.
6090
- */
6091
- inputClass: _angular_core.InputSignal<string | null>;
6092
- control?: FormFieldControl;
6093
- ngControl?: NgControl;
6094
- feedback?: FeedbackTextComponent;
6095
- private readonly destroyRef;
6096
- private readonly inputGroup;
6097
- constructor();
6098
- ngAfterContentInit(): void;
6099
- private updateValidationState;
6100
- private computeInvalid;
6101
- readonly resolvedIcon: _angular_core.Signal<FormFieldIcon | undefined>;
6102
- readonly validationState: _angular_core.Signal<ValidationState>;
6103
- showClearButton: _angular_core.Signal<boolean>;
6104
- readonly isDisabled: _angular_core.Signal<boolean>;
6105
- readonly hostClasses: _angular_core.Signal<{
6106
- "tedi-form-field": boolean;
6107
- "tedi-form-field--valid": boolean;
6108
- "tedi-form-field--invalid": boolean;
6109
- "tedi-form-field--disabled": boolean;
6110
- "tedi-form-field--small": boolean;
6111
- "tedi-form-field--large": boolean;
6112
- "tedi-form-field--with-icon": boolean;
6113
- }>;
6114
- readonly inputClasses: _angular_core.Signal<{
6115
- "tedi-form-field__input": boolean;
6116
- }>;
6117
- clear(): void;
6118
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormFieldComponent, never>;
6119
- 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>;
6409
+ /**
6410
+ * Directive for custom tooltip content next to the label. Use when the tooltip
6411
+ * needs formatting the plain `tooltip` string input cannot express (bold,
6412
+ * italic, links). Takes precedence over the `tooltip` input.
6413
+ *
6414
+ * @example
6415
+ * ```html
6416
+ * <tedi-select [options]="options" label="Ravim">
6417
+ * <ng-template tediSelectTooltip>
6418
+ * Vali <b>toimeaine</b>, mitte ravimi nimi.
6419
+ * </ng-template>
6420
+ * </tedi-select>
6421
+ * ```
6422
+ */
6423
+ declare class SelectTooltipTemplateDirective {
6424
+ template: TemplateRef<unknown>;
6425
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectTooltipTemplateDirective, never>;
6426
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectTooltipTemplateDirective, "[tediSelectTooltip]", never, {}, {}, never, never, true, never>;
6120
6427
  }
6121
6428
 
6122
6429
  type SelectInputSize = Exclude<InputSize, "large">;
@@ -6131,6 +6438,13 @@ interface SelectOptionGroup<T = unknown> {
6131
6438
  label: string;
6132
6439
  options: SelectOption<T>[];
6133
6440
  }
6441
+ /** A navigable row in the virtual-scroll listbox: the pinned select-all row or an option. */
6442
+ type VirtualRow<T = unknown> = {
6443
+ kind: "select-all";
6444
+ } | {
6445
+ kind: "option";
6446
+ option: SelectOption<T>;
6447
+ };
6134
6448
  type GroupByFn<T = unknown> = (item: T) => string | undefined;
6135
6449
  type CompareWithFn<T = unknown> = (a: T, b: T) => boolean;
6136
6450
  declare enum SpecialOptionControls {
@@ -6149,7 +6463,8 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
6149
6463
  label: _angular_core.InputSignal<string | undefined>;
6150
6464
  /**
6151
6465
  * When set, renders an info button next to the label that reveals this text
6152
- * in a tooltip on hover/focus.
6466
+ * in a tooltip on hover/focus. For formatted content, project a
6467
+ * `*tediSelectTooltip` template instead, which takes precedence over this.
6153
6468
  */
6154
6469
  tooltip: _angular_core.InputSignal<string | undefined>;
6155
6470
  /**
@@ -6255,8 +6570,13 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
6255
6570
  */
6256
6571
  multiRow: _angular_core.InputSignal<boolean>;
6257
6572
  /**
6258
- * Which end a selected tag's label truncates from when it doesn't fit.
6259
- * `false` (default) never truncates; `end` → `label…`; `start` → `…label`.
6573
+ * Which end a selected tag's label truncates from: `end` `label…`, `start` →
6574
+ * `…label`. `false` (default) never truncates.
6575
+ *
6576
+ * Truncation needs the tag to be width-constrained: in a single row the tags
6577
+ * share the row with the `+N` counter, so an over-wide label truncates to fit.
6578
+ * With `multiRow` the tags wrap first, so a label truncates only when it is
6579
+ * wider than the field on its own.
6260
6580
  * @default false
6261
6581
  */
6262
6582
  tagEllipsis: _angular_core.InputSignal<TagEllipsis>;
@@ -6288,6 +6608,11 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
6288
6608
  * When not set, the dropdown height is calculated based on available viewport space.
6289
6609
  */
6290
6610
  maxDropdownHeight: _angular_core.InputSignal<number | undefined>;
6611
+ /**
6612
+ * Does the dropdown close when the page scrolls?
6613
+ * @default false
6614
+ */
6615
+ hideOnScroll: _angular_core.InputSignal<boolean>;
6291
6616
  /**
6292
6617
  * Layout type for the dropdown options.
6293
6618
  * - `"menu"` (default): vertical list of options.
@@ -6297,6 +6622,28 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
6297
6622
  * @default "menu"
6298
6623
  */
6299
6624
  dropdownType: _angular_core.InputSignal<"menu" | "grid">;
6625
+ /**
6626
+ * Renders options with virtual scrolling so only the rows in view exist in the
6627
+ * DOM. Enable for very large option lists (hundreds or more) to keep opening
6628
+ * and scrolling fast. Takes effect only for the default `menu` dropdown type
6629
+ * without `groupBy`; grid and grouped lists fall back to full rendering.
6630
+ * @default false
6631
+ */
6632
+ virtualScroll: _angular_core.InputSignal<boolean>;
6633
+ /**
6634
+ * Fixed row height in pixels for the virtual scroll viewport. Virtual scrolling
6635
+ * assumes every row is the same height and uses this value to compute how many
6636
+ * rows fit, the total scroll height, and where to jump when scrolling. Only
6637
+ * relevant when `virtualScroll` is enabled.
6638
+ *
6639
+ * Leave unset by default: the height is auto-measured from the first rendered
6640
+ * option, which covers the standard option template. Set it only when that
6641
+ * measurement is unreliable — typically a custom `optionTemplate` whose rows
6642
+ * have a known uniform height that the first row doesn't represent (e.g. only
6643
+ * some rows carry a description line). Setting a wrong value makes rows overlap
6644
+ * or leave gaps, so prefer auto-measurement unless you hit one of these cases.
6645
+ */
6646
+ virtualItemSize: _angular_core.InputSignal<number | undefined>;
6300
6647
  /**
6301
6648
  * Whether the select has a search input for filtering options.
6302
6649
  * @default false
@@ -6359,9 +6706,29 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
6359
6706
  visibleTagsCount: _angular_core.WritableSignal<number | null>;
6360
6707
  searchTerm: _angular_core.WritableSignal<string>;
6361
6708
  searchFocused: _angular_core.WritableSignal<boolean>;
6709
+ /** Index into `virtualRows()` of the keyboard-active row (-1 when none). */
6710
+ activeIndex: _angular_core.WritableSignal<number>;
6711
+ /** Measured row height for the virtual scroll viewport. */
6712
+ measuredRowHeight: _angular_core.WritableSignal<number | null>;
6713
+ private static readonly DEFAULT_ROW_HEIGHT;
6714
+ private static readonly SMALL_ROW_HEIGHT;
6362
6715
  hiddenTagsCount: _angular_core.Signal<number>;
6716
+ /**
6717
+ * Whether the default identity comparator is in use. When true, selection and
6718
+ * item lookups can use O(1) Set/Map paths instead of O(n) scans with the
6719
+ * user-supplied comparator. See issue #552.
6720
+ */
6721
+ private readonly usesDefaultCompare;
6722
+ /** O(1) membership set of selected values for the identity-comparison path. */
6723
+ private readonly selectedValueSet;
6724
+ /** value → normalized option, for O(1) label lookups. */
6725
+ private readonly optionByValue;
6726
+ /** value → original item, for O(1) custom-template context lookups. */
6727
+ private readonly itemByValue;
6363
6728
  listboxRef: _angular_core.Signal<ElementRef<any> | undefined>;
6364
6729
  cdkListboxRef: _angular_core.Signal<CdkListbox<any> | undefined>;
6730
+ viewport: _angular_core.Signal<CdkVirtualScrollViewport | undefined>;
6731
+ virtualListboxRef: _angular_core.Signal<ElementRef<any> | undefined>;
6365
6732
  connectedOverlay: _angular_core.Signal<CdkConnectedOverlay | undefined>;
6366
6733
  triggerRef: _angular_core.Signal<ElementRef<any> | undefined>;
6367
6734
  searchInputRef: _angular_core.Signal<ElementRef<any> | undefined>;
@@ -6369,8 +6736,12 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
6369
6736
  tagRefs: _angular_core.Signal<readonly ElementRef<any>[]>;
6370
6737
  hostRef: ElementRef<any>;
6371
6738
  private ngZone;
6739
+ private renderer;
6740
+ private document;
6741
+ private scrollListener?;
6372
6742
  optionTemplate: _angular_core.Signal<SelectOptionTemplateDirective<any> | undefined>;
6373
6743
  valueTemplate: _angular_core.Signal<SelectValueTemplateDirective<any> | undefined>;
6744
+ tooltipTemplate: _angular_core.Signal<SelectTooltipTemplateDirective | undefined>;
6374
6745
  normalizedOptions: _angular_core.Signal<SelectOption<T>[]>;
6375
6746
  filteredOptions: _angular_core.Signal<SelectOption<T>[]>;
6376
6747
  optionGroups: _angular_core.Signal<SelectOptionGroup<T>[]>;
@@ -6380,6 +6751,19 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
6380
6751
  showSingleSelectedValue: _angular_core.Signal<boolean>;
6381
6752
  allOptionsSelected: _angular_core.Signal<boolean>;
6382
6753
  someOptionsSelected: _angular_core.Signal<boolean>;
6754
+ /** Whether virtual scrolling is active: opt-in, flat `menu` lists only. */
6755
+ readonly virtualize: _angular_core.Signal<boolean>;
6756
+ /** Whether the pinned select-all row is shown above the virtual viewport. */
6757
+ readonly showSelectAllRow: _angular_core.Signal<boolean>;
6758
+ /** Ordered navigable rows for the virtual listbox (pinned select-all + options). */
6759
+ readonly virtualRows: _angular_core.Signal<VirtualRow<T>[]>;
6760
+ /** Effective row height for the viewport: explicit input, measured, or size default. */
6761
+ readonly virtualRowHeight: _angular_core.Signal<number>;
6762
+ /** Height of the scrolling viewport: content-sized, capped at available space. */
6763
+ readonly virtualViewportHeight: _angular_core.Signal<number>;
6764
+ trackByOptionValue: (_: number, option: SelectOption<T>) => unknown;
6765
+ /** id of the active row, exposed via aria-activedescendant on the listbox. */
6766
+ readonly activeDescendantId: _angular_core.Signal<string | null>;
6383
6767
  ngAfterContentChecked(): void;
6384
6768
  ngAfterViewChecked(): void;
6385
6769
  onWindowResize(): void;
@@ -6401,11 +6785,47 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
6401
6785
  onArrowClick(event: Event): void;
6402
6786
  onTriggerEnter(): void;
6403
6787
  onSearchKeydown(event: KeyboardEvent): void;
6788
+ /** Navigate the open list (virtual or CDK), or open the dropdown when closed. */
6789
+ private navigateOrOpen;
6790
+ /** Activate the active option (virtual or CDK), or open the dropdown when closed. */
6791
+ private confirmActiveOrOpen;
6404
6792
  private static readonly KEY_CODES;
6405
6793
  private forwardToCdkListbox;
6794
+ virtualOptionId(index: number): string;
6795
+ /** Keyboard handler for the non-searchable virtual listbox element. */
6796
+ onVirtualListboxKeydown(event: KeyboardEvent): void;
6797
+ private handleVirtualNavKey;
6798
+ private moveActive;
6799
+ private moveActiveToEdge;
6800
+ private isRowNavigable;
6801
+ private setActiveIndex;
6802
+ private scrollActiveIntoView;
6803
+ /**
6804
+ * Scroll the initially-active option into view once the overlay has attached.
6805
+ * Driven by the overlay's `(attach)` event because the virtual viewport (a
6806
+ * viewChild inside the overlay portal) only resolves after attachment.
6807
+ *
6808
+ * The scroll is deferred one macrotask: at attach time the CDK viewport has not
6809
+ * yet established its scrollable content size, so `scrollToIndex` would clamp to
6810
+ * 0. By the next macrotask the content size is set and the measured row height
6811
+ * (for taller custom templates) has been applied to `itemSize`.
6812
+ */
6813
+ onOverlayAttached(): void;
6814
+ /** Set the active row on open: the first selected option, else the first navigable row. */
6815
+ private initVirtualActive;
6816
+ activateActiveRow(): void;
6817
+ private activateRow;
6818
+ onVirtualOptionClick(option: SelectOption<T>): void;
6819
+ private syncActiveToOptionValue;
6820
+ onVirtualSelectAllClick(): void;
6821
+ private toggleOptionValue;
6822
+ private selectSingleValue;
6823
+ private measureVirtualRowHeight;
6406
6824
  private openDropdown;
6407
6825
  private calculateDropdownMaxHeight;
6408
6826
  private closeDropdown;
6827
+ private setupScrollListener;
6828
+ private cleanupScrollListener;
6409
6829
  handleValueChange(event: {
6410
6830
  value: readonly unknown[];
6411
6831
  }): void;
@@ -6437,7 +6857,7 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
6437
6857
  registerOnTouched(fn: () => void): void;
6438
6858
  setDisabledState(isDisabled: boolean): void;
6439
6859
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectComponent<any>, never>;
6440
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectComponent<any>, "tedi-select", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "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; }; "ellipsis": { "alias": "ellipsis"; "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>;
6860
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectComponent<any>, "tedi-select", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "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; }; "ellipsis": { "alias": "ellipsis"; "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; }; "hideOnScroll": { "alias": "hideOnScroll"; "required": false; "isSignal": true; }; "dropdownType": { "alias": "dropdownType"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "virtualItemSize": { "alias": "virtualItemSize"; "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", "tooltipTemplate"], never, true, never>;
6441
6861
  }
6442
6862
 
6443
6863
  type SliderHideLabel = boolean | "keep-space";
@@ -6611,6 +7031,11 @@ declare class ToggleComponent implements ControlValueAccessor {
6611
7031
  * @default false
6612
7032
  */
6613
7033
  icon: _angular_core.InputSignal<boolean>;
7034
+ /**
7035
+ * Accessible label for the toggle. Provide this when there is no associated
7036
+ * visible `<label>` element, so the switch has an accessible name.
7037
+ */
7038
+ ariaLabel: _angular_core.InputSignal<string | undefined>;
6614
7039
  inputRef: ElementRef<HTMLInputElement>;
6615
7040
  private onChange;
6616
7041
  private onTouched;
@@ -6623,7 +7048,7 @@ declare class ToggleComponent implements ControlValueAccessor {
6623
7048
  classes: _angular_core.Signal<string>;
6624
7049
  iconColor: _angular_core.Signal<IconColor>;
6625
7050
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToggleComponent, never>;
6626
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToggleComponent, "tedi-toggle", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; }, never, never, true, never>;
7051
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToggleComponent, "tedi-toggle", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; }, never, never, true, never>;
6627
7052
  }
6628
7053
 
6629
7054
  /**
@@ -6726,7 +7151,7 @@ declare class TextFieldComponent implements ControlValueAccessor, FormFieldContr
6726
7151
  * Disables the input from a parent template (e.g. a wrapping field component).
6727
7152
  * Combined with the reactive-forms disabled state and any input-group state.
6728
7153
  */
6729
- readonly disabledInput: _angular_core.InputSignal<boolean>;
7154
+ readonly disabledInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
6730
7155
  readonly disabled: _angular_core.Signal<boolean>;
6731
7156
  readonly invalid: _angular_core.WritableSignal<boolean>;
6732
7157
  setInvalidState(isInvalid: boolean): void;
@@ -6741,6 +7166,7 @@ declare class TextFieldComponent implements ControlValueAccessor, FormFieldContr
6741
7166
  setDisabledState(isDisabled: boolean): void;
6742
7167
  handleInputChange(event: Event): void;
6743
7168
  handleBlur(): void;
7169
+ focus(): void;
6744
7170
  clearField(): void;
6745
7171
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextFieldComponent, never>;
6746
7172
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextFieldComponent, "input[tedi-text-field]", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "arrowsHidden": { "alias": "arrowsHidden"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "clear": "clear"; }, never, never, true, never>;
@@ -6964,6 +7390,7 @@ declare class TimeFieldComponent implements ControlValueAccessor, FormFieldContr
6964
7390
  handleInput(event: Event): void;
6965
7391
  handleBlur(): void;
6966
7392
  clearInput(): void;
7393
+ focus(): void;
6967
7394
  clearField(): void;
6968
7395
  openNativePicker(): void;
6969
7396
  onInputClick(event: MouseEvent): void;
@@ -7303,12 +7730,16 @@ declare class ScrollFadeComponent implements AfterViewInit, OnDestroy {
7303
7730
  readonly fadePosition: _angular_core.InputSignal<ScrollFadePosition>;
7304
7731
  /** Scrollbar style. */
7305
7732
  readonly scrollBar: _angular_core.InputSignal<ScrollFadeScrollbar>;
7733
+ /** Accessible label for the scrollable region. Falls back to a translated default. */
7734
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
7306
7735
  /** Emitted when scrolled to the top. */
7307
7736
  readonly scrolledToTop: _angular_core.OutputEmitterRef<void>;
7308
7737
  /** Emitted when scrolled to the bottom. */
7309
7738
  readonly scrolledToBottom: _angular_core.OutputEmitterRef<void>;
7739
+ private readonly translationService;
7310
7740
  private readonly innerRef;
7311
7741
  private resizeObserver;
7742
+ readonly _defaultLabel: _angular_core.Signal<string>;
7312
7743
  private readonly fade;
7313
7744
  readonly classes: _angular_core.Signal<string>;
7314
7745
  readonly innerClasses: _angular_core.Signal<string>;
@@ -7317,7 +7748,7 @@ declare class ScrollFadeComponent implements AfterViewInit, OnDestroy {
7317
7748
  ngOnDestroy(): void;
7318
7749
  private updateFade;
7319
7750
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScrollFadeComponent, never>;
7320
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScrollFadeComponent, "tedi-scroll-fade", never, { "fadeSize": { "alias": "fadeSize"; "required": false; "isSignal": true; }; "fadePosition": { "alias": "fadePosition"; "required": false; "isSignal": true; }; "scrollBar": { "alias": "scrollBar"; "required": false; "isSignal": true; }; }, { "scrolledToTop": "scrolledToTop"; "scrolledToBottom": "scrolledToBottom"; }, never, ["*"], true, never>;
7751
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScrollFadeComponent, "tedi-scroll-fade", never, { "fadeSize": { "alias": "fadeSize"; "required": false; "isSignal": true; }; "fadePosition": { "alias": "fadePosition"; "required": false; "isSignal": true; }; "scrollBar": { "alias": "scrollBar"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "scrolledToTop": "scrolledToTop"; "scrolledToBottom": "scrolledToBottom"; }, never, ["*"], true, never>;
7321
7752
  }
7322
7753
 
7323
7754
  type SeparatorAxis = "horizontal" | "vertical";
@@ -8064,8 +8495,7 @@ declare class HeaderRoleComponent {
8064
8495
  closeIfOtherRoleActive(active: unknown, isOpen: boolean): void;
8065
8496
  handleMobileOpen(): void;
8066
8497
  handleSelectRepresentative(r: Representative): void;
8067
- handleInputChange(event: Event): void;
8068
- trackById: (_: number, r: Representative) => string;
8498
+ handleInputChange(value: string): void;
8069
8499
  protected resolveIcon(icon: string | RepresentativeIcon | undefined): {
8070
8500
  name: string;
8071
8501
  size: IconSize;
@@ -8547,12 +8977,16 @@ declare class TabsComponent {
8547
8977
  }
8548
8978
 
8549
8979
  /**
8550
- * A single tab button inside `tedi-tabs-list`. Applied to a native `<button>`
8551
- * so it inherits native focus, disabled and activation behaviour.
8980
+ * A single tab inside `tedi-tabs-list`. Applied to a native `<button>` (in-page
8981
+ * tab) or `<a>` (a tab that navigates to a route — add `href`/`routerLink`).
8982
+ * The anchor form keeps the same `role="tab"` semantics but is a real link, so
8983
+ * it works with keyboard/new-tab/copy-link as WCAG expects for navigation.
8552
8984
  */
8553
8985
  declare class TabsTriggerComponent {
8554
8986
  private readonly tabs;
8555
8987
  private readonly host;
8988
+ /** Whether the trigger is rendered as an anchor (`<a>`) rather than a button. */
8989
+ readonly isAnchor: boolean;
8556
8990
  /**
8557
8991
  * Unique identifier for this tab. Used as the element id and to link to the
8558
8992
  * corresponding `tedi-tabs-content` panel (`aria-controls="{id}-panel"`).
@@ -8563,15 +8997,17 @@ declare class TabsTriggerComponent {
8563
8997
  /** Whether the tab is disabled. */
8564
8998
  readonly disabled: _angular_core.InputSignal<boolean>;
8565
8999
  readonly isSelected: _angular_core.Signal<boolean>;
9000
+ readonly tabIndex: _angular_core.Signal<0 | -1>;
8566
9001
  /** Plain-text label, used as the accessible name of the overflow dropdown item. */
8567
9002
  get label(): string;
8568
9003
  get contentNodes(): Node[];
8569
9004
  /** Scrolls this trigger into view within a horizontally scrolling tablist. */
8570
9005
  scrollIntoView(): void;
8571
- handleClick(): void;
9006
+ handleClick(event?: Event): void;
9007
+ private opensInNewBrowsingContext;
8572
9008
  handleKeydown(event: KeyboardEvent): void;
8573
9009
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabsTriggerComponent, never>;
8574
- 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>;
9010
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabsTriggerComponent, "button[tedi-tabs-trigger], a[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>;
8575
9011
  }
8576
9012
 
8577
9013
  type TabsOverflowMode = "dropdown" | "scroll";
@@ -8919,6 +9355,35 @@ declare class TooltipContentComponent {
8919
9355
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TooltipContentComponent, "tedi-tooltip-content", never, { "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
8920
9356
  }
8921
9357
 
9358
+ declare class InfoTooltipComponent {
9359
+ /**
9360
+ * Position of the tooltip relative to the info button.
9361
+ * @default top
9362
+ */
9363
+ position: _angular_core.InputSignal<_tedi_design_system_angular_tedi.OverlayPosition>;
9364
+ /**
9365
+ * How the tooltip can be opened.
9366
+ * @default both
9367
+ */
9368
+ openWith: _angular_core.InputSignal<TooltipOpenWith>;
9369
+ /**
9370
+ * Max width of the tooltip content.
9371
+ * @default medium
9372
+ */
9373
+ maxWidth: _angular_core.InputSignal<TooltipWidth>;
9374
+ /**
9375
+ * Color variant of the info button. Use `inverted` on dark or colored backgrounds.
9376
+ * @default primary
9377
+ */
9378
+ color: _angular_core.InputSignal<"primary" | "inverted">;
9379
+ /**
9380
+ * Accessible name for the info button. Defaults to the translated info-button label.
9381
+ */
9382
+ ariaLabel: _angular_core.InputSignal<string | undefined>;
9383
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<InfoTooltipComponent, never>;
9384
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<InfoTooltipComponent, "tedi-info-tooltip", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "openWith": { "alias": "openWith"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
9385
+ }
9386
+
8922
9387
  type PopoverWidth = "none" | "small" | "medium" | "large";
8923
9388
  declare class PopoverContentComponent {
8924
9389
  /**
@@ -9115,6 +9580,6 @@ declare function isValidTime(time: string | null | undefined): boolean;
9115
9580
  */
9116
9581
  declare function normalizeTime(input: string): string | null;
9117
9582
 
9118
- export { AVAILABLE_LANGUAGES, AccordionComponent, AccordionItemComponent, AccordionItemContentComponent, AccordionItemHeaderComponent, AlertComponent, AttachmentActionsComponent, AttachmentComponent, BREAKPOINTS, BaseButtonDirective, BreadcrumbItemDirective, BreadcrumbSeparatorDirective, BreadcrumbsComponent, 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, HeaderTopComponent, HideAtDirective, HorizontalPushHandler, HorizontalStepperComponent, HorizontalStepperItemComponent, IconComponent, InfoButtonComponent, InputGroupComponent, InputGroupPrefixDirective, InputGroupSuffixDirective, 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, SliderComponent, SpecialOptionControls, SpinnerComponent, StatusBadgeComponent, StatusIndicatorComponent, TAG_GAP, TEDI_FORM_FIELD_CONTROL, TEDI_INPUT_GROUP, 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 };
9119
- export type { AccordionInputs, AlertRole, AlertSize, AlertTitleType, AlertType, AlertVariant, AlignItems, AlignSelf, ArrowOffset, ArrowType, AttachmentDirection, BreadcrumbsInputs, BreadcrumbsVariant, 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, HeaderLanguageLabelPosition, HeaderLoginInputs, HeaderLoginSize, HeaderLogoutInputs, HeaderLogoutSize, HeaderProfileInputs, HeaderProfileSize, HeaderSearchMobileLabels, HeaderSearchMobileVariant, HeaderTopAlignment, HeaderTopInputs, HorizontalStepperBackground, IconBackgroundColor, IconColor, IconSize, IconType, IconVariant, InputGroupContext, 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, SliderHideLabel, 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 };
9583
+ export { AVAILABLE_LANGUAGES, AccordionComponent, AccordionItemComponent, AccordionItemContentComponent, AccordionItemHeaderComponent, AlertComponent, AttachmentActionsComponent, AttachmentComponent, BREAKPOINTS, BaseButtonDirective, BreadcrumbItemDirective, BreadcrumbSeparatorDirective, BreadcrumbsComponent, 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, HeaderTopComponent, HideAtDirective, HorizontalPushHandler, HorizontalStepperComponent, HorizontalStepperItemComponent, IconComponent, InfoButtonComponent, InfoTooltipComponent, InputGroupComponent, InputGroupPrefixDirective, InputGroupSuffixDirective, LANGUAGE_COOKIE_NAME, LANGUAGE_FALLBACK_VALUE, LabelComponent, LabelRowComponent, LinkComponent, ListComponent, MODAL_DATA, MODAL_SIZE, ModalComponent, ModalContentComponent, ModalFooterComponent, ModalHeaderComponent, ModalRef, ModalService, NumberFieldComponent, PaginationComponent, PopoverComponent, PopoverContentComponent, PopoverTriggerDirective, ProgressBarComponent, RadioCardComponent, RadioCardGroupComponent, RadioComponent, RadioGroupComponent, RowComponent, ScrollFadeComponent, SearchComponent, SelectComponent, SelectOptionTemplateDirective, SelectTooltipTemplateDirective, SelectValueTemplateDirective, SeparatorComponent, ShowAtDirective, SideNavComponent, SideNavDropdownComponent, SideNavDropdownGroupComponent, SideNavDropdownItemComponent, SideNavGroupTitleComponent, SideNavItemComponent, SideNavOverlayComponent, SideNavToggleComponent, SliderComponent, SpecialOptionControls, SpinnerComponent, StatusBadgeComponent, StatusIndicatorComponent, TAG_GAP, TEDI_FORM_FIELD_CONTROL, TEDI_INPUT_GROUP, 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 };
9584
+ export type { AccordionInputs, AlertRole, AlertSize, AlertTitleType, AlertType, AlertVariant, AlignItems, AlignSelf, ArrowOffset, ArrowType, AttachmentDirection, BreadcrumbsInputs, BreadcrumbsVariant, 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, HeaderLanguageLabelPosition, HeaderLoginInputs, HeaderLoginSize, HeaderLogoutInputs, HeaderLogoutSize, HeaderProfileInputs, HeaderProfileSize, HeaderSearchMobileLabels, HeaderSearchMobileVariant, HeaderTopAlignment, HeaderTopInputs, HorizontalStepperBackground, IconBackgroundColor, IconColor, IconSize, IconType, IconVariant, InputGroupContext, 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, SearchButton, SearchSize, SelectInputSize, SelectOption, SelectOptionContext, SelectOptionGroup, SelectValueContext, SeparatorAxis, SeparatorColor, SeparatorDotSize, SeparatorSpacing, SeparatorSpacingValue, SeparatorThickness, SeparatorVariant, SideNavItemSize, SliderHideLabel, 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, VirtualRow };
9120
9585
  //# sourceMappingURL=index.d.ts.map