@tedi-design-system/angular 7.2.0-rc.4 → 8.0.0-rc.1

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,11 +1,11 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { AfterContentChecked, AfterViewInit, InputSignal, Signal, PipeTransform, OnInit, OnDestroy, TemplateRef, ElementRef, Injector, InjectionToken, WritableSignal, AfterViewChecked, AfterContentInit, QueryList, EnvironmentProviders } from '@angular/core';
2
+ import { AfterContentChecked, AfterViewInit, InputSignal, Signal, PipeTransform, OnInit, OnDestroy, TemplateRef, ElementRef, Injector, WritableSignal, InjectionToken, 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
- import { ControlValueAccessor, NgControl } from '@angular/forms';
5
+ import { ControlValueAccessor } from '@angular/forms';
6
6
  import * as _tanstack_table_core from '@tanstack/table-core';
7
7
  import { CdkDragDrop } from '@angular/cdk/drag-drop';
8
- import { Table, VisibilityState, ColumnOrderState, ColumnSizingState, RowSelectionState, ExpandedState, ColumnFiltersState, SortingState, PaginationState, ColumnDef, CellContext, Row, Column } from '@tanstack/angular-table';
8
+ import { Table, VisibilityState, ColumnOrderState, ColumnSizingState, RowSelectionState, ExpandedState, ColumnFiltersState, SortingState, PaginationState, Column, ColumnDef, CellContext, Row } from '@tanstack/angular-table';
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';
@@ -3208,6 +3208,13 @@ declare class CalendarComponent implements ControlValueAccessor {
3208
3208
  }
3209
3209
 
3210
3210
  type PaginationBackground = "white" | "transparent";
3211
+ /**
3212
+ * Horizontal alignment of the results / pager / page-size slots.
3213
+ * - `'between'` (default) — spread across the full width
3214
+ * - `'left'` — grouped at the start
3215
+ * - `'right'` — grouped at the end
3216
+ */
3217
+ type PaginationAlign = "between" | "left" | "right";
3211
3218
  /**
3212
3219
  * Visibility toggle for the results / page-size / pager / arrow slots.
3213
3220
  * - `true` — always hidden
@@ -3225,6 +3232,18 @@ type PaginationVisibility = boolean | "sm" | "md" | "lg" | "xl" | "xxl";
3225
3232
  * - `'none'` — no divider, useful when the surrounding container already has one
3226
3233
  */
3227
3234
  type PaginationDividerPosition = "top" | "bottom" | "none";
3235
+ /**
3236
+ * Layout inputs that can be overridden per breakpoint via the `xs`–`xxl`
3237
+ * inputs. Applied mobile-first: an override set on `md` takes effect at `md`
3238
+ * and every larger breakpoint, on top of the base inputs.
3239
+ */
3240
+ interface PaginationBreakpointInputs {
3241
+ align?: PaginationAlign;
3242
+ showArrowLabels?: boolean;
3243
+ arrowVariant?: ButtonVariant;
3244
+ dividerPosition?: PaginationDividerPosition;
3245
+ background?: PaginationBackground;
3246
+ }
3228
3247
  type PaginationItemType = "page" | "previous" | "next" | "ellipsis";
3229
3248
  /**
3230
3249
  * A labelled page-size option. Use it alongside plain numbers in
@@ -3409,6 +3428,40 @@ declare class PopoverComponent {
3409
3428
  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>;
3410
3429
  }
3411
3430
 
3431
+ type PopoverWidthPreset = "none" | "small" | "medium" | "large";
3432
+ /**
3433
+ * A preset, or any CSS length (`"20rem"`, `"340px"`, `"min(90vw, 30rem)"`) for
3434
+ * a panel the presets don't cover. `(string & {})` keeps the preset
3435
+ * autocomplete alive while still accepting an arbitrary length.
3436
+ */
3437
+ type PopoverWidth = PopoverWidthPreset | (string & {});
3438
+ declare class PopoverContentComponent {
3439
+ /**
3440
+ * The width of the popover: a preset ('none', 'small', 'medium', 'large') or
3441
+ * any CSS length ('20rem'). 'none' sizes the panel to its content.
3442
+ * @default small
3443
+ */
3444
+ maxWidth: _angular_core.InputSignal<PopoverWidth>;
3445
+ /**
3446
+ * Heading title of the content
3447
+ */
3448
+ title: _angular_core.InputSignal<string>;
3449
+ /**
3450
+ * Should content show close button?
3451
+ * @default false
3452
+ */
3453
+ showClose: _angular_core.InputSignal<boolean>;
3454
+ private readonly popover;
3455
+ titleId: string;
3456
+ private readonly isPresetWidth;
3457
+ /** Widths outside the preset scale are applied inline. */
3458
+ readonly customWidth: _angular_core.Signal<PopoverWidth | null>;
3459
+ classes: _angular_core.Signal<string>;
3460
+ handleClose(): void;
3461
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverContentComponent, never>;
3462
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PopoverContentComponent, "tedi-popover-content", never, { "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
3463
+ }
3464
+
3412
3465
  /**
3413
3466
  * Marker directive that lets consumers fully replace the default
3414
3467
  * "X results" label inside `<tedi-pagination>`.
@@ -3473,6 +3526,14 @@ declare class PaginationComponent {
3473
3526
  * @default 'top'
3474
3527
  */
3475
3528
  readonly dividerPosition: _angular_core.InputSignal<PaginationDividerPosition>;
3529
+ /**
3530
+ * Horizontal alignment of the results / pager / page-size slots. `'left'`
3531
+ * groups them at the start instead of spreading them across the full width.
3532
+ * Override per breakpoint via the `xs`–`xxl` inputs (e.g. `align="left"` with
3533
+ * `[md]="{ align: 'between' }"` reads left on mobile, spread on desktop).
3534
+ * @default 'between'
3535
+ */
3536
+ readonly align: _angular_core.InputSignal<PaginationAlign>;
3476
3537
  /**
3477
3538
  * Hide the "X results" label even when `totalItems` is set or content is
3478
3539
  * projected via `[tediPaginationResults]`. Pass a breakpoint name to hide
@@ -3536,10 +3597,18 @@ declare class PaginationComponent {
3536
3597
  * @default true
3537
3598
  */
3538
3599
  readonly showModalTitle: _angular_core.InputSignal<boolean>;
3539
- /** Emits whenever the user navigates to a different page. */
3540
- readonly pageChange: _angular_core.OutputEmitterRef<number>;
3541
- /** Emits when the user picks a different page size. */
3542
- readonly pageSizeChange: _angular_core.OutputEmitterRef<number>;
3600
+ /**
3601
+ * Per-breakpoint overrides for the layout inputs (`align`, `showArrowLabels`,
3602
+ * `arrowVariant`, `dividerPosition`, `background`). Applied mobile-first: an
3603
+ * override set here takes effect at this breakpoint and every larger one, on
3604
+ * top of the base inputs.
3605
+ */
3606
+ readonly xs: _angular_core.InputSignal<PaginationBreakpointInputs | undefined>;
3607
+ readonly sm: _angular_core.InputSignal<PaginationBreakpointInputs | undefined>;
3608
+ readonly md: _angular_core.InputSignal<PaginationBreakpointInputs | undefined>;
3609
+ readonly lg: _angular_core.InputSignal<PaginationBreakpointInputs | undefined>;
3610
+ readonly xl: _angular_core.InputSignal<PaginationBreakpointInputs | undefined>;
3611
+ readonly xxl: _angular_core.InputSignal<PaginationBreakpointInputs | undefined>;
3543
3612
  /** Detects the `[tediPaginationResults]` content-projection slot, if any. */
3544
3613
  protected readonly customResults: _angular_core.Signal<TediPaginationResultsDirective | undefined>;
3545
3614
  private readonly translationService;
@@ -3549,6 +3618,16 @@ declare class PaginationComponent {
3549
3618
  protected readonly useCompactPicker: _angular_core.Signal<boolean>;
3550
3619
  protected readonly pageSizeInputId: string;
3551
3620
  protected readonly pageSizeLabelId: string;
3621
+ /**
3622
+ * Base layout inputs merged with the active `xs`–`xxl` overrides for the
3623
+ * current breakpoint. Read these (not the raw inputs) anywhere the value can
3624
+ * be overridden per breakpoint.
3625
+ */
3626
+ protected readonly breakpointInputs: _angular_core.Signal<PaginationBreakpointInputs>;
3627
+ /** Resolved arrow variant (base merged with breakpoint overrides). */
3628
+ protected readonly resolvedArrowVariant: _angular_core.Signal<ButtonVariant>;
3629
+ /** Resolved visible-arrow-labels flag (base merged with breakpoint overrides). */
3630
+ protected readonly resolvedShowArrowLabels: _angular_core.Signal<boolean>;
3552
3631
  protected readonly hostClasses: _angular_core.Signal<string>;
3553
3632
  protected readonly currentPage: _angular_core.Signal<number>;
3554
3633
  protected readonly items: _angular_core.Signal<PaginationItem[]>;
@@ -3611,11 +3690,22 @@ declare class PaginationComponent {
3611
3690
  protected openPageSizePicker(): void;
3612
3691
  private openPickerModal;
3613
3692
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PaginationComponent, never>;
3614
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PaginationComponent, "tedi-pagination", never, { "pageCount": { "alias": "pageCount"; "required": true; "isSignal": true; }; "page": { "alias": "page"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "boundaryCount": { "alias": "boundaryCount"; "required": false; "isSignal": true; }; "siblingCount": { "alias": "siblingCount"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "background": { "alias": "background"; "required": false; "isSignal": true; }; "dividerPosition": { "alias": "dividerPosition"; "required": false; "isSignal": true; }; "hideResults": { "alias": "hideResults"; "required": false; "isSignal": true; }; "hidePageSize": { "alias": "hidePageSize"; "required": false; "isSignal": true; }; "hidePager": { "alias": "hidePager"; "required": false; "isSignal": true; }; "hideArrows": { "alias": "hideArrows"; "required": false; "isSignal": true; }; "disableArrowsAtBoundary": { "alias": "disableArrowsAtBoundary"; "required": false; "isSignal": true; }; "arrowVariant": { "alias": "arrowVariant"; "required": false; "isSignal": true; }; "showArrowLabels": { "alias": "showArrowLabels"; "required": false; "isSignal": true; }; "previousIcon": { "alias": "previousIcon"; "required": false; "isSignal": true; }; "nextIcon": { "alias": "nextIcon"; "required": false; "isSignal": true; }; "showModalTitle": { "alias": "showModalTitle"; "required": false; "isSignal": true; }; }, { "page": "pageChange"; "pageSize": "pageSizeChange"; "pageChange": "pageChange"; "pageSizeChange": "pageSizeChange"; }, ["customResults"], ["[tediPaginationResults]"], true, never>;
3693
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PaginationComponent, "tedi-pagination", never, { "pageCount": { "alias": "pageCount"; "required": true; "isSignal": true; }; "page": { "alias": "page"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "boundaryCount": { "alias": "boundaryCount"; "required": false; "isSignal": true; }; "siblingCount": { "alias": "siblingCount"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "background": { "alias": "background"; "required": false; "isSignal": true; }; "dividerPosition": { "alias": "dividerPosition"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "hideResults": { "alias": "hideResults"; "required": false; "isSignal": true; }; "hidePageSize": { "alias": "hidePageSize"; "required": false; "isSignal": true; }; "hidePager": { "alias": "hidePager"; "required": false; "isSignal": true; }; "hideArrows": { "alias": "hideArrows"; "required": false; "isSignal": true; }; "disableArrowsAtBoundary": { "alias": "disableArrowsAtBoundary"; "required": false; "isSignal": true; }; "arrowVariant": { "alias": "arrowVariant"; "required": false; "isSignal": true; }; "showArrowLabels": { "alias": "showArrowLabels"; "required": false; "isSignal": true; }; "previousIcon": { "alias": "previousIcon"; "required": false; "isSignal": true; }; "nextIcon": { "alias": "nextIcon"; "required": false; "isSignal": true; }; "showModalTitle": { "alias": "showModalTitle"; "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; }; }, { "page": "pageChange"; "pageSize": "pageSizeChange"; }, ["customResults"], ["[tediPaginationResults]"], true, never>;
3615
3694
  }
3616
3695
 
3696
+ type InputKeys<TComponent> = keyof {
3697
+ [K in keyof TComponent as TComponent[K] extends InputSignal<infer _> ? K : never]: TComponent[K];
3698
+ };
3699
+ type InputValue<TComponent, K extends keyof TComponent> = TComponent[K] extends InputSignal<infer U> ? U : never;
3700
+ /**
3701
+ * The inputs of a component as a plain object type. Inputs that accept
3702
+ * `undefined` come out optional, so a caller only has to name the ones that
3703
+ * matter.
3704
+ */
3617
3705
  type ComponentInputs<TComponent> = {
3618
- [K in keyof TComponent as TComponent[K] extends InputSignal<infer _> ? K : never]: TComponent[K] extends InputSignal<infer U> ? U : never;
3706
+ [K in InputKeys<TComponent> as undefined extends InputValue<TComponent, K> ? K : never]?: InputValue<TComponent, K>;
3707
+ } & {
3708
+ [K in InputKeys<TComponent> as undefined extends InputValue<TComponent, K> ? never : K]: InputValue<TComponent, K>;
3619
3709
  };
3620
3710
 
3621
3711
  type TableSize = "medium" | "small";
@@ -3625,6 +3715,13 @@ type TableSize = "medium" | "small";
3625
3715
  * the selection checkbox before the expand chevron).
3626
3716
  */
3627
3717
  type TableControlColumn = "drag" | "select" | "expand";
3718
+ /**
3719
+ * An entry in `controlColumnOrder`: a control column, or the `"content"`
3720
+ * sentinel marking where the data columns sit. Controls listed after
3721
+ * `"content"` render as trailing columns (after the data); everything else is
3722
+ * leading. Omit the sentinel to keep all controls leading.
3723
+ */
3724
+ type TableControlColumnOrder = TableControlColumn | "content";
3628
3725
  /** Phases of keyboard-driven column reordering. */
3629
3726
  type ColumnReorderPhase = "idle" | "picked-up" | "moving";
3630
3727
  /**
@@ -3720,6 +3817,12 @@ interface TableFilterOptions {
3720
3817
  * @default false
3721
3818
  */
3722
3819
  clearOnClose?: boolean;
3820
+ /**
3821
+ * Popover width for this column, overriding the table's
3822
+ * `filterPopoverWidth`. Use it when one filter control needs more room than
3823
+ * the rest (a date range, a wide option list).
3824
+ */
3825
+ popoverWidth?: PopoverWidth;
3723
3826
  }
3724
3827
  /**
3725
3828
  * Context exposed by the built-in filter popover to the consumer's
@@ -3749,6 +3852,21 @@ interface TediTableFilterContext<TValue = unknown, TData = unknown> {
3749
3852
  /** TanStack `Column` for the column whose filter popover is open. */
3750
3853
  column: Column<TData>;
3751
3854
  }
3855
+ /**
3856
+ * Data passed (via `MODAL_DATA`) to the filter modal rendered below the
3857
+ * `filterModalBreakpoint`. Carries the consumer's filter template plus the
3858
+ * labels and context builder the modal needs to render and commit the filter.
3859
+ */
3860
+ interface TableFilterModalData {
3861
+ /** Column label shown as the modal title. */
3862
+ columnLabel: string;
3863
+ applyLabel: string;
3864
+ clearLabel: string;
3865
+ /** Consumer-provided filter template. */
3866
+ template: TemplateRef<TediTableFilterContext<unknown, unknown>>;
3867
+ /** Builds the filter context, wiring `apply` / `clear` to close the modal. */
3868
+ buildContext: (close: () => void) => TediTableFilterContext<unknown, unknown>;
3869
+ }
3752
3870
  /**
3753
3871
  * Angular-only extension to TanStack's `ColumnDef`. Supports body-level row
3754
3872
  * spanning via the `rowSpan` callback and a one-flag opt-in to the built-in
@@ -3842,6 +3960,7 @@ interface ResolvedPaginationSlot {
3842
3960
  siblingCount: number;
3843
3961
  labels: TablePaginationOptions["labels"];
3844
3962
  background: NonNullable<TablePaginationOptions["background"]>;
3963
+ align: NonNullable<TablePaginationOptions["align"]>;
3845
3964
  dividerPosition: NonNullable<TablePaginationOptions["dividerPosition"]>;
3846
3965
  hideResults: NonNullable<TablePaginationOptions["hideResults"]>;
3847
3966
  hidePageSize: NonNullable<TablePaginationOptions["hidePageSize"]>;
@@ -3853,6 +3972,12 @@ interface ResolvedPaginationSlot {
3853
3972
  previousIcon: NonNullable<TablePaginationOptions["previousIcon"]>;
3854
3973
  nextIcon: NonNullable<TablePaginationOptions["nextIcon"]>;
3855
3974
  showModalTitle: boolean;
3975
+ xs: TablePaginationOptions["xs"];
3976
+ sm: TablePaginationOptions["sm"];
3977
+ md: TablePaginationOptions["md"];
3978
+ lg: TablePaginationOptions["lg"];
3979
+ xl: TablePaginationOptions["xl"];
3980
+ xxl: TablePaginationOptions["xxl"];
3856
3981
  }
3857
3982
  declare class TediTableComponent<TData> {
3858
3983
  /** Stable identifier used for synthetic ids. */
@@ -3876,7 +4001,9 @@ declare class TediTableComponent<TData> {
3876
4001
  */
3877
4002
  readonly verticalBorders: _angular_core.InputSignalWithTransform<boolean, unknown>;
3878
4003
  /**
3879
- * Removes the table's outer border and corner radius.
4004
+ * Removes only the table's **outer** border (the frame around the table) and
4005
+ * its corner radius. Borders between rows and columns — including the
4006
+ * `verticalBorders` separators — are unaffected.
3880
4007
  * @default false
3881
4008
  */
3882
4009
  readonly borderless: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -3885,6 +4012,13 @@ declare class TediTableComponent<TData> {
3885
4012
  * @default false
3886
4013
  */
3887
4014
  readonly stickyFirstColumn: _angular_core.InputSignalWithTransform<boolean, unknown>;
4015
+ /**
4016
+ * Freezes the last column in place during horizontal scroll. Mirrors
4017
+ * `stickyFirstColumn` on the trailing edge — useful for keeping a trailing
4018
+ * actions column (e.g. an "Edit" link) visible while the body scrolls.
4019
+ * @default false
4020
+ */
4021
+ readonly stickyLastColumn: _angular_core.InputSignalWithTransform<boolean, unknown>;
3888
4022
  /**
3889
4023
  * Pins `<thead>` to the top during vertical scroll. Requires `maxHeight` to
3890
4024
  * be set so the table has a scroll container.
@@ -3922,7 +4056,10 @@ declare class TediTableComponent<TData> {
3922
4056
  /**
3923
4057
  * Forces the row hover background on (`true`) or off (`false`). When omitted,
3924
4058
  * hover styling tracks whether rows are interactive — on when `interactive`
3925
- * is set or `expandTrigger` is `'row'`, off otherwise.
4059
+ * is set or `expandTrigger` is `'row'`, off otherwise. This only affects the
4060
+ * hover background; the pointer cursor is driven separately by row-level
4061
+ * interactivity (`interactive` / click-to-expand), not by whether a cell
4062
+ * happens to contain a link or button.
3926
4063
  * @default undefined
3927
4064
  */
3928
4065
  readonly rowHover: _angular_core.InputSignal<boolean | undefined>;
@@ -4035,15 +4172,38 @@ declare class TediTableComponent<TData> {
4035
4172
  * No effect when `groupRowsBy` is not set.
4036
4173
  * @default "all"
4037
4174
  */
4038
- readonly rowGroupDividers: _angular_core.InputSignal<"none" | "all" | "between">;
4175
+ readonly rowGroupDividers: _angular_core.InputSignal<"none" | "between" | "all">;
4039
4176
  /**
4040
4177
  * Order of the auto-injected control columns (drag handle, selection
4041
4178
  * checkbox, expand chevron). Only the controls that are actually enabled
4042
- * render; any enabled control omitted from this list is appended at the end.
4043
- * Use it to e.g. place the checkbox before the expand chevron.
4179
+ * render; any enabled control omitted from this list is appended after the
4180
+ * other leading controls. Use it to e.g. place the checkbox before the expand
4181
+ * chevron. Include the `"content"` sentinel to split leading vs trailing: any
4182
+ * control listed after `"content"` renders after the data columns — e.g.
4183
+ * `["content", "expand"]` puts the expand toggle in the last column.
4044
4184
  * @default ["drag", "select", "expand"]
4045
4185
  */
4046
- readonly controlColumnOrder: _angular_core.InputSignal<TableControlColumn[]>;
4186
+ readonly controlColumnOrder: _angular_core.InputSignal<TableControlColumnOrder[]>;
4187
+ /**
4188
+ * Below this breakpoint the column filter opens in a modal instead of the
4189
+ * popover (which can be cramped or drift off-screen on small viewports).
4190
+ * Set `false` to always use the popover.
4191
+ * @default "sm"
4192
+ */
4193
+ readonly filterModalBreakpoint: _angular_core.InputSignal<false | "xs" | "sm" | "md" | "lg" | "xl" | "xxl">;
4194
+ /**
4195
+ * Fullscreen behaviour of the filter modal (see `filterModalBreakpoint`):
4196
+ * `true` always fullscreen, `false` never, a breakpoint = fullscreen below it.
4197
+ * @default false
4198
+ */
4199
+ readonly filterModalFullscreen: _angular_core.InputSignal<_tedi_design_system_angular_tedi.BreakpointFlag>;
4200
+ /**
4201
+ * Width of the column filter popover: a popover preset, or any CSS length
4202
+ * (`"20rem"`). `"none"` lets the panel size to its content. A single column
4203
+ * can opt out through `filterable: { popoverWidth }`.
4204
+ * @default "small"
4205
+ */
4206
+ readonly filterPopoverWidth: _angular_core.InputSignal<PopoverWidth>;
4047
4207
  /**
4048
4208
  * Enables pagination and configures the bottom paginator slot. This is also
4049
4209
  * the source of truth for `pageSize` / `pageSizeOptions` — the top slot
@@ -4174,6 +4334,9 @@ declare class TediTableComponent<TData> {
4174
4334
  protected readonly injector: Injector;
4175
4335
  private readonly platformId;
4176
4336
  private readonly translation;
4337
+ private readonly breakpointService;
4338
+ private readonly modalService;
4339
+ private readonly currentBreakpoint;
4177
4340
  private readonly _hoveredRowId;
4178
4341
  /**
4179
4342
  * Id of the data row currently under the pointer, or `null`. Exposed so
@@ -4354,8 +4517,31 @@ declare class TediTableComponent<TData> {
4354
4517
  }>>;
4355
4518
  /** Sticky `left` (px) for a frozen column; `null` when the column isn't frozen. */
4356
4519
  protected stickyLeft(id: string): number | null;
4520
+ /**
4521
+ * Columns frozen by `stickyLastColumn`, keyed by id: the last content column
4522
+ * plus any trailing control columns (e.g. an expand toggle placed after the
4523
+ * `'content'` sentinel), pinned together as one block. `right` is the
4524
+ * cumulative offset; `start` / `edge` mark the block's right and left edges
4525
+ * (the left edge draws the divider). Empty when `stickyLastColumn` is off.
4526
+ */
4527
+ protected readonly stickyRightColumns: Signal<Map<string, {
4528
+ right: number;
4529
+ start: boolean;
4530
+ edge: boolean;
4531
+ }>>;
4532
+ /** Sticky `right` (px) for a frozen column; `null` when the column isn't frozen. */
4533
+ protected stickyRight(id: string): number | null;
4534
+ /**
4535
+ * Class fragment for the auto-injected control columns. Icon-only controls
4536
+ * (drag / select, and expand without a visible label) drop to reduced padding
4537
+ * and stay as narrow as the control needs; a labeled expand column hugs its
4538
+ * content instead of absorbing the table's slack. `""` otherwise.
4539
+ */
4540
+ protected controlCellClass(id: string): string;
4357
4541
  /** Sticky-column class fragment for a cell (`""` when not frozen). */
4358
4542
  protected stickyLeftClass(id: string): string;
4543
+ /** Sticky-right-column class fragment for a cell (`""` when not frozen). */
4544
+ protected stickyRightClass(id: string): string;
4359
4545
  protected handleRowKeydown(event: KeyboardEvent, row: Row<TData>): void;
4360
4546
  protected handleRowDrop(event: CdkDragDrop<TData[]>): void;
4361
4547
  /** Stable id for a row's reorder handle button — used to restore keyboard
@@ -4413,6 +4599,21 @@ declare class TediTableComponent<TData> {
4413
4599
  column: ReturnType<Table<TData>["getAllLeafColumns"]>[number];
4414
4600
  }): void;
4415
4601
  private readonly scrollContainer;
4602
+ private readonly tableElement;
4603
+ private readonly destroyRef;
4604
+ /**
4605
+ * Elevation shadows only make sense when the body is actually scrolled off
4606
+ * that edge: `hasStartShadow` gates the leading (sticky-first) column shadow,
4607
+ * `hasEndShadow` the trailing (sticky-last) one, and `hasHeaderShadow` the
4608
+ * sticky-header shadow (scrolled down). Toggled from a scroll listener plus a
4609
+ * ResizeObserver so viewport / content-size changes re-measure without a
4610
+ * scroll event.
4611
+ */
4612
+ protected readonly hasStartShadow: WritableSignal<boolean>;
4613
+ protected readonly hasEndShadow: WritableSignal<boolean>;
4614
+ protected readonly hasHeaderShadow: WritableSignal<boolean>;
4615
+ private measureScrollShadows;
4616
+ protected onHorizontalScroll(): void;
4416
4617
  /**
4417
4618
  * Resets the table's own vertical scroll to the top. Only affects the
4418
4619
  * internal scroll container (used when `maxHeight` is set); the horizontal
@@ -4522,6 +4723,7 @@ declare class TediTableComponent<TData> {
4522
4723
  * read as `unknown` in strict templates).
4523
4724
  */
4524
4725
  protected filterTemplateFor(col: Column<TData, unknown>): TemplateRef<TediTableFilterContext<unknown, TData>> | undefined;
4726
+ protected filterPopoverWidthFor(col: Column<TData, unknown>): PopoverWidth;
4525
4727
  /**
4526
4728
  * True when the column opted into the built-in filter affordance
4527
4729
  * (`filterable: true | TableFilterOptions`) AND TanStack reports it can
@@ -4573,6 +4775,21 @@ declare class TediTableComponent<TData> {
4573
4775
  * destructuring.
4574
4776
  */
4575
4777
  protected filterContextFor(col: Column<TData, unknown>, popover: PopoverComponent): TediTableFilterContext<unknown, TData>;
4778
+ /**
4779
+ * Builds the filter context, wiring `apply` / `clear` to commit the draft and
4780
+ * then run `close` (hide the popover, or close the modal — whichever opened
4781
+ * the filter). Shared by the popover and the modal renderers.
4782
+ */
4783
+ private buildFilterContext;
4784
+ /** True when the filter should open as a modal (viewport below
4785
+ * `filterModalBreakpoint`) rather than the popover. */
4786
+ protected readonly filterUsesModal: Signal<boolean>;
4787
+ /**
4788
+ * Opens the column filter in a modal (below `filterModalBreakpoint`). Reuses
4789
+ * the same draft reset (`clearOnClose`) and context as the popover, but
4790
+ * `apply` / `clear` close the modal instead.
4791
+ */
4792
+ protected openFilterModal(col: Column<TData, unknown>): void;
4576
4793
  protected handleFilterApply(col: Column<TData, unknown>, popover: PopoverComponent): void;
4577
4794
  protected handleFilterClear(col: Column<TData, unknown>, popover: PopoverComponent): void;
4578
4795
  /**
@@ -4588,7 +4805,7 @@ declare class TediTableComponent<TData> {
4588
4805
  };
4589
4806
  }, cellContext: CellContext<TData, unknown>): number | null;
4590
4807
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TediTableComponent<any>, 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>;
4808
+ 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; }; "stickyLastColumn": { "alias": "stickyLastColumn"; "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; }; "filterModalBreakpoint": { "alias": "filterModalBreakpoint"; "required": false; "isSignal": true; }; "filterModalFullscreen": { "alias": "filterModalFullscreen"; "required": false; "isSignal": true; }; "filterPopoverWidth": { "alias": "filterPopoverWidth"; "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>;
4592
4809
  }
4593
4810
 
4594
4811
  declare const TEDI_TABLE_CONTEXT: InjectionToken<TediTableContextValue<unknown>>;
@@ -5530,7 +5747,8 @@ declare class DateInputComponent implements AfterViewChecked {
5530
5747
 
5531
5748
  /**
5532
5749
  * Interface implemented by controls that can be used inside `tedi-form-field`.
5533
- * Allows the form field container to interact with the underlying control.
5750
+ * Members are named after Angular's `FormValueControl`
5751
+ * so the same control shape works once Signal Forms is available to us.
5534
5752
  */
5535
5753
  interface FormFieldControl<T = unknown> {
5536
5754
  /**
@@ -5541,21 +5759,32 @@ interface FormFieldControl<T = unknown> {
5541
5759
  * Whether the control is disabled.
5542
5760
  */
5543
5761
  disabled: Signal<boolean>;
5544
- /** Reactive invalid state (driven by FormField) */
5762
+ /**
5763
+ * Whether the control is in an error state. Derived by the control from its
5764
+ * own reactive-forms state, its `invalid` input and its container.
5765
+ */
5545
5766
  invalid: Signal<boolean>;
5546
- /** Called by FormField to update invalid state */
5547
- setInvalidState(isInvalid: boolean): void;
5767
+ touched?: Signal<boolean>;
5768
+ dirty?: Signal<boolean>;
5769
+ required?: Signal<boolean>;
5770
+ maxLength?: Signal<number | undefined>;
5548
5771
  /**
5549
- * Optional method used by the form field clear button.
5550
- * If implemented, the form field can trigger clearing the value.
5772
+ * Clears the value. Implemented by controls that can be cleared, and called
5773
+ * by `tedi-form-field`'s clear button.
5551
5774
  */
5552
- clearField?(): void;
5775
+ reset?(): void;
5553
5776
  /**
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.
5777
+ * Moves focus into the control. Called when the padding around the control is
5778
+ * clicked that area is outside the control's own hit area, so clicking it
5779
+ * would otherwise leave the field unfocused.
5557
5780
  */
5558
5781
  focus?(): void;
5782
+ /**
5783
+ * Receives the ids of the elements describing this control (feedback text,
5784
+ * character counter). The control merges them into its own
5785
+ * `aria-describedby`; nothing is pushed when the control stands alone.
5786
+ */
5787
+ setDescribedBy?(ids: string[]): void;
5559
5788
  }
5560
5789
  /**
5561
5790
  * Injection token used by `tedi-form-field` to obtain
@@ -5563,6 +5792,21 @@ interface FormFieldControl<T = unknown> {
5563
5792
  */
5564
5793
  declare const TEDI_FORM_FIELD_CONTROL: InjectionToken<FormFieldControl<unknown>>;
5565
5794
 
5795
+ type InputSize = "small" | "large" | "default";
5796
+ interface FieldContext {
5797
+ /** The control's own `size` input wins over this. */
5798
+ size: Signal<InputSize>;
5799
+ /** When true the control must never apply its surface, rather than reset it. */
5800
+ ownsSurface: Signal<boolean>;
5801
+ /** From an error feedback text, an exceeded character limit or an input group. */
5802
+ invalid: Signal<boolean>;
5803
+ /** From the projected feedback text — only a wrapper can know this. */
5804
+ valid: Signal<boolean>;
5805
+ /** From an input group that disables everything inside it. */
5806
+ disabled: Signal<boolean>;
5807
+ }
5808
+ declare const TEDI_FIELD_CONTEXT: InjectionToken<FieldContext>;
5809
+
5566
5810
  type DateFieldValue = Date | Date[] | DateRange | null;
5567
5811
  type DateFieldFormatter = (value: DateFieldValue) => string;
5568
5812
  type DateFieldParser = (value: string) => DateFieldValue | undefined;
@@ -5573,7 +5817,9 @@ type DateFieldCalendarTrigger = "input" | "button";
5573
5817
  type DateFieldModalInput = boolean | "sm" | "md" | "lg" | "xl";
5574
5818
  type DateFieldUseNativePicker = boolean | "sm" | "md" | "lg" | "xl";
5575
5819
  type DateFieldSize = "default" | "small";
5576
- declare class DateFieldComponent implements ControlValueAccessor, FormFieldControl<DateFieldValue> {
5820
+ declare class DateFieldComponent implements OnInit, ControlValueAccessor, FormFieldControl<DateFieldValue> {
5821
+ private readonly fieldContext;
5822
+ private readonly derived;
5577
5823
  /**
5578
5824
  * Unique ID for label association and accessibility. Bind the sibling
5579
5825
  * `<label tedi-label [for]>` to the same value.
@@ -5632,8 +5878,16 @@ declare class DateFieldComponent implements ControlValueAccessor, FormFieldContr
5632
5878
  * bind it there too, since DateField owns no label.
5633
5879
  */
5634
5880
  readonly required: _angular_core.InputSignal<boolean>;
5635
- /** Field size — matches the surrounding `tedi-form-field`. */
5636
- readonly size: _angular_core.InputSignal<DateFieldSize>;
5881
+ /**
5882
+ * Field size. Falls back to the size of a wrapping `tedi-form-field` when not
5883
+ * set here.
5884
+ */
5885
+ readonly size: _angular_core.InputSignal<DateFieldSize | undefined>;
5886
+ /**
5887
+ * Forces the error state on, or off, regardless of the reactive-forms state.
5888
+ * Leave unset to let the control derive it.
5889
+ */
5890
+ readonly invalidInput: _angular_core.InputSignal<boolean>;
5637
5891
  /** Disables all dates before this date (inclusive boundary stays enabled). */
5638
5892
  readonly minDate: _angular_core.InputSignal<Date | undefined>;
5639
5893
  /** Disables all dates after this date (inclusive boundary stays enabled). */
@@ -5765,14 +6019,20 @@ declare class DateFieldComponent implements ControlValueAccessor, FormFieldContr
5765
6019
  private readonly openedBy;
5766
6020
  readonly overlayPositions: _angular_core.Signal<ConnectedPosition[]>;
5767
6021
  private readonly cvaDisabled;
5768
- private readonly formInvalid;
5769
6022
  private modalRef;
5770
6023
  private scrollListener?;
5771
6024
  private onChange;
5772
6025
  private onTouched;
5773
6026
  readonly fieldDisabled: _angular_core.Signal<boolean>;
5774
6027
  readonly disabled: _angular_core.Signal<boolean>;
6028
+ readonly touched: _angular_core.Signal<boolean>;
6029
+ readonly dirty: _angular_core.Signal<boolean>;
5775
6030
  readonly invalid: _angular_core.Signal<boolean>;
6031
+ readonly resolvedSize: _angular_core.Signal<InputSize>;
6032
+ readonly paintsSurface: _angular_core.Signal<boolean>;
6033
+ readonly valid: _angular_core.Signal<boolean>;
6034
+ readonly childContext: FieldContext;
6035
+ ngOnInit(): void;
5776
6036
  readonly resolvedDisabledMatchers: _angular_core.Signal<Matcher[]>;
5777
6037
  readonly useNativePickerResolved: _angular_core.Signal<boolean>;
5778
6038
  readonly useNativePickerEffective: _angular_core.Signal<boolean>;
@@ -5796,9 +6056,8 @@ declare class DateFieldComponent implements ControlValueAccessor, FormFieldContr
5796
6056
  registerOnChange(fn: (value: DateFieldValue) => void): void;
5797
6057
  registerOnTouched(fn: () => void): void;
5798
6058
  setDisabledState(isDisabled: boolean): void;
5799
- setInvalidState(isInvalid: boolean): void;
5800
6059
  focus(): void;
5801
- clearField(): void;
6060
+ reset(): void;
5802
6061
  handleClear(): void;
5803
6062
  handleIconClick(): void;
5804
6063
  private togglePicker;
@@ -5836,7 +6095,7 @@ declare class DateFieldComponent implements ControlValueAccessor, FormFieldContr
5836
6095
  private toIsoDate;
5837
6096
  private queryNativeInput;
5838
6097
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateFieldComponent, 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>;
6098
+ 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; }; "invalidInput": { "alias": "invalid"; "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>;
5840
6099
  }
5841
6100
 
5842
6101
  declare class DatePickerCalendarGridComponent {
@@ -6022,6 +6281,13 @@ declare class DatePickerComponent implements OnInit, ControlValueAccessor {
6022
6281
  type FeedbackTextType = "hint" | "valid" | "error";
6023
6282
  type FeedbackTextPosition = "left" | "right";
6024
6283
  declare class FeedbackTextComponent {
6284
+ /**
6285
+ * Id of the element. Generated when not set, so a container can reference this
6286
+ * text from a control's `aria-describedby`.
6287
+ */
6288
+ readonly id: _angular_core.InputSignal<string | null | undefined>;
6289
+ private readonly fallbackId;
6290
+ readonly elementId: _angular_core.Signal<string>;
6025
6291
  /**
6026
6292
  * Helper text
6027
6293
  */
@@ -6040,17 +6306,21 @@ declare class FeedbackTextComponent {
6040
6306
  ariaLive: _angular_core.Signal<"assertive" | "polite">;
6041
6307
  classes: _angular_core.Signal<string>;
6042
6308
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FeedbackTextComponent, never>;
6043
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FeedbackTextComponent, "tedi-feedback-text", never, { "text": { "alias": "text"; "required": true; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
6309
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FeedbackTextComponent, "tedi-feedback-text", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": true; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
6044
6310
  }
6045
6311
 
6046
6312
  type LabelSize = "small" | "default";
6047
6313
  type LabelColor = "primary" | "secondary";
6314
+ type LabelVisuallyHidden = boolean | "reserve-space";
6048
6315
  declare class LabelComponent {
6316
+ private readonly field;
6049
6317
  /**
6050
- * Size of the label.
6318
+ * Size of the label. Falls back to the size of a wrapping `tedi-form-field`,
6319
+ * so the label and the control scale together without being set twice.
6051
6320
  * @default default
6052
6321
  */
6053
- size: _angular_core.InputSignal<LabelSize>;
6322
+ size: _angular_core.InputSignal<LabelSize | undefined>;
6323
+ readonly resolvedSize: _angular_core.Signal<LabelSize>;
6054
6324
  /**
6055
6325
  * Whether label is required.
6056
6326
  * @default false
@@ -6061,9 +6331,16 @@ declare class LabelComponent {
6061
6331
  * @default secondary
6062
6332
  */
6063
6333
  color: _angular_core.InputSignal<LabelColor>;
6334
+ /**
6335
+ * Hides the label visually while keeping it in the accessibility tree, so the
6336
+ * control it names stays named. `"reserve-space"` also keeps the label's line
6337
+ * of layout, to align the field with labelled siblings in the same row.
6338
+ * @default false
6339
+ */
6340
+ visuallyHidden: _angular_core.InputSignal<LabelVisuallyHidden>;
6064
6341
  classes: _angular_core.Signal<string>;
6065
6342
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<LabelComponent, never>;
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>;
6343
+ 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; }; "visuallyHidden": { "alias": "visuallyHidden"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
6067
6344
  }
6068
6345
 
6069
6346
  declare class LabelRowComponent {
@@ -6161,9 +6438,7 @@ declare class NumberFieldComponent implements ControlValueAccessor {
6161
6438
  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
6439
  }
6163
6440
 
6164
- type InputSize = "small" | "large" | "default";
6165
6441
  type InputState = "valid" | "error" | "default";
6166
- type ValidationState = "invalid" | "valid" | "neutral";
6167
6442
  interface FormFieldIcon {
6168
6443
  name: string;
6169
6444
  size?: IconSize;
@@ -6171,23 +6446,27 @@ interface FormFieldIcon {
6171
6446
  type?: IconType;
6172
6447
  variant?: IconVariant;
6173
6448
  }
6174
- declare class FormFieldComponent implements AfterContentInit {
6449
+ type ValidationState = "invalid" | "valid" | "neutral";
6450
+ declare class FormFieldComponent implements FieldContext {
6175
6451
  /**
6176
- * The size of the form field.
6452
+ * Size of the whole field — the label, the control and the box row scale
6453
+ * together. A control's own `size` input overrides it.
6177
6454
  * @default "default"
6178
6455
  */
6179
6456
  size: _angular_core.InputSignal<InputSize>;
6180
6457
  /**
6181
- * Icon name or configuration object.
6458
+ * Icon name, or a configuration object, shown at the end of the field.
6182
6459
  */
6183
6460
  icon: _angular_core.InputSignal<string | FormFieldIcon | undefined>;
6184
6461
  /**
6185
- * Whether the form field includes a clear button.
6462
+ * Whether the field shows a clear button once the control holds a value.
6186
6463
  * @default false
6187
6464
  */
6188
6465
  clearable: _angular_core.InputSignal<boolean>;
6189
6466
  /**
6190
- * Custom CSS classes for the input.
6467
+ * Custom CSS classes for the field box.
6468
+ *
6469
+ * @deprecated Style the control directly — it owns its own surface now.
6191
6470
  */
6192
6471
  inputClass: _angular_core.InputSignal<string | null>;
6193
6472
  /**
@@ -6197,32 +6476,42 @@ declare class FormFieldComponent implements AfterContentInit {
6197
6476
  */
6198
6477
  characterLimit: _angular_core.InputSignal<number | undefined>;
6199
6478
  readonly control: _angular_core.Signal<FormFieldControl<unknown> | undefined>;
6200
- readonly controlElement: _angular_core.Signal<ElementRef<any> | undefined>;
6201
- ngControl?: NgControl;
6202
- feedback?: FeedbackTextComponent;
6203
- feedbackElement?: ElementRef<HTMLElement>;
6204
- private readonly destroyRef;
6479
+ readonly feedback: _angular_core.Signal<FeedbackTextComponent | undefined>;
6205
6480
  private readonly inputGroup;
6206
- private readonly fallbackId;
6481
+ private readonly id;
6207
6482
  constructor();
6208
6483
  /**
6209
- * A textarea has no room for the trailing clear button / icon (per design),
6210
- * so the form field suppresses both when it wraps one.
6484
+ * Inline additions have to render inside the border, next to the control, so
6485
+ * they need a row that carries the surface. Without them the control paints
6486
+ * itself and no box is rendered at all.
6211
6487
  */
6212
- readonly isTextarea: _angular_core.WritableSignal<boolean>;
6213
- ngAfterContentInit(): void;
6214
- private updateValidationState;
6215
- private computeInvalid;
6216
- readonly resolvedIcon: _angular_core.Signal<FormFieldIcon | undefined>;
6488
+ readonly hasBox: _angular_core.Signal<boolean>;
6489
+ readonly ownsSurface: _angular_core.Signal<boolean>;
6490
+ readonly disabled: _angular_core.Signal<boolean>;
6491
+ readonly invalid: _angular_core.Signal<boolean>;
6492
+ readonly valid: _angular_core.Signal<boolean>;
6217
6493
  readonly characterCount: _angular_core.Signal<number>;
6218
6494
  readonly characterCountExceeded: _angular_core.Signal<boolean>;
6219
- /** Base for the generated feedback / counter ids — the control's own id, or a fallback. */
6220
- private get baseId();
6221
6495
  readonly characterCountId: _angular_core.Signal<string | null>;
6222
- private syncAriaDescribedBy;
6496
+ readonly describedByIds: _angular_core.Signal<string[]>;
6223
6497
  readonly validationState: _angular_core.Signal<ValidationState>;
6224
- showClearButton: _angular_core.Signal<boolean>;
6225
6498
  readonly isDisabled: _angular_core.Signal<boolean>;
6499
+ readonly boxClasses: _angular_core.Signal<{
6500
+ "tedi-form-field__box": boolean;
6501
+ "tedi-field-surface": boolean;
6502
+ "tedi-field-surface--invalid": boolean;
6503
+ "tedi-field-surface--valid": boolean;
6504
+ "tedi-field-surface--disabled": boolean;
6505
+ }>;
6506
+ readonly resolvedIcon: _angular_core.Signal<FormFieldIcon | undefined>;
6507
+ readonly iconSize: _angular_core.Signal<IconSize>;
6508
+ readonly showClearButton: _angular_core.Signal<boolean>;
6509
+ clear(): void;
6510
+ /**
6511
+ * The box padding and the layout wrappers around the control are outside its
6512
+ * hit area, so clicking there would leave the field unfocused.
6513
+ */
6514
+ handleBoxMouseDown(event: MouseEvent): void;
6226
6515
  readonly hostClasses: _angular_core.Signal<{
6227
6516
  "tedi-form-field": boolean;
6228
6517
  "tedi-form-field--valid": boolean;
@@ -6230,22 +6519,9 @@ declare class FormFieldComponent implements AfterContentInit {
6230
6519
  "tedi-form-field--disabled": boolean;
6231
6520
  "tedi-form-field--small": boolean;
6232
6521
  "tedi-form-field--large": boolean;
6233
- "tedi-form-field--with-icon": boolean;
6234
- }>;
6235
- readonly inputClasses: _angular_core.Signal<{
6236
- "tedi-form-field__input": boolean;
6237
6522
  }>;
6238
- clear(): void;
6239
- /**
6240
- * The control never fills the whole box — the box padding and the layout
6241
- * wrappers around the control are outside its hit area — so clicking there
6242
- * would otherwise leave the field unfocused. Focus the control instead, unless
6243
- * the click landed on something interactive that handles it itself (the
6244
- * control, the clear/calendar buttons, a tag's close button).
6245
- */
6246
- handleBoxMouseDown(event: MouseEvent): void;
6247
6523
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormFieldComponent, never>;
6248
- 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; }; "characterLimit": { "alias": "characterLimit"; "required": false; "isSignal": true; }; }, {}, ["control", "controlElement", "ngControl", "feedback", "feedbackElement"], ["label[tedi-label]", "input[tedi-text-field], textarea[tedi-textarea], tedi-time-field, tedi-date-field", "tedi-feedback-text", "*"], true, never>;
6524
+ 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; }; "characterLimit": { "alias": "characterLimit"; "required": false; "isSignal": true; }; }, {}, ["control", "feedback"], ["label[tedi-label], tedi-label-row", "*", "tedi-feedback-text", "[tediFormFieldExtra]"], true, never>;
6249
6525
  }
6250
6526
 
6251
6527
  type SearchSize = InputSize;
@@ -6900,6 +7176,7 @@ declare class SliderComponent implements ControlValueAccessor, OnDestroy {
6900
7176
  * @default false
6901
7177
  */
6902
7178
  hideLabel: _angular_core.InputSignal<SliderHideLabel>;
7179
+ readonly labelVisuallyHidden: _angular_core.Signal<LabelVisuallyHidden>;
6903
7180
  /**
6904
7181
  * Marks the field as required.
6905
7182
  * @default false
@@ -7071,6 +7348,15 @@ declare class ToggleComponent implements ControlValueAccessor {
7071
7348
  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>;
7072
7349
  }
7073
7350
 
7351
+ /**
7352
+ * Marks content projected into `tedi-form-field` as an extra addition, rendered
7353
+ * below the feedback row.
7354
+ */
7355
+ declare class FormFieldExtraDirective {
7356
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FormFieldExtraDirective, never>;
7357
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FormFieldExtraDirective, "[tediFormFieldExtra]", never, {}, {}, never, never, true, never>;
7358
+ }
7359
+
7074
7360
  /**
7075
7361
  * Shared behavior for the prefix/suffix addon directives: reads the group's
7076
7362
  * disabled state and detects whether the addon holds plain text (so the
@@ -7148,16 +7434,31 @@ declare class InputGroupComponent implements InputGroupContext {
7148
7434
  protected readonly prefix: _angular_core.Signal<InputGroupPrefixDirective | undefined>;
7149
7435
  protected readonly suffix: _angular_core.Signal<InputGroupSuffixDirective | undefined>;
7150
7436
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<InputGroupComponent, never>;
7151
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputGroupComponent, "tedi-input-group", never, { "addons": { "alias": "addons"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; }, {}, ["prefix", "suffix"], ["label[tedi-label]", "[tediInputGroupPrefix]", "tedi-form-field, tedi-select", "[tediInputGroupSuffix]", "tedi-feedback-text"], true, never>;
7437
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputGroupComponent, "tedi-input-group", never, { "addons": { "alias": "addons"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; }, {}, ["prefix", "suffix"], ["label[tedi-label], tedi-label-row", "[tediInputGroupPrefix]", "tedi-form-field, tedi-select", "[tediInputGroupSuffix]", "tedi-feedback-text"], true, never>;
7438
+ }
7439
+
7440
+ interface ControlDescribedBy {
7441
+ attribute: Signal<string | null>;
7442
+ set(ids: string[]): void;
7152
7443
  }
7153
7444
 
7154
- declare class TextFieldComponent implements ControlValueAccessor, FormFieldControl {
7445
+ declare class TextFieldComponent implements OnInit, ControlValueAccessor, FormFieldControl {
7155
7446
  private el;
7156
- private group;
7447
+ private readonly fieldContext;
7157
7448
  /**
7158
7449
  * Value of the input field. Supports two-way binding, use with form controls.
7159
7450
  */
7160
7451
  value: _angular_core.ModelSignal<string>;
7452
+ /**
7453
+ * Size of the field. Falls back to the size of a wrapping `tedi-form-field`
7454
+ * when not set here.
7455
+ */
7456
+ size: _angular_core.InputSignal<InputSize | undefined>;
7457
+ /**
7458
+ * Forces the error state on, or off, regardless of the reactive-forms state.
7459
+ * Leave unset to let the control derive it.
7460
+ */
7461
+ readonly invalidInput: _angular_core.InputSignal<boolean>;
7161
7462
  /**
7162
7463
  * Whether to hide arrows for number inputs.
7163
7464
  * @default true
@@ -7173,8 +7474,16 @@ declare class TextFieldComponent implements ControlValueAccessor, FormFieldContr
7173
7474
  */
7174
7475
  readonly disabledInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
7175
7476
  readonly disabled: _angular_core.Signal<boolean>;
7176
- readonly invalid: _angular_core.WritableSignal<boolean>;
7177
- setInvalidState(isInvalid: boolean): void;
7477
+ private readonly derived;
7478
+ readonly describedBy: ControlDescribedBy;
7479
+ readonly touched: _angular_core.Signal<boolean>;
7480
+ readonly dirty: _angular_core.Signal<boolean>;
7481
+ readonly invalid: _angular_core.Signal<boolean>;
7482
+ readonly resolvedSize: _angular_core.Signal<InputSize>;
7483
+ readonly paintsSurface: _angular_core.Signal<boolean>;
7484
+ readonly valid: _angular_core.Signal<boolean>;
7485
+ ngOnInit(): void;
7486
+ setDescribedBy(ids: string[]): void;
7178
7487
  private formDisabled;
7179
7488
  private onChange;
7180
7489
  private onTouched;
@@ -7187,26 +7496,34 @@ declare class TextFieldComponent implements ControlValueAccessor, FormFieldContr
7187
7496
  handleInputChange(event: Event): void;
7188
7497
  handleBlur(): void;
7189
7498
  focus(): void;
7190
- clearField(): void;
7499
+ reset(): void;
7191
7500
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextFieldComponent, never>;
7192
- 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>;
7501
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextFieldComponent, "input[tedi-text-field]", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "invalidInput": { "alias": "invalid"; "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>;
7193
7502
  }
7194
7503
 
7195
- declare class TextareaComponent implements ControlValueAccessor, FormFieldControl {
7504
+ type TextareaSize = Exclude<InputSize, "large">;
7505
+ declare class TextareaComponent implements OnInit, ControlValueAccessor, FormFieldControl {
7196
7506
  private el;
7197
7507
  private renderer;
7508
+ private readonly fieldContext;
7198
7509
  /**
7199
7510
  * Value of the textarea. Supports two-way binding, use with form controls.
7200
7511
  */
7201
7512
  value: _angular_core.ModelSignal<string>;
7513
+ /**
7514
+ * Size of the field. Falls back to the size of a wrapping `tedi-form-field`
7515
+ * when not set here.
7516
+ */
7517
+ size: _angular_core.InputSignal<TextareaSize | undefined>;
7518
+ /**
7519
+ * Forces the error state on, or off, regardless of the reactive-forms state.
7520
+ * Leave unset to let the control derive it.
7521
+ */
7522
+ readonly invalidInput: _angular_core.InputSignal<boolean>;
7202
7523
  /**
7203
7524
  * Whether the user can resize the textarea. Only vertical resizing is
7204
7525
  * supported; set to `false` to disable resizing entirely.
7205
7526
  *
7206
- * The resize is applied to the surrounding `tedi-form-field` box (which owns
7207
- * the border) while the textarea fills it, so the visible field resizes with
7208
- * the drag.
7209
- *
7210
7527
  * @default true
7211
7528
  */
7212
7529
  resizable: _angular_core.InputSignal<boolean>;
@@ -7223,39 +7540,55 @@ declare class TextareaComponent implements ControlValueAccessor, FormFieldContro
7223
7540
  */
7224
7541
  autoGrow: _angular_core.InputSignal<boolean>;
7225
7542
  /**
7226
- * Minimum number of visible rows while `autoGrow` is enabled.
7543
+ * Number of rows the field rests at, and the fewest it can ever show. With no
7544
+ * `height` set this is what sizes the textarea, so it is the input to reach
7545
+ * for when a field needs to be taller or shorter — in every mode, not just
7546
+ * while `autoGrow` is on.
7547
+ *
7227
7548
  * @default 3
7228
7549
  */
7229
7550
  minRows: _angular_core.InputSignal<number>;
7230
7551
  /**
7231
- * Maximum number of visible rows before the field scrolls, while `autoGrow`
7232
- * is enabled.
7552
+ * Most rows the field shows before it starts scrolling. Caps `autoGrow`'s
7553
+ * growth and how far the resize grip can be dragged.
7554
+ *
7233
7555
  * @default 12
7234
7556
  */
7235
7557
  maxRows: _angular_core.InputSignal<number>;
7236
7558
  /**
7237
- * Fixed height of the textarea (e.g. `'7.5rem'`, `200` → `200px`). Applied
7238
- * only when `autoGrow` is disabled; otherwise the height is content-driven.
7239
- * Set to `undefined` to let the resting height come from the native `rows`
7240
- * attribute instead.
7241
- *
7242
- * @default "7.5rem"
7559
+ * Exact resting height (e.g. `'7.5rem'`, `200` → `200px`), for the rare field
7560
+ * that has to match something other than a whole number of rows. Prefer
7561
+ * `minRows`. Ignored while `autoGrow` is on, and still bounded by `minRows`
7562
+ * and `maxRows`.
7243
7563
  */
7244
7564
  height: _angular_core.InputSignal<string | number | undefined>;
7245
7565
  /**
7246
7566
  * Maximum height the textarea may grow to (e.g. `'200px'`, `12` → `12px`,
7247
- * `'12rem'`). Beyond it the field scrolls. Limits `autoGrow` growth (in
7248
- * addition to `maxRows`) and manual resizing.
7567
+ * `'12rem'`). Beyond it the field scrolls. Applied on top of `maxRows`,
7568
+ * whichever is smaller.
7249
7569
  */
7250
7570
  maxHeight: _angular_core.InputSignal<string | number | undefined>;
7251
7571
  private toCssSize;
7252
7572
  private rowsToHeight;
7573
+ readonly resolvedSize: _angular_core.Signal<InputSize>;
7574
+ readonly paintsSurface: _angular_core.Signal<boolean>;
7575
+ readonly valid: _angular_core.Signal<boolean>;
7253
7576
  readonly heightStyle: _angular_core.Signal<string | null>;
7254
- readonly minHeightStyle: _angular_core.Signal<string | null>;
7255
- readonly maxHeightStyle: _angular_core.Signal<string | null>;
7577
+ /**
7578
+ * `minRows` is the resting height as much as it is the floor: with no `height`
7579
+ * the textarea has nothing else to size to, so the floor is what it settles
7580
+ * at. That makes it the one number a consumer has to change.
7581
+ */
7582
+ readonly minHeightStyle: _angular_core.Signal<string>;
7583
+ readonly maxHeightStyle: _angular_core.Signal<string>;
7256
7584
  readonly disabled: _angular_core.Signal<boolean>;
7257
- readonly invalid: _angular_core.WritableSignal<boolean>;
7258
- setInvalidState(isInvalid: boolean): void;
7585
+ private readonly derived;
7586
+ readonly describedBy: ControlDescribedBy;
7587
+ readonly touched: _angular_core.Signal<boolean>;
7588
+ readonly dirty: _angular_core.Signal<boolean>;
7589
+ readonly invalid: _angular_core.Signal<boolean>;
7590
+ ngOnInit(): void;
7591
+ setDescribedBy(ids: string[]): void;
7259
7592
  private formDisabled;
7260
7593
  private onChange;
7261
7594
  private onTouched;
@@ -7267,8 +7600,10 @@ declare class TextareaComponent implements ControlValueAccessor, FormFieldContro
7267
7600
  setDisabledState(isDisabled: boolean): void;
7268
7601
  handleInputChange(event: Event): void;
7269
7602
  handleBlur(): void;
7603
+ focus(): void;
7604
+ reset(): void;
7270
7605
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TextareaComponent, never>;
7271
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextareaComponent, "textarea[tedi-textarea]", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "resizable": { "alias": "resizable"; "required": false; "isSignal": true; }; "autoGrow": { "alias": "autoGrow"; "required": false; "isSignal": true; }; "minRows": { "alias": "minRows"; "required": false; "isSignal": true; }; "maxRows": { "alias": "maxRows"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
7606
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextareaComponent, "textarea[tedi-textarea]", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "invalidInput": { "alias": "invalid"; "required": false; "isSignal": true; }; "resizable": { "alias": "resizable"; "required": false; "isSignal": true; }; "autoGrow": { "alias": "autoGrow"; "required": false; "isSignal": true; }; "minRows": { "alias": "minRows"; "required": false; "isSignal": true; }; "maxRows": { "alias": "maxRows"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
7272
7607
  }
7273
7608
 
7274
7609
  type TimePickerVariant = "scroll" | "slots" | "dropdown";
@@ -7413,7 +7748,9 @@ type TimeFieldPickerTrigger = "button" | "input";
7413
7748
  type TimeFieldModal = boolean | "sm" | "md" | "lg" | "xl";
7414
7749
  type TimeFieldFullscreen = ModalFullscreen;
7415
7750
  type TimeFieldUseNativePicker = boolean | "sm" | "md" | "lg" | "xl";
7416
- declare class TimeFieldComponent implements ControlValueAccessor, FormFieldControl<string | null> {
7751
+ declare class TimeFieldComponent implements OnInit, ControlValueAccessor, FormFieldControl<string | null> {
7752
+ private readonly fieldContext;
7753
+ private readonly derived;
7417
7754
  /** Unique ID for label association and accessibility. */
7418
7755
  readonly inputId: _angular_core.InputSignal<string>;
7419
7756
  /** Selected time in `HH:mm` format. Two-way bindable. */
@@ -7421,13 +7758,17 @@ declare class TimeFieldComponent implements ControlValueAccessor, FormFieldContr
7421
7758
  /** Placeholder shown when the input is empty. */
7422
7759
  readonly placeholder: _angular_core.InputSignal<string | undefined>;
7423
7760
  /**
7424
- * Manually mark the field as invalid. Sets `aria-invalid` on the input and triggers
7425
- * the form-field's invalid styling. Combines with reactive-form validity reported
7426
- * via `setInvalidState`.
7761
+ * Marks the field as invalid. Sets `aria-invalid` on the input and triggers
7762
+ * the error styling. Combines with the state derived from reactive forms.
7427
7763
  */
7428
7764
  protected readonly invalidInput: _angular_core.InputSignal<boolean>;
7429
7765
  /** Disables interaction. Combines with the form-control disabled state. */
7430
- readonly disabled: _angular_core.InputSignal<boolean>;
7766
+ readonly disabledInput: _angular_core.InputSignal<boolean>;
7767
+ /**
7768
+ * Field size. Falls back to the size of a wrapping `tedi-form-field` when not
7769
+ * set here.
7770
+ */
7771
+ readonly size: _angular_core.InputSignal<"small" | "default" | undefined>;
7431
7772
  /** Show a clear button when the field has a value. */
7432
7773
  readonly clearable: _angular_core.InputSignal<boolean>;
7433
7774
  /** Picker variant. `none` renders just the input with no picker UI — typed input is still normalized on blur. */
@@ -7463,11 +7804,17 @@ declare class TimeFieldComponent implements ControlValueAccessor, FormFieldContr
7463
7804
  readonly dropdownMinWidth: _angular_core.WritableSignal<number | null>;
7464
7805
  readonly inputValue: _angular_core.WritableSignal<string>;
7465
7806
  private formDisabled;
7466
- private formInvalid;
7467
7807
  private onChange;
7468
7808
  private onTouched;
7809
+ readonly disabled: _angular_core.Signal<boolean>;
7469
7810
  readonly isDisabled: _angular_core.Signal<boolean>;
7811
+ readonly touched: _angular_core.Signal<boolean>;
7812
+ readonly dirty: _angular_core.Signal<boolean>;
7470
7813
  readonly invalid: _angular_core.Signal<boolean>;
7814
+ readonly resolvedSize: _angular_core.Signal<InputSize>;
7815
+ readonly paintsSurface: _angular_core.Signal<boolean>;
7816
+ readonly valid: _angular_core.Signal<boolean>;
7817
+ ngOnInit(): void;
7471
7818
  readonly hasValue: _angular_core.Signal<boolean>;
7472
7819
  readonly showClear: _angular_core.Signal<boolean>;
7473
7820
  readonly useNativePickerResolved: _angular_core.Signal<boolean>;
@@ -7485,12 +7832,11 @@ declare class TimeFieldComponent implements ControlValueAccessor, FormFieldContr
7485
7832
  registerOnChange(fn: (value: string | null) => void): void;
7486
7833
  registerOnTouched(fn: () => void): void;
7487
7834
  setDisabledState(disabled: boolean): void;
7488
- setInvalidState(isInvalid: boolean): void;
7489
7835
  handleInput(event: Event): void;
7490
7836
  handleBlur(): void;
7491
7837
  clearInput(): void;
7492
7838
  focus(): void;
7493
- clearField(): void;
7839
+ reset(): void;
7494
7840
  openNativePicker(): void;
7495
7841
  onInputClick(event: MouseEvent): void;
7496
7842
  onFieldClick(): void;
@@ -7503,7 +7849,7 @@ declare class TimeFieldComponent implements ControlValueAccessor, FormFieldContr
7503
7849
  onPickerValueChange(newValue: string | null): void;
7504
7850
  closePopover(notifyTouched?: boolean): void;
7505
7851
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TimeFieldComponent, never>;
7506
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TimeFieldComponent, "tedi-time-field", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "invalidInput": { "alias": "invalid"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "pickerVariant": { "alias": "pickerVariant"; "required": false; "isSignal": true; }; "useNativePicker": { "alias": "useNativePicker"; "required": false; "isSignal": true; }; "pickerTrigger": { "alias": "pickerTrigger"; "required": false; "isSignal": true; }; "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; "timeSlots": { "alias": "timeSlots"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "showSlotIndicator": { "alias": "showSlotIndicator"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "modal": { "alias": "modal"; "required": false; "isSignal": true; }; "fullscreen": { "alias": "fullscreen"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
7852
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TimeFieldComponent, "tedi-time-field", never, { "inputId": { "alias": "inputId"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "invalidInput": { "alias": "invalid"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "pickerVariant": { "alias": "pickerVariant"; "required": false; "isSignal": true; }; "useNativePicker": { "alias": "useNativePicker"; "required": false; "isSignal": true; }; "pickerTrigger": { "alias": "pickerTrigger"; "required": false; "isSignal": true; }; "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; "timeSlots": { "alias": "timeSlots"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "showSlotIndicator": { "alias": "showSlotIndicator"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "modal": { "alias": "modal"; "required": false; "isSignal": true; }; "fullscreen": { "alias": "fullscreen"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
7507
7853
  }
7508
7854
 
7509
7855
  type ProgressBarSize = "default" | "small";
@@ -9483,30 +9829,6 @@ declare class InfoTooltipComponent {
9483
9829
  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>;
9484
9830
  }
9485
9831
 
9486
- type PopoverWidth = "none" | "small" | "medium" | "large";
9487
- declare class PopoverContentComponent {
9488
- /**
9489
- * The width of the popover. Can be 'none', 'small', 'medium', or 'large'.
9490
- * @default small
9491
- */
9492
- maxWidth: _angular_core.InputSignal<PopoverWidth>;
9493
- /**
9494
- * Heading title of the content
9495
- */
9496
- title: _angular_core.InputSignal<string>;
9497
- /**
9498
- * Should content show close button?
9499
- * @default false
9500
- */
9501
- showClose: _angular_core.InputSignal<boolean>;
9502
- private readonly popover;
9503
- titleId: string;
9504
- classes: _angular_core.Signal<string>;
9505
- handleClose(): void;
9506
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverContentComponent, never>;
9507
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PopoverContentComponent, "tedi-popover-content", never, { "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
9508
- }
9509
-
9510
9832
  type StatusBadgeColor = "neutral" | "brand" | "accent" | "success" | "danger" | "warning" | "transparent";
9511
9833
  type StatusBadgeVariant = "filled" | "filled-bordered" | "bordered";
9512
9834
  type StatusBadgeSize = "default" | "large";
@@ -9679,6 +10001,6 @@ declare function isValidTime(time: string | null | undefined): boolean;
9679
10001
  */
9680
10002
  declare function normalizeTime(input: string): string | null;
9681
10003
 
9682
- 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, TextareaComponent, 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 };
9683
- 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 };
10004
+ 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, FormFieldExtraDirective, 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_FIELD_CONTEXT, 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, TextareaComponent, 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 };
10005
+ 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, FieldContext, 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, LabelVisuallyHidden, Language, LinkInputs, LinkSize, LinkVariant, Matcher, ModalConfig, ModalFullscreen, ModalPosition, ModalScrollBehavior, ModalSize, ModalWidth, ModalWidthPreset, NumberFieldSize, OverlayPosition, OverlaySide, PaginationBackground, PaginationDividerPosition, PaginationItem, PaginationItemType, PaginationLabels, PaginationVisibility, PopoverPosition, PopoverWidth, PopoverWidthPreset, 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, TableControlColumnOrder, TableExpandTrigger, TableFilterModalData, TableFilterOptions, TablePaginationOptions, TablePersistOptions, TablePersistenceController, TableSelectionMode, TableSize, TableState, TableStatePatch, TabsOverflowMode, TagEllipsis, TagOverflowOptions, TagType, TediColumnDef, TediConfig, TediTableContextValue, TediTableFilterContext, TextColor, TextGroupInputs, TextGroupType, TextModifiers, TextareaSize, Theme, TimeFieldFullscreen, TimeFieldModal, TimeFieldPickerTrigger, TimeFieldPickerVariant, TimeFieldUseNativePicker, TimePickerVariant, TimelineCardPadding, TimelineVariant, ToastConfig, ToastPosition, ToastRole, ToastType, ToggleSize, ToggleType, ToggleVariant, TooltipOpenWith, TooltipPosition, TooltipWidth, UsePaginationArgs, VerticalSpacingSize, VirtualRow };
9684
10006
  //# sourceMappingURL=index.d.ts.map