@siemens/element-ng 49.0.0 → 49.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/fesm2022/siemens-element-ng-accordion.mjs +2 -2
  2. package/fesm2022/siemens-element-ng-accordion.mjs.map +1 -1
  3. package/fesm2022/siemens-element-ng-application-header.mjs +12 -4
  4. package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
  5. package/fesm2022/siemens-element-ng-chat-messages.mjs +5 -5
  6. package/fesm2022/siemens-element-ng-chat-messages.mjs.map +1 -1
  7. package/fesm2022/siemens-element-ng-common.mjs +2 -2
  8. package/fesm2022/siemens-element-ng-common.mjs.map +1 -1
  9. package/fesm2022/siemens-element-ng-dashboard.mjs +16 -20
  10. package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
  11. package/fesm2022/siemens-element-ng-datatable.mjs +2 -1
  12. package/fesm2022/siemens-element-ng-datatable.mjs.map +1 -1
  13. package/fesm2022/siemens-element-ng-datepicker.mjs +1 -1
  14. package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
  15. package/fesm2022/siemens-element-ng-file-uploader.mjs +0 -1
  16. package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -1
  17. package/fesm2022/siemens-element-ng-filtered-search.mjs +94 -103
  18. package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
  19. package/fesm2022/siemens-element-ng-formly.mjs +2 -2
  20. package/fesm2022/siemens-element-ng-formly.mjs.map +1 -1
  21. package/fesm2022/siemens-element-ng-landing-page.mjs +19 -5
  22. package/fesm2022/siemens-element-ng-landing-page.mjs.map +1 -1
  23. package/fesm2022/siemens-element-ng-navbar-vertical.mjs +2 -2
  24. package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
  25. package/fesm2022/siemens-element-ng-select.mjs +2 -2
  26. package/fesm2022/siemens-element-ng-select.mjs.map +1 -1
  27. package/fesm2022/siemens-element-ng-side-panel.mjs +2 -2
  28. package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
  29. package/fesm2022/siemens-element-ng-tabs.mjs +67 -5
  30. package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -1
  31. package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
  32. package/fesm2022/siemens-element-ng-typeahead.mjs +83 -23
  33. package/fesm2022/siemens-element-ng-typeahead.mjs.map +1 -1
  34. package/package.json +4 -4
  35. package/schematics/utils/ts-compiler-host.js +3 -0
  36. package/template-i18n.json +2 -0
  37. package/types/siemens-element-ng-application-header.d.ts +1 -0
  38. package/types/siemens-element-ng-common.d.ts +1 -1
  39. package/types/siemens-element-ng-dashboard.d.ts +13 -14
  40. package/types/siemens-element-ng-datatable.d.ts +1 -0
  41. package/types/siemens-element-ng-file-uploader.d.ts +2 -2
  42. package/types/siemens-element-ng-filtered-search.d.ts +3 -9
  43. package/types/siemens-element-ng-form.d.ts +1 -1
  44. package/types/siemens-element-ng-landing-page.d.ts +6 -0
  45. package/types/siemens-element-ng-tabs.d.ts +51 -2
  46. package/types/siemens-element-ng-translate.d.ts +2 -0
  47. package/types/siemens-element-ng-typeahead.d.ts +36 -4
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@siemens/element-ng",
3
3
  "description": "Element Angular component library, implementing the Siemens Design Language",
4
- "version": "49.0.0",
4
+ "version": "49.2.0",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -43,9 +43,9 @@
43
43
  "@ngx-formly/bootstrap": "^6.2.2",
44
44
  "@ngx-formly/core": "^6.2.2",
45
45
  "@siemens/element-icons": "1",
46
- "@siemens/element-translate-ng": "49.0.0",
47
- "@siemens/element-theme": "49.0.0",
48
- "@siemens/ngx-datatable": "25",
46
+ "@siemens/element-translate-ng": "49.2.0",
47
+ "@siemens/element-theme": "49.2.0",
48
+ "@siemens/ngx-datatable": "22 - 26",
49
49
  "ag-grid-community": "^34.3.1",
50
50
  "flag-icons": "^7.3.2",
51
51
  "google-libphonenumber": "^3.2.40",
