@siemens/element-ng 49.10.0 → 49.12.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 (108) hide show
  1. package/carousel/package.json +4 -0
  2. package/fesm2022/siemens-element-ng-about.mjs +13 -4
  3. package/fesm2022/siemens-element-ng-about.mjs.map +1 -1
  4. package/fesm2022/siemens-element-ng-ag-grid.mjs +6 -5
  5. package/fesm2022/siemens-element-ng-ag-grid.mjs.map +1 -1
  6. package/fesm2022/siemens-element-ng-application-header.mjs +21 -24
  7. package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
  8. package/fesm2022/siemens-element-ng-breadcrumb-router.mjs +3 -3
  9. package/fesm2022/siemens-element-ng-breadcrumb-router.mjs.map +1 -1
  10. package/fesm2022/siemens-element-ng-breadcrumb.mjs +3 -3
  11. package/fesm2022/siemens-element-ng-breadcrumb.mjs.map +1 -1
  12. package/fesm2022/siemens-element-ng-card.mjs +2 -2
  13. package/fesm2022/siemens-element-ng-card.mjs.map +1 -1
  14. package/fesm2022/siemens-element-ng-carousel.mjs +541 -0
  15. package/fesm2022/siemens-element-ng-carousel.mjs.map +1 -0
  16. package/fesm2022/siemens-element-ng-chat-messages.mjs +18 -21
  17. package/fesm2022/siemens-element-ng-chat-messages.mjs.map +1 -1
  18. package/fesm2022/siemens-element-ng-content-action-bar.mjs +2 -2
  19. package/fesm2022/siemens-element-ng-content-action-bar.mjs.map +1 -1
  20. package/fesm2022/siemens-element-ng-dashboard.mjs +34 -35
  21. package/fesm2022/siemens-element-ng-dashboard.mjs.map +1 -1
  22. package/fesm2022/siemens-element-ng-date-range-filter.mjs +20 -9
  23. package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -1
  24. package/fesm2022/siemens-element-ng-datepicker.mjs +11 -10
  25. package/fesm2022/siemens-element-ng-datepicker.mjs.map +1 -1
  26. package/fesm2022/siemens-element-ng-electron-titlebar.mjs +3 -3
  27. package/fesm2022/siemens-element-ng-electron-titlebar.mjs.map +1 -1
  28. package/fesm2022/siemens-element-ng-empty-state.mjs +2 -2
  29. package/fesm2022/siemens-element-ng-empty-state.mjs.map +1 -1
  30. package/fesm2022/siemens-element-ng-file-uploader.mjs +49 -47
  31. package/fesm2022/siemens-element-ng-file-uploader.mjs.map +1 -1
  32. package/fesm2022/siemens-element-ng-filter-bar.mjs +5 -5
  33. package/fesm2022/siemens-element-ng-filter-bar.mjs.map +1 -1
  34. package/fesm2022/siemens-element-ng-filtered-search.mjs +8 -7
  35. package/fesm2022/siemens-element-ng-filtered-search.mjs.map +1 -1
  36. package/fesm2022/siemens-element-ng-footer.mjs +3 -3
  37. package/fesm2022/siemens-element-ng-footer.mjs.map +1 -1
  38. package/fesm2022/siemens-element-ng-form.mjs +11 -10
  39. package/fesm2022/siemens-element-ng-form.mjs.map +1 -1
  40. package/fesm2022/siemens-element-ng-formly.mjs +24 -23
  41. package/fesm2022/siemens-element-ng-formly.mjs.map +1 -1
  42. package/fesm2022/siemens-element-ng-header-dropdown.mjs +26 -17
  43. package/fesm2022/siemens-element-ng-header-dropdown.mjs.map +1 -1
  44. package/fesm2022/siemens-element-ng-help-button.mjs +3 -3
  45. package/fesm2022/siemens-element-ng-help-button.mjs.map +1 -1
  46. package/fesm2022/siemens-element-ng-inline-notification.mjs +3 -3
  47. package/fesm2022/siemens-element-ng-inline-notification.mjs.map +1 -1
  48. package/fesm2022/siemens-element-ng-landing-page.mjs +2 -2
  49. package/fesm2022/siemens-element-ng-landing-page.mjs.map +1 -1
  50. package/fesm2022/siemens-element-ng-language-switcher.mjs +3 -3
  51. package/fesm2022/siemens-element-ng-language-switcher.mjs.map +1 -1
  52. package/fesm2022/siemens-element-ng-markdown-renderer.mjs +4 -3
  53. package/fesm2022/siemens-element-ng-markdown-renderer.mjs.map +1 -1
  54. package/fesm2022/siemens-element-ng-menu.mjs +2 -2
  55. package/fesm2022/siemens-element-ng-menu.mjs.map +1 -1
  56. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs +362 -264
  57. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs.map +1 -1
  58. package/fesm2022/siemens-element-ng-navbar-vertical.mjs +30 -13
  59. package/fesm2022/siemens-element-ng-navbar-vertical.mjs.map +1 -1
  60. package/fesm2022/siemens-element-ng-navbar.mjs +6 -8
  61. package/fesm2022/siemens-element-ng-navbar.mjs.map +1 -1
  62. package/fesm2022/siemens-element-ng-notification-item.mjs +3 -3
  63. package/fesm2022/siemens-element-ng-notification-item.mjs.map +1 -1
  64. package/fesm2022/siemens-element-ng-pagination.mjs +4 -1
  65. package/fesm2022/siemens-element-ng-pagination.mjs.map +1 -1
  66. package/fesm2022/siemens-element-ng-password-toggle.mjs +3 -3
  67. package/fesm2022/siemens-element-ng-password-toggle.mjs.map +1 -1
  68. package/fesm2022/siemens-element-ng-photo-upload.mjs +2 -2
  69. package/fesm2022/siemens-element-ng-pills-input.mjs +4 -4
  70. package/fesm2022/siemens-element-ng-pills-input.mjs.map +1 -1
  71. package/fesm2022/siemens-element-ng-popover-legacy.mjs +3 -3
  72. package/fesm2022/siemens-element-ng-popover-legacy.mjs.map +1 -1
  73. package/fesm2022/siemens-element-ng-popover.mjs +3 -3
  74. package/fesm2022/siemens-element-ng-popover.mjs.map +1 -1
  75. package/fesm2022/siemens-element-ng-result-details-list.mjs +3 -3
  76. package/fesm2022/siemens-element-ng-result-details-list.mjs.map +1 -1
  77. package/fesm2022/siemens-element-ng-select.mjs +2 -2
  78. package/fesm2022/siemens-element-ng-side-panel.mjs +6 -6
  79. package/fesm2022/siemens-element-ng-side-panel.mjs.map +1 -1
  80. package/fesm2022/siemens-element-ng-sort-bar.mjs +3 -3
  81. package/fesm2022/siemens-element-ng-sort-bar.mjs.map +1 -1
  82. package/fesm2022/siemens-element-ng-split.mjs +3 -3
  83. package/fesm2022/siemens-element-ng-split.mjs.map +1 -1
  84. package/fesm2022/siemens-element-ng-status-bar.mjs +3 -3
  85. package/fesm2022/siemens-element-ng-status-bar.mjs.map +1 -1
  86. package/fesm2022/siemens-element-ng-threshold.mjs +5 -5
  87. package/fesm2022/siemens-element-ng-threshold.mjs.map +1 -1
  88. package/fesm2022/siemens-element-ng-toast-notification.mjs +3 -3
  89. package/fesm2022/siemens-element-ng-toast-notification.mjs.map +1 -1
  90. package/fesm2022/siemens-element-ng-tooltip.mjs +3 -3
  91. package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -1
  92. package/fesm2022/siemens-element-ng-tour.mjs +2 -2
  93. package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
  94. package/fesm2022/siemens-element-ng-tree-view.mjs +6 -6
  95. package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
  96. package/package.json +12 -8
  97. package/template-i18n.json +15 -6
  98. package/types/siemens-element-ng-about.d.ts +11 -1
  99. package/types/siemens-element-ng-application-header.d.ts +3 -4
  100. package/types/siemens-element-ng-carousel.d.ts +209 -0
  101. package/types/siemens-element-ng-chat-messages.d.ts +1 -2
  102. package/types/siemens-element-ng-dashboard.d.ts +4 -4
  103. package/types/siemens-element-ng-date-range-filter.d.ts +11 -2
  104. package/types/siemens-element-ng-file-uploader.d.ts +6 -8
  105. package/types/siemens-element-ng-header-dropdown.d.ts +3 -3
  106. package/types/siemens-element-ng-navbar-vertical-next.d.ts +161 -85
  107. package/types/siemens-element-ng-navbar.d.ts +1 -2
  108. package/types/siemens-element-ng-translate.d.ts +9 -0
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.10.0",
4
+ "version": "49.12.0",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -35,16 +35,16 @@
35
35
  "migrations": "./schematics/migration.json"
