@siemens/element-ng 47.1.0 → 47.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/accordion/index.d.ts +9 -0
  2. package/accordion/package.json +3 -0
  3. package/accordion/si-accordion-hcollapse.service.d.ts +17 -0
  4. package/accordion/si-accordion.component.d.ts +37 -0
  5. package/accordion/si-accordion.module.d.ts +8 -0
  6. package/accordion/si-accordion.service.d.ts +17 -0
  7. package/accordion/si-collapsible-panel.component.d.ts +89 -0
  8. package/action-modal/index.d.ts +6 -0
  9. package/action-modal/package.json +3 -0
  10. package/action-modal/si-action-dialog.service.d.ts +49 -0
  11. package/action-modal/si-action-dialog.types.d.ts +92 -0
  12. package/action-modal/si-alert-dialog/si-alert-dialog.component.d.ts +32 -0
  13. package/action-modal/si-confirmation-dialog/si-confirmation-dialog.component.d.ts +40 -0
  14. package/action-modal/si-delete-confirmation-dialog/si-delete-confirmation-dialog.component.d.ts +45 -0
  15. package/action-modal/si-edit-discard-dialog/si-edit-discard-dialog.component.d.ts +68 -0
  16. package/auto-collapsable-list/index.d.ts +10 -0
  17. package/auto-collapsable-list/package.json +3 -0
  18. package/auto-collapsable-list/si-auto-collapsable-list-additional-content.directive.d.ts +6 -0
  19. package/auto-collapsable-list/si-auto-collapsable-list-item.directive.d.ts +29 -0
  20. package/auto-collapsable-list/si-auto-collapsable-list-measurable.class.d.ts +16 -0
  21. package/auto-collapsable-list/si-auto-collapsable-list-overflow-item.directive.d.ts +12 -0
  22. package/auto-collapsable-list/si-auto-collapsable-list.directive.d.ts +47 -0
  23. package/auto-collapsable-list/si-auto-collapsable-list.module.d.ts +10 -0
  24. package/color-picker/index.d.ts +5 -0
  25. package/color-picker/package.json +3 -0
  26. package/color-picker/si-color-picker.component.d.ts +61 -0
  27. package/common/models/menu.model.d.ts +2 -2
  28. package/connection-strength/index.d.ts +6 -0
  29. package/connection-strength/package.json +3 -0
  30. package/connection-strength/si-connection-strength.component.d.ts +19 -0
  31. package/connection-strength/si-connection-strength.module.d.ts +7 -0
  32. package/copyright-notice/index.d.ts +7 -0
  33. package/copyright-notice/package.json +3 -0
  34. package/copyright-notice/si-copyright-notice.component.d.ts +18 -0
  35. package/copyright-notice/si-copyright-notice.d.ts +23 -0
  36. package/copyright-notice/si-copyright-notice.module.d.ts +7 -0
  37. package/empty-state/index.d.ts +6 -0
  38. package/empty-state/package.json +3 -0
  39. package/empty-state/si-empty-state.component.d.ts +18 -0
  40. package/empty-state/si-empty-state.module.d.ts +7 -0
  41. package/fesm2022/siemens-element-ng-accordion.mjs +314 -0
  42. package/fesm2022/siemens-element-ng-accordion.mjs.map +1 -0
  43. package/fesm2022/siemens-element-ng-action-modal.mjs +363 -0
  44. package/fesm2022/siemens-element-ng-action-modal.mjs.map +1 -0
  45. package/fesm2022/siemens-element-ng-auto-collapsable-list.mjs +312 -0
  46. package/fesm2022/siemens-element-ng-auto-collapsable-list.mjs.map +1 -0
  47. package/fesm2022/siemens-element-ng-color-picker.mjs +176 -0
  48. package/fesm2022/siemens-element-ng-color-picker.mjs.map +1 -0
  49. package/fesm2022/siemens-element-ng-connection-strength.mjs +58 -0
  50. package/fesm2022/siemens-element-ng-connection-strength.mjs.map +1 -0
  51. package/fesm2022/siemens-element-ng-copyright-notice.mjs +71 -0
  52. package/fesm2022/siemens-element-ng-copyright-notice.mjs.map +1 -0
  53. package/fesm2022/siemens-element-ng-empty-state.mjs +59 -0
  54. package/fesm2022/siemens-element-ng-empty-state.mjs.map +1 -0
  55. package/fesm2022/siemens-element-ng-footer.mjs +55 -0
  56. package/fesm2022/siemens-element-ng-footer.mjs.map +1 -0
  57. package/fesm2022/siemens-element-ng-icon.mjs +8 -1
  58. package/fesm2022/siemens-element-ng-icon.mjs.map +1 -1
  59. package/fesm2022/siemens-element-ng-inline-notification.mjs +82 -0
  60. package/fesm2022/siemens-element-ng-inline-notification.mjs.map +1 -0
  61. package/fesm2022/siemens-element-ng-loading-spinner.mjs +248 -0
  62. package/fesm2022/siemens-element-ng-loading-spinner.mjs.map +1 -0
  63. package/fesm2022/siemens-element-ng-menu.mjs +350 -0
  64. package/fesm2022/siemens-element-ng-menu.mjs.map +1 -0
  65. package/fesm2022/siemens-element-ng-modal.mjs +345 -0
  66. package/fesm2022/siemens-element-ng-modal.mjs.map +1 -0
  67. package/fesm2022/siemens-element-ng-pagination.mjs +145 -0
  68. package/fesm2022/siemens-element-ng-pagination.mjs.map +1 -0
  69. package/fesm2022/siemens-element-ng-password-toggle.mjs +88 -0
  70. package/fesm2022/siemens-element-ng-password-toggle.mjs.map +1 -0
  71. package/fesm2022/siemens-element-ng-summary-chip.mjs +77 -0
  72. package/fesm2022/siemens-element-ng-summary-chip.mjs.map +1 -0
  73. package/fesm2022/siemens-element-ng-tooltip.mjs +233 -0
  74. package/fesm2022/siemens-element-ng-tooltip.mjs.map +1 -0
  75. package/fesm2022/siemens-element-ng-translate.mjs.map +1 -1
  76. package/footer/index.d.ts +6 -0
  77. package/footer/package.json +3 -0
  78. package/footer/si-footer.component.d.ts +14 -0
  79. package/footer/si-footer.module.d.ts +7 -0
  80. package/icon/element-icons.d.ts +7 -0
  81. package/inline-notification/index.d.ts +6 -0
  82. package/inline-notification/package.json +3 -0
  83. package/inline-notification/si-inline-notification.component.d.ts +42 -0
  84. package/inline-notification/si-inline-notification.module.d.ts +7 -0
  85. package/loading-spinner/index.d.ts +9 -0
  86. package/loading-spinner/package.json +3 -0
  87. package/loading-spinner/si-loading-button.component.d.ts +31 -0
  88. package/loading-spinner/si-loading-spinner.component.d.ts +32 -0
  89. package/loading-spinner/si-loading-spinner.directive.d.ts +36 -0
  90. package/loading-spinner/si-loading-spinner.module.d.ts +8 -0
  91. package/loading-spinner/si-loading-spinner.service.d.ts +18 -0
  92. package/menu/index.d.ts +15 -0
  93. package/menu/package.json +3 -0
  94. package/menu/si-menu-action.service.d.ts +13 -0
  95. package/menu/si-menu-bar.directive.d.ts +12 -0
  96. package/menu/si-menu-divider.directive.d.ts +5 -0
  97. package/menu/si-menu-factory-item-guard.directive.d.ts +11 -0
  98. package/menu/si-menu-factory.component.d.ts +15 -0
  99. package/menu/si-menu-header.directive.d.ts +5 -0
  100. package/menu/si-menu-item-base.directive.d.ts +16 -0
  101. package/menu/si-menu-item-checkbox.component.d.ts +10 -0
  102. package/menu/si-menu-item-radio.component.d.ts +10 -0
  103. package/menu/si-menu-item.component.d.ts +10 -0
  104. package/menu/si-menu-model.d.ts +91 -0
  105. package/menu/si-menu.directive.d.ts +6 -0
  106. package/menu/si-menu.module.d.ts +14 -0
  107. package/modal/index.d.ts +7 -0
  108. package/modal/modal.helpers.d.ts +8 -0
  109. package/modal/modalref.d.ts +64 -0
  110. package/modal/package.json +3 -0
  111. package/modal/si-modal.component.d.ts +32 -0
  112. package/modal/si-modal.service.d.ts +57 -0
  113. package/package.json +67 -3
  114. package/pagination/index.d.ts +6 -0
  115. package/pagination/package.json +3 -0
  116. package/pagination/si-pagination.component.d.ts +65 -0
  117. package/pagination/si-pagination.module.d.ts +7 -0
  118. package/password-toggle/index.d.ts +6 -0
  119. package/password-toggle/package.json +3 -0
  120. package/password-toggle/si-password-toggle.component.d.ts +39 -0
  121. package/password-toggle/si-password-toggle.module.d.ts +7 -0
  122. package/summary-chip/index.d.ts +5 -0
  123. package/summary-chip/package.json +3 -0
  124. package/summary-chip/si-summary-chip.component.d.ts +44 -0
  125. package/template-i18n.json +19 -1
  126. package/tooltip/index.d.ts +7 -0
  127. package/tooltip/package.json +3 -0
  128. package/tooltip/si-tooltip.component.d.ts +25 -0
  129. package/tooltip/si-tooltip.directive.d.ts +45 -0
  130. package/tooltip/si-tooltip.module.d.ts +7 -0
  131. package/tooltip/si-tooltip.service.d.ts +44 -0
  132. package/translate/si-translatable-keys.interface.d.ts +18 -0