@@ -44,6 +44,9 @@ export const createTreeAwareCompilerHost = (tree, options) => {
44
44
  host.directoryExists = path => {
45
45
  const treePath = toTreePath(path);
46
46
  if (treePath) {
47
+ if (tree.exists(treePath) && tree.get(treePath) !== null) {
48
+ return false;
49
+ }
47
50
  const dir = tree.getDir(treePath);
48
51
  if (dir.subfiles.length || dir.subdirs.length) {
49
52
  return true;
@@ -161,9 +161,11 @@
161
161
  "SI_LIST_WIDGET.SORT_DESCENDING": "Sort descending",
162
162
  "SI_LOADING_SPINNER.LABEL": "Loading",
163
163
  "SI_LOGIN_BASIC.BACK": "Back",
164
+ "SI_LOGIN_BASIC.FORGOT_PASSWORD": "Forgot password",
164
165
  "SI_LOGIN_BASIC.LOGIN": "Login",
165
166
  "SI_LOGIN_BASIC.NEXT": "Next",
166
167
  "SI_LOGIN_BASIC.PASSWORD": "Password",
168
+ "SI_LOGIN_BASIC.REGISTER_NOW": "Register now",
167
169
  "SI_LOGIN_BASIC.USERNAME": "Username",
168
170
  "SI_LOGIN_SINGLE-SIGN-ON.LOGIN_SIGN_UP": "Login / Sign un",
169
171
  "SI_MAIN_DETAIL_CONTAINER.BACK": "Back",
@@ -367,6 +367,7 @@ declare class SiLaunchpadFactoryComponent {
367
367
  protected toggleFavorite(app: App, favorite: boolean): void;
368
368
  protected escape(): void;
369
369
  protected isCategories(items: App[] | AppCategory[]): items is AppCategory[];
370
+ protected isFavoriteToggleDisabled(app: App): boolean;
370
371
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiLaunchpadFactoryComponent, never>;
371
372
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiLaunchpadFactoryComponent, "si-launchpad-factory", never, { "closeText": { "alias": "closeText"; "required": false; "isSignal": true; }; "titleText": { "alias": "titleText"; "required": false; "isSignal": true; }; "subtitleText": { "alias": "subtitleText"; "required": false; "isSignal": true; }; "apps": { "alias": "apps"; "required": true; "isSignal": true; }; "enableFavorites": { "alias": "enableFavorites"; "required": false; "isSignal": true; }; "favoriteAppsText": { "alias": "favoriteAppsText"; "required": false; "isSignal": true; }; "showMoreAppsText": { "alias": "showMoreAppsText"; "required": false; "isSignal": true; }; "showLessAppsText": { "alias": "showLessAppsText"; "required": false; "isSignal": true; }; }, { "favoriteChange": "favoriteChange"; }, never, never, true, never>;
372
373
  }
@@ -3,7 +3,7 @@ import * as i0 from '@angular/core';
3
3
  import { InjectionToken, Type, Provider, ElementRef } from '@angular/core';
4
4
  import { Link } from '@siemens/element-ng/link';
5
5
  import { TranslatableString } from '@siemens/element-translate-ng/translate';
6
- import { ConnectionPositionPair, Overlay, PositionStrategy, OverlayRef, FlexibleConnectedPositionStrategy, ConnectedOverlayPositionChange } from '@angular/cdk/overlay';
6
+ import { ConnectionPositionPair, ConnectedOverlayPositionChange, Overlay, OverlayRef, FlexibleConnectedPositionStrategy, PositionStrategy } from '@angular/cdk/overlay';
7
7
 
8
8
  /**
9
9
  * A global blink pulse generator for synchronized blinking patterns across an entire application.
@@ -1,7 +1,7 @@
1
1
  import * as _siemens_element_ng_content_action_bar from '@siemens/element-ng/content-action-bar';
2
2
  import { ContentActionBarMainItem } from '@siemens/element-ng/content-action-bar';
3
3
  import * as _angular_core from '@angular/core';
4
- import { OnDestroy, ElementRef, OnChanges, AfterViewInit, SimpleChanges, OnInit, ChangeDetectorRef } from '@angular/core';
4
+ import { OnDestroy, ElementRef, OnChanges, AfterViewInit, SimpleChanges, OnInit } from '@angular/core';
5
5
  import * as _siemens_element_translate_ng_translate from '@siemens/element-translate-ng/translate';
6
6
  import { TranslatableString } from '@siemens/element-translate-ng/translate';
7
7
  import { SiCardComponent } from '@siemens/element-ng/card';
@@ -185,13 +185,13 @@ declare class SiDashboardService {
185
185
  }
186
186
 
187
187
  /**
188
- * The SiWidgetBaseComponent<T> implements the timing for the skeleton loading
188
+ * The SiWidgetBaseDirective<T> implements the timing for the skeleton loading
189
189
  * indicator of widgets. It supports a generic value input property that represents
190
190
  * the main value to be displayed by a widget. When the value is not set, the `showLoadingIndicator`
191
191
  * changes after the `initialLoadingIndicatorDebounceTime` delay to `true` and subclasses
192
192
  * should show the skeleton loading indicator.
193
193
  */
194
- declare abstract class SiWidgetBaseComponent<T> implements OnInit, OnChanges {
194
+ declare abstract class SiWidgetBaseDirective<T> implements OnInit, OnChanges {
195
195
  /**
196
196
  * The main value to be displayed. If no value is set,
197
197
  * the skeleton indicates the loading of the value. Disable
@@ -219,19 +219,18 @@ declare abstract class SiWidgetBaseComponent<T> implements OnInit, OnChanges {
219
219
  * @defaultValue 300
220
220
  */
221
221
  readonly initialLoadingIndicatorDebounceTime: _angular_core.InputSignal<number>;
222
- protected cdRef: ChangeDetectorRef;
223
222
  protected loadingTimer?: ReturnType<typeof setTimeout>;
224
223
  ngOnChanges(changes: SimpleChanges): void;
225
224
  ngOnInit(): void;
226
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiWidgetBaseComponent<any>, never>;
227
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiWidgetBaseComponent<any>, "ng-component", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "disableAutoLoadingIndicator": { "alias": "disableAutoLoadingIndicator"; "required": false; "isSignal": true; }; "showLoadingIndicatorInput": { "alias": "showLoadingIndicator"; "required": false; "isSignal": true; }; "initialLoadingIndicatorDebounceTime": { "alias": "initialLoadingIndicatorDebounceTime"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
225
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiWidgetBaseDirective<any>, never>;
226
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SiWidgetBaseDirective<any>, never, never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "disableAutoLoadingIndicator": { "alias": "disableAutoLoadingIndicator"; "required": false; "isSignal": true; }; "showLoadingIndicatorInput": { "alias": "showLoadingIndicator"; "required": false; "isSignal": true; }; "initialLoadingIndicatorDebounceTime": { "alias": "initialLoadingIndicatorDebounceTime"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
228
227
  }
229
228
 
230
229
  /**
231
230
  * The `<si-link-widget>` supports an easy composition of links and actions
232
231
  * with support for skeleton loading indicator.
233
232
  */
234
- declare class SiLinkWidgetComponent extends SiWidgetBaseComponent<Link[]> {
233
+ declare class SiLinkWidgetComponent extends SiWidgetBaseDirective<Link[]> {
235
234
  /**
236
235
  * Option to enable trailing link arrow icons for each link.
237
236
  *
@@ -276,7 +275,7 @@ interface SiListWidgetItem {
276
275
  * The `<si-link-widget>` supports an easy composition of links and actions
277
276
  * with support for skeleton loading indicator.
278
277
  */
279
- declare class SiListWidgetItemComponent extends SiWidgetBaseComponent<SiListWidgetItem> {
278
+ declare class SiListWidgetItemComponent extends SiWidgetBaseDirective<SiListWidgetItem> {
280
279
  protected readonly isLink: _angular_core.Signal<boolean>;
281
280
  protected readonly badgeColor: _angular_core.Signal<string>;
282
281
  protected readonly link: _angular_core.Signal<Link>;
@@ -292,7 +291,7 @@ type SortOrder = 'ASC' | 'DSC';
292
291
  * The `<si-list-widget-body>` implements the body of the <si-list-widget> that can be
293
292
  * used for composition within other components.
294
293
  */
295
- declare class SiListWidgetBodyComponent extends SiWidgetBaseComponent<SiListWidgetItem[]> implements OnChanges {
294
+ declare class SiListWidgetBodyComponent extends SiWidgetBaseDirective<SiListWidgetItem[]> implements OnChanges {
296
295
  /** Optional footer link for the list widget */
297
296
  readonly link: _angular_core.InputSignal<Link | undefined>;
298
297
  /**
@@ -380,7 +379,7 @@ declare class SiListWidgetBodyComponent extends SiWidgetBaseComponent<SiListWidg
380
379
  * The `<si-list-widget>` supports an easy composition of links and actions
381
380
  * with support for skeleton loading indicator, wrapped in a card.
382
381
  */
383
- declare class SiListWidgetComponent extends SiWidgetBaseComponent<SiListWidgetItem[]> implements OnChanges {
382
+ declare class SiListWidgetComponent extends SiWidgetBaseDirective<SiListWidgetItem[]> implements OnChanges {
384
383
  protected readonly icons: Record<"elementRight2" | "elementSortDown" | "elementSortUp", string>;
385
384
  /** List widget heading. */
386
385
  readonly heading: _angular_core.InputSignal<TranslatableString | undefined>;
@@ -569,7 +568,7 @@ interface SiTimelineWidgetItem {
569
568
  /**
570
569
  * The items of the `<si-timeline-widget>`.
571
570
  */
572
- declare class SiTimelineWidgetItemComponent extends SiWidgetBaseComponent<SiTimelineWidgetItem> implements OnInit, OnChanges {
571
+ declare class SiTimelineWidgetItemComponent extends SiWidgetBaseDirective<SiTimelineWidgetItem> implements OnInit, OnChanges {
573
572
  /**
574
573
  * Whether to show or hide the description row during skeleton progress indication.
575
574
  *
@@ -585,7 +584,7 @@ declare class SiTimelineWidgetItemComponent extends SiWidgetBaseComponent<SiTime
585
584
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiTimelineWidgetItemComponent, "si-timeline-widget-item", never, { "showDescription": { "alias": "showDescription"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
586
585
  }
587
586
 
588
- declare class SiTimelineWidgetComponent extends SiWidgetBaseComponent<SiTimelineWidgetItem[]> implements OnChanges {
587
+ declare class SiTimelineWidgetComponent extends SiWidgetBaseDirective<SiTimelineWidgetItem[]> implements OnChanges {
589
588
  /**
590
589
  * Timeline widget header text.
591
590
  */
@@ -630,7 +629,7 @@ declare class SiTimelineWidgetComponent extends SiWidgetBaseComponent<SiTimeline
630
629
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiTimelineWidgetComponent, "si-timeline-widget", never, { "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "primaryActions": { "alias": "primaryActions"; "required": false; "isSignal": true; }; "secondaryActions": { "alias": "secondaryActions"; "required": false; "isSignal": true; }; "link": { "alias": "link"; "required": false; "isSignal": true; }; "numberOfItems": { "alias": "numberOfItems"; "required": false; "isSignal": true; }; "showDescription": { "alias": "showDescription"; "required": false; "isSignal": true; }; "accentLine": { "alias": "accentLine"; "required": false; "isSignal": true; }; }, {}, never, ["[empty-state]"], true, never>;
631
630
  }
632
631
 
633
- declare class SiTimelineWidgetBodyComponent extends SiWidgetBaseComponent<SiTimelineWidgetItem[]> {
632
+ declare class SiTimelineWidgetBodyComponent extends SiWidgetBaseDirective<SiTimelineWidgetItem[]> {
634
633
  /**
635
634
  * Number of skeleton progress indication items.
636
635
  *
@@ -652,7 +651,7 @@ declare class SiTimelineWidgetBodyComponent extends SiWidgetBaseComponent<SiTime
652
651
  /**
653
652
  * The body of the `<si-value-widget>`. Useful for compositions.
654
653
  */
655
- declare class SiValueWidgetBodyComponent extends SiWidgetBaseComponent<TranslatableString> implements OnInit {
654
+ declare class SiValueWidgetBodyComponent extends SiWidgetBaseDirective<TranslatableString> implements OnInit {
656
655
  /**
657
656
  * The unit of the value (e.g. kWh or users). Only visible if `value` is available.
658
657
  */
@@ -107,6 +107,7 @@ interface SiDatatableConfig extends NgxDatatableConfig {
107
107
  rowHeightSmall: number;
108
108
  rowHeightExtraSmall: number;
109
109
  rowHeightTiny: number;
110
+ summaryHeight: number;
110
111
  }
111
112
  declare const SI_DATATABLE_CONFIG: SiDatatableConfig;
112
113
  /**
@@ -2,7 +2,7 @@ import * as _siemens_element_translate_ng_translate from '@siemens/element-trans
2
2
  import { TranslatableString } from '@siemens/element-translate-ng/translate';
3
3
  import * as _angular_core from '@angular/core';
4
4
  import { OnChanges, SimpleChanges } from '@angular/core';
5
- import { HttpResponse, HttpHeaders, HttpRequest, HttpEvent } from '@angular/common/http';
5
+ import { HttpHeaders, HttpRequest, HttpEvent, HttpResponse } from '@angular/common/http';
6
6
  import { Observable, Subscription } from 'rxjs';
7
7
 
8
8
  /**
@@ -486,7 +486,7 @@ declare class SiFileUploaderComponent implements OnChanges {
486
486
  protected readonly icons: Record<"elementCancel" | "elementDelete" | "elementDocument" | "elementRedo", string>;
487
487
  protected files: ExtUploadFile[];
488
488
  protected pending: number;
489
- protected uploading: number;
489
+ private uploading;
490
490
  protected uploadEnabled: boolean;
491
491
  protected maxFilesReached: boolean;
492
492
  private readonly dropZone;
@@ -371,11 +371,11 @@ declare class SiFilteredSearchComponent implements OnInit, OnChanges {
371
371
  private readonly valueComponents;
372
372
  protected dataSource: Observable<InternalCriterionDefinition[]>;
373
373
  protected autoEditCriteria: boolean;
374
- protected values: {
374
+ protected readonly values: _angular_core.WritableSignal<{
375
375
  config: InternalCriterionDefinition;
376
376
  value: CriterionValue;
377
- }[];
378
- protected searchValue: string;
377
+ }[]>;
378
+ protected readonly searchValue: _angular_core.WritableSignal<string>;
379
379
  /** Internal criteria model */
380
380
  protected internalCriterionDefinitions: InternalCriterionDefinition[];
381
381
  protected readonly icons: Record<"elementCancel" | "elementSearch", string>;
@@ -387,11 +387,6 @@ declare class SiFilteredSearchComponent implements OnInit, OnChanges {
387
387
  private readonly cdRef;
388
388
  private readonly translateService;
389
389
  private readonly locale;
390
- /**
391
- * The cache is used to control when the interceptDisplayedCriteria event needs to be called.
392
- * Every time a criteria gain the focus we have to reset the cache to call the interceptor.
393
- */
394
- private allowedCriteriaCache?;
395
390
  protected readonly allowFreeTextCache: _angular_core.WritableSignal<boolean>;
396
391
  private lastEmittedSearchCriteria?;
397
392
  protected readonly isStrictOrOnlySelectValue: _angular_core.Signal<boolean>;
@@ -428,7 +423,6 @@ declare class SiFilteredSearchComponent implements OnInit, OnChanges {
428
423
  private addCriterion;
429
424
  /**
430
425
  * Get criteria list to be shown in typeahead.
431
- * @param token - input field value.
432
426
  * @returns list of criteria to be shown in typeahead.
433
427
  */
434
428
  private getFilteredTypeaheadCriteria;
@@ -1,5 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { DoCheck, Signal, InjectionToken, AfterContentInit, AfterContentChecked, OnChanges, OnInit, OnDestroy, ElementRef, SimpleChanges, ModuleWithProviders, Provider } from '@angular/core';
2
+ import { DoCheck, InjectionToken, Signal, AfterContentInit, AfterContentChecked, OnChanges, OnInit, OnDestroy, ElementRef, SimpleChanges, ModuleWithProviders, Provider } from '@angular/core';
3
3
  import * as _angular_forms from '@angular/forms';
4
4
  import { AbstractControl, FormGroup, NgControl, RequiredValidator } from '@angular/forms';
5
5
  import { Breakpoints } from '@siemens/element-ng/resize-observer';
@@ -212,10 +212,12 @@ declare class SiLoginBasicComponent implements OnInit {
212
212
  readonly passwordLabel: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
213
213
  /**
214
214
  * Config for Forgot Password link.
215
+ * If `title` is omitted, a default translated label is used.
215
216
  */
216
217
  readonly forgotPasswordLink: _angular_core.InputSignal<Link | undefined>;
217
218
  /**
218
219
  * Config for Register Now link.
220
+ * If `title` is omitted, a default translated label is used.
219
221
  */
220
222
  readonly registerNowLink: _angular_core.InputSignal<Link | undefined>;
221
223
  /**
@@ -278,6 +280,10 @@ declare class SiLoginBasicComponent implements OnInit {
278
280
  private destroyRef;
279
281
  protected readonly secondStepVisible: _angular_core.WritableSignal<boolean>;
280
282
  protected readonly loadingNext: _angular_core.WritableSignal<boolean>;
283
+ private readonly defaultForgotPasswordTitle;
284
+ private readonly defaultRegisterNowTitle;
285
+ protected readonly effectiveForgotPasswordLink: _angular_core.Signal<Link>;
286
+ protected readonly effectiveRegisterNowLink: _angular_core.Signal<Link>;
281
287
  private readonly index;
282
288
  protected usernameId: string;
283
289
  protected passwordId: string;
@@ -1,6 +1,7 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { OnDestroy, Signal, ElementRef, TemplateRef } from '@angular/core';
3
3
  import { FocusableOption, FocusKeyManager } from '@angular/cdk/a11y';
4
+ import { DomPortal } from '@angular/cdk/portal';
4
5
  import * as _siemens_element_ng_tabs from '@siemens/element-ng/tabs';
5
6
  import { TranslatableString } from '@siemens/element-translate-ng/translate';
6
7
  import * as i1 from '@angular/router';
@@ -101,7 +102,20 @@ declare class SiTabLinkComponent extends SiTabBaseDirective {
101
102
  * Can either be used with {@link SiTabLinkComponent} or {@link SiTabComponent} components.
102
103
  */
103
104
  declare class SiTabsetComponent {
105
+ /**
106
+ * When set, the overflowing content inside the tab will automatically scroll
107
+ * @defaultValue false
108
+ **/
109
+ readonly contentOverflowAuto: _angular_core.InputSignalWithTransform<boolean, unknown>;
104
110
  protected readonly icons: Record<"elementOptions", string>;
111
+ private readonly contentNode;
112
+ /**
113
+ * A `DomPortal` wrapping the tab panel container. Used by {@link SiTabPortalComponent}
114
+ * to render the active tab's content at a remote location in the DOM.
115
+ *
116
+ * @internal
117
+ */
118
+ readonly contentPortal: _angular_core.Signal<DomPortal<unknown>>;
105
119
  /** @internal */
106
120
  readonly activeTab: _angular_core.Signal<SiTabBaseDirective | undefined>;
107
121
  /** @internal */
@@ -117,7 +131,7 @@ declare class SiTabsetComponent {
117
131
  protected resizeContainer(width: number, scrollWidth: number): void;
118
132
  protected keydown(event: KeyboardEvent): void;
119
133
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiTabsetComponent, never>;
120
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiTabsetComponent, "si-tabset", never, {}, {}, ["tabPanels"], ["*", "router-outlet"], true, never>;
134
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiTabsetComponent, "si-tabset", never, { "contentOverflowAuto": { "alias": "contentOverflowAuto"; "required": false; "isSignal": true; }; }, {}, ["tabPanels"], ["*", "router-outlet"], true, never>;
121
135
  }
122
136
 
123
137
  /**
@@ -158,4 +172,39 @@ declare class SiTabComponent extends SiTabBaseDirective implements OnDestroy {
158
172
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiTabComponent, "si-tab", never, { "active": { "alias": "active"; "required": false; "isSignal": true; }; "canActivate": { "alias": "canActivate"; "required": false; "isSignal": true; }; "canDeactivate": { "alias": "canDeactivate"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; }, never, ["*"], true, never>;
159
173
  }
160
174
 
161
- export { SiTabComponent, SiTabLinkComponent, SiTabsetComponent };
175
+ /**
176
+ * A component that renders the active tab's content at a remote
177
+ * location in the DOM using an Angular CDK `DomPortal`.
178
+ *
179
+ * This component **automatically** renders the content of the currently
180
+ * active `si-tab`, including the `role="tabpanel"` container with proper
181
+ * ARIA attributes linked to the active tab.
182
+ *
183
+ * @example
184
+ * ```html
185
+ * <si-tabset #tabset>
186
+ * <si-tab heading="Overview" [active]="true">
187
+ * overview content
188
+ * </si-tab>
189
+ * <si-tab heading="History">
190
+ * history content
191
+ * </si-tab>
192
+ * </si-tabset>
193
+ *
194
+ * <si-tab-portal [tabset]="tabset" />
195
+ * ```
196
+ */
197
+ declare class SiTabPortalComponent {
198
+ /**
199
+ * Reference to the {@link SiTabsetComponent} whose active tab content
200
+ * this component renders via a `DomPortal`.
201
+ *
202
+ * The tabset's tab panel container, including the `role="tabpanel"` element
203
+ * with proper ARIA attributes, is transported to this component's location.
204
+ */
205
+ readonly tabset: _angular_core.InputSignal<SiTabsetComponent>;
206
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiTabPortalComponent, never>;
207
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiTabPortalComponent, "si-tab-portal", never, { "tabset": { "alias": "tabset"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
208
+ }
209
+
210
+ export { SiTabComponent, SiTabLinkComponent, SiTabPortalComponent, SiTabsetComponent };
@@ -164,9 +164,11 @@ interface SiTranslatableKeys {
164
164
  'SI_LIST_WIDGET.SORT_DESCENDING'?: string;
165
165
  'SI_LOADING_SPINNER.LABEL'?: string;
166
166
  'SI_LOGIN_BASIC.BACK'?: string;
167
+ 'SI_LOGIN_BASIC.FORGOT_PASSWORD'?: string;
167
168
  'SI_LOGIN_BASIC.LOGIN'?: string;
168
169
  'SI_LOGIN_BASIC.NEXT'?: string;
169
170
  'SI_LOGIN_BASIC.PASSWORD'?: string;
171
+ 'SI_LOGIN_BASIC.REGISTER_NOW'?: string;
170
172
  'SI_LOGIN_BASIC.USERNAME'?: string;
171
173
  'SI_LOGIN_SINGLE-SIGN-ON.LOGIN_SIGN_UP'?: string;
172
174
  'SI_MAIN_DETAIL_CONTAINER.BACK'?: string;
@@ -1,6 +1,6 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { OnChanges, OnDestroy, TemplateRef, SimpleChanges } from '@angular/core';
3
- import { ConnectionPositionPair } from '@angular/cdk/overlay';
3
+ import { ConnectionPositionPair, ScrollStrategy } from '@angular/cdk/overlay';
4
4
  import { TranslatableString } from '@siemens/element-translate-ng/translate';
5
5
  import { Observable } from 'rxjs';
6
6
  import * as i1 from '@siemens/element-ng/autocomplete';
@@ -37,10 +37,22 @@ type TypeaheadArray = TypeaheadOption[];
37
37
  * An observable of a {@link TypeaheadArray} (array of {@link TypeaheadOption}).
38
38
  */
39
39
  type TypeaheadObservable = Observable<TypeaheadArray>;
40
+ /**
41
+ * Defines a source of options for the {@link SiTypeaheadDirective}.
42
+ * Use it for server-side pre-filtering.
43
+ *
44
+ * This function will be called, whenever the search value is updated by the user.
45
+ *
46
+ * A loading indicator is shown when this function was called
47
+ * until the Observable completes.
48
+ *
49
+ * @experimental
50
+ */
51
+ type TypeaheadOptionSource = (search: string) => Observable<TypeaheadArray>;
40
52
  /**
41
53
  * Either a {@link TypeaheadObservable} (observable of a {@link TypeaheadArray}) or a {@link TypeaheadArray}.
42
54
  */
43
- type Typeahead = TypeaheadArray | TypeaheadObservable;
55
+ type Typeahead = TypeaheadArray | TypeaheadObservable | TypeaheadOptionSource;
44
56
  /**
45
57
  * A segment of a {@link TypeaheadMatch}, which is a matching or non-matching segment of a typeahead option.
46
58
  */
@@ -207,6 +219,11 @@ declare class SiTypeaheadDirective implements OnChanges, OnDestroy {
207
219
  * @defaultValue false
208
220
  */
209
221
  readonly typeaheadFullWidth: _angular_core.InputSignalWithTransform<boolean, unknown>;
222
+ /**
223
+ * Optional CDK scroll strategy used for the typeahead overlay.
224
+ * If not provided, no strategy is set explicitly and CDK will apply its default behavior.
225
+ */
226
+ readonly typeaheadScrollStrategy: _angular_core.InputSignal<ScrollStrategy | undefined>;
210
227
  /**
211
228
  * This option will be shown at the end of the typeahead.
212
229
  * Use it to allow users to create new options on the fly.
@@ -294,6 +311,16 @@ declare class SiTypeaheadDirective implements OnChanges, OnDestroy {
294
311
  private sourceSubscription?;
295
312
  private matchSorter;
296
313
  private overlayRef?;
314
+ private loadingSubscription?;
315
+ /**
316
+ * Indicates whether the typeahead is currently loading.
317
+ * When using {@link TypeaheadOptionSource}, this is controlled by the `isLoading()` method
318
+ * or automatically set to `true` while fetching options.
319
+ *
320
+ * @internal
321
+ * @defaultValue false
322
+ */
323
+ readonly typeaheadLoading: _angular_core.WritableSignal<boolean>;
297
324
  /**
298
325
  * Indicates that the typeahead can be potentially open.
299
326
  * This signal is typically `true` when the input is focussed.
@@ -312,6 +339,11 @@ declare class SiTypeaheadDirective implements OnChanges, OnDestroy {
312
339
  protected onInput(event: Event): void;
313
340
  protected onKeydownEscape(): void;
314
341
  ngOnDestroy(): void;
342
+ /**
343
+ * Handles TypeaheadOptionSource by subscribing to query changes and fetching options.
344
+ * Manages loading state automatically or uses custom isLoading() observable if provided.
345
+ */
346
+ private handleTypeaheadOptionSource;
315
347
  private loadComponent;
316
348
  /**
317
349
  * Extracts the display value from a typeahead option.
@@ -344,7 +376,7 @@ declare class SiTypeaheadDirective implements OnChanges, OnDestroy {
344
376
  private clearTimer;
345
377
  private escapeRegex;
346
378
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiTypeaheadDirective, never>;
347
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SiTypeaheadDirective, "[siTypeahead]", ["si-typeahead"], { "siTypeahead": { "alias": "siTypeahead"; "required": true; "isSignal": true; }; "typeaheadProcess": { "alias": "typeaheadProcess"; "required": false; "isSignal": true; }; "typeaheadScrollable": { "alias": "typeaheadScrollable"; "required": false; "isSignal": true; }; "typeaheadOptionsInScrollableView": { "alias": "typeaheadOptionsInScrollableView"; "required": false; "isSignal": true; }; "typeaheadOptionsLimit": { "alias": "typeaheadOptionsLimit"; "required": false; "isSignal": true; }; "typeaheadScrollableAdditionalHeight": { "alias": "typeaheadScrollableAdditionalHeight"; "required": false; "isSignal": true; }; "typeaheadAutoSelectIndex": { "alias": "typeaheadAutoSelectIndex"; "required": false; "isSignal": true; }; "typeaheadCloseOnEsc": { "alias": "typeaheadCloseOnEsc"; "required": false; "isSignal": true; }; "typeaheadClearValueOnSelect": { "alias": "typeaheadClearValueOnSelect"; "required": false; "isSignal": true; }; "typeaheadWaitMs": { "alias": "typeaheadWaitMs"; "required": false; "isSignal": true; }; "typeaheadMinLength": { "alias": "typeaheadMinLength"; "required": false; "isSignal": true; }; "typeaheadOptionField": { "alias": "typeaheadOptionField"; "required": false; "isSignal": true; }; "typeaheadMultiSelect": { "alias": "typeaheadMultiSelect"; "required": false; "isSignal": true; }; "typeaheadTokenize": { "alias": "typeaheadTokenize"; "required": false; "isSignal": true; }; "typeaheadMatchAllTokens": { "alias": "typeaheadMatchAllTokens"; "required": false; "isSignal": true; }; "typeaheadItemTemplate": { "alias": "typeaheadItemTemplate"; "required": false; "isSignal": true; }; "typeaheadSkipSortingMatches": { "alias": "typeaheadSkipSortingMatches"; "required": false; "isSignal": true; }; "typeaheadAutocompleteListLabel": { "alias": "typeaheadAutocompleteListLabel"; "required": false; "isSignal": true; }; "typeaheadFullWidth": { "alias": "typeaheadFullWidth"; "required": false; "isSignal": true; }; "typeaheadCreateOption": { "alias": "typeaheadCreateOption"; "required": false; "isSignal": true; }; }, { "typeaheadOnInput": "typeaheadOnInput"; "typeaheadOnSelect": "typeaheadOnSelect"; "typeaheadOnFullMatch": "typeaheadOnFullMatch"; "typeaheadOpenChange": "typeaheadOpenChange"; "typeaheadOnCreateOption": "typeaheadOnCreateOption"; }, never, never, true, [{ directive: typeof i1.SiAutocompleteDirective; inputs: {}; outputs: {}; }]>;
379
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SiTypeaheadDirective, "[siTypeahead]", ["si-typeahead"], { "siTypeahead": { "alias": "siTypeahead"; "required": true; "isSignal": true; }; "typeaheadProcess": { "alias": "typeaheadProcess"; "required": false; "isSignal": true; }; "typeaheadScrollable": { "alias": "typeaheadScrollable"; "required": false; "isSignal": true; }; "typeaheadOptionsInScrollableView": { "alias": "typeaheadOptionsInScrollableView"; "required": false; "isSignal": true; }; "typeaheadOptionsLimit": { "alias": "typeaheadOptionsLimit"; "required": false; "isSignal": true; }; "typeaheadScrollableAdditionalHeight": { "alias": "typeaheadScrollableAdditionalHeight"; "required": false; "isSignal": true; }; "typeaheadAutoSelectIndex": { "alias": "typeaheadAutoSelectIndex"; "required": false; "isSignal": true; }; "typeaheadCloseOnEsc": { "alias": "typeaheadCloseOnEsc"; "required": false; "isSignal": true; }; "typeaheadClearValueOnSelect": { "alias": "typeaheadClearValueOnSelect"; "required": false; "isSignal": true; }; "typeaheadWaitMs": { "alias": "typeaheadWaitMs"; "required": false; "isSignal": true; }; "typeaheadMinLength": { "alias": "typeaheadMinLength"; "required": false; "isSignal": true; }; "typeaheadOptionField": { "alias": "typeaheadOptionField"; "required": false; "isSignal": true; }; "typeaheadMultiSelect": { "alias": "typeaheadMultiSelect"; "required": false; "isSignal": true; }; "typeaheadTokenize": { "alias": "typeaheadTokenize"; "required": false; "isSignal": true; }; "typeaheadMatchAllTokens": { "alias": "typeaheadMatchAllTokens"; "required": false; "isSignal": true; }; "typeaheadItemTemplate": { "alias": "typeaheadItemTemplate"; "required": false; "isSignal": true; }; "typeaheadSkipSortingMatches": { "alias": "typeaheadSkipSortingMatches"; "required": false; "isSignal": true; }; "typeaheadAutocompleteListLabel": { "alias": "typeaheadAutocompleteListLabel"; "required": false; "isSignal": true; }; "typeaheadFullWidth": { "alias": "typeaheadFullWidth"; "required": false; "isSignal": true; }; "typeaheadScrollStrategy": { "alias": "typeaheadScrollStrategy"; "required": false; "isSignal": true; }; "typeaheadCreateOption": { "alias": "typeaheadCreateOption"; "required": false; "isSignal": true; }; }, { "typeaheadOnInput": "typeaheadOnInput"; "typeaheadOnSelect": "typeaheadOnSelect"; "typeaheadOnFullMatch": "typeaheadOnFullMatch"; "typeaheadOpenChange": "typeaheadOpenChange"; "typeaheadOnCreateOption": "typeaheadOnCreateOption"; }, never, never, true, [{ directive: typeof i1.SiAutocompleteDirective; inputs: {}; outputs: {}; }]>;
348
380
  }
349
381
 
350
382
  declare class SiTypeaheadItemTemplateDirective {
@@ -360,4 +392,4 @@ declare class SiTypeaheadModule {
360
392
  }
361
393
 
362
394
  export { SiTypeaheadDirective, SiTypeaheadItemTemplateDirective, SiTypeaheadModule };
363
- export type { MatchSegment, Typeahead, TypeaheadArray, TypeaheadMatch, TypeaheadObservable, TypeaheadOption, TypeaheadOptionItemContext };
395
+ export type { MatchSegment, Typeahead, TypeaheadArray, TypeaheadMatch, TypeaheadObservable, TypeaheadOption, TypeaheadOptionItemContext, TypeaheadOptionSource };