@siemens/element-ng 49.11.0 → 49.13.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 (112) hide show
  1. package/carousel/package.json +4 -0
  2. package/fesm2022/siemens-element-ng-ag-grid.mjs +6 -5
  3. package/fesm2022/siemens-element-ng-ag-grid.mjs.map +1 -1
  4. package/fesm2022/siemens-element-ng-application-header.mjs +51 -32
  5. package/fesm2022/siemens-element-ng-application-header.mjs.map +1 -1
  6. package/fesm2022/siemens-element-ng-autocomplete.mjs +9 -13
  7. package/fesm2022/siemens-element-ng-autocomplete.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 +10 -8
  23. package/fesm2022/siemens-element-ng-date-range-filter.mjs.map +1 -1
  24. package/fesm2022/siemens-element-ng-datepicker.mjs +10 -9
  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 +6 -5
  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 +28 -49
  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 +37 -21
  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-ip-input.mjs +1 -1
  49. package/fesm2022/siemens-element-ng-ip-input.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 +8 -7
  57. package/fesm2022/siemens-element-ng-navbar-vertical-next.mjs.map +1 -1
  58. package/fesm2022/siemens-element-ng-navbar-vertical.mjs +13 -12
  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-phone-number.mjs +63 -42
  69. package/fesm2022/siemens-element-ng-phone-number.mjs.map +1 -1
  70. package/fesm2022/siemens-element-ng-pills-input.mjs +4 -4
  71. package/fesm2022/siemens-element-ng-pills-input.mjs.map +1 -1
  72. package/fesm2022/siemens-element-ng-popover-legacy.mjs +3 -3
  73. package/fesm2022/siemens-element-ng-popover-legacy.mjs.map +1 -1
  74. package/fesm2022/siemens-element-ng-popover.mjs +3 -3
  75. package/fesm2022/siemens-element-ng-popover.mjs.map +1 -1
  76. package/fesm2022/siemens-element-ng-result-details-list.mjs +3 -3
  77. package/fesm2022/siemens-element-ng-result-details-list.mjs.map +1 -1
  78. package/fesm2022/siemens-element-ng-side-panel.mjs +5 -5
  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-tabs.mjs +33 -6
  87. package/fesm2022/siemens-element-ng-tabs.mjs.map +1 -1
  88. package/fesm2022/siemens-element-ng-threshold.mjs +5 -5
  89. package/fesm2022/siemens-element-ng-threshold.mjs.map +1 -1
  90. package/fesm2022/siemens-element-ng-toast-notification.mjs +3 -3
  91. package/fesm2022/siemens-element-ng-toast-notification.mjs.map +1 -1
  92. package/fesm2022/siemens-element-ng-tooltip.mjs +180 -77
  93. package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -1
  94. package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
  95. package/fesm2022/siemens-element-ng-tree-view.mjs +6 -6
  96. package/fesm2022/siemens-element-ng-tree-view.mjs.map +1 -1
  97. package/package.json +12 -8
  98. package/template-i18n.json +7 -0
  99. package/types/siemens-element-ng-application-header.d.ts +15 -8
  100. package/types/siemens-element-ng-autocomplete.d.ts +19 -19
  101. package/types/siemens-element-ng-carousel.d.ts +209 -0
  102. package/types/siemens-element-ng-chat-messages.d.ts +1 -2
  103. package/types/siemens-element-ng-dashboard.d.ts +4 -4
  104. package/types/siemens-element-ng-date-range-filter.d.ts +1 -1
  105. package/types/siemens-element-ng-file-uploader.d.ts +6 -8
  106. package/types/siemens-element-ng-form.d.ts +1 -3
  107. package/types/siemens-element-ng-header-dropdown.d.ts +8 -3
  108. package/types/siemens-element-ng-navbar.d.ts +1 -2
  109. package/types/siemens-element-ng-phone-number.d.ts +2 -2
  110. package/types/siemens-element-ng-tabs.d.ts +4 -0
  111. package/types/siemens-element-ng-tooltip.d.ts +10 -26
  112. package/types/siemens-element-ng-translate.d.ts +7 -0
@@ -1,11 +1,11 @@
1
1
  import * as i1 from '@angular/cdk/a11y';
2
2
  import { CdkTrapFocus, A11yModule } from '@angular/cdk/a11y';
3
3
  import * as i0 from '@angular/core';
4
- import { InjectionToken, input, Component, output, inject, ViewContainerRef, ElementRef, Injector, Directive, viewChild, DOCUMENT, ChangeDetectionStrategy } from '@angular/core';
4
+ import { InjectionToken, input, ChangeDetectionStrategy, Component, output, inject, ViewContainerRef, ElementRef, computed, Injector, effect, untracked, Directive, viewChild, DOCUMENT } from '@angular/core';
5
5
  import { Overlay } from '@angular/cdk/overlay';
6
6
  import { TemplatePortal } from '@angular/cdk/portal';
7
- import { Subject, of } from 'rxjs';
8
- import { take, skip, takeUntil, filter } from 'rxjs/operators';
7
+ import { Subject } from 'rxjs';
8
+ import { filter, takeUntil, take } from 'rxjs/operators';
9
9
  import { elementRecordFilled, elementOk, elementDown2 } from '@siemens/element-icons';
10
10
  import { addIcons, SiIconComponent } from '@siemens/element-ng/icon';
11
11
  import { SiLinkDirective } from '@siemens/element-ng/link';
@@ -23,11 +23,15 @@ const SI_HEADER_DROPDOWN_OPTIONS = new InjectionToken('si-header-dropdown.option
23
23
  class SiHeaderAnchorComponent {
24
24
  ariaOwns = input(...(ngDevMode ? [undefined, { debugName: "ariaOwns" }] : []));
25
25
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderAnchorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
26
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.8", type: SiHeaderAnchorComponent, isStandalone: true, selector: "ng-component", inputs: { ariaOwns: { classPropertyName: "ariaOwns", publicName: "ariaOwns", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.aria-owns": "ariaOwns()" } }, ngImport: i0, template: '', isInline: true });
26
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.8", type: SiHeaderAnchorComponent, isStandalone: true, selector: "ng-component", inputs: { ariaOwns: { classPropertyName: "ariaOwns", publicName: "ariaOwns", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.aria-owns": "ariaOwns()" } }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.Default });
27
27
  }