36
36
  },
37
37
  "peerDependencies": {
38
- "@angular/cdk": "21",
39
- "@angular/common": "21",
40
- "@angular/core": "21",
41
- "@angular/forms": "21",
42
- "@angular/router": "21",
38
+ "@angular/cdk": "21 - 22",
39
+ "@angular/common": "21 - 22",
40
+ "@angular/core": "21 - 22",
41
+ "@angular/forms": "21 - 22",
42
+ "@angular/router": "21 - 22",
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.10.0",
47
- "@siemens/element-theme": "49.10.0",
46
+ "@siemens/element-translate-ng": "49.12.0",
47
+ "@siemens/element-theme": "49.12.0",
48
48
  "@siemens/ngx-datatable": "22 - 26",
49
49
  "ag-grid-community": "^34.3.1 || ^35.0.0",
50
50
  "flag-icons": "^7.3.2",
@@ -132,6 +132,10 @@
132
132
  "types": "./types/siemens-element-ng-card.d.ts",
133
133
  "default": "./fesm2022/siemens-element-ng-card.mjs"
134
134
  },
135
+ "./carousel": {
136
+ "types": "./types/siemens-element-ng-carousel.d.ts",
137
+ "default": "./fesm2022/siemens-element-ng-carousel.mjs"
138
+ },
135
139
  "./chat-messages": {
136
140
  "types": "./types/siemens-element-ng-chat-messages.d.ts",
137
141
  "default": "./fesm2022/siemens-element-ng-chat-messages.mjs"
@@ -1,4 +1,5 @@
1
1
  {
2
+ "SI_ABOUT.LOGO_ALT": "{{appName}} logo",
2
3
  "SI_AI_MESSAGE.SECONDARY_ACTIONS": "More actions",
3
4
  "SI_ALERT_DIALOG.OK": "OK",
4
5
  "SI_APPLICATION_HEADER.LAUNCHPAD": "Launchpad",
@@ -7,6 +8,13 @@
7
8
  "SI_ATTACHMENT_LIST.REMOVE_ATTACHMENT": "Remove attachment",
8
9
  "SI_BREADCRUMB": "Breadcrumbs",
9
10
  "SI_BREADCRUMB_ROUTER_LABEL": "breadcrumb",
11
+ "SI_CAROUSEL.NEXT": "Next slide",
12
+ "SI_CAROUSEL.PAUSE": "Pause",
13
+ "SI_CAROUSEL.PLAY": "Play",
14
+ "SI_CAROUSEL.PREVIOUS": "Previous slide",
15
+ "SI_CAROUSEL.ROLE_DESCRIPTION": "carousel",
16
+ "SI_CAROUSEL.SLIDE_PAGE": "Slide {{page}} of {{total}}",
17
+ "SI_CAROUSEL.SLIDE_ROLE_DESCRIPTION": "Slide",
10
18
  "SI_CHANGE_PASSWORD.BACK": "Back",
11
19
  "SI_CHANGE_PASSWORD.CHANGE": "Change",
12
20
  "SI_CHANGE_PASSWORD.CHANGE_FACTORY_PASSWORD": "Factory set password must be changed",
@@ -70,6 +78,7 @@
70
78
  "SI_DATE_RANGE_FILTER.REF_POINT": "Reference point",
71
79
  "SI_DATE_RANGE_FILTER.SEARCH": "Search",
72
80
  "SI_DATE_RANGE_FILTER.SELECT_RANGE_END": "Select end date",
81
+ "SI_DATE_RANGE_FILTER.SELECT_RANGE_LABEL": "Select date range",
73
82
  "SI_DATE_RANGE_FILTER.TO": "To",
74
83
  "SI_DATE_RANGE_FILTER.TODAY": "Today",
75
84
  "SI_DATE_RANGE_FILTER.UNIT": "Unit",
@@ -123,20 +132,20 @@
123
132
  "SI_FORM_CONTAINER.ERROR.IPV4": "Invalid IPv4 address",
124
133
  "SI_FORM_CONTAINER.ERROR.IPV6": "Invalid IPv6 address",
125
134
  "SI_FORM_CONTAINER.ERROR.MAX": "Max. {{max}}",
126
- "SI_FORM_CONTAINER.ERROR.MAX_DATE": "Date prior to {{maxString}} required",
135
+ "SI_FORM_CONTAINER.ERROR.MAX_DATE": "Date up to and including {{maxString}} required",
127
136
  "SI_FORM_CONTAINER.ERROR.MAX_LENGTH": "Max. {{requiredLength}} characters",
128
- "SI_FORM_CONTAINER.ERROR.MAX_TIME": "Time prior to {{maxString}} required",
137
+ "SI_FORM_CONTAINER.ERROR.MAX_TIME": "Time up to and including {{maxString}} required",
129
138
  "SI_FORM_CONTAINER.ERROR.MILLISECONDS": "Integer between 0 and 999 required",
130
139
  "SI_FORM_CONTAINER.ERROR.MIN": "Min. {{min}}",
131
140
  "SI_FORM_CONTAINER.ERROR.MINUTES": "Integer between 0 and 59 required",
132
- "SI_FORM_CONTAINER.ERROR.MIN_DATE": "Date after {{minString}} required",
141
+ "SI_FORM_CONTAINER.ERROR.MIN_DATE": "Date from {{minString}} required",
133
142
  "SI_FORM_CONTAINER.ERROR.MIN_LENGTH": "Min. {{requiredLength}} characters",
134
- "SI_FORM_CONTAINER.ERROR.MIN_TIME": "Time after {{minString}} required",
143
+ "SI_FORM_CONTAINER.ERROR.MIN_TIME": "Time from {{minString}} required",
135
144
  "SI_FORM_CONTAINER.ERROR.NUMBER_FORMAT": "Number required",
136
145
  "SI_FORM_CONTAINER.ERROR.PATTERN": "The value does not match the predefined pattern.",
137
146
  "SI_FORM_CONTAINER.ERROR.PHONE_COUNTRY": "Unsupported country/region code",
138
- "SI_FORM_CONTAINER.ERROR.RANGE_AFTER_MAX_DATE": "Period prior to {{maxString}} required",
139
- "SI_FORM_CONTAINER.ERROR.RANGE_BEFORE_MIN_DATE": "Period after {{minString}} required",
147
+ "SI_FORM_CONTAINER.ERROR.RANGE_AFTER_MAX_DATE": "Period up to and including {{maxString}} required",
148
+ "SI_FORM_CONTAINER.ERROR.RANGE_BEFORE_MIN_DATE": "Period from {{minString}} required",
140
149
  "SI_FORM_CONTAINER.ERROR.REQUIRED": "Required",
141
150
  "SI_FORM_CONTAINER.ERROR.REQUIRED_TRUE": "Required",
142
151
  "SI_FORM_CONTAINER.ERROR.SECONDS": "Integer between 0 and 59 required",
@@ -1,6 +1,7 @@
1
1
  import * as _angular_platform_browser from '@angular/platform-browser';
2
2
  import * as _angular_core from '@angular/core';
3
3
  import { OnInit } from '@angular/core';
4
+ import * as _siemens_element_translate_ng_translate from '@siemens/element-translate-ng/translate';
4
5
  import { CopyrightDetails } from '@siemens/element-ng/copyright-notice';
5
6
  import { Link } from '@siemens/element-ng/link';
6
7
 
@@ -58,6 +59,15 @@ interface ApiInfo {
58
59
  declare class SiAboutComponent implements OnInit {
59
60
  private http;
60
61
  private sanitizer;
62
+ /**
63
+ * Alt text for the application logo. Supports `{{appName}}` placeholder for interpolation.
64
+ *
65
+ * @defaultValue
66
+ * ```
67
+ * t(() => $localize`:@@SI_ABOUT.LOGO_ALT:{{appName}} logo`)
68
+ * ```
69
+ */
70
+ readonly logoAlt: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
61
71
  /**
62
72
  * Title shown above the about information.
63
73
  */
@@ -119,7 +129,7 @@ declare class SiAboutComponent implements OnInit {
119
129
  protected toggleLoadLicenseApi(apiInfo: ApiInfo): void;
120
130
  protected toggleLoadLicenseContent(apiInfo: ApiInfo): void;
121
131
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiAboutComponent, never>;
122
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiAboutComponent, "si-about", never, { "aboutTitle": { "alias": "aboutTitle"; "required": true; "isSignal": true; }; "licenseInfo": { "alias": "licenseInfo"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "appName": { "alias": "appName"; "required": true; "isSignal": true; }; "subheading": { "alias": "subheading"; "required": false; "isSignal": true; }; "acceptableUsePolicyLink": { "alias": "acceptableUsePolicyLink"; "required": false; "isSignal": true; }; "imprintLink": { "alias": "imprintLink"; "required": false; "isSignal": true; }; "privacyLink": { "alias": "privacyLink"; "required": false; "isSignal": true; }; "cookieNoticeLink": { "alias": "cookieNoticeLink"; "required": false; "isSignal": true; }; "termsLink": { "alias": "termsLink"; "required": false; "isSignal": true; }; "links": { "alias": "links"; "required": false; "isSignal": true; }; "copyrightDetails": { "alias": "copyrightDetails"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
132
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiAboutComponent, "si-about", never, { "logoAlt": { "alias": "logoAlt"; "required": false; "isSignal": true; }; "aboutTitle": { "alias": "aboutTitle"; "required": true; "isSignal": true; }; "licenseInfo": { "alias": "licenseInfo"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; "appName": { "alias": "appName"; "required": true; "isSignal": true; }; "subheading": { "alias": "subheading"; "required": false; "isSignal": true; }; "acceptableUsePolicyLink": { "alias": "acceptableUsePolicyLink"; "required": false; "isSignal": true; }; "imprintLink": { "alias": "imprintLink"; "required": false; "isSignal": true; }; "privacyLink": { "alias": "privacyLink"; "required": false; "isSignal": true; }; "cookieNoticeLink": { "alias": "cookieNoticeLink"; "required": false; "isSignal": true; }; "termsLink": { "alias": "termsLink"; "required": false; "isSignal": true; }; "links": { "alias": "links"; "required": false; "isSignal": true; }; "copyrightDetails": { "alias": "copyrightDetails"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
123
133
  }
124
134
 
125
135
  declare class SiAboutModule {
@@ -1,10 +1,9 @@
1
- import * as rxjs from 'rxjs';
2
- import { Subject } from 'rxjs';
3
1
  import * as _siemens_element_translate_ng_translate from '@siemens/element-translate-ng/translate';
4
2
  import { TranslatableString } from '@siemens/element-translate-ng/translate';
5
3
  import * as _angular_core from '@angular/core';
6
4
  import { OnDestroy, TemplateRef, Injector, OnInit, OnChanges, SimpleChanges } from '@angular/core';
7
5
  import { HeaderWithDropdowns, SiHeaderDropdownTriggerDirective } from '@siemens/element-ng/header-dropdown';
6
+ import { Subject } from 'rxjs';
8
7
  import * as _siemens_element_ng_application_header from '@siemens/element-ng/application-header';
9
8
  import { NavigationExtras, IsActiveMatchOptions, ActivatedRoute } from '@angular/router';
10
9
 
@@ -43,7 +42,8 @@ declare class SiApplicationHeaderComponent implements HeaderWithDropdowns, OnDes
43
42
  private openDropdown?;
44
43
  private closeMobileSub;
45
44
  /** @internal */
46
- readonly inlineDropdown: rxjs.Observable<boolean>;
45
+ readonly inlineDropdown: _angular_core.Signal<boolean>;
46
+ constructor();
47
47
  ngOnDestroy(): void;
48
48
  /** @internal */
49
49
  onDropdownItemTriggered(): void;
@@ -109,7 +109,6 @@ declare class SiHeaderCollapsibleActionsComponent implements OnDestroy {
109
109
  private readonly focusTrap;
110
110
  private header;
111
111
  private closeMobileSub;
112
- private inlineChangeSubscription?;
113
112
  ngOnDestroy(): void;
114
113
  protected toggleMobileExpanded(): void;
115
114
  protected escapePressed(): void;
@@ -0,0 +1,209 @@
1
+ import * as _siemens_element_translate_ng_translate from '@siemens/element-translate-ng/translate';
2
+ import * as _angular_core from '@angular/core';
3
+ import { ElementRef } from '@angular/core';
4
+
5
+ declare class SiCarouselItemDirective {
6
+ protected readonly carousel: SiCarouselComponent;
7
+ protected readonly isVisible: _angular_core.Signal<boolean>;
8
+ /** @internal */
9
+ readonly elementRef: ElementRef<HTMLElement>;
10
+ /** @internal */
11
+ readonly order: _angular_core.WritableSignal<number>;
12
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiCarouselItemDirective, never>;
13
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SiCarouselItemDirective, "[siCarouselItem]", never, {}, {}, never, never, true, never>;
14
+ }
15
+
16
+ /**
17
+ * A carousel component for displaying slides with navigation controls and auto-play.
18
+ *
19
+ * Features horizontal scrolling with snap behavior, pagination dots, and ARIA accessibility.
20
+ * Suitable for dashboards, image galleries, and content showcases.
21
+ *
22
+ * @example
23
+ *
24
+ * ```typescript
25
+ * import { SiCarouselComponent, SiCarouselItemDirective } from '@siemens/element-ng/carousel';
26
+ *
27
+ * @Component({
28
+ * imports: [SiCarouselComponent, SiCarouselItemDirective],
29
+ * template: `
30
+ * <si-carousel>
31
+ * <div siCarouselItem><h2>Slide 1</h2></div>
32
+ * <div siCarouselItem><h2>Slide 2</h2></div>
33
+ * <div siCarouselItem><h2>Slide 3</h2></div>
34
+ * </si-carousel>
35
+ * `
36
+ * })
37
+ * export class MyComponent {}
38
+ * ```
39
+ */
40
+ declare class SiCarouselComponent {
41
+ /**
42
+ * Controls whether pagination controls are shown.
43
+ * When `true`, the carousel shows one slide per page and hides pagination controls.
44
+ * @defaultValue false
45
+ * */
46
+ readonly hidePageControls: _angular_core.InputSignalWithTransform<boolean, unknown>;
47
+ /**
48
+ * Enables or configures auto-play for the carousel. When set to `true`, the carousel automatically
49
+ * navigates to the next slide every 5000 milliseconds (5 seconds). Pass a positive number to set a
50
+ * custom interval in milliseconds. Pass `false` to disable auto-play.
51
+ * @defaultValue false
52
+ * */
53
+ readonly autoPlay: _angular_core.InputSignal<number | boolean>;
54
+ /**
55
+ * Aria role of the carousel element. Can be set to 'region' or 'group' depending on the desired accessibility semantics.
56
+ * @defaultValue 'region'
57
+ * */
58
+ readonly ariaRole: _angular_core.InputSignal<"group" | "region">;
59
+ /**
60
+ * Aria label for the previous button, used for accessibility purposes.
61
+ * @defaultValue
62
+ * ```
63
+ * t(() => $localize`:@@SI_CAROUSEL.PREVIOUS:Previous slide`)
64
+ * ```
65
+ */
66
+ readonly previousButtonAriaLabel: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
67
+ /**
68
+ * Aria label for the next button, used for accessibility purposes.
69
+ * @defaultValue
70
+ * ```
71
+ * t(() => $localize`:@@SI_CAROUSEL.NEXT:Next slide`)
72
+ * ```
73
+ */
74
+ readonly nextButtonAriaLabel: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
75
+ /**
76
+ * @defaultValue
77
+ * ```
78
+ * t(() => $localize`:@@SI_CAROUSEL.SLIDE_PAGE:Slide {{page}} of {{total}}`)
79
+ * ```
80
+ */
81
+ readonly slidePageAriaLabel: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
82
+ /**
83
+ * Label for the play button when autoplay is paused.
84
+ * @defaultValue
85
+ * ```
86
+ * t(() => $localize`:@@SI_CAROUSEL.PLAY:Play`)
87
+ * ```
88
+ */
89
+ readonly playButtonLabel: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
90
+ /**
91
+ * Label for the pause button when autoplay is active.
92
+ * @defaultValue
93
+ * ```
94
+ * t(() => $localize`:@@SI_CAROUSEL.PAUSE:Pause`)
95
+ * ```
96
+ */
97
+ readonly pauseButtonLabel: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
98
+ /**
99
+ * Role description for the carousel container, used for accessibility purposes.
100
+ * @defaultValue
101
+ * ```
102
+ * t(() => $localize`:@@SI_CAROUSEL.ROLE_DESCRIPTION:carousel`)
103
+ * ```
104
+ */
105
+ readonly carouselRoleDescription: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
106
+ /**
107
+ * Role description for each slide, used for accessibility purposes.
108
+ * @defaultValue
109
+ * ```
110
+ * t(() => $localize`:@@SI_CAROUSEL.SLIDE_ROLE_DESCRIPTION:Slide`)
111
+ * ```
112
+ */
113
+ readonly slideRoleDescription: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
114
+ /** @internal */
115
+ readonly translatedSlideRoleDescription: _angular_core.Signal<string>;
116
+ /** @internal */
117
+ readonly currentActiveSlide: _angular_core.Signal<ElementRef<HTMLElement> | null>;
118
+ protected readonly translatedCarouselRoleDescription: _angular_core.Signal<string>;
119
+ protected readonly items: _angular_core.Signal<readonly SiCarouselItemDirective[]>;
120
+ protected readonly currentPage: _angular_core.WritableSignal<number | null>;
121
+ protected readonly isPaused: _angular_core.WritableSignal<boolean>;
122
+ protected readonly totalPages: _angular_core.Signal<number>;
123
+ protected readonly edgeLeftIndex: _angular_core.WritableSignal<number>;
124
+ protected readonly edgeRightIndex: _angular_core.WritableSignal<number>;
125
+ protected readonly insufficientSpace: _angular_core.WritableSignal<boolean>;
126
+ protected readonly pageControlContainerMinWidth: _angular_core.WritableSignal<number>;
127
+ protected readonly icons: Record<"elementLeft2" | "elementRight2" | "elementPlay" | "elementPause", string>;
128
+ private readonly autoPlayDuration;
129
+ private intervalId;
130
+ private scrollObserver;
131
+ /** requestAnimationFrame id of the running scroll animation, or null when idle. */
132
+ private animationFrameId;
133
+ /** Scroll position (`scrollLeft`) the running animation is easing towards. */
134
+ private animationTargetLeft;
135
+ /** Timestamp of the previous animation frame, used to make the easing frame-rate independent. */
136
+ private lastFrameTime;
137
+ /** Whether any slide's CSS order has been changed from its natural (source-index) position. */
138
+ private ordersModified;
139
+ private readonly destroyRef;
140
+ private readonly viewport;
141
+ private readonly pageControl;
142
+ private readonly playPauseBtn;
143
+ private readonly translateService;
144
+ private cdRef;
145
+ constructor();
146
+ protected goToPage(page: number, forceScroll?: boolean): void;
147
+ protected next(): void;
148
+ protected previous(): void;
149
+ /** Navigates directly to a specific slide, used by the pagination dots. */
150
+ protected goToSlide(index: number): void;
151
+ protected toggleAutoPlay(): void;
152
+ protected onResize(size: {
153
+ width: number;
154
+ height: number;
155
+ }): void;
156
+ /**
157
+ * Navigates a single slide forward (`1`) or backward (`-1`). Rapid clicks are intentionally not
158
+ * queued or throttled: each click advances {@link currentPage} immediately and retargets the
159
+ * running scroll animation (see {@link animateTo}) towards the new slide, so the carousel keeps
160
+ * gliding in the click direction without waiting for the previous scroll to finish.
161
+ *
162
+ * To keep the first/last wrap a continuous one-slide glide instead of a jump across the whole
163
+ * track, the target slide's CSS order is placed exactly one slot away from the current slide in
164
+ * the click direction (so it sits adjacent to it). The viewport scroll is compensated so this
165
+ * reorder is invisible. Orders may extend while the user keeps clicking; they are silently
166
+ * normalized once the animation settles (see {@link normalizeOrders}).
167
+ */
168
+ private step;
169
+ /**
170
+ * Changes a slide's CSS order while keeping the picture stable. Reordering shifts slides along
171
+ * the flex track, so the scroll position is adjusted by the exact amount the anchor slide moved,
172
+ * making the relocation invisible and letting any in-flight animation continue seamlessly.
173
+ */
174
+ private reorderSlide;
175
+ /**
176
+ * Sets the CSS order of a slide. The value is written to the DOM synchronously in addition to
177
+ * the signal, so a subsequent reflow/scroll uses the new order immediately instead of waiting
178
+ * for the asynchronous, signal-driven change detection update.
179
+ */
180
+ private setSlideOrder;
181
+ /**
182
+ * Silently restores the canonical slide order (each slide's CSS order equals its source index).
183
+ * Reordering shifts the track, so it anchors on the current slide and compensates the scroll
184
+ * position to avoid any visible jump. Called once the scroll animation settles.
185
+ */
186
+ private normalizeOrders;
187
+ /** Animates the viewport so the given slide is horizontally centered. */
188
+ private animateToSlide;
189
+ /**
190
+ * Eases `scrollLeft` towards `targetLeft` using a frame-rate independent exponential smoothing
191
+ * loop. The target can be updated mid-flight (rapid clicks), so the same animation simply chases
192
+ * the latest slide. Native scroll-snap and smooth scroll-behavior are disabled while animating so
193
+ * they do not fight the manual scrolling, and the scroll observer is paused to avoid feedback.
194
+ */
195
+ private animateTo;
196
+ private animationFrame;
197
+ /** Finalizes the animation: normalizes orders, restores native scrolling and the observer. */
198
+ private endAnimation;
199
+ /** Stops the running scroll animation and restores native scrolling, without normalizing. */
200
+ private cancelAnimation;
201
+ private scheduleAutoPlay;
202
+ private stopAutoPlay;
203
+ private setupScrollObserver;
204
+ private updateEdgeIndices;
205
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiCarouselComponent, never>;
206
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiCarouselComponent, "si-carousel", never, { "hidePageControls": { "alias": "hidePageControls"; "required": false; "isSignal": true; }; "autoPlay": { "alias": "autoPlay"; "required": false; "isSignal": true; }; "ariaRole": { "alias": "ariaRole"; "required": false; "isSignal": true; }; "previousButtonAriaLabel": { "alias": "previousButtonAriaLabel"; "required": false; "isSignal": true; }; "nextButtonAriaLabel": { "alias": "nextButtonAriaLabel"; "required": false; "isSignal": true; }; "slidePageAriaLabel": { "alias": "slidePageAriaLabel"; "required": false; "isSignal": true; }; "playButtonLabel": { "alias": "playButtonLabel"; "required": false; "isSignal": true; }; "pauseButtonLabel": { "alias": "pauseButtonLabel"; "required": false; "isSignal": true; }; "carouselRoleDescription": { "alias": "carouselRoleDescription"; "required": false; "isSignal": true; }; "slideRoleDescription": { "alias": "slideRoleDescription"; "required": false; "isSignal": true; }; }, {}, ["items"], ["*"], true, never>;
207
+ }
208
+
209
+ export { SiCarouselComponent, SiCarouselItemDirective };
@@ -494,8 +494,7 @@ declare class SiChatInputComponent implements AfterViewInit {
494
494
  protected readonly buttonDisabled: _angular_core.Signal<boolean>;
495
495
  protected readonly buttonIcon: _angular_core.Signal<string>;
496
496
  protected readonly buttonLabel: _angular_core.Signal<TranslatableString$1>;
497
- protected dragOver: boolean;
498
- protected get attachmentList(): Attachment[];
497
+ protected readonly dragOver: _angular_core.WritableSignal<boolean>;
499
498
  protected onInputChange(value: string): void;
500
499
  protected onSend(): void;
501
500
  protected onButtonClick(): void;
@@ -55,7 +55,7 @@ declare class SiDashboardCardComponent extends SiCardComponent implements OnDest
55
55
  */
56
56
  readonly isExpanded: _angular_core.WritableSignal<boolean>;
57
57
  /** @internal */
58
- hide: boolean;
58
+ readonly hide: _angular_core.WritableSignal<boolean>;
59
59
  /** @internal */
60
60
  readonly enableExpandInteractionInternal: _angular_core.WritableSignal<boolean>;
61
61
  readonly enableExpandInteractionComputed: _angular_core.Signal<boolean>;
@@ -112,12 +112,12 @@ declare class SiDashboardComponent implements OnChanges, AfterViewInit {
112
112
  readonly hideMenubar: _angular_core.InputSignalWithTransform<boolean, unknown>;
113
113
  /**
114
114
  * Is `true` if a card is expanded.
115
- * @defaultref {@link _isExpanded}
115
+ * @defaultref {@link isExpandedSignal}
116
116
  */
117
117
  get isExpanded(): boolean;
118
- protected dashboardFrameEndPadding: number | null;
118
+ protected readonly dashboardFrameEndPadding: _angular_core.WritableSignal<number | null>;
119
119
  protected readonly hideMenubarComputed: _angular_core.Signal<boolean>;
120
- private _isExpanded;
120
+ protected readonly isExpandedSignal: _angular_core.WritableSignal<boolean>;
121
121
  private scrollPosition;
122
122
  private readonly reinitCards$;
123
123
  private cards;
@@ -266,6 +266,15 @@ declare class SiDateRangeFilterComponent implements OnChanges {
266
266
  * ```
267
267
  */
268
268
  readonly rangeEndDateMissingLabel: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
269
+ /**
270
+ * label when range is not defined in the preview
271
+ *
272
+ * @defaultValue
273
+ * ```
274
+ * t(() => $localize`:@@SI_DATE_RANGE_FILTER.SELECT_RANGE_LABEL:Select date range`)
275
+ * ```
276
+ */
277
+ readonly selectRangeLabel: _angular_core.InputSignal<_siemens_element_translate_ng_translate.TranslatableString>;
269
278
  /** Event fired when the apply button has been clicked */
270
279
  readonly applyClicked: _angular_core.OutputEmitterRef<void>;
271
280
  /** Base configuration on how the dates should be displayed, parts of it may be overwritten internally. */
@@ -300,9 +309,9 @@ declare class SiDateRangeFilterComponent implements OnChanges {
300
309
  protected updateFromDateRange(dateRange?: DateRange): void;
301
310
  protected point1Changed(): void;
302
311
  protected point2Changed(): void;
303
- protected selectPresetItem(event: Event, item: DateRangePreset): void;
312
+ protected selectPresetItem(label: string): void;
304
313
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SiDateRangeFilterComponent, never>;
305
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiDateRangeFilterComponent, "si-date-range-filter", never, { "range": { "alias": "range"; "required": true; "isSignal": true; }; "presetList": { "alias": "presetList"; "required": false; "isSignal": true; }; "presetSearch": { "alias": "presetSearch"; "required": false; "isSignal": true; }; "enableTimeSelection": { "alias": "enableTimeSelection"; "required": false; "isSignal": true; }; "basicMode": { "alias": "basicMode"; "required": false; "isSignal": true; }; "reverseInputFields": { "alias": "reverseInputFields"; "required": false; "isSignal": true; }; "showApplyButton": { "alias": "showApplyButton"; "required": false; "isSignal": true; }; "hideAdvancedMode": { "alias": "hideAdvancedMode"; "required": false; "isSignal": true; }; "refLabel": { "alias": "refLabel"; "required": false; "isSignal": true; }; "fromLabel": { "alias": "fromLabel"; "required": false; "isSignal": true; }; "toLabel": { "alias": "toLabel"; "required": false; "isSignal": true; }; "rangeLabel": { "alias": "rangeLabel"; "required": false; "isSignal": true; }; "todayLabel": { "alias": "todayLabel"; "required": false; "isSignal": true; }; "nowLabel": { "alias": "nowLabel"; "required": false; "isSignal": true; }; "dateLabel": { "alias": "dateLabel"; "required": false; "isSignal": true; }; "previewLabel": { "alias": "previewLabel"; "required": false; "isSignal": true; }; "datePlaceholder": { "alias": "datePlaceholder"; "required": false; "isSignal": true; }; "beforeLabel": { "alias": "beforeLabel"; "required": false; "isSignal": true; }; "afterLabel": { "alias": "afterLabel"; "required": false; "isSignal": true; }; "withinLabel": { "alias": "withinLabel"; "required": false; "isSignal": true; }; "valueLabel": { "alias": "valueLabel"; "required": false; "isSignal": true; }; "unitLabel": { "alias": "unitLabel"; "required": false; "isSignal": true; }; "searchLabel": { "alias": "searchLabel"; "required": false; "isSignal": true; }; "presetLabel": { "alias": "presetLabel"; "required": false; "isSignal": true; }; "advancedLabel": { "alias": "advancedLabel"; "required": false; "isSignal": true; }; "applyLabel": { "alias": "applyLabel"; "required": false; "isSignal": true; }; "rangeEndDateMissingLabel": { "alias": "rangeEndDateMissingLabel"; "required": false; "isSignal": true; }; "datepickerConfig": { "alias": "datepickerConfig"; "required": false; "isSignal": true; }; }, { "range": "rangeChange"; "applyClicked": "applyClicked"; }, never, never, true, never>;
314
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SiDateRangeFilterComponent, "si-date-range-filter", never, { "range": { "alias": "range"; "required": true; "isSignal": true; }; "presetList": { "alias": "presetList"; "required": false; "isSignal": true; }; "presetSearch": { "alias": "presetSearch"; "required": false; "isSignal": true; }; "enableTimeSelection": { "alias": "enableTimeSelection"; "required": false; "isSignal": true; }; "basicMode": { "alias": "basicMode"; "required": false; "isSignal": true; }; "reverseInputFields": { "alias": "reverseInputFields"; "required": false; "isSignal": true; }; "showApplyButton": { "alias": "showApplyButton"; "required": false; "isSignal": true; }; "hideAdvancedMode": { "alias": "hideAdvancedMode"; "required": false; "isSignal": true; }; "refLabel": { "alias": "refLabel"; "required": false; "isSignal": true; }; "fromLabel": { "alias": "fromLabel"; "required": false; "isSignal": true; }; "toLabel": { "alias": "toLabel"; "required": false; "isSignal": true; }; "rangeLabel": { "alias": "rangeLabel"; "required": false; "isSignal": true; }; "todayLabel": { "alias": "todayLabel"; "required": false; "isSignal": true; }; "nowLabel": { "alias": "nowLabel"; "required": false; "isSignal": true; }; "dateLabel": { "alias": "dateLabel"; "required": false; "isSignal": true; }; "previewLabel": { "alias": "previewLabel"; "required": false; "isSignal": true; }; "datePlaceholder": { "alias": "datePlaceholder"; "required": false; "isSignal": true; }; "beforeLabel": { "alias": "beforeLabel"; "required": false; "isSignal": true; }; "afterLabel": { "alias": "afterLabel"; "required": false; "isSignal": true; }; "withinLabel": { "alias": "withinLabel"; "required": false; "isSignal": true; }; "valueLabel": { "alias": "valueLabel"; "required": false; "isSignal": true; }; "unitLabel": { "alias": "unitLabel"; "required": false; "isSignal": true; }; "searchLabel": { "alias": "searchLabel"; "required": false; "isSignal": true; }; "presetLabel": { "alias": "presetLabel"; "required": false; "isSignal": true; }; "advancedLabel": { "alias": "advancedLabel"; "required": false; "isSignal": true; }; "applyLabel": { "alias": "applyLabel"; "required": false; "isSignal": true; }; "rangeEndDateMissingLabel": { "alias": "rangeEndDateMissingLabel"; "required": false; "isSignal": true; }; "selectRangeLabel": { "alias": "selectRangeLabel"; "required": false; "isSignal": true; }; "datepickerConfig": { "alias": "datepickerConfig"; "required": false; "isSignal": true; }; }, { "range": "rangeChange"; "applyClicked": "applyClicked"; }, never, never, true, never>;
306
315
  }
307
316
 
308
317
  declare class SiDateRangeFilterModule {
@@ -1,7 +1,6 @@
1
1
  import * as _siemens_element_translate_ng_translate from '@siemens/element-translate-ng/translate';
2
2
  import { TranslatableString } from '@siemens/element-translate-ng/translate';
3
3
  import * as _angular_core from '@angular/core';
4
- import { OnChanges, SimpleChanges } from '@angular/core';
5
4
  import { HttpHeaders, HttpRequest, HttpEvent, HttpResponse } from '@angular/common/http';
6
5
  import { Observable, Subscription } from 'rxjs';
7
6
 
@@ -219,7 +218,7 @@ declare class SiFileDropzoneComponent {
219
218
  private readonly fileUploadDirective;
220
219
  protected dropHandler(event: DragEvent): void;
221
220
  protected dragOverHandler(event: DragEvent): void;
222
- protected inputEnterHandler(): void;
221
+ protected triggerFileSelect(): void;
223
222
  protected onFilesAdded(files: UploadFile[]): void;
224
223
  protected onFileError(error: FileUploadError): void;
225
224
  /**
@@ -271,7 +270,7 @@ interface ExtUploadFile extends UploadFile {
271
270
  successResponse?: HttpResponse<unknown>;
272
271
  fadeOut?: boolean;
273
272
  }
274
- declare class SiFileUploaderComponent implements OnChanges {
273
+ declare class SiFileUploaderComponent {
275
274
  /**
276
275
  * Text of the link to open the file select dialog (follows `uploadDropText`).
277
276
  *
@@ -485,15 +484,14 @@ declare class SiFileUploaderComponent implements OnChanges {
485
484
  */
486
485
  readonly filesChanges: _angular_core.OutputEmitterRef<UploadFile[]>;
487
486
  protected readonly icons: Record<"elementCancel" | "elementDelete" | "elementDocument" | "elementRedo", string>;
488
- protected files: ExtUploadFile[];
487
+ protected readonly files: _angular_core.WritableSignal<ExtUploadFile[]>;
489
488
  protected pending: number;
490
489
  private uploading;
491
- protected uploadEnabled: boolean;
492
- protected maxFilesReached: boolean;
490
+ protected readonly uploadEnabled: _angular_core.WritableSignal<boolean>;
491
+ protected readonly maxFilesReached: _angular_core.WritableSignal<boolean>;
493
492
  private readonly dropZone;
494
- private cdRef;
495
493
  private http?;
496
- ngOnChanges(changes: SimpleChanges<this>): void;
494
+ constructor();
497
495
  protected handleFiles(files: UploadFile[]): void;
498
496
  protected removeFile(index: number): void;
499
497
  protected cancelUpload(file: ExtUploadFile): void;
@@ -1,9 +1,8 @@
1
1
  import * as _siemens_element_ng_header_dropdown from '@siemens/element-ng/header-dropdown';
2
2
  import * as _angular_core from '@angular/core';
3
- import { OnChanges, OnInit, OnDestroy, TemplateRef, InjectionToken } from '@angular/core';
3
+ import { OnChanges, OnInit, OnDestroy, TemplateRef, Signal, InjectionToken } from '@angular/core';
4
4
  import { MenuItem } from '@siemens/element-ng/common';
5
5
  import { ConnectedPosition } from '@angular/cdk/overlay';
6
- import { Observable } from 'rxjs';
7
6
 
8
7
  /**
9
8
  * Trigger to open dropdowns in a navbar.
@@ -41,6 +40,7 @@ declare class SiHeaderDropdownTriggerDirective implements OnChanges, OnInit, OnD
41
40
  /** @internal */
42
41
  readonly ariaControls: string;
43
42
  private headerAnchorComponentRef?;
43
+ constructor();
44
44
  /** Whether the dropdown is open. */
45
45
  get isOpen(): boolean;
46
46
  /** @internal */
@@ -125,7 +125,7 @@ interface HeaderWithDropdowns {
125
125
  /** Called whenever an item is triggered that is not opening another dropdown. */
126
126
  onDropdownItemTriggered?(): void;
127
127
  /** Whether the dropdown should be opened inline. */
128
- inlineDropdown?: Observable<boolean>;
128
+ inlineDropdown: Signal<boolean>;
129
129
  /** The position of the dropdown if opened in an overlay. */
130
130
  overlayPosition?: ConnectedPosition[];
131
131
  /** Called whenever a dropdown is opened **/