@tedi-design-system/angular 8.1.0-rc.1 → 8.1.0-rc.11

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.
@@ -1,15 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, computed, ViewEncapsulation, ChangeDetectionStrategy, Component, signal, inject, ElementRef, Directive, booleanAttribute, output, ViewContainerRef, Renderer2, effect, HostListener, Injectable, InjectionToken, model, isDevMode, forwardRef, contentChild, contentChildren, PLATFORM_ID, REQUEST, isSignal, Pipe, Injector, DestroyRef, HostAttributeToken, viewChild, NgZone, viewChildren, afterNextRender, afterRenderEffect, Optional, SkipSelf, untracked, ViewChild, TemplateRef, HostBinding, runInInjectionContext, ContentChildren, RendererStyleFlags2, ContentChild, makeEnvironmentProviders } from '@angular/core';
2
+ import { input, computed, ViewEncapsulation, ChangeDetectionStrategy, Component, signal, inject, ElementRef, Directive, booleanAttribute, output, ViewContainerRef, Renderer2, effect, HostListener, Injectable, InjectionToken, model, isDevMode, forwardRef, contentChild, contentChildren, PLATFORM_ID, REQUEST, isSignal, Pipe, Injector, DestroyRef, HostAttributeToken, viewChild, NgZone, viewChildren, afterNextRender, afterRenderEffect, Optional, SkipSelf, untracked, ViewChild, TemplateRef, numberAttribute, linkedSignal, HostBinding, runInInjectionContext, ContentChildren, RendererStyleFlags2, ContentChild, makeEnvironmentProviders } from '@angular/core';
3
3
  import { BreakpointObserver } from '@angular/cdk/layout';
4
4
  import * as i1 from '@angular/cdk/overlay';
5
5
  import { CdkOverlayOrigin, OverlayModule, Overlay, OverlayConfig, CdkConnectedOverlay } from '@angular/cdk/overlay';
6
6
  import * as i1$1 from '@angular/common';
7
7
  import { DOCUMENT, isPlatformBrowser, isPlatformServer, NgTemplateOutlet, CommonModule, NgClass, NgIf } from '@angular/common';
8
- import * as i1$3 from '@angular/forms';
9
- import { NG_VALUE_ACCESSOR, NgControl, FormsModule } from '@angular/forms';
8
+ import { NG_VALUE_ACCESSOR, NgControl, Validators, FormsModule } from '@angular/forms';
10
9
  import { ComponentPortal } from '@angular/cdk/portal';
11
10
  import * as i2 from '@angular/cdk/a11y';
12
- import { _IdGenerator, CdkTrapFocus, A11yModule, LiveAnnouncer } from '@angular/cdk/a11y';
11
+ import { _IdGenerator, CdkTrapFocus, A11yModule, LiveAnnouncer, ActiveDescendantKeyManager } from '@angular/cdk/a11y';
13
12
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
14
13
  import { Dialog } from '@angular/cdk/dialog';
15
14
  import * as i1$2 from '@angular/cdk/scrolling';
@@ -1681,11 +1680,32 @@ const translationsMap = {
1681
1680
  },
1682
1681
  search: {
1683
1682
  description: "For searching",
1684
- components: ["TableFilter"],
1683
+ components: ["TableFilter", "Search"],
1685
1684
  et: "Otsi",
1686
1685
  en: "Search",
1687
1686
  ru: "Поиск",
1688
1687
  },
1688
+ "search.no-results": {
1689
+ description: "Shown in the search suggestions panel when nothing matched",
1690
+ components: ["Search"],
1691
+ et: "Tulemusi ei leitud",
1692
+ en: "No results found",
1693
+ ru: "Результаты не найдены",
1694
+ },
1695
+ "search.loading": {
1696
+ description: "Shown in the search suggestions panel while results load",
1697
+ components: ["Search"],
1698
+ et: "Otsin...",
1699
+ en: "Searching...",
1700
+ ru: "Поиск...",
1701
+ },
1702
+ "search.results-count": {
1703
+ description: "Announced politely to screen readers when the number of Search suggestions changes",
1704
+ components: ["Search"],
1705
+ et: (count) => `${count} ${count === 1 ? "vaste" : "vastet"}`,
1706
+ en: (count) => `${count} ${count === 1 ? "result" : "results"}`,
1707
+ ru: (count) => `Совпадений: ${count}`,
1708
+ },
1689
1709
  required: {
1690
1710
  description: "Required field",
1691
1711
  components: ["TableFilter"],
@@ -1909,6 +1929,13 @@ const translationsMap = {
1909
1929
  en: "Uploading",
1910
1930
  ru: "Загрузка",
1911
1931
  },
1932
+ "toast.close": {
1933
+ description: "Accessible label for a toast's close button, naming which toast it closes",
1934
+ components: ["Toast"],
1935
+ et: (title) => `Sulge teavitus: ${title}`,
1936
+ en: (title) => `Close notification: ${title}`,
1937
+ ru: (title) => `Закрыть уведомление: ${title}`,
1938
+ },
1912
1939
  "modal.close": {
1913
1940
  description: "Label for modals close button",
1914
1941
  components: ["Modal"],
@@ -2347,7 +2374,7 @@ const translationsMap = {
2347
2374
  components: ["Table", "Pagination"],
2348
2375
  et: (count) => `${count ?? 0} ${count === 1 ? "tulemus" : "tulemust"}`,
2349
2376
  en: (count) => `${count ?? 0} ${count === 1 ? "result" : "results"}`,
2350
- ru: (count) => `${count ?? 0} ${count === 1 ? "результат" : "результа"}`,
2377
+ ru: (count) => `Результатов: ${count ?? 0}`,
2351
2378
  },
2352
2379
  "pagination.page-size": {
2353
2380
  description: "Label of page size select",
@@ -2902,6 +2929,125 @@ const translationsMap = {
2902
2929
  en: "Cancel",
2903
2930
  ru: "Отмена",
2904
2931
  },
2932
+ "text-editor.bold": {
2933
+ description: "Label for the bold button in the text editor toolbar.",
2934
+ components: ["TextEditor"],
2935
+ et: "Paks kiri",
2936
+ en: "Bold",
2937
+ ru: "Полужирный",
2938
+ },
2939
+ "text-editor.italic": {
2940
+ description: "Label for the italic button in the text editor toolbar.",
2941
+ components: ["TextEditor"],
2942
+ et: "Kaldkiri",
2943
+ en: "Italic",
2944
+ ru: "Курсив",
2945
+ },
2946
+ "text-editor.underline": {
2947
+ description: "Label for the underline button in the text editor toolbar.",
2948
+ components: ["TextEditor"],
2949
+ et: "Allakriipsutus",
2950
+ en: "Underline",
2951
+ ru: "Подчёркнутый",
2952
+ },
2953
+ "text-editor.strike": {
2954
+ description: "Label for the strikethrough button in the text editor toolbar.",
2955
+ components: ["TextEditor"],
2956
+ et: "Läbikriipsutus",
2957
+ en: "Strikethrough",
2958
+ ru: "Зачёркнутый",
2959
+ },
2960
+ "text-editor.align.left": {
2961
+ description: "Label for the align left button in the text editor toolbar.",
2962
+ components: ["TextEditor"],
2963
+ et: "Joonda vasakule",
2964
+ en: "Align left",
2965
+ ru: "По левому краю",
2966
+ },
2967
+ "text-editor.align.center": {
2968
+ description: "Label for the align center button in the text editor toolbar.",
2969
+ components: ["TextEditor"],
2970
+ et: "Joonda keskele",
2971
+ en: "Align center",
2972
+ ru: "По центру",
2973
+ },
2974
+ "text-editor.align.right": {
2975
+ description: "Label for the align right button in the text editor toolbar.",
2976
+ components: ["TextEditor"],
2977
+ et: "Joonda paremale",
2978
+ en: "Align right",
2979
+ ru: "По правому краю",
2980
+ },
2981
+ "text-editor.align.justify": {
2982
+ description: "Label for the justify button in the text editor toolbar.",
2983
+ components: ["TextEditor"],
2984
+ et: "Rööpjoondus",
2985
+ en: "Justify",
2986
+ ru: "По ширине",
2987
+ },
2988
+ "text-editor.list.bullet": {
2989
+ description: "Label for the bulleted list button in the text editor toolbar.",
2990
+ components: ["TextEditor"],
2991
+ et: "Täpploend",
2992
+ en: "Bulleted list",
2993
+ ru: "Маркированный список",
2994
+ },
2995
+ "text-editor.list.ordered": {
2996
+ description: "Label for the numbered list button in the text editor toolbar.",
2997
+ components: ["TextEditor"],
2998
+ et: "Nummerdatud loend",
2999
+ en: "Numbered list",
3000
+ ru: "Нумерованный список",
3001
+ },
3002
+ "text-editor.indent.increase": {
3003
+ description: "Label for the increase indent button in the text editor toolbar.",
3004
+ components: ["TextEditor"],
3005
+ et: "Suurenda taanet",
3006
+ en: "Increase indent",
3007
+ ru: "Увеличить отступ",
3008
+ },
3009
+ "text-editor.indent.decrease": {
3010
+ description: "Label for the decrease indent button in the text editor toolbar.",
3011
+ components: ["TextEditor"],
3012
+ et: "Vähenda taanet",
3013
+ en: "Decrease indent",
3014
+ ru: "Уменьшить отступ",
3015
+ },
3016
+ "text-editor.color": {
3017
+ description: "Label for the text colour picker in the text editor toolbar.",
3018
+ components: ["TextEditor"],
3019
+ et: "Tekstivärv",
3020
+ en: "Text color",
3021
+ ru: "Цвет текста",
3022
+ },
3023
+ "text-editor.background": {
3024
+ description: "Label for the background colour picker in the text editor toolbar.",
3025
+ components: ["TextEditor"],
3026
+ et: "Taustavärv",
3027
+ en: "Background color",
3028
+ ru: "Цвет фона",
3029
+ },
3030
+ "text-editor.link": {
3031
+ description: "Label for the link button in the text editor toolbar.",
3032
+ components: ["TextEditor"],
3033
+ et: "Lisa link",
3034
+ en: "Insert link",
3035
+ ru: "Вставить ссылку",
3036
+ },
3037
+ "text-editor.blockquote": {
3038
+ description: "Label for the blockquote button in the text editor toolbar.",
3039
+ components: ["TextEditor"],
3040
+ et: "Tsitaat",
3041
+ en: "Blockquote",
3042
+ ru: "Цитата",
3043
+ },
3044
+ "text-editor.clean": {
3045
+ description: "Label for the clear formatting button in the text editor toolbar.",
3046
+ components: ["TextEditor"],
3047
+ et: "Eemalda vormindus",
3048
+ en: "Clear formatting",
3049
+ ru: "Очистить форматирование",
3050
+ },
2905
3051
  "time-picker.hours": {
2906
3052
  description: "Aria label for the hours listbox in the time picker.",
2907
3053
  components: ["TimePicker"],
@@ -3233,7 +3379,7 @@ class ButtonGroupComponent {
3233
3379
  this.toggle(item.value());
3234
3380
  }
3235
3381
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ButtonGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3236
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: ButtonGroupComponent, isStandalone: true, selector: "tedi-button-group", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, stretch: { classPropertyName: "stretch", publicName: "stretch", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, enableMobileDropdown: { classPropertyName: "enableMobileDropdown", publicName: "enableMobileDropdown", isSignal: true, isRequired: false, transformFunction: null }, mobileBreakpoint: { classPropertyName: "mobileBreakpoint", publicName: "mobileBreakpoint", isSignal: true, isRequired: false, transformFunction: null }, dropdownLabel: { classPropertyName: "dropdownLabel", publicName: "dropdownLabel", isSignal: true, isRequired: false, transformFunction: null }, dropdownLabelMode: { classPropertyName: "dropdownLabelMode", publicName: "dropdownLabelMode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", selectionChange: "selectionChange" }, host: { properties: { "class": "hostClasses()", "attr.role": "isDropdownMode() ? null : 'group'", "attr.aria-label": "ariaLabel() || null" } }, queries: [{ propertyName: "items", predicate: i0.forwardRef(() => ButtonGroupButtonDirective), isSignal: true }], ngImport: i0, template: "<ng-content />\n\n@if (isDropdownMode()) {\n <tedi-dropdown\n class=\"tedi-button-group__dropdown\"\n appendTo=\"body\"\n [offset]=\"0\"\n >\n <button\n tedi-dropdown-trigger\n tedi-button\n type=\"button\"\n [variant]=\"triggerVariant()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n class=\"tedi-button-group__dropdown-trigger\"\n >\n <tedi-icon [name]=\"triggerIcon()\" color=\"inherit\" [size]=\"18\" />\n {{ triggerLabel() }}\n </button>\n\n <tedi-dropdown-content>\n @for (item of items(); track item.value()) {\n <li\n tedi-dropdown-item\n [value]=\"item.value()\"\n [disabled]=\"item.disabled()\"\n [class.tedi-dropdown-item--selected]=\"item.selected()\"\n (itemSelect)=\"onDropdownItemSelect(item)\"\n >\n <tedi-dropdown-item-value>\n @if (item.iconLeft()) {\n <tedi-icon\n [name]=\"item.iconLeft()!\"\n color=\"inherit\"\n [size]=\"18\"\n />\n } @else if (item.icon()) {\n <tedi-icon [name]=\"item.icon()!\" color=\"inherit\" [size]=\"18\" />\n }\n <tedi-dropdown-item-value-label>{{\n item.label()\n }}</tedi-dropdown-item-value-label>\n @if (item.iconRight()) {\n <tedi-icon\n [name]=\"item.iconRight()!\"\n color=\"inherit\"\n [size]=\"18\"\n />\n }\n </tedi-dropdown-item-value>\n </li>\n }\n </tedi-dropdown-content>\n </tedi-dropdown>\n}\n", styles: [".tedi-button{display:inline-flex;gap:var(--_btn-inner-spacing);align-items:center;justify-content:center;padding:var(--_btn-padding);font-family:var(--family-default);font-weight:var(--body-regular-weight);line-height:var(--body-bold-line-height);color:var(--_btn-text);text-decoration:none;cursor:pointer;background:var(--_btn-bg);border:var(--tedi-borders-01) solid var(--_btn-border);border-radius:var(--button-radius-default);transition:.15s ease;transition-property:background-color,border-color}.tedi-button--icon-only{width:var(--button-md-icon-size);height:var(--button-md-icon-size);padding:var(--button-md-icon-padding)}.tedi-button--pl:not(.tedi-button--neutral,.tedi-button--danger-neutral,.tedi-button--neutral-inverted,.tedi-button--primary-button-group,.tedi-button--secondary-button-group){padding-left:calc(var(--_btn-padding-x) + var(--_btn-inner-spacing) - 1px)}.tedi-button--pr:not(.tedi-button--neutral,.tedi-button--danger-neutral,.tedi-button--neutral-inverted,.tedi-button--primary-button-group,.tedi-button--secondary-button-group){padding-right:calc(var(--_btn-padding-x) + var(--_btn-inner-spacing) - 1px)}.tedi-button:hover{color:var(--_btn-hover-text);background:var(--_btn-hover-bg);border-color:var(--_btn-hover-border)}.tedi-button:active{color:var(--_btn-active-text);background:var(--_btn-active-bg);border-color:var(--_btn-active-border)}.tedi-button:focus-visible{color:var(--_btn-focus-text);outline:2px solid var(--_btn-outline);outline-offset:1px;background:var(--_btn-focus-bg);border-color:var(--_btn-focus-border)}.tedi-button:disabled{color:var(--_btn-disabled-text);cursor:not-allowed;background:var(--_btn-disabled-bg);border-color:var(--_btn-disabled-border)}.tedi-button tedi-icon{--_tedi-icon-size: var(--icon-03);color:inherit}.tedi-button--small{font-size:var(--button-text-size-sm);--_btn-padding: calc(var(--_btn-padding-y) - 1px) calc(var(--_btn-padding-x) - 1px);--_btn-inner-spacing: var(--button-sm-inner-spacing);--_btn-padding-y: var(--button-sm-padding-y);--_btn-padding-x: var(--button-sm-padding-x)}.tedi-button--default{font-size:var(--button-text-size-default);--_btn-padding: calc(var(--_btn-padding-y) - 1px) calc(var(--_btn-padding-x) - 1px);--_btn-inner-spacing: var(--button-md-inner-spacing);--_btn-padding-y: var(--button-md-padding-y);--_btn-padding-x: var(--button-md-padding-x)}.tedi-button--primary{--_btn-bg: var(--button-main-primary-background-default);--_btn-border: var(--button-main-primary-border-default);--_btn-text: var(--button-main-primary-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--primary{--_btn-hover-bg: var(--button-main-primary-background-hover, var(--button-main-primary-background-default));--_btn-hover-border: var(--button-main-primary-border-hover, var(--button-main-primary-border-default));--_btn-hover-text: var(--button-main-primary-text-hover, var(--button-main-primary-text-default))}.tedi-button--primary{--_btn-focus-bg: var(--button-main-primary-background-focus, var(--button-main-primary-background-default));--_btn-focus-border: var(--button-main-primary-border-focus, var(--button-main-primary-border-default));--_btn-focus-text: var(--button-main-primary-text-focus, var(--button-main-primary-text-default))}.tedi-button--primary{--_btn-active-bg: var(--button-main-primary-background-active, var(--button-main-primary-background-default));--_btn-active-border: var(--button-main-primary-border-active, var(--button-main-primary-border-default));--_btn-active-text: var(--button-main-primary-text-active, var(--button-main-primary-text-default))}.tedi-button--primary{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-general-background);--_btn-disabled-border: var(--button-main-disabled-general-border)}.tedi-button--secondary{--_btn-bg: var(--button-main-secondary-background-default);--_btn-border: var(--button-main-secondary-border-default);--_btn-text: var(--button-main-secondary-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--secondary{--_btn-hover-bg: var(--button-main-secondary-background-hover, var(--button-main-secondary-background-default));--_btn-hover-border: var(--button-main-secondary-border-hover, var(--button-main-secondary-border-default));--_btn-hover-text: var(--button-main-secondary-text-hover, var(--button-main-secondary-text-default))}.tedi-button--secondary{--_btn-focus-bg: var(--button-main-secondary-background-focus, var(--button-main-secondary-background-default));--_btn-focus-border: var(--button-main-secondary-border-focus, var(--button-main-secondary-border-default));--_btn-focus-text: var(--button-main-secondary-text-focus, var(--button-main-secondary-text-default))}.tedi-button--secondary{--_btn-active-bg: var(--button-main-secondary-background-active, var(--button-main-secondary-background-default));--_btn-active-border: var(--button-main-secondary-border-active, var(--button-main-secondary-border-default));--_btn-active-text: var(--button-main-secondary-text-active, var(--button-main-secondary-text-default))}.tedi-button--secondary{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-general-background);--_btn-disabled-border: var(--button-main-disabled-general-border)}.tedi-button--neutral{--_btn-bg: var(--button-main-neutral-background-default);--_btn-border: var(--button-main-neutral-border-default);--_btn-text: var(--button-main-neutral-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--neutral{--_btn-hover-bg: var(--button-main-neutral-background-hover, var(--button-main-neutral-background-default));--_btn-hover-border: var(--button-main-neutral-border-hover, var(--button-main-neutral-border-default));--_btn-hover-text: var(--button-main-neutral-text-hover, var(--button-main-neutral-text-default))}.tedi-button--neutral{--_btn-focus-bg: var(--button-main-neutral-background-focus, var(--button-main-neutral-background-default));--_btn-focus-border: var(--button-main-neutral-border-focus, var(--button-main-neutral-border-default));--_btn-focus-text: var(--button-main-neutral-text-focus, var(--button-main-neutral-text-default))}.tedi-button--neutral{--_btn-active-bg: var(--button-main-neutral-background-active, var(--button-main-neutral-background-default));--_btn-active-border: var(--button-main-neutral-border-active, var(--button-main-neutral-border-default));--_btn-active-text: var(--button-main-neutral-text-active, var(--button-main-neutral-text-default))}.tedi-button--neutral{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-neutral-background);--_btn-disabled-border: var(--button-main-disabled-neutral-border)}.tedi-button--neutral:where(.tedi-button--small){--_btn-padding-y: var(--button-sm-neutral-padding-y);--_btn-padding-x: var(--button-sm-neutral-padding-x);--_btn-padding: calc(var(--_btn-padding-y) - 1px) var(--_btn-padding-x)}.tedi-button--neutral:where(.tedi-button--default){--_btn-padding-y: var(--button-md-neutral-padding-y);--_btn-padding-x: var(--button-md-neutral-padding-x);--_btn-padding: calc(var(--_btn-padding-y) - 1px) var(--_btn-padding-x)}.tedi-button--success{--_btn-bg: var(--button-main-success-background-default);--_btn-border: var(--button-main-success-border-default);--_btn-text: var(--button-main-success-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--success{--_btn-hover-bg: var(--button-main-success-background-hover, var(--button-main-success-background-default));--_btn-hover-border: var(--button-main-success-border-hover, var(--button-main-success-border-default));--_btn-hover-text: var(--button-main-success-text-hover, var(--button-main-success-text-default))}.tedi-button--success{--_btn-focus-bg: var(--button-main-success-background-focus, var(--button-main-success-background-default));--_btn-focus-border: var(--button-main-success-border-focus, var(--button-main-success-border-default));--_btn-focus-text: var(--button-main-success-text-focus, var(--button-main-success-text-default))}.tedi-button--success{--_btn-active-bg: var(--button-main-success-background-active, var(--button-main-success-background-default));--_btn-active-border: var(--button-main-success-border-active, var(--button-main-success-border-default));--_btn-active-text: var(--button-main-success-text-active, var(--button-main-success-text-default))}.tedi-button--success{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-general-background);--_btn-disabled-border: var(--button-main-disabled-general-border)}.tedi-button--danger{--_btn-bg: var(--button-main-danger-background-default);--_btn-border: var(--button-main-danger-border-default);--_btn-text: var(--button-main-danger-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--danger{--_btn-hover-bg: var(--button-main-danger-background-hover, var(--button-main-danger-background-default));--_btn-hover-border: var(--button-main-danger-border-hover, var(--button-main-danger-border-default));--_btn-hover-text: var(--button-main-danger-text-hover, var(--button-main-danger-text-default))}.tedi-button--danger{--_btn-focus-bg: var(--button-main-danger-background-focus, var(--button-main-danger-background-default));--_btn-focus-border: var(--button-main-danger-border-focus, var(--button-main-danger-border-default));--_btn-focus-text: var(--button-main-danger-text-focus, var(--button-main-danger-text-default))}.tedi-button--danger{--_btn-active-bg: var(--button-main-danger-background-active, var(--button-main-danger-background-default));--_btn-active-border: var(--button-main-danger-border-active, var(--button-main-danger-border-default));--_btn-active-text: var(--button-main-danger-text-active, var(--button-main-danger-text-default))}.tedi-button--danger{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-general-background);--_btn-disabled-border: var(--button-main-disabled-general-border)}.tedi-button--danger-neutral:where(.tedi-button--small){--_btn-padding-y: var(--button-sm-neutral-padding-y);--_btn-padding-x: var(--button-sm-neutral-padding-x);--_btn-padding: calc(var(--_btn-padding-y) - 1px) var(--_btn-padding-x)}.tedi-button--danger-neutral:where(.tedi-button--default){--_btn-padding-y: var(--button-md-neutral-padding-y);--_btn-padding-x: var(--button-md-neutral-padding-x);--_btn-padding: calc(var(--_btn-padding-y) - 1px) var(--_btn-padding-x)}.tedi-button--danger-neutral{--_btn-bg: var(--button-main-danger-neutral-background-default);--_btn-border: var(--button-main-danger-neutral-border-default);--_btn-text: var(--button-main-danger-neutral-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--danger-neutral{--_btn-hover-bg: var(--button-main-danger-neutral-background-hover, var(--button-main-danger-neutral-background-default));--_btn-hover-border: var(--button-main-danger-neutral-border-hover, var(--button-main-danger-neutral-border-default));--_btn-hover-text: var(--button-main-danger-neutral-text-hover, var(--button-main-danger-neutral-text-default))}.tedi-button--danger-neutral{--_btn-focus-bg: var(--button-main-danger-neutral-background-focus, var(--button-main-danger-neutral-background-default));--_btn-focus-border: var(--button-main-danger-neutral-border-focus, var(--button-main-danger-neutral-border-default));--_btn-focus-text: var(--button-main-danger-neutral-text-focus, var(--button-main-danger-neutral-text-default))}.tedi-button--danger-neutral{--_btn-active-bg: var(--button-main-danger-neutral-background-active, var(--button-main-danger-neutral-background-default));--_btn-active-border: var(--button-main-danger-neutral-border-active, var(--button-main-danger-neutral-border-default));--_btn-active-text: var(--button-main-danger-neutral-text-active, var(--button-main-danger-neutral-text-default))}.tedi-button--danger-neutral{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-neutral-background);--_btn-disabled-border: var(--button-main-disabled-neutral-border)}.tedi-button--primary-inverted{--_btn-bg: var(--button-main-primary-inverted-background-default);--_btn-border: var(--button-main-primary-inverted-border-default);--_btn-text: var(--button-main-primary-inverted-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--primary-inverted{--_btn-hover-bg: var(--button-main-primary-inverted-background-hover, var(--button-main-primary-inverted-background-default));--_btn-hover-border: var(--button-main-primary-inverted-border-hover, var(--button-main-primary-inverted-border-default));--_btn-hover-text: var(--button-main-primary-inverted-text-hover, var(--button-main-primary-inverted-text-default))}.tedi-button--primary-inverted{--_btn-focus-bg: var(--button-main-primary-inverted-background-focus, var(--button-main-primary-inverted-background-default));--_btn-focus-border: var(--button-main-primary-inverted-border-focus, var(--button-main-primary-inverted-border-default));--_btn-focus-text: var(--button-main-primary-inverted-text-focus, var(--button-main-primary-inverted-text-default))}.tedi-button--primary-inverted{--_btn-active-bg: var(--button-main-primary-inverted-background-active, var(--button-main-primary-inverted-background-default));--_btn-active-border: var(--button-main-primary-inverted-border-active, var(--button-main-primary-inverted-border-default));--_btn-active-text: var(--button-main-primary-inverted-text-active, var(--button-main-primary-inverted-text-default))}.tedi-button--primary-inverted{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-general-background);--_btn-disabled-border: var(--button-main-disabled-general-border)}.tedi-button--secondary-inverted{--_btn-bg: var(--button-main-secondary-inverted-background-default);--_btn-border: var(--button-main-secondary-inverted-border-default);--_btn-text: var(--button-main-secondary-inverted-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--secondary-inverted{--_btn-hover-bg: var(--button-main-secondary-inverted-background-hover, var(--button-main-secondary-inverted-background-default));--_btn-hover-border: var(--button-main-secondary-inverted-border-hover, var(--button-main-secondary-inverted-border-default));--_btn-hover-text: var(--button-main-secondary-inverted-text-hover, var(--button-main-secondary-inverted-text-default))}.tedi-button--secondary-inverted{--_btn-focus-bg: var(--button-main-secondary-inverted-background-focus, var(--button-main-secondary-inverted-background-default));--_btn-focus-border: var(--button-main-secondary-inverted-border-focus, var(--button-main-secondary-inverted-border-default));--_btn-focus-text: var(--button-main-secondary-inverted-text-focus, var(--button-main-secondary-inverted-text-default))}.tedi-button--secondary-inverted{--_btn-active-bg: var(--button-main-secondary-inverted-background-active, var(--button-main-secondary-inverted-background-default));--_btn-active-border: var(--button-main-secondary-inverted-border-active, var(--button-main-secondary-inverted-border-default));--_btn-active-text: var(--button-main-secondary-inverted-text-active, var(--button-main-secondary-inverted-text-default))}.tedi-button--secondary-inverted{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-general-background);--_btn-disabled-border: var(--button-main-disabled-general-border)}.tedi-button--neutral-inverted{--_btn-bg: var(--button-main-neutral-inverted-background-default);--_btn-border: var(--button-main-neutral-inverted-border-default);--_btn-text: var(--button-main-neutral-inverted-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--neutral-inverted{--_btn-hover-bg: var(--button-main-neutral-inverted-background-hover, var(--button-main-neutral-inverted-background-default));--_btn-hover-border: var(--button-main-neutral-inverted-border-hover, var(--button-main-neutral-inverted-border-default));--_btn-hover-text: var(--button-main-neutral-inverted-text-hover, var(--button-main-neutral-inverted-text-default))}.tedi-button--neutral-inverted{--_btn-focus-bg: var(--button-main-neutral-inverted-background-focus, var(--button-main-neutral-inverted-background-default));--_btn-focus-border: var(--button-main-neutral-inverted-border-focus, var(--button-main-neutral-inverted-border-default));--_btn-focus-text: var(--button-main-neutral-inverted-text-focus, var(--button-main-neutral-inverted-text-default))}.tedi-button--neutral-inverted{--_btn-active-bg: var(--button-main-neutral-inverted-background-active, var(--button-main-neutral-inverted-background-default));--_btn-active-border: var(--button-main-neutral-inverted-border-active, var(--button-main-neutral-inverted-border-default));--_btn-active-text: var(--button-main-neutral-inverted-text-active, var(--button-main-neutral-inverted-text-default))}.tedi-button--neutral-inverted{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-neutral-background);--_btn-disabled-border: var(--button-main-disabled-neutral-border)}.tedi-button--neutral-inverted:where(.tedi-button--small){--_btn-padding-y: var(--button-sm-neutral-padding-y);--_btn-padding-x: var(--button-sm-neutral-padding-x);--_btn-padding: calc(var(--_btn-padding-y) - 1px) var(--_btn-padding-x)}.tedi-button--neutral-inverted:where(.tedi-button--default){--_btn-padding-y: var(--button-md-neutral-padding-y);--_btn-padding-x: var(--button-md-neutral-padding-x);--_btn-padding: calc(var(--_btn-padding-y) - 1px) var(--_btn-padding-x)}.tedi-button--primary-button-group{--_btn-text: var(--button-group-primary-inactive-text);--_btn-bg: var(--button-group-primary-inactive-background);--_btn-border: var(--button-group-primary-inactive-border);--_btn-hover-text: var(--button-group-primary-hover-text);--_btn-hover-bg: var(--button-group-primary-hover-background);--_btn-hover-border: var(--button-group-primary-hover-border);--_btn-active-text: var(--button-group-primary-selected-text);--_btn-active-bg: var(--button-group-primary-selected-background);--_btn-active-border: var(--button-group-primary-selected-border);--_btn-focus-text: var(--button-group-primary-inactive-text);--_btn-focus-bg: var(--button-group-primary-inactive-background);--_btn-focus-border: var(--button-group-primary-inactive-border);--_btn-disabled-text: var(--button-group-primary-disabled-text);--_btn-disabled-bg: var(--button-group-primary-disabled-background);--_btn-disabled-border: var(--button-group-primary-disabled-border);--_btn-outline: var(--tedi-primary-500);border-radius:var(--button-radius-sm)}.tedi-button--primary-button-group[aria-pressed=true]:not(:disabled){z-index:1;color:var(--button-group-primary-selected-text);background:var(--button-group-primary-selected-background);border-color:var(--button-group-primary-selected-border)}.tedi-button--secondary-button-group{--_btn-text: var(--button-group-secondary-inactive-text);--_btn-bg: var(--button-group-secondary-inactive-background);--_btn-border: var(--button-group-secondary-inactive-border);--_btn-hover-text: var(--button-group-secondary-hover-text);--_btn-hover-bg: var(--button-group-secondary-hover-background);--_btn-hover-border: var(--button-group-secondary-hover-border);--_btn-active-text: var(--button-group-secondary-selected-text);--_btn-active-bg: var(--button-group-secondary-selected-background);--_btn-active-border: var(--button-group-secondary-selected-border);--_btn-focus-text: var(--button-group-secondary-inactive-text);--_btn-focus-bg: var(--button-group-secondary-inactive-background);--_btn-focus-border: var(--button-group-secondary-inactive-border);--_btn-disabled-text: var(--button-group-secondary-disabled-text);--_btn-disabled-bg: var(--button-group-secondary-disabled-background);--_btn-disabled-border: var(--button-group-secondary-disabled-border);--_btn-outline: var(--tedi-primary-500);border-radius:var(--button-radius-sm)}.tedi-button--secondary-button-group[aria-pressed=true]:not(:disabled){z-index:1;color:var(--button-group-secondary-selected-text);background:var(--button-group-secondary-selected-background);border-color:var(--button-group-secondary-selected-border);box-shadow:inset 0 0 0 var(--tedi-borders-01) var(--button-group-secondary-selected-border)}.tedi-button[class*=-inverted]:focus-visible{outline:none;border-color:var(--tedi-neutral-100);box-shadow:0 0 0 1px var(--tedi-neutral-100),0 0 0 3px var(--_btn-outline)}.tedi-button--icon-only.tedi-button--neutral{--_btn-bg: var(--button-main-neutral-icon-only-background-default);--_btn-border: var(--button-main-neutral-border-default);--_btn-text: var(--button-main-neutral-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--icon-only.tedi-button--neutral{--_btn-hover-bg: var(--button-main-neutral-icon-only-background-hover, var(--button-main-neutral-icon-only-background-default));--_btn-hover-border: var(--button-main-neutral-border-hover, var(--button-main-neutral-border-default));--_btn-hover-text: var(--button-main-neutral-text-hover, var(--button-main-neutral-text-default))}.tedi-button--icon-only.tedi-button--neutral{--_btn-focus-bg: var(--button-main-neutral-icon-only-background-focus, var(--button-main-neutral-icon-only-background-default));--_btn-focus-border: var(--button-main-neutral-border-focus, var(--button-main-neutral-border-default));--_btn-focus-text: var(--button-main-neutral-text-focus, var(--button-main-neutral-text-default))}.tedi-button--icon-only.tedi-button--neutral{--_btn-active-bg: var(--button-main-neutral-icon-only-background-active, var(--button-main-neutral-icon-only-background-default));--_btn-active-border: var(--button-main-neutral-border-active, var(--button-main-neutral-border-default));--_btn-active-text: var(--button-main-neutral-text-active, var(--button-main-neutral-text-default))}.tedi-button--icon-only.tedi-button--neutral{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-neutral-background);--_btn-disabled-border: var(--button-main-disabled-neutral-border)}.tedi-button--icon-only.tedi-button--neutral-inverted{--_btn-bg: var(--button-main-neutral-inverted-icon-only-background-default);--_btn-border: var(--button-main-neutral-inverted-border-default);--_btn-text: var(--button-main-neutral-inverted-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--icon-only.tedi-button--neutral-inverted{--_btn-hover-bg: var(--button-main-neutral-inverted-icon-only-background-hover, var(--button-main-neutral-inverted-icon-only-background-default));--_btn-hover-border: var(--button-main-neutral-inverted-border-hover, var(--button-main-neutral-inverted-border-default));--_btn-hover-text: var(--button-main-neutral-inverted-text-hover, var(--button-main-neutral-inverted-text-default))}.tedi-button--icon-only.tedi-button--neutral-inverted{--_btn-focus-bg: var(--button-main-neutral-inverted-icon-only-background-focus, var(--button-main-neutral-inverted-icon-only-background-default));--_btn-focus-border: var(--button-main-neutral-inverted-border-focus, var(--button-main-neutral-inverted-border-default));--_btn-focus-text: var(--button-main-neutral-inverted-text-focus, var(--button-main-neutral-inverted-text-default))}.tedi-button--icon-only.tedi-button--neutral-inverted{--_btn-active-bg: var(--button-main-neutral-inverted-icon-only-background-active, var(--button-main-neutral-inverted-icon-only-background-default));--_btn-active-border: var(--button-main-neutral-inverted-border-active, var(--button-main-neutral-inverted-border-default));--_btn-active-text: var(--button-main-neutral-inverted-text-active, var(--button-main-neutral-inverted-text-default))}.tedi-button--icon-only.tedi-button--neutral-inverted{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-neutral-background);--_btn-disabled-border: var(--button-main-disabled-neutral-border)}.tedi-button--icon-only.tedi-button--danger-neutral{--_btn-bg: var(--button-main-danger-neutral-icon-only-background-default);--_btn-border: var(--button-main-danger-neutral-border-default);--_btn-text: var(--button-main-danger-neutral-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--icon-only.tedi-button--danger-neutral{--_btn-hover-bg: var(--button-main-danger-neutral-icon-only-background-hover, var(--button-main-danger-neutral-icon-only-background-default));--_btn-hover-border: var(--button-main-danger-neutral-border-hover, var(--button-main-danger-neutral-border-default));--_btn-hover-text: var(--button-main-danger-neutral-text-hover, var(--button-main-danger-neutral-text-default))}.tedi-button--icon-only.tedi-button--danger-neutral{--_btn-focus-bg: var(--button-main-danger-neutral-icon-only-background-focus, var(--button-main-danger-neutral-icon-only-background-default));--_btn-focus-border: var(--button-main-danger-neutral-border-focus, var(--button-main-danger-neutral-border-default));--_btn-focus-text: var(--button-main-danger-neutral-text-focus, var(--button-main-danger-neutral-text-default))}.tedi-button--icon-only.tedi-button--danger-neutral{--_btn-active-bg: var(--button-main-danger-neutral-icon-only-background-active, var(--button-main-danger-neutral-icon-only-background-default));--_btn-active-border: var(--button-main-danger-neutral-border-active, var(--button-main-danger-neutral-border-default));--_btn-active-text: var(--button-main-danger-neutral-text-active, var(--button-main-danger-neutral-text-default))}.tedi-button--icon-only.tedi-button--danger-neutral{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-neutral-background);--_btn-disabled-border: var(--button-main-disabled-neutral-border)}.tedi-button--icon-only.tedi-button--small{width:var(--button-sm-icon-size);height:var(--button-sm-icon-size);padding:var(--button-sm-icon-padding)}.tedi-button-group{display:flex}.tedi-button-group--stretch .tedi-button{flex:1}.tedi-button-group .tedi-button:focus-visible{z-index:2}.tedi-button-group .tedi-button[aria-pressed=true]{z-index:1}.tedi-button-group .tedi-button[aria-pressed=true]:not(:disabled){color:var(--_btn-active-text);background:var(--_btn-active-bg);border-color:var(--_btn-active-border)}.tedi-button-group>.tedi-button:not(:first-child){margin-left:calc(var(--tedi-borders-01) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.tedi-button-group>.tedi-button:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.tedi-button-group tedi-tooltip:not(:first-child) tedi-tooltip-trigger{margin-left:calc(var(--tedi-borders-01) * -1)}.tedi-button-group tedi-tooltip:not(:first-child) .tedi-button{border-top-left-radius:0;border-bottom-left-radius:0}.tedi-button-group tedi-tooltip:not(:last-child) .tedi-button{border-top-right-radius:0;border-bottom-right-radius:0}@media(max-width:47.98rem){.tedi-button-group .tedi-button{flex:1}}.tedi-button-group--dropdown-mode>.tedi-button,.tedi-button-group--dropdown-mode>tedi-tooltip{display:none}.tedi-button-group__dropdown{display:flex;flex:1 1 auto}.tedi-button-group__dropdown-trigger{flex:1}.tedi-button-group__dropdown-trigger[aria-expanded=true]{color:var(--_btn-active-text);background:var(--_btn-active-bg);border-color:var(--_btn-active-border)}.tedi-button-group--segmented .tedi-button-group__dropdown-trigger{border-radius:var(--button-radius-sm)}.tedi-button-group--segmented .tedi-button-group__dropdown-trigger.tedi-button--secondary{padding:calc(var(--_btn-padding-y) - var(--tedi-borders-02)) calc(var(--_btn-padding-x) - var(--tedi-borders-02));border-width:var(--tedi-borders-02)}.tedi-button-group--segmented .tedi-button-group__dropdown-trigger.tedi-button--secondary:not([aria-expanded=true]){border-color:var(--button-group-secondary-selected-border)}.tedi-button.tedi-button-group-button{gap:0}.tedi-button-group-button__label{padding-inline:var(--_btn-inner-spacing)}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "[tedi-button]", inputs: ["variant", "size"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "component", type: DropdownComponent, selector: "tedi-dropdown", inputs: ["value", "position", "preventOverflow", "offset", "hideOnScroll"], outputs: ["valueChange"] }, { kind: "directive", type: DropdownTriggerDirective, selector: "[tedi-dropdown-trigger]", inputs: ["ariaHaspopup"] }, { kind: "component", type: DropdownContentComponent, selector: "tedi-dropdown-content", inputs: ["dropdownRole"] }, { kind: "component", type: DropdownItemComponent, selector: "li[tedi-dropdown-item]", inputs: ["value", "disabled", "clipContent", "closeOnSelect"], outputs: ["itemSelect"] }, { kind: "component", type: DropdownItemValueComponent, selector: "tedi-dropdown-item-value", inputs: ["type", "layout", "selected", "indeterminate", "disabled"] }, { kind: "component", type: DropdownItemValueLabelComponent, selector: "tedi-dropdown-item-value-label", inputs: ["clipContent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
3382
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: ButtonGroupComponent, isStandalone: true, selector: "tedi-button-group", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, stretch: { classPropertyName: "stretch", publicName: "stretch", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, enableMobileDropdown: { classPropertyName: "enableMobileDropdown", publicName: "enableMobileDropdown", isSignal: true, isRequired: false, transformFunction: null }, mobileBreakpoint: { classPropertyName: "mobileBreakpoint", publicName: "mobileBreakpoint", isSignal: true, isRequired: false, transformFunction: null }, dropdownLabel: { classPropertyName: "dropdownLabel", publicName: "dropdownLabel", isSignal: true, isRequired: false, transformFunction: null }, dropdownLabelMode: { classPropertyName: "dropdownLabelMode", publicName: "dropdownLabelMode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", selectionChange: "selectionChange" }, host: { properties: { "class": "hostClasses()", "attr.role": "isDropdownMode() ? null : 'group'", "attr.aria-label": "ariaLabel() || null" } }, queries: [{ propertyName: "items", predicate: i0.forwardRef(() => ButtonGroupButtonDirective), isSignal: true }], ngImport: i0, template: "<ng-content />\n\n@if (isDropdownMode()) {\n <tedi-dropdown\n class=\"tedi-button-group__dropdown\"\n appendTo=\"body\"\n [offset]=\"0\"\n >\n <button\n tedi-dropdown-trigger\n tedi-button\n type=\"button\"\n [variant]=\"triggerVariant()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n class=\"tedi-button-group__dropdown-trigger\"\n >\n <tedi-icon [name]=\"triggerIcon()\" color=\"inherit\" [size]=\"18\" />\n {{ triggerLabel() }}\n </button>\n\n <tedi-dropdown-content>\n @for (item of items(); track item.value()) {\n <li\n tedi-dropdown-item\n [value]=\"item.value()\"\n [disabled]=\"item.disabled()\"\n [class.tedi-dropdown-item--selected]=\"item.selected()\"\n (itemSelect)=\"onDropdownItemSelect(item)\"\n >\n <tedi-dropdown-item-value>\n @if (item.iconLeft()) {\n <tedi-icon\n [name]=\"item.iconLeft()!\"\n color=\"inherit\"\n [size]=\"18\"\n />\n } @else if (item.icon()) {\n <tedi-icon [name]=\"item.icon()!\" color=\"inherit\" [size]=\"18\" />\n }\n <tedi-dropdown-item-value-label>{{\n item.label()\n }}</tedi-dropdown-item-value-label>\n @if (item.iconRight()) {\n <tedi-icon\n [name]=\"item.iconRight()!\"\n color=\"inherit\"\n [size]=\"18\"\n />\n }\n </tedi-dropdown-item-value>\n </li>\n }\n </tedi-dropdown-content>\n </tedi-dropdown>\n}\n", styles: [".tedi-button-group{display:flex}.tedi-button-group--stretch .tedi-button{flex:1}.tedi-button-group .tedi-button:focus-visible{z-index:2}.tedi-button-group .tedi-button[aria-pressed=true]{z-index:1}.tedi-button-group .tedi-button[aria-pressed=true]:not(:disabled){color:var(--_btn-active-text);background:var(--_btn-active-bg);border-color:var(--_btn-active-border)}.tedi-button-group>.tedi-button:not(:first-child){margin-left:calc(var(--tedi-borders-01) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.tedi-button-group>.tedi-button:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.tedi-button-group tedi-tooltip:not(:first-child) tedi-tooltip-trigger{margin-left:calc(var(--tedi-borders-01) * -1)}.tedi-button-group tedi-tooltip:not(:first-child) .tedi-button{border-top-left-radius:0;border-bottom-left-radius:0}.tedi-button-group tedi-tooltip:not(:last-child) .tedi-button{border-top-right-radius:0;border-bottom-right-radius:0}@media(max-width:47.98rem){.tedi-button-group .tedi-button{flex:1}}.tedi-button-group--dropdown-mode>.tedi-button,.tedi-button-group--dropdown-mode>tedi-tooltip{display:none}.tedi-button-group__dropdown{display:flex;flex:1 1 auto}.tedi-button-group__dropdown-trigger{flex:1}.tedi-button-group__dropdown-trigger[aria-expanded=true]{color:var(--_btn-active-text);background:var(--_btn-active-bg);border-color:var(--_btn-active-border)}.tedi-button-group--segmented .tedi-button-group__dropdown-trigger{border-radius:var(--button-radius-sm)}.tedi-button-group--segmented .tedi-button-group__dropdown-trigger.tedi-button--secondary{padding:calc(var(--_btn-padding-y) - var(--tedi-borders-02)) calc(var(--_btn-padding-x) - var(--tedi-borders-02));border-width:var(--tedi-borders-02)}.tedi-button-group--segmented .tedi-button-group__dropdown-trigger.tedi-button--secondary:not([aria-expanded=true]){border-color:var(--button-group-secondary-selected-border)}.tedi-button.tedi-button-group-button{gap:0}.tedi-button-group-button__label{padding-inline:var(--_btn-inner-spacing)}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "[tedi-button]", inputs: ["variant", "size"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "component", type: DropdownComponent, selector: "tedi-dropdown", inputs: ["value", "position", "preventOverflow", "offset", "hideOnScroll"], outputs: ["valueChange"] }, { kind: "directive", type: DropdownTriggerDirective, selector: "[tedi-dropdown-trigger]", inputs: ["ariaHaspopup"] }, { kind: "component", type: DropdownContentComponent, selector: "tedi-dropdown-content", inputs: ["dropdownRole"] }, { kind: "component", type: DropdownItemComponent, selector: "li[tedi-dropdown-item]", inputs: ["value", "disabled", "clipContent", "closeOnSelect"], outputs: ["itemSelect"] }, { kind: "component", type: DropdownItemValueComponent, selector: "tedi-dropdown-item-value", inputs: ["type", "layout", "selected", "indeterminate", "disabled"] }, { kind: "component", type: DropdownItemValueLabelComponent, selector: "tedi-dropdown-item-value-label", inputs: ["clipContent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
3237
3383
  }
3238
3384
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ButtonGroupComponent, decorators: [{
3239
3385
  type: Component,
@@ -3250,7 +3396,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
3250
3396
  "[class]": "hostClasses()",
3251
3397
  "[attr.role]": "isDropdownMode() ? null : 'group'",
3252
3398
  "[attr.aria-label]": "ariaLabel() || null",
3253
- }, template: "<ng-content />\n\n@if (isDropdownMode()) {\n <tedi-dropdown\n class=\"tedi-button-group__dropdown\"\n appendTo=\"body\"\n [offset]=\"0\"\n >\n <button\n tedi-dropdown-trigger\n tedi-button\n type=\"button\"\n [variant]=\"triggerVariant()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n class=\"tedi-button-group__dropdown-trigger\"\n >\n <tedi-icon [name]=\"triggerIcon()\" color=\"inherit\" [size]=\"18\" />\n {{ triggerLabel() }}\n </button>\n\n <tedi-dropdown-content>\n @for (item of items(); track item.value()) {\n <li\n tedi-dropdown-item\n [value]=\"item.value()\"\n [disabled]=\"item.disabled()\"\n [class.tedi-dropdown-item--selected]=\"item.selected()\"\n (itemSelect)=\"onDropdownItemSelect(item)\"\n >\n <tedi-dropdown-item-value>\n @if (item.iconLeft()) {\n <tedi-icon\n [name]=\"item.iconLeft()!\"\n color=\"inherit\"\n [size]=\"18\"\n />\n } @else if (item.icon()) {\n <tedi-icon [name]=\"item.icon()!\" color=\"inherit\" [size]=\"18\" />\n }\n <tedi-dropdown-item-value-label>{{\n item.label()\n }}</tedi-dropdown-item-value-label>\n @if (item.iconRight()) {\n <tedi-icon\n [name]=\"item.iconRight()!\"\n color=\"inherit\"\n [size]=\"18\"\n />\n }\n </tedi-dropdown-item-value>\n </li>\n }\n </tedi-dropdown-content>\n </tedi-dropdown>\n}\n", styles: [".tedi-button{display:inline-flex;gap:var(--_btn-inner-spacing);align-items:center;justify-content:center;padding:var(--_btn-padding);font-family:var(--family-default);font-weight:var(--body-regular-weight);line-height:var(--body-bold-line-height);color:var(--_btn-text);text-decoration:none;cursor:pointer;background:var(--_btn-bg);border:var(--tedi-borders-01) solid var(--_btn-border);border-radius:var(--button-radius-default);transition:.15s ease;transition-property:background-color,border-color}.tedi-button--icon-only{width:var(--button-md-icon-size);height:var(--button-md-icon-size);padding:var(--button-md-icon-padding)}.tedi-button--pl:not(.tedi-button--neutral,.tedi-button--danger-neutral,.tedi-button--neutral-inverted,.tedi-button--primary-button-group,.tedi-button--secondary-button-group){padding-left:calc(var(--_btn-padding-x) + var(--_btn-inner-spacing) - 1px)}.tedi-button--pr:not(.tedi-button--neutral,.tedi-button--danger-neutral,.tedi-button--neutral-inverted,.tedi-button--primary-button-group,.tedi-button--secondary-button-group){padding-right:calc(var(--_btn-padding-x) + var(--_btn-inner-spacing) - 1px)}.tedi-button:hover{color:var(--_btn-hover-text);background:var(--_btn-hover-bg);border-color:var(--_btn-hover-border)}.tedi-button:active{color:var(--_btn-active-text);background:var(--_btn-active-bg);border-color:var(--_btn-active-border)}.tedi-button:focus-visible{color:var(--_btn-focus-text);outline:2px solid var(--_btn-outline);outline-offset:1px;background:var(--_btn-focus-bg);border-color:var(--_btn-focus-border)}.tedi-button:disabled{color:var(--_btn-disabled-text);cursor:not-allowed;background:var(--_btn-disabled-bg);border-color:var(--_btn-disabled-border)}.tedi-button tedi-icon{--_tedi-icon-size: var(--icon-03);color:inherit}.tedi-button--small{font-size:var(--button-text-size-sm);--_btn-padding: calc(var(--_btn-padding-y) - 1px) calc(var(--_btn-padding-x) - 1px);--_btn-inner-spacing: var(--button-sm-inner-spacing);--_btn-padding-y: var(--button-sm-padding-y);--_btn-padding-x: var(--button-sm-padding-x)}.tedi-button--default{font-size:var(--button-text-size-default);--_btn-padding: calc(var(--_btn-padding-y) - 1px) calc(var(--_btn-padding-x) - 1px);--_btn-inner-spacing: var(--button-md-inner-spacing);--_btn-padding-y: var(--button-md-padding-y);--_btn-padding-x: var(--button-md-padding-x)}.tedi-button--primary{--_btn-bg: var(--button-main-primary-background-default);--_btn-border: var(--button-main-primary-border-default);--_btn-text: var(--button-main-primary-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--primary{--_btn-hover-bg: var(--button-main-primary-background-hover, var(--button-main-primary-background-default));--_btn-hover-border: var(--button-main-primary-border-hover, var(--button-main-primary-border-default));--_btn-hover-text: var(--button-main-primary-text-hover, var(--button-main-primary-text-default))}.tedi-button--primary{--_btn-focus-bg: var(--button-main-primary-background-focus, var(--button-main-primary-background-default));--_btn-focus-border: var(--button-main-primary-border-focus, var(--button-main-primary-border-default));--_btn-focus-text: var(--button-main-primary-text-focus, var(--button-main-primary-text-default))}.tedi-button--primary{--_btn-active-bg: var(--button-main-primary-background-active, var(--button-main-primary-background-default));--_btn-active-border: var(--button-main-primary-border-active, var(--button-main-primary-border-default));--_btn-active-text: var(--button-main-primary-text-active, var(--button-main-primary-text-default))}.tedi-button--primary{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-general-background);--_btn-disabled-border: var(--button-main-disabled-general-border)}.tedi-button--secondary{--_btn-bg: var(--button-main-secondary-background-default);--_btn-border: var(--button-main-secondary-border-default);--_btn-text: var(--button-main-secondary-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--secondary{--_btn-hover-bg: var(--button-main-secondary-background-hover, var(--button-main-secondary-background-default));--_btn-hover-border: var(--button-main-secondary-border-hover, var(--button-main-secondary-border-default));--_btn-hover-text: var(--button-main-secondary-text-hover, var(--button-main-secondary-text-default))}.tedi-button--secondary{--_btn-focus-bg: var(--button-main-secondary-background-focus, var(--button-main-secondary-background-default));--_btn-focus-border: var(--button-main-secondary-border-focus, var(--button-main-secondary-border-default));--_btn-focus-text: var(--button-main-secondary-text-focus, var(--button-main-secondary-text-default))}.tedi-button--secondary{--_btn-active-bg: var(--button-main-secondary-background-active, var(--button-main-secondary-background-default));--_btn-active-border: var(--button-main-secondary-border-active, var(--button-main-secondary-border-default));--_btn-active-text: var(--button-main-secondary-text-active, var(--button-main-secondary-text-default))}.tedi-button--secondary{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-general-background);--_btn-disabled-border: var(--button-main-disabled-general-border)}.tedi-button--neutral{--_btn-bg: var(--button-main-neutral-background-default);--_btn-border: var(--button-main-neutral-border-default);--_btn-text: var(--button-main-neutral-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--neutral{--_btn-hover-bg: var(--button-main-neutral-background-hover, var(--button-main-neutral-background-default));--_btn-hover-border: var(--button-main-neutral-border-hover, var(--button-main-neutral-border-default));--_btn-hover-text: var(--button-main-neutral-text-hover, var(--button-main-neutral-text-default))}.tedi-button--neutral{--_btn-focus-bg: var(--button-main-neutral-background-focus, var(--button-main-neutral-background-default));--_btn-focus-border: var(--button-main-neutral-border-focus, var(--button-main-neutral-border-default));--_btn-focus-text: var(--button-main-neutral-text-focus, var(--button-main-neutral-text-default))}.tedi-button--neutral{--_btn-active-bg: var(--button-main-neutral-background-active, var(--button-main-neutral-background-default));--_btn-active-border: var(--button-main-neutral-border-active, var(--button-main-neutral-border-default));--_btn-active-text: var(--button-main-neutral-text-active, var(--button-main-neutral-text-default))}.tedi-button--neutral{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-neutral-background);--_btn-disabled-border: var(--button-main-disabled-neutral-border)}.tedi-button--neutral:where(.tedi-button--small){--_btn-padding-y: var(--button-sm-neutral-padding-y);--_btn-padding-x: var(--button-sm-neutral-padding-x);--_btn-padding: calc(var(--_btn-padding-y) - 1px) var(--_btn-padding-x)}.tedi-button--neutral:where(.tedi-button--default){--_btn-padding-y: var(--button-md-neutral-padding-y);--_btn-padding-x: var(--button-md-neutral-padding-x);--_btn-padding: calc(var(--_btn-padding-y) - 1px) var(--_btn-padding-x)}.tedi-button--success{--_btn-bg: var(--button-main-success-background-default);--_btn-border: var(--button-main-success-border-default);--_btn-text: var(--button-main-success-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--success{--_btn-hover-bg: var(--button-main-success-background-hover, var(--button-main-success-background-default));--_btn-hover-border: var(--button-main-success-border-hover, var(--button-main-success-border-default));--_btn-hover-text: var(--button-main-success-text-hover, var(--button-main-success-text-default))}.tedi-button--success{--_btn-focus-bg: var(--button-main-success-background-focus, var(--button-main-success-background-default));--_btn-focus-border: var(--button-main-success-border-focus, var(--button-main-success-border-default));--_btn-focus-text: var(--button-main-success-text-focus, var(--button-main-success-text-default))}.tedi-button--success{--_btn-active-bg: var(--button-main-success-background-active, var(--button-main-success-background-default));--_btn-active-border: var(--button-main-success-border-active, var(--button-main-success-border-default));--_btn-active-text: var(--button-main-success-text-active, var(--button-main-success-text-default))}.tedi-button--success{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-general-background);--_btn-disabled-border: var(--button-main-disabled-general-border)}.tedi-button--danger{--_btn-bg: var(--button-main-danger-background-default);--_btn-border: var(--button-main-danger-border-default);--_btn-text: var(--button-main-danger-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--danger{--_btn-hover-bg: var(--button-main-danger-background-hover, var(--button-main-danger-background-default));--_btn-hover-border: var(--button-main-danger-border-hover, var(--button-main-danger-border-default));--_btn-hover-text: var(--button-main-danger-text-hover, var(--button-main-danger-text-default))}.tedi-button--danger{--_btn-focus-bg: var(--button-main-danger-background-focus, var(--button-main-danger-background-default));--_btn-focus-border: var(--button-main-danger-border-focus, var(--button-main-danger-border-default));--_btn-focus-text: var(--button-main-danger-text-focus, var(--button-main-danger-text-default))}.tedi-button--danger{--_btn-active-bg: var(--button-main-danger-background-active, var(--button-main-danger-background-default));--_btn-active-border: var(--button-main-danger-border-active, var(--button-main-danger-border-default));--_btn-active-text: var(--button-main-danger-text-active, var(--button-main-danger-text-default))}.tedi-button--danger{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-general-background);--_btn-disabled-border: var(--button-main-disabled-general-border)}.tedi-button--danger-neutral:where(.tedi-button--small){--_btn-padding-y: var(--button-sm-neutral-padding-y);--_btn-padding-x: var(--button-sm-neutral-padding-x);--_btn-padding: calc(var(--_btn-padding-y) - 1px) var(--_btn-padding-x)}.tedi-button--danger-neutral:where(.tedi-button--default){--_btn-padding-y: var(--button-md-neutral-padding-y);--_btn-padding-x: var(--button-md-neutral-padding-x);--_btn-padding: calc(var(--_btn-padding-y) - 1px) var(--_btn-padding-x)}.tedi-button--danger-neutral{--_btn-bg: var(--button-main-danger-neutral-background-default);--_btn-border: var(--button-main-danger-neutral-border-default);--_btn-text: var(--button-main-danger-neutral-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--danger-neutral{--_btn-hover-bg: var(--button-main-danger-neutral-background-hover, var(--button-main-danger-neutral-background-default));--_btn-hover-border: var(--button-main-danger-neutral-border-hover, var(--button-main-danger-neutral-border-default));--_btn-hover-text: var(--button-main-danger-neutral-text-hover, var(--button-main-danger-neutral-text-default))}.tedi-button--danger-neutral{--_btn-focus-bg: var(--button-main-danger-neutral-background-focus, var(--button-main-danger-neutral-background-default));--_btn-focus-border: var(--button-main-danger-neutral-border-focus, var(--button-main-danger-neutral-border-default));--_btn-focus-text: var(--button-main-danger-neutral-text-focus, var(--button-main-danger-neutral-text-default))}.tedi-button--danger-neutral{--_btn-active-bg: var(--button-main-danger-neutral-background-active, var(--button-main-danger-neutral-background-default));--_btn-active-border: var(--button-main-danger-neutral-border-active, var(--button-main-danger-neutral-border-default));--_btn-active-text: var(--button-main-danger-neutral-text-active, var(--button-main-danger-neutral-text-default))}.tedi-button--danger-neutral{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-neutral-background);--_btn-disabled-border: var(--button-main-disabled-neutral-border)}.tedi-button--primary-inverted{--_btn-bg: var(--button-main-primary-inverted-background-default);--_btn-border: var(--button-main-primary-inverted-border-default);--_btn-text: var(--button-main-primary-inverted-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--primary-inverted{--_btn-hover-bg: var(--button-main-primary-inverted-background-hover, var(--button-main-primary-inverted-background-default));--_btn-hover-border: var(--button-main-primary-inverted-border-hover, var(--button-main-primary-inverted-border-default));--_btn-hover-text: var(--button-main-primary-inverted-text-hover, var(--button-main-primary-inverted-text-default))}.tedi-button--primary-inverted{--_btn-focus-bg: var(--button-main-primary-inverted-background-focus, var(--button-main-primary-inverted-background-default));--_btn-focus-border: var(--button-main-primary-inverted-border-focus, var(--button-main-primary-inverted-border-default));--_btn-focus-text: var(--button-main-primary-inverted-text-focus, var(--button-main-primary-inverted-text-default))}.tedi-button--primary-inverted{--_btn-active-bg: var(--button-main-primary-inverted-background-active, var(--button-main-primary-inverted-background-default));--_btn-active-border: var(--button-main-primary-inverted-border-active, var(--button-main-primary-inverted-border-default));--_btn-active-text: var(--button-main-primary-inverted-text-active, var(--button-main-primary-inverted-text-default))}.tedi-button--primary-inverted{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-general-background);--_btn-disabled-border: var(--button-main-disabled-general-border)}.tedi-button--secondary-inverted{--_btn-bg: var(--button-main-secondary-inverted-background-default);--_btn-border: var(--button-main-secondary-inverted-border-default);--_btn-text: var(--button-main-secondary-inverted-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--secondary-inverted{--_btn-hover-bg: var(--button-main-secondary-inverted-background-hover, var(--button-main-secondary-inverted-background-default));--_btn-hover-border: var(--button-main-secondary-inverted-border-hover, var(--button-main-secondary-inverted-border-default));--_btn-hover-text: var(--button-main-secondary-inverted-text-hover, var(--button-main-secondary-inverted-text-default))}.tedi-button--secondary-inverted{--_btn-focus-bg: var(--button-main-secondary-inverted-background-focus, var(--button-main-secondary-inverted-background-default));--_btn-focus-border: var(--button-main-secondary-inverted-border-focus, var(--button-main-secondary-inverted-border-default));--_btn-focus-text: var(--button-main-secondary-inverted-text-focus, var(--button-main-secondary-inverted-text-default))}.tedi-button--secondary-inverted{--_btn-active-bg: var(--button-main-secondary-inverted-background-active, var(--button-main-secondary-inverted-background-default));--_btn-active-border: var(--button-main-secondary-inverted-border-active, var(--button-main-secondary-inverted-border-default));--_btn-active-text: var(--button-main-secondary-inverted-text-active, var(--button-main-secondary-inverted-text-default))}.tedi-button--secondary-inverted{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-general-background);--_btn-disabled-border: var(--button-main-disabled-general-border)}.tedi-button--neutral-inverted{--_btn-bg: var(--button-main-neutral-inverted-background-default);--_btn-border: var(--button-main-neutral-inverted-border-default);--_btn-text: var(--button-main-neutral-inverted-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--neutral-inverted{--_btn-hover-bg: var(--button-main-neutral-inverted-background-hover, var(--button-main-neutral-inverted-background-default));--_btn-hover-border: var(--button-main-neutral-inverted-border-hover, var(--button-main-neutral-inverted-border-default));--_btn-hover-text: var(--button-main-neutral-inverted-text-hover, var(--button-main-neutral-inverted-text-default))}.tedi-button--neutral-inverted{--_btn-focus-bg: var(--button-main-neutral-inverted-background-focus, var(--button-main-neutral-inverted-background-default));--_btn-focus-border: var(--button-main-neutral-inverted-border-focus, var(--button-main-neutral-inverted-border-default));--_btn-focus-text: var(--button-main-neutral-inverted-text-focus, var(--button-main-neutral-inverted-text-default))}.tedi-button--neutral-inverted{--_btn-active-bg: var(--button-main-neutral-inverted-background-active, var(--button-main-neutral-inverted-background-default));--_btn-active-border: var(--button-main-neutral-inverted-border-active, var(--button-main-neutral-inverted-border-default));--_btn-active-text: var(--button-main-neutral-inverted-text-active, var(--button-main-neutral-inverted-text-default))}.tedi-button--neutral-inverted{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-neutral-background);--_btn-disabled-border: var(--button-main-disabled-neutral-border)}.tedi-button--neutral-inverted:where(.tedi-button--small){--_btn-padding-y: var(--button-sm-neutral-padding-y);--_btn-padding-x: var(--button-sm-neutral-padding-x);--_btn-padding: calc(var(--_btn-padding-y) - 1px) var(--_btn-padding-x)}.tedi-button--neutral-inverted:where(.tedi-button--default){--_btn-padding-y: var(--button-md-neutral-padding-y);--_btn-padding-x: var(--button-md-neutral-padding-x);--_btn-padding: calc(var(--_btn-padding-y) - 1px) var(--_btn-padding-x)}.tedi-button--primary-button-group{--_btn-text: var(--button-group-primary-inactive-text);--_btn-bg: var(--button-group-primary-inactive-background);--_btn-border: var(--button-group-primary-inactive-border);--_btn-hover-text: var(--button-group-primary-hover-text);--_btn-hover-bg: var(--button-group-primary-hover-background);--_btn-hover-border: var(--button-group-primary-hover-border);--_btn-active-text: var(--button-group-primary-selected-text);--_btn-active-bg: var(--button-group-primary-selected-background);--_btn-active-border: var(--button-group-primary-selected-border);--_btn-focus-text: var(--button-group-primary-inactive-text);--_btn-focus-bg: var(--button-group-primary-inactive-background);--_btn-focus-border: var(--button-group-primary-inactive-border);--_btn-disabled-text: var(--button-group-primary-disabled-text);--_btn-disabled-bg: var(--button-group-primary-disabled-background);--_btn-disabled-border: var(--button-group-primary-disabled-border);--_btn-outline: var(--tedi-primary-500);border-radius:var(--button-radius-sm)}.tedi-button--primary-button-group[aria-pressed=true]:not(:disabled){z-index:1;color:var(--button-group-primary-selected-text);background:var(--button-group-primary-selected-background);border-color:var(--button-group-primary-selected-border)}.tedi-button--secondary-button-group{--_btn-text: var(--button-group-secondary-inactive-text);--_btn-bg: var(--button-group-secondary-inactive-background);--_btn-border: var(--button-group-secondary-inactive-border);--_btn-hover-text: var(--button-group-secondary-hover-text);--_btn-hover-bg: var(--button-group-secondary-hover-background);--_btn-hover-border: var(--button-group-secondary-hover-border);--_btn-active-text: var(--button-group-secondary-selected-text);--_btn-active-bg: var(--button-group-secondary-selected-background);--_btn-active-border: var(--button-group-secondary-selected-border);--_btn-focus-text: var(--button-group-secondary-inactive-text);--_btn-focus-bg: var(--button-group-secondary-inactive-background);--_btn-focus-border: var(--button-group-secondary-inactive-border);--_btn-disabled-text: var(--button-group-secondary-disabled-text);--_btn-disabled-bg: var(--button-group-secondary-disabled-background);--_btn-disabled-border: var(--button-group-secondary-disabled-border);--_btn-outline: var(--tedi-primary-500);border-radius:var(--button-radius-sm)}.tedi-button--secondary-button-group[aria-pressed=true]:not(:disabled){z-index:1;color:var(--button-group-secondary-selected-text);background:var(--button-group-secondary-selected-background);border-color:var(--button-group-secondary-selected-border);box-shadow:inset 0 0 0 var(--tedi-borders-01) var(--button-group-secondary-selected-border)}.tedi-button[class*=-inverted]:focus-visible{outline:none;border-color:var(--tedi-neutral-100);box-shadow:0 0 0 1px var(--tedi-neutral-100),0 0 0 3px var(--_btn-outline)}.tedi-button--icon-only.tedi-button--neutral{--_btn-bg: var(--button-main-neutral-icon-only-background-default);--_btn-border: var(--button-main-neutral-border-default);--_btn-text: var(--button-main-neutral-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--icon-only.tedi-button--neutral{--_btn-hover-bg: var(--button-main-neutral-icon-only-background-hover, var(--button-main-neutral-icon-only-background-default));--_btn-hover-border: var(--button-main-neutral-border-hover, var(--button-main-neutral-border-default));--_btn-hover-text: var(--button-main-neutral-text-hover, var(--button-main-neutral-text-default))}.tedi-button--icon-only.tedi-button--neutral{--_btn-focus-bg: var(--button-main-neutral-icon-only-background-focus, var(--button-main-neutral-icon-only-background-default));--_btn-focus-border: var(--button-main-neutral-border-focus, var(--button-main-neutral-border-default));--_btn-focus-text: var(--button-main-neutral-text-focus, var(--button-main-neutral-text-default))}.tedi-button--icon-only.tedi-button--neutral{--_btn-active-bg: var(--button-main-neutral-icon-only-background-active, var(--button-main-neutral-icon-only-background-default));--_btn-active-border: var(--button-main-neutral-border-active, var(--button-main-neutral-border-default));--_btn-active-text: var(--button-main-neutral-text-active, var(--button-main-neutral-text-default))}.tedi-button--icon-only.tedi-button--neutral{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-neutral-background);--_btn-disabled-border: var(--button-main-disabled-neutral-border)}.tedi-button--icon-only.tedi-button--neutral-inverted{--_btn-bg: var(--button-main-neutral-inverted-icon-only-background-default);--_btn-border: var(--button-main-neutral-inverted-border-default);--_btn-text: var(--button-main-neutral-inverted-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--icon-only.tedi-button--neutral-inverted{--_btn-hover-bg: var(--button-main-neutral-inverted-icon-only-background-hover, var(--button-main-neutral-inverted-icon-only-background-default));--_btn-hover-border: var(--button-main-neutral-inverted-border-hover, var(--button-main-neutral-inverted-border-default));--_btn-hover-text: var(--button-main-neutral-inverted-text-hover, var(--button-main-neutral-inverted-text-default))}.tedi-button--icon-only.tedi-button--neutral-inverted{--_btn-focus-bg: var(--button-main-neutral-inverted-icon-only-background-focus, var(--button-main-neutral-inverted-icon-only-background-default));--_btn-focus-border: var(--button-main-neutral-inverted-border-focus, var(--button-main-neutral-inverted-border-default));--_btn-focus-text: var(--button-main-neutral-inverted-text-focus, var(--button-main-neutral-inverted-text-default))}.tedi-button--icon-only.tedi-button--neutral-inverted{--_btn-active-bg: var(--button-main-neutral-inverted-icon-only-background-active, var(--button-main-neutral-inverted-icon-only-background-default));--_btn-active-border: var(--button-main-neutral-inverted-border-active, var(--button-main-neutral-inverted-border-default));--_btn-active-text: var(--button-main-neutral-inverted-text-active, var(--button-main-neutral-inverted-text-default))}.tedi-button--icon-only.tedi-button--neutral-inverted{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-neutral-background);--_btn-disabled-border: var(--button-main-disabled-neutral-border)}.tedi-button--icon-only.tedi-button--danger-neutral{--_btn-bg: var(--button-main-danger-neutral-icon-only-background-default);--_btn-border: var(--button-main-danger-neutral-border-default);--_btn-text: var(--button-main-danger-neutral-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-button--icon-only.tedi-button--danger-neutral{--_btn-hover-bg: var(--button-main-danger-neutral-icon-only-background-hover, var(--button-main-danger-neutral-icon-only-background-default));--_btn-hover-border: var(--button-main-danger-neutral-border-hover, var(--button-main-danger-neutral-border-default));--_btn-hover-text: var(--button-main-danger-neutral-text-hover, var(--button-main-danger-neutral-text-default))}.tedi-button--icon-only.tedi-button--danger-neutral{--_btn-focus-bg: var(--button-main-danger-neutral-icon-only-background-focus, var(--button-main-danger-neutral-icon-only-background-default));--_btn-focus-border: var(--button-main-danger-neutral-border-focus, var(--button-main-danger-neutral-border-default));--_btn-focus-text: var(--button-main-danger-neutral-text-focus, var(--button-main-danger-neutral-text-default))}.tedi-button--icon-only.tedi-button--danger-neutral{--_btn-active-bg: var(--button-main-danger-neutral-icon-only-background-active, var(--button-main-danger-neutral-icon-only-background-default));--_btn-active-border: var(--button-main-danger-neutral-border-active, var(--button-main-danger-neutral-border-default));--_btn-active-text: var(--button-main-danger-neutral-text-active, var(--button-main-danger-neutral-text-default))}.tedi-button--icon-only.tedi-button--danger-neutral{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-neutral-background);--_btn-disabled-border: var(--button-main-disabled-neutral-border)}.tedi-button--icon-only.tedi-button--small{width:var(--button-sm-icon-size);height:var(--button-sm-icon-size);padding:var(--button-sm-icon-padding)}.tedi-button-group{display:flex}.tedi-button-group--stretch .tedi-button{flex:1}.tedi-button-group .tedi-button:focus-visible{z-index:2}.tedi-button-group .tedi-button[aria-pressed=true]{z-index:1}.tedi-button-group .tedi-button[aria-pressed=true]:not(:disabled){color:var(--_btn-active-text);background:var(--_btn-active-bg);border-color:var(--_btn-active-border)}.tedi-button-group>.tedi-button:not(:first-child){margin-left:calc(var(--tedi-borders-01) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.tedi-button-group>.tedi-button:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.tedi-button-group tedi-tooltip:not(:first-child) tedi-tooltip-trigger{margin-left:calc(var(--tedi-borders-01) * -1)}.tedi-button-group tedi-tooltip:not(:first-child) .tedi-button{border-top-left-radius:0;border-bottom-left-radius:0}.tedi-button-group tedi-tooltip:not(:last-child) .tedi-button{border-top-right-radius:0;border-bottom-right-radius:0}@media(max-width:47.98rem){.tedi-button-group .tedi-button{flex:1}}.tedi-button-group--dropdown-mode>.tedi-button,.tedi-button-group--dropdown-mode>tedi-tooltip{display:none}.tedi-button-group__dropdown{display:flex;flex:1 1 auto}.tedi-button-group__dropdown-trigger{flex:1}.tedi-button-group__dropdown-trigger[aria-expanded=true]{color:var(--_btn-active-text);background:var(--_btn-active-bg);border-color:var(--_btn-active-border)}.tedi-button-group--segmented .tedi-button-group__dropdown-trigger{border-radius:var(--button-radius-sm)}.tedi-button-group--segmented .tedi-button-group__dropdown-trigger.tedi-button--secondary{padding:calc(var(--_btn-padding-y) - var(--tedi-borders-02)) calc(var(--_btn-padding-x) - var(--tedi-borders-02));border-width:var(--tedi-borders-02)}.tedi-button-group--segmented .tedi-button-group__dropdown-trigger.tedi-button--secondary:not([aria-expanded=true]){border-color:var(--button-group-secondary-selected-border)}.tedi-button.tedi-button-group-button{gap:0}.tedi-button-group-button__label{padding-inline:var(--_btn-inner-spacing)}\n"] }]
3399
+ }, template: "<ng-content />\n\n@if (isDropdownMode()) {\n <tedi-dropdown\n class=\"tedi-button-group__dropdown\"\n appendTo=\"body\"\n [offset]=\"0\"\n >\n <button\n tedi-dropdown-trigger\n tedi-button\n type=\"button\"\n [variant]=\"triggerVariant()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n class=\"tedi-button-group__dropdown-trigger\"\n >\n <tedi-icon [name]=\"triggerIcon()\" color=\"inherit\" [size]=\"18\" />\n {{ triggerLabel() }}\n </button>\n\n <tedi-dropdown-content>\n @for (item of items(); track item.value()) {\n <li\n tedi-dropdown-item\n [value]=\"item.value()\"\n [disabled]=\"item.disabled()\"\n [class.tedi-dropdown-item--selected]=\"item.selected()\"\n (itemSelect)=\"onDropdownItemSelect(item)\"\n >\n <tedi-dropdown-item-value>\n @if (item.iconLeft()) {\n <tedi-icon\n [name]=\"item.iconLeft()!\"\n color=\"inherit\"\n [size]=\"18\"\n />\n } @else if (item.icon()) {\n <tedi-icon [name]=\"item.icon()!\" color=\"inherit\" [size]=\"18\" />\n }\n <tedi-dropdown-item-value-label>{{\n item.label()\n }}</tedi-dropdown-item-value-label>\n @if (item.iconRight()) {\n <tedi-icon\n [name]=\"item.iconRight()!\"\n color=\"inherit\"\n [size]=\"18\"\n />\n }\n </tedi-dropdown-item-value>\n </li>\n }\n </tedi-dropdown-content>\n </tedi-dropdown>\n}\n", styles: [".tedi-button-group{display:flex}.tedi-button-group--stretch .tedi-button{flex:1}.tedi-button-group .tedi-button:focus-visible{z-index:2}.tedi-button-group .tedi-button[aria-pressed=true]{z-index:1}.tedi-button-group .tedi-button[aria-pressed=true]:not(:disabled){color:var(--_btn-active-text);background:var(--_btn-active-bg);border-color:var(--_btn-active-border)}.tedi-button-group>.tedi-button:not(:first-child){margin-left:calc(var(--tedi-borders-01) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.tedi-button-group>.tedi-button:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.tedi-button-group tedi-tooltip:not(:first-child) tedi-tooltip-trigger{margin-left:calc(var(--tedi-borders-01) * -1)}.tedi-button-group tedi-tooltip:not(:first-child) .tedi-button{border-top-left-radius:0;border-bottom-left-radius:0}.tedi-button-group tedi-tooltip:not(:last-child) .tedi-button{border-top-right-radius:0;border-bottom-right-radius:0}@media(max-width:47.98rem){.tedi-button-group .tedi-button{flex:1}}.tedi-button-group--dropdown-mode>.tedi-button,.tedi-button-group--dropdown-mode>tedi-tooltip{display:none}.tedi-button-group__dropdown{display:flex;flex:1 1 auto}.tedi-button-group__dropdown-trigger{flex:1}.tedi-button-group__dropdown-trigger[aria-expanded=true]{color:var(--_btn-active-text);background:var(--_btn-active-bg);border-color:var(--_btn-active-border)}.tedi-button-group--segmented .tedi-button-group__dropdown-trigger{border-radius:var(--button-radius-sm)}.tedi-button-group--segmented .tedi-button-group__dropdown-trigger.tedi-button--secondary{padding:calc(var(--_btn-padding-y) - var(--tedi-borders-02)) calc(var(--_btn-padding-x) - var(--tedi-borders-02));border-width:var(--tedi-borders-02)}.tedi-button-group--segmented .tedi-button-group__dropdown-trigger.tedi-button--secondary:not([aria-expanded=true]){border-color:var(--button-group-secondary-selected-border)}.tedi-button.tedi-button-group-button{gap:0}.tedi-button-group-button__label{padding-inline:var(--_btn-inner-spacing)}\n"] }]
3254
3400
  }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], stretch: [{ type: i0.Input, args: [{ isSignal: true, alias: "stretch", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], enableMobileDropdown: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableMobileDropdown", required: false }] }], mobileBreakpoint: [{ type: i0.Input, args: [{ isSignal: true, alias: "mobileBreakpoint", required: false }] }], dropdownLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownLabel", required: false }] }], dropdownLabelMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownLabelMode", required: false }] }], selectionChange: [{ type: i0.Output, args: ["selectionChange"] }], items: [{ type: i0.ContentChildren, args: [forwardRef(() => ButtonGroupButtonDirective), { isSignal: true }] }] } });
3255
3401
 
3256
3402
  /**
@@ -3396,12 +3542,19 @@ class AlertComponent {
3396
3542
  * @default false
3397
3543
  */
3398
3544
  showClose = input(false, ...(ngDevMode ? [{ debugName: "showClose" }] : []));
3545
+ /**
3546
+ * Accessible name for the close button. Override the generic default
3547
+ * ("Close") when several alerts can be on screen at once, so the button
3548
+ * says which one it closes.
3549
+ */
3550
+ closeAriaLabel = input(...(ngDevMode ? [undefined, { debugName: "closeAriaLabel" }] : []));
3399
3551
  /**
3400
3552
  * The ARIA role of the alert, informing screen readers about the alert's purpose.
3553
+ * The role carries its own live-region semantics, so no separate `aria-live` is set.
3401
3554
  * Options:
3402
- * - 'alert': For high-priority messages that demand immediate attention.
3403
- * - 'status': For less urgent messages providing feedback or updates.
3404
- * - 'none': Used when no ARIA role is needed.
3555
+ * - 'alert': For high-priority messages that demand immediate attention (announced assertively).
3556
+ * - 'status': For less urgent messages providing feedback or updates (announced politely).
3557
+ * - 'none': No role and no announcement.
3405
3558
  * @default alert
3406
3559
  */
3407
3560
  role = input("alert", ...(ngDevMode ? [{ debugName: "role" }] : []));
@@ -3436,22 +3589,6 @@ class AlertComponent {
3436
3589
  * Close click output
3437
3590
  */
3438
3591
  closeClick = output();
3439
- getAriaLive = computed(() => {
3440
- switch (this.role()) {
3441
- case "alert":
3442
- return "assertive";
3443
- case "status":
3444
- return "polite";
3445
- case "none":
3446
- return "off";
3447
- }
3448
- }, ...(ngDevMode ? [{ debugName: "getAriaLive" }] : []));
3449
- getAriaLabel = computed(() => {
3450
- if (this.title()) {
3451
- return `${this.type()} alert: ${this.title()}`;
3452
- }
3453
- return `${this.type()} alert`;
3454
- }, ...(ngDevMode ? [{ debugName: "getAriaLabel" }] : []));
3455
3592
  classes = computed(() => {
3456
3593
  return {
3457
3594
  "tedi-alert": true,
@@ -3472,18 +3609,16 @@ class AlertComponent {
3472
3609
  }
3473
3610
  }
3474
3611
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3475
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: AlertComponent, isStandalone: true, selector: "tedi-alert", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, showClose: { classPropertyName: "showClose", publicName: "showClose", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, titleElement: { classPropertyName: "titleElement", publicName: "titleElement", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, closeDelay: { classPropertyName: "closeDelay", publicName: "closeDelay", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", closeClick: "closeClick" }, host: { properties: { "style.display": "open() ? 'flex' : 'none'", "attr.aria-live": "getAriaLive()", "attr.aria-label": "getAriaLabel()", "class": "classes()", "attr.role": "role() === 'none' ? null : role()" } }, ngImport: i0, template: "<div class=\"tedi-alert__body\">\n @if (title()) {\n <div class=\"tedi-alert__head\">\n @if (icon()) {\n <tedi-icon [name]=\"icon()\" [size]=\"18\" />\n }\n <ng-container *ngTemplateOutlet=\"heading\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n } @else {\n <div class=\"tedi-alert__content\">\n @if (icon()) {\n <tedi-icon\n [name]=\"icon()\"\n [size]=\"18\"\n class=\"tedi-alert__content-icon\"\n />\n }\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n }\n</div>\n\n<div class=\"tedi-alert__action\">\n <ng-content select=\"[tedi-alert-action]\"></ng-content>\n</div>\n\n@if (showClose()) {\n <button\n tedi-closing-button\n class=\"tedi-alert__close\"\n size=\"small\"\n [iconSize]=\"18\"\n (click)=\"handleClose()\"\n ></button>\n}\n\n<ng-template #heading>\n @if (titleElement() === \"h1\") {\n <h1 class=\"tedi-alert__title\">{{ title() }}</h1>\n } @else if (titleElement() === \"h2\") {\n <h2 class=\"tedi-alert__title\">{{ title() }}</h2>\n } @else if (titleElement() === \"h3\") {\n <h3 class=\"tedi-alert__title\">{{ title() }}</h3>\n } @else if (titleElement() === \"h4\") {\n <h4 class=\"tedi-alert__title\">{{ title() }}</h4>\n } @else if (titleElement() === \"h5\") {\n <h5 class=\"tedi-alert__title\">{{ title() }}</h5>\n } @else if (titleElement() === \"h6\") {\n <h6 class=\"tedi-alert__title\">{{ title() }}</h6>\n } @else {\n <div class=\"tedi-alert__title\">{{ title() }}</div>\n }\n</ng-template>\n\n<ng-template #content>\n <div>\n <ng-content></ng-content>\n </div>\n</ng-template>\n", styles: [".tedi-alert{--_close-button-size: 18px;--_padding-y: var(--alert-default-padding-y);--_padding-x: var(--alert-default-padding-x);position:relative;display:flex;flex-direction:column;gap:var(--layout-grid-gutters-04);padding:var(--_padding-y) var(--_padding-x);border:1px solid;border-radius:var(--alert-radius);color:var(--general-text-primary);background-color:var(--alert-default-background-info);border-color:var(--alert-default-border-info)}.tedi-alert__body{display:contents}.tedi-alert__head{display:flex;gap:var(--layout-grid-gutters-04);align-items:center}.tedi-alert:has(.tedi-alert__close):not(:has(.tedi-alert__action>*)){padding-right:calc(var(--layout-grid-gutters-04) + var(--_close-button-size) + var(--_padding-x))}.tedi-alert__close{position:absolute;top:var(--_padding-y);right:var(--_padding-x)}.tedi-alert__action{display:none}.tedi-alert__action:has(>*){display:flex;flex-shrink:0;align-items:center}.tedi-alert:has(.tedi-alert__action>*){flex-direction:row;gap:var(--layout-grid-gutters-12);align-items:center}.tedi-alert:has(.tedi-alert__action>*) .tedi-alert__body{display:flex;flex:1;flex-direction:column;gap:var(--layout-grid-gutters-04)}.tedi-alert:has(.tedi-alert__action>*) .tedi-alert__close{display:none}@media(max-width:35.98rem){.tedi-alert:has(.tedi-alert__action>*){flex-direction:column;align-items:flex-start}}.tedi-alert__content{display:flex;gap:var(--layout-grid-gutters-08);align-items:flex-start}.tedi-alert__content .tedi-alert__content-icon{line-height:var(--body-regular-line-height)}.tedi-alert__title{font-size:var(--heading-h5-size);font-weight:var(--heading-h5-weight);line-height:var(--heading-h5-line-height)}.tedi-alert--size-default{font-size:var(--body-regular-size)}.tedi-alert--size-small{--_padding-y: var(--alert-default-padding-y-sm);--_padding-x: var(--alert-default-padding-x-sm);gap:var(--layout-grid-gutters-02);font-size:var(--body-small-regular-size);line-height:var(--body-small-regular-line-height)}.tedi-alert--size-small .tedi-alert__content{gap:var(--layout-grid-gutters-04)}.tedi-alert--size-small .tedi-alert__content .tedi-alert__content-icon{line-height:var(--body-small-regular-line-height)}.tedi-alert--info{color:var(--general-text-primary);background-color:var(--alert-default-background-info);border-color:var(--alert-default-border-info)}.tedi-alert--success{color:var(--general-text-primary);background-color:var(--alert-default-background-success);border-color:var(--alert-default-border-success)}.tedi-alert--warning{color:var(--general-text-primary);background-color:var(--alert-default-background-warning);border-color:var(--alert-default-border-warning)}.tedi-alert--danger{color:var(--general-text-primary);background-color:var(--alert-default-background-danger);border-color:var(--alert-default-border-danger)}.tedi-alert--global{width:100%;border:0;border-radius:0}.tedi-alert--no-side-borders{border-right:none;border-left:none;border-radius:0}@media print{.tedi-alert{color:var(--general-text-primary);background-color:var(--tedi-neutral-100);border-color:var(--tedi-neutral-350)}}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "component", type: ClosingButtonComponent, selector: "button[tedi-closing-button]", inputs: ["size", "iconSize", "icon", "ariaLabel", "showTitle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
3612
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: AlertComponent, isStandalone: true, selector: "tedi-alert", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, showClose: { classPropertyName: "showClose", publicName: "showClose", isSignal: true, isRequired: false, transformFunction: null }, closeAriaLabel: { classPropertyName: "closeAriaLabel", publicName: "closeAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, titleElement: { classPropertyName: "titleElement", publicName: "titleElement", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, closeDelay: { classPropertyName: "closeDelay", publicName: "closeDelay", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", closeClick: "closeClick" }, host: { properties: { "style.display": "open() ? 'flex' : 'none'", "class": "classes()", "attr.role": "role() === 'none' ? null : role()" } }, ngImport: i0, template: "<div class=\"tedi-alert__body\">\n @if (title()) {\n <div class=\"tedi-alert__head\">\n @if (icon()) {\n <tedi-icon [name]=\"icon()\" [size]=\"18\" />\n }\n <ng-container *ngTemplateOutlet=\"heading\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n } @else {\n <div class=\"tedi-alert__content\">\n @if (icon()) {\n <tedi-icon\n [name]=\"icon()\"\n [size]=\"18\"\n class=\"tedi-alert__content-icon\"\n />\n }\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n }\n</div>\n\n<div class=\"tedi-alert__action\">\n <ng-content select=\"[tedi-alert-action]\"></ng-content>\n</div>\n\n@if (showClose()) {\n <button\n tedi-closing-button\n class=\"tedi-alert__close\"\n size=\"small\"\n [iconSize]=\"18\"\n [ariaLabel]=\"closeAriaLabel()\"\n (click)=\"handleClose()\"\n ></button>\n}\n\n<ng-template #heading>\n @if (titleElement() === \"h1\") {\n <h1 class=\"tedi-alert__title\">{{ title() }}</h1>\n } @else if (titleElement() === \"h2\") {\n <h2 class=\"tedi-alert__title\">{{ title() }}</h2>\n } @else if (titleElement() === \"h3\") {\n <h3 class=\"tedi-alert__title\">{{ title() }}</h3>\n } @else if (titleElement() === \"h4\") {\n <h4 class=\"tedi-alert__title\">{{ title() }}</h4>\n } @else if (titleElement() === \"h5\") {\n <h5 class=\"tedi-alert__title\">{{ title() }}</h5>\n } @else if (titleElement() === \"h6\") {\n <h6 class=\"tedi-alert__title\">{{ title() }}</h6>\n } @else {\n <div class=\"tedi-alert__title\">{{ title() }}</div>\n }\n</ng-template>\n\n<ng-template #content>\n <div>\n <ng-content></ng-content>\n </div>\n</ng-template>\n", styles: [".tedi-alert{--_close-button-size: 18px;--_padding-y: var(--alert-default-padding-y);--_padding-x: var(--alert-default-padding-x);position:relative;display:flex;flex-direction:column;gap:var(--layout-grid-gutters-04);padding:var(--_padding-y) var(--_padding-x);border:1px solid;border-radius:var(--alert-radius);color:var(--alert-default-text-info);background-color:var(--alert-default-background-info);border-color:var(--alert-default-border-info)}.tedi-alert__body{display:contents}.tedi-alert__head{display:flex;gap:var(--layout-grid-gutters-04);align-items:center}.tedi-alert:has(.tedi-alert__close):not(:has(.tedi-alert__action>*)){padding-right:calc(var(--layout-grid-gutters-04) + var(--_close-button-size) + var(--_padding-x))}.tedi-alert__close{position:absolute;top:var(--_padding-y);right:var(--_padding-x)}.tedi-alert__action{display:none}.tedi-alert__action:has(>*){display:flex;flex-shrink:0;align-items:center}.tedi-alert:has(.tedi-alert__action>*){flex-direction:row;gap:var(--layout-grid-gutters-12);align-items:center}.tedi-alert:has(.tedi-alert__action>*) .tedi-alert__body{display:flex;flex:1;flex-direction:column;gap:var(--layout-grid-gutters-04)}.tedi-alert:has(.tedi-alert__action>*) .tedi-alert__close{display:none}@media(max-width:35.98rem){.tedi-alert:has(.tedi-alert__action>*){flex-direction:column;align-items:flex-start}}.tedi-alert__content{display:flex;gap:var(--layout-grid-gutters-08);align-items:flex-start}.tedi-alert__content .tedi-alert__content-icon{line-height:var(--body-regular-line-height)}.tedi-alert__title{font-size:var(--heading-h5-size);font-weight:var(--heading-h5-weight);line-height:var(--heading-h5-line-height)}.tedi-alert--size-default{font-size:var(--body-regular-size)}.tedi-alert--size-small{--_padding-y: var(--alert-default-padding-y-sm);--_padding-x: var(--alert-default-padding-x-sm);gap:var(--layout-grid-gutters-02);font-size:var(--body-small-regular-size);line-height:var(--body-small-regular-line-height)}.tedi-alert--size-small .tedi-alert__content{gap:var(--layout-grid-gutters-04)}.tedi-alert--size-small .tedi-alert__content .tedi-alert__content-icon{line-height:var(--body-small-regular-line-height)}.tedi-alert--info{color:var(--alert-default-text-info);background-color:var(--alert-default-background-info);border-color:var(--alert-default-border-info)}.tedi-alert--success{color:var(--alert-default-text-success);background-color:var(--alert-default-background-success);border-color:var(--alert-default-border-success)}.tedi-alert--warning{color:var(--alert-default-text-warning);background-color:var(--alert-default-background-warning);border-color:var(--alert-default-border-warning)}.tedi-alert--danger{color:var(--alert-default-text-danger);background-color:var(--alert-default-background-danger);border-color:var(--alert-default-border-danger)}.tedi-alert--global{width:100%;border:0;border-radius:0}.tedi-alert--no-side-borders{border-right:none;border-left:none;border-radius:0}@media print{.tedi-alert{color:var(--general-text-primary);background-color:var(--tedi-neutral-100);border-color:var(--tedi-neutral-350)}}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "component", type: ClosingButtonComponent, selector: "button[tedi-closing-button]", inputs: ["size", "iconSize", "icon", "ariaLabel", "showTitle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
3476
3613
  }
3477
3614
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: AlertComponent, decorators: [{
3478
3615
  type: Component,
3479
3616
  args: [{ standalone: true, selector: "tedi-alert", imports: [IconComponent, ClosingButtonComponent, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
3480
3617
  "[style.display]": "open() ? 'flex' : 'none'",
3481
- "[attr.aria-live]": "getAriaLive()",
3482
- "[attr.aria-label]": "getAriaLabel()",
3483
3618
  "[class]": "classes()",
3484
3619
  "[attr.role]": "role() === 'none' ? null : role()",
3485
- }, template: "<div class=\"tedi-alert__body\">\n @if (title()) {\n <div class=\"tedi-alert__head\">\n @if (icon()) {\n <tedi-icon [name]=\"icon()\" [size]=\"18\" />\n }\n <ng-container *ngTemplateOutlet=\"heading\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n } @else {\n <div class=\"tedi-alert__content\">\n @if (icon()) {\n <tedi-icon\n [name]=\"icon()\"\n [size]=\"18\"\n class=\"tedi-alert__content-icon\"\n />\n }\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n }\n</div>\n\n<div class=\"tedi-alert__action\">\n <ng-content select=\"[tedi-alert-action]\"></ng-content>\n</div>\n\n@if (showClose()) {\n <button\n tedi-closing-button\n class=\"tedi-alert__close\"\n size=\"small\"\n [iconSize]=\"18\"\n (click)=\"handleClose()\"\n ></button>\n}\n\n<ng-template #heading>\n @if (titleElement() === \"h1\") {\n <h1 class=\"tedi-alert__title\">{{ title() }}</h1>\n } @else if (titleElement() === \"h2\") {\n <h2 class=\"tedi-alert__title\">{{ title() }}</h2>\n } @else if (titleElement() === \"h3\") {\n <h3 class=\"tedi-alert__title\">{{ title() }}</h3>\n } @else if (titleElement() === \"h4\") {\n <h4 class=\"tedi-alert__title\">{{ title() }}</h4>\n } @else if (titleElement() === \"h5\") {\n <h5 class=\"tedi-alert__title\">{{ title() }}</h5>\n } @else if (titleElement() === \"h6\") {\n <h6 class=\"tedi-alert__title\">{{ title() }}</h6>\n } @else {\n <div class=\"tedi-alert__title\">{{ title() }}</div>\n }\n</ng-template>\n\n<ng-template #content>\n <div>\n <ng-content></ng-content>\n </div>\n</ng-template>\n", styles: [".tedi-alert{--_close-button-size: 18px;--_padding-y: var(--alert-default-padding-y);--_padding-x: var(--alert-default-padding-x);position:relative;display:flex;flex-direction:column;gap:var(--layout-grid-gutters-04);padding:var(--_padding-y) var(--_padding-x);border:1px solid;border-radius:var(--alert-radius);color:var(--general-text-primary);background-color:var(--alert-default-background-info);border-color:var(--alert-default-border-info)}.tedi-alert__body{display:contents}.tedi-alert__head{display:flex;gap:var(--layout-grid-gutters-04);align-items:center}.tedi-alert:has(.tedi-alert__close):not(:has(.tedi-alert__action>*)){padding-right:calc(var(--layout-grid-gutters-04) + var(--_close-button-size) + var(--_padding-x))}.tedi-alert__close{position:absolute;top:var(--_padding-y);right:var(--_padding-x)}.tedi-alert__action{display:none}.tedi-alert__action:has(>*){display:flex;flex-shrink:0;align-items:center}.tedi-alert:has(.tedi-alert__action>*){flex-direction:row;gap:var(--layout-grid-gutters-12);align-items:center}.tedi-alert:has(.tedi-alert__action>*) .tedi-alert__body{display:flex;flex:1;flex-direction:column;gap:var(--layout-grid-gutters-04)}.tedi-alert:has(.tedi-alert__action>*) .tedi-alert__close{display:none}@media(max-width:35.98rem){.tedi-alert:has(.tedi-alert__action>*){flex-direction:column;align-items:flex-start}}.tedi-alert__content{display:flex;gap:var(--layout-grid-gutters-08);align-items:flex-start}.tedi-alert__content .tedi-alert__content-icon{line-height:var(--body-regular-line-height)}.tedi-alert__title{font-size:var(--heading-h5-size);font-weight:var(--heading-h5-weight);line-height:var(--heading-h5-line-height)}.tedi-alert--size-default{font-size:var(--body-regular-size)}.tedi-alert--size-small{--_padding-y: var(--alert-default-padding-y-sm);--_padding-x: var(--alert-default-padding-x-sm);gap:var(--layout-grid-gutters-02);font-size:var(--body-small-regular-size);line-height:var(--body-small-regular-line-height)}.tedi-alert--size-small .tedi-alert__content{gap:var(--layout-grid-gutters-04)}.tedi-alert--size-small .tedi-alert__content .tedi-alert__content-icon{line-height:var(--body-small-regular-line-height)}.tedi-alert--info{color:var(--general-text-primary);background-color:var(--alert-default-background-info);border-color:var(--alert-default-border-info)}.tedi-alert--success{color:var(--general-text-primary);background-color:var(--alert-default-background-success);border-color:var(--alert-default-border-success)}.tedi-alert--warning{color:var(--general-text-primary);background-color:var(--alert-default-background-warning);border-color:var(--alert-default-border-warning)}.tedi-alert--danger{color:var(--general-text-primary);background-color:var(--alert-default-background-danger);border-color:var(--alert-default-border-danger)}.tedi-alert--global{width:100%;border:0;border-radius:0}.tedi-alert--no-side-borders{border-right:none;border-left:none;border-radius:0}@media print{.tedi-alert{color:var(--general-text-primary);background-color:var(--tedi-neutral-100);border-color:var(--tedi-neutral-350)}}\n"] }]
3486
- }], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], showClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClose", required: false }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], titleElement: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleElement", required: false }] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], closeDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeDelay", required: false }] }], closeClick: [{ type: i0.Output, args: ["closeClick"] }] } });
3620
+ }, template: "<div class=\"tedi-alert__body\">\n @if (title()) {\n <div class=\"tedi-alert__head\">\n @if (icon()) {\n <tedi-icon [name]=\"icon()\" [size]=\"18\" />\n }\n <ng-container *ngTemplateOutlet=\"heading\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n } @else {\n <div class=\"tedi-alert__content\">\n @if (icon()) {\n <tedi-icon\n [name]=\"icon()\"\n [size]=\"18\"\n class=\"tedi-alert__content-icon\"\n />\n }\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n }\n</div>\n\n<div class=\"tedi-alert__action\">\n <ng-content select=\"[tedi-alert-action]\"></ng-content>\n</div>\n\n@if (showClose()) {\n <button\n tedi-closing-button\n class=\"tedi-alert__close\"\n size=\"small\"\n [iconSize]=\"18\"\n [ariaLabel]=\"closeAriaLabel()\"\n (click)=\"handleClose()\"\n ></button>\n}\n\n<ng-template #heading>\n @if (titleElement() === \"h1\") {\n <h1 class=\"tedi-alert__title\">{{ title() }}</h1>\n } @else if (titleElement() === \"h2\") {\n <h2 class=\"tedi-alert__title\">{{ title() }}</h2>\n } @else if (titleElement() === \"h3\") {\n <h3 class=\"tedi-alert__title\">{{ title() }}</h3>\n } @else if (titleElement() === \"h4\") {\n <h4 class=\"tedi-alert__title\">{{ title() }}</h4>\n } @else if (titleElement() === \"h5\") {\n <h5 class=\"tedi-alert__title\">{{ title() }}</h5>\n } @else if (titleElement() === \"h6\") {\n <h6 class=\"tedi-alert__title\">{{ title() }}</h6>\n } @else {\n <div class=\"tedi-alert__title\">{{ title() }}</div>\n }\n</ng-template>\n\n<ng-template #content>\n <div>\n <ng-content></ng-content>\n </div>\n</ng-template>\n", styles: [".tedi-alert{--_close-button-size: 18px;--_padding-y: var(--alert-default-padding-y);--_padding-x: var(--alert-default-padding-x);position:relative;display:flex;flex-direction:column;gap:var(--layout-grid-gutters-04);padding:var(--_padding-y) var(--_padding-x);border:1px solid;border-radius:var(--alert-radius);color:var(--alert-default-text-info);background-color:var(--alert-default-background-info);border-color:var(--alert-default-border-info)}.tedi-alert__body{display:contents}.tedi-alert__head{display:flex;gap:var(--layout-grid-gutters-04);align-items:center}.tedi-alert:has(.tedi-alert__close):not(:has(.tedi-alert__action>*)){padding-right:calc(var(--layout-grid-gutters-04) + var(--_close-button-size) + var(--_padding-x))}.tedi-alert__close{position:absolute;top:var(--_padding-y);right:var(--_padding-x)}.tedi-alert__action{display:none}.tedi-alert__action:has(>*){display:flex;flex-shrink:0;align-items:center}.tedi-alert:has(.tedi-alert__action>*){flex-direction:row;gap:var(--layout-grid-gutters-12);align-items:center}.tedi-alert:has(.tedi-alert__action>*) .tedi-alert__body{display:flex;flex:1;flex-direction:column;gap:var(--layout-grid-gutters-04)}.tedi-alert:has(.tedi-alert__action>*) .tedi-alert__close{display:none}@media(max-width:35.98rem){.tedi-alert:has(.tedi-alert__action>*){flex-direction:column;align-items:flex-start}}.tedi-alert__content{display:flex;gap:var(--layout-grid-gutters-08);align-items:flex-start}.tedi-alert__content .tedi-alert__content-icon{line-height:var(--body-regular-line-height)}.tedi-alert__title{font-size:var(--heading-h5-size);font-weight:var(--heading-h5-weight);line-height:var(--heading-h5-line-height)}.tedi-alert--size-default{font-size:var(--body-regular-size)}.tedi-alert--size-small{--_padding-y: var(--alert-default-padding-y-sm);--_padding-x: var(--alert-default-padding-x-sm);gap:var(--layout-grid-gutters-02);font-size:var(--body-small-regular-size);line-height:var(--body-small-regular-line-height)}.tedi-alert--size-small .tedi-alert__content{gap:var(--layout-grid-gutters-04)}.tedi-alert--size-small .tedi-alert__content .tedi-alert__content-icon{line-height:var(--body-small-regular-line-height)}.tedi-alert--info{color:var(--alert-default-text-info);background-color:var(--alert-default-background-info);border-color:var(--alert-default-border-info)}.tedi-alert--success{color:var(--alert-default-text-success);background-color:var(--alert-default-background-success);border-color:var(--alert-default-border-success)}.tedi-alert--warning{color:var(--alert-default-text-warning);background-color:var(--alert-default-background-warning);border-color:var(--alert-default-border-warning)}.tedi-alert--danger{color:var(--alert-default-text-danger);background-color:var(--alert-default-background-danger);border-color:var(--alert-default-border-danger)}.tedi-alert--global{width:100%;border:0;border-radius:0}.tedi-alert--no-side-borders{border-right:none;border-left:none;border-radius:0}@media print{.tedi-alert{color:var(--general-text-primary);background-color:var(--tedi-neutral-100);border-color:var(--tedi-neutral-350)}}\n"] }]
3621
+ }], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], showClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClose", required: false }] }], closeAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeAriaLabel", required: false }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], titleElement: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleElement", required: false }] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], closeDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeDelay", required: false }] }], closeClick: [{ type: i0.Output, args: ["closeClick"] }] } });
3487
3622
 
3488
3623
  const TOAST_DEFAULT_DURATION = 6000;
3489
3624
  class ToastComponent {
@@ -3501,10 +3636,12 @@ class ToastComponent {
3501
3636
  */
3502
3637
  icon = input("", ...(ngDevMode ? [{ debugName: "icon" }] : []));
3503
3638
  /**
3504
- * The ARIA role of the toast, informing screen readers about the notification's priority.
3505
- * - 'status': For non-critical notifications (screen readers announce politely).
3506
- * - 'alert': For critical errors (screen readers announce immediately).
3507
- * - 'none': Used when no ARIA role is needed.
3639
+ * Politeness of the screen reader announcement made by `ToastService`.
3640
+ * The visible toast itself is never a live region — announcing from both it
3641
+ * and the announcer made screen readers read every toast two or three times.
3642
+ * - 'status': For non-critical notifications (announced politely).
3643
+ * - 'alert': For critical errors (announced immediately).
3644
+ * - 'none': No announcement.
3508
3645
  * @default status
3509
3646
  */
3510
3647
  role = input("status", ...(ngDevMode ? [{ debugName: "role" }] : []));
@@ -3527,8 +3664,23 @@ class ToastComponent {
3527
3664
  * Emits when the toast is closed by the user.
3528
3665
  */
3529
3666
  closed = output();
3667
+ translationService = inject(TediTranslationService);
3668
+ closeLabel = computed(() => {
3669
+ const title = this.title();
3670
+ return title
3671
+ ? this.translationService.translate("toast.close", title)
3672
+ : this.translationService.translate("close");
3673
+ }, ...(ngDevMode ? [{ debugName: "closeLabel" }] : []));
3530
3674
  mouseEnter = output();
3531
3675
  mouseLeave = output();
3676
+ /**
3677
+ * Emits when focus enters the toast, so the auto-close timer can be paused.
3678
+ */
3679
+ focusIn = output();
3680
+ /**
3681
+ * Emits when focus leaves the toast entirely.
3682
+ */
3683
+ focusOut = output();
3532
3684
  handleClose() {
3533
3685
  this.closed.emit();
3534
3686
  }
@@ -3538,13 +3690,24 @@ class ToastComponent {
3538
3690
  onMouseLeave() {
3539
3691
  this.mouseLeave.emit();
3540
3692
  }
3693
+ onFocusIn() {
3694
+ this.focusIn.emit();
3695
+ }
3696
+ onFocusOut(event) {
3697
+ const wrapper = event.currentTarget;
3698
+ const nextTarget = event.relatedTarget;
3699
+ if (wrapper && nextTarget && wrapper.contains(nextTarget)) {
3700
+ return;
3701
+ }
3702
+ this.focusOut.emit();
3703
+ }
3541
3704
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3542
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: ToastComponent, isStandalone: true, selector: "tedi-toast", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null }, showProgressBar: { classPropertyName: "showProgressBar", publicName: "showProgressBar", isSignal: true, isRequired: false, transformFunction: null }, paused: { classPropertyName: "paused", publicName: "paused", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", mouseEnter: "mouseEnter", mouseLeave: "mouseLeave" }, ngImport: i0, template: "<div\n class=\"tedi-toast__wrapper\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n>\n <tedi-alert\n [title]=\"title()\"\n [type]=\"type()\"\n [icon]=\"icon()\"\n [showClose]=\"true\"\n [closeDelay]=\"300\"\n [role]=\"role()\"\n (closeClick)=\"handleClose()\"\n >\n <ng-content></ng-content>\n </tedi-alert>\n @if (showProgressBar() && duration() > 0) {\n <div\n class=\"tedi-toast__progress tedi-toast__progress--{{ type() }}\"\n [class.tedi-toast__progress--paused]=\"paused()\"\n [style.animation-duration.ms]=\"duration()\"\n ></div>\n }\n</div>\n", styles: ["tedi-toast{display:block;width:var(--toast-width);max-width:100%}.tedi-toast__wrapper{position:relative;padding:var(--toast-outer-spacing, 4px)}.tedi-toast__wrapper tedi-alert{box-shadow:0 4px 10px 0 var(--tedi-alpha-14, rgba(0, 0, 0, .14))}.tedi-toast__progress{position:absolute;bottom:var(--toast-outer-spacing);left:var(--toast-outer-spacing);width:calc(100% - var(--toast-outer-spacing) * 2);height:4px;background:var(--toast-progress-color);border-radius:0 var(--alert-radius) 0 var(--alert-radius);transform-origin:left;animation:toast-progress linear forwards}.tedi-toast__progress--success{--toast-progress-color: var(--alert-default-border-success)}.tedi-toast__progress--info{--toast-progress-color: var(--alert-default-border-info)}.tedi-toast__progress--danger{--toast-progress-color: var(--alert-default-border-danger)}.tedi-toast__progress--warning{--toast-progress-color: var(--alert-default-border-warning)}.tedi-toast__progress--paused{animation-play-state:paused}.tedi-toast-container{position:fixed;inset:0;z-index:var(--z-index-toast, 1050);pointer-events:none}.tedi-toast-container__position{position:absolute;display:flex;flex-direction:column;gap:var(--tedi-dimensions-05);max-height:calc(100vh - var(--toast-margin-bottom) * 2);overflow:visible}.tedi-toast-container__position>*{pointer-events:auto}.tedi-toast-container__position--top-left{top:var(--toast-margin-bottom);left:var(--toast-margin-right);align-items:flex-start}.tedi-toast-container__position--top-left tedi-toast{animation:toast-slide-in-left .3s ease-out forwards}.tedi-toast-container__position--top-left tedi-toast.tedi-toast--exiting{animation:toast-slide-out-left .3s ease-out forwards}.tedi-toast-container__position--top-right{top:var(--toast-margin-bottom);right:var(--toast-margin-right);align-items:flex-end}.tedi-toast-container__position--top-right tedi-toast{animation:toast-slide-in-right .3s ease-out forwards}.tedi-toast-container__position--top-right tedi-toast.tedi-toast--exiting{animation:toast-slide-out-right .3s ease-out forwards}.tedi-toast-container__position--bottom-left{bottom:var(--toast-margin-bottom);left:var(--toast-margin-right);flex-direction:column-reverse;align-items:flex-start}.tedi-toast-container__position--bottom-left tedi-toast{animation:toast-slide-in-left .3s ease-out forwards}.tedi-toast-container__position--bottom-left tedi-toast.tedi-toast--exiting{animation:toast-slide-out-left .3s ease-out forwards}.tedi-toast-container__position--bottom-right{right:var(--toast-margin-right);bottom:var(--toast-margin-bottom);flex-direction:column-reverse;align-items:flex-end}.tedi-toast-container__position--bottom-right tedi-toast{animation:toast-slide-in-right .3s ease-out forwards}.tedi-toast-container__position--bottom-right tedi-toast.tedi-toast--exiting{animation:toast-slide-out-right .3s ease-out forwards}@media(max-width:35.98rem){.tedi-toast-container__position--top-left,.tedi-toast-container__position--top-right,.tedi-toast-container__position--bottom-left,.tedi-toast-container__position--bottom-right{right:var(--toast-margin-right);left:var(--toast-margin-left);align-items:stretch;transform:none}.tedi-toast-container__position--top-left tedi-toast,.tedi-toast-container__position--top-right tedi-toast,.tedi-toast-container__position--bottom-left tedi-toast,.tedi-toast-container__position--bottom-right tedi-toast{width:100%;animation:toast-slide-in-right .3s ease-out forwards}.tedi-toast-container__position--top-left tedi-toast.tedi-toast--exiting,.tedi-toast-container__position--top-right tedi-toast.tedi-toast--exiting,.tedi-toast-container__position--bottom-left tedi-toast.tedi-toast--exiting,.tedi-toast-container__position--bottom-right tedi-toast.tedi-toast--exiting{animation:toast-slide-out-right .3s ease-out forwards}}@keyframes toast-progress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@keyframes toast-slide-in-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes toast-slide-out-right{0%{transform:translate(0)}to{transform:translate(100%)}}@keyframes toast-slide-in-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes toast-slide-out-left{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes toast-slide-in-down{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes toast-slide-in-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes toast-slide-out-up{0%{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes toast-slide-out-down{0%{transform:translateY(0)}to{transform:translateY(100%)}}\n"], dependencies: [{ kind: "component", type: AlertComponent, selector: "tedi-alert", inputs: ["title", "type", "icon", "showClose", "role", "variant", "size", "titleElement", "open", "closeDelay"], outputs: ["openChange", "closeClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
3705
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: ToastComponent, isStandalone: true, selector: "tedi-toast", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null }, showProgressBar: { classPropertyName: "showProgressBar", publicName: "showProgressBar", isSignal: true, isRequired: false, transformFunction: null }, paused: { classPropertyName: "paused", publicName: "paused", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", mouseEnter: "mouseEnter", mouseLeave: "mouseLeave", focusIn: "focusIn", focusOut: "focusOut" }, ngImport: i0, template: "<div\n class=\"tedi-toast__wrapper\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n>\n <tedi-alert\n [title]=\"title()\"\n [type]=\"type()\"\n [icon]=\"icon()\"\n [showClose]=\"true\"\n [closeAriaLabel]=\"closeLabel()\"\n [closeDelay]=\"300\"\n role=\"none\"\n (closeClick)=\"handleClose()\"\n >\n <ng-content></ng-content>\n </tedi-alert>\n @if (showProgressBar() && duration() > 0) {\n <div\n class=\"tedi-toast__progress tedi-toast__progress--{{ type() }}\"\n [class.tedi-toast__progress--paused]=\"paused()\"\n [style.animation-duration.ms]=\"duration()\"\n ></div>\n }\n</div>\n", styles: ["tedi-toast{display:block;width:var(--toast-width);max-width:100%}.tedi-toast__wrapper{position:relative;padding:var(--toast-outer-spacing)}.tedi-toast__wrapper tedi-alert{box-shadow:0 4px 10px 0 var(--tedi-alpha-14, rgba(0, 0, 0, .14))}.tedi-toast__progress{position:absolute;right:var(--toast-outer-spacing);bottom:var(--toast-outer-spacing);left:var(--toast-outer-spacing);height:var(--progress-bar-height-sm);background:var(--toast-progress-color);border-radius:0 var(--alert-radius) 0 var(--alert-radius);transform-origin:left;animation:toast-progress linear forwards}.tedi-toast__progress--success{--toast-progress-color: var(--alert-default-border-success)}.tedi-toast__progress--info{--toast-progress-color: var(--alert-default-border-info)}.tedi-toast__progress--danger{--toast-progress-color: var(--alert-default-border-danger)}.tedi-toast__progress--warning{--toast-progress-color: var(--alert-default-border-warning)}.tedi-toast__progress--paused{animation-play-state:paused}.tedi-toast-container{position:fixed;inset:0;z-index:var(--z-index-toast);pointer-events:none}.tedi-toast-container__position{position:absolute;display:flex;flex-direction:column;gap:var(--tedi-dimensions-05);max-height:calc(100vh - var(--toast-margin-bottom) * 2);overflow:visible}.tedi-toast-container__position>*{pointer-events:auto}.tedi-toast-container__position--top-left{top:var(--toast-margin-bottom);left:var(--toast-margin-right);align-items:flex-start}.tedi-toast-container__position--top-left tedi-toast{animation:toast-slide-in-left .3s ease-out forwards}.tedi-toast-container__position--top-left tedi-toast.tedi-toast--exiting{animation:toast-slide-out-left .3s ease-out forwards}.tedi-toast-container__position--top-right{top:var(--toast-margin-bottom);right:var(--toast-margin-right);align-items:flex-end}.tedi-toast-container__position--top-right tedi-toast{animation:toast-slide-in-right .3s ease-out forwards}.tedi-toast-container__position--top-right tedi-toast.tedi-toast--exiting{animation:toast-slide-out-right .3s ease-out forwards}.tedi-toast-container__position--bottom-left{bottom:var(--toast-margin-bottom);left:var(--toast-margin-right);flex-direction:column-reverse;align-items:flex-start}.tedi-toast-container__position--bottom-left tedi-toast{animation:toast-slide-in-left .3s ease-out forwards}.tedi-toast-container__position--bottom-left tedi-toast.tedi-toast--exiting{animation:toast-slide-out-left .3s ease-out forwards}.tedi-toast-container__position--bottom-right{right:var(--toast-margin-right);bottom:var(--toast-margin-bottom);flex-direction:column-reverse;align-items:flex-end}.tedi-toast-container__position--bottom-right tedi-toast{animation:toast-slide-in-right .3s ease-out forwards}.tedi-toast-container__position--bottom-right tedi-toast.tedi-toast--exiting{animation:toast-slide-out-right .3s ease-out forwards}@media(max-width:35.98rem){.tedi-toast-container__position--top-left,.tedi-toast-container__position--top-right,.tedi-toast-container__position--bottom-left,.tedi-toast-container__position--bottom-right{right:var(--toast-margin-right);left:var(--toast-margin-left);align-items:stretch;transform:none}.tedi-toast-container__position--top-left tedi-toast,.tedi-toast-container__position--top-right tedi-toast,.tedi-toast-container__position--bottom-left tedi-toast,.tedi-toast-container__position--bottom-right tedi-toast{width:100%;animation:toast-slide-in-right .3s ease-out forwards}.tedi-toast-container__position--top-left tedi-toast.tedi-toast--exiting,.tedi-toast-container__position--top-right tedi-toast.tedi-toast--exiting,.tedi-toast-container__position--bottom-left tedi-toast.tedi-toast--exiting,.tedi-toast-container__position--bottom-right tedi-toast.tedi-toast--exiting{animation:toast-slide-out-right .3s ease-out forwards}}@media(prefers-reduced-motion:reduce){.tedi-toast-container__position tedi-toast,.tedi-toast-container__position tedi-toast.tedi-toast--exiting{animation:none}}@keyframes toast-progress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@keyframes toast-slide-in-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes toast-slide-out-right{0%{transform:translate(0)}to{transform:translate(100%)}}@keyframes toast-slide-in-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes toast-slide-out-left{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes toast-slide-in-down{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes toast-slide-in-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes toast-slide-out-up{0%{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes toast-slide-out-down{0%{transform:translateY(0)}to{transform:translateY(100%)}}\n"], dependencies: [{ kind: "component", type: AlertComponent, selector: "tedi-alert", inputs: ["title", "type", "icon", "showClose", "closeAriaLabel", "role", "variant", "size", "titleElement", "open", "closeDelay"], outputs: ["openChange", "closeClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
3543
3706
  }
3544
3707
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ToastComponent, decorators: [{
3545
3708
  type: Component,
3546
- args: [{ selector: "tedi-toast", standalone: true, imports: [AlertComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"tedi-toast__wrapper\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n>\n <tedi-alert\n [title]=\"title()\"\n [type]=\"type()\"\n [icon]=\"icon()\"\n [showClose]=\"true\"\n [closeDelay]=\"300\"\n [role]=\"role()\"\n (closeClick)=\"handleClose()\"\n >\n <ng-content></ng-content>\n </tedi-alert>\n @if (showProgressBar() && duration() > 0) {\n <div\n class=\"tedi-toast__progress tedi-toast__progress--{{ type() }}\"\n [class.tedi-toast__progress--paused]=\"paused()\"\n [style.animation-duration.ms]=\"duration()\"\n ></div>\n }\n</div>\n", styles: ["tedi-toast{display:block;width:var(--toast-width);max-width:100%}.tedi-toast__wrapper{position:relative;padding:var(--toast-outer-spacing, 4px)}.tedi-toast__wrapper tedi-alert{box-shadow:0 4px 10px 0 var(--tedi-alpha-14, rgba(0, 0, 0, .14))}.tedi-toast__progress{position:absolute;bottom:var(--toast-outer-spacing);left:var(--toast-outer-spacing);width:calc(100% - var(--toast-outer-spacing) * 2);height:4px;background:var(--toast-progress-color);border-radius:0 var(--alert-radius) 0 var(--alert-radius);transform-origin:left;animation:toast-progress linear forwards}.tedi-toast__progress--success{--toast-progress-color: var(--alert-default-border-success)}.tedi-toast__progress--info{--toast-progress-color: var(--alert-default-border-info)}.tedi-toast__progress--danger{--toast-progress-color: var(--alert-default-border-danger)}.tedi-toast__progress--warning{--toast-progress-color: var(--alert-default-border-warning)}.tedi-toast__progress--paused{animation-play-state:paused}.tedi-toast-container{position:fixed;inset:0;z-index:var(--z-index-toast, 1050);pointer-events:none}.tedi-toast-container__position{position:absolute;display:flex;flex-direction:column;gap:var(--tedi-dimensions-05);max-height:calc(100vh - var(--toast-margin-bottom) * 2);overflow:visible}.tedi-toast-container__position>*{pointer-events:auto}.tedi-toast-container__position--top-left{top:var(--toast-margin-bottom);left:var(--toast-margin-right);align-items:flex-start}.tedi-toast-container__position--top-left tedi-toast{animation:toast-slide-in-left .3s ease-out forwards}.tedi-toast-container__position--top-left tedi-toast.tedi-toast--exiting{animation:toast-slide-out-left .3s ease-out forwards}.tedi-toast-container__position--top-right{top:var(--toast-margin-bottom);right:var(--toast-margin-right);align-items:flex-end}.tedi-toast-container__position--top-right tedi-toast{animation:toast-slide-in-right .3s ease-out forwards}.tedi-toast-container__position--top-right tedi-toast.tedi-toast--exiting{animation:toast-slide-out-right .3s ease-out forwards}.tedi-toast-container__position--bottom-left{bottom:var(--toast-margin-bottom);left:var(--toast-margin-right);flex-direction:column-reverse;align-items:flex-start}.tedi-toast-container__position--bottom-left tedi-toast{animation:toast-slide-in-left .3s ease-out forwards}.tedi-toast-container__position--bottom-left tedi-toast.tedi-toast--exiting{animation:toast-slide-out-left .3s ease-out forwards}.tedi-toast-container__position--bottom-right{right:var(--toast-margin-right);bottom:var(--toast-margin-bottom);flex-direction:column-reverse;align-items:flex-end}.tedi-toast-container__position--bottom-right tedi-toast{animation:toast-slide-in-right .3s ease-out forwards}.tedi-toast-container__position--bottom-right tedi-toast.tedi-toast--exiting{animation:toast-slide-out-right .3s ease-out forwards}@media(max-width:35.98rem){.tedi-toast-container__position--top-left,.tedi-toast-container__position--top-right,.tedi-toast-container__position--bottom-left,.tedi-toast-container__position--bottom-right{right:var(--toast-margin-right);left:var(--toast-margin-left);align-items:stretch;transform:none}.tedi-toast-container__position--top-left tedi-toast,.tedi-toast-container__position--top-right tedi-toast,.tedi-toast-container__position--bottom-left tedi-toast,.tedi-toast-container__position--bottom-right tedi-toast{width:100%;animation:toast-slide-in-right .3s ease-out forwards}.tedi-toast-container__position--top-left tedi-toast.tedi-toast--exiting,.tedi-toast-container__position--top-right tedi-toast.tedi-toast--exiting,.tedi-toast-container__position--bottom-left tedi-toast.tedi-toast--exiting,.tedi-toast-container__position--bottom-right tedi-toast.tedi-toast--exiting{animation:toast-slide-out-right .3s ease-out forwards}}@keyframes toast-progress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@keyframes toast-slide-in-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes toast-slide-out-right{0%{transform:translate(0)}to{transform:translate(100%)}}@keyframes toast-slide-in-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes toast-slide-out-left{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes toast-slide-in-down{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes toast-slide-in-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes toast-slide-out-up{0%{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes toast-slide-out-down{0%{transform:translateY(0)}to{transform:translateY(100%)}}\n"] }]
3547
- }], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], duration: [{ type: i0.Input, args: [{ isSignal: true, alias: "duration", required: false }] }], showProgressBar: [{ type: i0.Input, args: [{ isSignal: true, alias: "showProgressBar", required: false }] }], paused: [{ type: i0.Input, args: [{ isSignal: true, alias: "paused", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }], mouseEnter: [{ type: i0.Output, args: ["mouseEnter"] }], mouseLeave: [{ type: i0.Output, args: ["mouseLeave"] }] } });
3709
+ args: [{ selector: "tedi-toast", standalone: true, imports: [AlertComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"tedi-toast__wrapper\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n (focusin)=\"onFocusIn()\"\n (focusout)=\"onFocusOut($event)\"\n>\n <tedi-alert\n [title]=\"title()\"\n [type]=\"type()\"\n [icon]=\"icon()\"\n [showClose]=\"true\"\n [closeAriaLabel]=\"closeLabel()\"\n [closeDelay]=\"300\"\n role=\"none\"\n (closeClick)=\"handleClose()\"\n >\n <ng-content></ng-content>\n </tedi-alert>\n @if (showProgressBar() && duration() > 0) {\n <div\n class=\"tedi-toast__progress tedi-toast__progress--{{ type() }}\"\n [class.tedi-toast__progress--paused]=\"paused()\"\n [style.animation-duration.ms]=\"duration()\"\n ></div>\n }\n</div>\n", styles: ["tedi-toast{display:block;width:var(--toast-width);max-width:100%}.tedi-toast__wrapper{position:relative;padding:var(--toast-outer-spacing)}.tedi-toast__wrapper tedi-alert{box-shadow:0 4px 10px 0 var(--tedi-alpha-14, rgba(0, 0, 0, .14))}.tedi-toast__progress{position:absolute;right:var(--toast-outer-spacing);bottom:var(--toast-outer-spacing);left:var(--toast-outer-spacing);height:var(--progress-bar-height-sm);background:var(--toast-progress-color);border-radius:0 var(--alert-radius) 0 var(--alert-radius);transform-origin:left;animation:toast-progress linear forwards}.tedi-toast__progress--success{--toast-progress-color: var(--alert-default-border-success)}.tedi-toast__progress--info{--toast-progress-color: var(--alert-default-border-info)}.tedi-toast__progress--danger{--toast-progress-color: var(--alert-default-border-danger)}.tedi-toast__progress--warning{--toast-progress-color: var(--alert-default-border-warning)}.tedi-toast__progress--paused{animation-play-state:paused}.tedi-toast-container{position:fixed;inset:0;z-index:var(--z-index-toast);pointer-events:none}.tedi-toast-container__position{position:absolute;display:flex;flex-direction:column;gap:var(--tedi-dimensions-05);max-height:calc(100vh - var(--toast-margin-bottom) * 2);overflow:visible}.tedi-toast-container__position>*{pointer-events:auto}.tedi-toast-container__position--top-left{top:var(--toast-margin-bottom);left:var(--toast-margin-right);align-items:flex-start}.tedi-toast-container__position--top-left tedi-toast{animation:toast-slide-in-left .3s ease-out forwards}.tedi-toast-container__position--top-left tedi-toast.tedi-toast--exiting{animation:toast-slide-out-left .3s ease-out forwards}.tedi-toast-container__position--top-right{top:var(--toast-margin-bottom);right:var(--toast-margin-right);align-items:flex-end}.tedi-toast-container__position--top-right tedi-toast{animation:toast-slide-in-right .3s ease-out forwards}.tedi-toast-container__position--top-right tedi-toast.tedi-toast--exiting{animation:toast-slide-out-right .3s ease-out forwards}.tedi-toast-container__position--bottom-left{bottom:var(--toast-margin-bottom);left:var(--toast-margin-right);flex-direction:column-reverse;align-items:flex-start}.tedi-toast-container__position--bottom-left tedi-toast{animation:toast-slide-in-left .3s ease-out forwards}.tedi-toast-container__position--bottom-left tedi-toast.tedi-toast--exiting{animation:toast-slide-out-left .3s ease-out forwards}.tedi-toast-container__position--bottom-right{right:var(--toast-margin-right);bottom:var(--toast-margin-bottom);flex-direction:column-reverse;align-items:flex-end}.tedi-toast-container__position--bottom-right tedi-toast{animation:toast-slide-in-right .3s ease-out forwards}.tedi-toast-container__position--bottom-right tedi-toast.tedi-toast--exiting{animation:toast-slide-out-right .3s ease-out forwards}@media(max-width:35.98rem){.tedi-toast-container__position--top-left,.tedi-toast-container__position--top-right,.tedi-toast-container__position--bottom-left,.tedi-toast-container__position--bottom-right{right:var(--toast-margin-right);left:var(--toast-margin-left);align-items:stretch;transform:none}.tedi-toast-container__position--top-left tedi-toast,.tedi-toast-container__position--top-right tedi-toast,.tedi-toast-container__position--bottom-left tedi-toast,.tedi-toast-container__position--bottom-right tedi-toast{width:100%;animation:toast-slide-in-right .3s ease-out forwards}.tedi-toast-container__position--top-left tedi-toast.tedi-toast--exiting,.tedi-toast-container__position--top-right tedi-toast.tedi-toast--exiting,.tedi-toast-container__position--bottom-left tedi-toast.tedi-toast--exiting,.tedi-toast-container__position--bottom-right tedi-toast.tedi-toast--exiting{animation:toast-slide-out-right .3s ease-out forwards}}@media(prefers-reduced-motion:reduce){.tedi-toast-container__position tedi-toast,.tedi-toast-container__position tedi-toast.tedi-toast--exiting{animation:none}}@keyframes toast-progress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@keyframes toast-slide-in-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes toast-slide-out-right{0%{transform:translate(0)}to{transform:translate(100%)}}@keyframes toast-slide-in-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes toast-slide-out-left{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes toast-slide-in-down{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes toast-slide-in-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes toast-slide-out-up{0%{transform:translateY(0)}to{transform:translateY(-100%)}}@keyframes toast-slide-out-down{0%{transform:translateY(0)}to{transform:translateY(100%)}}\n"] }]
3710
+ }], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], duration: [{ type: i0.Input, args: [{ isSignal: true, alias: "duration", required: false }] }], showProgressBar: [{ type: i0.Input, args: [{ isSignal: true, alias: "showProgressBar", required: false }] }], paused: [{ type: i0.Input, args: [{ isSignal: true, alias: "paused", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }], mouseEnter: [{ type: i0.Output, args: ["mouseEnter"] }], mouseLeave: [{ type: i0.Output, args: ["mouseLeave"] }], focusIn: [{ type: i0.Output, args: ["focusIn"] }], focusOut: [{ type: i0.Output, args: ["focusOut"] }] } });
3548
3711
 
3549
3712
  const POSITIONS = [
3550
3713
  "top-left",
@@ -3574,19 +3737,13 @@ class ToastContainerComponent {
3574
3737
  }
3575
3738
  return grouped;
3576
3739
  }, ...(ngDevMode ? [{ debugName: "toastsByPosition" }] : []));
3577
- hasToastsForPosition(position) {
3578
- return this.toastService.getToasts().some((t) => t.position === position);
3579
- }
3580
- getToastsForPosition(position) {
3581
- return this.toastService.getToasts().filter((t) => t.position === position);
3582
- }
3583
3740
  onClosed(id) {
3584
3741
  this.toastService.close(id);
3585
3742
  }
3586
- onMouseEnter(id) {
3743
+ onPause(id) {
3587
3744
  this.toastService.pause(id);
3588
3745
  }
3589
- onMouseLeave(id) {
3746
+ onResume(id) {
3590
3747
  this.toastService.resume(id);
3591
3748
  }
3592
3749
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ToastContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
@@ -3609,8 +3766,10 @@ class ToastContainerComponent {
3609
3766
  [paused]="toast.paused ?? false"
3610
3767
  [class.tedi-toast--exiting]="toast.exiting"
3611
3768
  (closed)="onClosed(toast.id)"
3612
- (mouseEnter)="onMouseEnter(toast.id)"
3613
- (mouseLeave)="onMouseLeave(toast.id)"
3769
+ (mouseEnter)="onPause(toast.id)"
3770
+ (mouseLeave)="onResume(toast.id)"
3771
+ (focusIn)="onPause(toast.id)"
3772
+ (focusOut)="onResume(toast.id)"
3614
3773
  >
3615
3774
  @if (toast.content) {
3616
3775
  {{ toast.content }}
@@ -3620,7 +3779,7 @@ class ToastContainerComponent {
3620
3779
  </div>
3621
3780
  }
3622
3781
  }
3623
- `, isInline: true, dependencies: [{ kind: "component", type: ToastComponent, selector: "tedi-toast", inputs: ["title", "type", "icon", "role", "duration", "showProgressBar", "paused"], outputs: ["closed", "mouseEnter", "mouseLeave"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
3782
+ `, isInline: true, dependencies: [{ kind: "component", type: ToastComponent, selector: "tedi-toast", inputs: ["title", "type", "icon", "role", "duration", "showProgressBar", "paused"], outputs: ["closed", "mouseEnter", "mouseLeave", "focusIn", "focusOut"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
3624
3783
  }
3625
3784
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ToastContainerComponent, decorators: [{
3626
3785
  type: Component,
@@ -3647,8 +3806,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
3647
3806
  [paused]="toast.paused ?? false"
3648
3807
  [class.tedi-toast--exiting]="toast.exiting"
3649
3808
  (closed)="onClosed(toast.id)"
3650
- (mouseEnter)="onMouseEnter(toast.id)"
3651
- (mouseLeave)="onMouseLeave(toast.id)"
3809
+ (mouseEnter)="onPause(toast.id)"
3810
+ (mouseLeave)="onResume(toast.id)"
3811
+ (focusIn)="onPause(toast.id)"
3812
+ (focusOut)="onResume(toast.id)"
3652
3813
  >
3653
3814
  @if (toast.content) {
3654
3815
  {{ toast.content }}
@@ -3667,79 +3828,86 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
3667
3828
  }]
3668
3829
  }] });
3669
3830
 
3831
+ const ANNOUNCE_DELAY = 100;
3832
+ const DEFAULT_CLEAR_DELAY = 1000;
3670
3833
  /**
3671
- * Custom announcer service for toast notifications that uses the `sr-only` class
3672
- * instead of CDK's LiveAnnouncer which requires CDK styles.
3834
+ * Announcer for toast notifications. Deliberately not CDK's `LiveAnnouncer`:
3835
+ * that one needs `cdk-visually-hidden` from CDK's prebuilt stylesheet, which
3836
+ * this library does not ship, and it reuses a single element whose `aria-live`
3837
+ * is rewritten per announcement — TalkBack ignores regions mutated that way.
3673
3838
  *
3674
- * Creates a visually hidden element that screen readers can access to announce
3675
- * toast messages with appropriate politeness levels.
3839
+ * Instead, one region per politeness level is created up front and kept for the
3840
+ * application's lifetime, and each message is appended as its own child so that
3841
+ * rapid successive toasts queue instead of overwriting each other.
3676
3842
  *
3677
3843
  * @internal
3678
3844
  */
3679
3845
  class ToastAnnouncerService {
3680
3846
  document = inject(DOCUMENT);
3681
- politeElement = null;
3682
- assertiveElement = null;
3847
+ regions = new Map();
3848
+ timeouts = new Set();
3849
+ constructor() {
3850
+ this.getRegion("polite");
3851
+ this.getRegion("assertive");
3852
+ }
3683
3853
  /**
3684
3854
  * Announce a message to screen readers.
3685
3855
  * @param message The message to announce
3686
3856
  * @param politeness The politeness level: 'polite' (default) or 'assertive'
3687
- * @param clearAfterMs Time in ms after which to clear the message (default: 1000ms)
3857
+ * @param clearAfterMs Time in ms after which to remove the message (default: 1000ms)
3688
3858
  */
3689
- announce(message, politeness = "polite", clearAfterMs = 1000) {
3690
- const element = this.getOrCreateElement(politeness);
3691
- element.textContent = "";
3692
- // Use a small timeout to ensure screen readers detect the change
3693
- setTimeout(() => {
3694
- element.textContent = message;
3695
- setTimeout(() => {
3696
- element.textContent = "";
3697
- }, clearAfterMs);
3698
- }, 100);
3859
+ announce(message, politeness = "polite", clearAfterMs = DEFAULT_CLEAR_DELAY) {
3860
+ const region = this.getRegion(politeness);
3861
+ const entry = this.document.createElement("div");
3862
+ entry.textContent = message;
3863
+ this.schedule(() => {
3864
+ region.appendChild(entry);
3865
+ this.schedule(() => entry.remove(), clearAfterMs);
3866
+ }, ANNOUNCE_DELAY);
3699
3867
  }
3700
3868
  /**
3701
- * Clear all announcements text content.
3869
+ * Remove all pending and announced messages, keeping the live regions in place.
3702
3870
  */
3703
3871
  clear() {
3704
- if (this.politeElement) {
3705
- this.politeElement.textContent = "";
3706
- }
3707
- if (this.assertiveElement) {
3708
- this.assertiveElement.textContent = "";
3709
- }
3872
+ this.cancelPending();
3873
+ this.regions.forEach((region) => {
3874
+ region.textContent = "";
3875
+ });
3710
3876
  }
3711
3877
  destroy() {
3712
- this.politeElement?.remove();
3713
- this.assertiveElement?.remove();
3714
- this.politeElement = null;
3715
- this.assertiveElement = null;
3878
+ this.cancelPending();
3879
+ this.regions.forEach((region) => region.remove());
3880
+ this.regions.clear();
3716
3881
  }
3717
3882
  ngOnDestroy() {
3718
3883
  this.destroy();
3719
3884
  }
3720
- getOrCreateElement(politeness) {
3721
- if (politeness === "assertive") {
3722
- if (!this.assertiveElement) {
3723
- this.assertiveElement = this.createAnnouncerElement("assertive");
3724
- }
3725
- return this.assertiveElement;
3726
- }
3727
- else {
3728
- if (!this.politeElement) {
3729
- this.politeElement = this.createAnnouncerElement("polite");
3730
- }
3731
- return this.politeElement;
3732
- }
3885
+ schedule(callback, delay) {
3886
+ const timeout = setTimeout(() => {
3887
+ this.timeouts.delete(timeout);
3888
+ callback();
3889
+ }, delay);
3890
+ this.timeouts.add(timeout);
3733
3891
  }
3734
- createAnnouncerElement(politeness) {
3735
- const element = this.document.createElement("span");
3736
- element.setAttribute("aria-live", politeness);
3737
- element.setAttribute("aria-atomic", "true");
3738
- element.setAttribute("role", politeness === "assertive" ? "alert" : "status");
3739
- element.classList.add("sr-only");
3740
- element.id = `tedi-toast-announcer-${politeness}`;
3741
- this.document.body.appendChild(element);
3742
- return element;
3892
+ cancelPending() {
3893
+ this.timeouts.forEach((timeout) => clearTimeout(timeout));
3894
+ this.timeouts.clear();
3895
+ }
3896
+ getRegion(politeness) {
3897
+ const existing = this.regions.get(politeness);
3898
+ if (existing) {
3899
+ return existing;
3900
+ }
3901
+ const region = this.document.createElement("div");
3902
+ region.setAttribute("aria-live", politeness);
3903
+ // Messages are appended as children, so the region must not be atomic —
3904
+ // otherwise every append re-announces the messages already present.
3905
+ region.setAttribute("aria-atomic", "false");
3906
+ region.classList.add("sr-only");
3907
+ region.id = `tedi-toast-announcer-${politeness}`;
3908
+ this.document.body.appendChild(region);
3909
+ this.regions.set(politeness, region);
3910
+ return region;
3743
3911
  }
3744
3912
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ToastAnnouncerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3745
3913
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ToastAnnouncerService, providedIn: "root" });
@@ -3747,7 +3915,7 @@ class ToastAnnouncerService {
3747
3915
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ToastAnnouncerService, decorators: [{
3748
3916
  type: Injectable,
3749
3917
  args: [{ providedIn: "root" }]
3750
- }] });
3918
+ }], ctorParameters: () => [] });
3751
3919
 
3752
3920
  const ANIMATION_DURATION = 300;
3753
3921
  let toastId = 0;
@@ -3957,7 +4125,6 @@ class ToastService {
3957
4125
  if (!this.toasts().length && this.overlayRef) {
3958
4126
  this.overlayRef.dispose();
3959
4127
  this.overlayRef = null;
3960
- this.announcer.destroy();
3961
4128
  }
3962
4129
  }
3963
4130
  announceToScreenReader(toast, role) {
@@ -4198,6 +4365,106 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
4198
4365
  args: [{ standalone: true, selector: "tedi-collapse", imports: [CollapseButtonComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n class=\"tedi-collapse\"\n [class.tedi-collapse--open]=\"isOpen() === true\"\n [class.tedi-collapse--inverted]=\"isInvertedActive()\"\n>\n <button\n tedi-collapse-button\n [open]=\"isOpen()\"\n [openText]=\"openText()\"\n [closeText]=\"closeText()\"\n [hideText]=\"hideCollapseText()\"\n [arrowType]=\"arrowType()\"\n [size]=\"size()\"\n [inverted]=\"inverted()\"\n [ariaControls]=\"collapseContentId\"\n (openChange)=\"isOpen.set($event)\"\n ></button>\n <div class=\"tedi-collapse__content\" [id]=\"collapseContentId\">\n <div class=\"tedi-collapse__extender\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{display:block}.tedi-collapse--inverted{color:var(--general-text-white)}.tedi-collapse__extender{visibility:hidden;min-height:0;padding-top:var(--tedi-dimensions-05);transition:visibility .3s}.tedi-collapse__content{display:grid;grid-template-rows:0fr;overflow:hidden;transition:grid-template-rows .3s}.tedi-collapse--open>.tedi-collapse__content{grid-template-rows:1fr}.tedi-collapse--open>.tedi-collapse__content .tedi-collapse__extender{visibility:visible}\n"] }]
4199
4366
  }], propDecorators: { openText: [{ type: i0.Input, args: [{ isSignal: true, alias: "openText", required: false }] }], closeText: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeText", required: false }] }], defaultOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultOpen", required: false }] }], hideCollapseText: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideCollapseText", required: false }] }], arrowType: [{ type: i0.Input, args: [{ isSignal: true, alias: "arrowType", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], inverted: [{ type: i0.Input, args: [{ isSignal: true, alias: "inverted", required: false }] }] } });
4200
4367
 
4368
+ const edgeStyle = (isPinned, offset = 0) => {
4369
+ if (!isPinned) {
4370
+ return null;
4371
+ }
4372
+ return typeof offset === "number" ? `${offset}px` : offset;
4373
+ };
4374
+ class FloatingButtonComponent {
4375
+ baseButton = inject(BaseButtonDirective);
4376
+ /**
4377
+ * The button's color variant.
4378
+ * @default primary
4379
+ */
4380
+ variant = input("primary", ...(ngDevMode ? [{ debugName: "variant" }] : []));
4381
+ /**
4382
+ * The button's size.
4383
+ * @default default
4384
+ */
4385
+ size = input("default", ...(ngDevMode ? [{ debugName: "size" }] : []));
4386
+ /**
4387
+ * `vertical` rotates the button 90° counter-clockwise, with rounded left
4388
+ * corners and square right corners. Intended for desktop side placement;
4389
+ * on mobile prefer a horizontal button near the bottom, or an icon-only one.
4390
+ *
4391
+ * Rotation does not change the layout box. To align the visible button with
4392
+ * an edge, center it in a container that reserves its rotated width and height,
4393
+ * then position the container at that edge. See the Placement story.
4394
+ * @default horizontal
4395
+ */
4396
+ axis = input("horizontal", ...(ngDevMode ? [{ debugName: "axis" }] : []));
4397
+ /**
4398
+ * CSS positioning mode. Defaults to `fixed`; use `static` to keep the button
4399
+ * in normal document flow.
4400
+ * @default fixed
4401
+ */
4402
+ position = input("fixed", ...(ngDevMode ? [{ debugName: "position" }] : []));
4403
+ /**
4404
+ * Where to pin the button within its containing block. Applied as `top` / `bottom` /
4405
+ * `left` / `right`; `center` pins the midpoint on that axis. Has no effect when
4406
+ * `position` is `static`.
4407
+ */
4408
+ placement = input(...(ngDevMode ? [undefined, { debugName: "placement" }] : []));
4409
+ /**
4410
+ * Distance from the pinned edges, defaulting to `0`. Numbers are treated as pixels,
4411
+ * strings accept CSS lengths such as `1rem`. Only the edges named by `placement` apply.
4412
+ */
4413
+ offset = input(...(ngDevMode ? [undefined, { debugName: "offset" }] : []));
4414
+ /**
4415
+ * Overrides the button's CSS `z-index`. Defaults to `--z-index-feedback` when omitted.
4416
+ */
4417
+ zIndex = input(...(ngDevMode ? [undefined, { debugName: "zIndex" }] : []));
4418
+ // Keep CSS classes distinct while the Community FloatingButton is still available.
4419
+ classes = computed(() => [
4420
+ "tedi-ready-floating-button",
4421
+ `tedi-ready-floating-button--${this.variant()}`,
4422
+ `tedi-ready-floating-button--${this.size()}`,
4423
+ `tedi-ready-floating-button--${this.axis()}`,
4424
+ ].join(" "), ...(ngDevMode ? [{ debugName: "classes" }] : []));
4425
+ /**
4426
+ * Uses the separate `translate` property for centering, while the vertical
4427
+ * orientation is handled by `rotate`.
4428
+ */
4429
+ placementStyles = computed(() => {
4430
+ const placement = this.position() === "static" ? undefined : this.placement();
4431
+ const { vertical, horizontal } = placement ?? {};
4432
+ const offset = this.offset();
4433
+ const centered = horizontal === "center" || vertical === "center";
4434
+ return {
4435
+ top: vertical === "center"
4436
+ ? "50%"
4437
+ : edgeStyle(vertical === "top", offset?.top),
4438
+ bottom: edgeStyle(vertical === "bottom", offset?.bottom),
4439
+ left: horizontal === "center"
4440
+ ? "50%"
4441
+ : edgeStyle(horizontal === "left", offset?.left),
4442
+ right: edgeStyle(horizontal === "right", offset?.right),
4443
+ translate: centered
4444
+ ? `${horizontal === "center" ? "-50%" : "0"} ${vertical === "center" ? "-50%" : "0"}`
4445
+ : null,
4446
+ };
4447
+ }, ...(ngDevMode ? [{ debugName: "placementStyles" }] : []));
4448
+ ngOnInit() {
4449
+ this.baseButton.classNamePrefix.set("tedi-ready-floating-button");
4450
+ }
4451
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: FloatingButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4452
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.24", type: FloatingButtonComponent, isStandalone: true, selector: "[tedi-floating-button]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, axis: { classPropertyName: "axis", publicName: "axis", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "offset", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "style.position": "position()", "style.z-index": "zIndex()", "style.top": "placementStyles().top", "style.bottom": "placementStyles().bottom", "style.left": "placementStyles().left", "style.right": "placementStyles().right", "style.translate": "placementStyles().translate" } }, hostDirectives: [{ directive: BaseButtonDirective }], ngImport: i0, template: "<ng-content />", isInline: true, styles: [".tedi-ready-floating-button{display:inline-flex;gap:var(--_btn-inner-spacing);align-items:center;justify-content:center;padding:var(--_btn-padding);font-family:var(--family-default);font-weight:var(--body-regular-weight);line-height:var(--body-bold-line-height);color:var(--_btn-text);text-decoration:none;cursor:pointer;background:var(--_btn-bg);border:var(--tedi-borders-01) solid var(--_btn-border);border-radius:var(--button-radius-default);transition:.15s ease;transition-property:background-color,border-color}.tedi-ready-floating-button--icon-only{width:var(--button-md-icon-size);height:var(--button-md-icon-size);padding:var(--button-md-icon-padding)}.tedi-ready-floating-button--pl:not(.tedi-button--neutral,.tedi-button--danger-neutral,.tedi-button--neutral-inverted,.tedi-button--primary-button-group,.tedi-button--secondary-button-group){padding-left:calc(var(--_btn-padding-x) + var(--_btn-inner-spacing) - 1px)}.tedi-ready-floating-button--pr:not(.tedi-button--neutral,.tedi-button--danger-neutral,.tedi-button--neutral-inverted,.tedi-button--primary-button-group,.tedi-button--secondary-button-group){padding-right:calc(var(--_btn-padding-x) + var(--_btn-inner-spacing) - 1px)}.tedi-ready-floating-button:hover{color:var(--_btn-hover-text);background:var(--_btn-hover-bg);border-color:var(--_btn-hover-border)}.tedi-ready-floating-button:active{color:var(--_btn-active-text);background:var(--_btn-active-bg);border-color:var(--_btn-active-border)}.tedi-ready-floating-button:focus-visible{color:var(--_btn-focus-text);outline:2px solid var(--_btn-outline);outline-offset:1px;background:var(--_btn-focus-bg);border-color:var(--_btn-focus-border)}.tedi-ready-floating-button:disabled{color:var(--_btn-disabled-text);cursor:not-allowed;background:var(--_btn-disabled-bg);border-color:var(--_btn-disabled-border)}.tedi-ready-floating-button tedi-icon{--_tedi-icon-size: var(--icon-03);color:inherit}.tedi-ready-floating-button{z-index:var(--z-index-feedback);box-sizing:border-box;text-wrap:wrap;box-shadow:0 4px 10px 0 var(--general-effect-colors-elevation-general-secondary)}.tedi-ready-floating-button--vertical{flex-shrink:0;white-space:nowrap;border-radius:var(--button-radius-sm) var(--button-radius-sm) 0 0;box-shadow:-4px 0 10px 0 var(--general-effect-colors-elevation-general-secondary);transform-origin:center;rotate:-90deg}.tedi-ready-floating-button--primary{--_btn-bg: var(--button-floating-primary-background-default);--_btn-border: var(--button-floating-primary-border-default);--_btn-text: var(--button-floating-primary-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-ready-floating-button--primary{--_btn-hover-bg: var(--button-floating-primary-background-hover, var(--button-floating-primary-background-default));--_btn-hover-border: var(--button-floating-primary-border-hover, var(--button-floating-primary-border-default));--_btn-hover-text: var(--button-floating-primary-text-hover, var(--button-floating-primary-text-default))}.tedi-ready-floating-button--primary{--_btn-focus-bg: var(--button-floating-primary-background-focus, var(--button-floating-primary-background-default));--_btn-focus-border: var(--button-floating-primary-border-focus, var(--button-floating-primary-border-default));--_btn-focus-text: var(--button-floating-primary-text-focus, var(--button-floating-primary-text-default))}.tedi-ready-floating-button--primary{--_btn-active-bg: var(--button-floating-primary-background-active, var(--button-floating-primary-background-default));--_btn-active-border: var(--button-floating-primary-border-active, var(--button-floating-primary-border-default));--_btn-active-text: var(--button-floating-primary-text-active, var(--button-floating-primary-text-default))}.tedi-ready-floating-button--primary{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-general-background);--_btn-disabled-border: var(--button-main-disabled-general-border)}.tedi-ready-floating-button--secondary{--_btn-bg: var(--button-floating-secondary-background-default);--_btn-border: var(--button-floating-secondary-border-default);--_btn-text: var(--button-floating-secondary-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-ready-floating-button--secondary{--_btn-hover-bg: var(--button-floating-secondary-background-hover, var(--button-floating-secondary-background-default));--_btn-hover-border: var(--button-floating-secondary-border-hover, var(--button-floating-secondary-border-default));--_btn-hover-text: var(--button-floating-secondary-text-hover, var(--button-floating-secondary-text-default))}.tedi-ready-floating-button--secondary{--_btn-focus-bg: var(--button-floating-secondary-background-focus, var(--button-floating-secondary-background-default));--_btn-focus-border: var(--button-floating-secondary-border-focus, var(--button-floating-secondary-border-default));--_btn-focus-text: var(--button-floating-secondary-text-focus, var(--button-floating-secondary-text-default))}.tedi-ready-floating-button--secondary{--_btn-active-bg: var(--button-floating-secondary-background-active, var(--button-floating-secondary-background-default));--_btn-active-border: var(--button-floating-secondary-border-active, var(--button-floating-secondary-border-default));--_btn-active-text: var(--button-floating-secondary-text-active, var(--button-floating-secondary-text-default))}.tedi-ready-floating-button--secondary{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-general-background);--_btn-disabled-border: var(--button-main-disabled-general-border)}.tedi-ready-floating-button--default{font-size:var(--button-text-size-default);--_btn-padding: calc(var(--_btn-padding-y) - 1px) calc(var(--_btn-padding-x) - 1px);--_btn-inner-spacing: var(--button-md-inner-spacing);--_btn-padding-y: var(--button-md-padding-y);--_btn-padding-x: var(--button-md-padding-x)}.tedi-ready-floating-button--large{font-size:var(--button-text-size-default);--_btn-padding: calc(var(--_btn-padding-y) - 1px) calc(var(--_btn-padding-x) - 1px);--_btn-inner-spacing: var(--button-xl-inner-spacing);--_btn-padding-y: var(--button-xl-padding-y);--_btn-padding-x: var(--button-xl-padding-x)}.tedi-ready-floating-button--large.tedi-ready-floating-button--icon-only{width:var(--button-xl-icon-size);height:var(--button-xl-icon-size);padding:var(--button-xl-icon-padding)}.tedi-ready-floating-button:not(.tedi-ready-floating-button--icon-only){min-width:var(--button-width-min);max-width:var(--button-width-max)}.tedi-ready-floating-button--vertical:not(.tedi-ready-floating-button--icon-only){width:max-content}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
4453
+ }
4454
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: FloatingButtonComponent, decorators: [{
4455
+ type: Component,
4456
+ args: [{ selector: "[tedi-floating-button]", standalone: true, template: "<ng-content />", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [BaseButtonDirective], host: {
4457
+ "[class]": "classes()",
4458
+ "[style.position]": "position()",
4459
+ "[style.z-index]": "zIndex()",
4460
+ "[style.top]": "placementStyles().top",
4461
+ "[style.bottom]": "placementStyles().bottom",
4462
+ "[style.left]": "placementStyles().left",
4463
+ "[style.right]": "placementStyles().right",
4464
+ "[style.translate]": "placementStyles().translate",
4465
+ }, styles: [".tedi-ready-floating-button{display:inline-flex;gap:var(--_btn-inner-spacing);align-items:center;justify-content:center;padding:var(--_btn-padding);font-family:var(--family-default);font-weight:var(--body-regular-weight);line-height:var(--body-bold-line-height);color:var(--_btn-text);text-decoration:none;cursor:pointer;background:var(--_btn-bg);border:var(--tedi-borders-01) solid var(--_btn-border);border-radius:var(--button-radius-default);transition:.15s ease;transition-property:background-color,border-color}.tedi-ready-floating-button--icon-only{width:var(--button-md-icon-size);height:var(--button-md-icon-size);padding:var(--button-md-icon-padding)}.tedi-ready-floating-button--pl:not(.tedi-button--neutral,.tedi-button--danger-neutral,.tedi-button--neutral-inverted,.tedi-button--primary-button-group,.tedi-button--secondary-button-group){padding-left:calc(var(--_btn-padding-x) + var(--_btn-inner-spacing) - 1px)}.tedi-ready-floating-button--pr:not(.tedi-button--neutral,.tedi-button--danger-neutral,.tedi-button--neutral-inverted,.tedi-button--primary-button-group,.tedi-button--secondary-button-group){padding-right:calc(var(--_btn-padding-x) + var(--_btn-inner-spacing) - 1px)}.tedi-ready-floating-button:hover{color:var(--_btn-hover-text);background:var(--_btn-hover-bg);border-color:var(--_btn-hover-border)}.tedi-ready-floating-button:active{color:var(--_btn-active-text);background:var(--_btn-active-bg);border-color:var(--_btn-active-border)}.tedi-ready-floating-button:focus-visible{color:var(--_btn-focus-text);outline:2px solid var(--_btn-outline);outline-offset:1px;background:var(--_btn-focus-bg);border-color:var(--_btn-focus-border)}.tedi-ready-floating-button:disabled{color:var(--_btn-disabled-text);cursor:not-allowed;background:var(--_btn-disabled-bg);border-color:var(--_btn-disabled-border)}.tedi-ready-floating-button tedi-icon{--_tedi-icon-size: var(--icon-03);color:inherit}.tedi-ready-floating-button{z-index:var(--z-index-feedback);box-sizing:border-box;text-wrap:wrap;box-shadow:0 4px 10px 0 var(--general-effect-colors-elevation-general-secondary)}.tedi-ready-floating-button--vertical{flex-shrink:0;white-space:nowrap;border-radius:var(--button-radius-sm) var(--button-radius-sm) 0 0;box-shadow:-4px 0 10px 0 var(--general-effect-colors-elevation-general-secondary);transform-origin:center;rotate:-90deg}.tedi-ready-floating-button--primary{--_btn-bg: var(--button-floating-primary-background-default);--_btn-border: var(--button-floating-primary-border-default);--_btn-text: var(--button-floating-primary-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-ready-floating-button--primary{--_btn-hover-bg: var(--button-floating-primary-background-hover, var(--button-floating-primary-background-default));--_btn-hover-border: var(--button-floating-primary-border-hover, var(--button-floating-primary-border-default));--_btn-hover-text: var(--button-floating-primary-text-hover, var(--button-floating-primary-text-default))}.tedi-ready-floating-button--primary{--_btn-focus-bg: var(--button-floating-primary-background-focus, var(--button-floating-primary-background-default));--_btn-focus-border: var(--button-floating-primary-border-focus, var(--button-floating-primary-border-default));--_btn-focus-text: var(--button-floating-primary-text-focus, var(--button-floating-primary-text-default))}.tedi-ready-floating-button--primary{--_btn-active-bg: var(--button-floating-primary-background-active, var(--button-floating-primary-background-default));--_btn-active-border: var(--button-floating-primary-border-active, var(--button-floating-primary-border-default));--_btn-active-text: var(--button-floating-primary-text-active, var(--button-floating-primary-text-default))}.tedi-ready-floating-button--primary{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-general-background);--_btn-disabled-border: var(--button-main-disabled-general-border)}.tedi-ready-floating-button--secondary{--_btn-bg: var(--button-floating-secondary-background-default);--_btn-border: var(--button-floating-secondary-border-default);--_btn-text: var(--button-floating-secondary-text-default);--_btn-outline: var(--tedi-primary-500)}.tedi-ready-floating-button--secondary{--_btn-hover-bg: var(--button-floating-secondary-background-hover, var(--button-floating-secondary-background-default));--_btn-hover-border: var(--button-floating-secondary-border-hover, var(--button-floating-secondary-border-default));--_btn-hover-text: var(--button-floating-secondary-text-hover, var(--button-floating-secondary-text-default))}.tedi-ready-floating-button--secondary{--_btn-focus-bg: var(--button-floating-secondary-background-focus, var(--button-floating-secondary-background-default));--_btn-focus-border: var(--button-floating-secondary-border-focus, var(--button-floating-secondary-border-default));--_btn-focus-text: var(--button-floating-secondary-text-focus, var(--button-floating-secondary-text-default))}.tedi-ready-floating-button--secondary{--_btn-active-bg: var(--button-floating-secondary-background-active, var(--button-floating-secondary-background-default));--_btn-active-border: var(--button-floating-secondary-border-active, var(--button-floating-secondary-border-default));--_btn-active-text: var(--button-floating-secondary-text-active, var(--button-floating-secondary-text-default))}.tedi-ready-floating-button--secondary{--_btn-disabled-text: var(--button-main-disabled-general-text);--_btn-disabled-bg: var(--button-main-disabled-general-background);--_btn-disabled-border: var(--button-main-disabled-general-border)}.tedi-ready-floating-button--default{font-size:var(--button-text-size-default);--_btn-padding: calc(var(--_btn-padding-y) - 1px) calc(var(--_btn-padding-x) - 1px);--_btn-inner-spacing: var(--button-md-inner-spacing);--_btn-padding-y: var(--button-md-padding-y);--_btn-padding-x: var(--button-md-padding-x)}.tedi-ready-floating-button--large{font-size:var(--button-text-size-default);--_btn-padding: calc(var(--_btn-padding-y) - 1px) calc(var(--_btn-padding-x) - 1px);--_btn-inner-spacing: var(--button-xl-inner-spacing);--_btn-padding-y: var(--button-xl-padding-y);--_btn-padding-x: var(--button-xl-padding-x)}.tedi-ready-floating-button--large.tedi-ready-floating-button--icon-only{width:var(--button-xl-icon-size);height:var(--button-xl-icon-size);padding:var(--button-xl-icon-padding)}.tedi-ready-floating-button:not(.tedi-ready-floating-button--icon-only){min-width:var(--button-width-min);max-width:var(--button-width-max)}.tedi-ready-floating-button--vertical:not(.tedi-ready-floating-button--icon-only){width:max-content}\n"] }]
4466
+ }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], axis: [{ type: i0.Input, args: [{ isSignal: true, alias: "axis", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], offset: [{ type: i0.Input, args: [{ isSignal: true, alias: "offset", required: false }] }], zIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "zIndex", required: false }] }] } });
4467
+
4201
4468
  /**
4202
4469
  * A single item inside a `tedi-accordion`. Owns the item's state (expanded)
4203
4470
  * and the inputs shared by header and content (selected, showIconCard,
@@ -4870,6 +5137,72 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
4870
5137
  }, template: "<ng-content></ng-content>\n", styles: ["@charset \"UTF-8\";.tedi-card-header--background--accent{background-color:var(--card-background-accent)}.tedi-card-header--background--brand-primary{background-color:var(--card-background-brand-primary)}.tedi-card-header--background--brand-secondary{background-color:var(--card-background-brand-secondary)}.tedi-card-header--background--brand-tertiary{background-color:var(--card-background-brand-tertiary)}.tedi-card-header--background--brand-quaternary{background-color:var(--card-background-brand-quaternary)}.tedi-card-header--background--primary{background-color:var(--card-background-primary)}.tedi-card-header--background--secondary{background-color:var(--card-background-secondary)}.tedi-card-header--background--tertiary{background-color:var(--card-background-tertiary)}.tedi-card-header--background--info-primary{background-color:var(--general-status-info-background-light)}.tedi-card-header--background--info-secondary{background-color:var(--general-status-info-background-dark)}.tedi-card-header--background--neutral-primary{background-color:var(--general-status-neutral-background-light)}.tedi-card-header--background--neutral-secondary{background-color:var(--general-status-neutral-background-dark)}.tedi-card-header--background--success-primary{background-color:var(--card-background-success)}.tedi-card-header--background--success-secondary{background-color:var(--general-status-success-background-secondary)}.tedi-card-header--background--danger-primary{background-color:var(--general-status-danger-background-primary)}.tedi-card-header--background--danger-secondary{background-color:var(--general-status-danger-background-secondary)}.tedi-card-header--background--warning-primary{background-color:var(--general-status-warning-background-light)}.tedi-card-header--background--warning-secondary{background-color:var(--general-status-warning-background-dark)}.tedi-card-header--background--brand-primary,.tedi-card-header--background--brand-secondary{color:var(--general-text-white)}.tedi-card-header{display:block;flex:0 0 auto;padding:var(--card-content-padding-top) var(--card-content-padding-right) var(--card-content-padding-bottom) var(--card-content-padding-left)}@media print{.tedi-card-header{color:var(--general-text-primary);background:var(--card-background-primary);border-bottom:1px solid var(--card-border-primary)}}\n"] }]
4871
5138
  }] });
4872
5139
 
5140
+ const isHeadingModifier = (modifier) => /^h[1-6]$/.test(modifier);
5141
+ class HeadingWithIconComponent {
5142
+ /**
5143
+ * Name of the Material Icon
5144
+ * https://fonts.google.com/icons
5145
+ *
5146
+ * Rendered as decorative and hidden from assistive technology — the
5147
+ * projected text is the accessible heading name.
5148
+ */
5149
+ icon = input.required(...(ngDevMode ? [{ debugName: "icon" }] : []));
5150
+ /**
5151
+ * Semantic heading tag. Also sets the typography unless a heading modifier
5152
+ * overrides it, so pick the tag that fits the surrounding document outline.
5153
+ * @default h4
5154
+ */
5155
+ element = input("h4", ...(ngDevMode ? [{ debugName: "element" }] : []));
5156
+ /**
5157
+ * Single or multiple modifiers to change the heading behavior. A heading
5158
+ * modifier here styles the heading as that level while `element` keeps the
5159
+ * semantics — e.g. an `h2` that looks like an `h4`.
5160
+ */
5161
+ modifiers = input(...(ngDevMode ? [undefined, { debugName: "modifiers" }] : []));
5162
+ /**
5163
+ * Heading text color.
5164
+ * @default primary
5165
+ */
5166
+ headingColor = input("primary", ...(ngDevMode ? [{ debugName: "headingColor" }] : []));
5167
+ /**
5168
+ * Color of the icon.
5169
+ * @default primary
5170
+ */
5171
+ iconColor = input("primary", ...(ngDevMode ? [{ debugName: "iconColor" }] : []));
5172
+ /**
5173
+ * Size of the icon in pixels.
5174
+ * @default 24
5175
+ */
5176
+ iconSize = input(24, ...(ngDevMode ? [{ debugName: "iconSize" }] : []));
5177
+ /**
5178
+ * Whether the icon should be filled or outlined.
5179
+ * @default outlined
5180
+ */
5181
+ iconVariant = input("outlined", ...(ngDevMode ? [{ debugName: "iconVariant" }] : []));
5182
+ // A heading modifier wins on specificity over the `element` tag in core's CSS,
5183
+ // so `element="h2" modifiers="h4"` renders at h4's line height — which is what
5184
+ // the icon has to be centered against.
5185
+ visualLevel = computed(() => {
5186
+ const modifiers = this.modifiers();
5187
+ const modifierList = Array.isArray(modifiers)
5188
+ ? modifiers
5189
+ : modifiers
5190
+ ? [modifiers]
5191
+ : [];
5192
+ return modifierList.find(isHeadingModifier) ?? this.element();
5193
+ }, ...(ngDevMode ? [{ debugName: "visualLevel" }] : []));
5194
+ lineHeightVar = computed(() => `var(--heading-${this.visualLevel()}-line-height)`, ...(ngDevMode ? [{ debugName: "lineHeightVar" }] : []));
5195
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: HeadingWithIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5196
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: HeadingWithIconComponent, isStandalone: true, selector: "tedi-heading-with-icon", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: true, transformFunction: null }, element: { classPropertyName: "element", publicName: "element", isSignal: true, isRequired: false, transformFunction: null }, modifiers: { classPropertyName: "modifiers", publicName: "modifiers", isSignal: true, isRequired: false, transformFunction: null }, headingColor: { classPropertyName: "headingColor", publicName: "headingColor", isSignal: true, isRequired: false, transformFunction: null }, iconColor: { classPropertyName: "iconColor", publicName: "iconColor", isSignal: true, isRequired: false, transformFunction: null }, iconSize: { classPropertyName: "iconSize", publicName: "iconSize", isSignal: true, isRequired: false, transformFunction: null }, iconVariant: { classPropertyName: "iconVariant", publicName: "iconVariant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.--_tedi-heading-with-icon-line-height": "lineHeightVar()" }, classAttribute: "tedi-heading-with-icon" }, ngImport: i0, template: "<tedi-icon\n class=\"tedi-heading-with-icon__icon\"\n [name]=\"icon()\"\n [color]=\"iconColor()\"\n [size]=\"iconSize()\"\n [variant]=\"iconVariant()\"\n/>\n\n@switch (element()) {\n @case (\"h1\") {\n <h1\n tedi-text\n class=\"tedi-heading-with-icon__heading\"\n [color]=\"headingColor()\"\n [modifiers]=\"modifiers()\"\n >\n <ng-container *ngTemplateOutlet=\"heading\"></ng-container>\n </h1>\n }\n @case (\"h2\") {\n <h2\n tedi-text\n class=\"tedi-heading-with-icon__heading\"\n [color]=\"headingColor()\"\n [modifiers]=\"modifiers()\"\n >\n <ng-container *ngTemplateOutlet=\"heading\"></ng-container>\n </h2>\n }\n @case (\"h3\") {\n <h3\n tedi-text\n class=\"tedi-heading-with-icon__heading\"\n [color]=\"headingColor()\"\n [modifiers]=\"modifiers()\"\n >\n <ng-container *ngTemplateOutlet=\"heading\"></ng-container>\n </h3>\n }\n @case (\"h4\") {\n <h4\n tedi-text\n class=\"tedi-heading-with-icon__heading\"\n [color]=\"headingColor()\"\n [modifiers]=\"modifiers()\"\n >\n <ng-container *ngTemplateOutlet=\"heading\"></ng-container>\n </h4>\n }\n @case (\"h5\") {\n <h5\n tedi-text\n class=\"tedi-heading-with-icon__heading\"\n [color]=\"headingColor()\"\n [modifiers]=\"modifiers()\"\n >\n <ng-container *ngTemplateOutlet=\"heading\"></ng-container>\n </h5>\n }\n @case (\"h6\") {\n <h6\n tedi-text\n class=\"tedi-heading-with-icon__heading\"\n [color]=\"headingColor()\"\n [modifiers]=\"modifiers()\"\n >\n <ng-container *ngTemplateOutlet=\"heading\"></ng-container>\n </h6>\n }\n}\n\n<ng-template #heading><ng-content></ng-content></ng-template>\n", styles: [".tedi-heading-with-icon{display:flex;gap:var(--content-heading-inner-spacing-x);align-items:flex-start}.tedi-heading-with-icon__icon{height:var(--_tedi-heading-with-icon-line-height)}.tedi-heading-with-icon__heading{flex:1;min-width:0;overflow-wrap:break-word}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "component", type: TextComponent, selector: "[tedi-text]", inputs: ["modifiers", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
5197
+ }
5198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: HeadingWithIconComponent, decorators: [{
5199
+ type: Component,
5200
+ args: [{ selector: "tedi-heading-with-icon", standalone: true, imports: [NgTemplateOutlet, IconComponent, TextComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
5201
+ class: "tedi-heading-with-icon",
5202
+ "[style.--_tedi-heading-with-icon-line-height]": "lineHeightVar()",
5203
+ }, template: "<tedi-icon\n class=\"tedi-heading-with-icon__icon\"\n [name]=\"icon()\"\n [color]=\"iconColor()\"\n [size]=\"iconSize()\"\n [variant]=\"iconVariant()\"\n/>\n\n@switch (element()) {\n @case (\"h1\") {\n <h1\n tedi-text\n class=\"tedi-heading-with-icon__heading\"\n [color]=\"headingColor()\"\n [modifiers]=\"modifiers()\"\n >\n <ng-container *ngTemplateOutlet=\"heading\"></ng-container>\n </h1>\n }\n @case (\"h2\") {\n <h2\n tedi-text\n class=\"tedi-heading-with-icon__heading\"\n [color]=\"headingColor()\"\n [modifiers]=\"modifiers()\"\n >\n <ng-container *ngTemplateOutlet=\"heading\"></ng-container>\n </h2>\n }\n @case (\"h3\") {\n <h3\n tedi-text\n class=\"tedi-heading-with-icon__heading\"\n [color]=\"headingColor()\"\n [modifiers]=\"modifiers()\"\n >\n <ng-container *ngTemplateOutlet=\"heading\"></ng-container>\n </h3>\n }\n @case (\"h4\") {\n <h4\n tedi-text\n class=\"tedi-heading-with-icon__heading\"\n [color]=\"headingColor()\"\n [modifiers]=\"modifiers()\"\n >\n <ng-container *ngTemplateOutlet=\"heading\"></ng-container>\n </h4>\n }\n @case (\"h5\") {\n <h5\n tedi-text\n class=\"tedi-heading-with-icon__heading\"\n [color]=\"headingColor()\"\n [modifiers]=\"modifiers()\"\n >\n <ng-container *ngTemplateOutlet=\"heading\"></ng-container>\n </h5>\n }\n @case (\"h6\") {\n <h6\n tedi-text\n class=\"tedi-heading-with-icon__heading\"\n [color]=\"headingColor()\"\n [modifiers]=\"modifiers()\"\n >\n <ng-container *ngTemplateOutlet=\"heading\"></ng-container>\n </h6>\n }\n}\n\n<ng-template #heading><ng-content></ng-content></ng-template>\n", styles: [".tedi-heading-with-icon{display:flex;gap:var(--content-heading-inner-spacing-x);align-items:flex-start}.tedi-heading-with-icon__icon{height:var(--_tedi-heading-with-icon-line-height)}.tedi-heading-with-icon__heading{flex:1;min-width:0;overflow-wrap:break-word}\n"] }]
5204
+ }], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: true }] }], element: [{ type: i0.Input, args: [{ isSignal: true, alias: "element", required: false }] }], modifiers: [{ type: i0.Input, args: [{ isSignal: true, alias: "modifiers", required: false }] }], headingColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "headingColor", required: false }] }], iconColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconColor", required: false }] }], iconSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconSize", required: false }] }], iconVariant: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconVariant", required: false }] }] } });
5205
+
4873
5206
  class ListComponent {
4874
5207
  /**
4875
5208
  * Is list styled?
@@ -5348,6 +5681,8 @@ function deriveControlState() {
5348
5681
  }),
5349
5682
  touched: computed(() => read((control) => control.touched) ?? false),
5350
5683
  dirty: computed(() => read((control) => control.dirty) ?? false),
5684
+ required: computed(() => read((control) => control.control?.hasValidator(Validators.required)) ??
5685
+ false),
5351
5686
  connect: () => {
5352
5687
  // `self` is what keeps this from becoming a leak: without it the lookup
5353
5688
  // walks the whole element-injector chain and a control picks up the
@@ -8088,6 +8423,25 @@ class ModalRef {
8088
8423
  }
8089
8424
  }
8090
8425
 
8426
+ /** Any heading level: the right one depends on the page, not on the modal. */
8427
+ const HEADING_SELECTOR = ["h1", "h2", "h3", "h4", "h5", "h6"]
8428
+ .map((tag) => `tedi-modal-header ${tag}`)
8429
+ .join(", ");
8430
+ /**
8431
+ * Finds the heading that names the dialog inside `root`, giving it an id if it
8432
+ * has none. `null` when there is none, so the caller writes no dangling
8433
+ * `aria-labelledby`. Shared by both modal modes so the rule cannot drift.
8434
+ */
8435
+ function resolveModalHeadingId(root, idGenerator) {
8436
+ const heading = root.querySelector(HEADING_SELECTOR);
8437
+ if (!heading)
8438
+ return null;
8439
+ if (!heading.id) {
8440
+ heading.id = idGenerator.getId("tedi-modal-title-");
8441
+ }
8442
+ return heading.id;
8443
+ }
8444
+
8091
8445
  /** Injection token for data passed to a modal opened via ModalService. */
8092
8446
  const MODAL_DATA = new InjectionToken("TediModalData");
8093
8447
  /**
@@ -8102,6 +8456,8 @@ const WIDTH_PRESETS = ["xs", "sm", "md", "lg", "xl"];
8102
8456
  class ModalService {
8103
8457
  dialog = inject(Dialog);
8104
8458
  overlay = inject(Overlay);
8459
+ injector = inject(Injector);
8460
+ idGenerator = inject(_IdGenerator);
8105
8461
  /**
8106
8462
  * Open a modal dialog with the given component as content.
8107
8463
  *
@@ -8150,12 +8506,36 @@ class ModalService {
8150
8506
  dialogRef.overlayRef.overlayElement.style.setProperty("--_tedi-modal-max-width", maxWidth);
8151
8507
  }
8152
8508
  this.setupDialogBehavior(dialogRef, scrollBehavior, closeOnBackdropClick, closeOnEscape);
8509
+ if (!ariaLabel && !ariaLabelledBy) {
8510
+ this.labelFromHeading(dialogRef);
8511
+ }
8153
8512
  return new ModalRef(dialogRef);
8154
8513
  }
8155
8514
  /** Close all open modals. */
8156
8515
  closeAll() {
8157
8516
  this.dialog.closeAll();
8158
8517
  }
8518
+ /**
8519
+ * Names the dialog from the heading in its `<tedi-modal-header>` when the
8520
+ * caller passed no label of their own. Deferred, because `Dialog.open`
8521
+ * returns before the content renders and the heading does not exist yet.
8522
+ *
8523
+ * Written onto the container rather than passed as
8524
+ * `DialogConfig.ariaLabelledBy`, which would commit to an id before knowing
8525
+ * whether a heading exists and leave a dangling reference when none does.
8526
+ */
8527
+ labelFromHeading(dialogRef) {
8528
+ afterNextRender(() => {
8529
+ // The container, not the pane, is what carries role="dialog".
8530
+ const container = dialogRef.overlayRef.overlayElement.querySelector("cdk-dialog-container");
8531
+ if (!container)
8532
+ return;
8533
+ const headingId = resolveModalHeadingId(container, this.idGenerator);
8534
+ if (headingId) {
8535
+ container.setAttribute("aria-labelledby", headingId);
8536
+ }
8537
+ }, { injector: this.injector });
8538
+ }
8159
8539
  buildPanelClasses(size, width, position, scrollBehavior, fullscreen) {
8160
8540
  const classes = ["tedi-modal-dialog", `tedi-modal-dialog--${size}`];
8161
8541
  if (WIDTH_PRESETS.includes(width)) {
@@ -8243,9 +8623,21 @@ class ModalComponent {
8243
8623
  position = input("center", ...(ngDevMode ? [{ debugName: "position" }] : []));
8244
8624
  /** @deprecated Whether clicking the backdrop closes the modal. Only used in standalone mode. */
8245
8625
  closeOnBackdropClick = input(true, ...(ngDevMode ? [{ debugName: "closeOnBackdropClick" }] : []));
8626
+ /**
8627
+ * Accessible name for the dialog. Only needed when the modal has no heading
8628
+ * in `<tedi-modal-header>`, or that heading is not the name to announce.
8629
+ * Standalone mode only; service mode uses `ModalConfig.ariaLabel`.
8630
+ */
8631
+ ariaLabel = input(undefined, ...(ngDevMode ? [{ debugName: "ariaLabel" }] : []));
8632
+ /**
8633
+ * Id of an element labelling the dialog, for a label outside
8634
+ * `<tedi-modal-header>`. Ignored when `ariaLabel` is set.
8635
+ */
8636
+ ariaLabelledBy = input(undefined, ...(ngDevMode ? [{ debugName: "ariaLabelledBy" }] : []));
8246
8637
  document = inject(DOCUMENT);
8247
8638
  host = inject(ElementRef);
8248
8639
  platformId = inject(PLATFORM_ID);
8640
+ idGenerator = inject(_IdGenerator);
8249
8641
  /**
8250
8642
  * When a ModalRef is available, this component is inside a CDK Dialog
8251
8643
  * and should act as a layout-only wrapper.
@@ -8256,6 +8648,16 @@ class ModalComponent {
8256
8648
  isPresetWidth = computed(() => ["xs", "sm", "md", "lg", "xl"].includes(this.width()), ...(ngDevMode ? [{ debugName: "isPresetWidth" }] : []));
8257
8649
  /** Custom width for non-preset widths (legacy mode only). */
8258
8650
  customWidth = computed(() => !this.serviceMode && !this.isPresetWidth() ? this.width() : null, ...(ngDevMode ? [{ debugName: "customWidth" }] : []));
8651
+ /** Re-resolved on every open, since the heading is projected content. */
8652
+ headingLabelId = signal(null, ...(ngDevMode ? [{ debugName: "headingLabelId" }] : []));
8653
+ /** @internal */
8654
+ dialogAriaLabel = computed(() => this.serviceMode ? null : (this.ariaLabel() ?? null), ...(ngDevMode ? [{ debugName: "dialogAriaLabel" }] : []));
8655
+ /** @internal `aria-label` wins, so it is never paired with a labelledby. */
8656
+ dialogAriaLabelledBy = computed(() => {
8657
+ if (this.serviceMode || this.ariaLabel())
8658
+ return null;
8659
+ return this.ariaLabelledBy() ?? this.headingLabelId();
8660
+ }, ...(ngDevMode ? [{ debugName: "dialogAriaLabelledBy" }] : []));
8259
8661
  classes = computed(() => {
8260
8662
  const classList = ["tedi-modal"];
8261
8663
  if (this.serviceMode) {
@@ -8311,11 +8713,24 @@ class ModalComponent {
8311
8713
  this.document.removeEventListener("keydown", this.handleKeydown);
8312
8714
  }
8313
8715
  onOpen() {
8716
+ this.resolveHeadingLabel();
8314
8717
  this.prevFocusedElement = this.document.activeElement;
8315
8718
  this.prevBodyOverflow = this.document.body.style.overflow;
8316
8719
  this.document.body.style.overflow = "hidden";
8317
8720
  this.document.addEventListener("keydown", this.handleKeydown);
8318
8721
  }
8722
+ /**
8723
+ * A DOM query rather than a `contentChild`, because the header injects this
8724
+ * component (importing it back would close a cycle) and the heading is
8725
+ * double-projected, out of reach of any query here.
8726
+ */
8727
+ resolveHeadingLabel() {
8728
+ if (this.ariaLabel() || this.ariaLabelledBy()) {
8729
+ this.headingLabelId.set(null);
8730
+ return;
8731
+ }
8732
+ this.headingLabelId.set(resolveModalHeadingId(this.host.nativeElement, this.idGenerator));
8733
+ }
8319
8734
  onClose() {
8320
8735
  this.document.body.style.overflow = this.prevBodyOverflow;
8321
8736
  if (this.prevFocusedElement) {
@@ -8335,7 +8750,7 @@ class ModalComponent {
8335
8750
  }
8336
8751
  };
8337
8752
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8338
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: ModalComponent, isStandalone: true, selector: "tedi-modal", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, closeOnBackdropClick: { classPropertyName: "closeOnBackdropClick", publicName: "closeOnBackdropClick", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange" }, host: { properties: { "class": "classes()" } }, providers: [
8753
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: ModalComponent, isStandalone: true, selector: "tedi-modal", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, closeOnBackdropClick: { classPropertyName: "closeOnBackdropClick", publicName: "closeOnBackdropClick", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledBy: { classPropertyName: "ariaLabelledBy", publicName: "ariaLabelledBy", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange" }, host: { properties: { "class": "classes()" } }, providers: [
8339
8754
  {
8340
8755
  provide: MODAL_SIZE,
8341
8756
  // In service mode the template `size` input stays at its default — the
@@ -8344,7 +8759,7 @@ class ModalComponent {
8344
8759
  useFactory: (modal, parentSize) => (modal.serviceMode && parentSize ? parentSize : modal.size),
8345
8760
  deps: [ModalComponent, [new Optional(), new SkipSelf(), MODAL_SIZE]],
8346
8761
  },
8347
- ], ngImport: i0, template: "@if (!serviceMode && open()) {\n <div class=\"tedi-modal__backdrop\" (click)=\"onBackdropClick()\"></div>\n}\n<div\n [class.tedi-modal__dialog]=\"!serviceMode\"\n [attr.role]=\"serviceMode ? null : 'dialog'\"\n [attr.aria-modal]=\"serviceMode ? null : true\"\n [attr.tabindex]=\"serviceMode ? null : -1\"\n [cdkTrapFocus]=\"!serviceMode\"\n [cdkTrapFocusAutoCapture]=\"!serviceMode && open()\"\n [style.display]=\"serviceMode ? 'contents' : !open() ? 'none' : null\"\n [style.width]=\"customWidth()\"\n>\n <ng-content select=\"tedi-modal-header\" />\n <ng-content select=\"tedi-modal-content\" />\n <ng-content select=\"tedi-modal-footer\" />\n</div>\n", styles: ["h1,.h1,.tedi-h1,.text-h1,.tedi-text--h1{font-size:var(--heading-h1-size);font-weight:var(--heading-h1-weight);line-height:var(--heading-h1-line-height)}h2,.h2,.tedi-h2,.text-h2,.tedi-text--h2{font-size:var(--heading-h2-size);font-weight:var(--heading-h2-weight);line-height:var(--heading-h2-line-height)}h3,.h3,.tedi-h3,.text-h3,.tedi-text--h3{font-size:var(--heading-h3-size);font-weight:var(--heading-h3-weight);line-height:var(--heading-h3-line-height)}h4,.h4,.tedi-h4,.text-h4,.tedi-text--h4{font-size:var(--heading-h4-size);font-weight:var(--heading-h4-weight);line-height:var(--heading-h4-line-height)}h5,.h5,.tedi-h5,.text-h5,.tedi-text--h5{font-size:var(--heading-h5-size);font-weight:var(--heading-h5-weight);line-height:var(--heading-h5-line-height)}h6,.h6,.tedi-h6,.text-h6,.tedi-text--h6{font-size:var(--heading-h6-size);font-weight:var(--heading-h6-weight);line-height:var(--heading-h6-line-height)}.tedi-text--h1{font-size:var(--heading-h1-size);font-weight:var(--heading-h1-weight);line-height:var(--heading-h1-line-height)}.tedi-text--h2{font-size:var(--heading-h2-size);font-weight:var(--heading-h2-weight);line-height:var(--heading-h2-line-height)}.tedi-text--h3{font-size:var(--heading-h3-size);font-weight:var(--heading-h3-weight);line-height:var(--heading-h3-line-height)}.tedi-text--h4{font-size:var(--heading-h4-size);font-weight:var(--heading-h4-weight);line-height:var(--heading-h4-line-height)}.tedi-text--h5{font-size:var(--heading-h5-size);font-weight:var(--heading-h5-weight);line-height:var(--heading-h5-line-height)}.tedi-text--h6{font-size:var(--heading-h6-size);font-weight:var(--heading-h6-weight);line-height:var(--heading-h6-line-height)}.tedi-text--default{font-family:var(--family-default);font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height);color:var(--general-text-primary)}.tedi-text--small{font-size:var(--body-small-regular-size);font-weight:var(--body-small-regular-weight);line-height:var(--body-small-regular-line-height)}.text-subtitle{font-size:var(--heading-subtitle-regular-size);font-weight:var(--heading-subtitle-regular-weight);line-height:var(--heading-subtitle-regular-line-height);text-transform:uppercase}.text-subtitle.text-small{font-size:var(--heading-subtitle-small-size);font-weight:var(--heading-subtitle-small-weight);line-height:var(--heading-subtitle-small-line-height)}label{line-height:var(--body-regular-line-height);color:var(--general-text-secondary)}.text-normal{font-family:var(--family-default);font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height);color:var(--general-text-primary)}small,.text-small{font-size:var(--body-small-regular-size);font-weight:var(--body-small-regular-weight);line-height:var(--body-small-regular-line-height)}.text-extra-small{font-size:var(--body-extra-small-size);font-weight:var(--body-extra-small-weight);line-height:var(--body-extra-small-line-height)}.tedi-text--default,.tedi-text--primary{color:var(--general-text-primary)}.tedi-text--secondary{color:var(--general-text-secondary)}.tedi-text--tertiary{color:var(--general-text-tertiary)}.tedi-text--white{color:var(--general-text-white)}.tedi-text--disabled{color:var(--general-text-disabled)}.tedi-text--brand{color:var(--general-text-brand)}.tedi-text--success{color:var(--general-status-success-text)}.tedi-text--warning{color:var(--general-status-warning-text)}.tedi-text--danger{color:var(--general-status-danger-text)}.tedi-text--info{color:var(--general-status-info-text)}.tedi-text--neutral{color:var(--general-status-neutral-text)}.text-nowrap{white-space:nowrap}.text-break-all{word-break:break-all}.text-break-word{overflow-wrap:break-word}.text-uppercase{text-transform:uppercase}.text-lowercase{text-transform:lowercase}.text-capitalize{text-transform:capitalize}.text-capitalize-first:first-letter{text-transform:capitalize}.text-break-spaces{white-space:break-spaces}.text-inline-block{display:inline-block}.text-inline{display:inline}b,strong,.text-bold{font-weight:700}.text-thin{font-weight:300}i,.text-italic{font-style:italic}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-line-normal{line-height:normal}.text-line-condensed{line-height:1}.text-default{color:var(--general-text-primary)}.text-primary{color:var(--general-text-brand)}@media print{.text-primary{filter:grayscale(1)}}.text-muted{color:var(--general-text-secondary)}.text-subtle{color:var(--general-text-tertiary)}.text-disabled{color:var(--general-text-disabled)}.text-inverted{color:var(--general-text-white)}.text-positive{color:var(--general-status-success-text)}@media print{.text-positive{filter:grayscale(1)}}.text-important{color:var(--general-status-danger-text)}@media print{.text-important{filter:grayscale(1)}}.text-warning{color:var(--general-status-warning-text)}@media print{.text-warning{filter:grayscale(1)}}.tedi-modal{--_tedi-modal-max-width: 95vw;--_tedi-modal-max-height: 95dvh;position:fixed;inset:0;z-index:var(--z-index-modal);display:none}.tedi-modal--open{display:block}.tedi-modal--default{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x);--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y);--_tedi-modal-body-padding: var(--modal-body-padding);--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x);--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y);--_tedi-modal-footer-gap: var(--button-gutter-x)}.tedi-modal--default .tedi-modal-header__head h1,.tedi-modal--default .tedi-modal-header__head h2,.tedi-modal--default .tedi-modal-header__head h3,.tedi-modal--default .tedi-modal-header__head h4,.tedi-modal--default .tedi-modal-header__head h5,.tedi-modal--default .tedi-modal-header__head h6{font-size:var(--heading-h3-size);font-weight:var(--heading-h3-weight);line-height:var(--heading-h3-line-height)}.tedi-modal--small{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x-sm);--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y-sm);--_tedi-modal-body-padding: var(--modal-body-padding-sm);--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x-sm);--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y-sm);--_tedi-modal-footer-gap: var(--button-gutter-x-sm)}.tedi-modal--small .tedi-modal-header__head h1,.tedi-modal--small .tedi-modal-header__head h2,.tedi-modal--small .tedi-modal-header__head h3,.tedi-modal--small .tedi-modal-header__head h4,.tedi-modal--small .tedi-modal-header__head h5,.tedi-modal--small .tedi-modal-header__head h6{font-size:var(--heading-h4-size);font-weight:var(--heading-h4-weight);line-height:var(--heading-h4-line-height)}.tedi-modal--xs .tedi-modal__dialog{max-width:min(var(--modal-max-width-xs),var(--_tedi-modal-max-width))}.tedi-modal--sm .tedi-modal__dialog{max-width:min(var(--modal-max-width-sm),var(--_tedi-modal-max-width))}.tedi-modal--md .tedi-modal__dialog{max-width:min(var(--modal-max-width-md),var(--_tedi-modal-max-width))}.tedi-modal--lg .tedi-modal__dialog{max-width:min(var(--modal-max-width-lg),var(--_tedi-modal-max-width))}.tedi-modal--xl .tedi-modal__dialog{max-width:min(var(--modal-max-width-xl),var(--_tedi-modal-max-width))}.tedi-modal--center .tedi-modal__dialog{top:50%;left:50%;max-height:var(--_tedi-modal-max-height);transform:translate(-50%,-50%)}.tedi-modal--center.tedi-modal--top .tedi-modal__dialog{top:var(--modal-top-margin);transform:translate(-50%)}.tedi-modal--left .tedi-modal__dialog{top:0;left:0;min-height:100dvh;border-radius:0;animation:tedi-modal-slide-left .2s ease-out}.tedi-modal--right .tedi-modal__dialog{top:0;right:0;min-height:100dvh;border-radius:0;animation:tedi-modal-slide-right .2s ease-out}.tedi-modal--service{position:static;inset:auto;z-index:auto;display:flex;flex-direction:column}.tedi-modal__dialog{position:fixed;max-width:var(--_tedi-modal-max-width);display:flex;flex-direction:column;width:100%;background-color:var(--modal-background);border:var(--tedi-borders-01) solid var(--modal-border-outer);border-radius:var(--modal-radius)}.tedi-modal__backdrop{position:fixed;inset:0;background:var(--general-surface-overlay)}.tedi-modal .tedi-modal-header{padding:var(--_tedi-modal-heading-padding-y) var(--_tedi-modal-heading-padding-x);border-bottom:var(--tedi-borders-01) solid var(--modal-border-inner)}.tedi-modal .tedi-modal-header .tedi-modal-header__head{display:flex;gap:var(--layout-grid-gutters-08);align-items:center}.tedi-modal .tedi-modal-header .tedi-modal-header__head .tedi-modal-header__close{margin-left:auto}.tedi-modal .tedi-modal-header [tedi-modal-description]{margin-top:var(--layout-grid-gutters-08)}.tedi-modal .tedi-modal-content{display:flex;flex:1;flex-direction:column;gap:var(--layout-grid-gutters-16);padding:var(--_tedi-modal-body-padding);overflow-y:auto}.tedi-modal .tedi-modal-content:has(.tedi-scroll-fade){overflow:hidden}.tedi-modal .tedi-modal-content .tedi-scroll-fade{flex:1;min-height:0}.tedi-modal .tedi-modal-footer{display:flex;gap:var(--_tedi-modal-footer-gap);justify-content:flex-end;padding:var(--_tedi-modal-footer-padding-y) var(--_tedi-modal-footer-padding-x);border-top:var(--tedi-borders-01) solid var(--modal-border-inner)}.tedi-modal-backdrop{background:var(--general-surface-overlay)}.tedi-modal-dialog{--_tedi-modal-max-width: 95vw;--_tedi-modal-max-height: 95dvh;width:100%;max-width:var(--_tedi-modal-max-width)}.tedi-modal-dialog--default{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x);--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y);--_tedi-modal-body-padding: var(--modal-body-padding);--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x);--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y);--_tedi-modal-footer-gap: var(--button-gutter-x)}.tedi-modal-dialog--default .tedi-modal-header__head h1,.tedi-modal-dialog--default .tedi-modal-header__head h2,.tedi-modal-dialog--default .tedi-modal-header__head h3,.tedi-modal-dialog--default .tedi-modal-header__head h4,.tedi-modal-dialog--default .tedi-modal-header__head h5,.tedi-modal-dialog--default .tedi-modal-header__head h6{font-size:var(--heading-h3-size);font-weight:var(--heading-h3-weight);line-height:var(--heading-h3-line-height)}.tedi-modal-dialog--small{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x-sm);--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y-sm);--_tedi-modal-body-padding: var(--modal-body-padding-sm);--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x-sm);--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y-sm);--_tedi-modal-footer-gap: var(--button-gutter-x-sm)}.tedi-modal-dialog--small .tedi-modal-header__head h1,.tedi-modal-dialog--small .tedi-modal-header__head h2,.tedi-modal-dialog--small .tedi-modal-header__head h3,.tedi-modal-dialog--small .tedi-modal-header__head h4,.tedi-modal-dialog--small .tedi-modal-header__head h5,.tedi-modal-dialog--small .tedi-modal-header__head h6{font-size:var(--heading-h4-size);font-weight:var(--heading-h4-weight);line-height:var(--heading-h4-line-height)}.tedi-modal-dialog--xs{max-width:min(var(--modal-max-width-xs),var(--_tedi-modal-max-width))}.tedi-modal-dialog--sm{max-width:min(var(--modal-max-width-sm),var(--_tedi-modal-max-width))}.tedi-modal-dialog--md{max-width:min(var(--modal-max-width-md),var(--_tedi-modal-max-width))}.tedi-modal-dialog--lg{max-width:min(var(--modal-max-width-lg),var(--_tedi-modal-max-width))}.tedi-modal-dialog--xl{max-width:min(var(--modal-max-width-xl),var(--_tedi-modal-max-width))}.tedi-modal-dialog--center{max-height:var(--_tedi-modal-max-height)}.tedi-modal-dialog--left,.tedi-modal-dialog--right{min-height:100dvh}.tedi-modal-dialog--left cdk-dialog-container,.tedi-modal-dialog--right cdk-dialog-container{min-height:100dvh}.tedi-modal-dialog--left .tedi-modal,.tedi-modal-dialog--right .tedi-modal{min-height:100dvh}.tedi-modal-dialog--left{animation:tedi-modal-slide-left .2s ease-out}.tedi-modal-dialog--right{animation:tedi-modal-slide-right .2s ease-out}.tedi-modal-dialog--center cdk-dialog-container{display:flex;flex-direction:column;max-height:var(--_tedi-modal-max-height)}.tedi-modal-dialog--center .tedi-modal{max-height:var(--_tedi-modal-max-height);overflow:hidden}.tedi-modal-dialog .tedi-modal{display:flex;flex-direction:column;width:100%;background-color:var(--modal-background);border:var(--tedi-borders-01) solid var(--modal-border-outer);border-radius:var(--modal-radius)}.tedi-modal-dialog--left .tedi-modal,.tedi-modal-dialog--right .tedi-modal{border-radius:0}.tedi-modal-dialog--scroll-page{--_tedi-modal-max-height: none}.tedi-modal-dialog--scroll-page cdk-dialog-container{max-height:none}.tedi-modal-dialog--scroll-page .tedi-modal{max-height:none;overflow:visible}.tedi-modal-dialog--scroll-page .tedi-modal-content{overflow-y:visible}.tedi-modal-dialog--fullscreen{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen cdk-dialog-container,.tedi-modal-dialog--fullscreen .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen .tedi-modal{border-radius:0}@media(max-width:35.98rem){.tedi-modal-dialog--fullscreen-sm{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen-sm cdk-dialog-container,.tedi-modal-dialog--fullscreen-sm .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen-sm .tedi-modal{border-radius:0}}@media(max-width:47.98rem){.tedi-modal-dialog--fullscreen-md{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen-md cdk-dialog-container,.tedi-modal-dialog--fullscreen-md .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen-md .tedi-modal{border-radius:0}}@media(max-width:61.98rem){.tedi-modal-dialog--fullscreen-lg{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen-lg cdk-dialog-container,.tedi-modal-dialog--fullscreen-lg .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen-lg .tedi-modal{border-radius:0}}@media(max-width:74.98rem){.tedi-modal-dialog--fullscreen-xl{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen-xl cdk-dialog-container,.tedi-modal-dialog--fullscreen-xl .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen-xl .tedi-modal{border-radius:0}}@media(max-width:87.48rem){.tedi-modal-dialog--fullscreen-xxl{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen-xxl cdk-dialog-container,.tedi-modal-dialog--fullscreen-xxl .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen-xxl .tedi-modal{border-radius:0}}.tedi-modal-dialog .tedi-modal-header{padding:var(--_tedi-modal-heading-padding-y) var(--_tedi-modal-heading-padding-x);border-bottom:var(--tedi-borders-01) solid var(--modal-border-inner)}.tedi-modal-dialog .tedi-modal-header .tedi-modal-header__head{display:flex;gap:var(--layout-grid-gutters-08);align-items:center}.tedi-modal-dialog .tedi-modal-header .tedi-modal-header__head .tedi-modal-header__close{margin-left:auto}.tedi-modal-dialog .tedi-modal-header [tedi-modal-description]{margin-top:var(--layout-grid-gutters-08)}.tedi-modal-dialog .tedi-modal-content{display:flex;flex:1;flex-direction:column;gap:var(--layout-grid-gutters-16);padding:var(--_tedi-modal-body-padding);overflow-y:auto}.tedi-modal-dialog .tedi-modal-content:has(.tedi-scroll-fade){overflow:hidden}.tedi-modal-dialog .tedi-modal-content .tedi-scroll-fade{flex:1;min-height:0}.tedi-modal-dialog .tedi-modal-footer{display:flex;gap:var(--_tedi-modal-footer-gap);justify-content:flex-end;padding:var(--_tedi-modal-footer-padding-y) var(--_tedi-modal-footer-padding-x);border-top:var(--tedi-borders-01) solid var(--modal-border-inner)}@keyframes tedi-modal-slide-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes tedi-modal-slide-right{0%{transform:translate(100%)}to{transform:translate(0)}}\n"], dependencies: [{ kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
8762
+ ], ngImport: i0, template: "@if (!serviceMode && open()) {\n <div class=\"tedi-modal__backdrop\" (click)=\"onBackdropClick()\"></div>\n}\n<div\n [class.tedi-modal__dialog]=\"!serviceMode\"\n [attr.role]=\"serviceMode ? null : 'dialog'\"\n [attr.aria-modal]=\"serviceMode ? null : true\"\n [attr.aria-label]=\"dialogAriaLabel()\"\n [attr.aria-labelledby]=\"dialogAriaLabelledBy()\"\n [attr.tabindex]=\"serviceMode ? null : -1\"\n [cdkTrapFocus]=\"!serviceMode\"\n [cdkTrapFocusAutoCapture]=\"!serviceMode && open()\"\n [style.display]=\"serviceMode ? 'contents' : !open() ? 'none' : null\"\n [style.width]=\"customWidth()\"\n>\n <ng-content select=\"tedi-modal-header\" />\n <ng-content select=\"tedi-modal-content\" />\n <ng-content select=\"tedi-modal-footer\" />\n</div>\n", styles: ["h1,.h1,.tedi-h1,.text-h1,.tedi-text--h1{font-size:var(--heading-h1-size);font-weight:var(--heading-h1-weight);line-height:var(--heading-h1-line-height)}h2,.h2,.tedi-h2,.text-h2,.tedi-text--h2{font-size:var(--heading-h2-size);font-weight:var(--heading-h2-weight);line-height:var(--heading-h2-line-height)}h3,.h3,.tedi-h3,.text-h3,.tedi-text--h3{font-size:var(--heading-h3-size);font-weight:var(--heading-h3-weight);line-height:var(--heading-h3-line-height)}h4,.h4,.tedi-h4,.text-h4,.tedi-text--h4{font-size:var(--heading-h4-size);font-weight:var(--heading-h4-weight);line-height:var(--heading-h4-line-height)}h5,.h5,.tedi-h5,.text-h5,.tedi-text--h5{font-size:var(--heading-h5-size);font-weight:var(--heading-h5-weight);line-height:var(--heading-h5-line-height)}h6,.h6,.tedi-h6,.text-h6,.tedi-text--h6{font-size:var(--heading-h6-size);font-weight:var(--heading-h6-weight);line-height:var(--heading-h6-line-height)}.tedi-text--h1{font-size:var(--heading-h1-size);font-weight:var(--heading-h1-weight);line-height:var(--heading-h1-line-height)}.tedi-text--h2{font-size:var(--heading-h2-size);font-weight:var(--heading-h2-weight);line-height:var(--heading-h2-line-height)}.tedi-text--h3{font-size:var(--heading-h3-size);font-weight:var(--heading-h3-weight);line-height:var(--heading-h3-line-height)}.tedi-text--h4{font-size:var(--heading-h4-size);font-weight:var(--heading-h4-weight);line-height:var(--heading-h4-line-height)}.tedi-text--h5{font-size:var(--heading-h5-size);font-weight:var(--heading-h5-weight);line-height:var(--heading-h5-line-height)}.tedi-text--h6{font-size:var(--heading-h6-size);font-weight:var(--heading-h6-weight);line-height:var(--heading-h6-line-height)}.tedi-text--default{font-family:var(--family-default);font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height);color:var(--general-text-primary)}.tedi-text--small{font-size:var(--body-small-regular-size);font-weight:var(--body-small-regular-weight);line-height:var(--body-small-regular-line-height)}.text-subtitle{font-size:var(--heading-subtitle-regular-size);font-weight:var(--heading-subtitle-regular-weight);line-height:var(--heading-subtitle-regular-line-height);text-transform:uppercase}.text-subtitle.text-small{font-size:var(--heading-subtitle-small-size);font-weight:var(--heading-subtitle-small-weight);line-height:var(--heading-subtitle-small-line-height)}label{line-height:var(--body-regular-line-height);color:var(--general-text-secondary)}.text-normal{font-family:var(--family-default);font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height);color:var(--general-text-primary)}small,.text-small{font-size:var(--body-small-regular-size);font-weight:var(--body-small-regular-weight);line-height:var(--body-small-regular-line-height)}.text-extra-small{font-size:var(--body-extra-small-size);font-weight:var(--body-extra-small-weight);line-height:var(--body-extra-small-line-height)}.tedi-text--default,.tedi-text--primary{color:var(--general-text-primary)}.tedi-text--secondary{color:var(--general-text-secondary)}.tedi-text--tertiary{color:var(--general-text-tertiary)}.tedi-text--white{color:var(--general-text-white)}.tedi-text--disabled{color:var(--general-text-disabled)}.tedi-text--brand{color:var(--general-text-brand)}.tedi-text--success{color:var(--general-status-success-text)}.tedi-text--warning{color:var(--general-status-warning-text)}.tedi-text--danger{color:var(--general-status-danger-text)}.tedi-text--info{color:var(--general-status-info-text)}.tedi-text--neutral{color:var(--general-status-neutral-text)}.text-nowrap{white-space:nowrap}.text-break-all{word-break:break-all}.text-break-word{overflow-wrap:break-word}.text-uppercase{text-transform:uppercase}.text-lowercase{text-transform:lowercase}.text-capitalize{text-transform:capitalize}.text-capitalize-first:first-letter{text-transform:capitalize}.text-break-spaces{white-space:break-spaces}.text-inline-block{display:inline-block}.text-inline{display:inline}b,strong,.text-bold{font-weight:700}.text-thin{font-weight:300}i,.text-italic{font-style:italic}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-line-normal{line-height:normal}.text-line-condensed{line-height:1}.text-default{color:var(--general-text-primary)}.text-primary{color:var(--general-text-brand)}@media print{.text-primary{filter:grayscale(1)}}.text-muted{color:var(--general-text-secondary)}.text-subtle{color:var(--general-text-tertiary)}.text-disabled{color:var(--general-text-disabled)}.text-inverted{color:var(--general-text-white)}.text-positive{color:var(--general-status-success-text)}@media print{.text-positive{filter:grayscale(1)}}.text-important{color:var(--general-status-danger-text)}@media print{.text-important{filter:grayscale(1)}}.text-warning{color:var(--general-status-warning-text)}@media print{.text-warning{filter:grayscale(1)}}.tedi-modal{--_tedi-modal-max-width: 95vw;--_tedi-modal-max-height: 95dvh;position:fixed;inset:0;z-index:var(--z-index-modal);display:none}.tedi-modal--open{display:block}.tedi-modal--default{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x);--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y);--_tedi-modal-body-padding: var(--modal-body-padding);--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x);--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y);--_tedi-modal-footer-gap: var(--button-gutter-x)}.tedi-modal--default .tedi-modal-header__head h1,.tedi-modal--default .tedi-modal-header__head h2,.tedi-modal--default .tedi-modal-header__head h3,.tedi-modal--default .tedi-modal-header__head h4,.tedi-modal--default .tedi-modal-header__head h5,.tedi-modal--default .tedi-modal-header__head h6{font-size:var(--heading-h3-size);font-weight:var(--heading-h3-weight);line-height:var(--heading-h3-line-height)}.tedi-modal--small{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x-sm);--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y-sm);--_tedi-modal-body-padding: var(--modal-body-padding-sm);--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x-sm);--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y-sm);--_tedi-modal-footer-gap: var(--button-gutter-x-sm)}.tedi-modal--small .tedi-modal-header__head h1,.tedi-modal--small .tedi-modal-header__head h2,.tedi-modal--small .tedi-modal-header__head h3,.tedi-modal--small .tedi-modal-header__head h4,.tedi-modal--small .tedi-modal-header__head h5,.tedi-modal--small .tedi-modal-header__head h6{font-size:var(--heading-h4-size);font-weight:var(--heading-h4-weight);line-height:var(--heading-h4-line-height)}.tedi-modal--xs .tedi-modal__dialog{max-width:min(var(--modal-max-width-xs),var(--_tedi-modal-max-width))}.tedi-modal--sm .tedi-modal__dialog{max-width:min(var(--modal-max-width-sm),var(--_tedi-modal-max-width))}.tedi-modal--md .tedi-modal__dialog{max-width:min(var(--modal-max-width-md),var(--_tedi-modal-max-width))}.tedi-modal--lg .tedi-modal__dialog{max-width:min(var(--modal-max-width-lg),var(--_tedi-modal-max-width))}.tedi-modal--xl .tedi-modal__dialog{max-width:min(var(--modal-max-width-xl),var(--_tedi-modal-max-width))}.tedi-modal--center .tedi-modal__dialog{top:50%;left:50%;max-height:var(--_tedi-modal-max-height);transform:translate(-50%,-50%)}.tedi-modal--center.tedi-modal--top .tedi-modal__dialog{top:var(--modal-top-margin);transform:translate(-50%)}.tedi-modal--left .tedi-modal__dialog{top:0;left:0;min-height:100dvh;border-radius:0;animation:tedi-modal-slide-left .2s ease-out}.tedi-modal--right .tedi-modal__dialog{top:0;right:0;min-height:100dvh;border-radius:0;animation:tedi-modal-slide-right .2s ease-out}.tedi-modal--service{position:static;inset:auto;z-index:auto;display:flex;flex-direction:column}.tedi-modal__dialog{position:fixed;max-width:var(--_tedi-modal-max-width);display:flex;flex-direction:column;width:100%;background-color:var(--modal-background);border:var(--tedi-borders-01) solid var(--modal-border-outer);border-radius:var(--modal-radius)}.tedi-modal__backdrop{position:fixed;inset:0;background:var(--general-surface-overlay)}.tedi-modal .tedi-modal-header{padding:var(--_tedi-modal-heading-padding-y) var(--_tedi-modal-heading-padding-x);border-bottom:var(--tedi-borders-01) solid var(--modal-border-inner)}.tedi-modal .tedi-modal-header .tedi-modal-header__head{display:flex;gap:var(--layout-grid-gutters-08);align-items:center}.tedi-modal .tedi-modal-header .tedi-modal-header__head .tedi-modal-header__close{margin-left:auto}.tedi-modal .tedi-modal-header [tedi-modal-description]{margin-top:var(--layout-grid-gutters-08)}.tedi-modal .tedi-modal-content{display:flex;flex:1;flex-direction:column;gap:var(--layout-grid-gutters-16);padding:var(--_tedi-modal-body-padding);overflow-y:auto}.tedi-modal .tedi-modal-content:has(.tedi-scroll-fade){overflow:hidden}.tedi-modal .tedi-modal-content .tedi-scroll-fade{flex:1;min-height:0}.tedi-modal .tedi-modal-footer{display:flex;gap:var(--_tedi-modal-footer-gap);justify-content:flex-end;padding:var(--_tedi-modal-footer-padding-y) var(--_tedi-modal-footer-padding-x);border-top:var(--tedi-borders-01) solid var(--modal-border-inner)}.tedi-modal-backdrop{background:var(--general-surface-overlay)}.tedi-modal-dialog{--_tedi-modal-max-width: 95vw;--_tedi-modal-max-height: 95dvh;width:100%;max-width:var(--_tedi-modal-max-width)}.tedi-modal-dialog--default{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x);--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y);--_tedi-modal-body-padding: var(--modal-body-padding);--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x);--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y);--_tedi-modal-footer-gap: var(--button-gutter-x)}.tedi-modal-dialog--default .tedi-modal-header__head h1,.tedi-modal-dialog--default .tedi-modal-header__head h2,.tedi-modal-dialog--default .tedi-modal-header__head h3,.tedi-modal-dialog--default .tedi-modal-header__head h4,.tedi-modal-dialog--default .tedi-modal-header__head h5,.tedi-modal-dialog--default .tedi-modal-header__head h6{font-size:var(--heading-h3-size);font-weight:var(--heading-h3-weight);line-height:var(--heading-h3-line-height)}.tedi-modal-dialog--small{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x-sm);--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y-sm);--_tedi-modal-body-padding: var(--modal-body-padding-sm);--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x-sm);--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y-sm);--_tedi-modal-footer-gap: var(--button-gutter-x-sm)}.tedi-modal-dialog--small .tedi-modal-header__head h1,.tedi-modal-dialog--small .tedi-modal-header__head h2,.tedi-modal-dialog--small .tedi-modal-header__head h3,.tedi-modal-dialog--small .tedi-modal-header__head h4,.tedi-modal-dialog--small .tedi-modal-header__head h5,.tedi-modal-dialog--small .tedi-modal-header__head h6{font-size:var(--heading-h4-size);font-weight:var(--heading-h4-weight);line-height:var(--heading-h4-line-height)}.tedi-modal-dialog--xs{max-width:min(var(--modal-max-width-xs),var(--_tedi-modal-max-width))}.tedi-modal-dialog--sm{max-width:min(var(--modal-max-width-sm),var(--_tedi-modal-max-width))}.tedi-modal-dialog--md{max-width:min(var(--modal-max-width-md),var(--_tedi-modal-max-width))}.tedi-modal-dialog--lg{max-width:min(var(--modal-max-width-lg),var(--_tedi-modal-max-width))}.tedi-modal-dialog--xl{max-width:min(var(--modal-max-width-xl),var(--_tedi-modal-max-width))}.tedi-modal-dialog--center{max-height:var(--_tedi-modal-max-height)}.tedi-modal-dialog--left,.tedi-modal-dialog--right{min-height:100dvh}.tedi-modal-dialog--left cdk-dialog-container,.tedi-modal-dialog--right cdk-dialog-container{min-height:100dvh}.tedi-modal-dialog--left .tedi-modal,.tedi-modal-dialog--right .tedi-modal{min-height:100dvh}.tedi-modal-dialog--left{animation:tedi-modal-slide-left .2s ease-out}.tedi-modal-dialog--right{animation:tedi-modal-slide-right .2s ease-out}.tedi-modal-dialog--center cdk-dialog-container{display:flex;flex-direction:column;max-height:var(--_tedi-modal-max-height)}.tedi-modal-dialog--center .tedi-modal{max-height:var(--_tedi-modal-max-height);overflow:hidden}.tedi-modal-dialog .tedi-modal{display:flex;flex-direction:column;width:100%;background-color:var(--modal-background);border:var(--tedi-borders-01) solid var(--modal-border-outer);border-radius:var(--modal-radius)}.tedi-modal-dialog--left .tedi-modal,.tedi-modal-dialog--right .tedi-modal{border-radius:0}.tedi-modal-dialog--scroll-page{--_tedi-modal-max-height: none}.tedi-modal-dialog--scroll-page cdk-dialog-container{max-height:none}.tedi-modal-dialog--scroll-page .tedi-modal{max-height:none;overflow:visible}.tedi-modal-dialog--scroll-page .tedi-modal-content{overflow-y:visible}.tedi-modal-dialog--fullscreen{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen cdk-dialog-container,.tedi-modal-dialog--fullscreen .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen .tedi-modal{border-radius:0}@media(max-width:35.98rem){.tedi-modal-dialog--fullscreen-sm{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen-sm cdk-dialog-container,.tedi-modal-dialog--fullscreen-sm .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen-sm .tedi-modal{border-radius:0}}@media(max-width:47.98rem){.tedi-modal-dialog--fullscreen-md{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen-md cdk-dialog-container,.tedi-modal-dialog--fullscreen-md .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen-md .tedi-modal{border-radius:0}}@media(max-width:61.98rem){.tedi-modal-dialog--fullscreen-lg{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen-lg cdk-dialog-container,.tedi-modal-dialog--fullscreen-lg .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen-lg .tedi-modal{border-radius:0}}@media(max-width:74.98rem){.tedi-modal-dialog--fullscreen-xl{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen-xl cdk-dialog-container,.tedi-modal-dialog--fullscreen-xl .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen-xl .tedi-modal{border-radius:0}}@media(max-width:87.48rem){.tedi-modal-dialog--fullscreen-xxl{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen-xxl cdk-dialog-container,.tedi-modal-dialog--fullscreen-xxl .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen-xxl .tedi-modal{border-radius:0}}.tedi-modal-dialog .tedi-modal-header{padding:var(--_tedi-modal-heading-padding-y) var(--_tedi-modal-heading-padding-x);border-bottom:var(--tedi-borders-01) solid var(--modal-border-inner)}.tedi-modal-dialog .tedi-modal-header .tedi-modal-header__head{display:flex;gap:var(--layout-grid-gutters-08);align-items:center}.tedi-modal-dialog .tedi-modal-header .tedi-modal-header__head .tedi-modal-header__close{margin-left:auto}.tedi-modal-dialog .tedi-modal-header [tedi-modal-description]{margin-top:var(--layout-grid-gutters-08)}.tedi-modal-dialog .tedi-modal-content{display:flex;flex:1;flex-direction:column;gap:var(--layout-grid-gutters-16);padding:var(--_tedi-modal-body-padding);overflow-y:auto}.tedi-modal-dialog .tedi-modal-content:has(.tedi-scroll-fade){overflow:hidden}.tedi-modal-dialog .tedi-modal-content .tedi-scroll-fade{flex:1;min-height:0}.tedi-modal-dialog .tedi-modal-footer{display:flex;gap:var(--_tedi-modal-footer-gap);justify-content:flex-end;padding:var(--_tedi-modal-footer-padding-y) var(--_tedi-modal-footer-padding-x);border-top:var(--tedi-borders-01) solid var(--modal-border-inner)}@keyframes tedi-modal-slide-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes tedi-modal-slide-right{0%{transform:translate(100%)}to{transform:translate(0)}}\n"], dependencies: [{ kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
8348
8763
  }
8349
8764
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ModalComponent, decorators: [{
8350
8765
  type: Component,
@@ -8359,8 +8774,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
8359
8774
  useFactory: (modal, parentSize) => (modal.serviceMode && parentSize ? parentSize : modal.size),
8360
8775
  deps: [ModalComponent, [new Optional(), new SkipSelf(), MODAL_SIZE]],
8361
8776
  },
8362
- ], template: "@if (!serviceMode && open()) {\n <div class=\"tedi-modal__backdrop\" (click)=\"onBackdropClick()\"></div>\n}\n<div\n [class.tedi-modal__dialog]=\"!serviceMode\"\n [attr.role]=\"serviceMode ? null : 'dialog'\"\n [attr.aria-modal]=\"serviceMode ? null : true\"\n [attr.tabindex]=\"serviceMode ? null : -1\"\n [cdkTrapFocus]=\"!serviceMode\"\n [cdkTrapFocusAutoCapture]=\"!serviceMode && open()\"\n [style.display]=\"serviceMode ? 'contents' : !open() ? 'none' : null\"\n [style.width]=\"customWidth()\"\n>\n <ng-content select=\"tedi-modal-header\" />\n <ng-content select=\"tedi-modal-content\" />\n <ng-content select=\"tedi-modal-footer\" />\n</div>\n", styles: ["h1,.h1,.tedi-h1,.text-h1,.tedi-text--h1{font-size:var(--heading-h1-size);font-weight:var(--heading-h1-weight);line-height:var(--heading-h1-line-height)}h2,.h2,.tedi-h2,.text-h2,.tedi-text--h2{font-size:var(--heading-h2-size);font-weight:var(--heading-h2-weight);line-height:var(--heading-h2-line-height)}h3,.h3,.tedi-h3,.text-h3,.tedi-text--h3{font-size:var(--heading-h3-size);font-weight:var(--heading-h3-weight);line-height:var(--heading-h3-line-height)}h4,.h4,.tedi-h4,.text-h4,.tedi-text--h4{font-size:var(--heading-h4-size);font-weight:var(--heading-h4-weight);line-height:var(--heading-h4-line-height)}h5,.h5,.tedi-h5,.text-h5,.tedi-text--h5{font-size:var(--heading-h5-size);font-weight:var(--heading-h5-weight);line-height:var(--heading-h5-line-height)}h6,.h6,.tedi-h6,.text-h6,.tedi-text--h6{font-size:var(--heading-h6-size);font-weight:var(--heading-h6-weight);line-height:var(--heading-h6-line-height)}.tedi-text--h1{font-size:var(--heading-h1-size);font-weight:var(--heading-h1-weight);line-height:var(--heading-h1-line-height)}.tedi-text--h2{font-size:var(--heading-h2-size);font-weight:var(--heading-h2-weight);line-height:var(--heading-h2-line-height)}.tedi-text--h3{font-size:var(--heading-h3-size);font-weight:var(--heading-h3-weight);line-height:var(--heading-h3-line-height)}.tedi-text--h4{font-size:var(--heading-h4-size);font-weight:var(--heading-h4-weight);line-height:var(--heading-h4-line-height)}.tedi-text--h5{font-size:var(--heading-h5-size);font-weight:var(--heading-h5-weight);line-height:var(--heading-h5-line-height)}.tedi-text--h6{font-size:var(--heading-h6-size);font-weight:var(--heading-h6-weight);line-height:var(--heading-h6-line-height)}.tedi-text--default{font-family:var(--family-default);font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height);color:var(--general-text-primary)}.tedi-text--small{font-size:var(--body-small-regular-size);font-weight:var(--body-small-regular-weight);line-height:var(--body-small-regular-line-height)}.text-subtitle{font-size:var(--heading-subtitle-regular-size);font-weight:var(--heading-subtitle-regular-weight);line-height:var(--heading-subtitle-regular-line-height);text-transform:uppercase}.text-subtitle.text-small{font-size:var(--heading-subtitle-small-size);font-weight:var(--heading-subtitle-small-weight);line-height:var(--heading-subtitle-small-line-height)}label{line-height:var(--body-regular-line-height);color:var(--general-text-secondary)}.text-normal{font-family:var(--family-default);font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height);color:var(--general-text-primary)}small,.text-small{font-size:var(--body-small-regular-size);font-weight:var(--body-small-regular-weight);line-height:var(--body-small-regular-line-height)}.text-extra-small{font-size:var(--body-extra-small-size);font-weight:var(--body-extra-small-weight);line-height:var(--body-extra-small-line-height)}.tedi-text--default,.tedi-text--primary{color:var(--general-text-primary)}.tedi-text--secondary{color:var(--general-text-secondary)}.tedi-text--tertiary{color:var(--general-text-tertiary)}.tedi-text--white{color:var(--general-text-white)}.tedi-text--disabled{color:var(--general-text-disabled)}.tedi-text--brand{color:var(--general-text-brand)}.tedi-text--success{color:var(--general-status-success-text)}.tedi-text--warning{color:var(--general-status-warning-text)}.tedi-text--danger{color:var(--general-status-danger-text)}.tedi-text--info{color:var(--general-status-info-text)}.tedi-text--neutral{color:var(--general-status-neutral-text)}.text-nowrap{white-space:nowrap}.text-break-all{word-break:break-all}.text-break-word{overflow-wrap:break-word}.text-uppercase{text-transform:uppercase}.text-lowercase{text-transform:lowercase}.text-capitalize{text-transform:capitalize}.text-capitalize-first:first-letter{text-transform:capitalize}.text-break-spaces{white-space:break-spaces}.text-inline-block{display:inline-block}.text-inline{display:inline}b,strong,.text-bold{font-weight:700}.text-thin{font-weight:300}i,.text-italic{font-style:italic}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-line-normal{line-height:normal}.text-line-condensed{line-height:1}.text-default{color:var(--general-text-primary)}.text-primary{color:var(--general-text-brand)}@media print{.text-primary{filter:grayscale(1)}}.text-muted{color:var(--general-text-secondary)}.text-subtle{color:var(--general-text-tertiary)}.text-disabled{color:var(--general-text-disabled)}.text-inverted{color:var(--general-text-white)}.text-positive{color:var(--general-status-success-text)}@media print{.text-positive{filter:grayscale(1)}}.text-important{color:var(--general-status-danger-text)}@media print{.text-important{filter:grayscale(1)}}.text-warning{color:var(--general-status-warning-text)}@media print{.text-warning{filter:grayscale(1)}}.tedi-modal{--_tedi-modal-max-width: 95vw;--_tedi-modal-max-height: 95dvh;position:fixed;inset:0;z-index:var(--z-index-modal);display:none}.tedi-modal--open{display:block}.tedi-modal--default{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x);--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y);--_tedi-modal-body-padding: var(--modal-body-padding);--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x);--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y);--_tedi-modal-footer-gap: var(--button-gutter-x)}.tedi-modal--default .tedi-modal-header__head h1,.tedi-modal--default .tedi-modal-header__head h2,.tedi-modal--default .tedi-modal-header__head h3,.tedi-modal--default .tedi-modal-header__head h4,.tedi-modal--default .tedi-modal-header__head h5,.tedi-modal--default .tedi-modal-header__head h6{font-size:var(--heading-h3-size);font-weight:var(--heading-h3-weight);line-height:var(--heading-h3-line-height)}.tedi-modal--small{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x-sm);--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y-sm);--_tedi-modal-body-padding: var(--modal-body-padding-sm);--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x-sm);--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y-sm);--_tedi-modal-footer-gap: var(--button-gutter-x-sm)}.tedi-modal--small .tedi-modal-header__head h1,.tedi-modal--small .tedi-modal-header__head h2,.tedi-modal--small .tedi-modal-header__head h3,.tedi-modal--small .tedi-modal-header__head h4,.tedi-modal--small .tedi-modal-header__head h5,.tedi-modal--small .tedi-modal-header__head h6{font-size:var(--heading-h4-size);font-weight:var(--heading-h4-weight);line-height:var(--heading-h4-line-height)}.tedi-modal--xs .tedi-modal__dialog{max-width:min(var(--modal-max-width-xs),var(--_tedi-modal-max-width))}.tedi-modal--sm .tedi-modal__dialog{max-width:min(var(--modal-max-width-sm),var(--_tedi-modal-max-width))}.tedi-modal--md .tedi-modal__dialog{max-width:min(var(--modal-max-width-md),var(--_tedi-modal-max-width))}.tedi-modal--lg .tedi-modal__dialog{max-width:min(var(--modal-max-width-lg),var(--_tedi-modal-max-width))}.tedi-modal--xl .tedi-modal__dialog{max-width:min(var(--modal-max-width-xl),var(--_tedi-modal-max-width))}.tedi-modal--center .tedi-modal__dialog{top:50%;left:50%;max-height:var(--_tedi-modal-max-height);transform:translate(-50%,-50%)}.tedi-modal--center.tedi-modal--top .tedi-modal__dialog{top:var(--modal-top-margin);transform:translate(-50%)}.tedi-modal--left .tedi-modal__dialog{top:0;left:0;min-height:100dvh;border-radius:0;animation:tedi-modal-slide-left .2s ease-out}.tedi-modal--right .tedi-modal__dialog{top:0;right:0;min-height:100dvh;border-radius:0;animation:tedi-modal-slide-right .2s ease-out}.tedi-modal--service{position:static;inset:auto;z-index:auto;display:flex;flex-direction:column}.tedi-modal__dialog{position:fixed;max-width:var(--_tedi-modal-max-width);display:flex;flex-direction:column;width:100%;background-color:var(--modal-background);border:var(--tedi-borders-01) solid var(--modal-border-outer);border-radius:var(--modal-radius)}.tedi-modal__backdrop{position:fixed;inset:0;background:var(--general-surface-overlay)}.tedi-modal .tedi-modal-header{padding:var(--_tedi-modal-heading-padding-y) var(--_tedi-modal-heading-padding-x);border-bottom:var(--tedi-borders-01) solid var(--modal-border-inner)}.tedi-modal .tedi-modal-header .tedi-modal-header__head{display:flex;gap:var(--layout-grid-gutters-08);align-items:center}.tedi-modal .tedi-modal-header .tedi-modal-header__head .tedi-modal-header__close{margin-left:auto}.tedi-modal .tedi-modal-header [tedi-modal-description]{margin-top:var(--layout-grid-gutters-08)}.tedi-modal .tedi-modal-content{display:flex;flex:1;flex-direction:column;gap:var(--layout-grid-gutters-16);padding:var(--_tedi-modal-body-padding);overflow-y:auto}.tedi-modal .tedi-modal-content:has(.tedi-scroll-fade){overflow:hidden}.tedi-modal .tedi-modal-content .tedi-scroll-fade{flex:1;min-height:0}.tedi-modal .tedi-modal-footer{display:flex;gap:var(--_tedi-modal-footer-gap);justify-content:flex-end;padding:var(--_tedi-modal-footer-padding-y) var(--_tedi-modal-footer-padding-x);border-top:var(--tedi-borders-01) solid var(--modal-border-inner)}.tedi-modal-backdrop{background:var(--general-surface-overlay)}.tedi-modal-dialog{--_tedi-modal-max-width: 95vw;--_tedi-modal-max-height: 95dvh;width:100%;max-width:var(--_tedi-modal-max-width)}.tedi-modal-dialog--default{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x);--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y);--_tedi-modal-body-padding: var(--modal-body-padding);--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x);--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y);--_tedi-modal-footer-gap: var(--button-gutter-x)}.tedi-modal-dialog--default .tedi-modal-header__head h1,.tedi-modal-dialog--default .tedi-modal-header__head h2,.tedi-modal-dialog--default .tedi-modal-header__head h3,.tedi-modal-dialog--default .tedi-modal-header__head h4,.tedi-modal-dialog--default .tedi-modal-header__head h5,.tedi-modal-dialog--default .tedi-modal-header__head h6{font-size:var(--heading-h3-size);font-weight:var(--heading-h3-weight);line-height:var(--heading-h3-line-height)}.tedi-modal-dialog--small{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x-sm);--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y-sm);--_tedi-modal-body-padding: var(--modal-body-padding-sm);--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x-sm);--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y-sm);--_tedi-modal-footer-gap: var(--button-gutter-x-sm)}.tedi-modal-dialog--small .tedi-modal-header__head h1,.tedi-modal-dialog--small .tedi-modal-header__head h2,.tedi-modal-dialog--small .tedi-modal-header__head h3,.tedi-modal-dialog--small .tedi-modal-header__head h4,.tedi-modal-dialog--small .tedi-modal-header__head h5,.tedi-modal-dialog--small .tedi-modal-header__head h6{font-size:var(--heading-h4-size);font-weight:var(--heading-h4-weight);line-height:var(--heading-h4-line-height)}.tedi-modal-dialog--xs{max-width:min(var(--modal-max-width-xs),var(--_tedi-modal-max-width))}.tedi-modal-dialog--sm{max-width:min(var(--modal-max-width-sm),var(--_tedi-modal-max-width))}.tedi-modal-dialog--md{max-width:min(var(--modal-max-width-md),var(--_tedi-modal-max-width))}.tedi-modal-dialog--lg{max-width:min(var(--modal-max-width-lg),var(--_tedi-modal-max-width))}.tedi-modal-dialog--xl{max-width:min(var(--modal-max-width-xl),var(--_tedi-modal-max-width))}.tedi-modal-dialog--center{max-height:var(--_tedi-modal-max-height)}.tedi-modal-dialog--left,.tedi-modal-dialog--right{min-height:100dvh}.tedi-modal-dialog--left cdk-dialog-container,.tedi-modal-dialog--right cdk-dialog-container{min-height:100dvh}.tedi-modal-dialog--left .tedi-modal,.tedi-modal-dialog--right .tedi-modal{min-height:100dvh}.tedi-modal-dialog--left{animation:tedi-modal-slide-left .2s ease-out}.tedi-modal-dialog--right{animation:tedi-modal-slide-right .2s ease-out}.tedi-modal-dialog--center cdk-dialog-container{display:flex;flex-direction:column;max-height:var(--_tedi-modal-max-height)}.tedi-modal-dialog--center .tedi-modal{max-height:var(--_tedi-modal-max-height);overflow:hidden}.tedi-modal-dialog .tedi-modal{display:flex;flex-direction:column;width:100%;background-color:var(--modal-background);border:var(--tedi-borders-01) solid var(--modal-border-outer);border-radius:var(--modal-radius)}.tedi-modal-dialog--left .tedi-modal,.tedi-modal-dialog--right .tedi-modal{border-radius:0}.tedi-modal-dialog--scroll-page{--_tedi-modal-max-height: none}.tedi-modal-dialog--scroll-page cdk-dialog-container{max-height:none}.tedi-modal-dialog--scroll-page .tedi-modal{max-height:none;overflow:visible}.tedi-modal-dialog--scroll-page .tedi-modal-content{overflow-y:visible}.tedi-modal-dialog--fullscreen{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen cdk-dialog-container,.tedi-modal-dialog--fullscreen .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen .tedi-modal{border-radius:0}@media(max-width:35.98rem){.tedi-modal-dialog--fullscreen-sm{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen-sm cdk-dialog-container,.tedi-modal-dialog--fullscreen-sm .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen-sm .tedi-modal{border-radius:0}}@media(max-width:47.98rem){.tedi-modal-dialog--fullscreen-md{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen-md cdk-dialog-container,.tedi-modal-dialog--fullscreen-md .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen-md .tedi-modal{border-radius:0}}@media(max-width:61.98rem){.tedi-modal-dialog--fullscreen-lg{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen-lg cdk-dialog-container,.tedi-modal-dialog--fullscreen-lg .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen-lg .tedi-modal{border-radius:0}}@media(max-width:74.98rem){.tedi-modal-dialog--fullscreen-xl{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen-xl cdk-dialog-container,.tedi-modal-dialog--fullscreen-xl .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen-xl .tedi-modal{border-radius:0}}@media(max-width:87.48rem){.tedi-modal-dialog--fullscreen-xxl{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen-xxl cdk-dialog-container,.tedi-modal-dialog--fullscreen-xxl .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen-xxl .tedi-modal{border-radius:0}}.tedi-modal-dialog .tedi-modal-header{padding:var(--_tedi-modal-heading-padding-y) var(--_tedi-modal-heading-padding-x);border-bottom:var(--tedi-borders-01) solid var(--modal-border-inner)}.tedi-modal-dialog .tedi-modal-header .tedi-modal-header__head{display:flex;gap:var(--layout-grid-gutters-08);align-items:center}.tedi-modal-dialog .tedi-modal-header .tedi-modal-header__head .tedi-modal-header__close{margin-left:auto}.tedi-modal-dialog .tedi-modal-header [tedi-modal-description]{margin-top:var(--layout-grid-gutters-08)}.tedi-modal-dialog .tedi-modal-content{display:flex;flex:1;flex-direction:column;gap:var(--layout-grid-gutters-16);padding:var(--_tedi-modal-body-padding);overflow-y:auto}.tedi-modal-dialog .tedi-modal-content:has(.tedi-scroll-fade){overflow:hidden}.tedi-modal-dialog .tedi-modal-content .tedi-scroll-fade{flex:1;min-height:0}.tedi-modal-dialog .tedi-modal-footer{display:flex;gap:var(--_tedi-modal-footer-gap);justify-content:flex-end;padding:var(--_tedi-modal-footer-padding-y) var(--_tedi-modal-footer-padding-x);border-top:var(--tedi-borders-01) solid var(--modal-border-inner)}@keyframes tedi-modal-slide-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes tedi-modal-slide-right{0%{transform:translate(100%)}to{transform:translate(0)}}\n"] }]
8363
- }], ctorParameters: () => [], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], closeOnBackdropClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnBackdropClick", required: false }] }] } });
8777
+ ], template: "@if (!serviceMode && open()) {\n <div class=\"tedi-modal__backdrop\" (click)=\"onBackdropClick()\"></div>\n}\n<div\n [class.tedi-modal__dialog]=\"!serviceMode\"\n [attr.role]=\"serviceMode ? null : 'dialog'\"\n [attr.aria-modal]=\"serviceMode ? null : true\"\n [attr.aria-label]=\"dialogAriaLabel()\"\n [attr.aria-labelledby]=\"dialogAriaLabelledBy()\"\n [attr.tabindex]=\"serviceMode ? null : -1\"\n [cdkTrapFocus]=\"!serviceMode\"\n [cdkTrapFocusAutoCapture]=\"!serviceMode && open()\"\n [style.display]=\"serviceMode ? 'contents' : !open() ? 'none' : null\"\n [style.width]=\"customWidth()\"\n>\n <ng-content select=\"tedi-modal-header\" />\n <ng-content select=\"tedi-modal-content\" />\n <ng-content select=\"tedi-modal-footer\" />\n</div>\n", styles: ["h1,.h1,.tedi-h1,.text-h1,.tedi-text--h1{font-size:var(--heading-h1-size);font-weight:var(--heading-h1-weight);line-height:var(--heading-h1-line-height)}h2,.h2,.tedi-h2,.text-h2,.tedi-text--h2{font-size:var(--heading-h2-size);font-weight:var(--heading-h2-weight);line-height:var(--heading-h2-line-height)}h3,.h3,.tedi-h3,.text-h3,.tedi-text--h3{font-size:var(--heading-h3-size);font-weight:var(--heading-h3-weight);line-height:var(--heading-h3-line-height)}h4,.h4,.tedi-h4,.text-h4,.tedi-text--h4{font-size:var(--heading-h4-size);font-weight:var(--heading-h4-weight);line-height:var(--heading-h4-line-height)}h5,.h5,.tedi-h5,.text-h5,.tedi-text--h5{font-size:var(--heading-h5-size);font-weight:var(--heading-h5-weight);line-height:var(--heading-h5-line-height)}h6,.h6,.tedi-h6,.text-h6,.tedi-text--h6{font-size:var(--heading-h6-size);font-weight:var(--heading-h6-weight);line-height:var(--heading-h6-line-height)}.tedi-text--h1{font-size:var(--heading-h1-size);font-weight:var(--heading-h1-weight);line-height:var(--heading-h1-line-height)}.tedi-text--h2{font-size:var(--heading-h2-size);font-weight:var(--heading-h2-weight);line-height:var(--heading-h2-line-height)}.tedi-text--h3{font-size:var(--heading-h3-size);font-weight:var(--heading-h3-weight);line-height:var(--heading-h3-line-height)}.tedi-text--h4{font-size:var(--heading-h4-size);font-weight:var(--heading-h4-weight);line-height:var(--heading-h4-line-height)}.tedi-text--h5{font-size:var(--heading-h5-size);font-weight:var(--heading-h5-weight);line-height:var(--heading-h5-line-height)}.tedi-text--h6{font-size:var(--heading-h6-size);font-weight:var(--heading-h6-weight);line-height:var(--heading-h6-line-height)}.tedi-text--default{font-family:var(--family-default);font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height);color:var(--general-text-primary)}.tedi-text--small{font-size:var(--body-small-regular-size);font-weight:var(--body-small-regular-weight);line-height:var(--body-small-regular-line-height)}.text-subtitle{font-size:var(--heading-subtitle-regular-size);font-weight:var(--heading-subtitle-regular-weight);line-height:var(--heading-subtitle-regular-line-height);text-transform:uppercase}.text-subtitle.text-small{font-size:var(--heading-subtitle-small-size);font-weight:var(--heading-subtitle-small-weight);line-height:var(--heading-subtitle-small-line-height)}label{line-height:var(--body-regular-line-height);color:var(--general-text-secondary)}.text-normal{font-family:var(--family-default);font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height);color:var(--general-text-primary)}small,.text-small{font-size:var(--body-small-regular-size);font-weight:var(--body-small-regular-weight);line-height:var(--body-small-regular-line-height)}.text-extra-small{font-size:var(--body-extra-small-size);font-weight:var(--body-extra-small-weight);line-height:var(--body-extra-small-line-height)}.tedi-text--default,.tedi-text--primary{color:var(--general-text-primary)}.tedi-text--secondary{color:var(--general-text-secondary)}.tedi-text--tertiary{color:var(--general-text-tertiary)}.tedi-text--white{color:var(--general-text-white)}.tedi-text--disabled{color:var(--general-text-disabled)}.tedi-text--brand{color:var(--general-text-brand)}.tedi-text--success{color:var(--general-status-success-text)}.tedi-text--warning{color:var(--general-status-warning-text)}.tedi-text--danger{color:var(--general-status-danger-text)}.tedi-text--info{color:var(--general-status-info-text)}.tedi-text--neutral{color:var(--general-status-neutral-text)}.text-nowrap{white-space:nowrap}.text-break-all{word-break:break-all}.text-break-word{overflow-wrap:break-word}.text-uppercase{text-transform:uppercase}.text-lowercase{text-transform:lowercase}.text-capitalize{text-transform:capitalize}.text-capitalize-first:first-letter{text-transform:capitalize}.text-break-spaces{white-space:break-spaces}.text-inline-block{display:inline-block}.text-inline{display:inline}b,strong,.text-bold{font-weight:700}.text-thin{font-weight:300}i,.text-italic{font-style:italic}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-line-normal{line-height:normal}.text-line-condensed{line-height:1}.text-default{color:var(--general-text-primary)}.text-primary{color:var(--general-text-brand)}@media print{.text-primary{filter:grayscale(1)}}.text-muted{color:var(--general-text-secondary)}.text-subtle{color:var(--general-text-tertiary)}.text-disabled{color:var(--general-text-disabled)}.text-inverted{color:var(--general-text-white)}.text-positive{color:var(--general-status-success-text)}@media print{.text-positive{filter:grayscale(1)}}.text-important{color:var(--general-status-danger-text)}@media print{.text-important{filter:grayscale(1)}}.text-warning{color:var(--general-status-warning-text)}@media print{.text-warning{filter:grayscale(1)}}.tedi-modal{--_tedi-modal-max-width: 95vw;--_tedi-modal-max-height: 95dvh;position:fixed;inset:0;z-index:var(--z-index-modal);display:none}.tedi-modal--open{display:block}.tedi-modal--default{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x);--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y);--_tedi-modal-body-padding: var(--modal-body-padding);--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x);--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y);--_tedi-modal-footer-gap: var(--button-gutter-x)}.tedi-modal--default .tedi-modal-header__head h1,.tedi-modal--default .tedi-modal-header__head h2,.tedi-modal--default .tedi-modal-header__head h3,.tedi-modal--default .tedi-modal-header__head h4,.tedi-modal--default .tedi-modal-header__head h5,.tedi-modal--default .tedi-modal-header__head h6{font-size:var(--heading-h3-size);font-weight:var(--heading-h3-weight);line-height:var(--heading-h3-line-height)}.tedi-modal--small{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x-sm);--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y-sm);--_tedi-modal-body-padding: var(--modal-body-padding-sm);--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x-sm);--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y-sm);--_tedi-modal-footer-gap: var(--button-gutter-x-sm)}.tedi-modal--small .tedi-modal-header__head h1,.tedi-modal--small .tedi-modal-header__head h2,.tedi-modal--small .tedi-modal-header__head h3,.tedi-modal--small .tedi-modal-header__head h4,.tedi-modal--small .tedi-modal-header__head h5,.tedi-modal--small .tedi-modal-header__head h6{font-size:var(--heading-h4-size);font-weight:var(--heading-h4-weight);line-height:var(--heading-h4-line-height)}.tedi-modal--xs .tedi-modal__dialog{max-width:min(var(--modal-max-width-xs),var(--_tedi-modal-max-width))}.tedi-modal--sm .tedi-modal__dialog{max-width:min(var(--modal-max-width-sm),var(--_tedi-modal-max-width))}.tedi-modal--md .tedi-modal__dialog{max-width:min(var(--modal-max-width-md),var(--_tedi-modal-max-width))}.tedi-modal--lg .tedi-modal__dialog{max-width:min(var(--modal-max-width-lg),var(--_tedi-modal-max-width))}.tedi-modal--xl .tedi-modal__dialog{max-width:min(var(--modal-max-width-xl),var(--_tedi-modal-max-width))}.tedi-modal--center .tedi-modal__dialog{top:50%;left:50%;max-height:var(--_tedi-modal-max-height);transform:translate(-50%,-50%)}.tedi-modal--center.tedi-modal--top .tedi-modal__dialog{top:var(--modal-top-margin);transform:translate(-50%)}.tedi-modal--left .tedi-modal__dialog{top:0;left:0;min-height:100dvh;border-radius:0;animation:tedi-modal-slide-left .2s ease-out}.tedi-modal--right .tedi-modal__dialog{top:0;right:0;min-height:100dvh;border-radius:0;animation:tedi-modal-slide-right .2s ease-out}.tedi-modal--service{position:static;inset:auto;z-index:auto;display:flex;flex-direction:column}.tedi-modal__dialog{position:fixed;max-width:var(--_tedi-modal-max-width);display:flex;flex-direction:column;width:100%;background-color:var(--modal-background);border:var(--tedi-borders-01) solid var(--modal-border-outer);border-radius:var(--modal-radius)}.tedi-modal__backdrop{position:fixed;inset:0;background:var(--general-surface-overlay)}.tedi-modal .tedi-modal-header{padding:var(--_tedi-modal-heading-padding-y) var(--_tedi-modal-heading-padding-x);border-bottom:var(--tedi-borders-01) solid var(--modal-border-inner)}.tedi-modal .tedi-modal-header .tedi-modal-header__head{display:flex;gap:var(--layout-grid-gutters-08);align-items:center}.tedi-modal .tedi-modal-header .tedi-modal-header__head .tedi-modal-header__close{margin-left:auto}.tedi-modal .tedi-modal-header [tedi-modal-description]{margin-top:var(--layout-grid-gutters-08)}.tedi-modal .tedi-modal-content{display:flex;flex:1;flex-direction:column;gap:var(--layout-grid-gutters-16);padding:var(--_tedi-modal-body-padding);overflow-y:auto}.tedi-modal .tedi-modal-content:has(.tedi-scroll-fade){overflow:hidden}.tedi-modal .tedi-modal-content .tedi-scroll-fade{flex:1;min-height:0}.tedi-modal .tedi-modal-footer{display:flex;gap:var(--_tedi-modal-footer-gap);justify-content:flex-end;padding:var(--_tedi-modal-footer-padding-y) var(--_tedi-modal-footer-padding-x);border-top:var(--tedi-borders-01) solid var(--modal-border-inner)}.tedi-modal-backdrop{background:var(--general-surface-overlay)}.tedi-modal-dialog{--_tedi-modal-max-width: 95vw;--_tedi-modal-max-height: 95dvh;width:100%;max-width:var(--_tedi-modal-max-width)}.tedi-modal-dialog--default{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x);--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y);--_tedi-modal-body-padding: var(--modal-body-padding);--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x);--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y);--_tedi-modal-footer-gap: var(--button-gutter-x)}.tedi-modal-dialog--default .tedi-modal-header__head h1,.tedi-modal-dialog--default .tedi-modal-header__head h2,.tedi-modal-dialog--default .tedi-modal-header__head h3,.tedi-modal-dialog--default .tedi-modal-header__head h4,.tedi-modal-dialog--default .tedi-modal-header__head h5,.tedi-modal-dialog--default .tedi-modal-header__head h6{font-size:var(--heading-h3-size);font-weight:var(--heading-h3-weight);line-height:var(--heading-h3-line-height)}.tedi-modal-dialog--small{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x-sm);--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y-sm);--_tedi-modal-body-padding: var(--modal-body-padding-sm);--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x-sm);--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y-sm);--_tedi-modal-footer-gap: var(--button-gutter-x-sm)}.tedi-modal-dialog--small .tedi-modal-header__head h1,.tedi-modal-dialog--small .tedi-modal-header__head h2,.tedi-modal-dialog--small .tedi-modal-header__head h3,.tedi-modal-dialog--small .tedi-modal-header__head h4,.tedi-modal-dialog--small .tedi-modal-header__head h5,.tedi-modal-dialog--small .tedi-modal-header__head h6{font-size:var(--heading-h4-size);font-weight:var(--heading-h4-weight);line-height:var(--heading-h4-line-height)}.tedi-modal-dialog--xs{max-width:min(var(--modal-max-width-xs),var(--_tedi-modal-max-width))}.tedi-modal-dialog--sm{max-width:min(var(--modal-max-width-sm),var(--_tedi-modal-max-width))}.tedi-modal-dialog--md{max-width:min(var(--modal-max-width-md),var(--_tedi-modal-max-width))}.tedi-modal-dialog--lg{max-width:min(var(--modal-max-width-lg),var(--_tedi-modal-max-width))}.tedi-modal-dialog--xl{max-width:min(var(--modal-max-width-xl),var(--_tedi-modal-max-width))}.tedi-modal-dialog--center{max-height:var(--_tedi-modal-max-height)}.tedi-modal-dialog--left,.tedi-modal-dialog--right{min-height:100dvh}.tedi-modal-dialog--left cdk-dialog-container,.tedi-modal-dialog--right cdk-dialog-container{min-height:100dvh}.tedi-modal-dialog--left .tedi-modal,.tedi-modal-dialog--right .tedi-modal{min-height:100dvh}.tedi-modal-dialog--left{animation:tedi-modal-slide-left .2s ease-out}.tedi-modal-dialog--right{animation:tedi-modal-slide-right .2s ease-out}.tedi-modal-dialog--center cdk-dialog-container{display:flex;flex-direction:column;max-height:var(--_tedi-modal-max-height)}.tedi-modal-dialog--center .tedi-modal{max-height:var(--_tedi-modal-max-height);overflow:hidden}.tedi-modal-dialog .tedi-modal{display:flex;flex-direction:column;width:100%;background-color:var(--modal-background);border:var(--tedi-borders-01) solid var(--modal-border-outer);border-radius:var(--modal-radius)}.tedi-modal-dialog--left .tedi-modal,.tedi-modal-dialog--right .tedi-modal{border-radius:0}.tedi-modal-dialog--scroll-page{--_tedi-modal-max-height: none}.tedi-modal-dialog--scroll-page cdk-dialog-container{max-height:none}.tedi-modal-dialog--scroll-page .tedi-modal{max-height:none;overflow:visible}.tedi-modal-dialog--scroll-page .tedi-modal-content{overflow-y:visible}.tedi-modal-dialog--fullscreen{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen cdk-dialog-container,.tedi-modal-dialog--fullscreen .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen .tedi-modal{border-radius:0}@media(max-width:35.98rem){.tedi-modal-dialog--fullscreen-sm{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen-sm cdk-dialog-container,.tedi-modal-dialog--fullscreen-sm .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen-sm .tedi-modal{border-radius:0}}@media(max-width:47.98rem){.tedi-modal-dialog--fullscreen-md{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen-md cdk-dialog-container,.tedi-modal-dialog--fullscreen-md .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen-md .tedi-modal{border-radius:0}}@media(max-width:61.98rem){.tedi-modal-dialog--fullscreen-lg{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen-lg cdk-dialog-container,.tedi-modal-dialog--fullscreen-lg .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen-lg .tedi-modal{border-radius:0}}@media(max-width:74.98rem){.tedi-modal-dialog--fullscreen-xl{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen-xl cdk-dialog-container,.tedi-modal-dialog--fullscreen-xl .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen-xl .tedi-modal{border-radius:0}}@media(max-width:87.48rem){.tedi-modal-dialog--fullscreen-xxl{--_tedi-modal-max-width: 100vw;--_tedi-modal-max-height: 100dvh;max-width:100vw;min-height:100dvh}.tedi-modal-dialog--fullscreen-xxl cdk-dialog-container,.tedi-modal-dialog--fullscreen-xxl .tedi-modal{min-height:100dvh}.tedi-modal-dialog--fullscreen-xxl .tedi-modal{border-radius:0}}.tedi-modal-dialog .tedi-modal-header{padding:var(--_tedi-modal-heading-padding-y) var(--_tedi-modal-heading-padding-x);border-bottom:var(--tedi-borders-01) solid var(--modal-border-inner)}.tedi-modal-dialog .tedi-modal-header .tedi-modal-header__head{display:flex;gap:var(--layout-grid-gutters-08);align-items:center}.tedi-modal-dialog .tedi-modal-header .tedi-modal-header__head .tedi-modal-header__close{margin-left:auto}.tedi-modal-dialog .tedi-modal-header [tedi-modal-description]{margin-top:var(--layout-grid-gutters-08)}.tedi-modal-dialog .tedi-modal-content{display:flex;flex:1;flex-direction:column;gap:var(--layout-grid-gutters-16);padding:var(--_tedi-modal-body-padding);overflow-y:auto}.tedi-modal-dialog .tedi-modal-content:has(.tedi-scroll-fade){overflow:hidden}.tedi-modal-dialog .tedi-modal-content .tedi-scroll-fade{flex:1;min-height:0}.tedi-modal-dialog .tedi-modal-footer{display:flex;gap:var(--_tedi-modal-footer-gap);justify-content:flex-end;padding:var(--_tedi-modal-footer-padding-y) var(--_tedi-modal-footer-padding-x);border-top:var(--tedi-borders-01) solid var(--modal-border-inner)}@keyframes tedi-modal-slide-left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes tedi-modal-slide-right{0%{transform:translate(100%)}to{transform:translate(0)}}\n"] }]
8778
+ }], ctorParameters: () => [], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], closeOnBackdropClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnBackdropClick", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaLabelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabelledBy", required: false }] }] } });
8364
8779
 
8365
8780
  class ModalContentComponent {
8366
8781
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: ModalContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
@@ -8488,7 +8903,7 @@ class DateFieldModalComponent {
8488
8903
  </button>
8489
8904
  </tedi-modal-footer>
8490
8905
  </tedi-modal>
8491
- `, isInline: true, styles: [".tedi-date-field-modal{--_tedi-modal-body-padding: 0}.tedi-date-field-modal__content{display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "[tedi-button]", inputs: ["variant", "size"] }, { kind: "component", type: CalendarComponent, selector: "tedi-calendar", inputs: ["view", "currentMonth", "value", "mode", "selectionLevel", "localeCode", "showOutsideDays", "showWeekNumbers", "showNavigation", "bordered", "disabledMatchers", "availableDays", "unavailableDays", "dayStatus", "monthYearSelectType", "required", "numberOfMonths", "inputDisabled", "shouldDisableMonth", "shouldDisableYear", "minYear", "maxYear"], outputs: ["viewChange", "currentMonthChange", "valueChange", "select"] }, { kind: "component", type: ModalComponent, selector: "tedi-modal", inputs: ["open", "size", "width", "position", "closeOnBackdropClick"], outputs: ["openChange"] }, { kind: "component", type: ModalContentComponent, selector: "tedi-modal-content" }, { kind: "component", type: ModalFooterComponent, selector: "tedi-modal-footer" }, { kind: "component", type: ModalHeaderComponent, selector: "tedi-modal-header", inputs: ["showClose", "closeButtonSize"] }, { kind: "pipe", type: TediTranslationPipe, name: "tediTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
8906
+ `, isInline: true, styles: [".tedi-date-field-modal{--_tedi-modal-body-padding: 0}.tedi-date-field-modal__content{display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "[tedi-button]", inputs: ["variant", "size"] }, { kind: "component", type: CalendarComponent, selector: "tedi-calendar", inputs: ["view", "currentMonth", "value", "mode", "selectionLevel", "localeCode", "showOutsideDays", "showWeekNumbers", "showNavigation", "bordered", "disabledMatchers", "availableDays", "unavailableDays", "dayStatus", "monthYearSelectType", "required", "numberOfMonths", "inputDisabled", "shouldDisableMonth", "shouldDisableYear", "minYear", "maxYear"], outputs: ["viewChange", "currentMonthChange", "valueChange", "select"] }, { kind: "component", type: ModalComponent, selector: "tedi-modal", inputs: ["open", "size", "width", "position", "closeOnBackdropClick", "ariaLabel", "ariaLabelledBy"], outputs: ["openChange"] }, { kind: "component", type: ModalContentComponent, selector: "tedi-modal-content" }, { kind: "component", type: ModalFooterComponent, selector: "tedi-modal-footer" }, { kind: "component", type: ModalHeaderComponent, selector: "tedi-modal-header", inputs: ["showClose", "closeButtonSize"] }, { kind: "pipe", type: TediTranslationPipe, name: "tediTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
8492
8907
  }
8493
8908
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: DateFieldModalComponent, decorators: [{
8494
8909
  type: Component,
@@ -10886,7 +11301,12 @@ class FormFieldComponent {
10886
11301
  this.characterCountExceeded() ||
10887
11302
  (this.inputGroup?.invalid() ?? false), ...(ngDevMode ? [{ debugName: "invalid" }] : []));
10888
11303
  valid = computed(() => this.validationState() === "valid", ...(ngDevMode ? [{ debugName: "valid" }] : []));
10889
- characterCount = computed(() => this.control()?.value()?.toString().length ?? 0, ...(ngDevMode ? [{ debugName: "characterCount" }] : []));
11304
+ characterCount = computed(() => {
11305
+ const control = this.control();
11306
+ if (!control)
11307
+ return 0;
11308
+ return (control.characterCount?.() ?? control.value()?.toString().length ?? 0);
11309
+ }, ...(ngDevMode ? [{ debugName: "characterCount" }] : []));
10890
11310
  characterCountExceeded = computed(() => {
10891
11311
  const limit = this.characterLimit();
10892
11312
  return limit != null && this.characterCount() > limit;
@@ -10991,6 +11411,159 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
10991
11411
  descendants: true,
10992
11412
  }, isSignal: true }] }] } });
10993
11413
 
11414
+ /** Splits `text` so the segment matching `query` can be emphasised. */
11415
+ function highlightParts(text, query) {
11416
+ const trimmed = query.trim();
11417
+ const index = trimmed
11418
+ ? text.toLowerCase().indexOf(trimmed.toLowerCase())
11419
+ : -1;
11420
+ if (index === -1) {
11421
+ return [{ text, match: false }];
11422
+ }
11423
+ const parts = [];
11424
+ if (index > 0) {
11425
+ parts.push({ text: text.slice(0, index), match: false });
11426
+ }
11427
+ parts.push({
11428
+ text: text.slice(index, index + trimmed.length),
11429
+ match: true,
11430
+ });
11431
+ if (index + trimmed.length < text.length) {
11432
+ parts.push({ text: text.slice(index + trimmed.length), match: false });
11433
+ }
11434
+ return parts;
11435
+ }
11436
+
11437
+ class SearchSuggestionComponent {
11438
+ /** Resolved display label. */
11439
+ label = input("", ...(ngDevMode ? [{ debugName: "label" }] : []));
11440
+ /** Secondary line under the label. */
11441
+ description = input("", ...(ngDevMode ? [{ debugName: "description" }] : []));
11442
+ /** Current field value, used to bold the matching segment. */
11443
+ query = input("", ...(ngDevMode ? [{ debugName: "query" }] : []));
11444
+ /** Whether a custom suggestion template supplies the row content. */
11445
+ custom = input(false, ...(ngDevMode ? [{ debugName: "custom", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
11446
+ disabledInput = input(false, ...(ngDevMode ? [{ debugName: "disabledInput",
11447
+ // eslint-disable-next-line @angular-eslint/no-input-rename
11448
+ alias: "disabled",
11449
+ transform: booleanAttribute }] : [{
11450
+ // eslint-disable-next-line @angular-eslint/no-input-rename
11451
+ alias: "disabled",
11452
+ transform: booleanAttribute,
11453
+ }]));
11454
+ host = inject(ElementRef);
11455
+ active = signal(false, ...(ngDevMode ? [{ debugName: "active" }] : []));
11456
+ isActive = this.active.asReadonly();
11457
+ parts = computed(() => highlightParts(this.label(), this.query()), ...(ngDevMode ? [{ debugName: "parts" }] : []));
11458
+ /**
11459
+ * `Highlightable` requires a plain boolean, so the signal input is aliased and
11460
+ * this getter satisfies the CDK contract — a signal would always read truthy.
11461
+ */
11462
+ get disabled() {
11463
+ return this.disabledInput();
11464
+ }
11465
+ setActiveStyles() {
11466
+ this.active.set(true);
11467
+ }
11468
+ setInactiveStyles() {
11469
+ this.active.set(false);
11470
+ }
11471
+ getLabel() {
11472
+ return this.label();
11473
+ }
11474
+ scrollIntoView() {
11475
+ this.host.nativeElement.scrollIntoView({
11476
+ block: "nearest",
11477
+ inline: "nearest",
11478
+ });
11479
+ }
11480
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: SearchSuggestionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11481
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: SearchSuggestionComponent, isStandalone: true, selector: "li[tedi-search-suggestion]", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, query: { classPropertyName: "query", publicName: "query", isSignal: true, isRequired: false, transformFunction: null }, custom: { classPropertyName: "custom", publicName: "custom", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "option", "tabindex": "-1" }, properties: { "class.tedi-search-suggestion--active": "isActive()", "class.tedi-search-suggestion--custom": "custom()", "class.tedi-search-suggestion--disabled": "disabledInput()", "attr.aria-selected": "isActive()", "attr.aria-disabled": "disabledInput() || null" }, classAttribute: "tedi-search-suggestion" }, ngImport: i0, template: "@if (custom()) {\n <ng-content />\n} @else {\n <span class=\"tedi-search-suggestion__label\">\n @for (part of parts(); track $index) {\n <span tedi-text [modifiers]=\"part.match ? 'bold' : undefined\">{{\n part.text\n }}</span>\n }\n </span>\n\n @if (description()) {\n <span\n tedi-text\n class=\"tedi-search-suggestion__description\"\n color=\"tertiary\"\n modifiers=\"small\"\n >{{ description() }}</span\n >\n }\n}\n", styles: [".tedi-search-suggestion{display:block;padding:var(--dropdown-item-padding-y) var(--dropdown-item-padding-x);color:inherit;cursor:pointer;background:transparent}.tedi-search-suggestion:hover,.tedi-search-suggestion--active{background:var(--dropdown-item-hover-background)}.tedi-search-suggestion--custom{display:flex;gap:var(--dropdown-item-inner-spacing);align-items:center}.tedi-search-suggestion--disabled,.tedi-search-suggestion--disabled:hover{color:var(--general-text-disabled);cursor:not-allowed;background:var(--dropdown-item-disabled-background)}.tedi-search-suggestion--disabled [class*=tedi-text--]{color:inherit}.tedi-search-suggestion__label,.tedi-search-suggestion__description{display:block}\n"], dependencies: [{ kind: "component", type: TextComponent, selector: "[tedi-text]", inputs: ["modifiers", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
11482
+ }
11483
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: SearchSuggestionComponent, decorators: [{
11484
+ type: Component,
11485
+ args: [{ selector: "li[tedi-search-suggestion]", standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [TextComponent], host: {
11486
+ class: "tedi-search-suggestion",
11487
+ role: "option",
11488
+ tabindex: "-1",
11489
+ "[class.tedi-search-suggestion--active]": "isActive()",
11490
+ "[class.tedi-search-suggestion--custom]": "custom()",
11491
+ "[class.tedi-search-suggestion--disabled]": "disabledInput()",
11492
+ "[attr.aria-selected]": "isActive()",
11493
+ "[attr.aria-disabled]": "disabledInput() || null",
11494
+ }, template: "@if (custom()) {\n <ng-content />\n} @else {\n <span class=\"tedi-search-suggestion__label\">\n @for (part of parts(); track $index) {\n <span tedi-text [modifiers]=\"part.match ? 'bold' : undefined\">{{\n part.text\n }}</span>\n }\n </span>\n\n @if (description()) {\n <span\n tedi-text\n class=\"tedi-search-suggestion__description\"\n color=\"tertiary\"\n modifiers=\"small\"\n >{{ description() }}</span\n >\n }\n}\n", styles: [".tedi-search-suggestion{display:block;padding:var(--dropdown-item-padding-y) var(--dropdown-item-padding-x);color:inherit;cursor:pointer;background:transparent}.tedi-search-suggestion:hover,.tedi-search-suggestion--active{background:var(--dropdown-item-hover-background)}.tedi-search-suggestion--custom{display:flex;gap:var(--dropdown-item-inner-spacing);align-items:center}.tedi-search-suggestion--disabled,.tedi-search-suggestion--disabled:hover{color:var(--general-text-disabled);cursor:not-allowed;background:var(--dropdown-item-disabled-background)}.tedi-search-suggestion--disabled [class*=tedi-text--]{color:inherit}.tedi-search-suggestion__label,.tedi-search-suggestion__description{display:block}\n"] }]
11495
+ }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], query: [{ type: i0.Input, args: [{ isSignal: true, alias: "query", required: false }] }], custom: [{ type: i0.Input, args: [{ isSignal: true, alias: "custom", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
11496
+
11497
+ /**
11498
+ * Renders each suggestion row. Without it, rows show the resolved label with the
11499
+ * matched substring bolded.
11500
+ *
11501
+ * @example
11502
+ * ```html
11503
+ * <tedi-search [suggestions]="people" bindLabel="name">
11504
+ * <ng-template tediSearchSuggestion let-item>
11505
+ * <span tedi-text modifiers="bold">{{ item.name }}</span>
11506
+ * <span tedi-text color="tertiary">{{ item.code }}</span>
11507
+ * </ng-template>
11508
+ * </tedi-search>
11509
+ * ```
11510
+ */
11511
+ class SearchSuggestionTemplateDirective {
11512
+ template = inject(TemplateRef);
11513
+ static ngTemplateContextGuard(_dir, _ctx) {
11514
+ return true;
11515
+ }
11516
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: SearchSuggestionTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
11517
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.24", type: SearchSuggestionTemplateDirective, isStandalone: true, selector: "[tediSearchSuggestion]", ngImport: i0 });
11518
+ }
11519
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: SearchSuggestionTemplateDirective, decorators: [{
11520
+ type: Directive,
11521
+ args: [{
11522
+ selector: "[tediSearchSuggestion]",
11523
+ standalone: true,
11524
+ }]
11525
+ }] });
11526
+ /**
11527
+ * Extra content pinned below the suggestions — fallback actions and a hint, for
11528
+ * example. It shows whenever the panel is open, including the no-results state,
11529
+ * which is what makes it useful for "nothing matched, try this instead".
11530
+ *
11531
+ * Suggestions keep behaving exactly as they do without it: filtering, arrow-key
11532
+ * navigation and Enter to select are unchanged. Tab moves from the field into the
11533
+ * footer's controls.
11534
+ *
11535
+ * @example
11536
+ * ```html
11537
+ * <tedi-search [suggestions]="matches()">
11538
+ * <ng-template tediSearchFooter>
11539
+ * <tedi-search-footer-actions>
11540
+ * <button tedi-button variant="secondary">Isik teadmata</button>
11541
+ * </tedi-search-footer-actions>
11542
+ * </ng-template>
11543
+ * </tedi-search>
11544
+ * ```
11545
+ */
11546
+ class SearchFooterTemplateDirective {
11547
+ template = inject(TemplateRef);
11548
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: SearchFooterTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
11549
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.24", type: SearchFooterTemplateDirective, isStandalone: true, selector: "[tediSearchFooter]", ngImport: i0 });
11550
+ }
11551
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: SearchFooterTemplateDirective, decorators: [{
11552
+ type: Directive,
11553
+ args: [{
11554
+ selector: "[tediSearchFooter]",
11555
+ standalone: true,
11556
+ }]
11557
+ }] });
11558
+
11559
+ /**
11560
+ * Flush against the field, flipping above when it would overflow. The panel
11561
+ * border meets the field border, so there is no offset.
11562
+ */
11563
+ const SEARCH_OVERLAY_POSITIONS = [
11564
+ { originX: "start", originY: "bottom", overlayX: "start", overlayY: "top" },
11565
+ { originX: "start", originY: "top", overlayX: "start", overlayY: "bottom" },
11566
+ ];
10994
11567
  class SearchComponent {
10995
11568
  /**
10996
11569
  * Unique identifier for the input element, used to associate the label.
@@ -11041,6 +11614,62 @@ class SearchComponent {
11041
11614
  * `placeholder`, then the translated "search" label.
11042
11615
  */
11043
11616
  ariaLabel = input(...(ngDevMode ? [undefined, { debugName: "ariaLabel" }] : []));
11617
+ /**
11618
+ * Suggestions to show in the panel, already filtered by the consumer. Bind an
11619
+ * empty array to keep the combobox behaviour while nothing matches; leave it
11620
+ * unbound for a plain search field.
11621
+ */
11622
+ suggestions = input(undefined, ...(ngDevMode ? [{ debugName: "suggestions" }] : []));
11623
+ /**
11624
+ * Property holding the display label when suggestions are objects.
11625
+ * @default "label"
11626
+ */
11627
+ bindLabel = input("label", ...(ngDevMode ? [{ debugName: "bindLabel" }] : []));
11628
+ /**
11629
+ * Property holding a secondary line shown under the label. Unset by default,
11630
+ * so rows are a single line unless asked for.
11631
+ */
11632
+ bindDescription = input(...(ngDevMode ? [undefined, { debugName: "bindDescription" }] : []));
11633
+ /**
11634
+ * Property marking a suggestion as unselectable. Disabled rows are greyed out
11635
+ * and skipped by keyboard navigation.
11636
+ * @default "disabled"
11637
+ */
11638
+ bindDisabled = input("disabled", ...(ngDevMode ? [{ debugName: "bindDisabled" }] : []));
11639
+ /**
11640
+ * Characters required before the panel opens. Below it nothing is shown, not
11641
+ * even the no-results row, so short queries stay quiet.
11642
+ * @default 0
11643
+ */
11644
+ minQueryLength = input(0, ...(ngDevMode ? [{ debugName: "minQueryLength", transform: numberAttribute }] : [{ transform: numberAttribute }]));
11645
+ /**
11646
+ * Shows a loading row instead of results.
11647
+ * @default false
11648
+ */
11649
+ loading = input(false, ...(ngDevMode ? [{ debugName: "loading", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
11650
+ /**
11651
+ * Closes the suggestion panel when the page (or a scrollable ancestor)
11652
+ * scrolls. Scrolling the option list itself keeps the panel open.
11653
+ * @default false
11654
+ */
11655
+ hideOnScroll = input(false, ...(ngDevMode ? [{ debugName: "hideOnScroll", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
11656
+ /**
11657
+ * Whether the suggestion panel is open.
11658
+ * @default false
11659
+ */
11660
+ panelOpen = model(false, ...(ngDevMode ? [{ debugName: "panelOpen" }] : []));
11661
+ /**
11662
+ * Overrides the translated "no results" row.
11663
+ */
11664
+ noResultsText = input(...(ngDevMode ? [undefined, { debugName: "noResultsText" }] : []));
11665
+ /**
11666
+ * Overrides the translated loading row.
11667
+ */
11668
+ loadingText = input(...(ngDevMode ? [undefined, { debugName: "loadingText" }] : []));
11669
+ /**
11670
+ * Overrides the translated screen-reader result count.
11671
+ */
11672
+ resultsCountText = input(...(ngDevMode ? [undefined, { debugName: "resultsCountText" }] : []));
11044
11673
  /**
11045
11674
  * Emitted when the search is executed (Enter key or button click).
11046
11675
  */
@@ -11049,11 +11678,41 @@ class SearchComponent {
11049
11678
  * Emitted when the clear button is clicked.
11050
11679
  */
11051
11680
  clear = output();
11681
+ /**
11682
+ * Emitted when a suggestion is accepted. The field is filled with its label.
11683
+ */
11684
+ suggestionSelect = output();
11685
+ suggestionTemplate = contentChild(SearchSuggestionTemplateDirective, ...(ngDevMode ? [{ debugName: "suggestionTemplate" }] : []));
11686
+ footerTemplate = contentChild(SearchFooterTemplateDirective, ...(ngDevMode ? [{ debugName: "footerTemplate" }] : []));
11052
11687
  inputRef = viewChild("searchInput", ...(ngDevMode ? [{ debugName: "inputRef", read: ElementRef }] : [{ read: ElementRef }]));
11688
+ overlayOrigin = viewChild.required(CdkOverlayOrigin);
11689
+ connectedOverlay = viewChild(CdkConnectedOverlay, ...(ngDevMode ? [{ debugName: "connectedOverlay" }] : []));
11690
+ suggestionRows = viewChildren(SearchSuggestionComponent, ...(ngDevMode ? [{ debugName: "suggestionRows" }] : []));
11053
11691
  formDisabled = signal(false, ...(ngDevMode ? [{ debugName: "formDisabled" }] : []));
11692
+ hostElement = inject(ElementRef);
11054
11693
  translationService = inject(TediTranslationService);
11694
+ renderer = inject(Renderer2);
11695
+ document = inject(DOCUMENT);
11696
+ injector = inject(Injector);
11697
+ scrollListener;
11055
11698
  onChange = () => { };
11056
11699
  onTouched = () => { };
11700
+ /** Suppresses the focus-driven reopen after a selection, until the next edit. */
11701
+ justSelected = false;
11702
+ /**
11703
+ * Navigation is driven from `event.key` via the explicit `set*ItemActive`
11704
+ * methods rather than `keyManager.onKeydown`, which switches on the deprecated
11705
+ * `event.keyCode` and so ignores synthesised events.
11706
+ */
11707
+ keyManager = new ActiveDescendantKeyManager(this.suggestionRows, this.injector).withWrap();
11708
+ activeIndex = signal(-1, ...(ngDevMode ? [{ debugName: "activeIndex" }] : []));
11709
+ overlayPositions = SEARCH_OVERLAY_POSITIONS;
11710
+ panelWidth = signal(0, ...(ngDevMode ? [{ debugName: "panelWidth" }] : []));
11711
+ /**
11712
+ * True while the panel sits above the field on the fallback position, so the
11713
+ * rounded edge can move to the side that is not joined to the field.
11714
+ */
11715
+ panelAbove = signal(false, ...(ngDevMode ? [{ debugName: "panelAbove" }] : []));
11057
11716
  isDisabled = computed(() => this.disabled() || this.formDisabled(), ...(ngDevMode ? [{ debugName: "isDisabled" }] : []));
11058
11717
  fieldIcon = computed(() => this.button() ? undefined : this.searchIcon(), ...(ngDevMode ? [{ debugName: "fieldIcon" }] : []));
11059
11718
  fieldHeight = computed(() => {
@@ -11085,9 +11744,90 @@ class SearchComponent {
11085
11744
  * otherwise `aria-label` would silently override the visible text.
11086
11745
  */
11087
11746
  inputAriaLabel = computed(() => this.label() ? null : this.searchAriaLabel(), ...(ngDevMode ? [{ debugName: "inputAriaLabel" }] : []));
11747
+ /**
11748
+ * Derived from capability, never from current content — an empty
11749
+ * `suggestions` array still means the consumer opted into the combobox.
11750
+ */
11751
+ autocomplete = computed(() => this.suggestions() !== undefined, ...(ngDevMode ? [{ debugName: "autocomplete" }] : []));
11752
+ resolvedSuggestions = computed(() => {
11753
+ const items = this.suggestions() ?? [];
11754
+ const bindLabel = this.bindLabel();
11755
+ const bindDescription = this.bindDescription();
11756
+ const bindDisabled = this.bindDisabled();
11757
+ return items.map((item) => {
11758
+ const record = item !== null && typeof item === "object"
11759
+ ? item
11760
+ : undefined;
11761
+ return {
11762
+ item,
11763
+ label: record ? String(record[bindLabel] ?? item) : String(item),
11764
+ description: record && bindDescription
11765
+ ? String(record[bindDescription] ?? "")
11766
+ : "",
11767
+ disabled: !!record?.[bindDisabled],
11768
+ };
11769
+ });
11770
+ }, ...(ngDevMode ? [{ debugName: "resolvedSuggestions" }] : []));
11771
+ query = computed(() => this.value().trim(), ...(ngDevMode ? [{ debugName: "query" }] : []));
11772
+ hasSuggestions = computed(() => !this.loading() && this.resolvedSuggestions().length > 0, ...(ngDevMode ? [{ debugName: "hasSuggestions" }] : []));
11773
+ listboxId = computed(() => `${this.inputId()}-listbox`, ...(ngDevMode ? [{ debugName: "listboxId" }] : []));
11774
+ meetsMinQueryLength = computed(() => this.query().length >= this.minQueryLength(), ...(ngDevMode ? [{ debugName: "meetsMinQueryLength" }] : []));
11775
+ panelVisible = computed(() => {
11776
+ if (!this.autocomplete() || !this.panelOpen())
11777
+ return false;
11778
+ if (!this.meetsMinQueryLength())
11779
+ return false;
11780
+ return this.loading() || this.hasSuggestions() || this.query().length > 0;
11781
+ }, ...(ngDevMode ? [{ debugName: "panelVisible" }] : []));
11782
+ inputRole = computed(() => this.autocomplete() ? "combobox" : "searchbox", ...(ngDevMode ? [{ debugName: "inputRole" }] : []));
11783
+ ariaAutocomplete = computed(() => this.autocomplete() ? "list" : null, ...(ngDevMode ? [{ debugName: "ariaAutocomplete" }] : []));
11784
+ ariaExpanded = computed(() => this.autocomplete() ? this.panelVisible() : null, ...(ngDevMode ? [{ debugName: "ariaExpanded" }] : []));
11785
+ ariaControls = computed(() => this.panelVisible() && this.hasSuggestions() ? this.listboxId() : null, ...(ngDevMode ? [{ debugName: "ariaControls" }] : []));
11786
+ activeOptionId = computed(() => {
11787
+ const index = this.activeIndex();
11788
+ return index >= 0 ? this.optionId(index) : null;
11789
+ }, ...(ngDevMode ? [{ debugName: "activeOptionId" }] : []));
11790
+ resolvedNoResultsText = computed(() => this.noResultsText() ??
11791
+ this.translationService.translate("search.no-results"), ...(ngDevMode ? [{ debugName: "resolvedNoResultsText" }] : []));
11792
+ resolvedLoadingText = computed(() => this.loadingText() ?? this.translationService.translate("search.loading"), ...(ngDevMode ? [{ debugName: "resolvedLoadingText" }] : []));
11793
+ announcement = computed(() => {
11794
+ if (!this.panelVisible())
11795
+ return "";
11796
+ if (this.loading())
11797
+ return this.resolvedLoadingText();
11798
+ const count = this.resolvedSuggestions().length;
11799
+ if (!count)
11800
+ return this.resolvedNoResultsText();
11801
+ const override = this.resultsCountText();
11802
+ return override
11803
+ ? override(count)
11804
+ : this.translationService.translate("search.results-count", count);
11805
+ }, ...(ngDevMode ? [{ debugName: "announcement" }] : []));
11806
+ constructor() {
11807
+ this.keyManager.change.pipe(takeUntilDestroyed()).subscribe((index) => {
11808
+ this.activeIndex.set(index);
11809
+ this.keyManager.activeItem?.scrollIntoView();
11810
+ });
11811
+ // A stale active index would point at a different item once results change.
11812
+ // The reset runs untracked because `setActiveItem` reads the option query,
11813
+ // which would otherwise make this effect re-run on every render and clear
11814
+ // the option the user just highlighted.
11815
+ effect(() => {
11816
+ this.resolvedSuggestions();
11817
+ untracked(() => this.resetActiveOption());
11818
+ });
11819
+ inject(DestroyRef).onDestroy(() => this.cleanupScrollListener());
11820
+ }
11821
+ optionId(index) {
11822
+ return `${this.inputId()}-opt-${index}`;
11823
+ }
11088
11824
  onInputValue(value) {
11825
+ this.justSelected = false;
11089
11826
  this.value.set(value);
11090
11827
  this.onChange(value);
11828
+ if (this.autocomplete()) {
11829
+ this.openPanel();
11830
+ }
11091
11831
  }
11092
11832
  onClear() {
11093
11833
  this.clear.emit();
@@ -11096,6 +11836,170 @@ class SearchComponent {
11096
11836
  onBlur() {
11097
11837
  this.onTouched();
11098
11838
  }
11839
+ onInputFocus() {
11840
+ if (this.justSelected) {
11841
+ this.justSelected = false;
11842
+ return;
11843
+ }
11844
+ this.openPanel();
11845
+ }
11846
+ openPanel() {
11847
+ if (!this.autocomplete())
11848
+ return;
11849
+ this.panelWidth.set(this.hostElement.nativeElement.offsetWidth);
11850
+ this.panelOpen.set(true);
11851
+ }
11852
+ closePanel() {
11853
+ this.cleanupScrollListener();
11854
+ this.panelOpen.set(false);
11855
+ // The options leave the DOM with the panel, so a lingering active index
11856
+ // would leave `aria-activedescendant` pointing at a removed element.
11857
+ this.resetActiveOption();
11858
+ }
11859
+ onPositionChange(change) {
11860
+ this.panelAbove.set(change.connectionPair.overlayY === "bottom");
11861
+ }
11862
+ onOverlayAttach() {
11863
+ if (this.hideOnScroll()) {
11864
+ this.setupScrollListener();
11865
+ }
11866
+ }
11867
+ onOverlayDetach() {
11868
+ this.cleanupScrollListener();
11869
+ }
11870
+ /**
11871
+ * Listens on the document in the capture phase so scrolls in any ancestor are
11872
+ * seen — a scroll event does not bubble past the element that scrolled.
11873
+ */
11874
+ setupScrollListener() {
11875
+ this.cleanupScrollListener();
11876
+ this.scrollListener = this.renderer.listen(this.document, "scroll", (event) => {
11877
+ if (!this.panelVisible())
11878
+ return;
11879
+ // Scrolling inside the component is not the page moving away from it:
11880
+ // the option list scrolls its own rows.
11881
+ const target = event.target;
11882
+ const insideSearch = !!target &&
11883
+ (this.hostElement.nativeElement.contains(target) ||
11884
+ !!this.panelElement()?.contains(target));
11885
+ if (insideSearch)
11886
+ return;
11887
+ this.closePanel();
11888
+ }, { capture: true, passive: true });
11889
+ }
11890
+ cleanupScrollListener() {
11891
+ if (this.scrollListener) {
11892
+ this.scrollListener();
11893
+ this.scrollListener = undefined;
11894
+ }
11895
+ }
11896
+ /** Closes the panel and hands focus back to the input. */
11897
+ closeAndRestoreFocus() {
11898
+ this.closePanel();
11899
+ this.justSelected = true;
11900
+ this.focus();
11901
+ }
11902
+ onKeydown(event) {
11903
+ if (!this.autocomplete()) {
11904
+ if (event.key === "Enter")
11905
+ this.emitSearch();
11906
+ return;
11907
+ }
11908
+ switch (event.key) {
11909
+ case "Escape":
11910
+ this.closePanel();
11911
+ return;
11912
+ case "ArrowDown":
11913
+ case "ArrowUp":
11914
+ event.preventDefault();
11915
+ this.onArrowKey(event);
11916
+ return;
11917
+ case "Tab":
11918
+ this.onTabFromInput(event);
11919
+ return;
11920
+ case "Enter":
11921
+ this.onEnter(event);
11922
+ return;
11923
+ }
11924
+ }
11925
+ /**
11926
+ * Footer controls live in the overlay, which sits at the end of the document,
11927
+ * so they are not next in tab order. Tab reaches them explicitly; without this
11928
+ * they would be mouse-only.
11929
+ */
11930
+ onTabFromInput(event) {
11931
+ if (event.shiftKey || !this.panelVisible())
11932
+ return;
11933
+ const first = this.footerFocusables()[0];
11934
+ if (!first)
11935
+ return;
11936
+ event.preventDefault();
11937
+ first.focus();
11938
+ }
11939
+ /**
11940
+ * Tabbing past the footer leaves the component: close the panel and continue to
11941
+ * whatever follows the field in document order, so the footer is not a trap.
11942
+ */
11943
+ onFooterKeydown(event) {
11944
+ if (event.key === "Escape") {
11945
+ event.preventDefault();
11946
+ this.closeAndRestoreFocus();
11947
+ return;
11948
+ }
11949
+ if (event.key !== "Tab")
11950
+ return;
11951
+ const focusables = this.footerFocusables();
11952
+ const index = focusables.indexOf(event.target);
11953
+ if (event.shiftKey && index === 0) {
11954
+ event.preventDefault();
11955
+ this.justSelected = true;
11956
+ this.focus();
11957
+ return;
11958
+ }
11959
+ if (!event.shiftKey && index === focusables.length - 1) {
11960
+ event.preventDefault();
11961
+ this.closePanel();
11962
+ this.focusAfterField();
11963
+ }
11964
+ }
11965
+ footerFocusables() {
11966
+ const footer = this.panelElement()?.querySelector(".tedi-search__footer");
11967
+ return footer ? getFocusableElements(footer) : [];
11968
+ }
11969
+ focusAfterField() {
11970
+ const input = this.inputRef()?.nativeElement;
11971
+ if (!input)
11972
+ return;
11973
+ const panel = this.panelElement();
11974
+ const focusables = getFocusableElements(this.hostElement.nativeElement.ownerDocument.body).filter((el) => !panel?.contains(el));
11975
+ const next = focusables[focusables.indexOf(input) + 1];
11976
+ next?.focus();
11977
+ }
11978
+ selectSuggestion(suggestion) {
11979
+ if (suggestion.disabled)
11980
+ return;
11981
+ this.justSelected = true;
11982
+ this.value.set(suggestion.label);
11983
+ this.onChange(suggestion.label);
11984
+ this.suggestionSelect.emit(suggestion.item);
11985
+ this.closePanel();
11986
+ }
11987
+ /**
11988
+ * The panel is portalled into the overlay container, so it is not a descendant
11989
+ * of the host — both roots have to be consulted before deciding focus left.
11990
+ */
11991
+ onFocusOut(event) {
11992
+ const next = event.relatedTarget;
11993
+ if (!next) {
11994
+ this.closePanel();
11995
+ return;
11996
+ }
11997
+ const stillInside = this.hostElement.nativeElement.contains(next) ||
11998
+ !!this.panelElement()?.contains(next);
11999
+ if (!stillInside) {
12000
+ this.closePanel();
12001
+ }
12002
+ }
11099
12003
  emitSearch() {
11100
12004
  this.searchEvent.emit(this.value());
11101
12005
  }
@@ -11115,14 +12019,47 @@ class SearchComponent {
11115
12019
  setDisabledState(isDisabled) {
11116
12020
  this.formDisabled.set(isDisabled);
11117
12021
  }
12022
+ onArrowKey(event) {
12023
+ if (!this.panelVisible()) {
12024
+ this.openPanel();
12025
+ return;
12026
+ }
12027
+ if (!this.hasSuggestions())
12028
+ return;
12029
+ if (event.key === "ArrowDown") {
12030
+ this.keyManager.setNextItemActive();
12031
+ }
12032
+ else {
12033
+ this.keyManager.setPreviousItemActive();
12034
+ }
12035
+ }
12036
+ onEnter(event) {
12037
+ const active = this.keyManager.activeItem;
12038
+ const index = this.activeIndex();
12039
+ if (this.panelVisible() && active && index >= 0) {
12040
+ event.preventDefault();
12041
+ const suggestion = this.resolvedSuggestions()[index];
12042
+ if (suggestion)
12043
+ this.selectSuggestion(suggestion);
12044
+ return;
12045
+ }
12046
+ this.emitSearch();
12047
+ }
12048
+ panelElement() {
12049
+ return this.connectedOverlay()?.overlayRef?.overlayElement;
12050
+ }
12051
+ resetActiveOption() {
12052
+ this.keyManager.setActiveItem(-1);
12053
+ this.activeIndex.set(-1);
12054
+ }
11118
12055
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: SearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11119
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: SearchComponent, isStandalone: true, selector: "tedi-search", inputs: { inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, searchIcon: { classPropertyName: "searchIcon", publicName: "searchIcon", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, button: { classPropertyName: "button", publicName: "button", isSignal: true, isRequired: false, transformFunction: null }, feedbackText: { classPropertyName: "feedbackText", publicName: "feedbackText", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", searchEvent: "searchEvent", clear: "clear" }, host: { attributes: { "role": "search" }, properties: { "attr.aria-label": "searchAriaLabel()", "style.--tedi-search-field-height": "fieldHeight()", "class.tedi-search--button-icon-only": "!!button() && !button()?.text", "class.tedi-search--has-button": "!!button()" }, classAttribute: "tedi-search" }, providers: [
12056
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: SearchComponent, isStandalone: true, selector: "tedi-search", inputs: { inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, searchIcon: { classPropertyName: "searchIcon", publicName: "searchIcon", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, button: { classPropertyName: "button", publicName: "button", isSignal: true, isRequired: false, transformFunction: null }, feedbackText: { classPropertyName: "feedbackText", publicName: "feedbackText", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, suggestions: { classPropertyName: "suggestions", publicName: "suggestions", isSignal: true, isRequired: false, transformFunction: null }, bindLabel: { classPropertyName: "bindLabel", publicName: "bindLabel", isSignal: true, isRequired: false, transformFunction: null }, bindDescription: { classPropertyName: "bindDescription", publicName: "bindDescription", isSignal: true, isRequired: false, transformFunction: null }, bindDisabled: { classPropertyName: "bindDisabled", publicName: "bindDisabled", isSignal: true, isRequired: false, transformFunction: null }, minQueryLength: { classPropertyName: "minQueryLength", publicName: "minQueryLength", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, hideOnScroll: { classPropertyName: "hideOnScroll", publicName: "hideOnScroll", isSignal: true, isRequired: false, transformFunction: null }, panelOpen: { classPropertyName: "panelOpen", publicName: "panelOpen", isSignal: true, isRequired: false, transformFunction: null }, noResultsText: { classPropertyName: "noResultsText", publicName: "noResultsText", isSignal: true, isRequired: false, transformFunction: null }, loadingText: { classPropertyName: "loadingText", publicName: "loadingText", isSignal: true, isRequired: false, transformFunction: null }, resultsCountText: { classPropertyName: "resultsCountText", publicName: "resultsCountText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", panelOpen: "panelOpenChange", searchEvent: "searchEvent", clear: "clear", suggestionSelect: "suggestionSelect" }, host: { attributes: { "role": "search" }, listeners: { "focusout": "onFocusOut($event)" }, properties: { "attr.aria-label": "searchAriaLabel()", "style.--tedi-search-field-height": "fieldHeight()", "class.tedi-search--button-icon-only": "!!button() && !button()?.text", "class.tedi-search--has-button": "!!button()" }, classAttribute: "tedi-search" }, providers: [
11120
12057
  {
11121
12058
  provide: NG_VALUE_ACCESSOR,
11122
12059
  useExisting: forwardRef(() => SearchComponent),
11123
12060
  multi: true,
11124
12061
  },
11125
- ], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "<tedi-form-field\n class=\"tedi-search__field\"\n [size]=\"size()\"\n [icon]=\"fieldIcon()\"\n [clearable]=\"clearable() && !isDisabled()\"\n>\n @if (label()) {\n <label tedi-label [for]=\"inputId()\">\n {{ label() }}\n </label>\n }\n\n <input\n #searchInput\n tedi-text-field\n type=\"text\"\n role=\"searchbox\"\n [id]=\"inputId()\"\n [value]=\"value()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"inputAriaLabel()\"\n (valueChange)=\"onInputValue($event)\"\n (clear)=\"onClear()\"\n (keydown.enter)=\"emitSearch()\"\n (blur)=\"onBlur()\"\n />\n\n @if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [id]=\"feedbackId()\"\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n }\n</tedi-form-field>\n\n@if (button(); as btn) {\n <button\n tedi-button\n type=\"button\"\n class=\"tedi-search__button\"\n [variant]=\"btn.variant ?? 'primary'\"\n [size]=\"buttonSize()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"buttonAriaLabel()\"\n (click)=\"emitSearch()\"\n >\n <tedi-icon [name]=\"btn.icon ?? 'search'\" [size]=\"buttonIconSize()\" />\n @if (btn.text) {\n {{ btn.text }}\n }\n </button>\n}\n", styles: [".tedi-search{display:flex;align-items:flex-end;width:100%}.tedi-search__field{flex:1 1 auto;min-width:0}.tedi-search__button{flex:0 0 auto;align-self:flex-end;white-space:nowrap}.tedi-search .tedi-search__button{height:var(--tedi-search-field-height);min-height:0;border-radius:0 var(--button-radius-sm) var(--button-radius-sm) 0}.tedi-search--button-icon-only .tedi-search__button{width:var(--tedi-search-field-height);padding-right:0;padding-left:0}.tedi-search--has-button .tedi-field-surface{border-right-width:0;border-top-right-radius:0;border-bottom-right-radius:0}\n"], dependencies: [{ kind: "component", type: FormFieldComponent, selector: "tedi-form-field", inputs: ["size", "icon", "clearable", "inputClass", "characterLimit"] }, { kind: "component", type: TextFieldComponent, selector: "input[tedi-text-field]", inputs: ["value", "size", "invalid", "arrowsHidden", "disabled"], outputs: ["valueChange", "clear"] }, { kind: "component", type: LabelComponent, selector: "[tedi-label]", inputs: ["size", "required", "color", "visuallyHidden"] }, { kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["id", "text", "type", "position"] }, { kind: "component", type: ButtonComponent, selector: "[tedi-button]", inputs: ["variant", "size"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
12062
+ ], queries: [{ propertyName: "suggestionTemplate", first: true, predicate: SearchSuggestionTemplateDirective, descendants: true, isSignal: true }, { propertyName: "footerTemplate", first: true, predicate: SearchFooterTemplateDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["searchInput"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "overlayOrigin", first: true, predicate: CdkOverlayOrigin, descendants: true, isSignal: true }, { propertyName: "connectedOverlay", first: true, predicate: CdkConnectedOverlay, descendants: true, isSignal: true }, { propertyName: "suggestionRows", predicate: SearchSuggestionComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<tedi-form-field\n class=\"tedi-search__field\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n [size]=\"size()\"\n [icon]=\"fieldIcon()\"\n [clearable]=\"clearable() && !isDisabled()\"\n>\n @if (label()) {\n <label tedi-label [for]=\"inputId()\">\n {{ label() }}\n </label>\n }\n\n <input\n #searchInput\n tedi-text-field\n type=\"text\"\n [attr.role]=\"inputRole()\"\n [attr.aria-autocomplete]=\"ariaAutocomplete()\"\n [attr.aria-expanded]=\"ariaExpanded()\"\n [attr.aria-controls]=\"ariaControls()\"\n [attr.aria-activedescendant]=\"activeOptionId()\"\n [id]=\"inputId()\"\n [value]=\"value()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"inputAriaLabel()\"\n (valueChange)=\"onInputValue($event)\"\n (clear)=\"onClear()\"\n (focus)=\"onInputFocus()\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur()\"\n />\n\n @if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [id]=\"feedbackId()\"\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n }\n</tedi-form-field>\n\n@if (button(); as btn) {\n <button\n tedi-button\n type=\"button\"\n class=\"tedi-search__button\"\n [variant]=\"btn.variant ?? 'primary'\"\n [size]=\"buttonSize()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"buttonAriaLabel()\"\n (click)=\"emitSearch()\"\n >\n <tedi-icon [name]=\"btn.icon ?? 'search'\" [size]=\"buttonIconSize()\" />\n @if (btn.text) {\n {{ btn.text }}\n }\n </button>\n}\n\n<div\n class=\"tedi-search__announcement sr-only\"\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n>\n {{ announcement() }}\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"panelVisible()\"\n [cdkConnectedOverlayWidth]=\"panelWidth()\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n (overlayOutsideClick)=\"closePanel()\"\n (positionChange)=\"onPositionChange($event)\"\n (attach)=\"onOverlayAttach()\"\n (detach)=\"onOverlayDetach()\"\n>\n <div\n class=\"tedi-search__panel\"\n [class.tedi-search__panel--above]=\"panelAbove()\"\n >\n @if (loading()) {\n <div class=\"tedi-search__panel-status\">\n <tedi-spinner [size]=\"16\" />\n <span tedi-text color=\"tertiary\">{{ resolvedLoadingText() }}</span>\n </div>\n } @else if (hasSuggestions()) {\n <ul class=\"tedi-search__panel-list\" role=\"listbox\" [id]=\"listboxId()\">\n @for (\n suggestion of resolvedSuggestions();\n track suggestion.label + $index;\n let i = $index\n ) {\n <li\n tedi-search-suggestion\n [label]=\"suggestion.label\"\n [description]=\"suggestion.description\"\n [disabled]=\"suggestion.disabled\"\n [query]=\"query()\"\n [custom]=\"!!suggestionTemplate()\"\n [id]=\"optionId(i)\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"selectSuggestion(suggestion)\"\n >\n @if (suggestionTemplate(); as tpl) {\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"{\n $implicit: suggestion.item,\n item: suggestion.item,\n index: i,\n label: suggestion.label,\n description: suggestion.description,\n disabled: suggestion.disabled,\n query: query(),\n }\"\n />\n }\n </li>\n }\n </ul>\n } @else {\n <div class=\"tedi-search__panel-status\">\n <span tedi-text color=\"tertiary\">{{ resolvedNoResultsText() }}</span>\n </div>\n }\n\n @if (footerTemplate(); as footer) {\n <div\n class=\"tedi-search__footer\"\n (keydown)=\"onFooterKeydown($event)\"\n (focusout)=\"onFocusOut($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"footer.template\" />\n </div>\n }\n </div>\n</ng-template>\n", styles: [".tedi-search{display:flex;align-items:flex-end;width:100%}.tedi-search__field{flex:1 1 auto;min-width:0}.tedi-search__button{flex:0 0 auto;align-self:flex-end;white-space:nowrap}.tedi-search .tedi-search__button{height:var(--tedi-search-field-height);min-height:0;border-radius:0 var(--button-radius-sm) var(--button-radius-sm) 0}.tedi-search--button-icon-only .tedi-search__button{width:var(--tedi-search-field-height);padding-right:0;padding-left:0}.tedi-search--has-button .tedi-field-surface{border-right-width:0;border-top-right-radius:0;border-bottom-right-radius:0}.tedi-search__panel{display:flex;flex-direction:column;width:100%;max-height:var(--form-select-area-max-height);overflow:hidden;background:var(--dropdown-item-default-background);border:1px solid var(--card-border-primary);border-radius:0 0 var(--form-select-area-radius) var(--form-select-area-radius);box-shadow:0 1px 5px 0 var(--general-effect-colors-elevation-dropdown-area-drop-shadow)}.tedi-search__panel--above{border-radius:var(--form-select-area-radius) var(--form-select-area-radius) 0 0}.tedi-search__panel-list{min-height:0;padding:0;margin:0;overflow-y:auto;list-style:none}.tedi-search__footer{display:flex;flex:0 0 auto;flex-direction:column;gap:var(--dropdown-item-inner-spacing);align-items:center;padding:var(--card-padding-md-default);background:var(--dropdown-item-default-background);border-top:1px solid var(--card-border-primary)}.tedi-search-footer-actions{display:flex;flex-wrap:wrap;gap:var(--button-gutter-x);justify-content:center}.tedi-search__panel-status{display:flex;gap:var(--dropdown-item-inner-spacing);align-items:center;justify-content:center;padding:var(--dropdown-item-padding-y) var(--dropdown-item-padding-x)}\n"], dependencies: [{ kind: "component", type: FormFieldComponent, selector: "tedi-form-field", inputs: ["size", "icon", "clearable", "inputClass", "characterLimit"] }, { kind: "component", type: TextFieldComponent, selector: "input[tedi-text-field]", inputs: ["value", "size", "invalid", "arrowsHidden", "disabled"], outputs: ["valueChange", "clear"] }, { kind: "component", type: LabelComponent, selector: "[tedi-label]", inputs: ["size", "required", "color", "visuallyHidden"] }, { kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["id", "text", "type", "position"] }, { kind: "component", type: ButtonComponent, selector: "[tedi-button]", inputs: ["variant", "size"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "component", type: TextComponent, selector: "[tedi-text]", inputs: ["modifiers", "color"] }, { kind: "component", type: SpinnerComponent, selector: "tedi-spinner", inputs: ["size", "color", "label"] }, { kind: "component", type: SearchSuggestionComponent, selector: "li[tedi-search-suggestion]", inputs: ["label", "description", "query", "custom", "disabled"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
11126
12063
  }
11127
12064
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: SearchComponent, decorators: [{
11128
12065
  type: Component,
@@ -11133,6 +12070,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
11133
12070
  FeedbackTextComponent,
11134
12071
  ButtonComponent,
11135
12072
  IconComponent,
12073
+ TextComponent,
12074
+ SpinnerComponent,
12075
+ SearchSuggestionComponent,
12076
+ OverlayModule,
12077
+ NgTemplateOutlet,
11136
12078
  ], providers: [
11137
12079
  {
11138
12080
  provide: NG_VALUE_ACCESSOR,
@@ -11142,12 +12084,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
11142
12084
  ], host: {
11143
12085
  role: "search",
11144
12086
  class: "tedi-search",
12087
+ "(focusout)": "onFocusOut($event)",
11145
12088
  "[attr.aria-label]": "searchAriaLabel()",
11146
12089
  "[style.--tedi-search-field-height]": "fieldHeight()",
11147
12090
  "[class.tedi-search--button-icon-only]": "!!button() && !button()?.text",
11148
12091
  "[class.tedi-search--has-button]": "!!button()",
11149
- }, template: "<tedi-form-field\n class=\"tedi-search__field\"\n [size]=\"size()\"\n [icon]=\"fieldIcon()\"\n [clearable]=\"clearable() && !isDisabled()\"\n>\n @if (label()) {\n <label tedi-label [for]=\"inputId()\">\n {{ label() }}\n </label>\n }\n\n <input\n #searchInput\n tedi-text-field\n type=\"text\"\n role=\"searchbox\"\n [id]=\"inputId()\"\n [value]=\"value()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"inputAriaLabel()\"\n (valueChange)=\"onInputValue($event)\"\n (clear)=\"onClear()\"\n (keydown.enter)=\"emitSearch()\"\n (blur)=\"onBlur()\"\n />\n\n @if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [id]=\"feedbackId()\"\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n }\n</tedi-form-field>\n\n@if (button(); as btn) {\n <button\n tedi-button\n type=\"button\"\n class=\"tedi-search__button\"\n [variant]=\"btn.variant ?? 'primary'\"\n [size]=\"buttonSize()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"buttonAriaLabel()\"\n (click)=\"emitSearch()\"\n >\n <tedi-icon [name]=\"btn.icon ?? 'search'\" [size]=\"buttonIconSize()\" />\n @if (btn.text) {\n {{ btn.text }}\n }\n </button>\n}\n", styles: [".tedi-search{display:flex;align-items:flex-end;width:100%}.tedi-search__field{flex:1 1 auto;min-width:0}.tedi-search__button{flex:0 0 auto;align-self:flex-end;white-space:nowrap}.tedi-search .tedi-search__button{height:var(--tedi-search-field-height);min-height:0;border-radius:0 var(--button-radius-sm) var(--button-radius-sm) 0}.tedi-search--button-icon-only .tedi-search__button{width:var(--tedi-search-field-height);padding-right:0;padding-left:0}.tedi-search--has-button .tedi-field-surface{border-right-width:0;border-top-right-radius:0;border-bottom-right-radius:0}\n"] }]
11150
- }], propDecorators: { inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], clearable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearable", required: false }] }], searchIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchIcon", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], button: [{ type: i0.Input, args: [{ isSignal: true, alias: "button", required: false }] }], feedbackText: [{ type: i0.Input, args: [{ isSignal: true, alias: "feedbackText", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], searchEvent: [{ type: i0.Output, args: ["searchEvent"] }], clear: [{ type: i0.Output, args: ["clear"] }], inputRef: [{ type: i0.ViewChild, args: ["searchInput", { ...{ read: ElementRef }, isSignal: true }] }] } });
12092
+ }, template: "<tedi-form-field\n class=\"tedi-search__field\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n [size]=\"size()\"\n [icon]=\"fieldIcon()\"\n [clearable]=\"clearable() && !isDisabled()\"\n>\n @if (label()) {\n <label tedi-label [for]=\"inputId()\">\n {{ label() }}\n </label>\n }\n\n <input\n #searchInput\n tedi-text-field\n type=\"text\"\n [attr.role]=\"inputRole()\"\n [attr.aria-autocomplete]=\"ariaAutocomplete()\"\n [attr.aria-expanded]=\"ariaExpanded()\"\n [attr.aria-controls]=\"ariaControls()\"\n [attr.aria-activedescendant]=\"activeOptionId()\"\n [id]=\"inputId()\"\n [value]=\"value()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"inputAriaLabel()\"\n (valueChange)=\"onInputValue($event)\"\n (clear)=\"onClear()\"\n (focus)=\"onInputFocus()\"\n (keydown)=\"onKeydown($event)\"\n (blur)=\"onBlur()\"\n />\n\n @if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [id]=\"feedbackId()\"\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n }\n</tedi-form-field>\n\n@if (button(); as btn) {\n <button\n tedi-button\n type=\"button\"\n class=\"tedi-search__button\"\n [variant]=\"btn.variant ?? 'primary'\"\n [size]=\"buttonSize()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"buttonAriaLabel()\"\n (click)=\"emitSearch()\"\n >\n <tedi-icon [name]=\"btn.icon ?? 'search'\" [size]=\"buttonIconSize()\" />\n @if (btn.text) {\n {{ btn.text }}\n }\n </button>\n}\n\n<div\n class=\"tedi-search__announcement sr-only\"\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n>\n {{ announcement() }}\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"panelVisible()\"\n [cdkConnectedOverlayWidth]=\"panelWidth()\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n (overlayOutsideClick)=\"closePanel()\"\n (positionChange)=\"onPositionChange($event)\"\n (attach)=\"onOverlayAttach()\"\n (detach)=\"onOverlayDetach()\"\n>\n <div\n class=\"tedi-search__panel\"\n [class.tedi-search__panel--above]=\"panelAbove()\"\n >\n @if (loading()) {\n <div class=\"tedi-search__panel-status\">\n <tedi-spinner [size]=\"16\" />\n <span tedi-text color=\"tertiary\">{{ resolvedLoadingText() }}</span>\n </div>\n } @else if (hasSuggestions()) {\n <ul class=\"tedi-search__panel-list\" role=\"listbox\" [id]=\"listboxId()\">\n @for (\n suggestion of resolvedSuggestions();\n track suggestion.label + $index;\n let i = $index\n ) {\n <li\n tedi-search-suggestion\n [label]=\"suggestion.label\"\n [description]=\"suggestion.description\"\n [disabled]=\"suggestion.disabled\"\n [query]=\"query()\"\n [custom]=\"!!suggestionTemplate()\"\n [id]=\"optionId(i)\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"selectSuggestion(suggestion)\"\n >\n @if (suggestionTemplate(); as tpl) {\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"{\n $implicit: suggestion.item,\n item: suggestion.item,\n index: i,\n label: suggestion.label,\n description: suggestion.description,\n disabled: suggestion.disabled,\n query: query(),\n }\"\n />\n }\n </li>\n }\n </ul>\n } @else {\n <div class=\"tedi-search__panel-status\">\n <span tedi-text color=\"tertiary\">{{ resolvedNoResultsText() }}</span>\n </div>\n }\n\n @if (footerTemplate(); as footer) {\n <div\n class=\"tedi-search__footer\"\n (keydown)=\"onFooterKeydown($event)\"\n (focusout)=\"onFocusOut($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"footer.template\" />\n </div>\n }\n </div>\n</ng-template>\n", styles: [".tedi-search{display:flex;align-items:flex-end;width:100%}.tedi-search__field{flex:1 1 auto;min-width:0}.tedi-search__button{flex:0 0 auto;align-self:flex-end;white-space:nowrap}.tedi-search .tedi-search__button{height:var(--tedi-search-field-height);min-height:0;border-radius:0 var(--button-radius-sm) var(--button-radius-sm) 0}.tedi-search--button-icon-only .tedi-search__button{width:var(--tedi-search-field-height);padding-right:0;padding-left:0}.tedi-search--has-button .tedi-field-surface{border-right-width:0;border-top-right-radius:0;border-bottom-right-radius:0}.tedi-search__panel{display:flex;flex-direction:column;width:100%;max-height:var(--form-select-area-max-height);overflow:hidden;background:var(--dropdown-item-default-background);border:1px solid var(--card-border-primary);border-radius:0 0 var(--form-select-area-radius) var(--form-select-area-radius);box-shadow:0 1px 5px 0 var(--general-effect-colors-elevation-dropdown-area-drop-shadow)}.tedi-search__panel--above{border-radius:var(--form-select-area-radius) var(--form-select-area-radius) 0 0}.tedi-search__panel-list{min-height:0;padding:0;margin:0;overflow-y:auto;list-style:none}.tedi-search__footer{display:flex;flex:0 0 auto;flex-direction:column;gap:var(--dropdown-item-inner-spacing);align-items:center;padding:var(--card-padding-md-default);background:var(--dropdown-item-default-background);border-top:1px solid var(--card-border-primary)}.tedi-search-footer-actions{display:flex;flex-wrap:wrap;gap:var(--button-gutter-x);justify-content:center}.tedi-search__panel-status{display:flex;gap:var(--dropdown-item-inner-spacing);align-items:center;justify-content:center;padding:var(--dropdown-item-padding-y) var(--dropdown-item-padding-x)}\n"] }]
12093
+ }], ctorParameters: () => [], propDecorators: { inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], clearable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearable", required: false }] }], searchIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchIcon", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], button: [{ type: i0.Input, args: [{ isSignal: true, alias: "button", required: false }] }], feedbackText: [{ type: i0.Input, args: [{ isSignal: true, alias: "feedbackText", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], suggestions: [{ type: i0.Input, args: [{ isSignal: true, alias: "suggestions", required: false }] }], bindLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "bindLabel", required: false }] }], bindDescription: [{ type: i0.Input, args: [{ isSignal: true, alias: "bindDescription", required: false }] }], bindDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "bindDisabled", required: false }] }], minQueryLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "minQueryLength", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], hideOnScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideOnScroll", required: false }] }], panelOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "panelOpen", required: false }] }, { type: i0.Output, args: ["panelOpenChange"] }], noResultsText: [{ type: i0.Input, args: [{ isSignal: true, alias: "noResultsText", required: false }] }], loadingText: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingText", required: false }] }], resultsCountText: [{ type: i0.Input, args: [{ isSignal: true, alias: "resultsCountText", required: false }] }], searchEvent: [{ type: i0.Output, args: ["searchEvent"] }], clear: [{ type: i0.Output, args: ["clear"] }], suggestionSelect: [{ type: i0.Output, args: ["suggestionSelect"] }], suggestionTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SearchSuggestionTemplateDirective), { isSignal: true }] }], footerTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SearchFooterTemplateDirective), { isSignal: true }] }], inputRef: [{ type: i0.ViewChild, args: ["searchInput", { ...{ read: ElementRef }, isSignal: true }] }], overlayOrigin: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkOverlayOrigin), { isSignal: true }] }], connectedOverlay: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkConnectedOverlay), { isSignal: true }] }], suggestionRows: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => SearchSuggestionComponent), { isSignal: true }] }] } });
12094
+
12095
+ /**
12096
+ * Row of buttons inside a `tediSearchFooter`. Centres them and wraps to a new
12097
+ * line when they no longer fit side by side.
12098
+ */
12099
+ class SearchFooterActionsComponent {
12100
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: SearchFooterActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12101
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.24", type: SearchFooterActionsComponent, isStandalone: true, selector: "tedi-search-footer-actions", host: { classAttribute: "tedi-search-footer-actions" }, ngImport: i0, template: "<ng-content />", isInline: true, styles: [".tedi-search{display:flex;align-items:flex-end;width:100%}.tedi-search__field{flex:1 1 auto;min-width:0}.tedi-search__button{flex:0 0 auto;align-self:flex-end;white-space:nowrap}.tedi-search .tedi-search__button{height:var(--tedi-search-field-height);min-height:0;border-radius:0 var(--button-radius-sm) var(--button-radius-sm) 0}.tedi-search--button-icon-only .tedi-search__button{width:var(--tedi-search-field-height);padding-right:0;padding-left:0}.tedi-search--has-button .tedi-field-surface{border-right-width:0;border-top-right-radius:0;border-bottom-right-radius:0}.tedi-search__panel{display:flex;flex-direction:column;width:100%;max-height:var(--form-select-area-max-height);overflow:hidden;background:var(--dropdown-item-default-background);border:1px solid var(--card-border-primary);border-radius:0 0 var(--form-select-area-radius) var(--form-select-area-radius);box-shadow:0 1px 5px 0 var(--general-effect-colors-elevation-dropdown-area-drop-shadow)}.tedi-search__panel--above{border-radius:var(--form-select-area-radius) var(--form-select-area-radius) 0 0}.tedi-search__panel-list{min-height:0;padding:0;margin:0;overflow-y:auto;list-style:none}.tedi-search__footer{display:flex;flex:0 0 auto;flex-direction:column;gap:var(--dropdown-item-inner-spacing);align-items:center;padding:var(--card-padding-md-default);background:var(--dropdown-item-default-background);border-top:1px solid var(--card-border-primary)}.tedi-search-footer-actions{display:flex;flex-wrap:wrap;gap:var(--button-gutter-x);justify-content:center}.tedi-search__panel-status{display:flex;gap:var(--dropdown-item-inner-spacing);align-items:center;justify-content:center;padding:var(--dropdown-item-padding-y) var(--dropdown-item-padding-x)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
12102
+ }
12103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: SearchFooterActionsComponent, decorators: [{
12104
+ type: Component,
12105
+ args: [{ standalone: true, selector: "tedi-search-footer-actions", template: "<ng-content />", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
12106
+ class: "tedi-search-footer-actions",
12107
+ }, styles: [".tedi-search{display:flex;align-items:flex-end;width:100%}.tedi-search__field{flex:1 1 auto;min-width:0}.tedi-search__button{flex:0 0 auto;align-self:flex-end;white-space:nowrap}.tedi-search .tedi-search__button{height:var(--tedi-search-field-height);min-height:0;border-radius:0 var(--button-radius-sm) var(--button-radius-sm) 0}.tedi-search--button-icon-only .tedi-search__button{width:var(--tedi-search-field-height);padding-right:0;padding-left:0}.tedi-search--has-button .tedi-field-surface{border-right-width:0;border-top-right-radius:0;border-bottom-right-radius:0}.tedi-search__panel{display:flex;flex-direction:column;width:100%;max-height:var(--form-select-area-max-height);overflow:hidden;background:var(--dropdown-item-default-background);border:1px solid var(--card-border-primary);border-radius:0 0 var(--form-select-area-radius) var(--form-select-area-radius);box-shadow:0 1px 5px 0 var(--general-effect-colors-elevation-dropdown-area-drop-shadow)}.tedi-search__panel--above{border-radius:var(--form-select-area-radius) var(--form-select-area-radius) 0 0}.tedi-search__panel-list{min-height:0;padding:0;margin:0;overflow-y:auto;list-style:none}.tedi-search__footer{display:flex;flex:0 0 auto;flex-direction:column;gap:var(--dropdown-item-inner-spacing);align-items:center;padding:var(--card-padding-md-default);background:var(--dropdown-item-default-background);border-top:1px solid var(--card-border-primary)}.tedi-search-footer-actions{display:flex;flex-wrap:wrap;gap:var(--button-gutter-x);justify-content:center}.tedi-search__panel-status{display:flex;gap:var(--dropdown-item-inner-spacing);align-items:center;justify-content:center;padding:var(--dropdown-item-padding-y) var(--dropdown-item-padding-x)}\n"] }]
12108
+ }] });
11151
12109
 
11152
12110
  class InfoTooltipComponent {
11153
12111
  /**
@@ -11365,6 +12323,12 @@ class SelectComponent {
11365
12323
  * When undefined, the entire object is used as the value.
11366
12324
  */
11367
12325
  bindValue = input(undefined, ...(ngDevMode ? [{ debugName: "bindValue" }] : []));
12326
+ /**
12327
+ * Selected value, for use without a form directive. An array in multi-select
12328
+ * mode, the bare value otherwise. Unlike `[ngModel]` it applies on the first
12329
+ * render rather than a frame later. Do not combine with a form directive.
12330
+ */
12331
+ value = input(undefined, ...(ngDevMode ? [{ debugName: "value" }] : []));
11368
12332
  /**
11369
12333
  * Whether multiple items can be selected.
11370
12334
  * @default false
@@ -11536,7 +12500,8 @@ class SelectComponent {
11536
12500
  /** `aria-label` is only used when no labelledby reference is available. */
11537
12501
  resolvedAriaLabel = computed(() => this.resolvedAriaLabelledby() ? null : (this.ariaLabel() ?? null), ...(ngDevMode ? [{ debugName: "resolvedAriaLabel" }] : []));
11538
12502
  isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : []));
11539
- selectedValues = signal([], ...(ngDevMode ? [{ debugName: "selectedValues" }] : []));
12503
+ /** `allowMultiple` untracked, so flipping the mode cannot wipe the selection. */
12504
+ selectedValues = linkedSignal(() => this.toSelection(this.value(), untracked(() => this.allowMultiple())), ...(ngDevMode ? [{ debugName: "selectedValues" }] : []));
11540
12505
  disabled = signal(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
11541
12506
  dropdownWidth = signal(null, ...(ngDevMode ? [{ debugName: "dropdownWidth" }] : []));
11542
12507
  dropdownMaxHeight = signal(null, ...(ngDevMode ? [{ debugName: "dropdownMaxHeight" }] : []));
@@ -12544,13 +13509,14 @@ class SelectComponent {
12544
13509
  }
12545
13510
  onChange = () => { };
12546
13511
  onTouched = () => { };
12547
- writeValue(value) {
12548
- if (this.allowMultiple()) {
12549
- this.selectedValues.set(Array.isArray(value) ? value : []);
12550
- }
12551
- else {
12552
- this.selectedValues.set(value != null ? [value] : []);
13512
+ toSelection(value, allowMultiple) {
13513
+ if (allowMultiple) {
13514
+ return Array.isArray(value) ? value : [];
12553
13515
  }
13516
+ return value != null ? [value] : [];
13517
+ }
13518
+ writeValue(value) {
13519
+ this.selectedValues.set(this.toSelection(value, this.allowMultiple()));
12554
13520
  }
12555
13521
  registerOnChange(fn) {
12556
13522
  this.onChange = fn;
@@ -12565,7 +13531,7 @@ class SelectComponent {
12565
13531
  }
12566
13532
  }
12567
13533
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12568
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: SelectComponent, isStandalone: true, selector: "tedi-select", inputs: { inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "ariaLabelledby", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, dropdownWidthRef: { classPropertyName: "dropdownWidthRef", publicName: "dropdownWidthRef", isSignal: true, isRequired: false, transformFunction: null }, dropdownAlign: { classPropertyName: "dropdownAlign", publicName: "dropdownAlign", isSignal: true, isRequired: false, transformFunction: null }, feedbackText: { classPropertyName: "feedbackText", publicName: "feedbackText", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, bindLabel: { classPropertyName: "bindLabel", publicName: "bindLabel", isSignal: true, isRequired: false, transformFunction: null }, bindValue: { classPropertyName: "bindValue", publicName: "bindValue", isSignal: true, isRequired: false, transformFunction: null }, allowMultiple: { classPropertyName: "allowMultiple", publicName: "allowMultiple", isSignal: true, isRequired: false, transformFunction: null }, groupBy: { classPropertyName: "groupBy", publicName: "groupBy", isSignal: true, isRequired: false, transformFunction: null }, showSelectAll: { classPropertyName: "showSelectAll", publicName: "showSelectAll", isSignal: true, isRequired: false, transformFunction: null }, selectableGroups: { classPropertyName: "selectableGroups", publicName: "selectableGroups", isSignal: true, isRequired: false, transformFunction: null }, isTagRemovable: { classPropertyName: "isTagRemovable", publicName: "isTagRemovable", isSignal: true, isRequired: false, transformFunction: null }, multiRow: { classPropertyName: "multiRow", publicName: "multiRow", isSignal: true, isRequired: false, transformFunction: null }, tagEllipsis: { classPropertyName: "tagEllipsis", publicName: "tagEllipsis", isSignal: true, isRequired: false, transformFunction: null }, ellipsis: { classPropertyName: "ellipsis", publicName: "ellipsis", isSignal: true, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null }, disabledKey: { classPropertyName: "disabledKey", publicName: "disabledKey", isSignal: true, isRequired: false, transformFunction: null }, noOptionsMessage: { classPropertyName: "noOptionsMessage", publicName: "noOptionsMessage", isSignal: true, isRequired: false, transformFunction: null }, maxDropdownHeight: { classPropertyName: "maxDropdownHeight", publicName: "maxDropdownHeight", isSignal: true, isRequired: false, transformFunction: null }, hideOnScroll: { classPropertyName: "hideOnScroll", publicName: "hideOnScroll", isSignal: true, isRequired: false, transformFunction: null }, dropdownType: { classPropertyName: "dropdownType", publicName: "dropdownType", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualItemSize: { classPropertyName: "virtualItemSize", publicName: "virtualItemSize", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, searchFn: { classPropertyName: "searchFn", publicName: "searchFn", isSignal: true, isRequired: false, transformFunction: null }, clearSearchOnSelect: { classPropertyName: "clearSearchOnSelect", publicName: "clearSearchOnSelect", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange", searchChange: "searchChange", opened: "opened", closed: "closed", cleared: "cleared" }, host: { listeners: { "window:resize": "onWindowResize()", "document:click": "onDocumentClick($event)" }, properties: { "class.tedi-select--multiselect": "allowMultiple()" }, classAttribute: "tedi-select" }, providers: [
13534
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: SelectComponent, isStandalone: true, selector: "tedi-select", inputs: { inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "ariaLabelledby", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, dropdownWidthRef: { classPropertyName: "dropdownWidthRef", publicName: "dropdownWidthRef", isSignal: true, isRequired: false, transformFunction: null }, dropdownAlign: { classPropertyName: "dropdownAlign", publicName: "dropdownAlign", isSignal: true, isRequired: false, transformFunction: null }, feedbackText: { classPropertyName: "feedbackText", publicName: "feedbackText", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, bindLabel: { classPropertyName: "bindLabel", publicName: "bindLabel", isSignal: true, isRequired: false, transformFunction: null }, bindValue: { classPropertyName: "bindValue", publicName: "bindValue", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, allowMultiple: { classPropertyName: "allowMultiple", publicName: "allowMultiple", isSignal: true, isRequired: false, transformFunction: null }, groupBy: { classPropertyName: "groupBy", publicName: "groupBy", isSignal: true, isRequired: false, transformFunction: null }, showSelectAll: { classPropertyName: "showSelectAll", publicName: "showSelectAll", isSignal: true, isRequired: false, transformFunction: null }, selectableGroups: { classPropertyName: "selectableGroups", publicName: "selectableGroups", isSignal: true, isRequired: false, transformFunction: null }, isTagRemovable: { classPropertyName: "isTagRemovable", publicName: "isTagRemovable", isSignal: true, isRequired: false, transformFunction: null }, multiRow: { classPropertyName: "multiRow", publicName: "multiRow", isSignal: true, isRequired: false, transformFunction: null }, tagEllipsis: { classPropertyName: "tagEllipsis", publicName: "tagEllipsis", isSignal: true, isRequired: false, transformFunction: null }, ellipsis: { classPropertyName: "ellipsis", publicName: "ellipsis", isSignal: true, isRequired: false, transformFunction: null }, compareWith: { classPropertyName: "compareWith", publicName: "compareWith", isSignal: true, isRequired: false, transformFunction: null }, disabledKey: { classPropertyName: "disabledKey", publicName: "disabledKey", isSignal: true, isRequired: false, transformFunction: null }, noOptionsMessage: { classPropertyName: "noOptionsMessage", publicName: "noOptionsMessage", isSignal: true, isRequired: false, transformFunction: null }, maxDropdownHeight: { classPropertyName: "maxDropdownHeight", publicName: "maxDropdownHeight", isSignal: true, isRequired: false, transformFunction: null }, hideOnScroll: { classPropertyName: "hideOnScroll", publicName: "hideOnScroll", isSignal: true, isRequired: false, transformFunction: null }, dropdownType: { classPropertyName: "dropdownType", publicName: "dropdownType", isSignal: true, isRequired: false, transformFunction: null }, virtualScroll: { classPropertyName: "virtualScroll", publicName: "virtualScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualItemSize: { classPropertyName: "virtualItemSize", publicName: "virtualItemSize", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, searchFn: { classPropertyName: "searchFn", publicName: "searchFn", isSignal: true, isRequired: false, transformFunction: null }, clearSearchOnSelect: { classPropertyName: "clearSearchOnSelect", publicName: "clearSearchOnSelect", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectionChange: "selectionChange", searchChange: "searchChange", opened: "opened", closed: "closed", cleared: "cleared" }, host: { listeners: { "window:resize": "onWindowResize()", "document:click": "onDocumentClick($event)" }, properties: { "class.tedi-select--multiselect": "allowMultiple()" }, classAttribute: "tedi-select" }, providers: [
12569
13535
  {
12570
13536
  provide: NG_VALUE_ACCESSOR,
12571
13537
  useExisting: forwardRef(() => SelectComponent),
@@ -12602,7 +13568,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
12602
13568
  multi: true,
12603
13569
  },
12604
13570
  ], template: "@if (label()) {\n <tedi-label-row>\n <label\n [id]=\"labelId()\"\n tedi-label\n [for]=\"inputId()\"\n [required]=\"required()\"\n [size]=\"size()\"\n (click)=\"onTriggerClick()\"\n >\n {{ label() }}\n </label>\n @if (tooltipTemplate()?.template; as tooltipTpl) {\n <tedi-info-tooltip>\n <ng-container [ngTemplateOutlet]=\"tooltipTpl\" />\n </tedi-info-tooltip>\n } @else if (tooltip(); as tooltipText) {\n <tedi-info-tooltip>{{ tooltipText }}</tedi-info-tooltip>\n }\n </tedi-label-row>\n}\n<div\n [id]=\"searchable() ? null : inputId()\"\n class=\"tedi-select__trigger tedi-input\"\n [class.tedi-input--disabled]=\"disabled()\"\n [class.tedi-input--small]=\"size() === 'small'\"\n [class.tedi-input--error]=\"state() === 'error'\"\n [class.tedi-input--valid]=\"state() === 'valid'\"\n [class.tedi-select__trigger--searchable]=\"searchable()\"\n [class.tedi-select__trigger--search-focused]=\"searchFocused()\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [attr.role]=\"searchable() ? null : 'combobox'\"\n [attr.aria-haspopup]=\"searchable() ? null : 'listbox'\"\n [attr.aria-expanded]=\"searchable() ? null : isOpen()\"\n [attr.aria-controls]=\"!searchable() && isOpen() ? listboxId() : null\"\n [attr.aria-labelledby]=\"!searchable() ? resolvedAriaLabelledby() : null\"\n [attr.aria-label]=\"!searchable() ? resolvedAriaLabel() : null\"\n [tabindex]=\"searchable() || disabled() ? -1 : 0\"\n (click)=\"onTriggerClick()\"\n (keydown.enter)=\"onTriggerEnter()\"\n (keydown.space)=\"$event.preventDefault(); toggleIsOpen()\"\n (keydown.arrowdown)=\"$event.preventDefault(); toggleIsOpen()\"\n (blur)=\"onTouched()\"\n>\n @if (searchable()) {\n <div class=\"tedi-select__search-wrapper\">\n @if (showSingleSelectedValue()) {\n <span class=\"tedi-select__selected-value\">\n @if (valueTemplate(); as tpl) {\n @if (selectedOptions()[0]; as option) {\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"getValueContext(option)\"\n />\n }\n } @else {\n {{ selectedLabels().join(\", \") }}\n }\n </span>\n }\n @if (allowMultiple() && selectedValues().length) {\n <ng-container\n [ngTemplateOutlet]=\"multiselectTags\"\n [ngTemplateOutletContext]=\"{ $implicit: multiselectContainerRef }\"\n />\n } @else {\n <input\n #searchInput\n [id]=\"inputId()\"\n type=\"text\"\n class=\"tedi-select__search-input\"\n [class.tedi-select__search-input--hidden]=\"showSingleSelectedValue()\"\n [placeholder]=\"showSingleSelectedValue() ? '' : placeholder()\"\n [value]=\"searchTerm()\"\n [disabled]=\"disabled()\"\n (input)=\"onSearchInput($event)\"\n (focus)=\"onSearchFocus()\"\n (blur)=\"onSearchBlur()\"\n (keydown)=\"onSearchKeydown($event)\"\n autocomplete=\"off\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"isOpen() ? listboxId() : null\"\n [attr.aria-labelledby]=\"resolvedAriaLabelledby()\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n />\n }\n </div>\n } @else {\n <span class=\"tedi-select__label\">\n @if (selectedValues().length) {\n @if (allowMultiple()) {\n <ng-container\n [ngTemplateOutlet]=\"multiselectTags\"\n [ngTemplateOutletContext]=\"{ $implicit: multiselectContainerRef }\"\n />\n } @else if (ellipsis(); as ellipsisPos) {\n <tedi-ellipsis [position]=\"ellipsisPos\" [lineClamp]=\"1\">\n <ng-container [ngTemplateOutlet]=\"singleValue\" />\n </tedi-ellipsis>\n } @else {\n <ng-container [ngTemplateOutlet]=\"singleValue\" />\n }\n } @else {\n <span class=\"tedi-select__label--placeholder\">\n {{ placeholder() }}\n </span>\n }\n </span>\n }\n\n @if (clearable() && selectedValues().length) {\n <button\n class=\"tedi-select__clear\"\n tedi-closing-button\n type=\"button\"\n size=\"small\"\n [iconSize]=\"18\"\n [ariaLabel]=\"'clear' | tediTranslate\"\n (click)=\"clear($event)\"\n (keydown.enter)=\"clear($event)\"\n (keydown.space)=\"clear($event)\"\n [attr.aria-describedby]=\"label() ? labelId() : null\"\n ></button>\n }\n\n <span\n class=\"tedi-select__arrow\"\n aria-hidden=\"true\"\n (click)=\"onArrowClick($event)\"\n >\n <tedi-icon name=\"arrow_drop_down\" />\n </span>\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n\n<ng-template #singleValue>\n @if (valueTemplate(); as tpl) {\n @if (selectedOptions()[0]; as option) {\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"getValueContext(option)\"\n />\n }\n } @else {\n {{ selectedLabels().join(\", \") }}\n }\n</ng-template>\n\n<ng-template #multiselectTags>\n <div\n class=\"tedi-select__multiselect-container\"\n [class.tedi-select__multiselect-container--single-row]=\"!multiRow()\"\n [class.tedi-select__multiselect-container--ellipsis]=\"tagEllipsis()\"\n #multiselectContainer\n >\n @if (multiRow()) {\n @for (value of selectedValues(); track value) {\n <tedi-tag\n [ellipsis]=\"tagEllipsis()\"\n [closable]=\"isTagRemovable()\"\n (closed)=\"deselect($event, value)\"\n >\n {{ getLabel(value) }}\n </tedi-tag>\n }\n } @else {\n <div class=\"tedi-select__multiselect-tags\">\n @for (value of selectedValues(); track value; let i = $index) {\n @if (visibleTagsCount() === null || i < visibleTagsCount()!) {\n <tedi-tag\n #tagElement\n [ellipsis]=\"tagEllipsis()\"\n [closable]=\"isTagRemovable()\"\n (closed)=\"deselect($event, value)\"\n >\n {{ getLabel(value) }}\n </tedi-tag>\n }\n }\n </div>\n @if (hiddenTagsCount() > 0) {\n <tedi-tag class=\"tedi-select__multiselect-counter\"\n >+{{ hiddenTagsCount() }}</tedi-tag\n >\n }\n }\n @if (searchable()) {\n <input\n #searchInput\n [id]=\"inputId()\"\n type=\"text\"\n class=\"tedi-select__search-input\"\n [value]=\"searchTerm()\"\n [disabled]=\"disabled()\"\n (input)=\"onSearchInput($event)\"\n (focus)=\"onSearchFocus()\"\n (blur)=\"onSearchBlur()\"\n (keydown)=\"onSearchKeydown($event)\"\n autocomplete=\"off\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"isOpen() ? listboxId() : null\"\n [attr.aria-labelledby]=\"resolvedAriaLabelledby()\"\n [attr.aria-label]=\"resolvedAriaLabel()\"\n />\n }\n </div>\n</ng-template>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"dropdownPositions()\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\n (attach)=\"onOverlayAttached()\"\n (detach)=\"toggleIsOpen(true)\"\n>\n <div\n class=\"tedi-select__dropdown\"\n [style.width]=\"!!dropdownWidth() ? dropdownWidth() + 'px' : 'auto'\"\n [style.max-height]=\"dropdownMaxHeight() ? dropdownMaxHeight() + 'px' : null\"\n >\n @if (virtualize()) {\n <div\n #virtualListbox\n [id]=\"listboxId()\"\n class=\"tedi-select__options tedi-select__options--virtual\"\n [class.tedi-select__options--multiselect]=\"allowMultiple()\"\n role=\"listbox\"\n [attr.aria-multiselectable]=\"allowMultiple() ? true : null\"\n [attr.aria-labelledby]=\"!searchable() ? resolvedAriaLabelledby() : null\"\n [attr.aria-label]=\"!searchable() ? resolvedAriaLabel() : null\"\n [attr.aria-activedescendant]=\"activeDescendantId()\"\n [tabindex]=\"searchable() ? -1 : 0\"\n (keydown)=\"onVirtualListboxKeydown($event)\"\n >\n @if (filteredOptions().length) {\n @if (showSelectAllRow()) {\n <div\n class=\"tedi-dropdown-item\"\n [id]=\"listboxId() + '-select-all'\"\n role=\"option\"\n [attr.aria-selected]=\"allOptionsSelected()\"\n [class.tedi-dropdown-item--active]=\"activeIndex() === 0\"\n (click)=\"onVirtualSelectAllClick()\"\n >\n <tedi-dropdown-item-value\n type=\"checkbox\"\n [selected]=\"allOptionsSelected()\"\n [indeterminate]=\"someOptionsSelected()\"\n >\n <tedi-dropdown-item-value-label>{{\n \"select.select-all\" | tediTranslate\n }}</tedi-dropdown-item-value-label>\n </tedi-dropdown-item-value>\n </div>\n }\n <cdk-virtual-scroll-viewport\n class=\"tedi-select__viewport\"\n [itemSize]=\"virtualRowHeight()\"\n [style.height.px]=\"virtualViewportHeight()\"\n [minBufferPx]=\"virtualRowHeight() * 6\"\n [maxBufferPx]=\"virtualRowHeight() * 12\"\n >\n <div\n *cdkVirtualFor=\"\n let option of filteredOptions();\n let i = index;\n trackBy: trackByOptionValue\n \"\n class=\"tedi-dropdown-item\"\n [id]=\"virtualOptionId(i)\"\n role=\"option\"\n [attr.aria-selected]=\"isOptionSelected(option.value)\"\n [attr.aria-disabled]=\"option.disabled ? true : null\"\n [class.tedi-dropdown-item--selected]=\"\n !allowMultiple() && isOptionSelected(option.value)\n \"\n [class.tedi-dropdown-item--disabled]=\"option.disabled\"\n [class.tedi-dropdown-item--custom]=\"optionTemplate()\"\n [class.tedi-dropdown-item--active]=\"\n activeIndex() - (showSelectAllRow() ? 1 : 0) === i\n \"\n (click)=\"onVirtualOptionClick(option)\"\n >\n @if (optionTemplate(); as tpl) {\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"getOptionContext(option, i)\"\n />\n } @else {\n <tedi-dropdown-item-value\n [type]=\"allowMultiple() ? 'checkbox' : 'default'\"\n [selected]=\"isOptionSelected(option.value)\"\n [disabled]=\"!!option.disabled\"\n >\n <tedi-dropdown-item-value-label>{{\n option.label\n }}</tedi-dropdown-item-value-label>\n </tedi-dropdown-item-value>\n }\n </div>\n </cdk-virtual-scroll-viewport>\n } @else {\n <div\n class=\"tedi-dropdown-item tedi-select__no-options\"\n role=\"option\"\n aria-disabled=\"true\"\n >\n {{ noOptionsMessage() || (\"select.no-options\" | tediTranslate) }}\n </div>\n }\n </div>\n } @else {\n <ul\n [id]=\"listboxId()\"\n class=\"tedi-select__options\"\n [class.tedi-select__options--multiselect]=\"allowMultiple()\"\n [class.tedi-select__options--swatch-grid]=\"dropdownType() === 'grid'\"\n cdkListbox\n [cdkListboxMultiple]=\"allowMultiple()\"\n [cdkListboxValue]=\"visibleSelectedValues()\"\n [cdkListboxNavigatesDisabledOptions]=\"false\"\n [cdkListboxUseActiveDescendant]=\"true\"\n (cdkListboxValueChange)=\"handleValueChange($event)\"\n (keydown.tab)=\"toggleIsOpen(true)\"\n (keydown.escape)=\"toggleIsOpen(true)\"\n #listbox=\"cdkListbox\"\n >\n @if (filteredOptions().length) {\n @if (allowMultiple() && showSelectAll()) {\n <li\n class=\"tedi-dropdown-item\"\n [cdkOption]=\"SpecialOptionControls.SELECT_ALL\"\n >\n <tedi-dropdown-item-value\n type=\"checkbox\"\n [selected]=\"allOptionsSelected()\"\n [indeterminate]=\"someOptionsSelected()\"\n >\n <tedi-dropdown-item-value-label>{{\n \"select.select-all\" | tediTranslate\n }}</tedi-dropdown-item-value-label>\n </tedi-dropdown-item-value>\n </li>\n }\n\n @for (group of optionGroups(); track group.label) {\n @if (group.label.length > 0) {\n @if (allowMultiple() && selectableGroups()) {\n <li\n class=\"tedi-dropdown-item tedi-select__group-name tedi-select__group-name--selectable\"\n [cdkOption]=\"SpecialOptionControls.SELECT_GROUP + group.label\"\n >\n <tedi-dropdown-item-value\n type=\"checkbox\"\n [selected]=\"isGroupSelected(group.label)\"\n [indeterminate]=\"isGroupIndeterminate(group.label)\"\n >\n <tedi-dropdown-item-value-label>{{\n group.label\n }}</tedi-dropdown-item-value-label>\n </tedi-dropdown-item-value>\n </li>\n } @else {\n <li class=\"tedi-select__group-name\" role=\"presentation\">\n <span tedi-text color=\"tertiary\">\n {{ group.label }}\n </span>\n </li>\n }\n }\n\n @for (option of group.options; track option.value; let i = $index) {\n <li\n class=\"tedi-dropdown-item\"\n [class.tedi-dropdown-item--selected]=\"\n !allowMultiple() && isOptionSelected(option.value)\n \"\n [class.tedi-dropdown-item--disabled]=\"option.disabled\"\n [class.tedi-dropdown-item--custom]=\"optionTemplate()\"\n [cdkOption]=\"option.value\"\n [cdkOptionDisabled]=\"option.disabled\"\n >\n @if (optionTemplate(); as tpl) {\n <ng-container\n [ngTemplateOutlet]=\"tpl.template\"\n [ngTemplateOutletContext]=\"getOptionContext(option, i)\"\n />\n } @else {\n <tedi-dropdown-item-value\n [type]=\"allowMultiple() ? 'checkbox' : 'default'\"\n [selected]=\"isOptionSelected(option.value)\"\n [disabled]=\"!!option.disabled\"\n >\n <tedi-dropdown-item-value-label>{{\n option.label\n }}</tedi-dropdown-item-value-label>\n </tedi-dropdown-item-value>\n }\n </li>\n }\n }\n } @else {\n <li class=\"tedi-dropdown-item tedi-select__no-options\">\n {{ noOptionsMessage() || (\"select.no-options\" | tediTranslate) }}\n </li>\n }\n </ul>\n }\n </div>\n</ng-template>\n", styles: ["li[tedi-dropdown-item],.tedi-dropdown-item{display:flex;gap:var(--dropdown-item-inner-spacing);align-items:center;width:100%;min-height:40px;padding:var(--dropdown-item-padding-y) var(--dropdown-item-padding-x);color:var(--dropdown-item-default-text);cursor:pointer;background:var(--dropdown-item-default-background)}li[tedi-dropdown-item]:hover:not(.tedi-dropdown-item--disabled,[aria-disabled=true],.tedi-dropdown-item--selected,[aria-selected=true]),.tedi-dropdown-item:hover:not(.tedi-dropdown-item--disabled,[aria-disabled=true],.tedi-dropdown-item--selected,[aria-selected=true]){color:var(--dropdown-item-hover-text);background:var(--dropdown-item-hover-background)}li[tedi-dropdown-item]:focus-visible,.tedi-dropdown-item:focus-visible{outline:var(--tedi-borders-02) solid var(--tedi-primary-500);outline-offset:calc(-1 * var(--tedi-borders-02))}li[tedi-dropdown-item][aria-selected=true],li[tedi-dropdown-item].tedi-dropdown-item--selected,.tedi-dropdown-item[aria-selected=true],.tedi-dropdown-item.tedi-dropdown-item--selected{color:var(--dropdown-item-active-text);background:var(--dropdown-item-active-background)}li[tedi-dropdown-item][aria-disabled=true],li[tedi-dropdown-item].tedi-dropdown-item--disabled,.tedi-dropdown-item[aria-disabled=true],.tedi-dropdown-item.tedi-dropdown-item--disabled{color:var(--general-text-disabled);cursor:not-allowed;background:var(--dropdown-item-disabled-background)}.tedi-input{--_field-padding-y: var(--form-field-padding-y-md-default);--_field-padding-x: var(--form-field-padding-x-md-default);--_field-height: var(--form-field-height);--_field-border-color: var(--form-input-border-default);--_field-background: var(--form-input-background-default);--_field-ring-color: transparent;background:var(--_field-background);border:var(--tedi-borders-01) solid var(--_field-border-color);border-radius:var(--form-field-radius);box-shadow:inset 0 0 0 var(--tedi-borders-01) var(--_field-ring-color);min-height:var(--_field-height);padding:calc(var(--_field-padding-y) - var(--tedi-borders-01)) var(--_field-padding-x);--_placeholder-color: var(--form-input-text-placeholder);--_search-input-reserve: 5rem;margin-bottom:0;font-family:var(--family-default);font-size:var(--body-regular-size);line-height:var(--body-regular-line-height);color:var(--form-input-text-filled)}.tedi-input:hover{--_field-border-color: var(--form-input-border-hover)}.tedi-input:focus,.tedi-input:active,.tedi-input.tedi-select__trigger--search-focused{border-color:var(--form-input-border-hover);box-shadow:inset 0 0 0 1px var(--form-input-border-hover)}.tedi-input--disabled{--_field-border-color: var(--form-input-border-disabled);--_field-background: var(--form-input-background-disabled);color:var(--form-input-text-disabled);pointer-events:none}.tedi-input--error:not(.tedi-input--disabled){--_field-border-color: var(--form-general-feedback-error-border)}.tedi-input--error:not(.tedi-input--disabled):focus,.tedi-input--error:not(.tedi-input--disabled):active,.tedi-input--error:not(.tedi-input--disabled).tedi-select__trigger--search-focused{border-color:var(--form-general-feedback-error-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-error-border)}.tedi-input--valid:not(.tedi-input--disabled){--_field-border-color: var(--form-general-feedback-success-border)}.tedi-input--valid:not(.tedi-input--disabled):focus,.tedi-input--valid:not(.tedi-input--disabled):active,.tedi-input--valid:not(.tedi-input--disabled).tedi-select__trigger--search-focused{border-color:var(--form-general-feedback-success-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-success-border)}.tedi-input--small{--_field-padding-y: var(--form-field-padding-y-sm);--_field-height: var(--form-field-height-sm)}.tedi-select{display:block;width:100%}.tedi-select .tedi-feedback-text{margin-top:var(--form-field-outer-spacing)}.tedi-select__trigger{display:flex;justify-content:space-between;width:100%;cursor:pointer}.tedi-select__label{flex-grow:1;overflow:hidden;text-align:left;cursor:default}.tedi-select__label--placeholder{color:var(--_placeholder-color);pointer-events:none}.tedi-select__clear{flex-grow:0;padding:0;margin:0;color:var(--button-close-text-default);cursor:pointer;background:none;border:none}.tedi-select__clear+.tedi-select__arrow{border-left:1px solid var(--general-border-primary)}.tedi-select__arrow{display:inline-flex;flex-grow:0;flex-shrink:0;align-items:center;padding-left:var(--form-field-inner-spacing);margin-left:var(--form-field-inner-spacing);color:inherit;cursor:default}.tedi-select__dropdown{display:flex;flex-direction:column;max-height:100%;margin-top:var(--form-field-outer-spacing);margin-bottom:var(--form-field-outer-spacing);background:var(--card-background-primary);border-radius:var(--card-radius-rounded);box-shadow:0 1px 5px 0 var(--tedi-alpha-20)}.tedi-select__trigger--searchable{cursor:text}.tedi-select__search-wrapper{position:relative;display:flex;flex-grow:1;flex-wrap:wrap;gap:var(--form-field-inner-spacing);align-items:center;min-height:var(--body-regular-line-height);overflow:hidden}.tedi-select__selected-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none}.tedi-select__search-input{position:absolute;top:0;left:0;width:100%;height:100%;padding:0;font-family:inherit;font-size:inherit;line-height:inherit;color:inherit;background:transparent;border:none}.tedi-select__search-input:focus{outline:none}.tedi-select__search-input::placeholder{color:var(--form-input-text-placeholder)}.tedi-select__search-input--hidden{color:transparent;caret-color:var(--form-input-text-filled)}.tedi-select__search-input:not(.tedi-select__search-input--hidden){position:relative;flex:1 1 var(--_search-input-reserve);width:auto;min-width:0;height:auto}.tedi-select__options{flex:1;min-height:0;padding:0;margin:0;overflow-y:auto;outline:none}.tedi-select__options .tedi-dropdown-item{outline:none}.tedi-select__options .tedi-dropdown-item.cdk-option-active:not(.tedi-dropdown-item--disabled),.tedi-select__options .tedi-dropdown-item.tedi-dropdown-item--active:not(.tedi-dropdown-item--disabled){outline:var(--tedi-borders-02) solid var(--tedi-primary-500);outline-offset:calc(-1 * var(--tedi-borders-02))}.tedi-select__options .tedi-dropdown-item[aria-selected=true],.tedi-select__options .tedi-dropdown-item.tedi-dropdown-item--selected{color:var(--dropdown-item-active-text);background:var(--dropdown-item-active-background)}.tedi-select__options .tedi-dropdown-item[aria-selected=true] .tedi-icon,.tedi-select__options .tedi-dropdown-item.tedi-dropdown-item--selected .tedi-icon{color:inherit}.tedi-select__options--virtual{display:flex;flex-direction:column;overflow:visible}.tedi-select__viewport{width:100%}.tedi-select__viewport .tedi-dropdown-item{box-sizing:border-box}.tedi-select__dropdown-item--label{display:none}.tedi-select__dropdown-item--custom-content:empty+.tedi-select__dropdown-item--label{display:block}.tedi-select__group-name{display:block;padding:var(--dropdown-group-label-padding-y) var(--dropdown-group-label-padding-x) var(--layout-grid-gutters-04);font-size:var(--heading-subtitle-small-size);font-weight:var(--heading-subtitle-small-weight);line-height:var(--heading-subtitle-small-line-height);text-transform:uppercase;letter-spacing:0}.tedi-select__group-name--selectable{padding:var(--dropdown-item-padding-y) var(--dropdown-item-padding-x);font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height);text-transform:none;letter-spacing:inherit}.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left)}.tedi-select--multiselect .tedi-select__trigger{align-items:flex-start}.tedi-select__multiselect-container{display:flex;flex:1;flex-wrap:wrap;gap:var(--form-field-inner-spacing);min-width:0}.tedi-select__multiselect-container--single-row{flex-wrap:nowrap}.tedi-select__multiselect-container--single-row .tedi-select__multiselect-tags{display:flex;flex:0 0 auto;gap:var(--form-field-inner-spacing);min-width:0;overflow:hidden}.tedi-select__multiselect-container--single-row .tedi-tag{flex-shrink:0}.tedi-select__multiselect-container--single-row .tedi-tag__content{white-space:nowrap}.tedi-select__multiselect-container--single-row .tedi-select__multiselect-counter{flex-shrink:0}.tedi-select__multiselect-container--single-row.tedi-select__multiselect-container--ellipsis .tedi-select__multiselect-tags{flex:0 1 auto}.tedi-select__no-options{color:var(--general-text-tertiary);cursor:default}.tedi-select__no-options:hover{color:var(--general-text-tertiary);background:var(--dropdown-item-default-background)}.tedi-select__dropdown:has(.tedi-select__options--swatch-grid){width:fit-content}.tedi-select__options--swatch-grid{--tedi-swatch-size: 24px;--tedi-swatch-gap: var(--layout-grid-gutters-04);--tedi-swatch-columns: 11;display:grid;grid-template-columns:repeat(auto-fit,var(--tedi-swatch-size));gap:var(--tedi-swatch-gap);max-width:calc(var(--tedi-swatch-columns) * (var(--tedi-swatch-size) + var(--tedi-swatch-gap)));padding:var(--dropdown-body-padding-y) var(--dropdown-body-padding-x)}.tedi-select__options--swatch-grid .tedi-dropdown-item{display:flex;align-items:center;justify-content:center;width:var(--tedi-swatch-size);height:var(--tedi-swatch-size);min-height:auto;padding:var(--layout-grid-gutters-02);color:inherit;background:transparent;border-radius:var(--card-radius-rounded)}.tedi-select__options--swatch-grid .tedi-dropdown-item.cdk-option-active:not(.tedi-dropdown-item--disabled){outline-offset:0}.tedi-select__options--swatch-grid .tedi-dropdown-item[aria-selected=true],.tedi-select__options--swatch-grid .tedi-dropdown-item.tedi-dropdown-item--selected{color:inherit;background:transparent;border:var(--tedi-borders-02) solid var(--card-border-selected)}.tedi-select__options--swatch-grid .tedi-dropdown-item:hover:not(.tedi-dropdown-item--disabled){background:transparent}\n"] }]
12605
- }], ctorParameters: () => [], propDecorators: { inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], tooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltip", required: false }] }], ariaLabelledby: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabelledby", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], clearable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearable", required: false }] }], dropdownWidthRef: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownWidthRef", required: false }] }], dropdownAlign: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownAlign", required: false }] }], feedbackText: [{ type: i0.Input, args: [{ isSignal: true, alias: "feedbackText", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], bindLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "bindLabel", required: false }] }], bindValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "bindValue", required: false }] }], allowMultiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowMultiple", required: false }] }], groupBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupBy", required: false }] }], showSelectAll: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSelectAll", required: false }] }], selectableGroups: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectableGroups", required: false }] }], isTagRemovable: [{ type: i0.Input, args: [{ isSignal: true, alias: "isTagRemovable", required: false }] }], multiRow: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiRow", required: false }] }], tagEllipsis: [{ type: i0.Input, args: [{ isSignal: true, alias: "tagEllipsis", required: false }] }], ellipsis: [{ type: i0.Input, args: [{ isSignal: true, alias: "ellipsis", required: false }] }], compareWith: [{ type: i0.Input, args: [{ isSignal: true, alias: "compareWith", required: false }] }], disabledKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledKey", required: false }] }], noOptionsMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "noOptionsMessage", required: false }] }], maxDropdownHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxDropdownHeight", required: false }] }], hideOnScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideOnScroll", required: false }] }], dropdownType: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownType", required: false }] }], virtualScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScroll", required: false }] }], virtualItemSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualItemSize", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], searchFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchFn", required: false }] }], clearSearchOnSelect: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearSearchOnSelect", required: false }] }], selectionChange: [{ type: i0.Output, args: ["selectionChange"] }], searchChange: [{ type: i0.Output, args: ["searchChange"] }], opened: [{ type: i0.Output, args: ["opened"] }], closed: [{ type: i0.Output, args: ["closed"] }], cleared: [{ type: i0.Output, args: ["cleared"] }], listboxRef: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkListbox), { ...{ read: ElementRef }, isSignal: true }] }], cdkListboxRef: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkListbox), { isSignal: true }] }], viewport: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkVirtualScrollViewport), { isSignal: true }] }], virtualListboxRef: [{ type: i0.ViewChild, args: ["virtualListbox", { isSignal: true }] }], connectedOverlay: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkConnectedOverlay), { isSignal: true }] }], triggerRef: [{ type: i0.ViewChild, args: ["trigger", { ...{ read: ElementRef }, isSignal: true }] }], searchInputRef: [{ type: i0.ViewChild, args: ["searchInput", { isSignal: true }] }], multiselectContainerRef: [{ type: i0.ViewChild, args: ["multiselectContainer", { isSignal: true }] }], tagRefs: [{ type: i0.ViewChildren, args: ["tagElement", { ...{ read: ElementRef }, isSignal: true }] }], optionTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SelectOptionTemplateDirective), { isSignal: true }] }], valueTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SelectValueTemplateDirective), { isSignal: true }] }], tooltipTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SelectTooltipTemplateDirective), { isSignal: true }] }], onWindowResize: [{
13571
+ }], ctorParameters: () => [], propDecorators: { inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], tooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltip", required: false }] }], ariaLabelledby: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabelledby", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], clearable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearable", required: false }] }], dropdownWidthRef: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownWidthRef", required: false }] }], dropdownAlign: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownAlign", required: false }] }], feedbackText: [{ type: i0.Input, args: [{ isSignal: true, alias: "feedbackText", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], bindLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "bindLabel", required: false }] }], bindValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "bindValue", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], allowMultiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowMultiple", required: false }] }], groupBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupBy", required: false }] }], showSelectAll: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSelectAll", required: false }] }], selectableGroups: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectableGroups", required: false }] }], isTagRemovable: [{ type: i0.Input, args: [{ isSignal: true, alias: "isTagRemovable", required: false }] }], multiRow: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiRow", required: false }] }], tagEllipsis: [{ type: i0.Input, args: [{ isSignal: true, alias: "tagEllipsis", required: false }] }], ellipsis: [{ type: i0.Input, args: [{ isSignal: true, alias: "ellipsis", required: false }] }], compareWith: [{ type: i0.Input, args: [{ isSignal: true, alias: "compareWith", required: false }] }], disabledKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledKey", required: false }] }], noOptionsMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "noOptionsMessage", required: false }] }], maxDropdownHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxDropdownHeight", required: false }] }], hideOnScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideOnScroll", required: false }] }], dropdownType: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownType", required: false }] }], virtualScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScroll", required: false }] }], virtualItemSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualItemSize", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], searchFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchFn", required: false }] }], clearSearchOnSelect: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearSearchOnSelect", required: false }] }], selectionChange: [{ type: i0.Output, args: ["selectionChange"] }], searchChange: [{ type: i0.Output, args: ["searchChange"] }], opened: [{ type: i0.Output, args: ["opened"] }], closed: [{ type: i0.Output, args: ["closed"] }], cleared: [{ type: i0.Output, args: ["cleared"] }], listboxRef: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkListbox), { ...{ read: ElementRef }, isSignal: true }] }], cdkListboxRef: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkListbox), { isSignal: true }] }], viewport: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkVirtualScrollViewport), { isSignal: true }] }], virtualListboxRef: [{ type: i0.ViewChild, args: ["virtualListbox", { isSignal: true }] }], connectedOverlay: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkConnectedOverlay), { isSignal: true }] }], triggerRef: [{ type: i0.ViewChild, args: ["trigger", { ...{ read: ElementRef }, isSignal: true }] }], searchInputRef: [{ type: i0.ViewChild, args: ["searchInput", { isSignal: true }] }], multiselectContainerRef: [{ type: i0.ViewChild, args: ["multiselectContainer", { isSignal: true }] }], tagRefs: [{ type: i0.ViewChildren, args: ["tagElement", { ...{ read: ElementRef }, isSignal: true }] }], optionTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SelectOptionTemplateDirective), { isSignal: true }] }], valueTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SelectValueTemplateDirective), { isSignal: true }] }], tooltipTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SelectTooltipTemplateDirective), { isSignal: true }] }], onWindowResize: [{
12606
13572
  type: HostListener,
12607
13573
  args: ["window:resize"]
12608
13574
  }], onDocumentClick: [{
@@ -13816,7 +14782,7 @@ class TimePickerModalComponent {
13816
14782
  form.requestSubmit();
13817
14783
  };
13818
14784
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: TimePickerModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13819
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.24", type: TimePickerModalComponent, isStandalone: true, selector: "tedi-time-picker-modal", ngImport: i0, template: "<form class=\"tedi-time-picker-modal__form\" (submit)=\"onSubmit($event)\">\n <tedi-modal class=\"tedi-time-picker-modal\">\n <tedi-modal-header>\n <h2>{{ \"time-field.modal-title\" | tediTranslate }}</h2>\n </tedi-modal-header>\n <tedi-modal-content class=\"tedi-time-picker-modal__content\">\n <tedi-time-picker\n [value]=\"draft()\"\n [variant]=\"data.variant\"\n [timeSlots]=\"data.timeSlots\"\n [columns]=\"data.columns\"\n [showSlotIndicator]=\"data.showSlotIndicator\"\n [minuteStep]=\"data.minuteStep\"\n (valueChange)=\"draft.set($event)\"\n />\n </tedi-modal-content>\n <tedi-modal-footer>\n <button tedi-button type=\"button\" variant=\"secondary\" (click)=\"cancel()\">\n {{ \"time-field.cancel\" | tediTranslate }}\n </button>\n <button tedi-button type=\"submit\">\n {{ \"time-field.confirm\" | tediTranslate }}\n </button>\n </tedi-modal-footer>\n </tedi-modal>\n</form>\n", styles: [".tedi-time-picker-modal{--_tedi-modal-body-padding: 0}.tedi-time-picker-modal .tedi-time-picker{width:100%;--tedi-time-picker-width: 100%}.tedi-time-picker-modal__content{display:flex;justify-content:center}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "[tedi-button]", inputs: ["variant", "size"] }, { kind: "component", type: ModalComponent, selector: "tedi-modal", inputs: ["open", "size", "width", "position", "closeOnBackdropClick"], outputs: ["openChange"] }, { kind: "component", type: ModalContentComponent, selector: "tedi-modal-content" }, { kind: "component", type: ModalFooterComponent, selector: "tedi-modal-footer" }, { kind: "component", type: ModalHeaderComponent, selector: "tedi-modal-header", inputs: ["showClose", "closeButtonSize"] }, { kind: "component", type: TimePickerComponent, selector: "tedi-time-picker", inputs: ["value", "variant", "timeSlots", "columns", "showSlotIndicator", "minuteStep", "disabled", "border", "trapFocus"], outputs: ["valueChange", "closeRequested"] }, { kind: "pipe", type: TediTranslationPipe, name: "tediTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
14785
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.24", type: TimePickerModalComponent, isStandalone: true, selector: "tedi-time-picker-modal", ngImport: i0, template: "<form class=\"tedi-time-picker-modal__form\" (submit)=\"onSubmit($event)\">\n <tedi-modal class=\"tedi-time-picker-modal\">\n <tedi-modal-header>\n <h2>{{ \"time-field.modal-title\" | tediTranslate }}</h2>\n </tedi-modal-header>\n <tedi-modal-content class=\"tedi-time-picker-modal__content\">\n <tedi-time-picker\n [value]=\"draft()\"\n [variant]=\"data.variant\"\n [timeSlots]=\"data.timeSlots\"\n [columns]=\"data.columns\"\n [showSlotIndicator]=\"data.showSlotIndicator\"\n [minuteStep]=\"data.minuteStep\"\n (valueChange)=\"draft.set($event)\"\n />\n </tedi-modal-content>\n <tedi-modal-footer>\n <button tedi-button type=\"button\" variant=\"secondary\" (click)=\"cancel()\">\n {{ \"time-field.cancel\" | tediTranslate }}\n </button>\n <button tedi-button type=\"submit\">\n {{ \"time-field.confirm\" | tediTranslate }}\n </button>\n </tedi-modal-footer>\n </tedi-modal>\n</form>\n", styles: [".tedi-time-picker-modal{--_tedi-modal-body-padding: 0}.tedi-time-picker-modal .tedi-time-picker{width:100%;--tedi-time-picker-width: 100%}.tedi-time-picker-modal__content{display:flex;justify-content:center}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "[tedi-button]", inputs: ["variant", "size"] }, { kind: "component", type: ModalComponent, selector: "tedi-modal", inputs: ["open", "size", "width", "position", "closeOnBackdropClick", "ariaLabel", "ariaLabelledBy"], outputs: ["openChange"] }, { kind: "component", type: ModalContentComponent, selector: "tedi-modal-content" }, { kind: "component", type: ModalFooterComponent, selector: "tedi-modal-footer" }, { kind: "component", type: ModalHeaderComponent, selector: "tedi-modal-header", inputs: ["showClose", "closeButtonSize"] }, { kind: "component", type: TimePickerComponent, selector: "tedi-time-picker", inputs: ["value", "variant", "timeSlots", "columns", "showSlotIndicator", "minuteStep", "disabled", "border", "trapFocus"], outputs: ["valueChange", "closeRequested"] }, { kind: "pipe", type: TediTranslationPipe, name: "tediTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
13820
14786
  }
13821
14787
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: TimePickerModalComponent, decorators: [{
13822
14788
  type: Component,
@@ -14895,7 +15861,7 @@ class PaginationOptionPickerModalComponent {
14895
15861
  this.modalRef.close(value);
14896
15862
  }
14897
15863
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: PaginationOptionPickerModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14898
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: PaginationOptionPickerModalComponent, isStandalone: true, selector: "tedi-pagination-option-picker-modal", host: { classAttribute: "tedi-pagination-option-picker-modal" }, viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true, isSignal: true }], ngImport: i0, template: "<tedi-modal>\n <tedi-modal-header closeButtonSize=\"small\">\n @if (data.title) {\n <h2>{{ data.title }}</h2>\n }\n </tedi-modal-header>\n <tedi-modal-content>\n <cdk-virtual-scroll-viewport\n class=\"tedi-pagination-option-picker-modal__viewport\"\n [class.tedi-pagination-option-picker-modal__viewport--ready]=\"ready()\"\n [itemSize]=\"itemSize\"\n [style.--_tedi-pagination-option-picker-count]=\"data.options.length\"\n minBufferPx=\"240\"\n maxBufferPx=\"480\"\n >\n <button\n *cdkVirtualFor=\"\n let option of data.options;\n trackBy: trackByValue;\n let last = last\n \"\n type=\"button\"\n class=\"tedi-pagination-option-picker-modal__item\"\n [class.tedi-pagination-option-picker-modal__item--selected]=\"\n option.value === data.selectedValue\n \"\n [class.tedi-pagination-option-picker-modal__item--last]=\"last\"\n [attr.aria-current]=\"\n option.value === data.selectedValue ? 'true' : null\n \"\n [attr.aria-label]=\"option.ariaLabel\"\n (click)=\"selectValue(option.value)\"\n >\n <span\n class=\"tedi-pagination-option-picker-modal__radio\"\n [class.tedi-pagination-option-picker-modal__radio--selected]=\"\n option.value === data.selectedValue\n \"\n aria-hidden=\"true\"\n ></span>\n <span class=\"tedi-pagination-option-picker-modal__label\">{{\n option.label\n }}</span>\n </button>\n </cdk-virtual-scroll-viewport>\n </tedi-modal-content>\n</tedi-modal>\n", styles: [".tedi-pagination-option-picker-modal{--_tedi-modal-body-padding: 0;--_tedi-pagination-option-picker-item-size: 48px}.tedi-pagination-option-picker-modal .tedi-modal-content{overflow:hidden}.tedi-pagination-option-picker-modal__viewport{display:block;visibility:hidden;width:100%;height:min(var(--_tedi-pagination-option-picker-count, 1) * var(--_tedi-pagination-option-picker-item-size),95dvh)}.tedi-pagination-option-picker-modal__viewport--ready{visibility:visible}.tedi-pagination-option-picker-modal__item{box-sizing:border-box;display:flex;gap:var(--form-checkbox-radio-inner-spacing);align-items:center;width:100%;height:var(--_tedi-pagination-option-picker-item-size);padding:var(--dropdown-item-padding-y) var(--dropdown-item-padding-x);font-family:var(--family-default);font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height);color:var(--general-text-primary);text-align:left;cursor:pointer;background:var(--dropdown-item-default-background);border:none;border-bottom:var(--tedi-borders-01) solid var(--general-border-primary)}.tedi-pagination-option-picker-modal__item:hover{background:var(--general-surface-tertiary)}.tedi-pagination-option-picker-modal__item:focus-visible{outline:var(--tedi-borders-02) solid var(--tedi-primary-500);outline-offset:calc(var(--tedi-borders-02) * -1)}.tedi-pagination-option-picker-modal__item--selected{color:var(--general-text-white);background:var(--dropdown-item-active-background)}.tedi-pagination-option-picker-modal__item--selected:hover{background:var(--dropdown-item-active-background)}.tedi-pagination-option-picker-modal__item--last{border-bottom:none}.tedi-pagination-option-picker-modal__radio{position:relative;flex-shrink:0;width:var(--form-checkbox-radio-size-responsive);height:var(--form-checkbox-radio-size-responsive);background:var(--form-checkbox-radio-default-background-default);border:var(--tedi-borders-01) solid var(--form-checkbox-radio-default-border-default);border-radius:var(--form-checkbox-radio-indicator-radius-radio)}.tedi-pagination-option-picker-modal__radio--selected{background:var(--dropdown-item-active-background);border-color:var(--general-text-white)}.tedi-pagination-option-picker-modal__radio--selected:after{position:absolute;inset:4px;content:\"\";background:var(--general-text-white);border-radius:50%}.tedi-pagination-option-picker-modal__label{flex:1}\n"], dependencies: [{ kind: "component", type: ModalComponent, selector: "tedi-modal", inputs: ["open", "size", "width", "position", "closeOnBackdropClick"], outputs: ["openChange"] }, { kind: "component", type: ModalHeaderComponent, selector: "tedi-modal-header", inputs: ["showClose", "closeButtonSize"] }, { kind: "component", type: ModalContentComponent, selector: "tedi-modal-content" }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i1.ɵɵCdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i1.ɵɵCdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i1.ɵɵCdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
15864
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: PaginationOptionPickerModalComponent, isStandalone: true, selector: "tedi-pagination-option-picker-modal", host: { classAttribute: "tedi-pagination-option-picker-modal" }, viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true, isSignal: true }], ngImport: i0, template: "<tedi-modal>\n <tedi-modal-header closeButtonSize=\"small\">\n @if (data.title) {\n <h2>{{ data.title }}</h2>\n }\n </tedi-modal-header>\n <tedi-modal-content>\n <cdk-virtual-scroll-viewport\n class=\"tedi-pagination-option-picker-modal__viewport\"\n [class.tedi-pagination-option-picker-modal__viewport--ready]=\"ready()\"\n [itemSize]=\"itemSize\"\n [style.--_tedi-pagination-option-picker-count]=\"data.options.length\"\n minBufferPx=\"240\"\n maxBufferPx=\"480\"\n >\n <button\n *cdkVirtualFor=\"\n let option of data.options;\n trackBy: trackByValue;\n let last = last\n \"\n type=\"button\"\n class=\"tedi-pagination-option-picker-modal__item\"\n [class.tedi-pagination-option-picker-modal__item--selected]=\"\n option.value === data.selectedValue\n \"\n [class.tedi-pagination-option-picker-modal__item--last]=\"last\"\n [attr.aria-current]=\"\n option.value === data.selectedValue ? 'true' : null\n \"\n [attr.aria-label]=\"option.ariaLabel\"\n (click)=\"selectValue(option.value)\"\n >\n <span\n class=\"tedi-pagination-option-picker-modal__radio\"\n [class.tedi-pagination-option-picker-modal__radio--selected]=\"\n option.value === data.selectedValue\n \"\n aria-hidden=\"true\"\n ></span>\n <span class=\"tedi-pagination-option-picker-modal__label\">{{\n option.label\n }}</span>\n </button>\n </cdk-virtual-scroll-viewport>\n </tedi-modal-content>\n</tedi-modal>\n", styles: [".tedi-pagination-option-picker-modal{--_tedi-modal-body-padding: 0;--_tedi-pagination-option-picker-item-size: 48px}.tedi-pagination-option-picker-modal .tedi-modal-content{overflow:hidden}.tedi-pagination-option-picker-modal__viewport{display:block;visibility:hidden;width:100%;height:min(var(--_tedi-pagination-option-picker-count, 1) * var(--_tedi-pagination-option-picker-item-size),95dvh)}.tedi-pagination-option-picker-modal__viewport--ready{visibility:visible}.tedi-pagination-option-picker-modal__item{box-sizing:border-box;display:flex;gap:var(--form-checkbox-radio-inner-spacing);align-items:center;width:100%;height:var(--_tedi-pagination-option-picker-item-size);padding:var(--dropdown-item-padding-y) var(--dropdown-item-padding-x);font-family:var(--family-default);font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height);color:var(--general-text-primary);text-align:left;cursor:pointer;background:var(--dropdown-item-default-background);border:none;border-bottom:var(--tedi-borders-01) solid var(--general-border-primary)}.tedi-pagination-option-picker-modal__item:hover{background:var(--general-surface-tertiary)}.tedi-pagination-option-picker-modal__item:focus-visible{outline:var(--tedi-borders-02) solid var(--tedi-primary-500);outline-offset:calc(var(--tedi-borders-02) * -1)}.tedi-pagination-option-picker-modal__item--selected{color:var(--general-text-white);background:var(--dropdown-item-active-background)}.tedi-pagination-option-picker-modal__item--selected:hover{background:var(--dropdown-item-active-background)}.tedi-pagination-option-picker-modal__item--last{border-bottom:none}.tedi-pagination-option-picker-modal__radio{position:relative;flex-shrink:0;width:var(--form-checkbox-radio-size-responsive);height:var(--form-checkbox-radio-size-responsive);background:var(--form-checkbox-radio-default-background-default);border:var(--tedi-borders-01) solid var(--form-checkbox-radio-default-border-default);border-radius:var(--form-checkbox-radio-indicator-radius-radio)}.tedi-pagination-option-picker-modal__radio--selected{background:var(--dropdown-item-active-background);border-color:var(--general-text-white)}.tedi-pagination-option-picker-modal__radio--selected:after{position:absolute;inset:4px;content:\"\";background:var(--general-text-white);border-radius:50%}.tedi-pagination-option-picker-modal__label{flex:1}\n"], dependencies: [{ kind: "component", type: ModalComponent, selector: "tedi-modal", inputs: ["open", "size", "width", "position", "closeOnBackdropClick", "ariaLabel", "ariaLabelledBy"], outputs: ["openChange"] }, { kind: "component", type: ModalHeaderComponent, selector: "tedi-modal-header", inputs: ["showClose", "closeButtonSize"] }, { kind: "component", type: ModalContentComponent, selector: "tedi-modal-content" }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i1.ɵɵCdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i1.ɵɵCdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i1.ɵɵCdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
14899
15865
  }
14900
15866
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: PaginationOptionPickerModalComponent, decorators: [{
14901
15867
  type: Component,
@@ -15228,7 +16194,7 @@ class PaginationComponent {
15228
16194
  this.page.set(nextPage);
15229
16195
  }
15230
16196
  handlePageSizeChange(value) {
15231
- if (value == null || value === this.pageSize())
16197
+ if (typeof value !== "number" || value === this.pageSize())
15232
16198
  return;
15233
16199
  // `pageSize` is a model, so setting it emits the `pageSizeChange` output.
15234
16200
  this.pageSize.set(value);
@@ -15295,14 +16261,14 @@ class PaginationComponent {
15295
16261
  });
15296
16262
  }
15297
16263
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
15298
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: PaginationComponent, isStandalone: true, selector: "tedi-pagination", inputs: { pageCount: { classPropertyName: "pageCount", publicName: "pageCount", isSignal: true, isRequired: true, transformFunction: null }, page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: false, transformFunction: null }, totalItems: { classPropertyName: "totalItems", publicName: "totalItems", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, boundaryCount: { classPropertyName: "boundaryCount", publicName: "boundaryCount", isSignal: true, isRequired: false, transformFunction: null }, siblingCount: { classPropertyName: "siblingCount", publicName: "siblingCount", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, background: { classPropertyName: "background", publicName: "background", isSignal: true, isRequired: false, transformFunction: null }, dividerPosition: { classPropertyName: "dividerPosition", publicName: "dividerPosition", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, hideResults: { classPropertyName: "hideResults", publicName: "hideResults", isSignal: true, isRequired: false, transformFunction: null }, hidePageSize: { classPropertyName: "hidePageSize", publicName: "hidePageSize", isSignal: true, isRequired: false, transformFunction: null }, hidePager: { classPropertyName: "hidePager", publicName: "hidePager", isSignal: true, isRequired: false, transformFunction: null }, hideArrows: { classPropertyName: "hideArrows", publicName: "hideArrows", isSignal: true, isRequired: false, transformFunction: null }, disableArrowsAtBoundary: { classPropertyName: "disableArrowsAtBoundary", publicName: "disableArrowsAtBoundary", isSignal: true, isRequired: false, transformFunction: null }, arrowVariant: { classPropertyName: "arrowVariant", publicName: "arrowVariant", isSignal: true, isRequired: false, transformFunction: null }, showArrowLabels: { classPropertyName: "showArrowLabels", publicName: "showArrowLabels", isSignal: true, isRequired: false, transformFunction: null }, previousIcon: { classPropertyName: "previousIcon", publicName: "previousIcon", isSignal: true, isRequired: false, transformFunction: null }, nextIcon: { classPropertyName: "nextIcon", publicName: "nextIcon", isSignal: true, isRequired: false, transformFunction: null }, showModalTitle: { classPropertyName: "showModalTitle", publicName: "showModalTitle", isSignal: true, isRequired: false, transformFunction: null }, xs: { classPropertyName: "xs", publicName: "xs", isSignal: true, isRequired: false, transformFunction: null }, sm: { classPropertyName: "sm", publicName: "sm", isSignal: true, isRequired: false, transformFunction: null }, md: { classPropertyName: "md", publicName: "md", isSignal: true, isRequired: false, transformFunction: null }, lg: { classPropertyName: "lg", publicName: "lg", isSignal: true, isRequired: false, transformFunction: null }, xl: { classPropertyName: "xl", publicName: "xl", isSignal: true, isRequired: false, transformFunction: null }, xxl: { classPropertyName: "xxl", publicName: "xxl", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { page: "pageChange", pageSize: "pageSizeChange" }, host: { attributes: { "data-name": "tedi-pagination" }, properties: { "class": "hostClasses()" } }, queries: [{ propertyName: "customResults", first: true, predicate: TediPaginationResultsDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<span\n class=\"tedi-pagination__status\"\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n>\n {{ statusText() }}\n</span>\n\n<div class=\"tedi-pagination__slot-start\">\n @if (showResults()) {\n @if (customResults()) {\n <ng-content select=\"[tediPaginationResults]\" />\n } @else {\n <span class=\"tedi-pagination__results\">\n {{ mergedLabels().results(totalItems()!) }}\n </span>\n }\n }\n</div>\n\n<div class=\"tedi-pagination__slot-center\">\n @if (showPager()) {\n <nav\n class=\"tedi-pagination__nav\"\n [attr.aria-label]=\"mergedLabels().ariaLabel\"\n >\n @if (showPrevious()) {\n <button\n tedi-button\n type=\"button\"\n size=\"small\"\n [variant]=\"resolvedArrowVariant()\"\n class=\"tedi-pagination__nav-button tedi-pagination__nav-button--previous\"\n [attr.aria-label]=\"\n resolvedShowArrowLabels() ? null : mergedLabels().previous\n \"\n [disabled]=\"previousItem().disabled\"\n (click)=\"handlePageChange(previousItem().page)\"\n >\n <tedi-icon [name]=\"previousIcon()\" />\n @if (resolvedShowArrowLabels()) {\n <span>{{ mergedLabels().previous }}</span>\n }\n </button>\n }\n\n @if (!useCompactPicker()) {\n <ul class=\"tedi-pagination__list\">\n @for (item of pageItems(); track $index) {\n @if (item.type === \"ellipsis\") {\n <li\n class=\"tedi-pagination__item tedi-pagination__item--ellipsis\"\n aria-hidden=\"true\"\n >\n \u2026\n </li>\n } @else {\n <li class=\"tedi-pagination__item\">\n <button\n type=\"button\"\n class=\"tedi-pagination__page\"\n [class.tedi-pagination__page--selected]=\"item.selected\"\n [attr.aria-label]=\"\n item.selected\n ? mergedLabels().currentPageAriaLabel(item.page!)\n : mergedLabels().pageAriaLabel(item.page!)\n \"\n [attr.aria-current]=\"item.selected ? 'page' : null\"\n (click)=\"handlePageChange(item.page)\"\n >\n {{ item.page }}\n </button>\n </li>\n }\n }\n </ul>\n }\n @if (useCompactPicker()) {\n <button\n type=\"button\"\n class=\"tedi-pagination__mobile-trigger\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"isMobileModalOpen()\"\n [attr.aria-label]=\"mobileTriggerAriaLabel()\"\n (click)=\"openMobilePicker()\"\n >\n <span\n class=\"tedi-pagination__mobile-trigger-label\"\n aria-hidden=\"true\"\n >\n <strong>{{ currentPage() }}</strong>\n <span>/</span>\n <span>{{ pageCount() }}</span>\n </span>\n <tedi-icon name=\"arrow_drop_down\" />\n </button>\n }\n\n @if (showNext()) {\n <button\n tedi-button\n type=\"button\"\n size=\"small\"\n [variant]=\"resolvedArrowVariant()\"\n class=\"tedi-pagination__nav-button tedi-pagination__nav-button--next\"\n [attr.aria-label]=\"\n resolvedShowArrowLabels() ? null : mergedLabels().next\n \"\n [disabled]=\"nextItem().disabled\"\n (click)=\"handlePageChange(nextItem().page)\"\n >\n @if (resolvedShowArrowLabels()) {\n <span>{{ mergedLabels().next }}</span>\n }\n <tedi-icon [name]=\"nextIcon()\" />\n </button>\n }\n </nav>\n }\n</div>\n\n<div class=\"tedi-pagination__slot-end\">\n @if (showPageSizeSelect()) {\n <div class=\"tedi-pagination__page-size\">\n @if (useCompactPicker()) {\n <span class=\"tedi-pagination__page-size-label\">\n {{ mergedLabels().pageSize }}\n </span>\n <button\n type=\"button\"\n class=\"tedi-pagination__page-size-trigger\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"isPageSizeModalOpen()\"\n [attr.aria-label]=\"mobilePageSizeAriaLabel()\"\n (click)=\"openPageSizePicker()\"\n >\n <span aria-hidden=\"true\">{{ selectedPageSizeLabel() }}</span>\n <tedi-icon name=\"arrow_drop_down\" />\n </button>\n } @else {\n <span class=\"tedi-pagination__page-size-label\" [id]=\"pageSizeLabelId\">\n {{ mergedLabels().pageSize }}\n </span>\n <tedi-select\n class=\"tedi-pagination__page-size-select\"\n [inputId]=\"pageSizeInputId\"\n [ariaLabelledby]=\"pageSizeLabelId\"\n size=\"small\"\n [options]=\"pageSizeSelectOptions()\"\n bindLabel=\"label\"\n bindValue=\"value\"\n dropdownAlign=\"end\"\n [ngModel]=\"pageSize()\"\n (ngModelChange)=\"handlePageSizeChange($event)\"\n />\n }\n </div>\n }\n</div>\n", styles: [".tedi-pagination{display:flex;flex-flow:row wrap;gap:var(--layout-grid-gutters-16);align-items:center;justify-content:center;width:100%;padding:var(--pagination-padding-y) var(--pagination-padding-x)}@media(max-width:35.98rem){.tedi-pagination{flex-direction:column;gap:var(--layout-grid-gutters-08)}}.tedi-pagination--align-left .tedi-pagination__slot-start,.tedi-pagination--align-left .tedi-pagination__slot-end,.tedi-pagination--align-right .tedi-pagination__slot-start,.tedi-pagination--align-right .tedi-pagination__slot-end{flex:0 0 auto;justify-content:flex-start}.tedi-pagination--align-left{justify-content:flex-start}@media(max-width:35.98rem){.tedi-pagination--align-left{align-items:flex-start}}.tedi-pagination--align-right{justify-content:flex-end}@media(max-width:35.98rem){.tedi-pagination--align-right{align-items:flex-end}}.tedi-pagination--bg-white{background:var(--general-surface-primary)}.tedi-pagination--bg-transparent{background:transparent}.tedi-pagination--divider-top:not(.tedi-pagination--bg-transparent){border-top:var(--tedi-borders-01) solid var(--general-border-secondary)}.tedi-pagination--divider-bottom:not(.tedi-pagination--bg-transparent){border-bottom:var(--tedi-borders-01) solid var(--general-border-secondary)}.tedi-pagination--no-pager .tedi-pagination__slot-center,.tedi-pagination--align-left.tedi-pagination--no-results .tedi-pagination__slot-start,.tedi-pagination--align-left.tedi-pagination--no-page-size .tedi-pagination__slot-end,.tedi-pagination--align-right.tedi-pagination--no-results .tedi-pagination__slot-start,.tedi-pagination--align-right.tedi-pagination--no-page-size .tedi-pagination__slot-end{display:none}.tedi-pagination__status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;white-space:nowrap;border:0;clip-path:inset(50%)}.tedi-pagination__slot-start{display:inline-flex;flex:1 1 0;align-items:center;justify-content:flex-start}.tedi-pagination__slot-center{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center}@media(max-width:35.98rem){.tedi-pagination__slot-center{align-self:stretch}}.tedi-pagination__slot-end{display:flex;flex:1 1 0;align-items:center;justify-content:flex-end}.tedi-pagination__results{flex:0 0 auto;font-family:var(--family-default);font-size:var(--body-small-regular-size);font-weight:var(--body-small-regular-weight);line-height:var(--body-small-regular-line-height);color:var(--general-text-secondary);white-space:nowrap}@media(max-width:47.98rem){.tedi-pagination__results{font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height)}}.tedi-pagination__nav{display:flex;gap:var(--layout-grid-gutters-08);align-items:center;justify-content:center}@media(max-width:47.98rem){.tedi-pagination__nav{display:grid;grid-template-columns:var(--button-sm-icon-size) auto var(--button-sm-icon-size)}}@media(max-width:35.98rem){.tedi-pagination__nav{grid-template-columns:1fr auto 1fr;width:100%}}@media(max-width:47.98rem){.tedi-pagination--arrow-labels .tedi-pagination__nav{display:flex}}.tedi-pagination__list{display:flex;flex-wrap:nowrap;gap:var(--layout-grid-gutters-08);align-items:center;padding:0;margin:0;list-style:none}.tedi-pagination__item{display:inline-flex;align-items:center;justify-content:center}.tedi-pagination__item--ellipsis{width:var(--pagination-button-size);height:var(--pagination-button-size);font-family:var(--family-default);font-size:var(--body-small-regular-size);line-height:var(--body-small-regular-line-height);color:var(--general-text-secondary);-webkit-user-select:none;user-select:none}.tedi-pagination__page{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:var(--pagination-button-size);height:var(--pagination-button-size);padding:0 var(--layout-grid-gutters-04);font-family:var(--family-default);font-size:var(--body-small-regular-size);font-weight:var(--body-small-regular-weight);line-height:var(--body-small-regular-line-height);color:var(--general-text-secondary);cursor:pointer;background:transparent;border:none;border-radius:var(--button-radius-default)}.tedi-pagination__page:before{position:absolute;inset:-4px;content:\"\"}.tedi-pagination__page:hover{color:var(--button-main-neutral-text-hover);background:var(--button-main-neutral-icon-only-background-hover)}.tedi-pagination__page:active{color:var(--button-main-neutral-text-active);background:var(--button-main-neutral-icon-only-background-active)}.tedi-pagination__page:focus-visible{color:var(--button-main-neutral-text-focus);outline:var(--tedi-borders-02) solid var(--tedi-primary-500);outline-offset:var(--tedi-borders-01)}.tedi-pagination__page--selected{color:var(--general-text-white);cursor:default;background:var(--general-surface-brand-secondary)}.tedi-pagination__page--selected:hover,.tedi-pagination__page--selected:active,.tedi-pagination__page--selected:focus-visible{color:var(--general-text-white);background:var(--general-surface-brand-secondary)}@media(max-width:47.98rem){.tedi-pagination__nav-button--previous{grid-column:1;justify-self:end}}@media(max-width:47.98rem){.tedi-pagination__nav-button--next{grid-column:3;justify-self:start}}.tedi-pagination__mobile-trigger{display:inline-flex;gap:var(--form-field-inner-spacing);align-items:center;justify-self:center;min-height:var(--form-field-height-sm);padding:var(--form-field-padding-y-sm) var(--form-field-padding-x-md-default);color:var(--form-input-text-filled);cursor:pointer;background:var(--form-input-background-default);border:var(--tedi-borders-01) solid var(--form-input-border-default);border-radius:var(--form-field-radius)}@media(max-width:47.98rem){.tedi-pagination__mobile-trigger{grid-column:2}}.tedi-pagination__mobile-trigger:focus-visible{outline:var(--tedi-borders-02) solid var(--tedi-primary-500);outline-offset:var(--tedi-borders-01)}.tedi-pagination__mobile-trigger-label{display:inline-flex;gap:var(--layout-grid-gutters-04);align-items:center;font-family:var(--family-default);font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height)}.tedi-pagination__mobile-trigger-label strong{font-weight:var(--body-bold-weight);color:var(--general-text-brand)}.tedi-pagination__page-size{display:flex;gap:var(--form-field-inner-spacing);align-items:center;justify-content:flex-end;min-width:0}@media(max-width:35.98rem){.tedi-pagination__page-size{flex-direction:column;gap:var(--layout-grid-gutters-04);align-items:center;justify-content:center}}@media(max-width:35.98rem){.tedi-pagination--align-left .tedi-pagination__page-size{align-items:flex-start}}@media(max-width:35.98rem){.tedi-pagination--align-right .tedi-pagination__page-size{align-items:flex-end}}.tedi-pagination__page-size-label{font-family:var(--family-default);font-size:var(--body-small-regular-size);font-weight:var(--body-small-regular-weight);line-height:var(--body-small-regular-line-height);color:var(--general-text-secondary);white-space:nowrap;cursor:default}@media(max-width:47.98rem){.tedi-pagination__page-size-label{font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height)}}.tedi-pagination__page-size-select.tedi-select{width:auto;min-width:96px}.tedi-pagination__page-size-trigger{display:inline-flex;gap:var(--form-field-inner-spacing);align-items:center;min-height:var(--form-field-height-sm);padding:var(--form-field-padding-y-sm) var(--form-field-padding-x-md-default);font-family:var(--family-default);font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height);color:var(--form-input-text-filled);cursor:pointer;background:var(--form-input-background-default);border:var(--tedi-borders-01) solid var(--form-input-border-default);border-radius:var(--form-field-radius)}.tedi-pagination__page-size-trigger:focus-visible{outline:var(--tedi-borders-02) solid var(--tedi-primary-500);outline-offset:var(--tedi-borders-01)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ButtonComponent, selector: "[tedi-button]", inputs: ["variant", "size"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "component", type: SelectComponent, selector: "tedi-select", inputs: ["inputId", "label", "tooltip", "ariaLabelledby", "ariaLabel", "required", "placeholder", "state", "size", "clearable", "dropdownWidthRef", "dropdownAlign", "feedbackText", "options", "bindLabel", "bindValue", "allowMultiple", "groupBy", "showSelectAll", "selectableGroups", "isTagRemovable", "multiRow", "tagEllipsis", "ellipsis", "compareWith", "disabledKey", "noOptionsMessage", "maxDropdownHeight", "hideOnScroll", "dropdownType", "virtualScroll", "virtualItemSize", "searchable", "searchFn", "clearSearchOnSelect"], outputs: ["selectionChange", "searchChange", "opened", "closed", "cleared"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
16264
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: PaginationComponent, isStandalone: true, selector: "tedi-pagination", inputs: { pageCount: { classPropertyName: "pageCount", publicName: "pageCount", isSignal: true, isRequired: true, transformFunction: null }, page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: false, transformFunction: null }, totalItems: { classPropertyName: "totalItems", publicName: "totalItems", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, boundaryCount: { classPropertyName: "boundaryCount", publicName: "boundaryCount", isSignal: true, isRequired: false, transformFunction: null }, siblingCount: { classPropertyName: "siblingCount", publicName: "siblingCount", isSignal: true, isRequired: false, transformFunction: null }, labels: { classPropertyName: "labels", publicName: "labels", isSignal: true, isRequired: false, transformFunction: null }, background: { classPropertyName: "background", publicName: "background", isSignal: true, isRequired: false, transformFunction: null }, dividerPosition: { classPropertyName: "dividerPosition", publicName: "dividerPosition", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, hideResults: { classPropertyName: "hideResults", publicName: "hideResults", isSignal: true, isRequired: false, transformFunction: null }, hidePageSize: { classPropertyName: "hidePageSize", publicName: "hidePageSize", isSignal: true, isRequired: false, transformFunction: null }, hidePager: { classPropertyName: "hidePager", publicName: "hidePager", isSignal: true, isRequired: false, transformFunction: null }, hideArrows: { classPropertyName: "hideArrows", publicName: "hideArrows", isSignal: true, isRequired: false, transformFunction: null }, disableArrowsAtBoundary: { classPropertyName: "disableArrowsAtBoundary", publicName: "disableArrowsAtBoundary", isSignal: true, isRequired: false, transformFunction: null }, arrowVariant: { classPropertyName: "arrowVariant", publicName: "arrowVariant", isSignal: true, isRequired: false, transformFunction: null }, showArrowLabels: { classPropertyName: "showArrowLabels", publicName: "showArrowLabels", isSignal: true, isRequired: false, transformFunction: null }, previousIcon: { classPropertyName: "previousIcon", publicName: "previousIcon", isSignal: true, isRequired: false, transformFunction: null }, nextIcon: { classPropertyName: "nextIcon", publicName: "nextIcon", isSignal: true, isRequired: false, transformFunction: null }, showModalTitle: { classPropertyName: "showModalTitle", publicName: "showModalTitle", isSignal: true, isRequired: false, transformFunction: null }, xs: { classPropertyName: "xs", publicName: "xs", isSignal: true, isRequired: false, transformFunction: null }, sm: { classPropertyName: "sm", publicName: "sm", isSignal: true, isRequired: false, transformFunction: null }, md: { classPropertyName: "md", publicName: "md", isSignal: true, isRequired: false, transformFunction: null }, lg: { classPropertyName: "lg", publicName: "lg", isSignal: true, isRequired: false, transformFunction: null }, xl: { classPropertyName: "xl", publicName: "xl", isSignal: true, isRequired: false, transformFunction: null }, xxl: { classPropertyName: "xxl", publicName: "xxl", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { page: "pageChange", pageSize: "pageSizeChange" }, host: { attributes: { "data-name": "tedi-pagination" }, properties: { "class": "hostClasses()" } }, queries: [{ propertyName: "customResults", first: true, predicate: TediPaginationResultsDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<span\n class=\"tedi-pagination__status\"\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n>\n {{ statusText() }}\n</span>\n\n<div class=\"tedi-pagination__slot-start\">\n @if (showResults()) {\n @if (customResults()) {\n <ng-content select=\"[tediPaginationResults]\" />\n } @else {\n <span class=\"tedi-pagination__results\">\n {{ mergedLabels().results(totalItems()!) }}\n </span>\n }\n }\n</div>\n\n<div class=\"tedi-pagination__slot-center\">\n @if (showPager()) {\n <nav\n class=\"tedi-pagination__nav\"\n [attr.aria-label]=\"mergedLabels().ariaLabel\"\n >\n @if (showPrevious()) {\n <button\n tedi-button\n type=\"button\"\n size=\"small\"\n [variant]=\"resolvedArrowVariant()\"\n class=\"tedi-pagination__nav-button tedi-pagination__nav-button--previous\"\n [attr.aria-label]=\"\n resolvedShowArrowLabels() ? null : mergedLabels().previous\n \"\n [disabled]=\"previousItem().disabled\"\n (click)=\"handlePageChange(previousItem().page)\"\n >\n <tedi-icon [name]=\"previousIcon()\" />\n @if (resolvedShowArrowLabels()) {\n <span>{{ mergedLabels().previous }}</span>\n }\n </button>\n }\n\n @if (!useCompactPicker()) {\n <ul class=\"tedi-pagination__list\">\n @for (item of pageItems(); track $index) {\n @if (item.type === \"ellipsis\") {\n <li\n class=\"tedi-pagination__item tedi-pagination__item--ellipsis\"\n aria-hidden=\"true\"\n >\n \u2026\n </li>\n } @else {\n <li class=\"tedi-pagination__item\">\n <button\n type=\"button\"\n class=\"tedi-pagination__page\"\n [class.tedi-pagination__page--selected]=\"item.selected\"\n [attr.aria-label]=\"\n item.selected\n ? mergedLabels().currentPageAriaLabel(item.page!)\n : mergedLabels().pageAriaLabel(item.page!)\n \"\n [attr.aria-current]=\"item.selected ? 'page' : null\"\n (click)=\"handlePageChange(item.page)\"\n >\n {{ item.page }}\n </button>\n </li>\n }\n }\n </ul>\n }\n @if (useCompactPicker()) {\n <button\n type=\"button\"\n class=\"tedi-pagination__mobile-trigger\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"isMobileModalOpen()\"\n [attr.aria-label]=\"mobileTriggerAriaLabel()\"\n (click)=\"openMobilePicker()\"\n >\n <span\n class=\"tedi-pagination__mobile-trigger-label\"\n aria-hidden=\"true\"\n >\n <strong>{{ currentPage() }}</strong>\n <span>/</span>\n <span>{{ pageCount() }}</span>\n </span>\n <tedi-icon name=\"arrow_drop_down\" />\n </button>\n }\n\n @if (showNext()) {\n <button\n tedi-button\n type=\"button\"\n size=\"small\"\n [variant]=\"resolvedArrowVariant()\"\n class=\"tedi-pagination__nav-button tedi-pagination__nav-button--next\"\n [attr.aria-label]=\"\n resolvedShowArrowLabels() ? null : mergedLabels().next\n \"\n [disabled]=\"nextItem().disabled\"\n (click)=\"handlePageChange(nextItem().page)\"\n >\n @if (resolvedShowArrowLabels()) {\n <span>{{ mergedLabels().next }}</span>\n }\n <tedi-icon [name]=\"nextIcon()\" />\n </button>\n }\n </nav>\n }\n</div>\n\n<div class=\"tedi-pagination__slot-end\">\n @if (showPageSizeSelect()) {\n <div class=\"tedi-pagination__page-size\">\n @if (useCompactPicker()) {\n <span class=\"tedi-pagination__page-size-label\">\n {{ mergedLabels().pageSize }}\n </span>\n <button\n type=\"button\"\n class=\"tedi-pagination__page-size-trigger\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"isPageSizeModalOpen()\"\n [attr.aria-label]=\"mobilePageSizeAriaLabel()\"\n (click)=\"openPageSizePicker()\"\n >\n <span aria-hidden=\"true\">{{ selectedPageSizeLabel() }}</span>\n <tedi-icon name=\"arrow_drop_down\" />\n </button>\n } @else {\n <span class=\"tedi-pagination__page-size-label\" [id]=\"pageSizeLabelId\">\n {{ mergedLabels().pageSize }}\n </span>\n <tedi-select\n class=\"tedi-pagination__page-size-select\"\n [inputId]=\"pageSizeInputId\"\n [ariaLabelledby]=\"pageSizeLabelId\"\n size=\"small\"\n [options]=\"pageSizeSelectOptions()\"\n bindLabel=\"label\"\n bindValue=\"value\"\n dropdownAlign=\"end\"\n [value]=\"pageSize()\"\n (selectionChange)=\"handlePageSizeChange($event)\"\n />\n }\n </div>\n }\n</div>\n", styles: [".tedi-pagination{display:flex;flex-flow:row wrap;gap:var(--layout-grid-gutters-16);align-items:center;justify-content:center;width:100%;padding:var(--pagination-padding-y) var(--pagination-padding-x)}@media(max-width:35.98rem){.tedi-pagination{flex-direction:column;gap:var(--layout-grid-gutters-08)}}.tedi-pagination--align-left .tedi-pagination__slot-start,.tedi-pagination--align-left .tedi-pagination__slot-end,.tedi-pagination--align-right .tedi-pagination__slot-start,.tedi-pagination--align-right .tedi-pagination__slot-end{flex:0 0 auto;justify-content:flex-start}.tedi-pagination--align-left{justify-content:flex-start}@media(max-width:35.98rem){.tedi-pagination--align-left{align-items:flex-start}}.tedi-pagination--align-right{justify-content:flex-end}@media(max-width:35.98rem){.tedi-pagination--align-right{align-items:flex-end}}.tedi-pagination--bg-white{background:var(--general-surface-primary)}.tedi-pagination--bg-transparent{background:transparent}.tedi-pagination--divider-top:not(.tedi-pagination--bg-transparent){border-top:var(--tedi-borders-01) solid var(--general-border-secondary)}.tedi-pagination--divider-bottom:not(.tedi-pagination--bg-transparent){border-bottom:var(--tedi-borders-01) solid var(--general-border-secondary)}.tedi-pagination--no-pager .tedi-pagination__slot-center,.tedi-pagination--align-left.tedi-pagination--no-results .tedi-pagination__slot-start,.tedi-pagination--align-left.tedi-pagination--no-page-size .tedi-pagination__slot-end,.tedi-pagination--align-right.tedi-pagination--no-results .tedi-pagination__slot-start,.tedi-pagination--align-right.tedi-pagination--no-page-size .tedi-pagination__slot-end{display:none}.tedi-pagination__status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;white-space:nowrap;border:0;clip-path:inset(50%)}.tedi-pagination__slot-start{display:inline-flex;flex:1 1 0;align-items:center;justify-content:flex-start}.tedi-pagination__slot-center{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center}@media(max-width:35.98rem){.tedi-pagination__slot-center{align-self:stretch}}.tedi-pagination__slot-end{display:flex;flex:1 1 0;align-items:center;justify-content:flex-end}.tedi-pagination__results{flex:0 0 auto;font-family:var(--family-default);font-size:var(--body-small-regular-size);font-weight:var(--body-small-regular-weight);line-height:var(--body-small-regular-line-height);color:var(--general-text-secondary);white-space:nowrap}@media(max-width:47.98rem){.tedi-pagination__results{font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height)}}.tedi-pagination__nav{display:flex;gap:var(--layout-grid-gutters-08);align-items:center;justify-content:center}@media(max-width:47.98rem){.tedi-pagination__nav{display:grid;grid-template-columns:var(--button-sm-icon-size) auto var(--button-sm-icon-size)}}@media(max-width:35.98rem){.tedi-pagination__nav{grid-template-columns:1fr auto 1fr;width:100%}}@media(max-width:47.98rem){.tedi-pagination--arrow-labels .tedi-pagination__nav{display:flex}}.tedi-pagination__list{display:flex;flex-wrap:nowrap;gap:var(--layout-grid-gutters-08);align-items:center;padding:0;margin:0;list-style:none}.tedi-pagination__item{display:inline-flex;align-items:center;justify-content:center}.tedi-pagination__item--ellipsis{width:var(--pagination-button-size);height:var(--pagination-button-size);font-family:var(--family-default);font-size:var(--body-small-regular-size);line-height:var(--body-small-regular-line-height);color:var(--general-text-secondary);-webkit-user-select:none;user-select:none}.tedi-pagination__page{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:var(--pagination-button-size);height:var(--pagination-button-size);padding:0 var(--layout-grid-gutters-04);font-family:var(--family-default);font-size:var(--body-small-regular-size);font-weight:var(--body-small-regular-weight);line-height:var(--body-small-regular-line-height);color:var(--general-text-secondary);cursor:pointer;background:transparent;border:none;border-radius:var(--button-radius-default)}.tedi-pagination__page:before{position:absolute;inset:-4px;content:\"\"}.tedi-pagination__page:hover{color:var(--button-main-neutral-text-hover);background:var(--button-main-neutral-icon-only-background-hover)}.tedi-pagination__page:active{color:var(--button-main-neutral-text-active);background:var(--button-main-neutral-icon-only-background-active)}.tedi-pagination__page:focus-visible{color:var(--button-main-neutral-text-focus);outline:var(--tedi-borders-02) solid var(--tedi-primary-500);outline-offset:var(--tedi-borders-01)}.tedi-pagination__page--selected{color:var(--general-text-white);cursor:default;background:var(--general-surface-brand-secondary)}.tedi-pagination__page--selected:hover,.tedi-pagination__page--selected:active,.tedi-pagination__page--selected:focus-visible{color:var(--general-text-white);background:var(--general-surface-brand-secondary)}@media(max-width:47.98rem){.tedi-pagination__nav-button--previous{grid-column:1;justify-self:end}}@media(max-width:47.98rem){.tedi-pagination__nav-button--next{grid-column:3;justify-self:start}}.tedi-pagination__mobile-trigger{display:inline-flex;gap:var(--form-field-inner-spacing);align-items:center;justify-self:center;min-height:var(--form-field-height-sm);padding:var(--form-field-padding-y-sm) var(--form-field-padding-x-md-default);color:var(--form-input-text-filled);cursor:pointer;background:var(--form-input-background-default);border:var(--tedi-borders-01) solid var(--form-input-border-default);border-radius:var(--form-field-radius)}@media(max-width:47.98rem){.tedi-pagination__mobile-trigger{grid-column:2}}.tedi-pagination__mobile-trigger:focus-visible{outline:var(--tedi-borders-02) solid var(--tedi-primary-500);outline-offset:var(--tedi-borders-01)}.tedi-pagination__mobile-trigger-label{display:inline-flex;gap:var(--layout-grid-gutters-04);align-items:center;font-family:var(--family-default);font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height)}.tedi-pagination__mobile-trigger-label strong{font-weight:var(--body-bold-weight);color:var(--general-text-brand)}.tedi-pagination__page-size{display:flex;gap:var(--form-field-inner-spacing);align-items:center;justify-content:flex-end;min-width:0}@media(max-width:35.98rem){.tedi-pagination__page-size{flex-direction:column;gap:var(--layout-grid-gutters-04);align-items:center;justify-content:center}}@media(max-width:35.98rem){.tedi-pagination--align-left .tedi-pagination__page-size{align-items:flex-start}}@media(max-width:35.98rem){.tedi-pagination--align-right .tedi-pagination__page-size{align-items:flex-end}}.tedi-pagination__page-size-label{font-family:var(--family-default);font-size:var(--body-small-regular-size);font-weight:var(--body-small-regular-weight);line-height:var(--body-small-regular-line-height);color:var(--general-text-secondary);white-space:nowrap;cursor:default}@media(max-width:47.98rem){.tedi-pagination__page-size-label{font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height)}}.tedi-pagination__page-size-select.tedi-select{width:auto;min-width:96px}.tedi-pagination__page-size-trigger{display:inline-flex;gap:var(--form-field-inner-spacing);align-items:center;min-height:var(--form-field-height-sm);padding:var(--form-field-padding-y-sm) var(--form-field-padding-x-md-default);font-family:var(--family-default);font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height);color:var(--form-input-text-filled);cursor:pointer;background:var(--form-input-background-default);border:var(--tedi-borders-01) solid var(--form-input-border-default);border-radius:var(--form-field-radius)}.tedi-pagination__page-size-trigger:focus-visible{outline:var(--tedi-borders-02) solid var(--tedi-primary-500);outline-offset:var(--tedi-borders-01)}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "[tedi-button]", inputs: ["variant", "size"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "component", type: SelectComponent, selector: "tedi-select", inputs: ["inputId", "label", "tooltip", "ariaLabelledby", "ariaLabel", "required", "placeholder", "state", "size", "clearable", "dropdownWidthRef", "dropdownAlign", "feedbackText", "options", "bindLabel", "bindValue", "value", "allowMultiple", "groupBy", "showSelectAll", "selectableGroups", "isTagRemovable", "multiRow", "tagEllipsis", "ellipsis", "compareWith", "disabledKey", "noOptionsMessage", "maxDropdownHeight", "hideOnScroll", "dropdownType", "virtualScroll", "virtualItemSize", "searchable", "searchFn", "clearSearchOnSelect"], outputs: ["selectionChange", "searchChange", "opened", "closed", "cleared"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
15299
16265
  }
15300
16266
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: PaginationComponent, decorators: [{
15301
16267
  type: Component,
15302
- args: [{ selector: "tedi-pagination", standalone: true, imports: [FormsModule, ButtonComponent, IconComponent, SelectComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
16268
+ args: [{ selector: "tedi-pagination", standalone: true, imports: [ButtonComponent, IconComponent, SelectComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
15303
16269
  "[class]": "hostClasses()",
15304
16270
  "data-name": "tedi-pagination",
15305
- }, template: "<span\n class=\"tedi-pagination__status\"\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n>\n {{ statusText() }}\n</span>\n\n<div class=\"tedi-pagination__slot-start\">\n @if (showResults()) {\n @if (customResults()) {\n <ng-content select=\"[tediPaginationResults]\" />\n } @else {\n <span class=\"tedi-pagination__results\">\n {{ mergedLabels().results(totalItems()!) }}\n </span>\n }\n }\n</div>\n\n<div class=\"tedi-pagination__slot-center\">\n @if (showPager()) {\n <nav\n class=\"tedi-pagination__nav\"\n [attr.aria-label]=\"mergedLabels().ariaLabel\"\n >\n @if (showPrevious()) {\n <button\n tedi-button\n type=\"button\"\n size=\"small\"\n [variant]=\"resolvedArrowVariant()\"\n class=\"tedi-pagination__nav-button tedi-pagination__nav-button--previous\"\n [attr.aria-label]=\"\n resolvedShowArrowLabels() ? null : mergedLabels().previous\n \"\n [disabled]=\"previousItem().disabled\"\n (click)=\"handlePageChange(previousItem().page)\"\n >\n <tedi-icon [name]=\"previousIcon()\" />\n @if (resolvedShowArrowLabels()) {\n <span>{{ mergedLabels().previous }}</span>\n }\n </button>\n }\n\n @if (!useCompactPicker()) {\n <ul class=\"tedi-pagination__list\">\n @for (item of pageItems(); track $index) {\n @if (item.type === \"ellipsis\") {\n <li\n class=\"tedi-pagination__item tedi-pagination__item--ellipsis\"\n aria-hidden=\"true\"\n >\n \u2026\n </li>\n } @else {\n <li class=\"tedi-pagination__item\">\n <button\n type=\"button\"\n class=\"tedi-pagination__page\"\n [class.tedi-pagination__page--selected]=\"item.selected\"\n [attr.aria-label]=\"\n item.selected\n ? mergedLabels().currentPageAriaLabel(item.page!)\n : mergedLabels().pageAriaLabel(item.page!)\n \"\n [attr.aria-current]=\"item.selected ? 'page' : null\"\n (click)=\"handlePageChange(item.page)\"\n >\n {{ item.page }}\n </button>\n </li>\n }\n }\n </ul>\n }\n @if (useCompactPicker()) {\n <button\n type=\"button\"\n class=\"tedi-pagination__mobile-trigger\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"isMobileModalOpen()\"\n [attr.aria-label]=\"mobileTriggerAriaLabel()\"\n (click)=\"openMobilePicker()\"\n >\n <span\n class=\"tedi-pagination__mobile-trigger-label\"\n aria-hidden=\"true\"\n >\n <strong>{{ currentPage() }}</strong>\n <span>/</span>\n <span>{{ pageCount() }}</span>\n </span>\n <tedi-icon name=\"arrow_drop_down\" />\n </button>\n }\n\n @if (showNext()) {\n <button\n tedi-button\n type=\"button\"\n size=\"small\"\n [variant]=\"resolvedArrowVariant()\"\n class=\"tedi-pagination__nav-button tedi-pagination__nav-button--next\"\n [attr.aria-label]=\"\n resolvedShowArrowLabels() ? null : mergedLabels().next\n \"\n [disabled]=\"nextItem().disabled\"\n (click)=\"handlePageChange(nextItem().page)\"\n >\n @if (resolvedShowArrowLabels()) {\n <span>{{ mergedLabels().next }}</span>\n }\n <tedi-icon [name]=\"nextIcon()\" />\n </button>\n }\n </nav>\n }\n</div>\n\n<div class=\"tedi-pagination__slot-end\">\n @if (showPageSizeSelect()) {\n <div class=\"tedi-pagination__page-size\">\n @if (useCompactPicker()) {\n <span class=\"tedi-pagination__page-size-label\">\n {{ mergedLabels().pageSize }}\n </span>\n <button\n type=\"button\"\n class=\"tedi-pagination__page-size-trigger\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"isPageSizeModalOpen()\"\n [attr.aria-label]=\"mobilePageSizeAriaLabel()\"\n (click)=\"openPageSizePicker()\"\n >\n <span aria-hidden=\"true\">{{ selectedPageSizeLabel() }}</span>\n <tedi-icon name=\"arrow_drop_down\" />\n </button>\n } @else {\n <span class=\"tedi-pagination__page-size-label\" [id]=\"pageSizeLabelId\">\n {{ mergedLabels().pageSize }}\n </span>\n <tedi-select\n class=\"tedi-pagination__page-size-select\"\n [inputId]=\"pageSizeInputId\"\n [ariaLabelledby]=\"pageSizeLabelId\"\n size=\"small\"\n [options]=\"pageSizeSelectOptions()\"\n bindLabel=\"label\"\n bindValue=\"value\"\n dropdownAlign=\"end\"\n [ngModel]=\"pageSize()\"\n (ngModelChange)=\"handlePageSizeChange($event)\"\n />\n }\n </div>\n }\n</div>\n", styles: [".tedi-pagination{display:flex;flex-flow:row wrap;gap:var(--layout-grid-gutters-16);align-items:center;justify-content:center;width:100%;padding:var(--pagination-padding-y) var(--pagination-padding-x)}@media(max-width:35.98rem){.tedi-pagination{flex-direction:column;gap:var(--layout-grid-gutters-08)}}.tedi-pagination--align-left .tedi-pagination__slot-start,.tedi-pagination--align-left .tedi-pagination__slot-end,.tedi-pagination--align-right .tedi-pagination__slot-start,.tedi-pagination--align-right .tedi-pagination__slot-end{flex:0 0 auto;justify-content:flex-start}.tedi-pagination--align-left{justify-content:flex-start}@media(max-width:35.98rem){.tedi-pagination--align-left{align-items:flex-start}}.tedi-pagination--align-right{justify-content:flex-end}@media(max-width:35.98rem){.tedi-pagination--align-right{align-items:flex-end}}.tedi-pagination--bg-white{background:var(--general-surface-primary)}.tedi-pagination--bg-transparent{background:transparent}.tedi-pagination--divider-top:not(.tedi-pagination--bg-transparent){border-top:var(--tedi-borders-01) solid var(--general-border-secondary)}.tedi-pagination--divider-bottom:not(.tedi-pagination--bg-transparent){border-bottom:var(--tedi-borders-01) solid var(--general-border-secondary)}.tedi-pagination--no-pager .tedi-pagination__slot-center,.tedi-pagination--align-left.tedi-pagination--no-results .tedi-pagination__slot-start,.tedi-pagination--align-left.tedi-pagination--no-page-size .tedi-pagination__slot-end,.tedi-pagination--align-right.tedi-pagination--no-results .tedi-pagination__slot-start,.tedi-pagination--align-right.tedi-pagination--no-page-size .tedi-pagination__slot-end{display:none}.tedi-pagination__status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;white-space:nowrap;border:0;clip-path:inset(50%)}.tedi-pagination__slot-start{display:inline-flex;flex:1 1 0;align-items:center;justify-content:flex-start}.tedi-pagination__slot-center{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center}@media(max-width:35.98rem){.tedi-pagination__slot-center{align-self:stretch}}.tedi-pagination__slot-end{display:flex;flex:1 1 0;align-items:center;justify-content:flex-end}.tedi-pagination__results{flex:0 0 auto;font-family:var(--family-default);font-size:var(--body-small-regular-size);font-weight:var(--body-small-regular-weight);line-height:var(--body-small-regular-line-height);color:var(--general-text-secondary);white-space:nowrap}@media(max-width:47.98rem){.tedi-pagination__results{font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height)}}.tedi-pagination__nav{display:flex;gap:var(--layout-grid-gutters-08);align-items:center;justify-content:center}@media(max-width:47.98rem){.tedi-pagination__nav{display:grid;grid-template-columns:var(--button-sm-icon-size) auto var(--button-sm-icon-size)}}@media(max-width:35.98rem){.tedi-pagination__nav{grid-template-columns:1fr auto 1fr;width:100%}}@media(max-width:47.98rem){.tedi-pagination--arrow-labels .tedi-pagination__nav{display:flex}}.tedi-pagination__list{display:flex;flex-wrap:nowrap;gap:var(--layout-grid-gutters-08);align-items:center;padding:0;margin:0;list-style:none}.tedi-pagination__item{display:inline-flex;align-items:center;justify-content:center}.tedi-pagination__item--ellipsis{width:var(--pagination-button-size);height:var(--pagination-button-size);font-family:var(--family-default);font-size:var(--body-small-regular-size);line-height:var(--body-small-regular-line-height);color:var(--general-text-secondary);-webkit-user-select:none;user-select:none}.tedi-pagination__page{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:var(--pagination-button-size);height:var(--pagination-button-size);padding:0 var(--layout-grid-gutters-04);font-family:var(--family-default);font-size:var(--body-small-regular-size);font-weight:var(--body-small-regular-weight);line-height:var(--body-small-regular-line-height);color:var(--general-text-secondary);cursor:pointer;background:transparent;border:none;border-radius:var(--button-radius-default)}.tedi-pagination__page:before{position:absolute;inset:-4px;content:\"\"}.tedi-pagination__page:hover{color:var(--button-main-neutral-text-hover);background:var(--button-main-neutral-icon-only-background-hover)}.tedi-pagination__page:active{color:var(--button-main-neutral-text-active);background:var(--button-main-neutral-icon-only-background-active)}.tedi-pagination__page:focus-visible{color:var(--button-main-neutral-text-focus);outline:var(--tedi-borders-02) solid var(--tedi-primary-500);outline-offset:var(--tedi-borders-01)}.tedi-pagination__page--selected{color:var(--general-text-white);cursor:default;background:var(--general-surface-brand-secondary)}.tedi-pagination__page--selected:hover,.tedi-pagination__page--selected:active,.tedi-pagination__page--selected:focus-visible{color:var(--general-text-white);background:var(--general-surface-brand-secondary)}@media(max-width:47.98rem){.tedi-pagination__nav-button--previous{grid-column:1;justify-self:end}}@media(max-width:47.98rem){.tedi-pagination__nav-button--next{grid-column:3;justify-self:start}}.tedi-pagination__mobile-trigger{display:inline-flex;gap:var(--form-field-inner-spacing);align-items:center;justify-self:center;min-height:var(--form-field-height-sm);padding:var(--form-field-padding-y-sm) var(--form-field-padding-x-md-default);color:var(--form-input-text-filled);cursor:pointer;background:var(--form-input-background-default);border:var(--tedi-borders-01) solid var(--form-input-border-default);border-radius:var(--form-field-radius)}@media(max-width:47.98rem){.tedi-pagination__mobile-trigger{grid-column:2}}.tedi-pagination__mobile-trigger:focus-visible{outline:var(--tedi-borders-02) solid var(--tedi-primary-500);outline-offset:var(--tedi-borders-01)}.tedi-pagination__mobile-trigger-label{display:inline-flex;gap:var(--layout-grid-gutters-04);align-items:center;font-family:var(--family-default);font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height)}.tedi-pagination__mobile-trigger-label strong{font-weight:var(--body-bold-weight);color:var(--general-text-brand)}.tedi-pagination__page-size{display:flex;gap:var(--form-field-inner-spacing);align-items:center;justify-content:flex-end;min-width:0}@media(max-width:35.98rem){.tedi-pagination__page-size{flex-direction:column;gap:var(--layout-grid-gutters-04);align-items:center;justify-content:center}}@media(max-width:35.98rem){.tedi-pagination--align-left .tedi-pagination__page-size{align-items:flex-start}}@media(max-width:35.98rem){.tedi-pagination--align-right .tedi-pagination__page-size{align-items:flex-end}}.tedi-pagination__page-size-label{font-family:var(--family-default);font-size:var(--body-small-regular-size);font-weight:var(--body-small-regular-weight);line-height:var(--body-small-regular-line-height);color:var(--general-text-secondary);white-space:nowrap;cursor:default}@media(max-width:47.98rem){.tedi-pagination__page-size-label{font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height)}}.tedi-pagination__page-size-select.tedi-select{width:auto;min-width:96px}.tedi-pagination__page-size-trigger{display:inline-flex;gap:var(--form-field-inner-spacing);align-items:center;min-height:var(--form-field-height-sm);padding:var(--form-field-padding-y-sm) var(--form-field-padding-x-md-default);font-family:var(--family-default);font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height);color:var(--form-input-text-filled);cursor:pointer;background:var(--form-input-background-default);border:var(--tedi-borders-01) solid var(--form-input-border-default);border-radius:var(--form-field-radius)}.tedi-pagination__page-size-trigger:focus-visible{outline:var(--tedi-borders-02) solid var(--tedi-primary-500);outline-offset:var(--tedi-borders-01)}\n"] }]
16271
+ }, template: "<span\n class=\"tedi-pagination__status\"\n role=\"status\"\n aria-live=\"polite\"\n aria-atomic=\"true\"\n>\n {{ statusText() }}\n</span>\n\n<div class=\"tedi-pagination__slot-start\">\n @if (showResults()) {\n @if (customResults()) {\n <ng-content select=\"[tediPaginationResults]\" />\n } @else {\n <span class=\"tedi-pagination__results\">\n {{ mergedLabels().results(totalItems()!) }}\n </span>\n }\n }\n</div>\n\n<div class=\"tedi-pagination__slot-center\">\n @if (showPager()) {\n <nav\n class=\"tedi-pagination__nav\"\n [attr.aria-label]=\"mergedLabels().ariaLabel\"\n >\n @if (showPrevious()) {\n <button\n tedi-button\n type=\"button\"\n size=\"small\"\n [variant]=\"resolvedArrowVariant()\"\n class=\"tedi-pagination__nav-button tedi-pagination__nav-button--previous\"\n [attr.aria-label]=\"\n resolvedShowArrowLabels() ? null : mergedLabels().previous\n \"\n [disabled]=\"previousItem().disabled\"\n (click)=\"handlePageChange(previousItem().page)\"\n >\n <tedi-icon [name]=\"previousIcon()\" />\n @if (resolvedShowArrowLabels()) {\n <span>{{ mergedLabels().previous }}</span>\n }\n </button>\n }\n\n @if (!useCompactPicker()) {\n <ul class=\"tedi-pagination__list\">\n @for (item of pageItems(); track $index) {\n @if (item.type === \"ellipsis\") {\n <li\n class=\"tedi-pagination__item tedi-pagination__item--ellipsis\"\n aria-hidden=\"true\"\n >\n \u2026\n </li>\n } @else {\n <li class=\"tedi-pagination__item\">\n <button\n type=\"button\"\n class=\"tedi-pagination__page\"\n [class.tedi-pagination__page--selected]=\"item.selected\"\n [attr.aria-label]=\"\n item.selected\n ? mergedLabels().currentPageAriaLabel(item.page!)\n : mergedLabels().pageAriaLabel(item.page!)\n \"\n [attr.aria-current]=\"item.selected ? 'page' : null\"\n (click)=\"handlePageChange(item.page)\"\n >\n {{ item.page }}\n </button>\n </li>\n }\n }\n </ul>\n }\n @if (useCompactPicker()) {\n <button\n type=\"button\"\n class=\"tedi-pagination__mobile-trigger\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"isMobileModalOpen()\"\n [attr.aria-label]=\"mobileTriggerAriaLabel()\"\n (click)=\"openMobilePicker()\"\n >\n <span\n class=\"tedi-pagination__mobile-trigger-label\"\n aria-hidden=\"true\"\n >\n <strong>{{ currentPage() }}</strong>\n <span>/</span>\n <span>{{ pageCount() }}</span>\n </span>\n <tedi-icon name=\"arrow_drop_down\" />\n </button>\n }\n\n @if (showNext()) {\n <button\n tedi-button\n type=\"button\"\n size=\"small\"\n [variant]=\"resolvedArrowVariant()\"\n class=\"tedi-pagination__nav-button tedi-pagination__nav-button--next\"\n [attr.aria-label]=\"\n resolvedShowArrowLabels() ? null : mergedLabels().next\n \"\n [disabled]=\"nextItem().disabled\"\n (click)=\"handlePageChange(nextItem().page)\"\n >\n @if (resolvedShowArrowLabels()) {\n <span>{{ mergedLabels().next }}</span>\n }\n <tedi-icon [name]=\"nextIcon()\" />\n </button>\n }\n </nav>\n }\n</div>\n\n<div class=\"tedi-pagination__slot-end\">\n @if (showPageSizeSelect()) {\n <div class=\"tedi-pagination__page-size\">\n @if (useCompactPicker()) {\n <span class=\"tedi-pagination__page-size-label\">\n {{ mergedLabels().pageSize }}\n </span>\n <button\n type=\"button\"\n class=\"tedi-pagination__page-size-trigger\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"isPageSizeModalOpen()\"\n [attr.aria-label]=\"mobilePageSizeAriaLabel()\"\n (click)=\"openPageSizePicker()\"\n >\n <span aria-hidden=\"true\">{{ selectedPageSizeLabel() }}</span>\n <tedi-icon name=\"arrow_drop_down\" />\n </button>\n } @else {\n <span class=\"tedi-pagination__page-size-label\" [id]=\"pageSizeLabelId\">\n {{ mergedLabels().pageSize }}\n </span>\n <tedi-select\n class=\"tedi-pagination__page-size-select\"\n [inputId]=\"pageSizeInputId\"\n [ariaLabelledby]=\"pageSizeLabelId\"\n size=\"small\"\n [options]=\"pageSizeSelectOptions()\"\n bindLabel=\"label\"\n bindValue=\"value\"\n dropdownAlign=\"end\"\n [value]=\"pageSize()\"\n (selectionChange)=\"handlePageSizeChange($event)\"\n />\n }\n </div>\n }\n</div>\n", styles: [".tedi-pagination{display:flex;flex-flow:row wrap;gap:var(--layout-grid-gutters-16);align-items:center;justify-content:center;width:100%;padding:var(--pagination-padding-y) var(--pagination-padding-x)}@media(max-width:35.98rem){.tedi-pagination{flex-direction:column;gap:var(--layout-grid-gutters-08)}}.tedi-pagination--align-left .tedi-pagination__slot-start,.tedi-pagination--align-left .tedi-pagination__slot-end,.tedi-pagination--align-right .tedi-pagination__slot-start,.tedi-pagination--align-right .tedi-pagination__slot-end{flex:0 0 auto;justify-content:flex-start}.tedi-pagination--align-left{justify-content:flex-start}@media(max-width:35.98rem){.tedi-pagination--align-left{align-items:flex-start}}.tedi-pagination--align-right{justify-content:flex-end}@media(max-width:35.98rem){.tedi-pagination--align-right{align-items:flex-end}}.tedi-pagination--bg-white{background:var(--general-surface-primary)}.tedi-pagination--bg-transparent{background:transparent}.tedi-pagination--divider-top:not(.tedi-pagination--bg-transparent){border-top:var(--tedi-borders-01) solid var(--general-border-secondary)}.tedi-pagination--divider-bottom:not(.tedi-pagination--bg-transparent){border-bottom:var(--tedi-borders-01) solid var(--general-border-secondary)}.tedi-pagination--no-pager .tedi-pagination__slot-center,.tedi-pagination--align-left.tedi-pagination--no-results .tedi-pagination__slot-start,.tedi-pagination--align-left.tedi-pagination--no-page-size .tedi-pagination__slot-end,.tedi-pagination--align-right.tedi-pagination--no-results .tedi-pagination__slot-start,.tedi-pagination--align-right.tedi-pagination--no-page-size .tedi-pagination__slot-end{display:none}.tedi-pagination__status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;white-space:nowrap;border:0;clip-path:inset(50%)}.tedi-pagination__slot-start{display:inline-flex;flex:1 1 0;align-items:center;justify-content:flex-start}.tedi-pagination__slot-center{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center}@media(max-width:35.98rem){.tedi-pagination__slot-center{align-self:stretch}}.tedi-pagination__slot-end{display:flex;flex:1 1 0;align-items:center;justify-content:flex-end}.tedi-pagination__results{flex:0 0 auto;font-family:var(--family-default);font-size:var(--body-small-regular-size);font-weight:var(--body-small-regular-weight);line-height:var(--body-small-regular-line-height);color:var(--general-text-secondary);white-space:nowrap}@media(max-width:47.98rem){.tedi-pagination__results{font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height)}}.tedi-pagination__nav{display:flex;gap:var(--layout-grid-gutters-08);align-items:center;justify-content:center}@media(max-width:47.98rem){.tedi-pagination__nav{display:grid;grid-template-columns:var(--button-sm-icon-size) auto var(--button-sm-icon-size)}}@media(max-width:35.98rem){.tedi-pagination__nav{grid-template-columns:1fr auto 1fr;width:100%}}@media(max-width:47.98rem){.tedi-pagination--arrow-labels .tedi-pagination__nav{display:flex}}.tedi-pagination__list{display:flex;flex-wrap:nowrap;gap:var(--layout-grid-gutters-08);align-items:center;padding:0;margin:0;list-style:none}.tedi-pagination__item{display:inline-flex;align-items:center;justify-content:center}.tedi-pagination__item--ellipsis{width:var(--pagination-button-size);height:var(--pagination-button-size);font-family:var(--family-default);font-size:var(--body-small-regular-size);line-height:var(--body-small-regular-line-height);color:var(--general-text-secondary);-webkit-user-select:none;user-select:none}.tedi-pagination__page{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:var(--pagination-button-size);height:var(--pagination-button-size);padding:0 var(--layout-grid-gutters-04);font-family:var(--family-default);font-size:var(--body-small-regular-size);font-weight:var(--body-small-regular-weight);line-height:var(--body-small-regular-line-height);color:var(--general-text-secondary);cursor:pointer;background:transparent;border:none;border-radius:var(--button-radius-default)}.tedi-pagination__page:before{position:absolute;inset:-4px;content:\"\"}.tedi-pagination__page:hover{color:var(--button-main-neutral-text-hover);background:var(--button-main-neutral-icon-only-background-hover)}.tedi-pagination__page:active{color:var(--button-main-neutral-text-active);background:var(--button-main-neutral-icon-only-background-active)}.tedi-pagination__page:focus-visible{color:var(--button-main-neutral-text-focus);outline:var(--tedi-borders-02) solid var(--tedi-primary-500);outline-offset:var(--tedi-borders-01)}.tedi-pagination__page--selected{color:var(--general-text-white);cursor:default;background:var(--general-surface-brand-secondary)}.tedi-pagination__page--selected:hover,.tedi-pagination__page--selected:active,.tedi-pagination__page--selected:focus-visible{color:var(--general-text-white);background:var(--general-surface-brand-secondary)}@media(max-width:47.98rem){.tedi-pagination__nav-button--previous{grid-column:1;justify-self:end}}@media(max-width:47.98rem){.tedi-pagination__nav-button--next{grid-column:3;justify-self:start}}.tedi-pagination__mobile-trigger{display:inline-flex;gap:var(--form-field-inner-spacing);align-items:center;justify-self:center;min-height:var(--form-field-height-sm);padding:var(--form-field-padding-y-sm) var(--form-field-padding-x-md-default);color:var(--form-input-text-filled);cursor:pointer;background:var(--form-input-background-default);border:var(--tedi-borders-01) solid var(--form-input-border-default);border-radius:var(--form-field-radius)}@media(max-width:47.98rem){.tedi-pagination__mobile-trigger{grid-column:2}}.tedi-pagination__mobile-trigger:focus-visible{outline:var(--tedi-borders-02) solid var(--tedi-primary-500);outline-offset:var(--tedi-borders-01)}.tedi-pagination__mobile-trigger-label{display:inline-flex;gap:var(--layout-grid-gutters-04);align-items:center;font-family:var(--family-default);font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height)}.tedi-pagination__mobile-trigger-label strong{font-weight:var(--body-bold-weight);color:var(--general-text-brand)}.tedi-pagination__page-size{display:flex;gap:var(--form-field-inner-spacing);align-items:center;justify-content:flex-end;min-width:0}@media(max-width:35.98rem){.tedi-pagination__page-size{flex-direction:column;gap:var(--layout-grid-gutters-04);align-items:center;justify-content:center}}@media(max-width:35.98rem){.tedi-pagination--align-left .tedi-pagination__page-size{align-items:flex-start}}@media(max-width:35.98rem){.tedi-pagination--align-right .tedi-pagination__page-size{align-items:flex-end}}.tedi-pagination__page-size-label{font-family:var(--family-default);font-size:var(--body-small-regular-size);font-weight:var(--body-small-regular-weight);line-height:var(--body-small-regular-line-height);color:var(--general-text-secondary);white-space:nowrap;cursor:default}@media(max-width:47.98rem){.tedi-pagination__page-size-label{font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height)}}.tedi-pagination__page-size-select.tedi-select{width:auto;min-width:96px}.tedi-pagination__page-size-trigger{display:inline-flex;gap:var(--form-field-inner-spacing);align-items:center;min-height:var(--form-field-height-sm);padding:var(--form-field-padding-y-sm) var(--form-field-padding-x-md-default);font-family:var(--family-default);font-size:var(--body-regular-size);font-weight:var(--body-regular-weight);line-height:var(--body-regular-line-height);color:var(--form-input-text-filled);cursor:pointer;background:var(--form-input-background-default);border:var(--tedi-borders-01) solid var(--form-input-border-default);border-radius:var(--form-field-radius)}.tedi-pagination__page-size-trigger:focus-visible{outline:var(--tedi-borders-02) solid var(--tedi-primary-500);outline-offset:var(--tedi-borders-01)}\n"] }]
15306
16272
  }], ctorParameters: () => [], propDecorators: { pageCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageCount", required: true }] }], page: [{ type: i0.Input, args: [{ isSignal: true, alias: "page", required: false }] }, { type: i0.Output, args: ["pageChange"] }], totalItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalItems", required: false }] }], pageSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSize", required: false }] }, { type: i0.Output, args: ["pageSizeChange"] }], pageSizeOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSizeOptions", required: false }] }], boundaryCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "boundaryCount", required: false }] }], siblingCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "siblingCount", required: false }] }], labels: [{ type: i0.Input, args: [{ isSignal: true, alias: "labels", required: false }] }], background: [{ type: i0.Input, args: [{ isSignal: true, alias: "background", required: false }] }], dividerPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "dividerPosition", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], hideResults: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideResults", required: false }] }], hidePageSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "hidePageSize", required: false }] }], hidePager: [{ type: i0.Input, args: [{ isSignal: true, alias: "hidePager", required: false }] }], hideArrows: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideArrows", required: false }] }], disableArrowsAtBoundary: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableArrowsAtBoundary", required: false }] }], arrowVariant: [{ type: i0.Input, args: [{ isSignal: true, alias: "arrowVariant", required: false }] }], showArrowLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "showArrowLabels", required: false }] }], previousIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "previousIcon", required: false }] }], nextIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "nextIcon", required: false }] }], showModalTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "showModalTitle", required: false }] }], xs: [{ type: i0.Input, args: [{ isSignal: true, alias: "xs", required: false }] }], sm: [{ type: i0.Input, args: [{ isSignal: true, alias: "sm", required: false }] }], md: [{ type: i0.Input, args: [{ isSignal: true, alias: "md", required: false }] }], lg: [{ type: i0.Input, args: [{ isSignal: true, alias: "lg", required: false }] }], xl: [{ type: i0.Input, args: [{ isSignal: true, alias: "xl", required: false }] }], xxl: [{ type: i0.Input, args: [{ isSignal: true, alias: "xxl", required: false }] }], customResults: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TediPaginationResultsDirective), { isSignal: true }] }] } });
15307
16273
 
15308
16274
  class TediTableHeaderButtonComponent {
@@ -15364,7 +16330,7 @@ class TableFilterModalComponent {
15364
16330
  return this.data.buildContext(() => this.modalRef.close());
15365
16331
  }
15366
16332
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: TableFilterModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
15367
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.24", type: TableFilterModalComponent, isStandalone: true, selector: "tedi-table-filter-modal", ngImport: i0, template: "<tedi-modal>\n <tedi-modal-header>\n <h2>{{ data.columnLabel }}</h2>\n </tedi-modal-header>\n <tedi-modal-content>\n <ng-container *ngTemplateOutlet=\"data.template; context: context\" />\n </tedi-modal-content>\n <tedi-modal-footer>\n <button\n tedi-button\n variant=\"secondary\"\n size=\"small\"\n type=\"button\"\n (click)=\"context.clear()\"\n >\n {{ data.clearLabel }}\n </button>\n <button\n tedi-button\n variant=\"primary\"\n size=\"small\"\n type=\"button\"\n (click)=\"context.apply()\"\n >\n {{ data.applyLabel }}\n </button>\n </tedi-modal-footer>\n</tedi-modal>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ModalComponent, selector: "tedi-modal", inputs: ["open", "size", "width", "position", "closeOnBackdropClick"], outputs: ["openChange"] }, { kind: "component", type: ModalHeaderComponent, selector: "tedi-modal-header", inputs: ["showClose", "closeButtonSize"] }, { kind: "component", type: ModalContentComponent, selector: "tedi-modal-content" }, { kind: "component", type: ModalFooterComponent, selector: "tedi-modal-footer" }, { kind: "component", type: ButtonComponent, selector: "[tedi-button]", inputs: ["variant", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
16333
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.24", type: TableFilterModalComponent, isStandalone: true, selector: "tedi-table-filter-modal", ngImport: i0, template: "<tedi-modal>\n <tedi-modal-header>\n <h2>{{ data.columnLabel }}</h2>\n </tedi-modal-header>\n <tedi-modal-content>\n <ng-container *ngTemplateOutlet=\"data.template; context: context\" />\n </tedi-modal-content>\n <tedi-modal-footer>\n <button\n tedi-button\n variant=\"secondary\"\n size=\"small\"\n type=\"button\"\n (click)=\"context.clear()\"\n >\n {{ data.clearLabel }}\n </button>\n <button\n tedi-button\n variant=\"primary\"\n size=\"small\"\n type=\"button\"\n (click)=\"context.apply()\"\n >\n {{ data.applyLabel }}\n </button>\n </tedi-modal-footer>\n</tedi-modal>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ModalComponent, selector: "tedi-modal", inputs: ["open", "size", "width", "position", "closeOnBackdropClick", "ariaLabel", "ariaLabelledBy"], outputs: ["openChange"] }, { kind: "component", type: ModalHeaderComponent, selector: "tedi-modal-header", inputs: ["showClose", "closeButtonSize"] }, { kind: "component", type: ModalContentComponent, selector: "tedi-modal-content" }, { kind: "component", type: ModalFooterComponent, selector: "tedi-modal-footer" }, { kind: "component", type: ButtonComponent, selector: "[tedi-button]", inputs: ["variant", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
15368
16334
  }
15369
16335
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: TableFilterModalComponent, decorators: [{
15370
16336
  type: Component,
@@ -17671,6 +18637,165 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
17671
18637
  }, template: "<tedi-dropdown position=\"bottom-end\">\n <button tedi-button tedi-dropdown-trigger variant=\"neutral\" type=\"button\">\n <tedi-icon name=\"tune\" [size]=\"18\" color=\"inherit\" />\n {{ triggerLabel() ?? defaultLabel() }}\n </button>\n <tedi-dropdown-content>\n @for (column of hideableColumns(); track column.id) {\n @let isVisible = column.getIsVisible();\n @let isLastVisible = isVisible && visibleCount() === 1;\n <li\n tedi-dropdown-item\n [value]=\"column.id\"\n [disabled]=\"isLastVisible\"\n [closeOnSelect]=\"false\"\n (itemSelect)=\"handleToggle(column)\"\n >\n <tedi-dropdown-item-value\n type=\"checkbox\"\n [selected]=\"isVisible\"\n [disabled]=\"isLastVisible\"\n >\n <tedi-dropdown-item-value-label>\n {{ resolveHeader(column) }}\n </tedi-dropdown-item-value-label>\n </tedi-dropdown-item-value>\n </li>\n }\n </tedi-dropdown-content>\n</tedi-dropdown>\n", styles: [".tedi-table-columns-menu{display:inline-flex}.tedi-table-columns-menu__option{display:flex;width:100%}\n"] }]
17672
18638
  }], propDecorators: { triggerLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerLabel", required: false }] }] } });
17673
18639
 
18640
+ class LinkComponent {
18641
+ variant = input("default", ...(ngDevMode ? [{ debugName: "variant" }] : []));
18642
+ size = input("default", ...(ngDevMode ? [{ debugName: "size" }] : []));
18643
+ underline = input(true, ...(ngDevMode ? [{ debugName: "underline" }] : []));
18644
+ target = input(...(ngDevMode ? [undefined, { debugName: "target" }] : []));
18645
+ xs = input(...(ngDevMode ? [undefined, { debugName: "xs" }] : []));
18646
+ sm = input(...(ngDevMode ? [undefined, { debugName: "sm" }] : []));
18647
+ md = input(...(ngDevMode ? [undefined, { debugName: "md" }] : []));
18648
+ lg = input(...(ngDevMode ? [undefined, { debugName: "lg" }] : []));
18649
+ xl = input(...(ngDevMode ? [undefined, { debugName: "xl" }] : []));
18650
+ xxl = input(...(ngDevMode ? [undefined, { debugName: "xxl" }] : []));
18651
+ host = inject(ElementRef);
18652
+ renderer = inject(Renderer2);
18653
+ ngAfterContentChecked() {
18654
+ const childNodes = Array.from(this.host.nativeElement.childNodes);
18655
+ for (const node of childNodes) {
18656
+ if (node.nodeType === Node.TEXT_NODE && node.textContent?.trim()) {
18657
+ if (node.parentNode !== this.host.nativeElement) {
18658
+ continue;
18659
+ }
18660
+ const span = this.renderer.createElement("span");
18661
+ this.renderer.insertBefore(this.host.nativeElement, span, node);
18662
+ this.renderer.appendChild(span, node);
18663
+ }
18664
+ }
18665
+ }
18666
+ breakpointService = inject(BreakpointService);
18667
+ breakpointInputs = computed(() => {
18668
+ return this.breakpointService.getBreakpointInputs({
18669
+ variant: this.variant(),
18670
+ size: this.size(),
18671
+ underline: this.underline(),
18672
+ xs: this.xs(),
18673
+ sm: this.sm(),
18674
+ md: this.md(),
18675
+ lg: this.lg(),
18676
+ xl: this.xl(),
18677
+ xxl: this.xxl(),
18678
+ });
18679
+ }, ...(ngDevMode ? [{ debugName: "breakpointInputs" }] : []));
18680
+ classes = computed(() => {
18681
+ const classList = ["tedi-link"];
18682
+ if (this.breakpointInputs().variant === "inverted") {
18683
+ classList.push("tedi-link--inverted");
18684
+ }
18685
+ if (this.breakpointInputs().size === "small") {
18686
+ classList.push("tedi-link--small");
18687
+ }
18688
+ if (!this.breakpointInputs().underline) {
18689
+ classList.push("tedi-link--no-underline");
18690
+ }
18691
+ return classList.join(" ");
18692
+ }, ...(ngDevMode ? [{ debugName: "classes" }] : []));
18693
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: LinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18694
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: LinkComponent, isStandalone: true, selector: "[tedi-link]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, underline: { classPropertyName: "underline", publicName: "underline", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, xs: { classPropertyName: "xs", publicName: "xs", isSignal: true, isRequired: false, transformFunction: null }, sm: { classPropertyName: "sm", publicName: "sm", isSignal: true, isRequired: false, transformFunction: null }, md: { classPropertyName: "md", publicName: "md", isSignal: true, isRequired: false, transformFunction: null }, lg: { classPropertyName: "lg", publicName: "lg", isSignal: true, isRequired: false, transformFunction: null }, xl: { classPropertyName: "xl", publicName: "xl", isSignal: true, isRequired: false, transformFunction: null }, xxl: { classPropertyName: "xxl", publicName: "xxl", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.tabIndex": "0" } }, ngImport: i0, template: "<ng-content></ng-content>\n@if (target() === \"_blank\") {\n <span class=\"sr-only\">{{ \"anchor.new-tab\" | tediTranslate }}</span>\n}\n", styles: [".tedi-link{display:inline-flex;text-decoration:none;cursor:pointer;color:var(--link-primary-default)}.tedi-link:hover:not(:disabled,[aria-disabled=true]){color:var(--link-primary-hover)}.tedi-link:hover:not(:disabled,[aria-disabled=true]) .tedi-link__text{text-decoration:underline}.tedi-link:active:not(:disabled,[aria-disabled=true]){color:var(--link-primary-active)}.tedi-link:active:not(:disabled,[aria-disabled=true]) .tedi-link__text{text-decoration:underline}.tedi-link:focus-visible:not(:disabled){color:var(--link-primary-focus);outline:2px solid var(--link-primary-focus);outline-offset:1px;border-radius:0}.tedi-link:focus-visible:not(:disabled) .tedi-link__text{text-decoration:underline}.tedi-link:where(button){padding:0;font:inherit;text-align:inherit;appearance:none;background:none;border:0}.tedi-link--inverted{color:var(--link-inverted-default)}.tedi-link--inverted:hover:not(:disabled,[aria-disabled=true]){color:var(--link-inverted-hover)}.tedi-link--inverted:hover:not(:disabled,[aria-disabled=true]) .tedi-link__text{text-decoration:underline}.tedi-link--inverted:active:not(:disabled,[aria-disabled=true]){color:var(--link-inverted-active)}.tedi-link--inverted:active:not(:disabled,[aria-disabled=true]) .tedi-link__text{text-decoration:underline}.tedi-link--inverted:focus-visible:not(:disabled){color:var(--link-inverted-focus);outline:2px solid var(--link-inverted-focus);outline-offset:1px;border-radius:0}.tedi-link--inverted:focus-visible:not(:disabled) .tedi-link__text{text-decoration:underline}.tedi-link--small{font-size:var(--body-small-regular-size)}.tedi-link:not(.tedi-link--no-underline) :not(tedi-icon){text-decoration:underline}.tedi-link:hover :not(tedi-icon){text-decoration:underline}.tedi-link tedi-icon{--_tedi-icon-size: var(--icon-03);height:fit-content;margin-right:var(--button-sm-inner-spacing);margin-left:var(--button-sm-inner-spacing);line-height:inherit;color:inherit}.tedi-link tedi-icon:first-child{margin-left:0}.tedi-link tedi-icon:last-child{margin-right:0}.tedi-link--small tedi-icon{--_tedi-icon-size: var(--icon-02)}\n"], dependencies: [{ kind: "pipe", type: TediTranslationPipe, name: "tediTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
18695
+ }
18696
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: LinkComponent, decorators: [{
18697
+ type: Component,
18698
+ args: [{ selector: "[tedi-link]", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [TediTranslationPipe], host: {
18699
+ "[class]": "classes()",
18700
+ "[attr.tabIndex]": "0",
18701
+ }, template: "<ng-content></ng-content>\n@if (target() === \"_blank\") {\n <span class=\"sr-only\">{{ \"anchor.new-tab\" | tediTranslate }}</span>\n}\n", styles: [".tedi-link{display:inline-flex;text-decoration:none;cursor:pointer;color:var(--link-primary-default)}.tedi-link:hover:not(:disabled,[aria-disabled=true]){color:var(--link-primary-hover)}.tedi-link:hover:not(:disabled,[aria-disabled=true]) .tedi-link__text{text-decoration:underline}.tedi-link:active:not(:disabled,[aria-disabled=true]){color:var(--link-primary-active)}.tedi-link:active:not(:disabled,[aria-disabled=true]) .tedi-link__text{text-decoration:underline}.tedi-link:focus-visible:not(:disabled){color:var(--link-primary-focus);outline:2px solid var(--link-primary-focus);outline-offset:1px;border-radius:0}.tedi-link:focus-visible:not(:disabled) .tedi-link__text{text-decoration:underline}.tedi-link:where(button){padding:0;font:inherit;text-align:inherit;appearance:none;background:none;border:0}.tedi-link--inverted{color:var(--link-inverted-default)}.tedi-link--inverted:hover:not(:disabled,[aria-disabled=true]){color:var(--link-inverted-hover)}.tedi-link--inverted:hover:not(:disabled,[aria-disabled=true]) .tedi-link__text{text-decoration:underline}.tedi-link--inverted:active:not(:disabled,[aria-disabled=true]){color:var(--link-inverted-active)}.tedi-link--inverted:active:not(:disabled,[aria-disabled=true]) .tedi-link__text{text-decoration:underline}.tedi-link--inverted:focus-visible:not(:disabled){color:var(--link-inverted-focus);outline:2px solid var(--link-inverted-focus);outline-offset:1px;border-radius:0}.tedi-link--inverted:focus-visible:not(:disabled) .tedi-link__text{text-decoration:underline}.tedi-link--small{font-size:var(--body-small-regular-size)}.tedi-link:not(.tedi-link--no-underline) :not(tedi-icon){text-decoration:underline}.tedi-link:hover :not(tedi-icon){text-decoration:underline}.tedi-link tedi-icon{--_tedi-icon-size: var(--icon-03);height:fit-content;margin-right:var(--button-sm-inner-spacing);margin-left:var(--button-sm-inner-spacing);line-height:inherit;color:inherit}.tedi-link tedi-icon:first-child{margin-left:0}.tedi-link tedi-icon:last-child{margin-right:0}.tedi-link--small tedi-icon{--_tedi-icon-size: var(--icon-02)}\n"] }]
18702
+ }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], underline: [{ type: i0.Input, args: [{ isSignal: true, alias: "underline", required: false }] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }], xs: [{ type: i0.Input, args: [{ isSignal: true, alias: "xs", required: false }] }], sm: [{ type: i0.Input, args: [{ isSignal: true, alias: "sm", required: false }] }], md: [{ type: i0.Input, args: [{ isSignal: true, alias: "md", required: false }] }], lg: [{ type: i0.Input, args: [{ isSignal: true, alias: "lg", required: false }] }], xl: [{ type: i0.Input, args: [{ isSignal: true, alias: "xl", required: false }] }], xxl: [{ type: i0.Input, args: [{ isSignal: true, alias: "xxl", required: false }] }] } });
18703
+
18704
+ const DEFAULT_MAX_LENGTH = 200;
18705
+ const characterSegmenter = new Intl.Segmenter(undefined, {
18706
+ granularity: "grapheme",
18707
+ });
18708
+ function normalizeMaxLength(value) {
18709
+ const lengths = breakpointInput(value);
18710
+ const normalized = { ...lengths };
18711
+ for (const key of Object.keys(lengths)) {
18712
+ const length = lengths[key];
18713
+ if (length !== undefined) {
18714
+ normalized[key] = Number.isFinite(length)
18715
+ ? Math.max(0, Math.floor(length))
18716
+ : DEFAULT_MAX_LENGTH;
18717
+ }
18718
+ }
18719
+ return normalized;
18720
+ }
18721
+ class TruncateComponent {
18722
+ /**
18723
+ * Text to display and truncate when it exceeds `maxLength`.
18724
+ */
18725
+ text = input.required(...(ngDevMode ? [{ debugName: "text" }] : []));
18726
+ /**
18727
+ * Maximum characters shown while collapsed, excluding the ellipsis.
18728
+ * Accepts a number or a breakpoint object, e.g. `{ xs: 100, md: 200 }`.
18729
+ * @default 200
18730
+ */
18731
+ maxLength = input({ xs: DEFAULT_MAX_LENGTH }, ...(ngDevMode ? [{ debugName: "maxLength", transform: normalizeMaxLength }] : [{ transform: normalizeMaxLength }]));
18732
+ /**
18733
+ * Text appended when content is truncated.
18734
+ * @default "..."
18735
+ */
18736
+ ellipsis = input("...", ...(ngDevMode ? [{ debugName: "ellipsis" }] : []));
18737
+ /**
18738
+ * Shows an expand/collapse button when the text exceeds `maxLength`.
18739
+ * When false, `expanded` can still be controlled programmatically.
18740
+ * @default true
18741
+ */
18742
+ expandable = input(true, ...(ngDevMode ? [{ debugName: "expandable" }] : []));
18743
+ /**
18744
+ * Whether to show the full text. Supports two-way binding with `[(expanded)]`.
18745
+ * @default false
18746
+ */
18747
+ expanded = model(false, ...(ngDevMode ? [{ debugName: "expanded" }] : []));
18748
+ breakpointService = inject(BreakpointService);
18749
+ textId = `tedi-truncate-text-${generateUUID()}`;
18750
+ resolvedMaxLength = computed(() => {
18751
+ const value = this.maxLength();
18752
+ if (value.xxl !== undefined &&
18753
+ this.breakpointService.isAboveBreakpoint("xxl")()) {
18754
+ return value.xxl;
18755
+ }
18756
+ if (value.xl !== undefined &&
18757
+ this.breakpointService.isAboveBreakpoint("xl")()) {
18758
+ return value.xl;
18759
+ }
18760
+ if (value.lg !== undefined &&
18761
+ this.breakpointService.isAboveBreakpoint("lg")()) {
18762
+ return value.lg;
18763
+ }
18764
+ if (value.md !== undefined &&
18765
+ this.breakpointService.isAboveBreakpoint("md")()) {
18766
+ return value.md;
18767
+ }
18768
+ if (value.sm !== undefined &&
18769
+ this.breakpointService.isAboveBreakpoint("sm")()) {
18770
+ return value.sm;
18771
+ }
18772
+ return value.xs;
18773
+ }, ...(ngDevMode ? [{ debugName: "resolvedMaxLength" }] : []));
18774
+ characters = computed(() => Array.from(characterSegmenter.segment(this.text()), ({ segment }) => segment), ...(ngDevMode ? [{ debugName: "characters" }] : []));
18775
+ exceedsMaxLength = computed(() => this.characters().length > this.resolvedMaxLength(), ...(ngDevMode ? [{ debugName: "exceedsMaxLength" }] : []));
18776
+ isTruncated = computed(() => this.exceedsMaxLength() && !this.expanded(), ...(ngDevMode ? [{ debugName: "isTruncated" }] : []));
18777
+ showToggle = computed(() => this.exceedsMaxLength() && this.expandable(), ...(ngDevMode ? [{ debugName: "showToggle" }] : []));
18778
+ displayText = computed(() => {
18779
+ const text = this.text();
18780
+ if (!this.isTruncated()) {
18781
+ return text;
18782
+ }
18783
+ return `${this.characters().slice(0, this.resolvedMaxLength()).join("").trimEnd()}${this.ellipsis()}`;
18784
+ }, ...(ngDevMode ? [{ debugName: "displayText" }] : []));
18785
+ toggle() {
18786
+ this.expanded.update((expanded) => !expanded);
18787
+ }
18788
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: TruncateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18789
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: TruncateComponent, isStandalone: true, selector: "tedi-truncate", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: true, transformFunction: null }, maxLength: { classPropertyName: "maxLength", publicName: "maxLength", isSignal: true, isRequired: false, transformFunction: null }, ellipsis: { classPropertyName: "ellipsis", publicName: "ellipsis", isSignal: true, isRequired: false, transformFunction: null }, expandable: { classPropertyName: "expandable", publicName: "expandable", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { expanded: "expandedChange" }, host: { properties: { "class.tedi-truncate--expanded": "expanded()" }, classAttribute: "tedi-truncate" }, ngImport: i0, template: "<span tedi-text color=\"secondary\" class=\"tedi-truncate__text\" [id]=\"textId\">{{\n displayText()\n}}</span>\n@if (showToggle()) {\n <button\n tedi-link\n type=\"button\"\n class=\"tedi-truncate__toggle\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"textId\"\n (click)=\"toggle()\"\n >\n {{\n (expanded() ? \"truncate.see-less\" : \"truncate.see-more\") | tediTranslate\n }}\n </button>\n}\n", styles: [".tedi-truncate:not(.tedi-truncate--expanded) .tedi-truncate__toggle{margin-inline-start:var(--tedi-dimensions-03)}.tedi-truncate--expanded .tedi-truncate__toggle{display:flex}\n"], dependencies: [{ kind: "component", type: TextComponent, selector: "[tedi-text]", inputs: ["modifiers", "color"] }, { kind: "component", type: LinkComponent, selector: "[tedi-link]", inputs: ["variant", "size", "underline", "target", "xs", "sm", "md", "lg", "xl", "xxl"] }, { kind: "pipe", type: TediTranslationPipe, name: "tediTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
18790
+ }
18791
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: TruncateComponent, decorators: [{
18792
+ type: Component,
18793
+ args: [{ selector: "tedi-truncate", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [TextComponent, LinkComponent, TediTranslationPipe], host: {
18794
+ class: "tedi-truncate",
18795
+ "[class.tedi-truncate--expanded]": "expanded()",
18796
+ }, template: "<span tedi-text color=\"secondary\" class=\"tedi-truncate__text\" [id]=\"textId\">{{\n displayText()\n}}</span>\n@if (showToggle()) {\n <button\n tedi-link\n type=\"button\"\n class=\"tedi-truncate__toggle\"\n [attr.aria-expanded]=\"expanded()\"\n [attr.aria-controls]=\"textId\"\n (click)=\"toggle()\"\n >\n {{\n (expanded() ? \"truncate.see-less\" : \"truncate.see-more\") | tediTranslate\n }}\n </button>\n}\n", styles: [".tedi-truncate:not(.tedi-truncate--expanded) .tedi-truncate__toggle{margin-inline-start:var(--tedi-dimensions-03)}.tedi-truncate--expanded .tedi-truncate__toggle{display:flex}\n"] }]
18797
+ }], propDecorators: { text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: true }] }], maxLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxLength", required: false }] }], ellipsis: [{ type: i0.Input, args: [{ isSignal: true, alias: "ellipsis", required: false }] }], expandable: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandable", required: false }] }], expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: false }] }, { type: i0.Output, args: ["expandedChange"] }] } });
18798
+
17674
18799
  class FilterGroupComponent {
17675
18800
  /**
17676
18801
  * Multi-select mode allows multiple filters to be selected simultaneously.
@@ -18891,8 +20016,11 @@ class TimelineComponent {
18891
20016
  */
18892
20017
  variant = input("default", ...(ngDevMode ? [{ debugName: "variant" }] : []));
18893
20018
  /**
18894
- * Item padding in rems for the card variant.
18895
- * @default 1
20019
+ * Vertical padding of each item in the "card" variant, in rems (same scale
20020
+ * as Card). Both the gaps between items and the card's top/bottom edges
20021
+ * resolve to twice this value. Horizontal item padding is fixed at the card
20022
+ * default.
20023
+ * @default 0.5
18896
20024
  */
18897
20025
  cardPadding = input(...(ngDevMode ? [undefined, { debugName: "cardPadding" }] : []));
18898
20026
  items = signal([], ...(ngDevMode ? [{ debugName: "items" }] : []));
@@ -18903,7 +20031,7 @@ class TimelineComponent {
18903
20031
  this.items.update((list) => list.filter((i) => i !== item));
18904
20032
  }
18905
20033
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: TimelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18906
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.24", type: TimelineComponent, isStandalone: true, selector: "tedi-timeline", inputs: { activeIndex: { classPropertyName: "activeIndex", publicName: "activeIndex", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, cardPadding: { classPropertyName: "cardPadding", publicName: "cardPadding", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-timeline--card": "variant() === 'card'", "style.--_timeline-card-padding": "variant() === 'card' && cardPadding() != null ? cardPadding() + 'rem' : null" }, classAttribute: "tedi-timeline" }, ngImport: i0, template: "<ng-content />", isInline: true, styles: [".tedi-timeline{display:grid;grid-template-columns:max-content 1fr;grid-auto-rows:auto;grid-auto-flow:row dense;column-gap:var(--layout-grid-gutters-12)}@media(min-width:62rem){.tedi-timeline{grid-template-columns:max-content max-content 1fr;grid-auto-flow:row;row-gap:0}}.tedi-timeline--card{--_timeline-card-padding: var(--card-padding-md-default);background:var(--card-background-primary);border:1px solid var(--card-border-primary);border-radius:var(--card-radius-rounded)}.tedi-timeline--card .tedi-timeline-item{display:grid;grid-template-columns:subgrid;grid-column:1/-1;padding:var(--_timeline-card-padding);border-bottom:1px solid var(--card-border-primary)}.tedi-timeline--card .tedi-timeline-item:last-child{border-bottom:0}.tedi-timeline--card .tedi-timeline-item:not(:last-child) .tedi-timeline__marker{margin-bottom:calc(-2 * var(--_timeline-card-padding) - 10px)}.tedi-timeline--card .tedi-timeline__marker .tedi-separator--dot-only-outlined:before{background-color:var(--card-background-primary)}@media(max-width:61.98rem){.tedi-timeline--card .tedi-timeline-item .tedi-timeline__marker{grid-row:1/span 2}.tedi-timeline--card .tedi-timeline-item.tedi-timeline__item--has-bottom .tedi-timeline__marker{grid-row:1/span 3}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
20034
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.24", type: TimelineComponent, isStandalone: true, selector: "tedi-timeline", inputs: { activeIndex: { classPropertyName: "activeIndex", publicName: "activeIndex", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, cardPadding: { classPropertyName: "cardPadding", publicName: "cardPadding", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-timeline--card": "variant() === 'card'", "style.--_timeline-card-padding": "variant() === 'card' && cardPadding() != null ? cardPadding() + 'rem' : null" }, classAttribute: "tedi-timeline" }, ngImport: i0, template: "<ng-content />", isInline: true, styles: [".tedi-timeline{display:grid;grid-template-columns:max-content 1fr;grid-auto-rows:auto;grid-auto-flow:row dense;column-gap:var(--layout-grid-gutters-12)}@media(min-width:62rem){.tedi-timeline{grid-template-columns:max-content max-content 1fr;grid-auto-flow:row;row-gap:0}}.tedi-timeline--card{--_timeline-card-padding: var(--card-padding-xs);padding-block:var(--_timeline-card-padding);background:var(--card-background-primary);border:1px solid var(--card-border-primary);border-radius:var(--card-radius-rounded)}.tedi-timeline--card .tedi-timeline-item{display:grid;grid-template-columns:subgrid;grid-column:1/-1;padding:var(--_timeline-card-padding) var(--card-padding-md-default);border-bottom:1px solid var(--card-border-primary)}.tedi-timeline--card .tedi-timeline-item:last-child{border-bottom:0}.tedi-timeline--card .tedi-timeline__timings,.tedi-timeline--card .tedi-timeline__info{padding-top:0;padding-bottom:0}.tedi-timeline--card .tedi-timeline-item:not(:last-child) .tedi-timeline__marker{margin-bottom:calc(-2 * var(--_timeline-card-padding) - 10px)}.tedi-timeline--card .tedi-timeline__marker .tedi-separator--dot-only-outlined:before{background-color:var(--card-background-primary)}@media(max-width:61.98rem){.tedi-timeline--card .tedi-timeline-item .tedi-timeline__marker{grid-row:1/span 2}.tedi-timeline--card .tedi-timeline-item.tedi-timeline__item--has-bottom .tedi-timeline__marker{grid-row:1/span 3}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
18907
20035
  }
18908
20036
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: TimelineComponent, decorators: [{
18909
20037
  type: Component,
@@ -18911,7 +20039,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
18911
20039
  class: "tedi-timeline",
18912
20040
  "[class.tedi-timeline--card]": "variant() === 'card'",
18913
20041
  "[style.--_timeline-card-padding]": "variant() === 'card' && cardPadding() != null ? cardPadding() + 'rem' : null",
18914
- }, styles: [".tedi-timeline{display:grid;grid-template-columns:max-content 1fr;grid-auto-rows:auto;grid-auto-flow:row dense;column-gap:var(--layout-grid-gutters-12)}@media(min-width:62rem){.tedi-timeline{grid-template-columns:max-content max-content 1fr;grid-auto-flow:row;row-gap:0}}.tedi-timeline--card{--_timeline-card-padding: var(--card-padding-md-default);background:var(--card-background-primary);border:1px solid var(--card-border-primary);border-radius:var(--card-radius-rounded)}.tedi-timeline--card .tedi-timeline-item{display:grid;grid-template-columns:subgrid;grid-column:1/-1;padding:var(--_timeline-card-padding);border-bottom:1px solid var(--card-border-primary)}.tedi-timeline--card .tedi-timeline-item:last-child{border-bottom:0}.tedi-timeline--card .tedi-timeline-item:not(:last-child) .tedi-timeline__marker{margin-bottom:calc(-2 * var(--_timeline-card-padding) - 10px)}.tedi-timeline--card .tedi-timeline__marker .tedi-separator--dot-only-outlined:before{background-color:var(--card-background-primary)}@media(max-width:61.98rem){.tedi-timeline--card .tedi-timeline-item .tedi-timeline__marker{grid-row:1/span 2}.tedi-timeline--card .tedi-timeline-item.tedi-timeline__item--has-bottom .tedi-timeline__marker{grid-row:1/span 3}}\n"] }]
20042
+ }, styles: [".tedi-timeline{display:grid;grid-template-columns:max-content 1fr;grid-auto-rows:auto;grid-auto-flow:row dense;column-gap:var(--layout-grid-gutters-12)}@media(min-width:62rem){.tedi-timeline{grid-template-columns:max-content max-content 1fr;grid-auto-flow:row;row-gap:0}}.tedi-timeline--card{--_timeline-card-padding: var(--card-padding-xs);padding-block:var(--_timeline-card-padding);background:var(--card-background-primary);border:1px solid var(--card-border-primary);border-radius:var(--card-radius-rounded)}.tedi-timeline--card .tedi-timeline-item{display:grid;grid-template-columns:subgrid;grid-column:1/-1;padding:var(--_timeline-card-padding) var(--card-padding-md-default);border-bottom:1px solid var(--card-border-primary)}.tedi-timeline--card .tedi-timeline-item:last-child{border-bottom:0}.tedi-timeline--card .tedi-timeline__timings,.tedi-timeline--card .tedi-timeline__info{padding-top:0;padding-bottom:0}.tedi-timeline--card .tedi-timeline-item:not(:last-child) .tedi-timeline__marker{margin-bottom:calc(-2 * var(--_timeline-card-padding) - 10px)}.tedi-timeline--card .tedi-timeline__marker .tedi-separator--dot-only-outlined:before{background-color:var(--card-background-primary)}@media(max-width:61.98rem){.tedi-timeline--card .tedi-timeline-item .tedi-timeline__marker{grid-row:1/span 2}.tedi-timeline--card .tedi-timeline-item.tedi-timeline__item--has-bottom .tedi-timeline__marker{grid-row:1/span 3}}\n"] }]
18915
20043
  }], propDecorators: { activeIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeIndex", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], cardPadding: [{ type: i0.Input, args: [{ isSignal: true, alias: "cardPadding", required: false }] }] } });
18916
20044
 
18917
20045
  /**
@@ -18988,14 +20116,14 @@ class TimelineItemComponent {
18988
20116
  return "secondary";
18989
20117
  }, ...(ngDevMode ? [{ debugName: "color" }] : []));
18990
20118
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: TimelineItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18991
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: TimelineItemComponent, isStandalone: true, selector: "tedi-timeline-item", inputs: { timings: { classPropertyName: "timings", publicName: "timings", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-timeline__item--has-bottom": "isMobile() && !!timingsBottom()" }, classAttribute: "tedi-timeline-item" }, queries: [{ propertyName: "timingsBottom", first: true, predicate: TimelineTimingsBottomDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"tedi-timeline__timings\">\n @for (timing of timings(); track timing; let index = $index) {\n <div tedi-text color=\"tertiary\" class=\"tedi-timeline__time\">\n {{ timing }}\n </div>\n }\n @if (!isMobile() && timingsBottom()) {\n <div class=\"tedi-timeline__timings-bottom\">\n <ng-container *ngTemplateOutlet=\"timingsBottom()!.templateRef\" />\n </div>\n }\n</div>\n<div\n class=\"tedi-timeline__marker\"\n [ngClass]=\"{ 'tedi-timeline__marker--large': state() === 'current' }\"\n>\n <tedi-separator\n [color]=\"color()\"\n variant=\"dot-only\"\n [dotSize]=\"state() === 'current' ? 'large' : 'medium'\"\n [dotFilled]=\"state() !== 'future'\"\n />\n @if (!isLast()) {\n <tedi-separator\n axis=\"vertical\"\n [color]=\"state() === 'past' ? 'accent' : 'secondary'\"\n />\n }\n</div>\n<div class=\"tedi-timeline__info\">\n <div>\n <ng-content select=\"tedi-timeline-title\" />\n <ng-content select=\"tedi-timeline-description\" />\n </div>\n <div class=\"tedi-timeline__content\">\n <ng-content />\n </div>\n</div>\n@if (isMobile() && timingsBottom()) {\n <div class=\"tedi-timeline__timings-bottom\">\n <ng-container *ngTemplateOutlet=\"timingsBottom()!.templateRef\" />\n </div>\n}\n", styles: [":root{--timeline-padding-y: 8px;--timeline-text-min-height: 24px}tedi-timeline-item{display:contents}tedi-timeline-item .tedi-timeline__timings{display:flex;grid-row:auto;grid-column:2;gap:var(--layout-grid-gutters-04);align-items:center}@media(min-width:62rem){tedi-timeline-item .tedi-timeline__timings{flex-direction:column;grid-column:1;gap:0;align-items:end;padding-bottom:var(--timeline-padding-y)}}@media(min-width:62rem){tedi-timeline-item .tedi-timeline__timings>.tedi-timeline__timings-bottom{margin-top:auto;text-align:right}}tedi-timeline-item .tedi-timeline__timings .tedi-timeline__time{position:relative;display:flex;align-items:center;font-size:var(--body-small-regular-size)}@media(min-width:62rem){tedi-timeline-item .tedi-timeline__timings .tedi-timeline__time{min-height:var(--timeline-text-min-height)}tedi-timeline-item .tedi-timeline__timings .tedi-timeline__time:first-child{font-size:var(--body-regular-size)}}@media(max-width:61.98rem){tedi-timeline-item .tedi-timeline__timings .tedi-timeline__time:before{display:none;width:4px;height:4px;margin-inline:var(--layout-grid-gutters-04);content:\"\";background-color:currentcolor;border-radius:50%}tedi-timeline-item .tedi-timeline__timings .tedi-timeline__time:not(:first-child):before{display:inline-block}}tedi-timeline-item .tedi-timeline__marker{display:flex;flex-direction:column;grid-row:span 2;grid-column:1;align-items:center;align-self:stretch;padding-top:6px}tedi-timeline-item .tedi-timeline__marker:not(:last-child){margin-bottom:-6px}@media(min-width:62rem){tedi-timeline-item .tedi-timeline__marker{grid-row:auto;grid-column:2}}tedi-timeline-item .tedi-timeline__marker--large{padding-top:3px}tedi-timeline-item .tedi-timeline__info{display:flex;flex-direction:column;grid-row:auto;grid-column:2;gap:var(--timeline-padding-y);padding-bottom:var(--timeline-padding-y)}@media(min-width:62rem){tedi-timeline-item .tedi-timeline__info{grid-column:3}}tedi-timeline-item .tedi-timeline__content{display:flex;flex-direction:column;gap:var(--timeline-padding-y)}tedi-timeline-item>.tedi-timeline__timings-bottom{grid-row:auto;grid-column:2;padding-bottom:var(--timeline-padding-y)}tedi-timeline-item.tedi-timeline__item--has-bottom .tedi-timeline__marker{grid-row:span 3}\n"], dependencies: [{ kind: "component", type: SeparatorComponent, selector: "tedi-separator", inputs: ["axis", "color", "variant", "dotSize", "dotFilled", "thickness", "spacing", "size"] }, { kind: "component", type: TextComponent, selector: "[tedi-text]", inputs: ["modifiers", "color"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
20119
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: TimelineItemComponent, isStandalone: true, selector: "tedi-timeline-item", inputs: { timings: { classPropertyName: "timings", publicName: "timings", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-timeline__item--has-bottom": "isMobile() && !!timingsBottom()" }, classAttribute: "tedi-timeline-item" }, queries: [{ propertyName: "timingsBottom", first: true, predicate: TimelineTimingsBottomDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"tedi-timeline__timings\">\n @for (timing of timings(); track timing; let index = $index) {\n <div tedi-text color=\"tertiary\" class=\"tedi-timeline__time\">\n {{ timing }}\n </div>\n }\n @if (!isMobile() && timingsBottom()) {\n <div class=\"tedi-timeline__timings-bottom\">\n <ng-container *ngTemplateOutlet=\"timingsBottom()!.templateRef\" />\n </div>\n }\n</div>\n<div\n class=\"tedi-timeline__marker\"\n [ngClass]=\"{ 'tedi-timeline__marker--large': state() === 'current' }\"\n>\n <tedi-separator\n [color]=\"color()\"\n variant=\"dot-only\"\n [dotSize]=\"state() === 'current' ? 'large' : 'medium'\"\n [dotFilled]=\"state() !== 'future'\"\n />\n @if (!isLast()) {\n <tedi-separator\n axis=\"vertical\"\n [color]=\"state() === 'past' ? 'accent' : 'secondary'\"\n />\n }\n</div>\n<div class=\"tedi-timeline__info\">\n <div>\n <ng-content select=\"tedi-timeline-title\" />\n <ng-content select=\"tedi-timeline-description\" />\n </div>\n <div class=\"tedi-timeline__content\">\n <ng-content />\n </div>\n</div>\n@if (isMobile() && timingsBottom()) {\n <div class=\"tedi-timeline__timings-bottom\">\n <ng-container *ngTemplateOutlet=\"timingsBottom()!.templateRef\" />\n </div>\n}\n", styles: [":root{--timeline-padding-y: 8px;--timeline-text-min-height: 24px;--timeline-dot-offset-md: calc( (var(--timeline-text-min-height) - var(--separator-dot-size-md)) / 2 );--timeline-dot-offset-lg: calc( (var(--timeline-text-min-height) - var(--separator-dot-size-lg)) / 2 )}tedi-timeline-item{display:contents}tedi-timeline-item .tedi-timeline__timings{display:flex;grid-row:auto;grid-column:2;gap:var(--layout-grid-gutters-04);align-items:center}@media(min-width:62rem){tedi-timeline-item .tedi-timeline__timings{flex-direction:column;grid-column:1;gap:0;align-items:end;padding-bottom:var(--timeline-padding-y)}}@media(min-width:62rem){tedi-timeline-item .tedi-timeline__timings>.tedi-timeline__timings-bottom{margin-top:auto;text-align:right}}tedi-timeline-item .tedi-timeline__timings .tedi-timeline__time{position:relative;display:flex;align-items:center;font-size:var(--body-small-regular-size)}@media(min-width:62rem){tedi-timeline-item .tedi-timeline__timings .tedi-timeline__time{min-height:var(--timeline-text-min-height)}tedi-timeline-item .tedi-timeline__timings .tedi-timeline__time:first-child{font-size:var(--body-regular-size)}}@media(max-width:61.98rem){tedi-timeline-item .tedi-timeline__timings .tedi-timeline__time:before{display:none;width:var(--separator-dot-size-sm);height:var(--separator-dot-size-sm);margin-inline:var(--layout-grid-gutters-04);content:\"\";background-color:currentcolor;border-radius:50%}tedi-timeline-item .tedi-timeline__timings .tedi-timeline__time:not(:first-child):before{display:inline-block}}tedi-timeline-item .tedi-timeline__marker{display:flex;flex-direction:column;grid-row:span 2;grid-column:1;align-items:center;align-self:stretch;padding-top:var(--timeline-dot-offset-md)}tedi-timeline-item .tedi-timeline__marker:not(:last-child){margin-bottom:calc(-1 * var(--timeline-dot-offset-md))}@media(min-width:62rem){tedi-timeline-item .tedi-timeline__marker{grid-row:auto;grid-column:2}}tedi-timeline-item .tedi-timeline__marker--large{padding-top:var(--timeline-dot-offset-lg)}tedi-timeline-item .tedi-timeline__info{display:flex;flex-direction:column;grid-row:auto;grid-column:2;gap:var(--timeline-padding-y);padding-bottom:var(--timeline-padding-y)}@media(min-width:62rem){tedi-timeline-item .tedi-timeline__info{grid-column:3}}tedi-timeline-item .tedi-timeline__content{display:flex;flex-direction:column;gap:var(--timeline-padding-y)}tedi-timeline-item>.tedi-timeline__timings-bottom{grid-row:auto;grid-column:2;padding-bottom:var(--timeline-padding-y)}tedi-timeline-item.tedi-timeline__item--has-bottom .tedi-timeline__marker{grid-row:span 3}\n"], dependencies: [{ kind: "component", type: SeparatorComponent, selector: "tedi-separator", inputs: ["axis", "color", "variant", "dotSize", "dotFilled", "thickness", "spacing", "size"] }, { kind: "component", type: TextComponent, selector: "[tedi-text]", inputs: ["modifiers", "color"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
18992
20120
  }
18993
20121
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: TimelineItemComponent, decorators: [{
18994
20122
  type: Component,
18995
20123
  args: [{ standalone: true, selector: "tedi-timeline-item", imports: [SeparatorComponent, TextComponent, NgClass, NgTemplateOutlet], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
18996
20124
  class: "tedi-timeline-item",
18997
20125
  "[class.tedi-timeline__item--has-bottom]": "isMobile() && !!timingsBottom()",
18998
- }, template: "<div class=\"tedi-timeline__timings\">\n @for (timing of timings(); track timing; let index = $index) {\n <div tedi-text color=\"tertiary\" class=\"tedi-timeline__time\">\n {{ timing }}\n </div>\n }\n @if (!isMobile() && timingsBottom()) {\n <div class=\"tedi-timeline__timings-bottom\">\n <ng-container *ngTemplateOutlet=\"timingsBottom()!.templateRef\" />\n </div>\n }\n</div>\n<div\n class=\"tedi-timeline__marker\"\n [ngClass]=\"{ 'tedi-timeline__marker--large': state() === 'current' }\"\n>\n <tedi-separator\n [color]=\"color()\"\n variant=\"dot-only\"\n [dotSize]=\"state() === 'current' ? 'large' : 'medium'\"\n [dotFilled]=\"state() !== 'future'\"\n />\n @if (!isLast()) {\n <tedi-separator\n axis=\"vertical\"\n [color]=\"state() === 'past' ? 'accent' : 'secondary'\"\n />\n }\n</div>\n<div class=\"tedi-timeline__info\">\n <div>\n <ng-content select=\"tedi-timeline-title\" />\n <ng-content select=\"tedi-timeline-description\" />\n </div>\n <div class=\"tedi-timeline__content\">\n <ng-content />\n </div>\n</div>\n@if (isMobile() && timingsBottom()) {\n <div class=\"tedi-timeline__timings-bottom\">\n <ng-container *ngTemplateOutlet=\"timingsBottom()!.templateRef\" />\n </div>\n}\n", styles: [":root{--timeline-padding-y: 8px;--timeline-text-min-height: 24px}tedi-timeline-item{display:contents}tedi-timeline-item .tedi-timeline__timings{display:flex;grid-row:auto;grid-column:2;gap:var(--layout-grid-gutters-04);align-items:center}@media(min-width:62rem){tedi-timeline-item .tedi-timeline__timings{flex-direction:column;grid-column:1;gap:0;align-items:end;padding-bottom:var(--timeline-padding-y)}}@media(min-width:62rem){tedi-timeline-item .tedi-timeline__timings>.tedi-timeline__timings-bottom{margin-top:auto;text-align:right}}tedi-timeline-item .tedi-timeline__timings .tedi-timeline__time{position:relative;display:flex;align-items:center;font-size:var(--body-small-regular-size)}@media(min-width:62rem){tedi-timeline-item .tedi-timeline__timings .tedi-timeline__time{min-height:var(--timeline-text-min-height)}tedi-timeline-item .tedi-timeline__timings .tedi-timeline__time:first-child{font-size:var(--body-regular-size)}}@media(max-width:61.98rem){tedi-timeline-item .tedi-timeline__timings .tedi-timeline__time:before{display:none;width:4px;height:4px;margin-inline:var(--layout-grid-gutters-04);content:\"\";background-color:currentcolor;border-radius:50%}tedi-timeline-item .tedi-timeline__timings .tedi-timeline__time:not(:first-child):before{display:inline-block}}tedi-timeline-item .tedi-timeline__marker{display:flex;flex-direction:column;grid-row:span 2;grid-column:1;align-items:center;align-self:stretch;padding-top:6px}tedi-timeline-item .tedi-timeline__marker:not(:last-child){margin-bottom:-6px}@media(min-width:62rem){tedi-timeline-item .tedi-timeline__marker{grid-row:auto;grid-column:2}}tedi-timeline-item .tedi-timeline__marker--large{padding-top:3px}tedi-timeline-item .tedi-timeline__info{display:flex;flex-direction:column;grid-row:auto;grid-column:2;gap:var(--timeline-padding-y);padding-bottom:var(--timeline-padding-y)}@media(min-width:62rem){tedi-timeline-item .tedi-timeline__info{grid-column:3}}tedi-timeline-item .tedi-timeline__content{display:flex;flex-direction:column;gap:var(--timeline-padding-y)}tedi-timeline-item>.tedi-timeline__timings-bottom{grid-row:auto;grid-column:2;padding-bottom:var(--timeline-padding-y)}tedi-timeline-item.tedi-timeline__item--has-bottom .tedi-timeline__marker{grid-row:span 3}\n"] }]
20126
+ }, template: "<div class=\"tedi-timeline__timings\">\n @for (timing of timings(); track timing; let index = $index) {\n <div tedi-text color=\"tertiary\" class=\"tedi-timeline__time\">\n {{ timing }}\n </div>\n }\n @if (!isMobile() && timingsBottom()) {\n <div class=\"tedi-timeline__timings-bottom\">\n <ng-container *ngTemplateOutlet=\"timingsBottom()!.templateRef\" />\n </div>\n }\n</div>\n<div\n class=\"tedi-timeline__marker\"\n [ngClass]=\"{ 'tedi-timeline__marker--large': state() === 'current' }\"\n>\n <tedi-separator\n [color]=\"color()\"\n variant=\"dot-only\"\n [dotSize]=\"state() === 'current' ? 'large' : 'medium'\"\n [dotFilled]=\"state() !== 'future'\"\n />\n @if (!isLast()) {\n <tedi-separator\n axis=\"vertical\"\n [color]=\"state() === 'past' ? 'accent' : 'secondary'\"\n />\n }\n</div>\n<div class=\"tedi-timeline__info\">\n <div>\n <ng-content select=\"tedi-timeline-title\" />\n <ng-content select=\"tedi-timeline-description\" />\n </div>\n <div class=\"tedi-timeline__content\">\n <ng-content />\n </div>\n</div>\n@if (isMobile() && timingsBottom()) {\n <div class=\"tedi-timeline__timings-bottom\">\n <ng-container *ngTemplateOutlet=\"timingsBottom()!.templateRef\" />\n </div>\n}\n", styles: [":root{--timeline-padding-y: 8px;--timeline-text-min-height: 24px;--timeline-dot-offset-md: calc( (var(--timeline-text-min-height) - var(--separator-dot-size-md)) / 2 );--timeline-dot-offset-lg: calc( (var(--timeline-text-min-height) - var(--separator-dot-size-lg)) / 2 )}tedi-timeline-item{display:contents}tedi-timeline-item .tedi-timeline__timings{display:flex;grid-row:auto;grid-column:2;gap:var(--layout-grid-gutters-04);align-items:center}@media(min-width:62rem){tedi-timeline-item .tedi-timeline__timings{flex-direction:column;grid-column:1;gap:0;align-items:end;padding-bottom:var(--timeline-padding-y)}}@media(min-width:62rem){tedi-timeline-item .tedi-timeline__timings>.tedi-timeline__timings-bottom{margin-top:auto;text-align:right}}tedi-timeline-item .tedi-timeline__timings .tedi-timeline__time{position:relative;display:flex;align-items:center;font-size:var(--body-small-regular-size)}@media(min-width:62rem){tedi-timeline-item .tedi-timeline__timings .tedi-timeline__time{min-height:var(--timeline-text-min-height)}tedi-timeline-item .tedi-timeline__timings .tedi-timeline__time:first-child{font-size:var(--body-regular-size)}}@media(max-width:61.98rem){tedi-timeline-item .tedi-timeline__timings .tedi-timeline__time:before{display:none;width:var(--separator-dot-size-sm);height:var(--separator-dot-size-sm);margin-inline:var(--layout-grid-gutters-04);content:\"\";background-color:currentcolor;border-radius:50%}tedi-timeline-item .tedi-timeline__timings .tedi-timeline__time:not(:first-child):before{display:inline-block}}tedi-timeline-item .tedi-timeline__marker{display:flex;flex-direction:column;grid-row:span 2;grid-column:1;align-items:center;align-self:stretch;padding-top:var(--timeline-dot-offset-md)}tedi-timeline-item .tedi-timeline__marker:not(:last-child){margin-bottom:calc(-1 * var(--timeline-dot-offset-md))}@media(min-width:62rem){tedi-timeline-item .tedi-timeline__marker{grid-row:auto;grid-column:2}}tedi-timeline-item .tedi-timeline__marker--large{padding-top:var(--timeline-dot-offset-lg)}tedi-timeline-item .tedi-timeline__info{display:flex;flex-direction:column;grid-row:auto;grid-column:2;gap:var(--timeline-padding-y);padding-bottom:var(--timeline-padding-y)}@media(min-width:62rem){tedi-timeline-item .tedi-timeline__info{grid-column:3}}tedi-timeline-item .tedi-timeline__content{display:flex;flex-direction:column;gap:var(--timeline-padding-y)}tedi-timeline-item>.tedi-timeline__timings-bottom{grid-row:auto;grid-column:2;padding-bottom:var(--timeline-padding-y)}tedi-timeline-item.tedi-timeline__item--has-bottom .tedi-timeline__marker{grid-row:span 3}\n"] }]
18999
20127
  }], propDecorators: { timings: [{ type: i0.Input, args: [{ isSignal: true, alias: "timings", required: false }] }], timingsBottom: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TimelineTimingsBottomDirective), { isSignal: true }] }] } });
19000
20128
 
19001
20129
  class TimelineDescriptionComponent {
@@ -19118,70 +20246,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
19118
20246
  args: ["class"]
19119
20247
  }] } });
19120
20248
 
19121
- class LinkComponent {
19122
- variant = input("default", ...(ngDevMode ? [{ debugName: "variant" }] : []));
19123
- size = input("default", ...(ngDevMode ? [{ debugName: "size" }] : []));
19124
- underline = input(true, ...(ngDevMode ? [{ debugName: "underline" }] : []));
19125
- target = input(...(ngDevMode ? [undefined, { debugName: "target" }] : []));
19126
- xs = input(...(ngDevMode ? [undefined, { debugName: "xs" }] : []));
19127
- sm = input(...(ngDevMode ? [undefined, { debugName: "sm" }] : []));
19128
- md = input(...(ngDevMode ? [undefined, { debugName: "md" }] : []));
19129
- lg = input(...(ngDevMode ? [undefined, { debugName: "lg" }] : []));
19130
- xl = input(...(ngDevMode ? [undefined, { debugName: "xl" }] : []));
19131
- xxl = input(...(ngDevMode ? [undefined, { debugName: "xxl" }] : []));
19132
- host = inject(ElementRef);
19133
- renderer = inject(Renderer2);
19134
- ngAfterContentChecked() {
19135
- const childNodes = Array.from(this.host.nativeElement.childNodes);
19136
- for (const node of childNodes) {
19137
- if (node.nodeType === Node.TEXT_NODE && node.textContent?.trim()) {
19138
- if (node.parentNode !== this.host.nativeElement) {
19139
- continue;
19140
- }
19141
- const span = this.renderer.createElement("span");
19142
- this.renderer.insertBefore(this.host.nativeElement, span, node);
19143
- this.renderer.appendChild(span, node);
19144
- }
19145
- }
19146
- }
19147
- breakpointService = inject(BreakpointService);
19148
- breakpointInputs = computed(() => {
19149
- return this.breakpointService.getBreakpointInputs({
19150
- variant: this.variant(),
19151
- size: this.size(),
19152
- underline: this.underline(),
19153
- xs: this.xs(),
19154
- sm: this.sm(),
19155
- md: this.md(),
19156
- lg: this.lg(),
19157
- xl: this.xl(),
19158
- xxl: this.xxl(),
19159
- });
19160
- }, ...(ngDevMode ? [{ debugName: "breakpointInputs" }] : []));
19161
- classes = computed(() => {
19162
- const classList = ["tedi-link"];
19163
- if (this.breakpointInputs().variant === "inverted") {
19164
- classList.push("tedi-link--inverted");
19165
- }
19166
- if (this.breakpointInputs().size === "small") {
19167
- classList.push("tedi-link--small");
19168
- }
19169
- if (!this.breakpointInputs().underline) {
19170
- classList.push("tedi-link--no-underline");
19171
- }
19172
- return classList.join(" ");
19173
- }, ...(ngDevMode ? [{ debugName: "classes" }] : []));
19174
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: LinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19175
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: LinkComponent, isStandalone: true, selector: "[tedi-link]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, underline: { classPropertyName: "underline", publicName: "underline", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, xs: { classPropertyName: "xs", publicName: "xs", isSignal: true, isRequired: false, transformFunction: null }, sm: { classPropertyName: "sm", publicName: "sm", isSignal: true, isRequired: false, transformFunction: null }, md: { classPropertyName: "md", publicName: "md", isSignal: true, isRequired: false, transformFunction: null }, lg: { classPropertyName: "lg", publicName: "lg", isSignal: true, isRequired: false, transformFunction: null }, xl: { classPropertyName: "xl", publicName: "xl", isSignal: true, isRequired: false, transformFunction: null }, xxl: { classPropertyName: "xxl", publicName: "xxl", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.tabIndex": "0" } }, ngImport: i0, template: "<ng-content></ng-content>\n@if (target() === \"_blank\") {\n <span class=\"sr-only\">{{ \"anchor.new-tab\" | tediTranslate }}</span>\n}\n", styles: [".tedi-link{display:inline-flex;text-decoration:none;cursor:pointer;color:var(--link-primary-default)}.tedi-link:hover:not(:disabled,[aria-disabled=true]){color:var(--link-primary-hover)}.tedi-link:hover:not(:disabled,[aria-disabled=true]) .tedi-link__text{text-decoration:underline}.tedi-link:active:not(:disabled,[aria-disabled=true]){color:var(--link-primary-active)}.tedi-link:active:not(:disabled,[aria-disabled=true]) .tedi-link__text{text-decoration:underline}.tedi-link:focus-visible:not(:disabled){color:var(--link-primary-focus);outline:2px solid var(--link-primary-focus);outline-offset:1px;border-radius:0}.tedi-link:focus-visible:not(:disabled) .tedi-link__text{text-decoration:underline}.tedi-link:where(button){padding:0;font:inherit;text-align:inherit;appearance:none;background:none;border:0}.tedi-link--inverted{color:var(--link-inverted-default)}.tedi-link--inverted:hover:not(:disabled,[aria-disabled=true]){color:var(--link-inverted-hover)}.tedi-link--inverted:hover:not(:disabled,[aria-disabled=true]) .tedi-link__text{text-decoration:underline}.tedi-link--inverted:active:not(:disabled,[aria-disabled=true]){color:var(--link-inverted-active)}.tedi-link--inverted:active:not(:disabled,[aria-disabled=true]) .tedi-link__text{text-decoration:underline}.tedi-link--inverted:focus-visible:not(:disabled){color:var(--link-inverted-focus);outline:2px solid var(--link-inverted-focus);outline-offset:1px;border-radius:0}.tedi-link--inverted:focus-visible:not(:disabled) .tedi-link__text{text-decoration:underline}.tedi-link--small{font-size:var(--body-small-regular-size)}.tedi-link:not(.tedi-link--no-underline) :not(tedi-icon){text-decoration:underline}.tedi-link:hover :not(tedi-icon){text-decoration:underline}.tedi-link tedi-icon{--_tedi-icon-size: var(--icon-03);height:fit-content;margin-right:var(--button-sm-inner-spacing);margin-left:var(--button-sm-inner-spacing);line-height:inherit;color:inherit}.tedi-link tedi-icon:first-child{margin-left:0}.tedi-link tedi-icon:last-child{margin-right:0}.tedi-link--small tedi-icon{--_tedi-icon-size: var(--icon-02)}\n"], dependencies: [{ kind: "pipe", type: TediTranslationPipe, name: "tediTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
19176
- }
19177
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: LinkComponent, decorators: [{
19178
- type: Component,
19179
- args: [{ selector: "[tedi-link]", standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [TediTranslationPipe], host: {
19180
- "[class]": "classes()",
19181
- "[attr.tabIndex]": "0",
19182
- }, template: "<ng-content></ng-content>\n@if (target() === \"_blank\") {\n <span class=\"sr-only\">{{ \"anchor.new-tab\" | tediTranslate }}</span>\n}\n", styles: [".tedi-link{display:inline-flex;text-decoration:none;cursor:pointer;color:var(--link-primary-default)}.tedi-link:hover:not(:disabled,[aria-disabled=true]){color:var(--link-primary-hover)}.tedi-link:hover:not(:disabled,[aria-disabled=true]) .tedi-link__text{text-decoration:underline}.tedi-link:active:not(:disabled,[aria-disabled=true]){color:var(--link-primary-active)}.tedi-link:active:not(:disabled,[aria-disabled=true]) .tedi-link__text{text-decoration:underline}.tedi-link:focus-visible:not(:disabled){color:var(--link-primary-focus);outline:2px solid var(--link-primary-focus);outline-offset:1px;border-radius:0}.tedi-link:focus-visible:not(:disabled) .tedi-link__text{text-decoration:underline}.tedi-link:where(button){padding:0;font:inherit;text-align:inherit;appearance:none;background:none;border:0}.tedi-link--inverted{color:var(--link-inverted-default)}.tedi-link--inverted:hover:not(:disabled,[aria-disabled=true]){color:var(--link-inverted-hover)}.tedi-link--inverted:hover:not(:disabled,[aria-disabled=true]) .tedi-link__text{text-decoration:underline}.tedi-link--inverted:active:not(:disabled,[aria-disabled=true]){color:var(--link-inverted-active)}.tedi-link--inverted:active:not(:disabled,[aria-disabled=true]) .tedi-link__text{text-decoration:underline}.tedi-link--inverted:focus-visible:not(:disabled){color:var(--link-inverted-focus);outline:2px solid var(--link-inverted-focus);outline-offset:1px;border-radius:0}.tedi-link--inverted:focus-visible:not(:disabled) .tedi-link__text{text-decoration:underline}.tedi-link--small{font-size:var(--body-small-regular-size)}.tedi-link:not(.tedi-link--no-underline) :not(tedi-icon){text-decoration:underline}.tedi-link:hover :not(tedi-icon){text-decoration:underline}.tedi-link tedi-icon{--_tedi-icon-size: var(--icon-03);height:fit-content;margin-right:var(--button-sm-inner-spacing);margin-left:var(--button-sm-inner-spacing);line-height:inherit;color:inherit}.tedi-link tedi-icon:first-child{margin-left:0}.tedi-link tedi-icon:last-child{margin-right:0}.tedi-link--small tedi-icon{--_tedi-icon-size: var(--icon-02)}\n"] }]
19183
- }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], underline: [{ type: i0.Input, args: [{ isSignal: true, alias: "underline", required: false }] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }], xs: [{ type: i0.Input, args: [{ isSignal: true, alias: "xs", required: false }] }], sm: [{ type: i0.Input, args: [{ isSignal: true, alias: "sm", required: false }] }], md: [{ type: i0.Input, args: [{ isSignal: true, alias: "md", required: false }] }], lg: [{ type: i0.Input, args: [{ isSignal: true, alias: "lg", required: false }] }], xl: [{ type: i0.Input, args: [{ isSignal: true, alias: "xl", required: false }] }], xxl: [{ type: i0.Input, args: [{ isSignal: true, alias: "xxl", required: false }] }] } });
19184
-
19185
20249
  class FooterBottomComponent {
19186
20250
  injector = inject(Injector);
19187
20251
  renderer = inject(Renderer2);
@@ -20150,7 +21214,7 @@ class HeaderRoleComponent {
20150
21214
  return { name: icon.name, size: icon.size ?? 24 };
20151
21215
  }
20152
21216
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: HeaderRoleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20153
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: HeaderRoleComponent, isStandalone: true, selector: "tedi-header-role", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, showSearch: { classPropertyName: "showSearch", publicName: "showSearch", isSignal: true, isRequired: false, transformFunction: null }, searchClearable: { classPropertyName: "searchClearable", publicName: "searchClearable", isSignal: true, isRequired: false, transformFunction: null }, clearSearchOnSelect: { classPropertyName: "clearSearchOnSelect", publicName: "clearSearchOnSelect", isSignal: true, isRequired: false, transformFunction: null }, isOrganization: { classPropertyName: "isOrganization", publicName: "isOrganization", isSignal: true, isRequired: false, transformFunction: null }, searchLabel: { classPropertyName: "searchLabel", publicName: "searchLabel", isSignal: true, isRequired: false, transformFunction: null }, organizationSearchLabel: { classPropertyName: "organizationSearchLabel", publicName: "organizationSearchLabel", isSignal: true, isRequired: false, transformFunction: null }, showRoleSwitch: { classPropertyName: "showRoleSwitch", publicName: "showRoleSwitch", isSignal: true, isRequired: false, transformFunction: null }, representatives: { classPropertyName: "representatives", publicName: "representatives", isSignal: true, isRequired: true, transformFunction: null }, currentRepresentative: { classPropertyName: "currentRepresentative", publicName: "currentRepresentative", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { currentRepresentative: "currentRepresentativeChange", roleSelectionToggle: "roleSelectionToggle" }, host: { classAttribute: "tedi-header-role" }, queries: [{ propertyName: "titleContent", first: true, predicate: HeaderRoleTitleDirective, descendants: true, isSignal: true }, { propertyName: "customContent", first: true, predicate: HeaderRoleContentDirective, descendants: true, isSignal: true }, { propertyName: "noResultsContent", first: true, predicate: HeaderRoleNoResultsDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "popover", first: true, predicate: PopoverComponent, descendants: true, isSignal: true }, { propertyName: "searchInput", first: true, predicate: SearchComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container *hideAt=\"'lg'\">\n <div\n class=\"tedi-header-role__head\"\n [class.tedi-header-role__head--open]=\"mobileOpen() && hasRoleSelection()\"\n >\n <div\n tedi-text\n color=\"secondary\"\n class=\"tedi-header-role__info\"\n [class.tedi-header-role__info--inline]=\"!hasRoleSelection()\"\n >\n <div class=\"tedi-header-role__info-title\">\n <ng-container *ngTemplateOutlet=\"roleTitle\"></ng-container>\n <p tedi-text modifiers=\"bold\" color=\"secondary\">\n {{ currentRepresentative().name }}\n </p>\n </div>\n @if (description()) {\n @if (!hasRoleSelection()) {\n <tedi-separator axis=\"vertical\" size=\"1rem\" />\n }\n <span class=\"tedi-header-role__description\">{{ description() }}</span>\n }\n </div>\n @if (hasRoleSelection()) {\n <button\n type=\"button\"\n tedi-button\n variant=\"neutral\"\n (click)=\"handleMobileOpen()\"\n >\n {{ collapseText() }}\n <tedi-icon name=\"expand_more\" [attr.data-open]=\"mobileOpen()\" />\n </button>\n }\n </div>\n @if (hasRoleSelection()) {\n <div class=\"tedi-header-role__collapse\" [attr.data-open]=\"mobileOpen()\">\n <div class=\"tedi-header-role__collapse--items\">\n @if (hasCustomContent()) {\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate()\"\n ></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n }\n </div>\n </div>\n }\n</ng-container>\n\n<ng-container *showAt=\"'lg'\">\n @if (label() || description() || hasTitle()) {\n <div\n tedi-text\n color=\"secondary\"\n modifiers=\"small\"\n class=\"tedi-header-role__head\"\n [class.tedi-header-role__head--open]=\"hasRoleSelection() && mobileOpen()\"\n >\n <ng-container *ngTemplateOutlet=\"roleTitle\"></ng-container>\n\n @if (description()) {\n <span class=\"tedi-header-role__description\">{{ description() }}</span>\n }\n </div>\n }\n\n @if (hasRoleSelection()) {\n <tedi-popover\n [withBorder]=\"true\"\n position=\"bottom\"\n [preventOverflow]=\"true\"\n >\n <button\n type=\"button\"\n tedi-popover-trigger\n class=\"tedi-link tedi-header__link-button\"\n >\n <span>{{ currentRepresentative().name }}</span>\n <tedi-icon\n name=\"expand_more\"\n [size]=\"16\"\n class=\"tedi-header-role__chevron\"\n />\n </button>\n <tedi-popover-content maxWidth=\"small\" class=\"tedi-header-role__dropdown\">\n @if (hasCustomContent()) {\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate()\"\n ></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n }\n </tedi-popover-content>\n </tedi-popover>\n } @else {\n <div class=\"tedi-header-role__value\">\n {{ currentRepresentative().name }}\n </div>\n }\n</ng-container>\n\n<ng-template #content>\n @if (showSearch()) {\n <tedi-search\n [inputId]=\"inputId\"\n [label]=\"searchText()\"\n [value]=\"inputValue()\"\n [clearable]=\"searchClearable()\"\n (valueChange)=\"handleInputChange($event)\"\n />\n }\n @if (filteredRepresentatives().length === 0) {\n @if (hasNoResultsContent()) {\n <ng-container *ngTemplateOutlet=\"noResultsTemplate()\"></ng-container>\n } @else {\n <span class=\"tedi-header-role__no-results\">{{ noResultsText() }}</span>\n }\n }\n @for (r of filteredRepresentatives(); track r.id) {\n <button\n type=\"button\"\n class=\"tedi-header-role__representative\"\n [attr.data-selected]=\"r.id === currentRepresentative().id\"\n (click)=\"handleSelectRepresentative(r)\"\n >\n @if (resolveIcon(r.icon); as icon) {\n <tedi-icon [name]=\"icon.name\" [size]=\"icon.size\" />\n }\n <div>\n <div>{{ r.name }}</div>\n @if (r.description) {\n <div tedi-text modifiers=\"small\">\n {{ r.description }}\n </div>\n }\n </div>\n </button>\n }\n</ng-template>\n\n<ng-template #roleTitle>\n <ng-content select=\"[tedi-header-role-title]\">\n @if (label(); as labelText) {\n <p\n tedi-text\n [modifiers]=\"isTabletView() ? ['bold'] : ['small', 'bold']\"\n color=\"secondary\"\n >\n {{ labelText }}\n </p>\n }\n </ng-content>\n</ng-template>\n", styles: [":root{--_header-role-transition-duration: .3s}.tedi-header-role{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;height:unset;background-color:var(--general-surface-secondary);border-bottom:var(--tedi-borders-04) solid var(--general-border-brand)}@media(min-width:62rem){.tedi-header-role{background-color:transparent;border-bottom:0}}.tedi-header-role [tedi-popover-trigger] .tedi-header-role__chevron{margin:0;transition:transform .2s ease-in-out}.tedi-header-role [tedi-popover-trigger][aria-expanded=true] .tedi-header-role__chevron{transform:rotate(-180deg)}.tedi-header-role__head{display:flex;gap:var(--layout-grid-gutters-04);align-items:center;justify-content:space-between;width:100%;padding:var(--card-padding-md-default);transition:padding var(--_header-role-transition-duration) ease}@media(min-width:62rem){.tedi-header-role__head{justify-content:flex-start;padding:0}}.tedi-header-role__head .tedi-header-role__info{display:flex;flex-direction:column;align-items:flex-start}.tedi-header-role__head .tedi-header-role__info--inline{flex-direction:row;gap:var(--layout-grid-gutters-08);align-items:center}.tedi-header-role__head .tedi-header-role__info-title{display:flex;flex-wrap:wrap;gap:var(--layout-grid-gutters-04);align-items:center}.tedi-header-role__head button{gap:var(--link-inner-spacing-x);padding:0;border:none}.tedi-header-role__head button tedi-icon{transition:transform .2s ease-in-out}.tedi-header-role__head button tedi-icon[data-open=true]{transform:rotate(-180deg)}.tedi-header-role__dropdown{display:flex;flex-direction:column;gap:var(--layout-grid-gutters-16)}.tedi-header-role__dropdown>*:not(:first-child){position:relative}.tedi-header-role__dropdown>*:not(:first-child):after{position:absolute;top:calc(-1 * (var(--layout-grid-gutters-16) / 2 + 1px));left:0;width:100%;height:1px;content:\"\";background-color:var(--general-border-primary)}.tedi-header-role__value{min-width:max-content}.tedi-header-role__representative{display:flex;gap:var(--layout-grid-gutters-08);align-items:center;width:100%;padding:var(--card-padding-xs);font-size:var(--body-regular-size);color:var(--general-text-secondary);text-align:start;cursor:pointer;background:transparent;border:0;border-radius:var(--card-radius-rounded)}.tedi-header-role__representative:not([data-selected=true]):hover{color:var(--general-text-primary);background:var(--header-popover-item-hover)}.tedi-header-role__representative:not([data-selected=true]):active{color:var(--general-text-white);background:var(--header-popover-item-active)}.tedi-header-role__representative:focus-visible{outline:var(--tedi-borders-02) solid var(--tedi-primary-500);outline-offset:var(--tedi-borders-01)}.tedi-header-role__representative[data-selected=true]{color:var(--general-text-white);background:var(--header-popover-item-selected)}.tedi-header-role__representative tedi-icon{color:inherit}.tedi-header-role__representative [tedi-text]{color:inherit}.tedi-header-role__no-results{padding-top:var(--layout-grid-gutters-08);color:var(--general-text-secondary);text-align:center}.tedi-header-role__collapse{display:grid;visibility:hidden;grid-template-rows:minmax(0,0fr);width:100%;overflow:hidden;transition:grid-template-rows var(--_header-role-transition-duration) ease}.tedi-header-role__collapse[data-open=true]{visibility:visible;grid-template-rows:minmax(0,1fr)}.tedi-header-role__collapse[data-open=true] .tedi-header-role__collapse--items{visibility:visible}.tedi-header-role__collapse--items{display:flex;visibility:hidden;flex-direction:column;gap:var(--layout-grid-gutters-16);min-height:0;padding:0 var(--card-padding-md-default) var(--card-padding-md-default) var(--card-padding-md-default);overflow:hidden;transition:visibility var(--_header-role-transition-duration) ease}.tedi-header-role__collapse--items>*:not(:first-child){position:relative}.tedi-header-role__collapse--items>*:not(:first-child):after{position:absolute;top:calc(-1 * (var(--layout-grid-gutters-16) / 2 + 1px));left:0;width:100%;height:1px;content:\"\";background-color:var(--general-border-primary)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverComponent, selector: "tedi-popover", inputs: ["position", "preventOverflow", "dismissible", "hideOnScroll", "withBorder", "withArrow", "lockScroll", "timeoutDelay"] }, { kind: "directive", type: PopoverTriggerDirective, selector: "[tedi-popover-trigger]", inputs: ["underline", "interactive"] }, { kind: "component", type: PopoverContentComponent, selector: "tedi-popover-content", inputs: ["maxWidth", "title", "showClose"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "component", type: ButtonComponent, selector: "[tedi-button]", inputs: ["variant", "size"] }, { kind: "component", type: TextComponent, selector: "[tedi-text]", inputs: ["modifiers", "color"] }, { kind: "directive", type: ShowAtDirective, selector: "[showAt]", inputs: ["showAt"] }, { kind: "directive", type: HideAtDirective, selector: "[hideAt]", inputs: ["hideAt"] }, { kind: "component", type: SeparatorComponent, selector: "tedi-separator", inputs: ["axis", "color", "variant", "dotSize", "dotFilled", "thickness", "spacing", "size"] }, { kind: "component", type: SearchComponent, selector: "tedi-search", inputs: ["inputId", "label", "value", "placeholder", "size", "clearable", "searchIcon", "disabled", "button", "feedbackText", "ariaLabel"], outputs: ["valueChange", "searchEvent", "clear"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
21217
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.24", type: HeaderRoleComponent, isStandalone: true, selector: "tedi-header-role", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, showSearch: { classPropertyName: "showSearch", publicName: "showSearch", isSignal: true, isRequired: false, transformFunction: null }, searchClearable: { classPropertyName: "searchClearable", publicName: "searchClearable", isSignal: true, isRequired: false, transformFunction: null }, clearSearchOnSelect: { classPropertyName: "clearSearchOnSelect", publicName: "clearSearchOnSelect", isSignal: true, isRequired: false, transformFunction: null }, isOrganization: { classPropertyName: "isOrganization", publicName: "isOrganization", isSignal: true, isRequired: false, transformFunction: null }, searchLabel: { classPropertyName: "searchLabel", publicName: "searchLabel", isSignal: true, isRequired: false, transformFunction: null }, organizationSearchLabel: { classPropertyName: "organizationSearchLabel", publicName: "organizationSearchLabel", isSignal: true, isRequired: false, transformFunction: null }, showRoleSwitch: { classPropertyName: "showRoleSwitch", publicName: "showRoleSwitch", isSignal: true, isRequired: false, transformFunction: null }, representatives: { classPropertyName: "representatives", publicName: "representatives", isSignal: true, isRequired: true, transformFunction: null }, currentRepresentative: { classPropertyName: "currentRepresentative", publicName: "currentRepresentative", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { currentRepresentative: "currentRepresentativeChange", roleSelectionToggle: "roleSelectionToggle" }, host: { classAttribute: "tedi-header-role" }, queries: [{ propertyName: "titleContent", first: true, predicate: HeaderRoleTitleDirective, descendants: true, isSignal: true }, { propertyName: "customContent", first: true, predicate: HeaderRoleContentDirective, descendants: true, isSignal: true }, { propertyName: "noResultsContent", first: true, predicate: HeaderRoleNoResultsDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "popover", first: true, predicate: PopoverComponent, descendants: true, isSignal: true }, { propertyName: "searchInput", first: true, predicate: SearchComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container *hideAt=\"'lg'\">\n <div\n class=\"tedi-header-role__head\"\n [class.tedi-header-role__head--open]=\"mobileOpen() && hasRoleSelection()\"\n >\n <div\n tedi-text\n color=\"secondary\"\n class=\"tedi-header-role__info\"\n [class.tedi-header-role__info--inline]=\"!hasRoleSelection()\"\n >\n <div class=\"tedi-header-role__info-title\">\n <ng-container *ngTemplateOutlet=\"roleTitle\"></ng-container>\n <p tedi-text modifiers=\"bold\" color=\"secondary\">\n {{ currentRepresentative().name }}\n </p>\n </div>\n @if (description()) {\n @if (!hasRoleSelection()) {\n <tedi-separator axis=\"vertical\" size=\"1rem\" />\n }\n <span class=\"tedi-header-role__description\">{{ description() }}</span>\n }\n </div>\n @if (hasRoleSelection()) {\n <button\n type=\"button\"\n tedi-button\n variant=\"neutral\"\n (click)=\"handleMobileOpen()\"\n >\n {{ collapseText() }}\n <tedi-icon name=\"expand_more\" [attr.data-open]=\"mobileOpen()\" />\n </button>\n }\n </div>\n @if (hasRoleSelection()) {\n <div class=\"tedi-header-role__collapse\" [attr.data-open]=\"mobileOpen()\">\n <div class=\"tedi-header-role__collapse--items\">\n @if (hasCustomContent()) {\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate()\"\n ></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n }\n </div>\n </div>\n }\n</ng-container>\n\n<ng-container *showAt=\"'lg'\">\n @if (label() || description() || hasTitle()) {\n <div\n tedi-text\n color=\"secondary\"\n modifiers=\"small\"\n class=\"tedi-header-role__head\"\n [class.tedi-header-role__head--open]=\"hasRoleSelection() && mobileOpen()\"\n >\n <ng-container *ngTemplateOutlet=\"roleTitle\"></ng-container>\n\n @if (description()) {\n <span class=\"tedi-header-role__description\">{{ description() }}</span>\n }\n </div>\n }\n\n @if (hasRoleSelection()) {\n <tedi-popover\n [withBorder]=\"true\"\n position=\"bottom\"\n [preventOverflow]=\"true\"\n >\n <button\n type=\"button\"\n tedi-popover-trigger\n class=\"tedi-link tedi-header__link-button\"\n >\n <span>{{ currentRepresentative().name }}</span>\n <tedi-icon\n name=\"expand_more\"\n [size]=\"16\"\n class=\"tedi-header-role__chevron\"\n />\n </button>\n <tedi-popover-content maxWidth=\"small\" class=\"tedi-header-role__dropdown\">\n @if (hasCustomContent()) {\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate()\"\n ></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n }\n </tedi-popover-content>\n </tedi-popover>\n } @else {\n <div class=\"tedi-header-role__value\">\n {{ currentRepresentative().name }}\n </div>\n }\n</ng-container>\n\n<ng-template #content>\n @if (showSearch()) {\n <tedi-search\n [inputId]=\"inputId\"\n [label]=\"searchText()\"\n [value]=\"inputValue()\"\n [clearable]=\"searchClearable()\"\n (valueChange)=\"handleInputChange($event)\"\n />\n }\n @if (filteredRepresentatives().length === 0) {\n @if (hasNoResultsContent()) {\n <ng-container *ngTemplateOutlet=\"noResultsTemplate()\"></ng-container>\n } @else {\n <span class=\"tedi-header-role__no-results\">{{ noResultsText() }}</span>\n }\n }\n @for (r of filteredRepresentatives(); track r.id) {\n <button\n type=\"button\"\n class=\"tedi-header-role__representative\"\n [attr.data-selected]=\"r.id === currentRepresentative().id\"\n (click)=\"handleSelectRepresentative(r)\"\n >\n @if (resolveIcon(r.icon); as icon) {\n <tedi-icon [name]=\"icon.name\" [size]=\"icon.size\" />\n }\n <div>\n <div>{{ r.name }}</div>\n @if (r.description) {\n <div tedi-text modifiers=\"small\">\n {{ r.description }}\n </div>\n }\n </div>\n </button>\n }\n</ng-template>\n\n<ng-template #roleTitle>\n <ng-content select=\"[tedi-header-role-title]\">\n @if (label(); as labelText) {\n <p\n tedi-text\n [modifiers]=\"isTabletView() ? ['bold'] : ['small', 'bold']\"\n color=\"secondary\"\n >\n {{ labelText }}\n </p>\n }\n </ng-content>\n</ng-template>\n", styles: [":root{--_header-role-transition-duration: .3s}.tedi-header-role{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;height:unset;background-color:var(--general-surface-secondary);border-bottom:var(--tedi-borders-04) solid var(--general-border-brand)}@media(min-width:62rem){.tedi-header-role{background-color:transparent;border-bottom:0}}.tedi-header-role [tedi-popover-trigger] .tedi-header-role__chevron{margin:0;transition:transform .2s ease-in-out}.tedi-header-role [tedi-popover-trigger][aria-expanded=true] .tedi-header-role__chevron{transform:rotate(-180deg)}.tedi-header-role__head{display:flex;gap:var(--layout-grid-gutters-04);align-items:center;justify-content:space-between;width:100%;padding:var(--card-padding-md-default);transition:padding var(--_header-role-transition-duration) ease}@media(min-width:62rem){.tedi-header-role__head{justify-content:flex-start;padding:0}}.tedi-header-role__head .tedi-header-role__info{display:flex;flex-direction:column;align-items:flex-start}.tedi-header-role__head .tedi-header-role__info--inline{flex-direction:row;gap:var(--layout-grid-gutters-08);align-items:center}.tedi-header-role__head .tedi-header-role__info-title{display:flex;flex-wrap:wrap;gap:var(--layout-grid-gutters-04);align-items:center}.tedi-header-role__head button{gap:var(--link-inner-spacing-x);padding:0;border:none}.tedi-header-role__head button tedi-icon{transition:transform .2s ease-in-out}.tedi-header-role__head button tedi-icon[data-open=true]{transform:rotate(-180deg)}.tedi-header-role__dropdown{display:flex;flex-direction:column;gap:var(--layout-grid-gutters-16)}.tedi-header-role__dropdown>*:not(:first-child){position:relative}.tedi-header-role__dropdown>*:not(:first-child):after{position:absolute;top:calc(-1 * (var(--layout-grid-gutters-16) / 2 + 1px));left:0;width:100%;height:1px;content:\"\";background-color:var(--general-border-primary)}.tedi-header-role__value{min-width:max-content}.tedi-header-role__representative{display:flex;gap:var(--layout-grid-gutters-08);align-items:center;width:100%;padding:var(--card-padding-xs);font-size:var(--body-regular-size);color:var(--general-text-secondary);text-align:start;cursor:pointer;background:transparent;border:0;border-radius:var(--card-radius-rounded)}.tedi-header-role__representative:not([data-selected=true]):hover{color:var(--general-text-primary);background:var(--header-popover-item-hover)}.tedi-header-role__representative:not([data-selected=true]):active{color:var(--general-text-white);background:var(--header-popover-item-active)}.tedi-header-role__representative:focus-visible{outline:var(--tedi-borders-02) solid var(--tedi-primary-500);outline-offset:var(--tedi-borders-01)}.tedi-header-role__representative[data-selected=true]{color:var(--general-text-white);background:var(--header-popover-item-selected)}.tedi-header-role__representative tedi-icon{color:inherit}.tedi-header-role__representative [tedi-text]{color:inherit}.tedi-header-role__no-results{padding-top:var(--layout-grid-gutters-08);color:var(--general-text-secondary);text-align:center}.tedi-header-role__collapse{display:grid;visibility:hidden;grid-template-rows:minmax(0,0fr);width:100%;overflow:hidden;transition:grid-template-rows var(--_header-role-transition-duration) ease}.tedi-header-role__collapse[data-open=true]{visibility:visible;grid-template-rows:minmax(0,1fr)}.tedi-header-role__collapse[data-open=true] .tedi-header-role__collapse--items{visibility:visible}.tedi-header-role__collapse--items{display:flex;visibility:hidden;flex-direction:column;gap:var(--layout-grid-gutters-16);min-height:0;padding:0 var(--card-padding-md-default) var(--card-padding-md-default) var(--card-padding-md-default);overflow:hidden;transition:visibility var(--_header-role-transition-duration) ease}.tedi-header-role__collapse--items>*:not(:first-child){position:relative}.tedi-header-role__collapse--items>*:not(:first-child):after{position:absolute;top:calc(-1 * (var(--layout-grid-gutters-16) / 2 + 1px));left:0;width:100%;height:1px;content:\"\";background-color:var(--general-border-primary)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverComponent, selector: "tedi-popover", inputs: ["position", "preventOverflow", "dismissible", "hideOnScroll", "withBorder", "withArrow", "lockScroll", "timeoutDelay"] }, { kind: "directive", type: PopoverTriggerDirective, selector: "[tedi-popover-trigger]", inputs: ["underline", "interactive"] }, { kind: "component", type: PopoverContentComponent, selector: "tedi-popover-content", inputs: ["maxWidth", "title", "showClose"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "component", type: ButtonComponent, selector: "[tedi-button]", inputs: ["variant", "size"] }, { kind: "component", type: TextComponent, selector: "[tedi-text]", inputs: ["modifiers", "color"] }, { kind: "directive", type: ShowAtDirective, selector: "[showAt]", inputs: ["showAt"] }, { kind: "directive", type: HideAtDirective, selector: "[hideAt]", inputs: ["hideAt"] }, { kind: "component", type: SeparatorComponent, selector: "tedi-separator", inputs: ["axis", "color", "variant", "dotSize", "dotFilled", "thickness", "spacing", "size"] }, { kind: "component", type: SearchComponent, selector: "tedi-search", inputs: ["inputId", "label", "value", "placeholder", "size", "clearable", "searchIcon", "disabled", "button", "feedbackText", "ariaLabel", "suggestions", "bindLabel", "bindDescription", "bindDisabled", "minQueryLength", "loading", "hideOnScroll", "panelOpen", "noResultsText", "loadingText", "resultsCountText"], outputs: ["valueChange", "panelOpenChange", "searchEvent", "clear", "suggestionSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
20154
21218
  }
20155
21219
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: HeaderRoleComponent, decorators: [{
20156
21220
  type: Component,
@@ -20757,6 +21821,151 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImpo
20757
21821
  args: ["click"]
20758
21822
  }] } });
20759
21823
 
21824
+ class SkeletonComponent {
21825
+ liveAnnouncer = inject(LiveAnnouncer);
21826
+ translationService = inject(TediTranslationService);
21827
+ isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
21828
+ /**
21829
+ * Announced by the skeleton's `role="status"` live region once the skeleton
21830
+ * has been on screen for `labelDelay`. Say what is loading: "Loading search
21831
+ * results" carries more than the generic fallback.
21832
+ * @default the translated `skeleton.loading` label
21833
+ */
21834
+ label = input(...(ngDevMode ? [undefined, { debugName: "label" }] : []));
21835
+ /**
21836
+ * Announced when the skeleton is removed. The skeleton's own live region goes
21837
+ * with it, so this one goes through a page-level announcer. Only announced if
21838
+ * `label` was announced first, so content that arrives faster than
21839
+ * `labelDelay` stays silent.
21840
+ * @default the translated `skeleton.loading-completed` label
21841
+ */
21842
+ completedLabel = input(...(ngDevMode ? [undefined, { debugName: "completedLabel" }] : []));
21843
+ /**
21844
+ * Delay in ms before `label` is announced, so brief loads do not interrupt
21845
+ * the screen reader.
21846
+ * @default 200
21847
+ */
21848
+ labelDelay = input(200, ...(ngDevMode ? [{ debugName: "labelDelay" }] : []));
21849
+ /**
21850
+ * Text of the `role="status"` live region. Empty until `labelDelay` has
21851
+ * passed, so the region is in the DOM before it gains text: screen readers
21852
+ * only announce a live region they were already tracking.
21853
+ */
21854
+ announcement = signal("", ...(ngDevMode ? [{ debugName: "announcement" }] : []));
21855
+ announceTimer;
21856
+ ngOnInit() {
21857
+ if (!this.isBrowser) {
21858
+ return;
21859
+ }
21860
+ this.announceTimer = setTimeout(() => {
21861
+ this.announcement.set(this.label() ?? this.translationService.translate("skeleton.loading"));
21862
+ }, this.labelDelay());
21863
+ }
21864
+ ngOnDestroy() {
21865
+ clearTimeout(this.announceTimer);
21866
+ if (!this.announcement()) {
21867
+ return;
21868
+ }
21869
+ this.liveAnnouncer.announce(this.completedLabel() ??
21870
+ this.translationService.translate("skeleton.loading-completed"));
21871
+ }
21872
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: SkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21873
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.24", type: SkeletonComponent, isStandalone: true, selector: "tedi-skeleton", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, completedLabel: { classPropertyName: "completedLabel", publicName: "completedLabel", isSignal: true, isRequired: false, transformFunction: null }, labelDelay: { classPropertyName: "labelDelay", publicName: "labelDelay", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "aria-busy": "true" }, classAttribute: "tedi-skeleton" }, ngImport: i0, template: "<span class=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">{{\n announcement()\n}}</span>\n<ng-content />\n", styles: [".tedi-skeleton{display:flex;flex-direction:column;gap:var(--loader-skeleton-inner-spacing-y);pointer-events:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
21874
+ }
21875
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: SkeletonComponent, decorators: [{
21876
+ type: Component,
21877
+ args: [{ standalone: true, selector: "tedi-skeleton", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
21878
+ class: "tedi-skeleton",
21879
+ "aria-busy": "true",
21880
+ }, template: "<span class=\"sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">{{\n announcement()\n}}</span>\n<ng-content />\n", styles: [".tedi-skeleton{display:flex;flex-direction:column;gap:var(--loader-skeleton-inner-spacing-y);pointer-events:none}\n"] }]
21881
+ }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], completedLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "completedLabel", required: false }] }], labelDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelDelay", required: false }] }] } });
21882
+
21883
+ /**
21884
+ * Angular hands an attribute binding through as a string, so `width="50"` and
21885
+ * `height="100"` arrive as `"50"` / `"100"`. Both are read as the numeric form.
21886
+ */
21887
+ const NUMERIC = /^\d+(\.\d+)?$/;
21888
+ class SkeletonBlockComponent {
21889
+ /**
21890
+ * Width of the block. A number is a percentage of the container, a `px`
21891
+ * string is an absolute width, and `auto` fills the container.
21892
+ * @default auto
21893
+ */
21894
+ width = input("auto", ...(ngDevMode ? [{ debugName: "width" }] : []));
21895
+ /**
21896
+ * Height of the block. A text style (`p`, `h1`–`h6`) takes the line height of
21897
+ * the text the block stands in for and follows it across breakpoints, so the
21898
+ * real content drops in without shifting the layout. Pass a number instead
21899
+ * for a height in px, for blocks that stand in for something other than text.
21900
+ * @default p
21901
+ */
21902
+ height = input("p", ...(ngDevMode ? [{ debugName: "height" }] : []));
21903
+ /*
21904
+ * Per-breakpoint overrides. The base inputs describe the smallest viewport;
21905
+ * each breakpoint input layers a partial `SkeletonBlockInputs` on top from
21906
+ * that breakpoint and up, so larger breakpoints inherit from smaller ones
21907
+ * until overridden.
21908
+ */
21909
+ /** Overrides applied from the `xs` breakpoint (≥ 0px) and up. */
21910
+ xs = input(...(ngDevMode ? [undefined, { debugName: "xs" }] : []));
21911
+ /** Overrides applied from the `sm` breakpoint (≥ 576px) and up. */
21912
+ sm = input(...(ngDevMode ? [undefined, { debugName: "sm" }] : []));
21913
+ /** Overrides applied from the `md` breakpoint (≥ 768px) and up. */
21914
+ md = input(...(ngDevMode ? [undefined, { debugName: "md" }] : []));
21915
+ /** Overrides applied from the `lg` breakpoint (≥ 992px) and up. */
21916
+ lg = input(...(ngDevMode ? [undefined, { debugName: "lg" }] : []));
21917
+ /** Overrides applied from the `xl` breakpoint (≥ 1200px) and up. */
21918
+ xl = input(...(ngDevMode ? [undefined, { debugName: "xl" }] : []));
21919
+ /** Overrides applied from the `xxl` breakpoint (≥ 1400px) and up. */
21920
+ xxl = input(...(ngDevMode ? [undefined, { debugName: "xxl" }] : []));
21921
+ breakpointService = inject(BreakpointService);
21922
+ currentProps = computed(() => this.breakpointService.getBreakpointInputs({
21923
+ width: this.width(),
21924
+ height: this.height(),
21925
+ xs: this.xs(),
21926
+ sm: this.sm(),
21927
+ md: this.md(),
21928
+ lg: this.lg(),
21929
+ xl: this.xl(),
21930
+ xxl: this.xxl(),
21931
+ }), ...(ngDevMode ? [{ debugName: "currentProps" }] : []));
21932
+ classes = computed(() => {
21933
+ const height = this.currentProps().height;
21934
+ const classList = ["tedi-skeleton-block"];
21935
+ if (typeof height === "string" && !NUMERIC.test(height)) {
21936
+ classList.push(`tedi-skeleton-block--${height}`);
21937
+ }
21938
+ return classList.join(" ");
21939
+ }, ...(ngDevMode ? [{ debugName: "classes" }] : []));
21940
+ resolvedWidth = computed(() => {
21941
+ const width = this.currentProps().width;
21942
+ if (width === undefined || width === "auto") {
21943
+ return null;
21944
+ }
21945
+ return typeof width === "number" || NUMERIC.test(width)
21946
+ ? `${width}%`
21947
+ : width;
21948
+ }, ...(ngDevMode ? [{ debugName: "resolvedWidth" }] : []));
21949
+ resolvedHeight = computed(() => {
21950
+ const height = this.currentProps().height;
21951
+ if (typeof height === "number") {
21952
+ return `${height}px`;
21953
+ }
21954
+ return height && NUMERIC.test(height) ? `${height}px` : null;
21955
+ }, ...(ngDevMode ? [{ debugName: "resolvedHeight" }] : []));
21956
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: SkeletonBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21957
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.24", type: SkeletonBlockComponent, isStandalone: true, selector: "tedi-skeleton-block", inputs: { width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, xs: { classPropertyName: "xs", publicName: "xs", isSignal: true, isRequired: false, transformFunction: null }, sm: { classPropertyName: "sm", publicName: "sm", isSignal: true, isRequired: false, transformFunction: null }, md: { classPropertyName: "md", publicName: "md", isSignal: true, isRequired: false, transformFunction: null }, lg: { classPropertyName: "lg", publicName: "lg", isSignal: true, isRequired: false, transformFunction: null }, xl: { classPropertyName: "xl", publicName: "xl", isSignal: true, isRequired: false, transformFunction: null }, xxl: { classPropertyName: "xxl", publicName: "xxl", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "aria-hidden": "true" }, properties: { "class": "classes()", "style.width": "resolvedWidth()", "style.height": "resolvedHeight()" } }, ngImport: i0, template: "", isInline: true, styles: [".tedi-skeleton-block{display:block;width:100%;background:linear-gradient(to right,color-mix(in srgb,var(--loader-skeleton-color) 70%,var(--tedi-neutral-100)) 8%,var(--loader-skeleton-color) 18%,color-mix(in srgb,var(--loader-skeleton-color) 70%,var(--tedi-neutral-100)) 33%);background-size:1000px 100px;border-radius:var(--loader-skeleton-radius);animation:tedi-skeleton-block-wave 2s infinite ease-in-out}.tedi-skeleton-block--p{height:var(--body-regular-line-height)}.tedi-skeleton-block--h1{height:var(--heading-h1-line-height)}.tedi-skeleton-block--h2{height:var(--heading-h2-line-height)}.tedi-skeleton-block--h3{height:var(--heading-h3-line-height)}.tedi-skeleton-block--h4{height:var(--heading-h4-line-height)}.tedi-skeleton-block--h5{height:var(--heading-h5-line-height)}.tedi-skeleton-block--h6{height:var(--heading-h6-line-height)}@media(prefers-reduced-motion:reduce){.tedi-skeleton-block{animation:none}}@keyframes tedi-skeleton-block-wave{0%{background-position:-400px 0}to{background-position:600px 0}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
21958
+ }
21959
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.24", ngImport: i0, type: SkeletonBlockComponent, decorators: [{
21960
+ type: Component,
21961
+ args: [{ standalone: true, selector: "tedi-skeleton-block", template: "", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
21962
+ "[class]": "classes()",
21963
+ "[style.width]": "resolvedWidth()",
21964
+ "[style.height]": "resolvedHeight()",
21965
+ "aria-hidden": "true",
21966
+ }, styles: [".tedi-skeleton-block{display:block;width:100%;background:linear-gradient(to right,color-mix(in srgb,var(--loader-skeleton-color) 70%,var(--tedi-neutral-100)) 8%,var(--loader-skeleton-color) 18%,color-mix(in srgb,var(--loader-skeleton-color) 70%,var(--tedi-neutral-100)) 33%);background-size:1000px 100px;border-radius:var(--loader-skeleton-radius);animation:tedi-skeleton-block-wave 2s infinite ease-in-out}.tedi-skeleton-block--p{height:var(--body-regular-line-height)}.tedi-skeleton-block--h1{height:var(--heading-h1-line-height)}.tedi-skeleton-block--h2{height:var(--heading-h2-line-height)}.tedi-skeleton-block--h3{height:var(--heading-h3-line-height)}.tedi-skeleton-block--h4{height:var(--heading-h4-line-height)}.tedi-skeleton-block--h5{height:var(--heading-h5-line-height)}.tedi-skeleton-block--h6{height:var(--heading-h6-line-height)}@media(prefers-reduced-motion:reduce){.tedi-skeleton-block{animation:none}}@keyframes tedi-skeleton-block-wave{0%{background-position:-400px 0}to{background-position:600px 0}}\n"] }]
21967
+ }], propDecorators: { width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], xs: [{ type: i0.Input, args: [{ isSignal: true, alias: "xs", required: false }] }], sm: [{ type: i0.Input, args: [{ isSignal: true, alias: "sm", required: false }] }], md: [{ type: i0.Input, args: [{ isSignal: true, alias: "md", required: false }] }], lg: [{ type: i0.Input, args: [{ isSignal: true, alias: "lg", required: false }] }], xl: [{ type: i0.Input, args: [{ isSignal: true, alias: "xl", required: false }] }], xxl: [{ type: i0.Input, args: [{ isSignal: true, alias: "xxl", required: false }] }] } });
21968
+
20760
21969
  /**
20761
21970
  * Marks a projected element as a single breadcrumb. Apply as a structural
20762
21971
  * directive on the crumb element; `tedi-breadcrumbs` collects each one and
@@ -21454,5 +22663,5 @@ function provideTedi(config = {}) {
21454
22663
  * Generated bundle index. Do not edit.
21455
22664
  */
21456
22665
 
21457
- 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 };
22666
+ 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, FloatingButtonComponent, FooterBodyComponent, FooterBottomComponent, FooterComponent, FooterSectionComponent, FooterSideComponent, FormFieldComponent, FormFieldExtraDirective, HeaderActionsComponent, HeaderBottomComponent, HeaderComponent, HeaderContentComponent, HeaderLanguageComponent, HeaderLoginComponent, HeaderLogoComponent, HeaderLogoDarkDirective, HeaderLogoutComponent, HeaderMobileButtonComponent, HeaderProfileComponent, HeaderRoleComponent, HeaderRoleContentDirective, HeaderRoleNoResultsDirective, HeaderRoleTitleDirective, HeaderSearchComponent, HeaderTopComponent, HeadingWithIconComponent, 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, SearchFooterActionsComponent, SearchFooterTemplateDirective, SearchSuggestionComponent, SearchSuggestionTemplateDirective, SelectComponent, SelectOptionTemplateDirective, SelectTooltipTemplateDirective, SelectValueTemplateDirective, SeparatorComponent, ShowAtDirective, SideNavComponent, SideNavDropdownComponent, SideNavDropdownGroupComponent, SideNavDropdownItemComponent, SideNavGroupTitleComponent, SideNavItemComponent, SideNavOverlayComponent, SideNavToggleComponent, SkeletonBlockComponent, SkeletonComponent, 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, TruncateComponent, VerticalSpacingDirective, VerticalSpacingItemDirective, addDays, addMonths, addYears, breakpointInput, buildMonthGrid, calculateArrowOffset, calculateVisibleTagCount, computeGroupSpans, controlDescribedBy, cookieSignal, createTablePersistence, deriveControlState, endOfMonth, formatDate, formatLocaleDate, formatLocaleDateHint, formatLocaleDateLong, formatMonthYear, generateUUID, getCardBorderPlacementColor, getDaysInMonth, getFirstDayOfWeek, getFocusableElements, getISOWeek, getMonthNames, getPaddingCssVariables, getPlacementFromPositionChange, getWeekdayNames, groupRowSpan, highlightParts, injectTediTableContext, isAfterDay, isBeforeDay, isDateInRange, isSameDay, isSameMonth, isSameYear, isValidTime, matchAny, matchDate, normalizeTime, parseDate, parseLocaleDate, provideTedi, resolveCardBorderRadius, startOfMonth, startOfWeek, toConnectedPositions, toggleDateInArray, usePagination };
21458
22667
  //# sourceMappingURL=tedi-design-system-angular-tedi.mjs.map