@tedi-design-system/angular 7.1.0-rc.9 → 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:
@@ -4117,6 +4188,10 @@ declare class TediTableComponent<TData> {
4117
4188
  protected readonly rowDetailsLabel: Signal<string>;
4118
4189
  protected readonly dragColumnLabel: Signal<string>;
4119
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>;
4120
4195
  /** Currently picked-up column id (during keyboard reordering), or `null`. */
4121
4196
  private readonly _pickedUpColumnId;
4122
4197
  /** Column order snapshot captured when picking up — restored on cancel. */
@@ -4216,6 +4291,14 @@ declare class TediTableComponent<TData> {
4216
4291
  protected readonly isSomePageRowsSelected: Signal<boolean>;
4217
4292
  constructor();
4218
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;
4219
4302
  protected handleRowClick(event: Event, row: Row<TData>): void;
4220
4303
  /**
4221
4304
  * True when the click originated on an interactive control between the event
@@ -4227,6 +4310,7 @@ declare class TediTableComponent<TData> {
4227
4310
  * the row is not interactive or no resolver is provided. */
4228
4311
  protected rowAriaLabelFor(row: Row<TData>): string | null;
4229
4312
  protected rowExpandsOnClick(row: Row<TData>): boolean;
4313
+ protected rowHasNestedInteractive(row: Row<TData>): boolean;
4230
4314
  protected handleRowMouseEnter(row: Row<TData>): void;
4231
4315
  protected handleRowMouseLeave(): void;
4232
4316
  /**
@@ -4344,7 +4428,7 @@ declare class TediTableComponent<TData> {
4344
4428
  };
4345
4429
  }): TableColumnMeta | undefined;
4346
4430
  protected getHeaderAriaSort(column: ReturnType<Table<TData>["getAllLeafColumns"]>[number]): "ascending" | "descending" | "none" | null;
4347
- protected getHeaderLabel(column: ReturnType<Table<TData>["getAllLeafColumns"]>[number]): string | null;
4431
+ protected getSrOnlyHeaderLabel(column: ReturnType<Table<TData>["getAllLeafColumns"]>[number]): string | null;
4348
4432
  protected resolveColumnLabel(column: ReturnType<Table<TData>["getAllLeafColumns"]>[number]): string;
4349
4433
  protected filterLabel(column: ReturnType<Table<TData>["getAllLeafColumns"]>[number]): string;
4350
4434
  protected filterPlaceholder(): string;
@@ -4425,6 +4509,7 @@ declare class TediTableComponent<TData> {
4425
4509
  * nothing.
4426
4510
  */
4427
4511
  private readonly filterDrafts;
4512
+ private readonly filterDraftBaselines;
4428
4513
  /**
4429
4514
  * Normalises `filterable: true | TableFilterOptions | undefined | false`
4430
4515
  * into `TableFilterOptions | null`. `null` means the column did not opt in.
@@ -4452,6 +4537,22 @@ declare class TediTableComponent<TData> {
4452
4537
  protected filterApplyLabel(): string;
4453
4538
  protected filterClearLabel(): string;
4454
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;
4455
4556
  /**
4456
4557
  * Called when the filter trigger button is clicked. If `clearOnClose` is
4457
4558
  * set, the draft is reset to the currently-applied value every time the
@@ -4487,7 +4588,7 @@ declare class TediTableComponent<TData> {
4487
4588
  };
4488
4589
  }, cellContext: CellContext<TData, unknown>): number | null;
4489
4590
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TediTableComponent<any>, never>;
4490
- 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>;
4491
4592
  }
4492
4593
 
4493
4594
  declare const TEDI_TABLE_CONTEXT: InjectionToken<TediTableContextValue<unknown>>;
@@ -4689,6 +4790,14 @@ declare class DropdownItemValueComponent {
4689
4790
  * @default false
4690
4791
  */
4691
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;
4692
4801
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownItemValueComponent, never>;
4693
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>;
4694
4803
  }
@@ -5407,6 +5516,8 @@ declare class DateInputComponent implements AfterViewChecked {
5407
5516
  readonly showClear: _angular_core.Signal<boolean>;
5408
5517
  readonly iconAriaLabel: _angular_core.Signal<string>;
5409
5518
  readonly clearAriaLabel: _angular_core.Signal<string>;
5519
+ /** Moves focus to the text input. Used by the wrapping field. */
5520
+ focusInput(): void;
5410
5521
  handleInput(event: Event): void;
5411
5522
  handleIconClick(): void;
5412
5523
  handleTagRemove(id: string): void;
@@ -5439,6 +5550,12 @@ interface FormFieldControl<T = unknown> {
5439
5550
  * If implemented, the form field can trigger clearing the value.
5440
5551
  */
5441
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;
5442
5559
  }
5443
5560
  /**
5444
5561
  * Injection token used by `tedi-form-field` to obtain
@@ -5535,6 +5652,16 @@ declare class DateFieldComponent implements ControlValueAccessor, FormFieldContr
5535
5652
  * the calendar's year navigation/grid. Leave `undefined` to disable nothing.
5536
5653
  */
5537
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>;
5538
5665
  /**
5539
5666
  * Whitelist of selectable days — an explicit `Date[]` or a predicate
5540
5667
  * `(date) => boolean`. Every other day is disabled.
@@ -5602,6 +5729,12 @@ declare class DateFieldComponent implements ControlValueAccessor, FormFieldContr
5602
5729
  * (custom popover from that breakpoint up).
5603
5730
  */
5604
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>;
5605
5738
  /** Open the calendar in a modal: `true` always, `false` never, breakpoint name → modal below that breakpoint. */
5606
5739
  readonly modal: _angular_core.InputSignal<DateFieldModalInput>;
5607
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. */
@@ -5622,8 +5755,11 @@ declare class DateFieldComponent implements ControlValueAccessor, FormFieldContr
5622
5755
  private readonly breakpointService;
5623
5756
  private readonly modalService;
5624
5757
  private readonly hostEl;
5758
+ private readonly renderer;
5759
+ private readonly document;
5625
5760
  readonly calendar: _angular_core.Signal<CalendarComponent | undefined>;
5626
5761
  readonly dateInput: _angular_core.Signal<DateInputComponent>;
5762
+ private readonly connectedOverlay;
5627
5763
  readonly currentMonth: _angular_core.WritableSignal<Date>;
5628
5764
  readonly overlayOpen: _angular_core.WritableSignal<boolean>;
5629
5765
  private readonly openedBy;
@@ -5631,6 +5767,7 @@ declare class DateFieldComponent implements ControlValueAccessor, FormFieldContr
5631
5767
  private readonly cvaDisabled;
5632
5768
  private readonly formInvalid;
5633
5769
  private modalRef;
5770
+ private scrollListener?;
5634
5771
  private onChange;
5635
5772
  private onTouched;
5636
5773
  readonly fieldDisabled: _angular_core.Signal<boolean>;
@@ -5660,6 +5797,7 @@ declare class DateFieldComponent implements ControlValueAccessor, FormFieldContr
5660
5797
  registerOnTouched(fn: () => void): void;
5661
5798
  setDisabledState(isDisabled: boolean): void;
5662
5799
  setInvalidState(isInvalid: boolean): void;
5800
+ focus(): void;
5663
5801
  clearField(): void;
5664
5802
  handleClear(): void;
5665
5803
  handleIconClick(): void;
@@ -5672,8 +5810,19 @@ declare class DateFieldComponent implements ControlValueAccessor, FormFieldContr
5672
5810
  closeOverlay(): void;
5673
5811
  handleOverlayOutsideClick(event: MouseEvent): void;
5674
5812
  handleOverlayAttached(): void;
5813
+ handleOverlayDetached(): void;
5675
5814
  handleOverlayKeydown(event: KeyboardEvent): void;
5676
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;
5677
5826
  private openNativePicker;
5678
5827
  private openModal;
5679
5828
  private handleNativeInputChange;
@@ -5687,7 +5836,7 @@ declare class DateFieldComponent implements ControlValueAccessor, FormFieldContr
5687
5836
  private toIsoDate;
5688
5837
  private queryNativeInput;
5689
5838
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateFieldComponent, never>;
5690
- 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>;
5691
5840
  }
5692
5841
 
5693
5842
  declare class DatePickerCalendarGridComponent {
@@ -5917,6 +6066,11 @@ declare class LabelComponent {
5917
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>;
5918
6067
  }
5919
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
+
5920
6074
  type NumberFieldSize = "default" | "small";
5921
6075
  declare class NumberFieldComponent implements ControlValueAccessor {
5922
6076
  /**
@@ -5977,6 +6131,11 @@ declare class NumberFieldComponent implements ControlValueAccessor {
5977
6131
  * @default false
5978
6132
  */
5979
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>;
5980
6139
  inputRef: ElementRef<HTMLInputElement>;
5981
6140
  private formDisabled;
5982
6141
  private onChange;
@@ -5999,7 +6158,186 @@ declare class NumberFieldComponent implements ControlValueAccessor {
5999
6158
  handleInputChange(event: Event): void;
6000
6159
  handleBlur(): void;
6001
6160
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NumberFieldComponent, never>;
6002
- 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>;
6003
6341
  }
6004
6342
 
6005
6343
  /**
@@ -6068,64 +6406,24 @@ declare class SelectValueTemplateDirective<T = unknown> {
6068
6406
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectValueTemplateDirective<any>, never>;
6069
6407
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectValueTemplateDirective<any>, "[tediSelectValue]", never, {}, {}, never, never, true, never>;
6070
6408
  }
6071
-
6072
- type InputSize = "small" | "large" | "default";
6073
- type InputState = "valid" | "error" | "default";
6074
- type ValidationState = "invalid" | "valid" | "neutral";
6075
- interface FormFieldIcon {
6076
- name: string;
6077
- size?: IconSize;
6078
- color?: IconColor;
6079
- type?: IconType;
6080
- variant?: IconVariant;
6081
- }
6082
- declare class FormFieldComponent implements AfterContentInit {
6083
- /**
6084
- * The size of the form field.
6085
- * @default "default"
6086
- */
6087
- size: _angular_core.InputSignal<InputSize>;
6088
- /**
6089
- * Icon name or configuration object.
6090
- */
6091
- icon: _angular_core.InputSignal<string | FormFieldIcon | undefined>;
6092
- /**
6093
- * Whether the form field includes a clear button.
6094
- * @default false
6095
- */
6096
- clearable: _angular_core.InputSignal<boolean>;
6097
- /**
6098
- * Custom CSS classes for the input.
6099
- */
6100
- inputClass: _angular_core.InputSignal<string | null>;
6101
- control?: FormFieldControl;
6102
- ngControl?: NgControl;
6103
- feedback?: FeedbackTextComponent;
6104
- private readonly destroyRef;
6105
- private readonly inputGroup;
6106
- constructor();
6107
- ngAfterContentInit(): void;
6108
- private updateValidationState;
6109
- private computeInvalid;
6110
- readonly resolvedIcon: _angular_core.Signal<FormFieldIcon | undefined>;
6111
- readonly validationState: _angular_core.Signal<ValidationState>;
6112
- showClearButton: _angular_core.Signal<boolean>;
6113
- readonly isDisabled: _angular_core.Signal<boolean>;
6114
- readonly hostClasses: _angular_core.Signal<{
6115
- "tedi-form-field": boolean;
6116
- "tedi-form-field--valid": boolean;
6117
- "tedi-form-field--invalid": boolean;
6118
- "tedi-form-field--disabled": boolean;
6119
- "tedi-form-field--small": boolean;
6120
- "tedi-form-field--large": boolean;
6121
- "tedi-form-field--with-icon": boolean;
6122
- }>;
6123
- readonly inputClasses: _angular_core.Signal<{
6124
- "tedi-form-field__input": boolean;
6125
- }>;
6126
- clear(): void;
6127
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormFieldComponent, never>;
6128
- 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>;
6129
6427
  }
6130
6428
 
6131
6429
  type SelectInputSize = Exclude<InputSize, "large">;
@@ -6140,6 +6438,13 @@ interface SelectOptionGroup<T = unknown> {
6140
6438
  label: string;
6141
6439
  options: SelectOption<T>[];
6142
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
+ };
6143
6448
  type GroupByFn<T = unknown> = (item: T) => string | undefined;
6144
6449
  type CompareWithFn<T = unknown> = (a: T, b: T) => boolean;
6145
6450
  declare enum SpecialOptionControls {
@@ -6158,7 +6463,8 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
6158
6463
  label: _angular_core.InputSignal<string | undefined>;
6159
6464
  /**
6160
6465
  * When set, renders an info button next to the label that reveals this text
6161
- * 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.
6162
6468
  */
6163
6469
  tooltip: _angular_core.InputSignal<string | undefined>;
6164
6470
  /**
@@ -6264,8 +6570,13 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
6264
6570
  */
6265
6571
  multiRow: _angular_core.InputSignal<boolean>;
6266
6572
  /**
6267
- * Which end a selected tag's label truncates from when it doesn't fit.
6268
- * `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.
6269
6580
  * @default false
6270
6581
  */
6271
6582
  tagEllipsis: _angular_core.InputSignal<TagEllipsis>;
@@ -6297,6 +6608,11 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
6297
6608
  * When not set, the dropdown height is calculated based on available viewport space.
6298
6609
  */
6299
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>;
6300
6616
  /**
6301
6617
  * Layout type for the dropdown options.
6302
6618
  * - `"menu"` (default): vertical list of options.
@@ -6306,6 +6622,28 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
6306
6622
  * @default "menu"
6307
6623
  */
6308
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>;
6309
6647
  /**
6310
6648
  * Whether the select has a search input for filtering options.
6311
6649
  * @default false
@@ -6368,9 +6706,29 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
6368
6706
  visibleTagsCount: _angular_core.WritableSignal<number | null>;
6369
6707
  searchTerm: _angular_core.WritableSignal<string>;
6370
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;
6371
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;
6372
6728
  listboxRef: _angular_core.Signal<ElementRef<any> | undefined>;
6373
6729
  cdkListboxRef: _angular_core.Signal<CdkListbox<any> | undefined>;
6730
+ viewport: _angular_core.Signal<CdkVirtualScrollViewport | undefined>;
6731
+ virtualListboxRef: _angular_core.Signal<ElementRef<any> | undefined>;
6374
6732
  connectedOverlay: _angular_core.Signal<CdkConnectedOverlay | undefined>;
6375
6733
  triggerRef: _angular_core.Signal<ElementRef<any> | undefined>;
6376
6734
  searchInputRef: _angular_core.Signal<ElementRef<any> | undefined>;
@@ -6378,8 +6736,12 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
6378
6736
  tagRefs: _angular_core.Signal<readonly ElementRef<any>[]>;
6379
6737
  hostRef: ElementRef<any>;
6380
6738
  private ngZone;
6739
+ private renderer;
6740
+ private document;
6741
+ private scrollListener?;
6381
6742
  optionTemplate: _angular_core.Signal<SelectOptionTemplateDirective<any> | undefined>;
6382
6743
  valueTemplate: _angular_core.Signal<SelectValueTemplateDirective<any> | undefined>;
6744
+ tooltipTemplate: _angular_core.Signal<SelectTooltipTemplateDirective | undefined>;
6383
6745
  normalizedOptions: _angular_core.Signal<SelectOption<T>[]>;
6384
6746
  filteredOptions: _angular_core.Signal<SelectOption<T>[]>;
6385
6747
  optionGroups: _angular_core.Signal<SelectOptionGroup<T>[]>;
@@ -6389,6 +6751,19 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
6389
6751
  showSingleSelectedValue: _angular_core.Signal<boolean>;
6390
6752
  allOptionsSelected: _angular_core.Signal<boolean>;
6391
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>;
6392
6767
  ngAfterContentChecked(): void;
6393
6768
  ngAfterViewChecked(): void;
6394
6769
  onWindowResize(): void;
@@ -6410,11 +6785,47 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
6410
6785
  onArrowClick(event: Event): void;
6411
6786
  onTriggerEnter(): void;
6412
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;
6413
6792
  private static readonly KEY_CODES;
6414
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;
6415
6824
  private openDropdown;
6416
6825
  private calculateDropdownMaxHeight;
6417
6826
  private closeDropdown;
6827
+ private setupScrollListener;
6828
+ private cleanupScrollListener;
6418
6829
  handleValueChange(event: {
6419
6830
  value: readonly unknown[];
6420
6831
  }): void;
@@ -6446,7 +6857,7 @@ declare class SelectComponent<T = unknown> implements AfterContentChecked, After
6446
6857
  registerOnTouched(fn: () => void): void;
6447
6858
  setDisabledState(isDisabled: boolean): void;
6448
6859
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectComponent<any>, never>;
6449
- 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>;
6450
6861
  }
6451
6862
 
6452
6863
  type SliderHideLabel = boolean | "keep-space";
@@ -6620,6 +7031,11 @@ declare class ToggleComponent implements ControlValueAccessor {
6620
7031
  * @default false
6621
7032
  */
6622
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>;
6623
7039
  inputRef: ElementRef<HTMLInputElement>;
6624
7040
  private onChange;
6625
7041
  private onTouched;
@@ -6632,7 +7048,7 @@ declare class ToggleComponent implements ControlValueAccessor {
6632
7048
  classes: _angular_core.Signal<string>;
6633
7049
  iconColor: _angular_core.Signal<IconColor>;
6634
7050
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToggleComponent, never>;
6635
- 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>;
6636
7052
  }
6637
7053
 
6638
7054
  /**
@@ -6735,7 +7151,7 @@ declare class TextFieldComponent implements ControlValueAccessor, FormFieldContr
6735
7151
  * Disables the input from a parent template (e.g. a wrapping field component).
6736
7152
  * Combined with the reactive-forms disabled state and any input-group state.
6737
7153
  */
6738
- readonly disabledInput: _angular_core.InputSignal<boolean>;
7154
+ readonly disabledInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
6739
7155
  readonly disabled: _angular_core.Signal<boolean>;
6740
7156
  readonly invalid: _angular_core.WritableSignal<boolean>;
6741
7157
  setInvalidState(isInvalid: boolean): void;
@@ -6750,6 +7166,7 @@ declare class TextFieldComponent implements ControlValueAccessor, FormFieldContr
6750
7166
  setDisabledState(isDisabled: boolean): void;
6751
7167
  handleInputChange(event: Event): void;
6752
7168
  handleBlur(): void;
7169
+ focus(): void;
6753
7170
  clearField(): void;
6754
7171
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextFieldComponent, never>;
6755
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>;
@@ -6973,6 +7390,7 @@ declare class TimeFieldComponent implements ControlValueAccessor, FormFieldContr
6973
7390
  handleInput(event: Event): void;
6974
7391
  handleBlur(): void;
6975
7392
  clearInput(): void;
7393
+ focus(): void;
6976
7394
  clearField(): void;
6977
7395
  openNativePicker(): void;
6978
7396
  onInputClick(event: MouseEvent): void;
@@ -7312,12 +7730,16 @@ declare class ScrollFadeComponent implements AfterViewInit, OnDestroy {
7312
7730
  readonly fadePosition: _angular_core.InputSignal<ScrollFadePosition>;
7313
7731
  /** Scrollbar style. */
7314
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>;
7315
7735
  /** Emitted when scrolled to the top. */
7316
7736
  readonly scrolledToTop: _angular_core.OutputEmitterRef<void>;
7317
7737
  /** Emitted when scrolled to the bottom. */
7318
7738
  readonly scrolledToBottom: _angular_core.OutputEmitterRef<void>;
7739
+ private readonly translationService;
7319
7740
  private readonly innerRef;
7320
7741
  private resizeObserver;
7742
+ readonly _defaultLabel: _angular_core.Signal<string>;
7321
7743
  private readonly fade;
7322
7744
  readonly classes: _angular_core.Signal<string>;
7323
7745
  readonly innerClasses: _angular_core.Signal<string>;
@@ -7326,7 +7748,7 @@ declare class ScrollFadeComponent implements AfterViewInit, OnDestroy {
7326
7748
  ngOnDestroy(): void;
7327
7749
  private updateFade;
7328
7750
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScrollFadeComponent, never>;
7329
- 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>;
7330
7752
  }
7331
7753
 
7332
7754
  type SeparatorAxis = "horizontal" | "vertical";
@@ -8073,8 +8495,7 @@ declare class HeaderRoleComponent {
8073
8495
  closeIfOtherRoleActive(active: unknown, isOpen: boolean): void;
8074
8496
  handleMobileOpen(): void;
8075
8497
  handleSelectRepresentative(r: Representative): void;
8076
- handleInputChange(event: Event): void;
8077
- trackById: (_: number, r: Representative) => string;
8498
+ handleInputChange(value: string): void;
8078
8499
  protected resolveIcon(icon: string | RepresentativeIcon | undefined): {
8079
8500
  name: string;
8080
8501
  size: IconSize;
@@ -8556,12 +8977,16 @@ declare class TabsComponent {
8556
8977
  }
8557
8978
 
8558
8979
  /**
8559
- * A single tab button inside `tedi-tabs-list`. Applied to a native `<button>`
8560
- * 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.
8561
8984
  */
8562
8985
  declare class TabsTriggerComponent {
8563
8986
  private readonly tabs;
8564
8987
  private readonly host;
8988
+ /** Whether the trigger is rendered as an anchor (`<a>`) rather than a button. */
8989
+ readonly isAnchor: boolean;
8565
8990
  /**
8566
8991
  * Unique identifier for this tab. Used as the element id and to link to the
8567
8992
  * corresponding `tedi-tabs-content` panel (`aria-controls="{id}-panel"`).
@@ -8572,15 +8997,17 @@ declare class TabsTriggerComponent {
8572
8997
  /** Whether the tab is disabled. */
8573
8998
  readonly disabled: _angular_core.InputSignal<boolean>;
8574
8999
  readonly isSelected: _angular_core.Signal<boolean>;
9000
+ readonly tabIndex: _angular_core.Signal<0 | -1>;
8575
9001
  /** Plain-text label, used as the accessible name of the overflow dropdown item. */
8576
9002
  get label(): string;
8577
9003
  get contentNodes(): Node[];
8578
9004
  /** Scrolls this trigger into view within a horizontally scrolling tablist. */
8579
9005
  scrollIntoView(): void;
8580
- handleClick(): void;
9006
+ handleClick(event?: Event): void;
9007
+ private opensInNewBrowsingContext;
8581
9008
  handleKeydown(event: KeyboardEvent): void;
8582
9009
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabsTriggerComponent, never>;
8583
- 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>;
8584
9011
  }
8585
9012
 
8586
9013
  type TabsOverflowMode = "dropdown" | "scroll";
@@ -8928,6 +9355,35 @@ declare class TooltipContentComponent {
8928
9355
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TooltipContentComponent, "tedi-tooltip-content", never, { "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
8929
9356
  }
8930
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
+
8931
9387
  type PopoverWidth = "none" | "small" | "medium" | "large";
8932
9388
  declare class PopoverContentComponent {
8933
9389
  /**
@@ -9124,6 +9580,6 @@ declare function isValidTime(time: string | null | undefined): boolean;
9124
9580
  */
9125
9581
  declare function normalizeTime(input: string): string | null;
9126
9582
 
9127
- 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 };
9128
- 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 };
9129
9585
  //# sourceMappingURL=index.d.ts.map