28
28
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderAnchorComponent, decorators: [{
29
29
  type: Component,
30
- args: [{ template: '', host: { '[attr.aria-owns]': 'ariaOwns()' } }]
30
+ args: [{
31
+ template: '',
32
+ changeDetection: ChangeDetectionStrategy.Default,
33
+ host: { '[attr.aria-owns]': 'ariaOwns()' }
34
+ }]
31
35
  }], propDecorators: { ariaOwns: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaOwns", required: false }] }] } });
32
36
  /**
33
37
  * Trigger to open dropdowns in a navbar.
@@ -55,6 +59,11 @@ class SiHeaderDropdownTriggerDirective {
55
59
  });
56
60
  /** @internal */
57
61
  navbar = inject(SI_HEADER_WITH_DROPDOWNS, { optional: true });
62
+ /**
63
+ * Whether the dropdown is opened inline (mobile) instead of in an overlay (desktop).
64
+ * Inline dropdowns are simple disclosure groups, while overlay dropdowns are dialogs.
65
+ */
66
+ inline = computed(() => this.navbar?.inlineDropdown() ?? false, ...(ngDevMode ? [{ debugName: "inline" }] : []));
58
67
  // we need to create a new injector, so that the parent can be injected properly
59
68
  injector = Injector.create({ parent: inject(Injector), providers: [] });
60
69
  viewRef;
@@ -71,6 +80,16 @@ class SiHeaderDropdownTriggerDirective {
71
80
  /** @internal */
72
81
  ariaControls = `si-navbar-dropdown-${SiHeaderDropdownTriggerDirective.idCounter}`;
73
82
  headerAnchorComponentRef;
83
+ constructor() {
84
+ effect(() => {
85
+ const inline = this.navbar?.inlineDropdown() ?? false;
86
+ untracked(() => {
87
+ if (this._isOpen && inline === this.isOverlay) {
88
+ this.close();
89
+ }
90
+ });
91
+ });
92
+ }
74
93
  /** Whether the dropdown is open. */
75
94
  get isOpen() {
76
95
  return this._isOpen;
@@ -98,15 +117,10 @@ class SiHeaderDropdownTriggerDirective {
98
117
  if (this.destroying || this._isOpen) {
99
118
  return;
100
119
  }
101
- (this.navbar?.inlineDropdown ?? of(false)).pipe(take(1)).subscribe(inline => {
102
- this._isOpen = true;
103
- if (!inline) {
104
- this.attachDropdownOverlay();
105
- }
106
- this.navbar?.inlineDropdown
107
- ?.pipe(skip(1), takeUntil(this.dropdownClose))
108
- .subscribe(() => this.close());
109
- });
120
+ this._isOpen = true;
121
+ if (!(this.navbar?.inlineDropdown() ?? false)) {
122
+ this.attachDropdownOverlay();
123
+ }
110
124
  if (this.parent) {
111
125
  this.parent.openSubmenu = this;
112
126
  }
@@ -205,7 +219,7 @@ class SiHeaderDropdownTriggerDirective {
205
219
  .subscribe(() => this.close());
206
220
  }
207
221
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderDropdownTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
208
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.8", type: SiHeaderDropdownTriggerDirective, isStandalone: true, selector: "[siHeaderDropdownTriggerFor]", inputs: { dropdown: { classPropertyName: "dropdown", publicName: "siHeaderDropdownTriggerFor", isSignal: true, isRequired: true, transformFunction: null }, dropdownData: { classPropertyName: "dropdownData", publicName: "dropdownData", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openChange: "openChange" }, host: { listeners: { "click": "click()" }, properties: { "id": "id", "class.show": "_isOpen", "attr.aria-expanded": "_isOpen", "attr.aria-controls": "ariaControls" }, classAttribute: "dropdown-toggle" }, exportAs: ["siHeaderDropdownTrigger"], usesOnChanges: true, ngImport: i0 });
222
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.8", type: SiHeaderDropdownTriggerDirective, isStandalone: true, selector: "[siHeaderDropdownTriggerFor]", inputs: { dropdown: { classPropertyName: "dropdown", publicName: "siHeaderDropdownTriggerFor", isSignal: true, isRequired: true, transformFunction: null }, dropdownData: { classPropertyName: "dropdownData", publicName: "dropdownData", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openChange: "openChange" }, host: { listeners: { "click": "click()" }, properties: { "id": "id", "class.show": "_isOpen", "attr.aria-haspopup": "inline() ? null : 'dialog'", "attr.aria-expanded": "_isOpen", "attr.aria-controls": "ariaControls" }, classAttribute: "dropdown-toggle" }, exportAs: ["siHeaderDropdownTrigger"], usesOnChanges: true, ngImport: i0 });
209
223
  }
210
224
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderDropdownTriggerDirective, decorators: [{
211
225
  type: Directive,
@@ -215,13 +229,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
215
229
  class: 'dropdown-toggle',
216
230
  '[id]': 'id',
217
231
  '[class.show]': '_isOpen',
232
+ '[attr.aria-haspopup]': "inline() ? null : 'dialog'",
218
233
  '[attr.aria-expanded]': '_isOpen',
219
234
  '[attr.aria-controls]': 'ariaControls',
220
235
  '(click)': 'click()'
221
236
  },
222
237
  exportAs: 'siHeaderDropdownTrigger'
223
238
  }]
224
- }], propDecorators: { dropdown: [{ type: i0.Input, args: [{ isSignal: true, alias: "siHeaderDropdownTriggerFor", required: true }] }], dropdownData: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownData", required: false }] }], openChange: [{ type: i0.Output, args: ["openChange"] }] } });
239
+ }], ctorParameters: () => [], propDecorators: { dropdown: [{ type: i0.Input, args: [{ isSignal: true, alias: "siHeaderDropdownTriggerFor", required: true }] }], dropdownData: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownData", required: false }] }], openChange: [{ type: i0.Output, args: ["openChange"] }] } });
225
240
 
226
241
  /**
227
242
  * Copyright (c) Siemens 2016 - 2026
@@ -262,13 +277,13 @@ class SiHeaderDropdownComponent {
262
277
  (!this.options?.disableRootFocusTrapForInlineMode && this.trigger.level === 1));
263
278
  }
264
279
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
265
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.0.8", type: SiHeaderDropdownComponent, isStandalone: true, selector: "si-header-dropdown", host: { attributes: { "role": "group" }, listeners: { "keydown.escape": "trigger.close()" }, properties: { "id": "trigger.ariaControls", "attr.aria-labelledby": "trigger.id", "class.show": "trigger.isOpen", "class.header-dropdown-overlay": "trigger.isOverlay", "class.sub-menu": "trigger.level > 1" }, classAttribute: "dropdown-menu position-static" }, viewQueries: [{ propertyName: "focusTrap", first: true, predicate: CdkTrapFocus, descendants: true, isSignal: true }], ngImport: i0, template: "<div [cdkTrapFocus]=\"trapFocus\" [cdkTrapFocusAutoCapture]=\"this.trigger.isOverlay\">\n <ng-content />\n</div>\n", styles: [":host.sub-menu{min-inline-size:200px}\n"], dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
280
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.0.8", type: SiHeaderDropdownComponent, isStandalone: true, selector: "si-header-dropdown", host: { listeners: { "keydown.escape": "trigger.close()" }, properties: { "attr.role": "trigger.isOverlay ? 'dialog' : 'group'", "id": "trigger.ariaControls", "attr.aria-labelledby": "trigger.id", "class.show": "trigger.isOpen", "class.header-dropdown-overlay": "trigger.isOverlay", "class.sub-menu": "trigger.level > 1" }, classAttribute: "dropdown-menu position-static" }, viewQueries: [{ propertyName: "focusTrap", first: true, predicate: CdkTrapFocus, descendants: true, isSignal: true }], ngImport: i0, template: "<div [cdkTrapFocus]=\"trapFocus\" [cdkTrapFocusAutoCapture]=\"this.trigger.isOverlay\">\n <ng-content />\n</div>\n", styles: [":host.sub-menu{min-inline-size:200px}\n"], dependencies: [{ kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
266
281
  }
267
282
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderDropdownComponent, decorators: [{
268
283
  type: Component,
269
284
  args: [{ selector: 'si-header-dropdown', imports: [A11yModule], changeDetection: ChangeDetectionStrategy.OnPush, host: {
270
285
  class: 'dropdown-menu position-static',
271
- role: 'group',
286
+ '[attr.role]': "trigger.isOverlay ? 'dialog' : 'group'",
272
287
  '[id]': 'trigger.ariaControls',
273
288
  '[attr.aria-labelledby]': 'trigger.id',
274
289
  '[class.show]': 'trigger.isOpen',
@@ -312,12 +327,13 @@ class SiHeaderDropdownItemComponent {
312
327
  }
313
328
  }
314
329
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderDropdownItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
315
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiHeaderDropdownItemComponent, isStandalone: true, selector: "si-header-dropdown-item, a[si-header-dropdown-item], button[si-header-dropdown-item]", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, badge: { classPropertyName: "badge", publicName: "badge", isSignal: true, isRequired: false, transformFunction: null }, iconBadge: { classPropertyName: "iconBadge", publicName: "iconBadge", isSignal: true, isRequired: false, transformFunction: null }, badgeColor: { classPropertyName: "badgeColor", publicName: "badgeColor", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "click()" }, classAttribute: "dropdown-item focus-inside" }, ngImport: i0, template: "@if (icon()) {\n <si-icon class=\"icon\" [icon]=\"icon()!\" />\n}\n@if (iconBadge()) {\n <div class=\"badge-text\">{{ iconBadge() }}</div>\n}\n<span class=\"item-title text-truncate\">\n <ng-content />\n</span>\n<div class=\"item-end ps-2 d-flex me-n3 ms-auto gap-1\">\n @if (badge()) {\n <span class=\"mx-0 me-1 ms-2 badge\" [class]=\"`bg-${badgeColor() || 'default'}`\">{{\n badge()\n }}</span>\n }\n @if (checked() === 'check') {\n <si-icon class=\"icon\" [icon]=\"icons.elementOk\" />\n }\n @if (checked() === 'radio') {\n <si-icon class=\"icon-sm me-2\" [icon]=\"icons.elementRecordFilled\" />\n }\n @if (ownTrigger) {\n <si-icon class=\"dropdown-caret m-0 ps-0\" [icon]=\"icons.elementDown2\" />\n }\n</div>\n", styles: [".item-end:empty{display:none!important}:host-context(.dropdown-menu .dropdown-menu){padding-inline-start:28px}.dropdown-caret{transform-origin:initial}\n"], dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
330
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiHeaderDropdownItemComponent, isStandalone: true, selector: "si-header-dropdown-item, a[si-header-dropdown-item], button[si-header-dropdown-item]", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, badge: { classPropertyName: "badge", publicName: "badge", isSignal: true, isRequired: false, transformFunction: null }, iconBadge: { classPropertyName: "iconBadge", publicName: "iconBadge", isSignal: true, isRequired: false, transformFunction: null }, badgeColor: { classPropertyName: "badgeColor", publicName: "badgeColor", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "click()" }, properties: { "attr.aria-pressed": "checked() ? \"true\" : null" }, classAttribute: "dropdown-item focus-inside" }, ngImport: i0, template: "@if (icon()) {\n <si-icon class=\"icon\" [icon]=\"icon()!\" />\n}\n@if (iconBadge()) {\n <div class=\"badge-text\">{{ iconBadge() }}</div>\n}\n<span class=\"item-title text-truncate\">\n <ng-content />\n</span>\n<div class=\"item-end ps-2 d-flex me-n3 ms-auto gap-1\">\n @if (badge()) {\n <span class=\"mx-0 me-1 ms-2 badge\" [class]=\"`bg-${badgeColor() || 'default'}`\">{{\n badge()\n }}</span>\n }\n @if (checked() === 'check') {\n <si-icon class=\"icon\" [icon]=\"icons.elementOk\" />\n }\n @if (checked() === 'radio') {\n <si-icon class=\"icon-sm me-2\" [icon]=\"icons.elementRecordFilled\" />\n }\n @if (ownTrigger) {\n <si-icon class=\"dropdown-caret m-0 ps-0\" [icon]=\"icons.elementDown2\" />\n }\n</div>\n", styles: [".item-end:empty{display:none!important}:host-context(.dropdown-menu .dropdown-menu){padding-inline-start:28px}.dropdown-caret{transform-origin:initial}\n"], dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
316
331
  }
317
332
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderDropdownItemComponent, decorators: [{
318
333
  type: Component,
319
334
  args: [{ selector: 'si-header-dropdown-item, a[si-header-dropdown-item], button[si-header-dropdown-item]', imports: [SiIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, host: {
320
335
  class: 'dropdown-item focus-inside',
336
+ '[attr.aria-pressed]': 'checked() ? "true" : null',
321
337
  '(click)': 'click()'
322
338
  }, template: "@if (icon()) {\n <si-icon class=\"icon\" [icon]=\"icon()!\" />\n}\n@if (iconBadge()) {\n <div class=\"badge-text\">{{ iconBadge() }}</div>\n}\n<span class=\"item-title text-truncate\">\n <ng-content />\n</span>\n<div class=\"item-end ps-2 d-flex me-n3 ms-auto gap-1\">\n @if (badge()) {\n <span class=\"mx-0 me-1 ms-2 badge\" [class]=\"`bg-${badgeColor() || 'default'}`\">{{\n badge()\n }}</span>\n }\n @if (checked() === 'check') {\n <si-icon class=\"icon\" [icon]=\"icons.elementOk\" />\n }\n @if (checked() === 'radio') {\n <si-icon class=\"icon-sm me-2\" [icon]=\"icons.elementRecordFilled\" />\n }\n @if (ownTrigger) {\n <si-icon class=\"dropdown-caret m-0 ps-0\" [icon]=\"icons.elementDown2\" />\n }\n</div>\n", styles: [".item-end:empty{display:none!important}:host-context(.dropdown-menu .dropdown-menu){padding-inline-start:28px}.dropdown-caret{transform-origin:initial}\n"] }]
323
339
  }], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], badge: [{ type: i0.Input, args: [{ isSignal: true, alias: "badge", required: false }] }], iconBadge: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconBadge", required: false }] }], badgeColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "badgeColor", required: false }] }], checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }] } });
@@ -336,7 +352,7 @@ class SiHeaderDropdownItemsFactoryComponent {
336
352
  items = input.required(...(ngDevMode ? [{ debugName: "items" }] : []));
337
353
  activeChange = output();
338
354
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderDropdownItemsFactoryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
339
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiHeaderDropdownItemsFactoryComponent, isStandalone: true, selector: "si-header-dropdown-items-factory", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { activeChange: "activeChange" }, ngImport: i0, template: "@for (item of items(); track item) {\n @if (item.isHeading) {\n <div class=\"dropdown-item dropdown-header dropdown-item-static\">\n {{ item.title | translate }}\n </div>\n } @else {\n @if (item.title !== '-') {\n @if (item.items) {\n <button\n type=\"button\"\n si-header-dropdown-item\n [icon]=\"item.icon\"\n [badge]=\"item.badgeStyle !== 'dot' ? item.badge : undefined\"\n [badgeColor]=\"item.badgeColor\"\n [iconBadge]=\"item.badgeStyle === 'dot' ? item.badge : undefined\"\n [siHeaderDropdownTriggerFor]=\"dropdown\"\n >\n {{ item.title | translate }}\n </button>\n <ng-template #dropdown>\n <si-header-dropdown>\n <si-header-dropdown-items-factory [items]=\"item.items\" />\n </si-header-dropdown>\n </ng-template>\n } @else {\n <a\n si-header-dropdown-item\n activeClass=\"active\"\n [siLink]=\"item\"\n [icon]=\"item.icon\"\n [badge]=\"item.badgeStyle !== 'dot' ? item.badge : undefined\"\n [badgeColor]=\"item.badgeColor\"\n [iconBadge]=\"item.badgeStyle === 'dot' ? item.badge : undefined\"\n [checked]=\"item.selectionState\"\n (activeChange)=\"activeChange.emit($event)\"\n >\n {{ item.title | translate }}\n </a>\n }\n } @else {\n <div class=\"dropdown-divider\"></div>\n }\n }\n}\n", dependencies: [{ kind: "component", type: SiHeaderDropdownItemsFactoryComponent, selector: "si-header-dropdown-items-factory", inputs: ["items"], outputs: ["activeChange"] }, { kind: "component", type: SiHeaderDropdownComponent, selector: "si-header-dropdown" }, { kind: "component", type: SiHeaderDropdownItemComponent, selector: "si-header-dropdown-item, a[si-header-dropdown-item], button[si-header-dropdown-item]", inputs: ["icon", "badge", "iconBadge", "badgeColor", "checked"] }, { kind: "directive", type: SiLinkDirective, selector: "[siLink]", inputs: ["siLink", "siLinkDefaultTarget", "actionParam", "activeClass", "exactMatch", "ariaCurrent"], outputs: ["activeChange"], exportAs: ["siLink"] }, { kind: "directive", type: SiHeaderDropdownTriggerDirective, selector: "[siHeaderDropdownTriggerFor]", inputs: ["siHeaderDropdownTriggerFor", "dropdownData"], outputs: ["openChange"], exportAs: ["siHeaderDropdownTrigger"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }] });
355
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiHeaderDropdownItemsFactoryComponent, isStandalone: true, selector: "si-header-dropdown-items-factory", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { activeChange: "activeChange" }, ngImport: i0, template: "@for (item of items(); track item) {\n @if (item.isHeading) {\n <div class=\"dropdown-item dropdown-header dropdown-item-static\">\n {{ item.title | translate }}\n </div>\n } @else {\n @if (item.title !== '-') {\n @if (item.items) {\n <button\n type=\"button\"\n si-header-dropdown-item\n [icon]=\"item.icon\"\n [badge]=\"item.badgeStyle !== 'dot' ? item.badge : undefined\"\n [badgeColor]=\"item.badgeColor\"\n [iconBadge]=\"item.badgeStyle === 'dot' ? item.badge : undefined\"\n [siHeaderDropdownTriggerFor]=\"dropdown\"\n >\n {{ item.title | translate }}\n </button>\n <ng-template #dropdown>\n <si-header-dropdown>\n <si-header-dropdown-items-factory [items]=\"item.items\" />\n </si-header-dropdown>\n </ng-template>\n } @else {\n <a\n si-header-dropdown-item\n activeClass=\"active\"\n [attr.role]=\"!(item.href || item.link) ? 'button' : undefined\"\n [siLink]=\"item\"\n [icon]=\"item.icon\"\n [badge]=\"item.badgeStyle !== 'dot' ? item.badge : undefined\"\n [badgeColor]=\"item.badgeColor\"\n [iconBadge]=\"item.badgeStyle === 'dot' ? item.badge : undefined\"\n [checked]=\"item.selectionState\"\n (activeChange)=\"activeChange.emit($event)\"\n >\n {{ item.title | translate }}\n </a>\n }\n } @else {\n <div class=\"dropdown-divider\"></div>\n }\n }\n}\n", dependencies: [{ kind: "component", type: SiHeaderDropdownItemsFactoryComponent, selector: "si-header-dropdown-items-factory", inputs: ["items"], outputs: ["activeChange"] }, { kind: "component", type: SiHeaderDropdownComponent, selector: "si-header-dropdown" }, { kind: "component", type: SiHeaderDropdownItemComponent, selector: "si-header-dropdown-item, a[si-header-dropdown-item], button[si-header-dropdown-item]", inputs: ["icon", "badge", "iconBadge", "badgeColor", "checked"] }, { kind: "directive", type: SiLinkDirective, selector: "[siLink]", inputs: ["siLink", "siLinkDefaultTarget", "actionParam", "activeClass", "exactMatch", "ariaCurrent"], outputs: ["activeChange"], exportAs: ["siLink"] }, { kind: "directive", type: SiHeaderDropdownTriggerDirective, selector: "[siHeaderDropdownTriggerFor]", inputs: ["siHeaderDropdownTriggerFor", "dropdownData"], outputs: ["openChange"], exportAs: ["siHeaderDropdownTrigger"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default });
340
356
  }
341
357
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHeaderDropdownItemsFactoryComponent, decorators: [{
342
358
  type: Component,
@@ -346,7 +362,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
346
362
  SiTranslatePipe,
347
363
  SiLinkDirective,
348
364
  SiHeaderDropdownTriggerDirective
349
- ], template: "@for (item of items(); track item) {\n @if (item.isHeading) {\n <div class=\"dropdown-item dropdown-header dropdown-item-static\">\n {{ item.title | translate }}\n </div>\n } @else {\n @if (item.title !== '-') {\n @if (item.items) {\n <button\n type=\"button\"\n si-header-dropdown-item\n [icon]=\"item.icon\"\n [badge]=\"item.badgeStyle !== 'dot' ? item.badge : undefined\"\n [badgeColor]=\"item.badgeColor\"\n [iconBadge]=\"item.badgeStyle === 'dot' ? item.badge : undefined\"\n [siHeaderDropdownTriggerFor]=\"dropdown\"\n >\n {{ item.title | translate }}\n </button>\n <ng-template #dropdown>\n <si-header-dropdown>\n <si-header-dropdown-items-factory [items]=\"item.items\" />\n </si-header-dropdown>\n </ng-template>\n } @else {\n <a\n si-header-dropdown-item\n activeClass=\"active\"\n [siLink]=\"item\"\n [icon]=\"item.icon\"\n [badge]=\"item.badgeStyle !== 'dot' ? item.badge : undefined\"\n [badgeColor]=\"item.badgeColor\"\n [iconBadge]=\"item.badgeStyle === 'dot' ? item.badge : undefined\"\n [checked]=\"item.selectionState\"\n (activeChange)=\"activeChange.emit($event)\"\n >\n {{ item.title | translate }}\n </a>\n }\n } @else {\n <div class=\"dropdown-divider\"></div>\n }\n }\n}\n" }]
365
+ ], changeDetection: ChangeDetectionStrategy.Default, template: "@for (item of items(); track item) {\n @if (item.isHeading) {\n <div class=\"dropdown-item dropdown-header dropdown-item-static\">\n {{ item.title | translate }}\n </div>\n } @else {\n @if (item.title !== '-') {\n @if (item.items) {\n <button\n type=\"button\"\n si-header-dropdown-item\n [icon]=\"item.icon\"\n [badge]=\"item.badgeStyle !== 'dot' ? item.badge : undefined\"\n [badgeColor]=\"item.badgeColor\"\n [iconBadge]=\"item.badgeStyle === 'dot' ? item.badge : undefined\"\n [siHeaderDropdownTriggerFor]=\"dropdown\"\n >\n {{ item.title | translate }}\n </button>\n <ng-template #dropdown>\n <si-header-dropdown>\n <si-header-dropdown-items-factory [items]=\"item.items\" />\n </si-header-dropdown>\n </ng-template>\n } @else {\n <a\n si-header-dropdown-item\n activeClass=\"active\"\n [attr.role]=\"!(item.href || item.link) ? 'button' : undefined\"\n [siLink]=\"item\"\n [icon]=\"item.icon\"\n [badge]=\"item.badgeStyle !== 'dot' ? item.badge : undefined\"\n [badgeColor]=\"item.badgeColor\"\n [iconBadge]=\"item.badgeStyle === 'dot' ? item.badge : undefined\"\n [checked]=\"item.selectionState\"\n (activeChange)=\"activeChange.emit($event)\"\n >\n {{ item.title | translate }}\n </a>\n }\n } @else {\n <div class=\"dropdown-divider\"></div>\n }\n }\n}\n" }]
350
366
  }], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: true }] }], activeChange: [{ type: i0.Output, args: ["activeChange"] }] } });
351
367
 
352
368
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-header-dropdown.mjs","sources":["../../../../projects/element-ng/header-dropdown/si-header.model.ts","../../../../projects/element-ng/header-dropdown/si-header-dropdown-trigger.directive.ts","../../../../projects/element-ng/header-dropdown/si-header-dropdown.component.ts","../../../../projects/element-ng/header-dropdown/si-header-dropdown.component.html","../../../../projects/element-ng/header-dropdown/si-header-dropdown-item.component.ts","../../../../projects/element-ng/header-dropdown/si-header-dropdown-item.component.html","../../../../projects/element-ng/header-dropdown/si-header-dropdown-items-factory.component.ts","../../../../projects/element-ng/header-dropdown/si-header-dropdown-items-factory.component.html","../../../../projects/element-ng/header-dropdown/index.ts","../../../../projects/element-ng/header-dropdown/siemens-element-ng-header-dropdown.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { SiHeaderDropdownTriggerDirective } from './si-header-dropdown-trigger.directive';\n\n/** @internal */\nexport interface HeaderWithDropdowns {\n /** Called whenever an item is triggered that is not opening another dropdown. */\n onDropdownItemTriggered?(): void;\n /** Whether the dropdown should be opened inline. */\n inlineDropdown?: Observable<boolean>;\n /** The position of the dropdown if opened in an overlay. */\n overlayPosition?: ConnectedPosition[];\n /** Called whenever a dropdown is opened **/\n dropdownOpened?(trigger: SiHeaderDropdownTriggerDirective): void;\n /** Called whenever a dropdown is close **/\n dropdownClosed?(trigger: SiHeaderDropdownTriggerDirective): void;\n}\n\n/** @internal */\nexport const SI_HEADER_WITH_DROPDOWNS = new InjectionToken<HeaderWithDropdowns>(\n 'si-header.with-dropdowns'\n);\n\n/**\n * Can be used to pass context-specific options to a header-dropdown\n * that should / or cannot be provided by a consuming application.\n * @internal\n */\nexport interface HeaderDropdownOptions {\n /**\n * If the inline navbar is already wrapped in a focus trap,\n * set this property to prevent the header-dropdown from creating a focus trap.\n */\n disableRootFocusTrapForInlineMode: boolean;\n}\n\n/** @internal */\nexport const SI_HEADER_DROPDOWN_OPTIONS = new InjectionToken<HeaderDropdownOptions>(\n 'si-header-dropdown.options'\n);\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n Component,\n ComponentRef,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n inject,\n Injector,\n input,\n OnChanges,\n OnDestroy,\n OnInit,\n output,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\nimport { of, Subject } from 'rxjs';\nimport { filter, skip, take, takeUntil } from 'rxjs/operators';\n\nimport { SI_HEADER_WITH_DROPDOWNS } from './si-header.model';\n\n@Component({ template: '', host: { '[attr.aria-owns]': 'ariaOwns()' } })\nclass SiHeaderAnchorComponent {\n readonly ariaOwns = input<string>();\n}\n\n/**\n * Trigger to open dropdowns in a navbar.\n * A dropdown will always be attached to the view, even if not visible.\n *\n * If a dropdown is opened in desktop mode, it will be reattached to an overlay while being opened.\n */\n@Directive({\n selector: '[siHeaderDropdownTriggerFor]',\n host: {\n class: 'dropdown-toggle',\n '[id]': 'id',\n '[class.show]': '_isOpen',\n '[attr.aria-expanded]': '_isOpen',\n '[attr.aria-controls]': 'ariaControls',\n '(click)': 'click()'\n },\n exportAs: 'siHeaderDropdownTrigger'\n})\nexport class SiHeaderDropdownTriggerDirective implements OnChanges, OnInit, OnDestroy {\n private static idCounter = 0;\n\n /** Template that be rendered inside the dropdown. */\n readonly dropdown = input.required<TemplateRef<unknown>>({ alias: 'siHeaderDropdownTriggerFor' });\n /** Data that should be passed as template context to the dropdown. */\n readonly dropdownData = input<unknown>();\n /** Emits whenever a dropdown is opened or closed. */\n readonly openChange = output<boolean>();\n\n private readonly dropdownClose = new Subject<void>();\n\n /** Child triggers will set themselves here if they are open. */\n private openSubmenu?: SiHeaderDropdownTriggerDirective;\n\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly overlay = inject(Overlay);\n private readonly parent = inject(SiHeaderDropdownTriggerDirective, {\n optional: true,\n skipSelf: true\n });\n /** @internal */\n readonly navbar = inject(SI_HEADER_WITH_DROPDOWNS, { optional: true });\n\n // we need to create a new injector, so that the parent can be injected properly\n private readonly injector = Injector.create({ parent: inject(Injector), providers: [] });\n private viewRef?: EmbeddedViewRef<unknown>;\n private portal?: TemplatePortal<unknown>;\n private overlayRef?: OverlayRef;\n\n /** @internal */\n readonly level: number = this.parent ? this.parent.level + 1 : 1;\n\n // used to prevent immediate re-creation of the overlay if this trigger was clicked while overlay is open\n private destroying = false;\n\n /** @internal */\n readonly id = `si-navbar-dropdown-trigger-${SiHeaderDropdownTriggerDirective.idCounter++}`;\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n protected _isOpen = false;\n\n /** @internal */\n readonly ariaControls = `si-navbar-dropdown-${SiHeaderDropdownTriggerDirective.idCounter}`;\n\n private headerAnchorComponentRef?: ComponentRef<SiHeaderAnchorComponent>;\n\n /** Whether the dropdown is open. */\n get isOpen(): boolean {\n return this._isOpen;\n }\n\n /** @internal */\n get isOverlay(): boolean {\n return !!this.overlayRef;\n }\n\n ngOnChanges(): void {\n if (this.portal) {\n this.portal.templateRef = this.dropdown();\n this.portal.context = this.dropdownData();\n }\n }\n\n ngOnInit(): void {\n // Always attach the dropdown, so that it can be used with routerLinkActive\n this.attachDropdownInline();\n }\n\n ngOnDestroy(): void {\n this.close();\n this.dropdownClose.complete();\n }\n\n /** Opens the dropdown. */\n open(): void {\n if (this.destroying || this._isOpen) {\n return;\n }\n\n (this.navbar?.inlineDropdown ?? of(false)).pipe(take(1)).subscribe(inline => {\n this._isOpen = true;\n if (!inline) {\n this.attachDropdownOverlay();\n }\n this.navbar?.inlineDropdown\n ?.pipe(skip(1), takeUntil(this.dropdownClose))\n .subscribe(() => this.close());\n });\n\n if (this.parent) {\n this.parent.openSubmenu = this;\n }\n\n if (this.navbar?.dropdownOpened) {\n this.navbar?.dropdownOpened(this);\n }\n this.openChange.emit(true);\n }\n\n /** Closes the dropdown. */\n close(options?: { all?: boolean }): void {\n if (!this._isOpen) {\n return;\n }\n\n if (this.openSubmenu) {\n this.openSubmenu.close();\n }\n\n this.dropdownClose.next();\n this._isOpen = false;\n if (this.overlayRef) {\n this.destroying = true;\n this.overlayRef.detach();\n this.overlayRef.dispose();\n this.viewRef?.destroy();\n this.portal = undefined;\n this.overlayRef = undefined;\n this.headerAnchorComponentRef?.destroy();\n // do not use queueMicrotask, it executed to early\n setTimeout(() => (this.destroying = false));\n this.attachDropdownInline();\n } else {\n this.viewRef?.markForCheck();\n }\n\n if (this.parent) {\n this.parent.openSubmenu = undefined;\n }\n\n if (this.navbar?.dropdownClosed) {\n this.navbar?.dropdownClosed(this);\n }\n\n if (options?.all && this.parent) {\n this.parent.close(options);\n } else {\n this.openChange.emit(false);\n }\n }\n\n protected click(): void {\n if (this._isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n private attachDropdownInline(): void {\n this.viewRef = this.viewContainerRef.createEmbeddedView(this.dropdown(), this.dropdownData(), {\n injector: this.injector\n });\n this.viewRef.markForCheck();\n }\n\n private attachDropdownOverlay(): void {\n this.viewRef?.destroy();\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withPositions(\n this.navbar?.overlayPosition ??\n (this.level > 1\n ? [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: 2\n }\n ]\n : [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: -4\n }\n ])\n )\n });\n this.portal = new TemplatePortal(\n this.dropdown(),\n this.viewContainerRef,\n this.dropdownData(),\n this.injector\n );\n this.viewRef = this.overlayRef.attach(this.portal);\n this.headerAnchorComponentRef = this.viewContainerRef.createComponent(SiHeaderAnchorComponent);\n this.headerAnchorComponentRef.setInput('ariaOwns', this.ariaControls);\n\n this.overlayRef\n .outsidePointerEvents()\n .pipe(\n filter(event => event.type === 'click'),\n filter(() => !this.openSubmenu),\n takeUntil(this.dropdownClose),\n take(1)\n )\n .subscribe(() => this.close());\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { A11yModule, CdkTrapFocus } from '@angular/cdk/a11y';\nimport { ChangeDetectionStrategy, Component, inject, viewChild, DOCUMENT } from '@angular/core';\n\nimport { SiHeaderDropdownTriggerDirective } from './si-header-dropdown-trigger.directive';\nimport { SI_HEADER_DROPDOWN_OPTIONS } from './si-header.model';\n\n/**\n * Wrapper component for {@link SiHeaderDropdownItemComponent}.\n * Must only be opened using an {@link SiHeaderDropdownTriggerDirective}.\n */\n@Component({\n selector: 'si-header-dropdown',\n imports: [A11yModule],\n templateUrl: './si-header-dropdown.component.html',\n styles: ':host.sub-menu {min-inline-size: 200px}',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'dropdown-menu position-static',\n role: 'group',\n '[id]': 'trigger.ariaControls',\n '[attr.aria-labelledby]': 'trigger.id',\n '[class.show]': 'trigger.isOpen',\n '[class.header-dropdown-overlay]': 'trigger.isOverlay',\n '[class.sub-menu]': 'trigger.level > 1',\n '(keydown.escape)': 'trigger.close()'\n }\n})\nexport class SiHeaderDropdownComponent {\n /** @internal */\n protected trigger = inject(SiHeaderDropdownTriggerDirective);\n\n private readonly focusTrap = viewChild.required(CdkTrapFocus);\n private previousElement: Element | null = null;\n private readonly document = inject(DOCUMENT);\n private readonly options = inject(SI_HEADER_DROPDOWN_OPTIONS, { optional: true });\n\n constructor() {\n // The autoFocus feature of the focus trap is not enough, as this component is not newly created when opened in mobile (inline).\n // But we still need autofocus in desktop mode, as the close event is never executed (component is destroyed before).\n this.trigger.openChange.subscribe(change => {\n if (!this.trigger.isOverlay && this.trapFocus && change) {\n this.previousElement = this.document.activeElement;\n this.focusTrap().focusTrap.focusFirstTabbableElementWhenReady();\n } else {\n if (\n this.previousElement &&\n 'focus' in this.previousElement &&\n typeof this.previousElement.focus === 'function'\n ) {\n this.previousElement.focus();\n }\n this.previousElement = null;\n }\n });\n }\n\n /** @internal */\n protected get trapFocus(): boolean {\n return (\n this.trigger.isOverlay ||\n (!this.options?.disableRootFocusTrapForInlineMode && this.trigger.level === 1)\n );\n }\n}\n","<div [cdkTrapFocus]=\"trapFocus\" [cdkTrapFocusAutoCapture]=\"this.trigger.isOverlay\">\n <ng-content />\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { elementDown2, elementOk, elementRecordFilled } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\n\nimport { SiHeaderDropdownTriggerDirective } from './si-header-dropdown-trigger.directive';\nimport { SI_HEADER_WITH_DROPDOWNS } from './si-header.model';\n\n/**\n * Creates a dropdown-item. Must be used within an {@link SiHeaderDropdownComponent}.\n */\n@Component({\n selector: 'si-header-dropdown-item, a[si-header-dropdown-item], button[si-header-dropdown-item]',\n imports: [SiIconComponent],\n templateUrl: './si-header-dropdown-item.component.html',\n styleUrl: './si-header-dropdown-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'dropdown-item focus-inside',\n '(click)': 'click()'\n }\n})\nexport class SiHeaderDropdownItemComponent {\n protected readonly icons = addIcons({ elementDown2, elementOk, elementRecordFilled });\n\n /** Optional icon that will be rendered before the label. */\n readonly icon = input<string>();\n /** Badge that is rendered after the label. */\n readonly badge = input<string | number>();\n /** Badge (always red) that is attached to the icon. */\n readonly iconBadge = input<string | number>();\n /** Color of the badge (not iconBadge). */\n readonly badgeColor = input<string>();\n /** Whether the icon is checked with a radio or check mark. */\n readonly checked = input<'radio' | 'check' | ''>();\n\n protected readonly ownTrigger = inject(SiHeaderDropdownTriggerDirective, {\n self: true,\n optional: true\n });\n protected readonly parentTrigger = inject(SiHeaderDropdownTriggerDirective, { skipSelf: true });\n protected readonly navbar = inject(SI_HEADER_WITH_DROPDOWNS, { optional: true });\n\n protected click(): void {\n if (!this.ownTrigger) {\n this.parentTrigger.close({ all: true });\n if (this.navbar?.onDropdownItemTriggered) {\n this.navbar?.onDropdownItemTriggered();\n }\n }\n }\n}\n","@if (icon()) {\n <si-icon class=\"icon\" [icon]=\"icon()!\" />\n}\n@if (iconBadge()) {\n <div class=\"badge-text\">{{ iconBadge() }}</div>\n}\n<span class=\"item-title text-truncate\">\n <ng-content />\n</span>\n<div class=\"item-end ps-2 d-flex me-n3 ms-auto gap-1\">\n @if (badge()) {\n <span class=\"mx-0 me-1 ms-2 badge\" [class]=\"`bg-${badgeColor() || 'default'}`\">{{\n badge()\n }}</span>\n }\n @if (checked() === 'check') {\n <si-icon class=\"icon\" [icon]=\"icons.elementOk\" />\n }\n @if (checked() === 'radio') {\n <si-icon class=\"icon-sm me-2\" [icon]=\"icons.elementRecordFilled\" />\n }\n @if (ownTrigger) {\n <si-icon class=\"dropdown-caret m-0 ps-0\" [icon]=\"icons.elementDown2\" />\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component, input, output } from '@angular/core';\nimport { MenuItem } from '@siemens/element-ng/common';\nimport { SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\n\nimport { SiHeaderDropdownItemComponent } from './si-header-dropdown-item.component';\nimport { SiHeaderDropdownTriggerDirective } from './si-header-dropdown-trigger.directive';\nimport { SiHeaderDropdownComponent } from './si-header-dropdown.component';\n\n/**\n * A factory to render multiple {@link MenuItem}.\n * Requires a wrapping {@link SiHeaderDropdownComponent}.\n *\n * @internal\n */\n@Component({\n selector: 'si-header-dropdown-items-factory',\n imports: [\n SiHeaderDropdownComponent,\n SiHeaderDropdownItemComponent,\n SiTranslatePipe,\n SiLinkDirective,\n SiHeaderDropdownTriggerDirective\n ],\n templateUrl: './si-header-dropdown-items-factory.component.html'\n})\nexport class SiHeaderDropdownItemsFactoryComponent {\n readonly items = input.required<MenuItem[]>();\n readonly activeChange = output<boolean>();\n}\n","@for (item of items(); track item) {\n @if (item.isHeading) {\n <div class=\"dropdown-item dropdown-header dropdown-item-static\">\n {{ item.title | translate }}\n </div>\n } @else {\n @if (item.title !== '-') {\n @if (item.items) {\n <button\n type=\"button\"\n si-header-dropdown-item\n [icon]=\"item.icon\"\n [badge]=\"item.badgeStyle !== 'dot' ? item.badge : undefined\"\n [badgeColor]=\"item.badgeColor\"\n [iconBadge]=\"item.badgeStyle === 'dot' ? item.badge : undefined\"\n [siHeaderDropdownTriggerFor]=\"dropdown\"\n >\n {{ item.title | translate }}\n </button>\n <ng-template #dropdown>\n <si-header-dropdown>\n <si-header-dropdown-items-factory [items]=\"item.items\" />\n </si-header-dropdown>\n </ng-template>\n } @else {\n <a\n si-header-dropdown-item\n activeClass=\"active\"\n [siLink]=\"item\"\n [icon]=\"item.icon\"\n [badge]=\"item.badgeStyle !== 'dot' ? item.badge : undefined\"\n [badgeColor]=\"item.badgeColor\"\n [iconBadge]=\"item.badgeStyle === 'dot' ? item.badge : undefined\"\n [checked]=\"item.selectionState\"\n (activeChange)=\"activeChange.emit($event)\"\n >\n {{ item.title | translate }}\n </a>\n }\n } @else {\n <div class=\"dropdown-divider\"></div>\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-header-dropdown.component';\nexport * from './si-header-dropdown-trigger.directive';\nexport * from './si-header-dropdown-item.component';\nexport * from './si-header-dropdown-items-factory.component';\nexport * from './si-header.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"siemens-element-ng-header-dropdown.mjs","sources":["../../../../projects/element-ng/header-dropdown/si-header.model.ts","../../../../projects/element-ng/header-dropdown/si-header-dropdown-trigger.directive.ts","../../../../projects/element-ng/header-dropdown/si-header-dropdown.component.ts","../../../../projects/element-ng/header-dropdown/si-header-dropdown.component.html","../../../../projects/element-ng/header-dropdown/si-header-dropdown-item.component.ts","../../../../projects/element-ng/header-dropdown/si-header-dropdown-item.component.html","../../../../projects/element-ng/header-dropdown/si-header-dropdown-items-factory.component.ts","../../../../projects/element-ng/header-dropdown/si-header-dropdown-items-factory.component.html","../../../../projects/element-ng/header-dropdown/index.ts","../../../../projects/element-ng/header-dropdown/siemens-element-ng-header-dropdown.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport { InjectionToken, Signal } from '@angular/core';\n\nimport { SiHeaderDropdownTriggerDirective } from './si-header-dropdown-trigger.directive';\n\n/** @internal */\nexport interface HeaderWithDropdowns {\n /** Called whenever an item is triggered that is not opening another dropdown. */\n onDropdownItemTriggered?(): void;\n /** Whether the dropdown should be opened inline. */\n inlineDropdown: Signal<boolean>;\n /** The position of the dropdown if opened in an overlay. */\n overlayPosition?: ConnectedPosition[];\n /** Called whenever a dropdown is opened **/\n dropdownOpened?(trigger: SiHeaderDropdownTriggerDirective): void;\n /** Called whenever a dropdown is close **/\n dropdownClosed?(trigger: SiHeaderDropdownTriggerDirective): void;\n}\n\n/** @internal */\nexport const SI_HEADER_WITH_DROPDOWNS = new InjectionToken<HeaderWithDropdowns>(\n 'si-header.with-dropdowns'\n);\n\n/**\n * Can be used to pass context-specific options to a header-dropdown\n * that should / or cannot be provided by a consuming application.\n * @internal\n */\nexport interface HeaderDropdownOptions {\n /**\n * If the inline navbar is already wrapped in a focus trap,\n * set this property to prevent the header-dropdown from creating a focus trap.\n */\n disableRootFocusTrapForInlineMode: boolean;\n}\n\n/** @internal */\nexport const SI_HEADER_DROPDOWN_OPTIONS = new InjectionToken<HeaderDropdownOptions>(\n 'si-header-dropdown.options'\n);\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n computed,\n Directive,\n effect,\n ElementRef,\n EmbeddedViewRef,\n inject,\n Injector,\n input,\n OnChanges,\n OnDestroy,\n OnInit,\n output,\n TemplateRef,\n untracked,\n ViewContainerRef\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { filter, take, takeUntil } from 'rxjs/operators';\n\nimport { SI_HEADER_WITH_DROPDOWNS } from './si-header.model';\n\n@Component({\n template: '',\n changeDetection: ChangeDetectionStrategy.Default,\n host: { '[attr.aria-owns]': 'ariaOwns()' }\n})\nclass SiHeaderAnchorComponent {\n readonly ariaOwns = input<string>();\n}\n\n/**\n * Trigger to open dropdowns in a navbar.\n * A dropdown will always be attached to the view, even if not visible.\n *\n * If a dropdown is opened in desktop mode, it will be reattached to an overlay while being opened.\n */\n@Directive({\n selector: '[siHeaderDropdownTriggerFor]',\n host: {\n class: 'dropdown-toggle',\n '[id]': 'id',\n '[class.show]': '_isOpen',\n '[attr.aria-haspopup]': \"inline() ? null : 'dialog'\",\n '[attr.aria-expanded]': '_isOpen',\n '[attr.aria-controls]': 'ariaControls',\n '(click)': 'click()'\n },\n exportAs: 'siHeaderDropdownTrigger'\n})\nexport class SiHeaderDropdownTriggerDirective implements OnChanges, OnInit, OnDestroy {\n private static idCounter = 0;\n\n /** Template that be rendered inside the dropdown. */\n readonly dropdown = input.required<TemplateRef<unknown>>({ alias: 'siHeaderDropdownTriggerFor' });\n /** Data that should be passed as template context to the dropdown. */\n readonly dropdownData = input<unknown>();\n /** Emits whenever a dropdown is opened or closed. */\n readonly openChange = output<boolean>();\n\n private readonly dropdownClose = new Subject<void>();\n\n /** Child triggers will set themselves here if they are open. */\n private openSubmenu?: SiHeaderDropdownTriggerDirective;\n\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly overlay = inject(Overlay);\n private readonly parent = inject(SiHeaderDropdownTriggerDirective, {\n optional: true,\n skipSelf: true\n });\n /** @internal */\n readonly navbar = inject(SI_HEADER_WITH_DROPDOWNS, { optional: true });\n\n /**\n * Whether the dropdown is opened inline (mobile) instead of in an overlay (desktop).\n * Inline dropdowns are simple disclosure groups, while overlay dropdowns are dialogs.\n */\n protected readonly inline = computed(() => this.navbar?.inlineDropdown() ?? false);\n\n // we need to create a new injector, so that the parent can be injected properly\n private readonly injector = Injector.create({ parent: inject(Injector), providers: [] });\n private viewRef?: EmbeddedViewRef<unknown>;\n private portal?: TemplatePortal<unknown>;\n private overlayRef?: OverlayRef;\n\n /** @internal */\n readonly level: number = this.parent ? this.parent.level + 1 : 1;\n\n // used to prevent immediate re-creation of the overlay if this trigger was clicked while overlay is open\n private destroying = false;\n\n /** @internal */\n readonly id = `si-navbar-dropdown-trigger-${SiHeaderDropdownTriggerDirective.idCounter++}`;\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n protected _isOpen = false;\n\n /** @internal */\n readonly ariaControls = `si-navbar-dropdown-${SiHeaderDropdownTriggerDirective.idCounter}`;\n\n private headerAnchorComponentRef?: ComponentRef<SiHeaderAnchorComponent>;\n\n constructor() {\n effect(() => {\n const inline = this.navbar?.inlineDropdown() ?? false;\n untracked(() => {\n if (this._isOpen && inline === this.isOverlay) {\n this.close();\n }\n });\n });\n }\n\n /** Whether the dropdown is open. */\n get isOpen(): boolean {\n return this._isOpen;\n }\n\n /** @internal */\n get isOverlay(): boolean {\n return !!this.overlayRef;\n }\n\n ngOnChanges(): void {\n if (this.portal) {\n this.portal.templateRef = this.dropdown();\n this.portal.context = this.dropdownData();\n }\n }\n\n ngOnInit(): void {\n // Always attach the dropdown, so that it can be used with routerLinkActive\n this.attachDropdownInline();\n }\n\n ngOnDestroy(): void {\n this.close();\n this.dropdownClose.complete();\n }\n\n /** Opens the dropdown. */\n open(): void {\n if (this.destroying || this._isOpen) {\n return;\n }\n\n this._isOpen = true;\n if (!(this.navbar?.inlineDropdown() ?? false)) {\n this.attachDropdownOverlay();\n }\n\n if (this.parent) {\n this.parent.openSubmenu = this;\n }\n\n if (this.navbar?.dropdownOpened) {\n this.navbar?.dropdownOpened(this);\n }\n this.openChange.emit(true);\n }\n\n /** Closes the dropdown. */\n close(options?: { all?: boolean }): void {\n if (!this._isOpen) {\n return;\n }\n\n if (this.openSubmenu) {\n this.openSubmenu.close();\n }\n\n this.dropdownClose.next();\n this._isOpen = false;\n if (this.overlayRef) {\n this.destroying = true;\n this.overlayRef.detach();\n this.overlayRef.dispose();\n this.viewRef?.destroy();\n this.portal = undefined;\n this.overlayRef = undefined;\n this.headerAnchorComponentRef?.destroy();\n // do not use queueMicrotask, it executed to early\n setTimeout(() => (this.destroying = false));\n this.attachDropdownInline();\n } else {\n this.viewRef?.markForCheck();\n }\n\n if (this.parent) {\n this.parent.openSubmenu = undefined;\n }\n\n if (this.navbar?.dropdownClosed) {\n this.navbar?.dropdownClosed(this);\n }\n\n if (options?.all && this.parent) {\n this.parent.close(options);\n } else {\n this.openChange.emit(false);\n }\n }\n\n protected click(): void {\n if (this._isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n private attachDropdownInline(): void {\n this.viewRef = this.viewContainerRef.createEmbeddedView(this.dropdown(), this.dropdownData(), {\n injector: this.injector\n });\n this.viewRef.markForCheck();\n }\n\n private attachDropdownOverlay(): void {\n this.viewRef?.destroy();\n this.overlayRef = this.overlay.create({\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withPositions(\n this.navbar?.overlayPosition ??\n (this.level > 1\n ? [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: 2\n }\n ]\n : [\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: -4\n }\n ])\n )\n });\n this.portal = new TemplatePortal(\n this.dropdown(),\n this.viewContainerRef,\n this.dropdownData(),\n this.injector\n );\n this.viewRef = this.overlayRef.attach(this.portal);\n this.headerAnchorComponentRef = this.viewContainerRef.createComponent(SiHeaderAnchorComponent);\n this.headerAnchorComponentRef.setInput('ariaOwns', this.ariaControls);\n\n this.overlayRef\n .outsidePointerEvents()\n .pipe(\n filter(event => event.type === 'click'),\n filter(() => !this.openSubmenu),\n takeUntil(this.dropdownClose),\n take(1)\n )\n .subscribe(() => this.close());\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { A11yModule, CdkTrapFocus } from '@angular/cdk/a11y';\nimport { ChangeDetectionStrategy, Component, inject, viewChild, DOCUMENT } from '@angular/core';\n\nimport { SiHeaderDropdownTriggerDirective } from './si-header-dropdown-trigger.directive';\nimport { SI_HEADER_DROPDOWN_OPTIONS } from './si-header.model';\n\n/**\n * Wrapper component for {@link SiHeaderDropdownItemComponent}.\n * Must only be opened using an {@link SiHeaderDropdownTriggerDirective}.\n */\n@Component({\n selector: 'si-header-dropdown',\n imports: [A11yModule],\n templateUrl: './si-header-dropdown.component.html',\n styles: ':host.sub-menu {min-inline-size: 200px}',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'dropdown-menu position-static',\n '[attr.role]': \"trigger.isOverlay ? 'dialog' : 'group'\",\n '[id]': 'trigger.ariaControls',\n '[attr.aria-labelledby]': 'trigger.id',\n '[class.show]': 'trigger.isOpen',\n '[class.header-dropdown-overlay]': 'trigger.isOverlay',\n '[class.sub-menu]': 'trigger.level > 1',\n '(keydown.escape)': 'trigger.close()'\n }\n})\nexport class SiHeaderDropdownComponent {\n /** @internal */\n protected trigger = inject(SiHeaderDropdownTriggerDirective);\n\n private readonly focusTrap = viewChild.required(CdkTrapFocus);\n private previousElement: Element | null = null;\n private readonly document = inject(DOCUMENT);\n private readonly options = inject(SI_HEADER_DROPDOWN_OPTIONS, { optional: true });\n\n constructor() {\n // The autoFocus feature of the focus trap is not enough, as this component is not newly created when opened in mobile (inline).\n // But we still need autofocus in desktop mode, as the close event is never executed (component is destroyed before).\n this.trigger.openChange.subscribe(change => {\n if (!this.trigger.isOverlay && this.trapFocus && change) {\n this.previousElement = this.document.activeElement;\n this.focusTrap().focusTrap.focusFirstTabbableElementWhenReady();\n } else {\n if (\n this.previousElement &&\n 'focus' in this.previousElement &&\n typeof this.previousElement.focus === 'function'\n ) {\n this.previousElement.focus();\n }\n this.previousElement = null;\n }\n });\n }\n\n /** @internal */\n protected get trapFocus(): boolean {\n return (\n this.trigger.isOverlay ||\n (!this.options?.disableRootFocusTrapForInlineMode && this.trigger.level === 1)\n );\n }\n}\n","<div [cdkTrapFocus]=\"trapFocus\" [cdkTrapFocusAutoCapture]=\"this.trigger.isOverlay\">\n <ng-content />\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component, inject, input } from '@angular/core';\nimport { elementDown2, elementOk, elementRecordFilled } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\n\nimport { SiHeaderDropdownTriggerDirective } from './si-header-dropdown-trigger.directive';\nimport { SI_HEADER_WITH_DROPDOWNS } from './si-header.model';\n\n/**\n * Creates a dropdown-item. Must be used within an {@link SiHeaderDropdownComponent}.\n */\n@Component({\n selector: 'si-header-dropdown-item, a[si-header-dropdown-item], button[si-header-dropdown-item]',\n imports: [SiIconComponent],\n templateUrl: './si-header-dropdown-item.component.html',\n styleUrl: './si-header-dropdown-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'dropdown-item focus-inside',\n '[attr.aria-pressed]': 'checked() ? \"true\" : null',\n '(click)': 'click()'\n }\n})\nexport class SiHeaderDropdownItemComponent {\n protected readonly icons = addIcons({ elementDown2, elementOk, elementRecordFilled });\n\n /** Optional icon that will be rendered before the label. */\n readonly icon = input<string>();\n /** Badge that is rendered after the label. */\n readonly badge = input<string | number>();\n /** Badge (always red) that is attached to the icon. */\n readonly iconBadge = input<string | number>();\n /** Color of the badge (not iconBadge). */\n readonly badgeColor = input<string>();\n /** Whether the icon is checked with a radio or check mark. */\n readonly checked = input<'radio' | 'check' | ''>();\n\n protected readonly ownTrigger = inject(SiHeaderDropdownTriggerDirective, {\n self: true,\n optional: true\n });\n protected readonly parentTrigger = inject(SiHeaderDropdownTriggerDirective, { skipSelf: true });\n protected readonly navbar = inject(SI_HEADER_WITH_DROPDOWNS, { optional: true });\n\n protected click(): void {\n if (!this.ownTrigger) {\n this.parentTrigger.close({ all: true });\n if (this.navbar?.onDropdownItemTriggered) {\n this.navbar?.onDropdownItemTriggered();\n }\n }\n }\n}\n","@if (icon()) {\n <si-icon class=\"icon\" [icon]=\"icon()!\" />\n}\n@if (iconBadge()) {\n <div class=\"badge-text\">{{ iconBadge() }}</div>\n}\n<span class=\"item-title text-truncate\">\n <ng-content />\n</span>\n<div class=\"item-end ps-2 d-flex me-n3 ms-auto gap-1\">\n @if (badge()) {\n <span class=\"mx-0 me-1 ms-2 badge\" [class]=\"`bg-${badgeColor() || 'default'}`\">{{\n badge()\n }}</span>\n }\n @if (checked() === 'check') {\n <si-icon class=\"icon\" [icon]=\"icons.elementOk\" />\n }\n @if (checked() === 'radio') {\n <si-icon class=\"icon-sm me-2\" [icon]=\"icons.elementRecordFilled\" />\n }\n @if (ownTrigger) {\n <si-icon class=\"dropdown-caret m-0 ps-0\" [icon]=\"icons.elementDown2\" />\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { MenuItem } from '@siemens/element-ng/common';\nimport { SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiTranslatePipe } from '@siemens/element-translate-ng/translate';\n\nimport { SiHeaderDropdownItemComponent } from './si-header-dropdown-item.component';\nimport { SiHeaderDropdownTriggerDirective } from './si-header-dropdown-trigger.directive';\nimport { SiHeaderDropdownComponent } from './si-header-dropdown.component';\n\n/**\n * A factory to render multiple {@link MenuItem}.\n * Requires a wrapping {@link SiHeaderDropdownComponent}.\n *\n * @internal\n */\n@Component({\n selector: 'si-header-dropdown-items-factory',\n imports: [\n SiHeaderDropdownComponent,\n SiHeaderDropdownItemComponent,\n SiTranslatePipe,\n SiLinkDirective,\n SiHeaderDropdownTriggerDirective\n ],\n templateUrl: './si-header-dropdown-items-factory.component.html',\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class SiHeaderDropdownItemsFactoryComponent {\n readonly items = input.required<MenuItem[]>();\n readonly activeChange = output<boolean>();\n}\n","@for (item of items(); track item) {\n @if (item.isHeading) {\n <div class=\"dropdown-item dropdown-header dropdown-item-static\">\n {{ item.title | translate }}\n </div>\n } @else {\n @if (item.title !== '-') {\n @if (item.items) {\n <button\n type=\"button\"\n si-header-dropdown-item\n [icon]=\"item.icon\"\n [badge]=\"item.badgeStyle !== 'dot' ? item.badge : undefined\"\n [badgeColor]=\"item.badgeColor\"\n [iconBadge]=\"item.badgeStyle === 'dot' ? item.badge : undefined\"\n [siHeaderDropdownTriggerFor]=\"dropdown\"\n >\n {{ item.title | translate }}\n </button>\n <ng-template #dropdown>\n <si-header-dropdown>\n <si-header-dropdown-items-factory [items]=\"item.items\" />\n </si-header-dropdown>\n </ng-template>\n } @else {\n <a\n si-header-dropdown-item\n activeClass=\"active\"\n [attr.role]=\"!(item.href || item.link) ? 'button' : undefined\"\n [siLink]=\"item\"\n [icon]=\"item.icon\"\n [badge]=\"item.badgeStyle !== 'dot' ? item.badge : undefined\"\n [badgeColor]=\"item.badgeColor\"\n [iconBadge]=\"item.badgeStyle === 'dot' ? item.badge : undefined\"\n [checked]=\"item.selectionState\"\n (activeChange)=\"activeChange.emit($event)\"\n >\n {{ item.title | translate }}\n </a>\n }\n } @else {\n <div class=\"dropdown-divider\"></div>\n }\n }\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-header-dropdown.component';\nexport * from './si-header-dropdown-trigger.directive';\nexport * from './si-header-dropdown-item.component';\nexport * from './si-header-dropdown-items-factory.component';\nexport * from './si-header.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
3
3
  import { elementHelp } from '@siemens/element-icons';
4
4
  import { addIcons, SiIconComponent } from '@siemens/element-ng/icon';
5
5
  import * as i1 from '@siemens/element-ng/popover';
@@ -31,14 +31,14 @@ class SiHelpButtonComponent {
31
31
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.8", type: SiHelpButtonComponent, isStandalone: true, selector: "button[si-help-button]", hostDirectives: [{ directive: i1.SiPopoverDirective, inputs: ["siPopoverTitle", "siHelpTitle", "siPopover", "siHelpContent", "siPopoverContext", "siHelpContext", "siPopoverPlacement", "siHelpPlacement"] }], ngImport: i0, template: `
32
32
  <div class="visually-hidden"><ng-content /></div>
33
33
  <si-icon [icon]="icons.elementHelp" />
34
- `, isInline: true, styles: [":host{display:inline-flex;vertical-align:middle;font-size:1rem;border-radius:100%;color:var(--element-ui-2);border:0;background:transparent;padding:0}:host:is(:hover,:active){color:var(--element-ui-1)}:host:disabled{color:var(--element-text-disabled)}\n"], dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }] });
34
+ `, isInline: true, styles: [":host{display:inline-flex;vertical-align:middle;font-size:1rem;border-radius:100%;color:var(--element-ui-2);border:0;background:transparent;padding:0}:host:is(:hover,:active){color:var(--element-ui-1)}:host:disabled{color:var(--element-text-disabled)}\n"], dependencies: [{ kind: "component", type: SiIconComponent, selector: "si-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.Default });
35
35
  }
36
36
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiHelpButtonComponent, decorators: [{
37
37
  type: Component,
38
38
  args: [{ selector: 'button[si-help-button]', imports: [SiIconComponent], template: `
39
39
  <div class="visually-hidden"><ng-content /></div>
40
40
  <si-icon [icon]="icons.elementHelp" />
41
- `, hostDirectives: [
41
+ `, changeDetection: ChangeDetectionStrategy.Default, hostDirectives: [
42
42
  {
43
43
  directive: SiPopoverDirective,
44
44
  inputs: [
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-help-button.mjs","sources":["../../../../projects/element-ng/help-button/si-help-button.component.ts","../../../../projects/element-ng/help-button/index.ts","../../../../projects/element-ng/help-button/siemens-element-ng-help-button.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { Component } from '@angular/core';\nimport { elementHelp } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiPopoverDirective } from '@siemens/element-ng/popover';\n\n/**\n * This component creates a help button that shows contextual help in a popover.\n *\n * @example\n * ```html\n * <button\n * type=\"button\"\n * si-help-button\n * siHelpTitle=\"Help for problem\"\n * siHelpContent=\"Use your imagination to solve this problem.\"\n * >\n * <!-- This text is only visible to screen reader. Provide a meaningful text, not only \"help\" -->\n * How to solve the problem?\n * </button>\n * ```\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[si-help-button]',\n imports: [SiIconComponent],\n template: `\n <div class=\"visually-hidden\"><ng-content /></div>\n <si-icon [icon]=\"icons.elementHelp\" />\n `,\n styleUrl: './si-help-button.component.scss',\n hostDirectives: [\n {\n directive: SiPopoverDirective,\n inputs: [\n 'siPopoverTitle:siHelpTitle',\n 'siPopover:siHelpContent',\n 'siPopoverContext:siHelpContext',\n 'siPopoverPlacement:siHelpPlacement'\n ]\n }\n ]\n})\nexport class SiHelpButtonComponent {\n protected icons = addIcons({ elementHelp });\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-help-button.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAAA;;;AAGG;AAMH;;;;;;;;;;;;;;;AAeG;MAsBU,qBAAqB,CAAA;AACtB,IAAA,KAAK,GAAG,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;uGADhC,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjBtB;;;AAGT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+PAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAJS,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAkBd,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBArBjC,SAAS;AAEE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,OAAA,EACzB,CAAC,eAAe,CAAC,EAAA,QAAA,EAChB;;;GAGT,EAAA,cAAA,EAEe;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,kBAAkB;AAC7B,4BAAA,MAAM,EAAE;gCACN,4BAA4B;gCAC5B,yBAAyB;gCACzB,gCAAgC;gCAChC;AACD;AACF;AACF,qBAAA,EAAA,MAAA,EAAA,CAAA,+PAAA,CAAA,EAAA;;;AC5CH;;;AAGG;;ACHH;;AAEG;;;;"}
1
+ {"version":3,"file":"siemens-element-ng-help-button.mjs","sources":["../../../../projects/element-ng/help-button/si-help-button.component.ts","../../../../projects/element-ng/help-button/index.ts","../../../../projects/element-ng/help-button/siemens-element-ng-help-button.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { elementHelp } from '@siemens/element-icons';\nimport { addIcons, SiIconComponent } from '@siemens/element-ng/icon';\nimport { SiPopoverDirective } from '@siemens/element-ng/popover';\n\n/**\n * This component creates a help button that shows contextual help in a popover.\n *\n * @example\n * ```html\n * <button\n * type=\"button\"\n * si-help-button\n * siHelpTitle=\"Help for problem\"\n * siHelpContent=\"Use your imagination to solve this problem.\"\n * >\n * <!-- This text is only visible to screen reader. Provide a meaningful text, not only \"help\" -->\n * How to solve the problem?\n * </button>\n * ```\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[si-help-button]',\n imports: [SiIconComponent],\n template: `\n <div class=\"visually-hidden\"><ng-content /></div>\n <si-icon [icon]=\"icons.elementHelp\" />\n `,\n styleUrl: './si-help-button.component.scss',\n changeDetection: ChangeDetectionStrategy.Default,\n hostDirectives: [\n {\n directive: SiPopoverDirective,\n inputs: [\n 'siPopoverTitle:siHelpTitle',\n 'siPopover:siHelpContent',\n 'siPopoverContext:siHelpContext',\n 'siPopoverPlacement:siHelpPlacement'\n ]\n }\n ]\n})\nexport class SiHelpButtonComponent {\n protected icons = addIcons({ elementHelp });\n}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-help-button.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;AAAA;;;AAGG;AAMH;;;;;;;;;;;;;;;AAeG;MAuBU,qBAAqB,CAAA;AACtB,IAAA,KAAK,GAAG,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;uGADhC,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlBtB;;;AAGT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+PAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAJS,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,CAAA;;2FAmBd,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAtBjC,SAAS;AAEE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,OAAA,EACzB,CAAC,eAAe,CAAC,EAAA,QAAA,EAChB;;;GAGT,EAAA,eAAA,EAEgB,uBAAuB,CAAC,OAAO,EAAA,cAAA,EAChC;AACd,wBAAA;AACE,4BAAA,SAAS,EAAE,kBAAkB;AAC7B,4BAAA,MAAM,EAAE;gCACN,4BAA4B;gCAC5B,yBAAyB;gCACzB,gCAAgC;gCAChC;AACD;AACF;AACF,qBAAA,EAAA,MAAA,EAAA,CAAA,+PAAA,CAAA,EAAA;;;AC7CH;;;AAGG;;ACHH;;AAEG;;;;"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, booleanAttribute, Component, NgModule } from '@angular/core';
2
+ import { input, booleanAttribute, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
3
3
  import { SiStatusIconComponent } from '@siemens/element-ng/icon';
4
4
  import { SiLinkDirective } from '@siemens/element-ng/link';
5
5
  import { SiTranslatePipe } from '@siemens/element-translate-ng/translate';
@@ -41,11 +41,11 @@ class SiInlineNotificationComponent {
41
41
  */
42
42
  embedded = input(false, { ...(ngDevMode ? { debugName: "embedded" } : {}), transform: booleanAttribute });
43
43
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiInlineNotificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
44
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiInlineNotificationComponent, isStandalone: true, selector: "si-inline-notification", inputs: { severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: true, transformFunction: null }, heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null }, action: { classPropertyName: "action", publicName: "action", isSignal: true, isRequired: false, transformFunction: null }, translationParams: { classPropertyName: "translationParams", publicName: "translationParams", isSignal: true, isRequired: false, transformFunction: null }, embedded: { classPropertyName: "embedded", publicName: "embedded", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\n role=\"alert\"\n aria-atomic=\"true\"\n aria-live=\"assertive\"\n [class]=\"`alert d-flex align-items-start ${severity() ? `alert-${severity()}` : ''}`\"\n [hidden]=\"!severity()\"\n>\n <si-status-icon class=\"icon me-4 flex-shrink-0\" [status]=\"severity()\" />\n\n <div class=\"d-flex flex-grow-1 flex-wrap\">\n @if (heading()) {\n <strong class=\"pe-2\">{{ heading() | translate: translationParams() }} </strong>\n }\n <span>{{ message() | translate: translationParams() }}</span>\n </div>\n @if (action() && action()?.title) {\n <a class=\"alert-link ms-4 flex-shrink-0\" [siLink]=\"action()\">\n {{ action()?.title | translate: translationParams() }}\n </a>\n }\n</div>\n", styles: [":host{display:block;overflow:hidden;flex-shrink:0;border-radius:var(--element-button-radius)}.alert :is(div,a){padding-block-start:1px}\n"], dependencies: [{ kind: "directive", type: SiLinkDirective, selector: "[siLink]", inputs: ["siLink", "siLinkDefaultTarget", "actionParam", "activeClass", "exactMatch", "ariaCurrent"], outputs: ["activeChange"], exportAs: ["siLink"] }, { kind: "component", type: SiStatusIconComponent, selector: "si-status-icon", inputs: ["status"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }] });
44
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: SiInlineNotificationComponent, isStandalone: true, selector: "si-inline-notification", inputs: { severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: true, transformFunction: null }, heading: { classPropertyName: "heading", publicName: "heading", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null }, action: { classPropertyName: "action", publicName: "action", isSignal: true, isRequired: false, transformFunction: null }, translationParams: { classPropertyName: "translationParams", publicName: "translationParams", isSignal: true, isRequired: false, transformFunction: null }, embedded: { classPropertyName: "embedded", publicName: "embedded", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\n role=\"alert\"\n aria-atomic=\"true\"\n aria-live=\"assertive\"\n [class]=\"`alert d-flex align-items-start ${severity() ? `alert-${severity()}` : ''}`\"\n [hidden]=\"!severity()\"\n>\n <si-status-icon class=\"icon me-4 flex-shrink-0\" [status]=\"severity()\" />\n\n <div class=\"d-flex flex-grow-1 flex-wrap\">\n @if (heading()) {\n <strong class=\"pe-2\">{{ heading() | translate: translationParams() }} </strong>\n }\n <span>{{ message() | translate: translationParams() }}</span>\n </div>\n @if (action() && action()?.title) {\n <a class=\"alert-link ms-4 flex-shrink-0\" [siLink]=\"action()\">\n {{ action()?.title | translate: translationParams() }}\n </a>\n }\n</div>\n", styles: [":host{display:block;overflow:hidden;flex-shrink:0;border-radius:var(--element-button-radius)}.alert :is(div,a){padding-block-start:1px}\n"], dependencies: [{ kind: "directive", type: SiLinkDirective, selector: "[siLink]", inputs: ["siLink", "siLinkDefaultTarget", "actionParam", "activeClass", "exactMatch", "ariaCurrent"], outputs: ["activeChange"], exportAs: ["siLink"] }, { kind: "component", type: SiStatusIconComponent, selector: "si-status-icon", inputs: ["status"] }, { kind: "pipe", type: SiTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Default });
45
45
  }
46
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SiInlineNotificationComponent, decorators: [{
47
47
  type: Component,
48
- args: [{ selector: 'si-inline-notification', imports: [SiLinkDirective, SiTranslatePipe, SiStatusIconComponent], template: "<div\n role=\"alert\"\n aria-atomic=\"true\"\n aria-live=\"assertive\"\n [class]=\"`alert d-flex align-items-start ${severity() ? `alert-${severity()}` : ''}`\"\n [hidden]=\"!severity()\"\n>\n <si-status-icon class=\"icon me-4 flex-shrink-0\" [status]=\"severity()\" />\n\n <div class=\"d-flex flex-grow-1 flex-wrap\">\n @if (heading()) {\n <strong class=\"pe-2\">{{ heading() | translate: translationParams() }} </strong>\n }\n <span>{{ message() | translate: translationParams() }}</span>\n </div>\n @if (action() && action()?.title) {\n <a class=\"alert-link ms-4 flex-shrink-0\" [siLink]=\"action()\">\n {{ action()?.title | translate: translationParams() }}\n </a>\n }\n</div>\n", styles: [":host{display:block;overflow:hidden;flex-shrink:0;border-radius:var(--element-button-radius)}.alert :is(div,a){padding-block-start:1px}\n"] }]
48
+ args: [{ selector: 'si-inline-notification', imports: [SiLinkDirective, SiTranslatePipe, SiStatusIconComponent], changeDetection: ChangeDetectionStrategy.Default, template: "<div\n role=\"alert\"\n aria-atomic=\"true\"\n aria-live=\"assertive\"\n [class]=\"`alert d-flex align-items-start ${severity() ? `alert-${severity()}` : ''}`\"\n [hidden]=\"!severity()\"\n>\n <si-status-icon class=\"icon me-4 flex-shrink-0\" [status]=\"severity()\" />\n\n <div class=\"d-flex flex-grow-1 flex-wrap\">\n @if (heading()) {\n <strong class=\"pe-2\">{{ heading() | translate: translationParams() }} </strong>\n }\n <span>{{ message() | translate: translationParams() }}</span>\n </div>\n @if (action() && action()?.title) {\n <a class=\"alert-link ms-4 flex-shrink-0\" [siLink]=\"action()\">\n {{ action()?.title | translate: translationParams() }}\n </a>\n }\n</div>\n", styles: [":host{display:block;overflow:hidden;flex-shrink:0;border-radius:var(--element-button-radius)}.alert :is(div,a){padding-block-start:1px}\n"] }]
49
49
  }], propDecorators: { severity: [{ type: i0.Input, args: [{ isSignal: true, alias: "severity", required: true }] }], heading: [{ type: i0.Input, args: [{ isSignal: true, alias: "heading", required: false }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: true }] }], action: [{ type: i0.Input, args: [{ isSignal: true, alias: "action", required: false }] }], translationParams: [{ type: i0.Input, args: [{ isSignal: true, alias: "translationParams", required: false }] }], embedded: [{ type: i0.Input, args: [{ isSignal: true, alias: "embedded", required: false }] }] } });
50
50
 
51
51
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"siemens-element-ng-inline-notification.mjs","sources":["../../../../projects/element-ng/inline-notification/si-inline-notification.component.ts","../../../../projects/element-ng/inline-notification/si-inline-notification.component.html","../../../../projects/element-ng/inline-notification/si-inline-notification.module.ts","../../../../projects/element-ng/inline-notification/index.ts","../../../../projects/element-ng/inline-notification/siemens-element-ng-inline-notification.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { booleanAttribute, Component, input } from '@angular/core';\nimport { StatusType } from '@siemens/element-ng/common';\nimport { SiStatusIconComponent } from '@siemens/element-ng/icon';\nimport { Link, SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\n@Component({\n selector: 'si-inline-notification',\n imports: [SiLinkDirective, SiTranslatePipe, SiStatusIconComponent],\n templateUrl: './si-inline-notification.component.html',\n styleUrl: './si-inline-notification.component.scss'\n})\nexport class SiInlineNotificationComponent {\n /**\n * Status of inline notification.\n */\n readonly severity = input.required<StatusType>();\n\n /**\n * Heading of the message.\n */\n readonly heading = input<TranslatableString>();\n\n /**\n * Main message of this inline notification.\n */\n readonly message = input.required<TranslatableString>();\n\n /**\n * Optional link action for inline notification events.\n */\n readonly action = input<Link>();\n\n /**\n * Params passed to the translation pipe\n *\n * @defaultValue\n * ```\n * {}\n * ```\n */\n readonly translationParams = input<{ [key: string]: any } | undefined>({});\n\n /**\n * Displays in embedded style, w/o radius and indicator bar\n *\n * @defaultValue false\n */\n readonly embedded = input(false, { transform: booleanAttribute });\n}\n","<div\n role=\"alert\"\n aria-atomic=\"true\"\n aria-live=\"assertive\"\n [class]=\"`alert d-flex align-items-start ${severity() ? `alert-${severity()}` : ''}`\"\n [hidden]=\"!severity()\"\n>\n <si-status-icon class=\"icon me-4 flex-shrink-0\" [status]=\"severity()\" />\n\n <div class=\"d-flex flex-grow-1 flex-wrap\">\n @if (heading()) {\n <strong class=\"pe-2\">{{ heading() | translate: translationParams() }} </strong>\n }\n <span>{{ message() | translate: translationParams() }}</span>\n </div>\n @if (action() && action()?.title) {\n <a class=\"alert-link ms-4 flex-shrink-0\" [siLink]=\"action()\">\n {{ action()?.title | translate: translationParams() }}\n </a>\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiInlineNotificationComponent } from './si-inline-notification.component';\n\n@NgModule({\n imports: [SiInlineNotificationComponent],\n exports: [SiInlineNotificationComponent]\n})\nexport class SiInlineNotificationModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-inline-notification.component';\nexport * from './si-inline-notification.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAAA;;;AAGG;MAaU,6BAA6B,CAAA;AACxC;;AAEG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,mDAAc;AAEhD;;AAEG;IACM,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AAE9C;;AAEG;AACM,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAsB;AAEvD;;AAEG;IACM,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAQ;AAE/B;;;;;;;AAOG;AACM,IAAA,iBAAiB,GAAG,KAAK,CAAqC,EAAE,6DAAC;AAE1E;;;;AAIG;IACM,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;uGApCtD,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,i3BChB1C,gtBAqBA,EAAA,MAAA,EAAA,CAAA,2IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDTY,eAAe,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAmB,qBAAqB,0EAAtC,eAAe,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA;;2FAI/B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBANzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,WACzB,CAAC,eAAe,EAAE,eAAe,EAAE,qBAAqB,CAAC,EAAA,QAAA,EAAA,gtBAAA,EAAA,MAAA,EAAA,CAAA,2IAAA,CAAA,EAAA;;;AEZpE;;;AAGG;MASU,0BAA0B,CAAA;uGAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAA1B,0BAA0B,EAAA,OAAA,EAAA,CAH3B,6BAA6B,CAAA,EAAA,OAAA,EAAA,CAC7B,6BAA6B,CAAA,EAAA,CAAA;AAE5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,YAH3B,6BAA6B,CAAA,EAAA,CAAA;;2FAG5B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,6BAA6B,CAAC;oBACxC,OAAO,EAAE,CAAC,6BAA6B;AACxC,iBAAA;;;ACXD;;;AAGG;;ACHH;;AAEG;;;;"}
1
+ {"version":3,"file":"siemens-element-ng-inline-notification.mjs","sources":["../../../../projects/element-ng/inline-notification/si-inline-notification.component.ts","../../../../projects/element-ng/inline-notification/si-inline-notification.component.html","../../../../projects/element-ng/inline-notification/si-inline-notification.module.ts","../../../../projects/element-ng/inline-notification/index.ts","../../../../projects/element-ng/inline-notification/siemens-element-ng-inline-notification.ts"],"sourcesContent":["/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { booleanAttribute, ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { StatusType } from '@siemens/element-ng/common';\nimport { SiStatusIconComponent } from '@siemens/element-ng/icon';\nimport { Link, SiLinkDirective } from '@siemens/element-ng/link';\nimport { SiTranslatePipe, TranslatableString } from '@siemens/element-translate-ng/translate';\n\n@Component({\n selector: 'si-inline-notification',\n imports: [SiLinkDirective, SiTranslatePipe, SiStatusIconComponent],\n templateUrl: './si-inline-notification.component.html',\n styleUrl: './si-inline-notification.component.scss',\n changeDetection: ChangeDetectionStrategy.Default\n})\nexport class SiInlineNotificationComponent {\n /**\n * Status of inline notification.\n */\n readonly severity = input.required<StatusType>();\n\n /**\n * Heading of the message.\n */\n readonly heading = input<TranslatableString>();\n\n /**\n * Main message of this inline notification.\n */\n readonly message = input.required<TranslatableString>();\n\n /**\n * Optional link action for inline notification events.\n */\n readonly action = input<Link>();\n\n /**\n * Params passed to the translation pipe\n *\n * @defaultValue\n * ```\n * {}\n * ```\n */\n readonly translationParams = input<{ [key: string]: any } | undefined>({});\n\n /**\n * Displays in embedded style, w/o radius and indicator bar\n *\n * @defaultValue false\n */\n readonly embedded = input(false, { transform: booleanAttribute });\n}\n","<div\n role=\"alert\"\n aria-atomic=\"true\"\n aria-live=\"assertive\"\n [class]=\"`alert d-flex align-items-start ${severity() ? `alert-${severity()}` : ''}`\"\n [hidden]=\"!severity()\"\n>\n <si-status-icon class=\"icon me-4 flex-shrink-0\" [status]=\"severity()\" />\n\n <div class=\"d-flex flex-grow-1 flex-wrap\">\n @if (heading()) {\n <strong class=\"pe-2\">{{ heading() | translate: translationParams() }} </strong>\n }\n <span>{{ message() | translate: translationParams() }}</span>\n </div>\n @if (action() && action()?.title) {\n <a class=\"alert-link ms-4 flex-shrink-0\" [siLink]=\"action()\">\n {{ action()?.title | translate: translationParams() }}\n </a>\n }\n</div>\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiInlineNotificationComponent } from './si-inline-notification.component';\n\n@NgModule({\n imports: [SiInlineNotificationComponent],\n exports: [SiInlineNotificationComponent]\n})\nexport class SiInlineNotificationModule {}\n","/**\n * Copyright (c) Siemens 2016 - 2026\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-inline-notification.component';\nexport * from './si-inline-notification.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAAA;;;AAGG;MAcU,6BAA6B,CAAA;AACxC;;AAEG;AACM,IAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,mDAAc;AAEhD;;AAEG;IACM,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAsB;AAE9C;;AAEG;AACM,IAAA,OAAO,GAAG,KAAK,CAAC,QAAQ,kDAAsB;AAEvD;;AAEG;IACM,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAQ;AAE/B;;;;;;;AAOG;AACM,IAAA,iBAAiB,GAAG,KAAK,CAAqC,EAAE,6DAAC;AAE1E;;;;AAIG;IACM,QAAQ,GAAG,KAAK,CAAC,KAAK,qDAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;uGApCtD,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,i3BCjB1C,gtBAqBA,EAAA,MAAA,EAAA,CAAA,2IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDTY,eAAe,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAmB,qBAAqB,0EAAtC,eAAe,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,OAAA,EAAA,CAAA;;2FAK/B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAPzC,SAAS;+BACE,wBAAwB,EAAA,OAAA,EACzB,CAAC,eAAe,EAAE,eAAe,EAAE,qBAAqB,CAAC,EAAA,eAAA,EAGjD,uBAAuB,CAAC,OAAO,EAAA,QAAA,EAAA,gtBAAA,EAAA,MAAA,EAAA,CAAA,2IAAA,CAAA,EAAA;;;AEflD;;;AAGG;MASU,0BAA0B,CAAA;uGAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAA1B,0BAA0B,EAAA,OAAA,EAAA,CAH3B,6BAA6B,CAAA,EAAA,OAAA,EAAA,CAC7B,6BAA6B,CAAA,EAAA,CAAA;AAE5B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,YAH3B,6BAA6B,CAAA,EAAA,CAAA;;2FAG5B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,6BAA6B,CAAC;oBACxC,OAAO,EAAE,CAAC,6BAA6B;AACxC,iBAAA;;;ACXD;;;AAGG;;ACHH;;AAEG;;;;"}
@@ -207,7 +207,7 @@ const validateSubnet = (cidr) => {
207
207
  const subnet = parseInt(cidr, 10);
208
208
  return subnet > 0 && subnet <= 128;
209
209
  };
210
- const matchIpV6 = (ip) => !!ip.match(ipV6Regex) && !!URL.parse(`http://[${ip}]`);
210
+ const matchIpV6 = (ip) => (ip === '::' || !!ip.match(ipV6Regex)) && !!URL.parse(`http://[${ip}]`);
211
211
 
212
212
  /**
213
213
  * Copyright (c) Siemens 2016 - 2026