@@ -0,0 +1,350 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, input, HostBinding, Directive, booleanAttribute, computed, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
3
+ import * as i1 from '@angular/cdk/menu';
4
+ import { CdkMenuBar, CdkTargetMenuAim, CdkMenuItemCheckbox, CdkMenuTrigger, CdkMenuItemRadio, CdkMenuItem, CdkMenu, CdkMenuGroup } from '@angular/cdk/menu';
5
+ import { NgClass, NgTemplateOutlet } from '@angular/common';
6
+ import { RouterLink } from '@angular/router';
7
+ import * as i1$1 from '@siemens/element-ng/link';
8
+ import { SiLinkActionService, SiLinkModule } from '@siemens/element-ng/link';
9
+ import * as i2 from '@siemens/element-translate-ng/translate';
10
+ import { SiTranslateModule } from '@siemens/element-translate-ng/translate';
11
+ import { addIcons, elementOk, SiIconNextComponent, elementRecordFilled, elementRight2 } from '@siemens/element-ng/icon';
12
+
13
+ /**
14
+ * Copyright Siemens 2016 - 2025.
15
+ * SPDX-License-Identifier: MIT
16
+ */
17
+ class SiMenuBarDirective {
18
+ menuBar = inject(CdkMenuBar, { self: true });
19
+ get tabIndex() {
20
+ return this.disabled() ? -1 : this.menuBar._getTabIndex();
21
+ }
22
+ /**
23
+ * Sets the menu-bar disabled, i.e. sets tabindex="-1"
24
+ */
25
+ disabled = input();
26
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuBarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
27
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: SiMenuBarDirective, isStandalone: true, selector: "si-menu-bar", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "tabindex": "this.tabIndex" }, styleAttribute: "gap: 1px", classAttribute: "d-inline-flex" }, hostDirectives: [{ directive: i1.CdkMenuBar }, { directive: i1.CdkTargetMenuAim }], ngImport: i0 });
28
+ }
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuBarDirective, decorators: [{
30
+ type: Directive,
31
+ args: [{
32
+ // eslint-disable-next-line @angular-eslint/directive-selector
33
+ selector: 'si-menu-bar',
34
+ hostDirectives: [CdkMenuBar, CdkTargetMenuAim],
35
+ host: {
36
+ class: 'd-inline-flex',
37
+ style: 'gap: 1px'
38
+ }
39
+ }]
40
+ }], propDecorators: { tabIndex: [{
41
+ type: HostBinding,
42
+ args: ['tabindex']
43
+ }] } });
44
+
45
+ /**
46
+ * Copyright Siemens 2016 - 2025.
47
+ * SPDX-License-Identifier: MIT
48
+ */
49
+ class SiMenuDividerDirective {
50
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuDividerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
51
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.6", type: SiMenuDividerDirective, isStandalone: true, selector: "si-menu-divider", host: { classAttribute: "d-block dropdown-divider" }, ngImport: i0 });
52
+ }
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuDividerDirective, decorators: [{
54
+ type: Directive,
55
+ args: [{
56
+ // violating eslint rule, to a have clean API
57
+ // eslint-disable-next-line @angular-eslint/directive-selector
58
+ selector: 'si-menu-divider',
59
+ host: {
60
+ class: 'd-block dropdown-divider'
61
+ }
62
+ }]
63
+ }] });
64
+
65
+ /**
66
+ * Implement and provide this to an {@link SiMenuFactoryComponent}
67
+ * to receive trigger events.
68
+ */
69
+ class SiMenuActionService {
70
+ }
71
+
72
+ /**
73
+ * Copyright Siemens 2016 - 2025.
74
+ * SPDX-License-Identifier: MIT
75
+ */
76
+ /** Required to have compiler checks on the factory template */
77
+ class SiMenuFactoryItemGuardDirective {
78
+ static ngTemplateContextGuard(dir, ctx) {
79
+ return true;
80
+ }
81
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuFactoryItemGuardDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
82
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.6", type: SiMenuFactoryItemGuardDirective, isStandalone: true, selector: "[siMenuFactoryItemGuard]", ngImport: i0 });
83
+ }
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuFactoryItemGuardDirective, decorators: [{
85
+ type: Directive,
86
+ args: [{ selector: '[siMenuFactoryItemGuard]' }]
87
+ }] });
88
+
89
+ /**
90
+ * Copyright Siemens 2016 - 2025.
91
+ * SPDX-License-Identifier: MIT
92
+ */
93
+ class SiMenuHeaderDirective {
94
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
95
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.6", type: SiMenuHeaderDirective, isStandalone: true, selector: "si-menu-header", host: { classAttribute: "dropdown-item-text dropdown-header" }, ngImport: i0 });
96
+ }
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuHeaderDirective, decorators: [{
98
+ type: Directive,
99
+ args: [{
100
+ // violating eslint rule, to a have clean API
101
+ // eslint-disable-next-line @angular-eslint/directive-selector
102
+ selector: 'si-menu-header',
103
+ host: {
104
+ class: 'dropdown-item-text dropdown-header'
105
+ }
106
+ }]
107
+ }] });
108
+
109
+ /**
110
+ * Copyright Siemens 2016 - 2025.
111
+ * SPDX-License-Identifier: MIT
112
+ */
113
+ class SiMenuItemBase {
114
+ badge = input();
115
+ /**
116
+ * @defaultValue 'secondary'
117
+ */
118
+ badgeColor = input('secondary');
119
+ icon = input();
120
+ /** @defaultValue false */
121
+ iconBadgeDot = input(false);
122
+ /** @defaultValue false */
123
+ disabled = input(false, { transform: booleanAttribute });
124
+ badgeDotHasContent = computed(() => {
125
+ return typeof this.iconBadgeDot() === 'string' || typeof this.iconBadgeDot() === 'number';
126
+ });
127
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuItemBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
128
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.6", type: SiMenuItemBase, isStandalone: true, inputs: { badge: { classPropertyName: "badge", publicName: "badge", isSignal: true, isRequired: false, transformFunction: null }, badgeColor: { classPropertyName: "badgeColor", publicName: "badgeColor", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconBadgeDot: { classPropertyName: "iconBadgeDot", publicName: "iconBadgeDot", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.disabled": "disabled()" }, classAttribute: "dropdown-item d-flex focus-inside" }, ngImport: i0 });
129
+ }
130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuItemBase, decorators: [{
131
+ type: Directive,
132
+ args: [{
133
+ host: {
134
+ class: 'dropdown-item d-flex focus-inside',
135
+ '[class.disabled]': 'disabled()'
136
+ }
137
+ }]
138
+ }] });
139
+
140
+ /**
141
+ * Copyright Siemens 2016 - 2025.
142
+ * SPDX-License-Identifier: MIT
143
+ */
144
+ class SiMenuItemCheckboxComponent extends SiMenuItemBase {
145
+ cdkMenuItemCheckbox = inject(CdkMenuItemCheckbox);
146
+ icons = addIcons({ elementOk });
147
+ get checked() {
148
+ return this.cdkMenuItemCheckbox.checked;
149
+ }
150
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuItemCheckboxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
151
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiMenuItemCheckboxComponent, isStandalone: true, selector: "si-menu-item-checkbox", usesInheritance: true, hostDirectives: [{ directive: i1.CdkMenuItemCheckbox, inputs: ["cdkMenuItemChecked", "checked", "cdkMenuItemDisabled", "disabled"], outputs: ["cdkMenuItemTriggered", "triggered"] }, { directive: i1.CdkMenuTrigger }], ngImport: i0, template: "<div class=\"item-wrapper\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon-next class=\"icon badge-dot\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon-next class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [ngClass]=\"'bg-' + badgeColor()\">{{ badge() }}</span>\n }\n @if (checked) {\n <si-icon-next class=\"icon\" [icon]=\"icons.elementOk\" />\n }\n </div>\n</div>\n", styles: [".item-wrapper{display:flex;align-items:center;flex:1;min-inline-size:24px}.item-title:empty,.item-end:empty{display:none!important}:host-context(si-menu-bar,si-content-action-bar){color:var(--element-action-secondary-text);background:var(--element-base-1);padding-inline:8px}:host-context(si-menu-bar,si-content-action-bar) .item-wrapper{justify-content:center}:host-context(si-menu-bar,si-content-action-bar) .icon{margin-inline:-4px}:host-context(si-menu-bar,si-content-action-bar) .item-end{margin-inline-end:-4px!important}:host-context(si-menu-bar,si-content-action-bar) .item-title{padding-inline-start:0;flex:0 1 auto}:host-context(si-menu-bar,si-content-action-bar) .item-title:empty+.item-end .submenu{display:none}:host-context(si-menu-bar,si-content-action-bar) .icon+.item-title{padding-inline-start:8px}:host-context(si-menu-bar,si-content-action-bar) .item-end .submenu{transform:rotate(90deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-expanded=true] .item-end .submenu{transform:rotate(270deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .icon{margin-inline:0}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .item-title{padding-inline-start:4px!important}:host-context(si-menu-bar,si-content-action-bar):focus,:host-context(si-menu-bar,si-content-action-bar).focus{color:var(--element-action-secondary-text);background:var(--element-base-1)}:host-context(si-menu-bar,si-content-action-bar):hover,:host-context(si-menu-bar,si-content-action-bar).hover,:host-context(si-menu-bar,si-content-action-bar):active,:host-context(si-menu-bar,si-content-action-bar).active,:host-context(si-menu-bar,si-content-action-bar)[aria-expanded=true]{color:var(--element-action-secondary-text-hover);background:var(--element-action-secondary-hover)}:host-context(si-menu-bar,si-content-action-bar):disabled,:host-context(si-menu-bar,si-content-action-bar).disabled{opacity:var(--element-action-disabled-opacity);color:var(--element-action-secondary-text);background:var(--element-base-1)}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: SiIconNextComponent, selector: "si-icon-next", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
152
+ }
153
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuItemCheckboxComponent, decorators: [{
154
+ type: Component,
155
+ args: [{ selector: 'si-menu-item-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgClass, SiIconNextComponent], hostDirectives: [
156
+ {
157
+ directive: CdkMenuItemCheckbox,
158
+ inputs: ['cdkMenuItemChecked: checked', 'cdkMenuItemDisabled: disabled'],
159
+ outputs: ['cdkMenuItemTriggered: triggered']
160
+ },
161
+ CdkMenuTrigger
162
+ ], template: "<div class=\"item-wrapper\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon-next class=\"icon badge-dot\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon-next class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [ngClass]=\"'bg-' + badgeColor()\">{{ badge() }}</span>\n }\n @if (checked) {\n <si-icon-next class=\"icon\" [icon]=\"icons.elementOk\" />\n }\n </div>\n</div>\n", styles: [".item-wrapper{display:flex;align-items:center;flex:1;min-inline-size:24px}.item-title:empty,.item-end:empty{display:none!important}:host-context(si-menu-bar,si-content-action-bar){color:var(--element-action-secondary-text);background:var(--element-base-1);padding-inline:8px}:host-context(si-menu-bar,si-content-action-bar) .item-wrapper{justify-content:center}:host-context(si-menu-bar,si-content-action-bar) .icon{margin-inline:-4px}:host-context(si-menu-bar,si-content-action-bar) .item-end{margin-inline-end:-4px!important}:host-context(si-menu-bar,si-content-action-bar) .item-title{padding-inline-start:0;flex:0 1 auto}:host-context(si-menu-bar,si-content-action-bar) .item-title:empty+.item-end .submenu{display:none}:host-context(si-menu-bar,si-content-action-bar) .icon+.item-title{padding-inline-start:8px}:host-context(si-menu-bar,si-content-action-bar) .item-end .submenu{transform:rotate(90deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-expanded=true] .item-end .submenu{transform:rotate(270deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .icon{margin-inline:0}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .item-title{padding-inline-start:4px!important}:host-context(si-menu-bar,si-content-action-bar):focus,:host-context(si-menu-bar,si-content-action-bar).focus{color:var(--element-action-secondary-text);background:var(--element-base-1)}:host-context(si-menu-bar,si-content-action-bar):hover,:host-context(si-menu-bar,si-content-action-bar).hover,:host-context(si-menu-bar,si-content-action-bar):active,:host-context(si-menu-bar,si-content-action-bar).active,:host-context(si-menu-bar,si-content-action-bar)[aria-expanded=true]{color:var(--element-action-secondary-text-hover);background:var(--element-action-secondary-hover)}:host-context(si-menu-bar,si-content-action-bar):disabled,:host-context(si-menu-bar,si-content-action-bar).disabled{opacity:var(--element-action-disabled-opacity);color:var(--element-action-secondary-text);background:var(--element-base-1)}\n"] }]
163
+ }] });
164
+
165
+ /**
166
+ * Copyright Siemens 2016 - 2025.
167
+ * SPDX-License-Identifier: MIT
168
+ */
169
+ class SiMenuItemRadioComponent extends SiMenuItemBase {
170
+ cdkMenuItemRadio = inject(CdkMenuItemRadio);
171
+ icons = addIcons({ elementRecordFilled });
172
+ get checked() {
173
+ return this.cdkMenuItemRadio.checked;
174
+ }
175
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuItemRadioComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
176
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiMenuItemRadioComponent, isStandalone: true, selector: "si-menu-item-radio", usesInheritance: true, hostDirectives: [{ directive: i1.CdkMenuItemRadio, inputs: ["cdkMenuItemChecked", "checked", "cdkMenuItemDisabled", "disabled"], outputs: ["cdkMenuItemTriggered", "triggered"] }, { directive: i1.CdkMenuTrigger }], ngImport: i0, template: "<div class=\"item-wrapper\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon-next class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon-next class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [ngClass]=\"'bg-' + badgeColor()\">{{ badge() }}</span>\n }\n @if (checked) {\n <si-icon-next class=\"icon-small me-1\" [icon]=\"icons.elementRecordFilled\" />\n }\n </div>\n</div>\n", styles: [".item-wrapper{display:flex;align-items:center;flex:1;min-inline-size:24px}.item-title:empty,.item-end:empty{display:none!important}:host-context(si-menu-bar,si-content-action-bar){color:var(--element-action-secondary-text);background:var(--element-base-1);padding-inline:8px}:host-context(si-menu-bar,si-content-action-bar) .item-wrapper{justify-content:center}:host-context(si-menu-bar,si-content-action-bar) .icon{margin-inline:-4px}:host-context(si-menu-bar,si-content-action-bar) .item-end{margin-inline-end:-4px!important}:host-context(si-menu-bar,si-content-action-bar) .item-title{padding-inline-start:0;flex:0 1 auto}:host-context(si-menu-bar,si-content-action-bar) .item-title:empty+.item-end .submenu{display:none}:host-context(si-menu-bar,si-content-action-bar) .icon+.item-title{padding-inline-start:8px}:host-context(si-menu-bar,si-content-action-bar) .item-end .submenu{transform:rotate(90deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-expanded=true] .item-end .submenu{transform:rotate(270deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .icon{margin-inline:0}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .item-title{padding-inline-start:4px!important}:host-context(si-menu-bar,si-content-action-bar):focus,:host-context(si-menu-bar,si-content-action-bar).focus{color:var(--element-action-secondary-text);background:var(--element-base-1)}:host-context(si-menu-bar,si-content-action-bar):hover,:host-context(si-menu-bar,si-content-action-bar).hover,:host-context(si-menu-bar,si-content-action-bar):active,:host-context(si-menu-bar,si-content-action-bar).active,:host-context(si-menu-bar,si-content-action-bar)[aria-expanded=true]{color:var(--element-action-secondary-text-hover);background:var(--element-action-secondary-hover)}:host-context(si-menu-bar,si-content-action-bar):disabled,:host-context(si-menu-bar,si-content-action-bar).disabled{opacity:var(--element-action-disabled-opacity);color:var(--element-action-secondary-text);background:var(--element-base-1)}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: SiIconNextComponent, selector: "si-icon-next", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
177
+ }
178
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuItemRadioComponent, decorators: [{
179
+ type: Component,
180
+ args: [{ selector: 'si-menu-item-radio', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgClass, SiIconNextComponent], hostDirectives: [
181
+ {
182
+ directive: CdkMenuItemRadio,
183
+ inputs: ['cdkMenuItemChecked: checked', 'cdkMenuItemDisabled: disabled'],
184
+ outputs: ['cdkMenuItemTriggered: triggered']
185
+ },
186
+ CdkMenuTrigger
187
+ ], template: "<div class=\"item-wrapper\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon-next class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon-next class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [ngClass]=\"'bg-' + badgeColor()\">{{ badge() }}</span>\n }\n @if (checked) {\n <si-icon-next class=\"icon-small me-1\" [icon]=\"icons.elementRecordFilled\" />\n }\n </div>\n</div>\n", styles: [".item-wrapper{display:flex;align-items:center;flex:1;min-inline-size:24px}.item-title:empty,.item-end:empty{display:none!important}:host-context(si-menu-bar,si-content-action-bar){color:var(--element-action-secondary-text);background:var(--element-base-1);padding-inline:8px}:host-context(si-menu-bar,si-content-action-bar) .item-wrapper{justify-content:center}:host-context(si-menu-bar,si-content-action-bar) .icon{margin-inline:-4px}:host-context(si-menu-bar,si-content-action-bar) .item-end{margin-inline-end:-4px!important}:host-context(si-menu-bar,si-content-action-bar) .item-title{padding-inline-start:0;flex:0 1 auto}:host-context(si-menu-bar,si-content-action-bar) .item-title:empty+.item-end .submenu{display:none}:host-context(si-menu-bar,si-content-action-bar) .icon+.item-title{padding-inline-start:8px}:host-context(si-menu-bar,si-content-action-bar) .item-end .submenu{transform:rotate(90deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-expanded=true] .item-end .submenu{transform:rotate(270deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .icon{margin-inline:0}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .item-title{padding-inline-start:4px!important}:host-context(si-menu-bar,si-content-action-bar):focus,:host-context(si-menu-bar,si-content-action-bar).focus{color:var(--element-action-secondary-text);background:var(--element-base-1)}:host-context(si-menu-bar,si-content-action-bar):hover,:host-context(si-menu-bar,si-content-action-bar).hover,:host-context(si-menu-bar,si-content-action-bar):active,:host-context(si-menu-bar,si-content-action-bar).active,:host-context(si-menu-bar,si-content-action-bar)[aria-expanded=true]{color:var(--element-action-secondary-text-hover);background:var(--element-action-secondary-hover)}:host-context(si-menu-bar,si-content-action-bar):disabled,:host-context(si-menu-bar,si-content-action-bar).disabled{opacity:var(--element-action-disabled-opacity);color:var(--element-action-secondary-text);background:var(--element-base-1)}\n"] }]
188
+ }] });
189
+
190
+ /**
191
+ * Copyright Siemens 2016 - 2025.
192
+ * SPDX-License-Identifier: MIT
193
+ */
194
+ class SiMenuItemComponent extends SiMenuItemBase {
195
+ menuTrigger = inject(CdkMenuTrigger, { optional: true, self: true });
196
+ icons = addIcons({ elementRight2 });
197
+ get hasSubmenu() {
198
+ return !!this.menuTrigger?.menuTemplateRef;
199
+ }
200
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
201
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiMenuItemComponent, isStandalone: true, selector: "si-menu-item, a[si-menu-item], button[si-menu-item]", usesInheritance: true, hostDirectives: [{ directive: i1.CdkMenuItem, inputs: ["cdkMenuItemDisabled", "disabled"], outputs: ["cdkMenuItemTriggered", "triggered"] }], ngImport: i0, template: "<div class=\"item-wrapper\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon-next class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon-next class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [ngClass]=\"'bg-' + badgeColor()\">{{ badge() }}</span>\n }\n <ng-content select=\".end\" />\n @if (hasSubmenu) {\n <si-icon-next class=\"icon submenu\" [icon]=\"icons.elementRight2\" />\n }\n </div>\n</div>\n", styles: [".item-wrapper{display:flex;align-items:center;flex:1;min-inline-size:24px}.item-title:empty,.item-end:empty{display:none!important}:host-context(si-menu-bar,si-content-action-bar){color:var(--element-action-secondary-text);background:var(--element-base-1);padding-inline:8px}:host-context(si-menu-bar,si-content-action-bar) .item-wrapper{justify-content:center}:host-context(si-menu-bar,si-content-action-bar) .icon{margin-inline:-4px}:host-context(si-menu-bar,si-content-action-bar) .item-end{margin-inline-end:-4px!important}:host-context(si-menu-bar,si-content-action-bar) .item-title{padding-inline-start:0;flex:0 1 auto}:host-context(si-menu-bar,si-content-action-bar) .item-title:empty+.item-end .submenu{display:none}:host-context(si-menu-bar,si-content-action-bar) .icon+.item-title{padding-inline-start:8px}:host-context(si-menu-bar,si-content-action-bar) .item-end .submenu{transform:rotate(90deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-expanded=true] .item-end .submenu{transform:rotate(270deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .icon{margin-inline:0}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .item-title{padding-inline-start:4px!important}:host-context(si-menu-bar,si-content-action-bar):focus,:host-context(si-menu-bar,si-content-action-bar).focus{color:var(--element-action-secondary-text);background:var(--element-base-1)}:host-context(si-menu-bar,si-content-action-bar):hover,:host-context(si-menu-bar,si-content-action-bar).hover,:host-context(si-menu-bar,si-content-action-bar):active,:host-context(si-menu-bar,si-content-action-bar).active,:host-context(si-menu-bar,si-content-action-bar)[aria-expanded=true]{color:var(--element-action-secondary-text-hover);background:var(--element-action-secondary-hover)}:host-context(si-menu-bar,si-content-action-bar):disabled,:host-context(si-menu-bar,si-content-action-bar).disabled{opacity:var(--element-action-disabled-opacity);color:var(--element-action-secondary-text);background:var(--element-base-1)}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: SiIconNextComponent, selector: "si-icon-next", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
202
+ }
203
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuItemComponent, decorators: [{
204
+ type: Component,
205
+ args: [{ selector: 'si-menu-item, a[si-menu-item], button[si-menu-item]', changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgClass, SiIconNextComponent], hostDirectives: [
206
+ {
207
+ directive: CdkMenuItem,
208
+ inputs: ['cdkMenuItemDisabled: disabled'],
209
+ outputs: ['cdkMenuItemTriggered: triggered']
210
+ }
211
+ ], template: "<div class=\"item-wrapper\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon-next class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon-next class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [ngClass]=\"'bg-' + badgeColor()\">{{ badge() }}</span>\n }\n <ng-content select=\".end\" />\n @if (hasSubmenu) {\n <si-icon-next class=\"icon submenu\" [icon]=\"icons.elementRight2\" />\n }\n </div>\n</div>\n", styles: [".item-wrapper{display:flex;align-items:center;flex:1;min-inline-size:24px}.item-title:empty,.item-end:empty{display:none!important}:host-context(si-menu-bar,si-content-action-bar){color:var(--element-action-secondary-text);background:var(--element-base-1);padding-inline:8px}:host-context(si-menu-bar,si-content-action-bar) .item-wrapper{justify-content:center}:host-context(si-menu-bar,si-content-action-bar) .icon{margin-inline:-4px}:host-context(si-menu-bar,si-content-action-bar) .item-end{margin-inline-end:-4px!important}:host-context(si-menu-bar,si-content-action-bar) .item-title{padding-inline-start:0;flex:0 1 auto}:host-context(si-menu-bar,si-content-action-bar) .item-title:empty+.item-end .submenu{display:none}:host-context(si-menu-bar,si-content-action-bar) .icon+.item-title{padding-inline-start:8px}:host-context(si-menu-bar,si-content-action-bar) .item-end .submenu{transform:rotate(90deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-expanded=true] .item-end .submenu{transform:rotate(270deg)}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .icon{margin-inline:0}:host-context(si-menu-bar,si-content-action-bar)[aria-haspopup] .item-title{padding-inline-start:4px!important}:host-context(si-menu-bar,si-content-action-bar):focus,:host-context(si-menu-bar,si-content-action-bar).focus{color:var(--element-action-secondary-text);background:var(--element-base-1)}:host-context(si-menu-bar,si-content-action-bar):hover,:host-context(si-menu-bar,si-content-action-bar).hover,:host-context(si-menu-bar,si-content-action-bar):active,:host-context(si-menu-bar,si-content-action-bar).active,:host-context(si-menu-bar,si-content-action-bar)[aria-expanded=true]{color:var(--element-action-secondary-text-hover);background:var(--element-action-secondary-hover)}:host-context(si-menu-bar,si-content-action-bar):disabled,:host-context(si-menu-bar,si-content-action-bar).disabled{opacity:var(--element-action-disabled-opacity);color:var(--element-action-secondary-text);background:var(--element-base-1)}\n"] }]
212
+ }] });
213
+
214
+ /**
215
+ * Copyright Siemens 2016 - 2025.
216
+ * SPDX-License-Identifier: MIT
217
+ */
218
+ class SiMenuDirective {
219
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
220
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.6", type: SiMenuDirective, isStandalone: true, selector: "si-menu", host: { classAttribute: "d-block dropdown-menu position-static" }, hostDirectives: [{ directive: i1.CdkMenu }, { directive: i1.CdkTargetMenuAim }], ngImport: i0 });
221
+ }
222
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuDirective, decorators: [{
223
+ type: Directive,
224
+ args: [{
225
+ // violating eslint rule, to a have clean API
226
+ // eslint-disable-next-line @angular-eslint/directive-selector
227
+ selector: 'si-menu',
228
+ hostDirectives: [CdkMenu, CdkTargetMenuAim],
229
+ host: {
230
+ class: 'd-block dropdown-menu position-static'
231
+ }
232
+ }]
233
+ }] });
234
+
235
+ /**
236
+ * Copyright Siemens 2016 - 2025.
237
+ * SPDX-License-Identifier: MIT
238
+ */
239
+ class SiMenuFactoryComponent {
240
+ items = input();
241
+ actionParam = input();
242
+ linkActionService = inject(SiLinkActionService, { optional: true });
243
+ menuActionService = inject(SiMenuActionService, { optional: true });
244
+ isNewItemStyle(item) {
245
+ return 'label' in item || item.type === 'divider' || item.type === 'radio-group';
246
+ }
247
+ isLegacyItemStyle(item) {
248
+ return !this.isNewItemStyle(item);
249
+ }
250
+ radioOrCheckboxTriggered(item) {
251
+ if (typeof item.action === 'function') {
252
+ item.action(this.actionParam());
253
+ }
254
+ else {
255
+ this.linkActionService?.emit(item, this.actionParam());
256
+ }
257
+ }
258
+ runAction(item) {
259
+ if (typeof item.action === 'function') {
260
+ item.action(this.actionParam(), item); // typescript cannot level down the item type properly
261
+ }
262
+ if (typeof item.action === 'string') {
263
+ this.menuActionService?.actionTriggered(item, this.actionParam());
264
+ }
265
+ }
266
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuFactoryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
267
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.6", type: SiMenuFactoryComponent, isStandalone: true, selector: "si-menu-factory", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, actionParam: { classPropertyName: "actionParam", publicName: "actionParam", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<si-menu>\n @for (item of items(); track item) {\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\" />\n }\n <ng-template #itemTemplate let-item siMenuFactoryItemGuard>\n @if (isNewItemStyle(item)) {\n @switch (item.type) {\n @case ('group') {\n <si-menu-item\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [cdkMenuTriggerFor]=\"submenu\"\n [cdkMenuTriggerData]=\"{ $implicit: item.children }\"\n >{{ item.label | translate }}\n </si-menu-item>\n <ng-template #submenu>\n <si-menu-factory [items]=\"item.children\" [actionParam]=\"actionParam()\" />\n </ng-template>\n }\n @case ('action') {\n <si-menu-item\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n (triggered)=\"runAction(item)\"\n >{{ item.label | translate }}\n </si-menu-item>\n }\n @case ('router-link') {\n <a\n si-menu-item\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.extras?.queryParams\"\n [queryParamsHandling]=\"item.extras?.queryParamsHandling\"\n [fragment]=\"item.extras?.fragment\"\n [state]=\"item.extras?.state\"\n [relativeTo]=\"item.extras?.relativeTo\"\n [preserveFragment]=\"item.extras?.preserveFragment\"\n [skipLocationChange]=\"item.extras?.skipLocationChange\"\n [replaceUrl]=\"item.extras?.replaceUrl\"\n >{{ item.label | translate }}\n </a>\n }\n @case ('link') {\n <a\n si-menu-item\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [href]=\"item.href\"\n [target]=\"item.target\"\n >{{ item.label | translate }}\n </a>\n }\n @case ('radio-group') {\n <div cdkMenuGroup>\n @for (radioItem of item.children; track radioItem) {\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: radioItem }\" />\n }\n </div>\n }\n @case ('radio') {\n <si-menu-item-radio\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [checked]=\"item.checked\"\n (triggered)=\"runAction(item)\"\n >{{ item.label | translate }}\n </si-menu-item-radio>\n }\n @case ('checkbox') {\n <si-menu-item-checkbox\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [checked]=\"item.checked\"\n (triggered)=\"runAction(item)\"\n >{{ item.label | translate }}\n </si-menu-item-checkbox>\n }\n @case ('header') {\n <si-menu-header>{{ item.label | translate }}</si-menu-header>\n }\n @case ('divider') {\n <si-menu-divider />\n }\n }\n } @else if (isLegacyItemStyle(item)) {\n @switch (item.type) {\n @case ('radio') {\n <si-menu-item-radio\n [attr.data-id]=\"item.id\"\n [checked]=\"item.selectionState === 'radio'\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [icon]=\"item.icon\"\n [disabled]=\"item.disabled\"\n [iconBadgeDot]=\"item.badgeDot\"\n (triggered)=\"radioOrCheckboxTriggered(item)\"\n >\n {{ item.title | translate }}\n </si-menu-item-radio>\n }\n @case ('check') {\n <si-menu-item-checkbox\n [attr.data-id]=\"item.id\"\n [checked]=\"item.selectionState === 'check'\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [icon]=\"item.icon\"\n [disabled]=\"item.disabled\"\n [iconBadgeDot]=\"item.badgeDot\"\n (triggered)=\"radioOrCheckboxTriggered(item)\"\n >\n {{ item.title | translate }}\n </si-menu-item-checkbox>\n }\n @default {\n @if (item.isHeading) {\n <div class=\"dropdown-item-text dropdown-header\">\n {{ item.title | translate }}\n </div>\n } @else {\n @if (item.title !== '-') {\n <a\n si-menu-item\n activeClass=\"active\"\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [icon]=\"item.icon\"\n [disabled]=\"item.disabled\"\n [siLink]=\"item\"\n [iconBadgeDot]=\"item.badgeDot\"\n [actionParam]=\"actionParam()\"\n [cdkMenuTriggerFor]=\"item.items ? submenu : null\"\n [cdkMenuTriggerData]=\"item\"\n >\n {{ item.title | translate }}\n </a>\n <ng-template #submenu>\n <si-menu-factory [items]=\"item.items!\" [actionParam]=\"actionParam()\" />\n </ng-template>\n } @else {\n <div class=\"dropdown-divider\"></div>\n }\n }\n }\n }\n }\n </ng-template>\n</si-menu>\n", dependencies: [{ kind: "component", type: SiMenuFactoryComponent, selector: "si-menu-factory", inputs: ["items", "actionParam"] }, { kind: "directive", type: SiMenuDirective, selector: "si-menu" }, { kind: "component", type: SiMenuItemComponent, selector: "si-menu-item, a[si-menu-item], button[si-menu-item]" }, { kind: "component", type: SiMenuItemRadioComponent, selector: "si-menu-item-radio" }, { kind: "component", type: SiMenuItemCheckboxComponent, selector: "si-menu-item-checkbox" }, { kind: "directive", type: SiMenuHeaderDirective, selector: "si-menu-header" }, { kind: "directive", type: SiMenuDividerDirective, selector: "si-menu-divider" }, { kind: "ngmodule", type: SiLinkModule }, { kind: "directive", type: i1$1.SiLinkDirective, selector: "[siLink]", inputs: ["siLink", "siLinkDefaultTarget", "actionParam", "activeClass", "exactMatch", "ariaCurrent"], outputs: ["activeChange"], exportAs: ["siLink"] }, { kind: "directive", type: CdkMenuTrigger, selector: "[cdkMenuTriggerFor]", inputs: ["cdkMenuTriggerFor", "cdkMenuPosition", "cdkMenuTriggerData"], outputs: ["cdkMenuOpened", "cdkMenuClosed"], exportAs: ["cdkMenuTriggerFor"] }, { kind: "ngmodule", type: SiTranslateModule }, { kind: "pipe", type: i2.SiTranslatePipe, name: "translate" }, { kind: "directive", type: CdkMenuGroup, selector: "[cdkMenuGroup]", exportAs: ["cdkMenuGroup"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: SiMenuFactoryItemGuardDirective, selector: "[siMenuFactoryItemGuard]" }] });
268
+ }
269
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuFactoryComponent, decorators: [{
270
+ type: Component,
271
+ args: [{ selector: 'si-menu-factory', imports: [
272
+ SiMenuDirective,
273
+ SiMenuItemComponent,
274
+ SiMenuItemRadioComponent,
275
+ SiMenuItemCheckboxComponent,
276
+ SiMenuHeaderDirective,
277
+ SiMenuDividerDirective,
278
+ SiLinkModule,
279
+ CdkMenuTrigger,
280
+ SiTranslateModule,
281
+ CdkMenuGroup,
282
+ NgTemplateOutlet,
283
+ RouterLink,
284
+ SiMenuFactoryItemGuardDirective
285
+ ], template: "<si-menu>\n @for (item of items(); track item) {\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\" />\n }\n <ng-template #itemTemplate let-item siMenuFactoryItemGuard>\n @if (isNewItemStyle(item)) {\n @switch (item.type) {\n @case ('group') {\n <si-menu-item\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [cdkMenuTriggerFor]=\"submenu\"\n [cdkMenuTriggerData]=\"{ $implicit: item.children }\"\n >{{ item.label | translate }}\n </si-menu-item>\n <ng-template #submenu>\n <si-menu-factory [items]=\"item.children\" [actionParam]=\"actionParam()\" />\n </ng-template>\n }\n @case ('action') {\n <si-menu-item\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n (triggered)=\"runAction(item)\"\n >{{ item.label | translate }}\n </si-menu-item>\n }\n @case ('router-link') {\n <a\n si-menu-item\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.extras?.queryParams\"\n [queryParamsHandling]=\"item.extras?.queryParamsHandling\"\n [fragment]=\"item.extras?.fragment\"\n [state]=\"item.extras?.state\"\n [relativeTo]=\"item.extras?.relativeTo\"\n [preserveFragment]=\"item.extras?.preserveFragment\"\n [skipLocationChange]=\"item.extras?.skipLocationChange\"\n [replaceUrl]=\"item.extras?.replaceUrl\"\n >{{ item.label | translate }}\n </a>\n }\n @case ('link') {\n <a\n si-menu-item\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [href]=\"item.href\"\n [target]=\"item.target\"\n >{{ item.label | translate }}\n </a>\n }\n @case ('radio-group') {\n <div cdkMenuGroup>\n @for (radioItem of item.children; track radioItem) {\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: radioItem }\" />\n }\n </div>\n }\n @case ('radio') {\n <si-menu-item-radio\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [checked]=\"item.checked\"\n (triggered)=\"runAction(item)\"\n >{{ item.label | translate }}\n </si-menu-item-radio>\n }\n @case ('checkbox') {\n <si-menu-item-checkbox\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [checked]=\"item.checked\"\n (triggered)=\"runAction(item)\"\n >{{ item.label | translate }}\n </si-menu-item-checkbox>\n }\n @case ('header') {\n <si-menu-header>{{ item.label | translate }}</si-menu-header>\n }\n @case ('divider') {\n <si-menu-divider />\n }\n }\n } @else if (isLegacyItemStyle(item)) {\n @switch (item.type) {\n @case ('radio') {\n <si-menu-item-radio\n [attr.data-id]=\"item.id\"\n [checked]=\"item.selectionState === 'radio'\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [icon]=\"item.icon\"\n [disabled]=\"item.disabled\"\n [iconBadgeDot]=\"item.badgeDot\"\n (triggered)=\"radioOrCheckboxTriggered(item)\"\n >\n {{ item.title | translate }}\n </si-menu-item-radio>\n }\n @case ('check') {\n <si-menu-item-checkbox\n [attr.data-id]=\"item.id\"\n [checked]=\"item.selectionState === 'check'\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [icon]=\"item.icon\"\n [disabled]=\"item.disabled\"\n [iconBadgeDot]=\"item.badgeDot\"\n (triggered)=\"radioOrCheckboxTriggered(item)\"\n >\n {{ item.title | translate }}\n </si-menu-item-checkbox>\n }\n @default {\n @if (item.isHeading) {\n <div class=\"dropdown-item-text dropdown-header\">\n {{ item.title | translate }}\n </div>\n } @else {\n @if (item.title !== '-') {\n <a\n si-menu-item\n activeClass=\"active\"\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [icon]=\"item.icon\"\n [disabled]=\"item.disabled\"\n [siLink]=\"item\"\n [iconBadgeDot]=\"item.badgeDot\"\n [actionParam]=\"actionParam()\"\n [cdkMenuTriggerFor]=\"item.items ? submenu : null\"\n [cdkMenuTriggerData]=\"item\"\n >\n {{ item.title | translate }}\n </a>\n <ng-template #submenu>\n <si-menu-factory [items]=\"item.items!\" [actionParam]=\"actionParam()\" />\n </ng-template>\n } @else {\n <div class=\"dropdown-divider\"></div>\n }\n }\n }\n }\n }\n </ng-template>\n</si-menu>\n" }]
286
+ }] });
287
+
288
+ /**
289
+ * Copyright Siemens 2016 - 2025.
290
+ * SPDX-License-Identifier: MIT
291
+ */
292
+ class SiMenuModule {
293
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
294
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.6", ngImport: i0, type: SiMenuModule, imports: [SiMenuBarDirective,
295
+ SiMenuDirective,
296
+ SiMenuDividerDirective,
297
+ SiMenuFactoryComponent,
298
+ SiMenuHeaderDirective,
299
+ SiMenuItemCheckboxComponent,
300
+ SiMenuItemComponent,
301
+ SiMenuItemRadioComponent], exports: [SiMenuBarDirective,
302
+ SiMenuDirective,
303
+ SiMenuDividerDirective,
304
+ SiMenuFactoryComponent,
305
+ SiMenuHeaderDirective,
306
+ SiMenuItemCheckboxComponent,
307
+ SiMenuItemComponent,
308
+ SiMenuItemRadioComponent] });
309
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuModule, imports: [SiMenuFactoryComponent,
310
+ SiMenuItemCheckboxComponent,
311
+ SiMenuItemComponent,
312
+ SiMenuItemRadioComponent] });
313
+ }
314
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.6", ngImport: i0, type: SiMenuModule, decorators: [{
315
+ type: NgModule,
316
+ args: [{
317
+ imports: [
318
+ SiMenuBarDirective,
319
+ SiMenuDirective,
320
+ SiMenuDividerDirective,
321
+ SiMenuFactoryComponent,
322
+ SiMenuHeaderDirective,
323
+ SiMenuItemCheckboxComponent,
324
+ SiMenuItemComponent,
325
+ SiMenuItemRadioComponent
326
+ ],
327
+ exports: [
328
+ SiMenuBarDirective,
329
+ SiMenuDirective,
330
+ SiMenuDividerDirective,
331
+ SiMenuFactoryComponent,
332
+ SiMenuHeaderDirective,
333
+ SiMenuItemCheckboxComponent,
334
+ SiMenuItemComponent,
335
+ SiMenuItemRadioComponent
336
+ ]
337
+ }]
338
+ }] });
339
+
340
+ /**
341
+ * Copyright Siemens 2016 - 2025.
342
+ * SPDX-License-Identifier: MIT
343
+ */
344
+
345
+ /**
346
+ * Generated bundle index. Do not edit.
347
+ */
348
+
349
+ export { SiMenuActionService, SiMenuBarDirective, SiMenuDirective, SiMenuDividerDirective, SiMenuFactoryComponent, SiMenuHeaderDirective, SiMenuItemCheckboxComponent, SiMenuItemComponent, SiMenuItemRadioComponent, SiMenuModule };
350
+ //# sourceMappingURL=siemens-element-ng-menu.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siemens-element-ng-menu.mjs","sources":["../../../../projects/element-ng/menu/si-menu-bar.directive.ts","../../../../projects/element-ng/menu/si-menu-divider.directive.ts","../../../../projects/element-ng/menu/si-menu-action.service.ts","../../../../projects/element-ng/menu/si-menu-factory-item-guard.directive.ts","../../../../projects/element-ng/menu/si-menu-header.directive.ts","../../../../projects/element-ng/menu/si-menu-item-base.directive.ts","../../../../projects/element-ng/menu/si-menu-item-checkbox.component.ts","../../../../projects/element-ng/menu/si-menu-item-checkbox.component.html","../../../../projects/element-ng/menu/si-menu-item-radio.component.ts","../../../../projects/element-ng/menu/si-menu-item-radio.component.html","../../../../projects/element-ng/menu/si-menu-item.component.ts","../../../../projects/element-ng/menu/si-menu-item.component.html","../../../../projects/element-ng/menu/si-menu.directive.ts","../../../../projects/element-ng/menu/si-menu-factory.component.ts","../../../../projects/element-ng/menu/si-menu-factory.component.html","../../../../projects/element-ng/menu/si-menu.module.ts","../../../../projects/element-ng/menu/index.ts","../../../../projects/element-ng/menu/siemens-element-ng-menu.ts"],"sourcesContent":["/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { CdkMenuBar, CdkTargetMenuAim } from '@angular/cdk/menu';\nimport { Directive, HostBinding, inject, input } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'si-menu-bar',\n hostDirectives: [CdkMenuBar, CdkTargetMenuAim],\n host: {\n class: 'd-inline-flex',\n style: 'gap: 1px'\n }\n})\nexport class SiMenuBarDirective {\n private menuBar = inject(CdkMenuBar, { self: true });\n\n @HostBinding('tabindex')\n protected get tabIndex(): 0 | -1 | null {\n return this.disabled() ? -1 : this.menuBar._getTabIndex();\n }\n\n /**\n * Sets the menu-bar disabled, i.e. sets tabindex=\"-1\"\n */\n readonly disabled = input<boolean>();\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { Directive } from '@angular/core';\n\n@Directive({\n // violating eslint rule, to a have clean API\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'si-menu-divider',\n host: {\n class: 'd-block dropdown-divider'\n }\n})\nexport class SiMenuDividerDirective {}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { MenuItemAction, MenuItemCheckbox, MenuItemRadio } from './si-menu-model';\n\n/**\n * Implement and provide this to an {@link SiMenuFactoryComponent}\n * to receive trigger events.\n */\nexport abstract class SiMenuActionService {\n /** Will be called by {@link SiMenuFactoryComponent} if an action is defined with a string instead of a function. */\n abstract actionTriggered(\n item: MenuItemAction | MenuItemRadio | MenuItemCheckbox,\n actionParam?: any\n ): void;\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { Directive } from '@angular/core';\nimport { MenuItem as MenuItemLegacy } from '@siemens/element-ng/common';\n\nimport { MenuItem } from './si-menu-model';\n\n/** Required to have compiler checks on the factory template */\n@Directive({ selector: '[siMenuFactoryItemGuard]' })\nexport class SiMenuFactoryItemGuardDirective {\n static ngTemplateContextGuard(\n dir: SiMenuFactoryItemGuardDirective,\n ctx: any\n ): ctx is { $implicit: MenuItemLegacy | MenuItem } {\n return true;\n }\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { Directive } from '@angular/core';\n\n@Directive({\n // violating eslint rule, to a have clean API\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'si-menu-header',\n host: {\n class: 'dropdown-item-text dropdown-header'\n }\n})\nexport class SiMenuHeaderDirective {}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { booleanAttribute, computed, Directive, input } from '@angular/core';\n\n@Directive({\n host: {\n class: 'dropdown-item d-flex focus-inside',\n '[class.disabled]': 'disabled()'\n }\n})\nexport abstract class SiMenuItemBase {\n readonly badge = input<string | number>();\n /**\n * @defaultValue 'secondary'\n */\n readonly badgeColor = input('secondary');\n readonly icon = input<string>();\n\n /** @defaultValue false */\n readonly iconBadgeDot = input<boolean | string | number | undefined>(false);\n\n /** @defaultValue false */\n readonly disabled = input(false, { transform: booleanAttribute });\n\n protected readonly badgeDotHasContent = computed(() => {\n return typeof this.iconBadgeDot() === 'string' || typeof this.iconBadgeDot() === 'number';\n });\n}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { CdkMenuItemCheckbox, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { addIcons, elementOk, SiIconNextComponent } from '@siemens/element-ng/icon';\n\nimport { SiMenuItemBase } from './si-menu-item-base.directive';\n\n@Component({\n selector: 'si-menu-item-checkbox',\n templateUrl: './si-menu-item-checkbox.component.html',\n styleUrl: './si-menu-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, SiIconNextComponent],\n hostDirectives: [\n {\n directive: CdkMenuItemCheckbox,\n inputs: ['cdkMenuItemChecked: checked', 'cdkMenuItemDisabled: disabled'],\n outputs: ['cdkMenuItemTriggered: triggered']\n },\n CdkMenuTrigger\n ]\n})\nexport class SiMenuItemCheckboxComponent extends SiMenuItemBase {\n private cdkMenuItemCheckbox = inject(CdkMenuItemCheckbox);\n protected readonly icons = addIcons({ elementOk });\n\n protected get checked(): boolean {\n return this.cdkMenuItemCheckbox.checked;\n }\n}\n","<div class=\"item-wrapper\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon-next class=\"icon badge-dot\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon-next class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [ngClass]=\"'bg-' + badgeColor()\">{{ badge() }}</span>\n }\n @if (checked) {\n <si-icon-next class=\"icon\" [icon]=\"icons.elementOk\" />\n }\n </div>\n</div>\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { CdkMenuItemRadio, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { addIcons, elementRecordFilled, SiIconNextComponent } from '@siemens/element-ng/icon';\n\nimport { SiMenuItemBase } from './si-menu-item-base.directive';\n\n@Component({\n selector: 'si-menu-item-radio',\n templateUrl: './si-menu-item-radio.component.html',\n styleUrl: './si-menu-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, SiIconNextComponent],\n hostDirectives: [\n {\n directive: CdkMenuItemRadio,\n inputs: ['cdkMenuItemChecked: checked', 'cdkMenuItemDisabled: disabled'],\n outputs: ['cdkMenuItemTriggered: triggered']\n },\n CdkMenuTrigger\n ]\n})\nexport class SiMenuItemRadioComponent extends SiMenuItemBase {\n private cdkMenuItemRadio = inject(CdkMenuItemRadio);\n protected readonly icons = addIcons({ elementRecordFilled });\n protected get checked(): boolean {\n return this.cdkMenuItemRadio.checked;\n }\n}\n","<div class=\"item-wrapper\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon-next class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon-next class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [ngClass]=\"'bg-' + badgeColor()\">{{ badge() }}</span>\n }\n @if (checked) {\n <si-icon-next class=\"icon-small me-1\" [icon]=\"icons.elementRecordFilled\" />\n }\n </div>\n</div>\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { addIcons, elementRight2, SiIconNextComponent } from '@siemens/element-ng/icon';\n\nimport { SiMenuItemBase } from './si-menu-item-base.directive';\n\n@Component({\n selector: 'si-menu-item, a[si-menu-item], button[si-menu-item]',\n templateUrl: './si-menu-item.component.html',\n styleUrl: './si-menu-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, SiIconNextComponent],\n hostDirectives: [\n {\n directive: CdkMenuItem,\n inputs: ['cdkMenuItemDisabled: disabled'],\n outputs: ['cdkMenuItemTriggered: triggered']\n }\n ]\n})\nexport class SiMenuItemComponent extends SiMenuItemBase {\n private menuTrigger = inject(CdkMenuTrigger, { optional: true, self: true });\n protected readonly icons = addIcons({ elementRight2 });\n protected get hasSubmenu(): boolean {\n return !!this.menuTrigger?.menuTemplateRef;\n }\n}\n","<div class=\"item-wrapper\">\n @let iconValue = icon();\n @if (iconValue && !badgeDotHasContent()) {\n <si-icon-next class=\"icon\" [class.badge-dot]=\"iconBadgeDot()\" [icon]=\"iconValue\" />\n } @else if (iconValue && badgeDotHasContent()) {\n <si-icon-next class=\"icon badge-dot\" [icon]=\"iconValue\" />\n <span class=\"badge-text\">{{ iconBadgeDot() }}</span>\n }\n <span class=\"item-title\">\n <ng-content />\n </span>\n <div class=\"item-end ms-2 d-flex me-n3 gap-1\">\n @if (badge()) {\n <span class=\"mx-0 badge\" [ngClass]=\"'bg-' + badgeColor()\">{{ badge() }}</span>\n }\n <ng-content select=\".end\" />\n @if (hasSubmenu) {\n <si-icon-next class=\"icon submenu\" [icon]=\"icons.elementRight2\" />\n }\n </div>\n</div>\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { CdkMenu, CdkTargetMenuAim } from '@angular/cdk/menu';\nimport { Directive } from '@angular/core';\n\n@Directive({\n // violating eslint rule, to a have clean API\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'si-menu',\n hostDirectives: [CdkMenu, CdkTargetMenuAim],\n host: {\n class: 'd-block dropdown-menu position-static'\n }\n})\nexport class SiMenuDirective {}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { CdkMenuGroup, CdkMenuTrigger } from '@angular/cdk/menu';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Component, inject, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { MenuItem as MenuItemLegacy } from '@siemens/element-ng/common';\nimport { SiLinkActionService, SiLinkModule } from '@siemens/element-ng/link';\nimport { SiTranslateModule } from '@siemens/element-translate-ng/translate';\n\nimport { SiMenuActionService } from './si-menu-action.service';\nimport { SiMenuDividerDirective } from './si-menu-divider.directive';\nimport { SiMenuFactoryItemGuardDirective } from './si-menu-factory-item-guard.directive';\nimport { SiMenuHeaderDirective } from './si-menu-header.directive';\nimport { SiMenuItemCheckboxComponent } from './si-menu-item-checkbox.component';\nimport { SiMenuItemRadioComponent } from './si-menu-item-radio.component';\nimport { SiMenuItemComponent } from './si-menu-item.component';\nimport { MenuItemAction, MenuItemCheckbox, MenuItem, MenuItemRadio } from './si-menu-model';\nimport { SiMenuDirective } from './si-menu.directive';\n\n@Component({\n selector: 'si-menu-factory',\n templateUrl: './si-menu-factory.component.html',\n imports: [\n SiMenuDirective,\n SiMenuItemComponent,\n SiMenuItemRadioComponent,\n SiMenuItemCheckboxComponent,\n SiMenuHeaderDirective,\n SiMenuDividerDirective,\n SiLinkModule,\n CdkMenuTrigger,\n SiTranslateModule,\n CdkMenuGroup,\n NgTemplateOutlet,\n RouterLink,\n SiMenuFactoryItemGuardDirective\n ]\n})\nexport class SiMenuFactoryComponent {\n readonly items = input<readonly (MenuItemLegacy | MenuItem)[]>();\n readonly actionParam = input();\n\n private linkActionService = inject(SiLinkActionService, { optional: true });\n private menuActionService = inject(SiMenuActionService, { optional: true });\n\n protected isNewItemStyle(item: MenuItemLegacy | MenuItem): item is MenuItem {\n return 'label' in item || item.type === 'divider' || item.type === 'radio-group';\n }\n\n protected isLegacyItemStyle(item: MenuItemLegacy | MenuItem): item is MenuItemLegacy {\n return !this.isNewItemStyle(item);\n }\n\n protected radioOrCheckboxTriggered(item: MenuItemLegacy): void {\n if (typeof item.action === 'function') {\n item.action(this.actionParam());\n } else {\n this.linkActionService?.emit(item, this.actionParam());\n }\n }\n\n protected runAction(item: MenuItemAction | MenuItemRadio | MenuItemCheckbox): void {\n if (typeof item.action === 'function') {\n item.action(this.actionParam(), item as any); // typescript cannot level down the item type properly\n }\n\n if (typeof item.action === 'string') {\n this.menuActionService?.actionTriggered(item, this.actionParam());\n }\n }\n}\n","<si-menu>\n @for (item of items(); track item) {\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\" />\n }\n <ng-template #itemTemplate let-item siMenuFactoryItemGuard>\n @if (isNewItemStyle(item)) {\n @switch (item.type) {\n @case ('group') {\n <si-menu-item\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [cdkMenuTriggerFor]=\"submenu\"\n [cdkMenuTriggerData]=\"{ $implicit: item.children }\"\n >{{ item.label | translate }}\n </si-menu-item>\n <ng-template #submenu>\n <si-menu-factory [items]=\"item.children\" [actionParam]=\"actionParam()\" />\n </ng-template>\n }\n @case ('action') {\n <si-menu-item\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n (triggered)=\"runAction(item)\"\n >{{ item.label | translate }}\n </si-menu-item>\n }\n @case ('router-link') {\n <a\n si-menu-item\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [routerLink]=\"item.routerLink\"\n [queryParams]=\"item.extras?.queryParams\"\n [queryParamsHandling]=\"item.extras?.queryParamsHandling\"\n [fragment]=\"item.extras?.fragment\"\n [state]=\"item.extras?.state\"\n [relativeTo]=\"item.extras?.relativeTo\"\n [preserveFragment]=\"item.extras?.preserveFragment\"\n [skipLocationChange]=\"item.extras?.skipLocationChange\"\n [replaceUrl]=\"item.extras?.replaceUrl\"\n >{{ item.label | translate }}\n </a>\n }\n @case ('link') {\n <a\n si-menu-item\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [href]=\"item.href\"\n [target]=\"item.target\"\n >{{ item.label | translate }}\n </a>\n }\n @case ('radio-group') {\n <div cdkMenuGroup>\n @for (radioItem of item.children; track radioItem) {\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: radioItem }\" />\n }\n </div>\n }\n @case ('radio') {\n <si-menu-item-radio\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [checked]=\"item.checked\"\n (triggered)=\"runAction(item)\"\n >{{ item.label | translate }}\n </si-menu-item-radio>\n }\n @case ('checkbox') {\n <si-menu-item-checkbox\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [disabled]=\"item.disabled\"\n [icon]=\"item.icon\"\n [iconBadgeDot]=\"item.iconBadge\"\n [checked]=\"item.checked\"\n (triggered)=\"runAction(item)\"\n >{{ item.label | translate }}\n </si-menu-item-checkbox>\n }\n @case ('header') {\n <si-menu-header>{{ item.label | translate }}</si-menu-header>\n }\n @case ('divider') {\n <si-menu-divider />\n }\n }\n } @else if (isLegacyItemStyle(item)) {\n @switch (item.type) {\n @case ('radio') {\n <si-menu-item-radio\n [attr.data-id]=\"item.id\"\n [checked]=\"item.selectionState === 'radio'\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [icon]=\"item.icon\"\n [disabled]=\"item.disabled\"\n [iconBadgeDot]=\"item.badgeDot\"\n (triggered)=\"radioOrCheckboxTriggered(item)\"\n >\n {{ item.title | translate }}\n </si-menu-item-radio>\n }\n @case ('check') {\n <si-menu-item-checkbox\n [attr.data-id]=\"item.id\"\n [checked]=\"item.selectionState === 'check'\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [icon]=\"item.icon\"\n [disabled]=\"item.disabled\"\n [iconBadgeDot]=\"item.badgeDot\"\n (triggered)=\"radioOrCheckboxTriggered(item)\"\n >\n {{ item.title | translate }}\n </si-menu-item-checkbox>\n }\n @default {\n @if (item.isHeading) {\n <div class=\"dropdown-item-text dropdown-header\">\n {{ item.title | translate }}\n </div>\n } @else {\n @if (item.title !== '-') {\n <a\n si-menu-item\n activeClass=\"active\"\n [attr.data-id]=\"item.id\"\n [badge]=\"item.badge\"\n [badgeColor]=\"item.badgeColor ?? 'secondary'\"\n [icon]=\"item.icon\"\n [disabled]=\"item.disabled\"\n [siLink]=\"item\"\n [iconBadgeDot]=\"item.badgeDot\"\n [actionParam]=\"actionParam()\"\n [cdkMenuTriggerFor]=\"item.items ? submenu : null\"\n [cdkMenuTriggerData]=\"item\"\n >\n {{ item.title | translate }}\n </a>\n <ng-template #submenu>\n <si-menu-factory [items]=\"item.items!\" [actionParam]=\"actionParam()\" />\n </ng-template>\n } @else {\n <div class=\"dropdown-divider\"></div>\n }\n }\n }\n }\n }\n </ng-template>\n</si-menu>\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nimport { NgModule } from '@angular/core';\n\nimport { SiMenuBarDirective } from './si-menu-bar.directive';\nimport { SiMenuDividerDirective } from './si-menu-divider.directive';\nimport { SiMenuFactoryComponent } from './si-menu-factory.component';\nimport { SiMenuHeaderDirective } from './si-menu-header.directive';\nimport { SiMenuItemCheckboxComponent } from './si-menu-item-checkbox.component';\nimport { SiMenuItemRadioComponent } from './si-menu-item-radio.component';\nimport { SiMenuItemComponent } from './si-menu-item.component';\nimport { SiMenuDirective } from './si-menu.directive';\n\n@NgModule({\n imports: [\n SiMenuBarDirective,\n SiMenuDirective,\n SiMenuDividerDirective,\n SiMenuFactoryComponent,\n SiMenuHeaderDirective,\n SiMenuItemCheckboxComponent,\n SiMenuItemComponent,\n SiMenuItemRadioComponent\n ],\n exports: [\n SiMenuBarDirective,\n SiMenuDirective,\n SiMenuDividerDirective,\n SiMenuFactoryComponent,\n SiMenuHeaderDirective,\n SiMenuItemCheckboxComponent,\n SiMenuItemComponent,\n SiMenuItemRadioComponent\n ]\n})\nexport class SiMenuModule {}\n","/**\n * Copyright Siemens 2016 - 2025.\n * SPDX-License-Identifier: MIT\n */\nexport * from './si-menu.module';\nexport * from './si-menu-item.component';\nexport * from './si-menu-item-checkbox.component';\nexport * from './si-menu-item-radio.component';\nexport * from './si-menu.directive';\nexport * from './si-menu-bar.directive';\nexport * from './si-menu-header.directive';\nexport * from './si-menu-divider.directive';\nexport * from './si-menu-factory.component';\nexport * from './si-menu-model';\nexport * from './si-menu-action.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}